[infinispan-commits] Infinispan SVN: r1854 - in trunk/demos: ec2-ui and 18 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Wed May 26 01:18:40 EDT 2010


Author: noelo
Date: 2010-05-26 01:18:37 -0400 (Wed, 26 May 2010)
New Revision: 1854

Added:
   trunk/demos/ec2-ui/
   trunk/demos/ec2-ui/pom.xml
   trunk/demos/ec2-ui/src/
   trunk/demos/ec2-ui/src/main/
   trunk/demos/ec2-ui/src/main/java/
   trunk/demos/ec2-ui/src/main/java/org/
   trunk/demos/ec2-ui/src/main/java/org/infinispan/
   trunk/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/
   trunk/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/
   trunk/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheSearchServlet.java
   trunk/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheServletListener.java
   trunk/demos/ec2-ui/src/main/release/
   trunk/demos/ec2-ui/src/main/release/README-EC2-demo.txt
   trunk/demos/ec2-ui/src/main/webapp/
   trunk/demos/ec2-ui/src/main/webapp/META-INF/
   trunk/demos/ec2-ui/src/main/webapp/META-INF/MANIFEST.MF
   trunk/demos/ec2-ui/src/main/webapp/WEB-INF/
   trunk/demos/ec2-ui/src/main/webapp/WEB-INF/web.xml
   trunk/demos/ec2-ui/src/main/webapp/js/
   trunk/demos/ec2-ui/src/main/webapp/js/form.js
   trunk/demos/ec2-ui/src/main/webapp/js/functions.js
   trunk/demos/ec2-ui/src/main/webapp/js/ga.js
   trunk/demos/ec2-ui/src/main/webapp/js/hoverIntent.js
   trunk/demos/ec2-ui/src/main/webapp/js/ico_searcharrow.png
   trunk/demos/ec2-ui/src/main/webapp/js/infinispan-banner.png
   trunk/demos/ec2-ui/src/main/webapp/js/jqModal.js
   trunk/demos/ec2-ui/src/main/webapp/js/jquery-1.js
   trunk/demos/ec2-ui/src/main/webapp/js/jquery.js
   trunk/demos/ec2-ui/src/main/webapp/js/jquery_002.js
   trunk/demos/ec2-ui/src/main/webapp/js/jquery_003.js
   trunk/demos/ec2-ui/src/main/webapp/js/m2lwst.js
   trunk/demos/ec2-ui/src/main/webapp/js/modal.html
   trunk/demos/ec2-ui/src/main/webapp/js/modaldialog.js
   trunk/demos/ec2-ui/src/main/webapp/js/s_code.js
   trunk/demos/ec2-ui/src/main/webapp/js/search.js
   trunk/demos/ec2-ui/src/main/webapp/js/slimbox2.js
   trunk/demos/ec2-ui/src/main/webapp/js/superfish.js
   trunk/demos/ec2-ui/src/main/webapp/jsp/
   trunk/demos/ec2-ui/src/main/webapp/jsp/VirusDetails.jsp
   trunk/demos/ec2-ui/src/main/webapp/jsp/VirusSearch.jsp
   trunk/demos/ec2-ui/target/
   trunk/demos/ec2-ui/target/classes/
   trunk/demos/ec2-ui/target/classes/org/
   trunk/demos/ec2-ui/target/classes/org/infinispan/
   trunk/demos/ec2-ui/target/classes/org/infinispan/ec2demo/
   trunk/demos/ec2-ui/target/classes/org/infinispan/ec2demo/web/
Log:
Initial addition to SVN, moved from EC2demo module


Added: trunk/demos/ec2-ui/pom.xml
===================================================================
--- trunk/demos/ec2-ui/pom.xml	                        (rev 0)
+++ trunk/demos/ec2-ui/pom.xml	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,61 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.infinispan</groupId>
+		<artifactId>infinispan-parent</artifactId>
+		<version>4.1.0-SNAPSHOT</version>
+		<relativePath>../../parent/pom.xml</relativePath>
+	</parent>
+
+	<artifactId>infinispan-ec2-demoui</artifactId>
+	<name>Infinispan EC2 Demo UI</name>
+	<description>Infinispan - EC2 Demo</description>
+	<packaging>war</packaging>
+
+	<dependencies>
+		<dependency>
+			<groupId>${project.groupId}</groupId>
+			<artifactId>infinispan-core</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.infinispan</groupId>
+			<artifactId>infinispan-ec2-demo</artifactId>
+			<version>${project.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>xerces</groupId>
+					<artifactId>xercesImpl</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>commons-logging</groupId>
+			<artifactId>commons-logging</artifactId>
+			<version>1.1</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>jstl</artifactId>
+			<version>1.2</version>
+			<scope>provided</scope>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<artifactId>maven-war-plugin</artifactId>
+				<version>2.1-beta-1</version>
+			</plugin>
+		</plugins>
+	</build>
+</project>


Property changes on: trunk/demos/ec2-ui/pom.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: trunk/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheSearchServlet.java
===================================================================
--- trunk/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheSearchServlet.java	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheSearchServlet.java	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,91 @@
+package org.infinispan.ec2demo.web;
+
+import org.infinispan.Cache;
+import org.infinispan.ec2demo.CacheBuilder;
+import org.infinispan.ec2demo.Influenza_N_P_CR_Element;
+import org.infinispan.ec2demo.Nucleotide_Protein_Element;
+import org.infinispan.remoting.transport.Address;
+import org.infinispan.util.logging.Log;
+import org.infinispan.util.logging.LogFactory;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Servlet implementation class CacheSearchServlet
+ */
+public class CacheSearchServlet extends HttpServlet {
+	private Log myLogger = LogFactory.getLog(CacheSearchServlet.class);
+	private static final long serialVersionUID = 1L;
+	private Cache<String, Influenza_N_P_CR_Element> influenzaCache;
+	private Cache<String, Nucleotide_Protein_Element> proteinCache;
+	private Cache<String, Nucleotide_Protein_Element> nucleiodCache;
+
+   @Override
+	public void init(ServletConfig config) throws ServletException {
+		super.init(config);
+		CacheBuilder cacheBuilder = (CacheBuilder) getServletContext().getAttribute("cacheBuilder");
+		influenzaCache = cacheBuilder.getCacheManager().getCache("InfluenzaCache");
+		proteinCache = cacheBuilder.getCacheManager().getCache("ProteinCache");
+		nucleiodCache = cacheBuilder.getCacheManager().getCache("NucleotideCache");
+	}
+
+	/**
+	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
+	 *      response)
+	 */
+   @Override
+	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+		RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/jsp/displayVirusDetails.jsp");
+		dispatcher.forward(request, response);
+	}
+
+   @Override
+	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+		CacheBuilder cacheBuilder = (CacheBuilder) getServletContext().getAttribute("cacheBuilder");
+		String searchGBAN = request.getParameter("vGBAN");
+		request.setAttribute("total", searchGBAN);
+		
+		//check the influenza cache first
+		Influenza_N_P_CR_Element myRec = influenzaCache.get(searchGBAN);
+		
+		if (myRec != null) {
+			myLogger.trace("Searching nucleiodCache for " + myRec.getGanNucleoid());
+			Nucleotide_Protein_Element nucldet = nucleiodCache.get(myRec.getGanNucleoid());			
+			request.setAttribute("Nucleotide", nucldet);
+
+			// Display the protein details
+			Map<String, String> myProt = myRec.getProtein_Data();
+			Map<String, String> myMap = new HashMap<String, String>();
+			for (String x : myProt.keySet()) {
+				myLogger.trace("Searching proteinCache for " + x);
+				Nucleotide_Protein_Element myProtdet = proteinCache.get(x);
+				String protein_CR = myProt.get(x);		
+				myMap.put(myProtdet.getGenbankAccessionNumber(), protein_CR);
+			}
+			request.setAttribute("PMap", myMap);
+		} 
+
+
+
+		//Retrieve the cache cluster memebers
+		List<Address> myList = cacheBuilder.getCacheManager().getMembers();
+		List<String> k = new ArrayList<String>();
+		for (Address ad : myList)
+			k.add(ad.toString());
+		request.setAttribute("CMap", k);
+
+		RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/jsp/VirusDetails.jsp");
+		dispatcher.forward(request, response);
+	}
+
+}


Property changes on: trunk/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheSearchServlet.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: trunk/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheServletListener.java
===================================================================
--- trunk/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheServletListener.java	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheServletListener.java	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,49 @@
+/**
+ * 
+ */
+package org.infinispan.ec2demo.web;
+
+import org.infinispan.ec2demo.CacheBuilder;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import java.io.IOException;
+
+/**
+ * @author noconnor at redhat.com
+ *
+ */
+public class CacheServletListener implements ServletContextListener {
+	private CacheBuilder currCacheBuilder;
+	private ServletContext context = null;
+
+	/* (non-Javadoc)
+	 * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
+	 */
+	@Override
+	public void contextDestroyed(ServletContextEvent arg0) {
+		currCacheBuilder.getCacheManager().stop();
+	}
+
+	/* (non-Javadoc)
+	 * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
+	 */
+	@Override
+	public void contextInitialized(ServletContextEvent arg0) {
+		System.out.println("in CacheServletListener");
+		try {
+			this.context = arg0.getServletContext();
+			String x = arg0.getServletContext().getInitParameter("InfinispanConfigFile");
+			currCacheBuilder =  new CacheBuilder(x);
+			System.out.println("in CacheServletListener...starting cache");
+			currCacheBuilder.getCacheManager().start();
+			System.out.println("in CacheServletListener...starting cache...done");
+			context.setAttribute("cacheBuilder", currCacheBuilder);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		System.out.println("in CacheServletListener...exit");
+	}
+
+}


Property changes on: trunk/demos/ec2-ui/src/main/java/org/infinispan/ec2demo/web/CacheServletListener.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: trunk/demos/ec2-ui/src/main/release/README-EC2-demo.txt
===================================================================
--- trunk/demos/ec2-ui/src/main/release/README-EC2-demo.txt	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/release/README-EC2-demo.txt	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,81 @@
+Infinispan EC2 demo
+-------------------
+
+The purpose of this demo is to 
+* Demonstrate that Infinispan can run using Amazon EC2 instances as cluster nodes
+* Demonstrate the Infinispan distributed cache mode where data is loaded into the cache from multiple different nodes
+* Demonstrate the S3_Ping functionality of JGroups which allows nodes in the cluster to find each other
+
+The demo itself consists of 
+* A number of script files which run different java processes which either load or query the distributed caches.
+* A very basic wep application which can join the cluster and retrieve data from different nodes in the cluster
+
+The caches themselves are populated with data extracted from the Influenza gene database which is one of the freely available data sets hosted by Amazon 
+(see http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2419&categoryID=279)
+This data is stored in etc/Amazon-TestData in gzipped format. Unzip before using.
+
+There are three caches created
+------------------------------
+InfluenzaCache -> populated with data read from the Influenza.dat file, approx 82k entries
+ProteinCache   -> populated with data read from the Influenza_aa.dat file, approx 102k entries
+NucleotideCache-> populated with data read from the Influenza_na.dat file, approx 82k entries
+
+The data relationship is as follows, each influenza cache entry has a related nucleotide and each nucleotide has one or more proteins.
+To query the cache there is a query script which prompts the user to enter a influenza GAN (first column in influenza.dat) and if found the related data is extracted
+from the other caches and displayed. 
+
+Setup
+--------------
+Out of the box this demo uses the jgroups S3_ping functionality to create the cluster. This feature uses an storage bucket on the Amazon S3 service to store the cluster details.
+This configuration is contained in etc/jgroups-s3_ping-aws.xml. This file requires the users aws key and secret aws key to be filled out before it can connect to S3 successfully.
+To do this just modify the following line in the file with the correct values<S3_PING secret_access_key="my secret access key" access_key="my access key" location="my s3 bucket name" />
+
+The location of the jgroups configuration file is specified using the EC2Demo-jgroups-config JVM system property. 
+It jgroups S3_ping configuration can be replaced with a gossip router if required, a sample jgroups configuraton file is in the etc directory, jgroups-gossiprouter-aws.xml
+
+Scripts
+-------
+runEC2Demo-all  		- creates the caches and loads the contents of the data files into the cache
+runEC2Demo-influenza 		- creates the influenza cache and load the data from the influenza.dat file
+runEC2Demo-protein		- creates the protein cache and load the data from the influenza_aa.dat file
+runEC2Demo-nucleotide		- creates the nucleotide cacahe and load the data from the influenza_na.dat file
+runEC2Demo-query		- attaches to the clustered caches, prompts the user for the influenza virus id and then searches the caches for the relevant data
+runEC2Demo-reader		- attaches to the clustered caches and search for random data contained in the cache
+
+Web Application
+---------------
+The web ui is war file which is deployed into a basic JBoss container.
+A number of supporting libraries are required in order for the app to work.
+The easiest to get this going is to use the jboss default profile and add the following libraries to the default/lib directory
+
+jgroups-2.9.0.GA.jar
+marshalling-api-1.2.0.GA.jar
+river-1.2.0.GA.jar
+infinispan-all.jar
+infinispan-ec2-demo.jar
+
+Deploy the infinispan-ec2-demo-web.war to the default/deploy directory
+
+The location of the jgroups configuration file is also required for the web app to work.
+There are two methods by which to do this. Either specify the file using the EC2Demo-jgroups-config e.g. -DEC2Demo-jgroups-config=/home/test/etc/jgroups-s3_ping-aws.xml
+This property can also be specified in the default/deploy/properties-service.xml
+or extract and modify the WEB-INF/web/xml changing the jgroups_file servlet context parameter to point to the file location. If both are specified then the system property takes priority.
+
+Sample usage
+------------
+Using EC2 start up 4 EC2 small instance nodes.
+Once up and running, on node 1 start up a JBoss instance on one of the nodes and deploy the infinispan-ec2-demo-web.war
+On node 2, startup runEC2Demo-influenza.sh
+On node 3, startup runEC2Demo-protein.sh
+On node 4, startup runEC2Demo-nucleotide.sh
+Point a web browser to the jboss node and enter the following "http://hostname:port/infinispan-ec2-demo-web/"
+A web page will appear prompting for a Genbank Accession Number, enter "AB000607" and press return. The GBANs are the first column in the influenza.dat file e.g. AB000604,AB000605,AB000606,AB000607 etc
+The virus details will then be displayed along with the addresses of the nodes in the cluster.
+
+Possible issues
+* Nodes don't see each other. Make sure that the firewall isn't blocking the inter-node communications
+* Ensure that the correct jgroups properties are being used.
+* If using S3_Ping you can check the cluster member details by using a utility such as s3sync see s3sync.net
+* Make sure you are using the right version of jgroups: the one shipped with Infinispan. 2.6 or lower doesn't have s3_ping.
+
+


Property changes on: trunk/demos/ec2-ui/src/main/release/README-EC2-demo.txt
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: trunk/demos/ec2-ui/src/main/webapp/META-INF/MANIFEST.MF
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/META-INF/MANIFEST.MF	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+

Added: trunk/demos/ec2-ui/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/WEB-INF/web.xml	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/WEB-INF/web.xml	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         id="WebApp_ID" version="2.5">
+   <display-name>infinispan-ec2-demo-web</display-name>
+   <listener>
+      <listener-class>org.infinispan.ec2demo.web.CacheServletListener</listener-class>
+   </listener>
+   <welcome-file-list>
+      <welcome-file>jsp/VirusSearch.jsp</welcome-file>
+   </welcome-file-list>
+
+   <context-param>
+      <param-name>InfinispanConfigFile</param-name>
+      <param-value>${CFGPath}/infinispan-ec2-config.xml</param-value>
+   </context-param>
+
+   <servlet>
+      <description></description>
+      <display-name>CacheSearchServlet</display-name>
+      <servlet-name>CacheSearchServlet</servlet-name>
+      <servlet-class>org.infinispan.ec2demo.web.CacheSearchServlet</servlet-class>
+   </servlet>
+   <servlet-mapping>
+      <servlet-name>CacheSearchServlet</servlet-name>
+      <url-pattern>/CacheSearchServlet</url-pattern>
+   </servlet-mapping>        
+</web-app>


Property changes on: trunk/demos/ec2-ui/src/main/webapp/WEB-INF/web.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: trunk/demos/ec2-ui/src/main/webapp/js/form.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/form.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/form.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,65 @@
+// form; check for mandatory fields
+function checkMandatories(formName)
+    {
+    var theForm=document[formName];
+    var m=theForm.mgnlMandatory;
+    var i=0;
+    var ok=true;
+    alertText = theForm.mgnlFormAlert.value;
+    if (m)
+        {
+        if (!m[0])
+            {
+            var tmp=m;
+            m=new Object();
+            m[0]=tmp;
+            }
+        while (m[i])
+            {
+            var name=m[i].value;
+            var type;
+            var mgnlField;
+            if(document.all) mgnlField=theForm(name);
+            else mgnlField=theForm[name];
+
+            if (mgnlField.type) type=mgnlField.type;
+            else if (mgnlField[0] && mgnlField[0].type) type=mgnlField[0].type
+
+            switch (type)
+                {
+                case "select-one":
+                    if (mgnlField.selectedIndex==0) ok=false;
+                    break;
+                case "checkbox":
+                case "radio":
+                    var obj=new Object();
+                    if (!mgnlField[0]) obj[0]=mgnlField;
+                    else obj=mgnlField;
+                    var okSmall=false;
+                    var ii=0;
+                    while (obj[ii])
+                        {
+                        if (obj[ii].checked)
+                            {
+                            okSmall=true;
+                            break;
+                            }
+                        ii++;
+                        }
+                    if (!okSmall) ok=false;
+                    break;
+                default:
+                    if (!mgnlField.value) ok=false;
+                }
+            if (!ok)
+                {
+                alert(alertText);
+                if (!mgnlField[0]) mgnlField.focus();
+                return false;
+                }
+            i++;
+            }
+        }
+    if (ok) return true;
+    else return false;
+    }
\ No newline at end of file

Added: trunk/demos/ec2-ui/src/main/webapp/js/functions.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/functions.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/functions.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,41 @@
+function mgnlPopupWindow(strLink, width, height, menubar){
+	var tmp = window.open(strLink , "popupWindow", "directories="+menubar+",location="+menubar+",toolbar="+menubar+",menubar="+menubar+",resizable=yes,scrollbars=yes,width="+width+",height="+height);
+	tmp.focus();
+}
+
+function mgnlSwitchParagraphInformation(ID,icon,pageContext) {
+	if (document.getElementById(ID).style.visibility == 'hidden') {
+
+		document.getElementById(ID).style.visibility = "visible";
+		document.getElementById(ID).style.display = "block";		
+		document.getElementById(ID).style.height = "auto";
+		if (icon == ID + "infoButtonLayoutBar") {
+			document.getElementById(icon).src = pageContext + "/docroot/siteDesigner/pics/infoButtonRedActive.gif";
+		} else {
+			document.getElementById(icon).src = pageContext + "/docroot/siteDesigner/pics/infoButtonGreenActive.gif";
+		}
+		
+	} else {
+
+		document.getElementById(ID).style.visibility = "hidden";
+		document.getElementById(ID).style.display = "none";
+		document.getElementById(ID).style.height = "0px";
+		if (icon == ID + "infoButtonLayoutBar") {
+			document.getElementById(icon).src = pageContext + "/docroot/siteDesigner/pics/infoButtonRed.gif";
+		} else {
+			document.getElementById(icon).src = pageContext + "/docroot/siteDesigner/pics/infoButtonGreen.gif";
+		}	
+		
+	}
+}
+
+function blurAnchors() {
+	if (document.getElementsByTagName) {
+		var a = document.getElementsByTagName("a");
+		for(var i = 0; i < a.length; i++) {
+			a[i].onfocus = function() {
+				this.blur()
+			};
+		};
+	};
+};
\ No newline at end of file

Added: trunk/demos/ec2-ui/src/main/webapp/js/ga.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/ga.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/ga.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,41 @@
+var _gat=new Object({c:"length",lb:"4.3.1",m:"cookie",b:undefined,cb:function(d,a){this.zb=d;this.Nb=a},r:"__utma=",W:"__utmb=",ma:"__utmc=",Ta:"__utmk=",na:"__utmv=",oa:"__utmx=",Sa:"GASO=",X:"__utmz=",lc:"http://www.google-analytics.com/__utm.gif",mc:"https://ssl.google-analytics.com/__utm.gif",Wa:"utmcid=",Ya:"utmcsr=",$a:"utmgclid=",Ua:"utmccn=",Xa:"utmcmd=",Za:"utmctr=",Va:"utmcct=",Hb:false,_gasoDomain:undefined,_gasoCPath:undefined,e:window,a:document,k:navigator,t:function(d){var a=1,c=0,h,
+o;if(!_gat.q(d)){a=0;for(h=d[_gat.c]-1;h>=0;h--){o=d.charCodeAt(h);a=(a<<6&268435455)+o+(o<<14);c=a&266338304;a=c!=0?a^c>>21:a}}return a},C:function(d,a,c){var h=_gat,o="-",k,l,s=h.q;if(!s(d)&&!s(a)&&!s(c)){k=h.w(d,a);if(k>-1){l=d.indexOf(c,k);if(l<0)l=d[h.c];o=h.F(d,k+h.w(a,"=")+1,l)}}return o},Ea:function(d){var a=false,c=0,h,o;if(!_gat.q(d)){a=true;for(h=0;h<d[_gat.c];h++){o=d.charAt(h);c+="."==o?1:0;a=a&&c<=1&&(0==h&&"-"==o||_gat.P(".0123456789",o))}}return a},d:function(d,a){var c=encodeURIComponent;
+return c instanceof Function?(a?encodeURI(d):c(d)):escape(d)},J:function(d,a){var c=decodeURIComponent,h;d=d.split("+").join(" ");if(c instanceof Function)try{h=a?decodeURI(d):c(d)}catch(o){h=unescape(d)}else h=unescape(d);return h},Db:function(d){return d&&d.hash?_gat.F(d.href,_gat.w(d.href,"#")):""},q:function(d){return _gat.b==d||"-"==d||""==d},Lb:function(d){return d[_gat.c]>0&&_gat.P(" \n\r\t",d)},P:function(d,a){return _gat.w(d,a)>-1},h:function(d,a){d[d[_gat.c]]=a},T:function(d){return d.toLowerCase()},
+z:function(d,a){return d.split(a)},w:function(d,a){return d.indexOf(a)},F:function(d,a,c){c=_gat.b==c?d[_gat.c]:c;return d.substring(a,c)},uc:function(){var d=_gat.b,a=window;if(a&&a.gaGlobal&&a.gaGlobal.hid)d=a.gaGlobal.hid;else{d=Math.round(Math.random()*2147483647);a.gaGlobal=a.gaGlobal?a.gaGlobal:{};a.gaGlobal.hid=d}return d},wa:function(){return Math.round(Math.random()*2147483647)},Gc:function(){return(_gat.wa()^_gat.vc())*2147483647},vc:function(){var d=_gat.k,a=_gat.a,c=_gat.e,h=a[_gat.m]?
+a[_gat.m]:"",o=c.history[_gat.c],k,l,s=[d.appName,d.version,d.language?d.language:d.browserLanguage,d.platform,d.userAgent,d.javaEnabled()?1:0].join("");if(c.screen)s+=c.screen.width+"x"+c.screen.height+c.screen.colorDepth;else if(c.java){l=java.awt.Toolkit.getDefaultToolkit().getScreenSize();s+=l.screen.width+"x"+l.screen.height}s+=h;s+=a.referrer?a.referrer:"";k=s[_gat.c];while(o>0)s+=o--^k++;return _gat.t(s)}});_gat.hc=function(){var d=this,a=_gat.cb;function c(h,o){return new a(h,o)}d.db="utm_campaign";d.eb="utm_content";d.fb="utm_id";d.gb="utm_medium";d.hb="utm_nooverride";d.ib="utm_source";d.jb="utm_term";d.kb="gclid";d.pa=0;d.I=0;d.wb="15768000";d.Tb="1800";d.ea=[];d.ga=[];d.Ic="cse";d.Gb="q";d.ab="google";d.fa=[c(d.ab,d.Gb),c("yahoo","p"),c("msn","q"),c("bing","q"),c("aol","query"),c("aol","encquery"),c("lycos","query"),c("ask","q"),c("altavista","q"),c("netscape","query"),c("cnn","query"),c("looksmart","qt"),c("about",
+"terms"),c("mamma","query"),c("alltheweb","q"),c("gigablast","q"),c("voila","rdata"),c("virgilio","qs"),c("live","q"),c("baidu","wd"),c("alice","qs"),c("yandex","text"),c("najdi","q"),c("aol","q"),c("club-internet","query"),c("mama","query"),c("seznam","q"),c("search","q"),c("wp","szukaj"),c("onet","qt"),c("netsprint","q"),c("google.interia","q"),c("szukacz","q"),c("yam","k"),c("pchome","q"),c("kvasir","searchExpr"),c("sesam","q"),c("ozu","q"),c("terra","query"),c("nostrum","query"),c("mynet","q"),
+c("ekolay","q"),c("search.ilse","search_for")];d.B=undefined;d.Kb=false;d.p="/";d.ha=100;d.Da="/__utm.gif";d.ta=1;d.ua=1;d.G="|";d.sa=1;d.qa=1;d.pb=1;d.g="auto";d.D=1;d.Ga=1000;d.Yc=10;d.nc=10;d.Zc=0.2};_gat.Y=function(d,a){var c,h,o,k,l,s,q,f=this,n=_gat,w=n.q,x=n.c,g,z=a;f.a=d;function B(i){var b=i instanceof Array?i.join("."):"";return w(b)?"-":b}function A(i,b){var e=[],j;if(!w(i)){e=n.z(i,".");if(b)for(j=0;j<e[x];j++)if(!n.Ea(e[j]))e[j]="-"}return e}function p(){return u(63072000000)}function u(i){var b=new Date,e=new Date(b.getTime()+i);return"expires="+e.toGMTString()+"; "}function m(i,b){f.a[n.m]=i+"; path="+z.p+"; "+b+f.Cc()}function r(i,b,e){var j=f.V,t,v;for(t=0;t<j[x];t++){v=j[t][0];
+v+=w(b)?b:b+j[t][4];j[t][2](n.C(i,v,e))}}f.Jb=function(){return n.b==g||g==f.t()};f.Ba=function(){return l?l:"-"};f.Wb=function(i){l=i};f.Ma=function(i){g=n.Ea(i)?i*1:"-"};f.Aa=function(){return B(s)};f.Na=function(i){s=A(i)};f.Hc=function(){return g?g:"-"};f.Cc=function(){return w(z.g)?"":"domain="+z.g+";"};f.ya=function(){return B(c)};f.Ub=function(i){c=A(i,1)};f.K=function(){return B(h)};f.La=function(i){h=A(i,1)};f.za=function(){return B(o)};f.Vb=function(i){o=A(i,1)};f.Ca=function(){return B(k)};
+f.Xb=function(i){k=A(i);for(var b=0;b<k[x];b++)if(b<4&&!n.Ea(k[b]))k[b]="-"};f.Dc=function(){return q};f.Uc=function(i){q=i};f.pc=function(){c=[];h=[];o=[];k=[];l=n.b;s=[];g=n.b};f.t=function(){var i="",b;for(b=0;b<f.V[x];b++)i+=f.V[b][1]();return n.t(i)};f.Ha=function(i){var b=f.a[n.m],e=false;if(b){r(b,i,";");f.Ma(f.t());e=true}return e};f.Rc=function(i){r(i,"","&");f.Ma(n.C(i,n.Ta,"&"))};f.Wc=function(){var i=f.V,b=[],e;for(e=0;e<i[x];e++)n.h(b,i[e][0]+i[e][1]());n.h(b,n.Ta+f.t());return b.join("&")};
+f.bd=function(i,b){var e=f.V,j=z.p,t;f.Ha(i);z.p=b;for(t=0;t<e[x];t++)if(!w(e[t][1]()))e[t][3]();z.p=j};f.dc=function(){m(n.r+f.ya(),p())};f.Pa=function(){m(n.W+f.K(),u(z.Tb*1000))};f.ec=function(){m(n.ma+f.za(),"")};f.Ra=function(){m(n.X+f.Ca(),u(z.wb*1000))};f.fc=function(){m(n.oa+f.Ba(),p())};f.Qa=function(){m(n.na+f.Aa(),p())};f.cd=function(){m(n.Sa+f.Dc(),"")};f.V=[[n.r,f.ya,f.Ub,f.dc,"."],[n.W,f.K,f.La,f.Pa,""],[n.ma,f.za,f.Vb,f.ec,""],[n.oa,f.Ba,f.Wb,f.fc,""],[n.X,f.Ca,f.Xb,f.Ra,"."],[n.na,
+f.Aa,f.Na,f.Qa,"."]]};_gat.jc=function(d){var a=this,c=_gat,h=d,o,k=function(l){var s=(new Date).getTime(),q;q=(s-l[3])*(h.Zc/1000);if(q>=1){l[2]=Math.min(Math.floor(l[2]*1+q),h.nc);l[3]=s}return l};a.O=function(l,s,q,f,n,w,x){var g,z=h.D,B=q.location;if(!o)o=new c.Y(q,h);o.Ha(f);g=c.z(o.K(),".");if(g[1]<500||n){if(w)g=k(g);if(n||!w||g[2]>=1){if(!n&&w)g[2]=g[2]*1-1;g[1]=g[1]*1+1;l="?utmwv="+_gat.lb+"&utmn="+c.wa()+(c.q(B.hostname)?"":"&utmhn="+c.d(B.hostname))+(h.ha==100?"":"&utmsp="+c.d(h.ha))+l;if(0==z||2==z){var A=
+new Image(1,1);A.src=h.Da+l;var p=2==z?function(){}:x||function(){};A.onload=p}if(1==z||2==z){var u=new Image(1,1);u.src=("https:"==B.protocol?c.mc:c.lc)+l+"&utmac="+s+"&utmcc="+a.wc(q,f);u.onload=x||function(){}}}}o.La(g.join("."));o.Pa()};a.wc=function(l,s){var q=[],f=[c.r,c.X,c.na,c.oa],n,w=l[c.m],x;for(n=0;n<f[c.c];n++){x=c.C(w,f[n]+s,";");if(!c.q(x))c.h(q,f[n]+x+";")}return c.d(q.join("+"))}};_gat.i=function(){this.la=[]};_gat.i.bb=function(d,a,c,h,o,k){var l=this;l.cc=d;l.Oa=a;l.L=c;l.sb=h;l.Pb=o;l.Qb=k};_gat.i.bb.prototype.S=function(){var d=this,a=_gat.d;return"&"+["utmt=item","utmtid="+a(d.cc),"utmipc="+a(d.Oa),"utmipn="+a(d.L),"utmiva="+a(d.sb),"utmipr="+a(d.Pb),"utmiqt="+a(d.Qb)].join("&")};_gat.i.$=function(d,a,c,h,o,k,l,s){var q=this;q.v=d;q.ob=a;q.bc=c;q.ac=h;q.Yb=o;q.ub=k;q.$b=l;q.xb=s;q.ca=[]};_gat.i.$.prototype.mb=function(d,a,c,h,o){var k=this,l=k.Eb(d),s=k.v,q=_gat;if(q.b==
+l)q.h(k.ca,new q.i.bb(s,d,a,c,h,o));else{l.cc=s;l.Oa=d;l.L=a;l.sb=c;l.Pb=h;l.Qb=o}};_gat.i.$.prototype.Eb=function(d){var a,c=this.ca,h;for(h=0;h<c[_gat.c];h++)a=d==c[h].Oa?c[h]:a;return a};_gat.i.$.prototype.S=function(){var d=this,a=_gat.d;return"&"+["utmt=tran","utmtid="+a(d.v),"utmtst="+a(d.ob),"utmtto="+a(d.bc),"utmttx="+a(d.ac),"utmtsp="+a(d.Yb),"utmtci="+a(d.ub),"utmtrg="+a(d.$b),"utmtco="+a(d.xb)].join("&")};_gat.i.prototype.nb=function(d,a,c,h,o,k,l,s){var q=this,f=_gat,n=q.xa(d);if(f.b==
+n){n=new f.i.$(d,a,c,h,o,k,l,s);f.h(q.la,n)}else{n.ob=a;n.bc=c;n.ac=h;n.Yb=o;n.ub=k;n.$b=l;n.xb=s}return n};_gat.i.prototype.xa=function(d){var a,c=this.la,h;for(h=0;h<c[_gat.c];h++)a=d==c[h].v?c[h]:a;return a};_gat.gc=function(d){var a=this,c="-",h=_gat,o=d;a.Ja=screen;a.qb=!self.screen&&self.java?java.awt.Toolkit.getDefaultToolkit():h.b;a.a=document;a.e=window;a.k=navigator;a.Ka=c;a.Sb=c;a.tb=c;a.Ob=c;a.Mb=1;a.Bb=c;function k(){var l,s,q,f,n="ShockwaveFlash",w="$version",x=a.k?a.k.plugins:h.b;if(x&&x[h.c]>0)for(l=0;l<x[h.c]&&!q;l++){s=x[l];if(h.P(s.name,"Shockwave Flash"))q=h.z(s.description,"Shockwave Flash ")[1]}else{n=n+"."+n;try{f=new ActiveXObject(n+".7");q=f.GetVariable(w)}catch(g){}if(!q)try{f=
+new ActiveXObject(n+".6");q="WIN 6,0,21,0";f.AllowScriptAccess="always";q=f.GetVariable(w)}catch(z){}if(!q)try{f=new ActiveXObject(n);q=f.GetVariable(w)}catch(z){}if(q){q=h.z(h.z(q," ")[1],",");q=q[0]+"."+q[1]+" r"+q[2]}}return q?q:c}a.xc=function(){var l;if(self.screen){a.Ka=a.Ja.width+"x"+a.Ja.height;a.Sb=a.Ja.colorDepth+"-bit"}else if(a.qb)try{l=a.qb.getScreenSize();a.Ka=l.width+"x"+l.height}catch(s){}a.Ob=h.T(a.k&&a.k.language?a.k.language:(a.k&&a.k.browserLanguage?a.k.browserLanguage:c));a.Mb=
+a.k&&a.k.javaEnabled()?1:0;a.Bb=o?k():c;a.tb=h.d(a.a.characterSet?a.a.characterSet:(a.a.charset?a.a.charset:c))};a.Xc=function(){return"&"+["utmcs="+h.d(a.tb),"utmsr="+a.Ka,"utmsc="+a.Sb,"utmul="+a.Ob,"utmje="+a.Mb,"utmfl="+h.d(a.Bb)].join("&")}};_gat.n=function(d,a,c,h,o){var k=this,l=_gat,s=l.q,q=l.b,f=l.P,n=l.C,w=l.T,x=l.z,g=l.c;k.a=a;k.f=d;k.Rb=c;k.ja=h;k.o=o;function z(p){return s(p)||"0"==p||!f(p,"://")}function B(p){var u="";p=w(x(p,"://")[1]);if(f(p,"/")){p=x(p,"/")[1];if(f(p,"?"))u=x(p,"?")[0]}return u}function A(p){var u="";u=w(x(p,"://")[1]);if(f(u,"/"))u=x(u,"/")[0];return u}k.Fc=function(p){var u=k.Fb(),m=k.o;return new l.n.s(n(p,m.fb+"=","&"),n(p,m.ib+"=","&"),n(p,m.kb+"=","&"),k.ba(p,m.db,"(not set)"),k.ba(p,m.gb,"(not set)"),
+k.ba(p,m.jb,u&&!s(u.R)?l.J(u.R):q),k.ba(p,m.eb,q))};k.Ib=function(p){var u=A(p),m=B(p);if(f(u,k.o.ab)){p=x(p,"?").join("&");if(f(p,"&"+k.o.Gb+"="))if(m==k.o.Ic)return true}return false};k.Fb=function(){var p,u,m=k.Rb,r,i,b=k.o.fa;if(z(m)||k.Ib(m))return;p=A(m);for(r=0;r<b[g];r++){i=b[r];if(f(p,w(i.zb))){m=x(m,"?").join("&");if(f(m,"&"+i.Nb+"=")){u=x(m,"&"+i.Nb+"=")[1];if(f(u,"&"))u=x(u,"&")[0];return new l.n.s(q,i.zb,q,"(organic)","organic",u,q)}}}};k.ba=function(p,u,m){var r=n(p,u+"=","&"),i=!s(r)?
+l.J(r):(!s(m)?m:"-");return i};k.Nc=function(p){var u=k.o.ea,m=false,r,i;if(p&&"organic"==p.da){r=w(l.J(p.R));for(i=0;i<u[g];i++)m=m||w(u[i])==r}return m};k.Ec=function(){var p="",u="",m=k.Rb;if(z(m)||k.Ib(m))return;p=w(x(m,"://")[1]);if(f(p,"/")){u=l.F(p,l.w(p,"/"));if(f(u,"?"))u=x(u,"?")[0];p=x(p,"/")[0]}if(0==l.w(p,"www."))p=l.F(p,4);return new l.n.s(q,p,q,"(referral)","referral",q,u)};k.sc=function(p){var u="";if(k.o.pa){u=l.Db(p);u=""!=u?u+"&":u}u+=p.search;return u};k.zc=function(){return new l.n.s(q,
+"(direct)",q,"(direct)","(none)",q,q)};k.Oc=function(p){var u=false,m,r,i=k.o.ga;if(p&&"referral"==p.da){m=w(l.d(p.ia));for(r=0;r<i[g];r++)u=u||f(m,w(i[r]))}return u};k.U=function(p){return q!=p&&p.Fa()};k.yc=function(p,u){var m="",r="-",i,b,e=0,j,t,v=k.f;if(!p)return"";t=k.a[l.m]?k.a[l.m]:"";m=k.sc(k.a.location);if(k.o.I&&p.Jb()){r=p.Ca();if(!s(r)&&!f(r,";")){p.Ra();return""}}r=n(t,l.X+v+".",";");i=k.Fc(m);if(k.U(i)){b=n(m,k.o.hb+"=","&");if("1"==b&&!s(r))return""}if(!k.U(i)){i=k.Fb();if(!s(r)&&
+k.Nc(i))return""}if(!k.U(i)&&u){i=k.Ec();if(!s(r)&&k.Oc(i))return""}if(!k.U(i))if(s(r)&&u)i=k.zc();if(!k.U(i))return"";if(!s(r)){var y=x(r,"."),E=new l.n.s;E.Cb(y.slice(4).join("."));j=w(E.ka())==w(i.ka());e=y[3]*1}if(!j||u){var F=n(t,l.r+v+".",";"),I=F.lastIndexOf("."),G=I>9?l.F(F,I+1)*1:0;e++;G=0==G?1:G;p.Xb([v,k.ja,G,e,i.ka()].join("."));p.Ra();return"&utmcn=1"}else return"&utmcr=1"}};_gat.n.s=function(d,a,c,h,o,k,l){var s=this;s.v=d;s.ia=a;s.ra=c;s.L=h;s.da=o;s.R=k;s.vb=l};_gat.n.s.prototype.ka=
+function(){var d=this,a=_gat,c=[],h=[[a.Wa,d.v],[a.Ya,d.ia],[a.$a,d.ra],[a.Ua,d.L],[a.Xa,d.da],[a.Za,d.R],[a.Va,d.vb]],o,k;if(d.Fa())for(o=0;o<h[a.c];o++)if(!a.q(h[o][1])){k=h[o][1].split("+").join("%20");k=k.split(" ").join("%20");a.h(c,h[o][0]+k)}return c.join("|")};_gat.n.s.prototype.Fa=function(){var d=this,a=_gat.q;return!(a(d.v)&&a(d.ia)&&a(d.ra))};_gat.n.s.prototype.Cb=function(d){var a=this,c=_gat,h=function(o){return c.J(c.C(d,o,"|"))};a.v=h(c.Wa);a.ia=h(c.Ya);a.ra=h(c.$a);a.L=h(c.Ua);a.da=
+h(c.Xa);a.R=h(c.Za);a.vb=h(c.Va)};_gat.Z=function(){var d=this,a=_gat,c={},h="k",o="v",k=[h,o],l="(",s=")",q="*",f="!",n="'",w={};w[n]="'0";w[s]="'1";w[q]="'2";w[f]="'3";var x=1;function g(m,r,i,b){if(a.b==c[m])c[m]={};if(a.b==c[m][r])c[m][r]=[];c[m][r][i]=b}function z(m,r,i){return a.b!=c[m]&&a.b!=c[m][r]?c[m][r][i]:a.b}function B(m,r){if(a.b!=c[m]&&a.b!=c[m][r]){c[m][r]=a.b;var i=true,b;for(b=0;b<k[a.c];b++)if(a.b!=c[m][k[b]]){i=false;break}if(i)c[m]=a.b}}function A(m){var r="",i=false,b,e;for(b=0;b<k[a.c];b++){e=m[k[b]];if(a.b!=
+e){if(i)r+=k[b];r+=p(e);i=false}else i=true}return r}function p(m){var r=[],i,b;for(b=0;b<m[a.c];b++)if(a.b!=m[b]){i="";if(b!=x&&a.b==m[b-1]){i+=b.toString();i+=f}i+=u(m[b]);a.h(r,i)}return l+r.join(q)+s}function u(m){var r="",i,b,e;for(i=0;i<m[a.c];i++){b=m.charAt(i);e=w[b];r+=a.b!=e?e:b}return r}d.Kc=function(m){return a.b!=c[m]};d.N=function(){var m=[],r;for(r in c)if(a.b!=c[r])a.h(m,r.toString()+A(c[r]));return m.join("")};d.Sc=function(m){if(m==a.b)return d.N();var r=[m.N()],i;for(i in c)if(a.b!=
+c[i]&&!m.Kc(i))a.h(r,i.toString()+A(c[i]));return r.join("")};d._setKey=function(m,r,i){if(typeof i!="string")return false;g(m,h,r,i);return true};d._setValue=function(m,r,i){if(typeof i!="number"&&(a.b==Number||!(i instanceof Number)))return false;if(Math.round(i)!=i||i==NaN||i==Infinity)return false;g(m,o,r,i.toString());return true};d._getKey=function(m,r){return z(m,h,r)};d._getValue=function(m,r){return z(m,o,r)};d._clearKey=function(m){B(m,h)};d._clearValue=function(m){B(m,o)}};_gat.ic=function(d,a){var c=this;c.jd=a;c.Pc=d;c._trackEvent=function(h,o,k){return a._trackEvent(c.Pc,h,o,k)}};_gat.kc=function(d){var a=this,c=_gat,h=c.b,o=c.q,k=c.w,l=c.F,s=c.C,q=c.P,f=c.z,n="location",w=c.c,x=h,g=new c.hc,z=false;a.a=document;a.e=window;a.ja=Math.round((new Date).getTime()/1000);a.H=d;a.yb=a.a.referrer;a.va=h;a.j=h;a.A=h;a.M=false;a.aa=h;a.rb="";a.l=h;a.Ab=h;a.f=h;a.u=h;function B(){if("auto"==g.g){var b=a.a.domain;if("www."==l(b,0,4))b=l(b,4);g.g=b}g.g=c.T(g.g)}function A(!
 ){var b=g.g,e=k(b,"www.google.")*k(b,".google.")*k(b,"google.");return e||"/"!=g.p||k(b,"google.org")>-1}function p(b,
+e,j){if(o(b)||o(e)||o(j))return"-";var t=s(b,c.r+a.f+".",e),v;if(!o(t)){v=f(t,".");v[5]=v[5]?v[5]*1+1:1;v[3]=v[4];v[4]=j;t=v.join(".")}return t}function u(){return"file:"!=a.a[n].protocol&&A()}function m(b){if(!b||""==b)return"";while(c.Lb(b.charAt(0)))b=l(b,1);while(c.Lb(b.charAt(b[w]-1)))b=l(b,0,b[w]-1);return b}function r(b,e,j){if(!o(b())){e(c.J(b()));if(!q(b(),";"))j()}}function i(b){var e,j=""!=b&&a.a[n].host!=b;if(j)for(e=0;e<g.B[w];e++)j=j&&k(c.T(b),c.T(g.B[e]))==-1;return j}a.Bc=function(){if(!g.g||
+""==g.g||"none"==g.g){g.g="";return 1}B();return g.pb?c.t(g.g):1};a.tc=function(b,e){if(o(b))b="-";else{e+=g.p&&"/"!=g.p?g.p:"";var j=k(b,e);b=j>=0&&j<=8?"0":("["==b.charAt(0)&&"]"==b.charAt(b[w]-1)?"-":b)}return b};a.Ia=function(b){var e="",j=a.a;e+=a.aa?a.aa.Xc():"";e+=g.qa?a.rb:"";e+=g.ta&&!o(j.title)?"&utmdt="+c.d(j.title):"";e+="&utmhid="+c.uc()+"&utmr="+a.va+"&utmp="+a.Tc(b);return e};a.Tc=function(b){var e=a.a[n];b=h!=b&&""!=b?c.d(b,true):c.d(e.pathname+unescape(e.search),true);return b};a.$c=
+function(b){if(a.Q()){var e="";if(a.l!=h&&a.l.N().length>0)e+="&utme="+c.d(a.l.N());e+=a.Ia(b);x.O(e,a.H,a.a,a.f)}};a.qc=function(){var b=new c.Y(a.a,g);return b.Ha(a.f)?b.Wc():h};a._getLinkerUrl=function(b,e){var j=f(b,"#"),t=b,v=a.qc();if(v)if(e&&1>=j[w])t+="#"+v;else if(!e||1>=j[w])if(1>=j[w])t+=(q(b,"?")?"&":"?")+v;else t=j[0]+(q(b,"?")?"&":"?")+v+"#"+j[1];return t};a.Zb=function(){var b;if(a.A&&a.A[w]>=10&&!q(a.A,"=")){a.u.Uc(a.A);a.u.cd();c._gasoDomain=g.g;c._gasoCPath=g.p;b=a.a.createElement("script");
+b.type="text/javascript";b.id="_gasojs";b.src="https://www.google.com/analytics/reporting/overlay_js?gaso="+a.A+"&"+c.wa();a.a.getElementsByTagName("head")[0].appendChild(b)}};a.Jc=function(){var b=a.a[c.m],e=a.ja,j=a.u,t=a.f+"",v=a.e,y=v?v.gaGlobal:h,E,F=q(b,c.r+t+"."),I=q(b,c.W+t),G=q(b,c.ma+t),C,D=[],H="",K=false,J;b=o(b)?"":b;if(g.I){E=c.Db(a.a[n]);if(g.pa&&!o(E))H=E+"&";H+=a.a[n].search;if(!o(H)&&q(H,c.r)){j.Rc(H);if(!j.Jb())j.pc();C=j.ya()}r(j.Ba,j.Wb,j.fc);r(j.Aa,j.Na,j.Qa)}if(!o(C))if(o(j.K())||
+o(j.za())){C=p(H,"&",e);a.M=true}else{D=f(j.K(),".");t=D[0]}else if(F)if(!I||!G){C=p(b,";",e);a.M=true}else{C=s(b,c.r+t+".",";");D=f(s(b,c.W+t,";"),".")}else{C=[t,c.Gc(),e,e,e,1].join(".");a.M=true;K=true}C=f(C,".");if(v&&y&&y.dh==t){C[4]=y.sid?y.sid:C[4];if(K){C[3]=y.sid?y.sid:C[4];if(y.vid){J=f(y.vid,".");C[1]=J[0];C[2]=J[1]}}}j.Ub(C.join("."));D[0]=t;D[1]=D[1]?D[1]:0;D[2]=undefined!=D[2]?D[2]:g.Yc;D[3]=D[3]?D[3]:C[4];j.La(D.join("."));j.Vb(t);if(!o(j.Hc()))j.Ma(j.t());j.dc();j.Pa();j.ec()};a.Lc=
+function(){x=new c.jc(g)};a._initData=function(){var b;if(!z){a.Lc();a.f=a.Bc();a.u=new c.Y(a.a,g)}if(u())a.Jc();if(!z){if(u()){a.va=a.tc(a.Ac(),a.a.domain);if(g.sa){a.aa=new c.gc(g.ua);a.aa.xc()}if(g.qa){b=new c.n(a.f,a.a,a.va,a.ja,g);a.rb=b.yc(a.u,a.M)}}a.l=new c.Z;a.Ab=new c.Z;z=true}if(!c.Hb)a.Mc()};a._visitCode=function(){a._initData();var b=s(a.a[c.m],c.r+a.f+".",";"),e=f(b,".");return e[w]<4?"":e[1]};a._cookiePathCopy=function(b){a._initData();if(a.u)a.u.bd(a.f,b)};a.Mc=function(){var b=a.a[n].hash,
+e;e=b&&""!=b&&0==k(b,"#gaso=")?s(b,"gaso=","&"):s(a.a[c.m],c.Sa,";");if(e[w]>=10){a.A=e;if(a.e.addEventListener)a.e.addEventListener("load",a.Zb,false);else a.e.attachEvent("onload",a.Zb)}c.Hb=true};a.Q=function(){return a._visitCode()%10000<g.ha*100};a.Vc=function(){var b,e,j=a.a.links;if(!g.Kb){var t=a.a.domain;if("www."==l(t,0,4))t=l(t,4);g.B.push("."+t)}for(b=0;b<j[w]&&(g.Ga==-1||b<g.Ga);b++){e=j[b];if(i(e.host))if(!e.gatcOnclick){e.gatcOnclick=e.onclick?e.onclick:a.Qc;e.onclick=function(v){var y=
+!this.target||this.target=="_self"||this.target=="_top"||this.target=="_parent";y=y&&!a.oc(v);a.ad(v,this,y);return y?false:(this.gatcOnclick?this.gatcOnclick(v):true)}}}};a.Qc=function(){};a._trackPageview=function(b){if(u()){a._initData();if(g.B)a.Vc();a.$c(b);a.M=false}};a._trackTrans=function(){var b=a.f,e=[],j,t,v,y;a._initData();if(a.j&&a.Q()){for(j=0;j<a.j.la[w];j++){t=a.j.la[j];c.h(e,t.S());for(v=0;v<t.ca[w];v++)c.h(e,t.ca[v].S())}for(y=0;y<e[w];y++)x.O(e[y],a.H,a.a,b,true)}};a._setTrans=
+function(){var b=a.a,e,j,t,v,y=b.getElementById?b.getElementById("utmtrans"):(b.utmform&&b.utmform.utmtrans?b.utmform.utmtrans:h);a._initData();if(y&&y.value){a.j=new c.i;v=f(y.value,"UTM:");g.G=!g.G||""==g.G?"|":g.G;for(e=0;e<v[w];e++){v[e]=m(v[e]);j=f(v[e],g.G);for(t=0;t<j[w];t++)j[t]=m(j[t]);if("T"==j[0])a._addTrans(j[1],j[2],j[3],j[4],j[5],j[6],j[7],j[8]);else if("I"==j[0])a._addItem(j[1],j[2],j[3],j[4],j[5],j[6])}}};a._addTrans=function(b,e,j,t,v,y,E,F){a.j=a.j?a.j:new c.i;return a.j.nb(b,e,
+j,t,v,y,E,F)};a._addItem=function(b,e,j,t,v,y){var E;a.j=a.j?a.j:new c.i;E=a.j.xa(b);if(!E)E=a._addTrans(b,"","","","","","","");E.mb(e,j,t,v,y)};a._setVar=function(b){if(b&&""!=b&&A()){a._initData();var e=new c.Y(a.a,g),j=a.f;e.Na(j+"."+c.d(b));e.Qa();if(a.Q())x.O("&utmt=var",a.H,a.a,a.f)}};a._link=function(b,e){if(g.I&&b){a._initData();a.a[n].href=a._getLinkerUrl(b,e)}};a._linkByPost=function(b,e){if(g.I&&b&&b.action){a._initData();b.action=a._getLinkerUrl(b.action,e)}};a._setXKey=function(b,e,
+j){a.l._setKey(b,e,j)};a._setXValue=function(b,e,j){a.l._setValue(b,e,j)};a._getXKey=function(b,e){return a.l._getKey(b,e)};a._getXValue=function(b,e){return a.l.getValue(b,e)};a._clearXKey=function(b){a.l._clearKey(b)};a._clearXValue=function(b){a.l._clearValue(b)};a._createXObj=function(){a._initData();return new c.Z};a._sendXEvent=function(b){var e="";a._initData();if(a.Q()){e+="&utmt=event&utme="+c.d(a.l.Sc(b))+a.Ia();x.O(e,a.H,a.a,a.f,false,true)}};a._createEventTracker=function(b){a._initData();
+return new c.ic(b,a)};a._trackEvent=function(b,e,j,t){var v=true,y=a.Ab;if(h!=b&&h!=e&&""!=b&&""!=e){y._clearKey(5);y._clearValue(5);v=y._setKey(5,1,b)?v:false;v=y._setKey(5,2,e)?v:false;v=h==j||y._setKey(5,3,j)?v:false;v=h==t||y._setValue(5,1,t)?v:false;if(v)a._sendXEvent(y)}else v=false;return v};a.ad=function(b,e,j){a._initData();if(a.Q()){var t=new c.Z;t._setKey(6,1,e.href);var v=j?function(){a.rc(b,e)}:undefined;x.O("&utmt=event&utme="+c.d(t.N())+a.Ia(),a.H,a.a,a.f,false,true,v)}};a.rc=function(b,
+e){if(!b)b=a.e.event;var j=true;if(e.gatcOnclick)j=e.gatcOnclick(b);if(j||typeof j=="undefined")if(!e.target||e.target=="_self")a.e.location=e.href;else if(e.target=="_top")a.e.top.document.location=e.href;else if(e.target=="_parent")a.e.parent.document.location=e.href};a.oc=function(b){if(!b)b=a.e.event;var e=b.shiftKey||b.ctrlKey||b.altKey;if(!e)if(b.modifiers&&a.e.Event)e=b.modifiers&a.e.Event.CONTROL_MASK||b.modifiers&a.e.Event.SHIFT_MASK||b.modifiers&a.e.Event.ALT_MASK;return e};a._setDomainName=
+function(b){g.g=b};a.dd=function(){return g.g};a._addOrganic=function(b,e){c.h(g.fa,new c.cb(b,e))};a._clearOrganic=function(){g.fa=[]};a.hd=function(){return g.fa};a._addIgnoredOrganic=function(b){c.h(g.ea,b)};a._clearIgnoredOrganic=function(){g.ea=[]};a.ed=function(){return g.ea};a._addIgnoredRef=function(b){c.h(g.ga,b)};a._clearIgnoredRef=function(){g.ga=[]};a.fd=function(){return g.ga};a._setAllowHash=function(b){g.pb=b?1:0};a._setCampaignTrack=function(b){g.qa=b?1:0};a._setClientInfo=function(b){g.sa=
+b?1:0};a._getClientInfo=function(){return g.sa};a._setCookiePath=function(b){g.p=b};a._setTransactionDelim=function(b){g.G=b};a._setCookieTimeout=function(b){g.wb=b};a._setDetectFlash=function(b){g.ua=b?1:0};a._getDetectFlash=function(){return g.ua};a._setDetectTitle=function(b){g.ta=b?1:0};a._getDetectTitle=function(){return g.ta};a._setLocalGifPath=function(b){g.Da=b};a._getLocalGifPath=function(){return g.Da};a._setLocalServerMode=function(){g.D=0};a._setRemoteServerMode=function(){g.D=1};a._setLocalRemoteServerMode=
+function(){g.D=2};a.gd=function(){return g.D};a._getServiceMode=function(){return g.D};a._setSampleRate=function(b){g.ha=b};a._setSessionTimeout=function(b){g.Tb=b};a._setAllowLinker=function(b){g.I=b?1:0};a._setAllowAnchor=function(b){g.pa=b?1:0};a._setCampNameKey=function(b){g.db=b};a._setCampContentKey=function(b){g.eb=b};a._setCampIdKey=function(b){g.fb=b};a._setCampMediumKey=function(b){g.gb=b};a._setCampNOKey=function(b){g.hb=b};a._setCampSourceKey=function(b){g.ib=b};a._setCampTermKey=function(b){g.jb=
+b};a._setCampCIdKey=function(b){g.kb=b};a._getAccount=function(){return a.H};a._getVersion=function(){return _gat.lb};a.kd=function(b){g.B=[];if(b)g.B=b};a.md=function(b){g.Kb=b};a.ld=function(b){g.Ga=b};a._setReferrerOverride=function(b){a.yb=b};a.Ac=function(){return a.yb}};_gat._getTracker=function(d){var a=new _gat.kc(d);return a};

Added: trunk/demos/ec2-ui/src/main/webapp/js/hoverIntent.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/hoverIntent.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/hoverIntent.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,84 @@
+(function($){
+	/* hoverIntent by Brian Cherne */
+	$.fn.hoverIntent = function(f,g) {
+		// default configuration options
+		var cfg = {
+			sensitivity: 7,
+			interval: 1,
+			timeout: 0
+		};
+		// override configuration options with user supplied object
+		cfg = $.extend(cfg, g ? { over: f, out: g } : f );
+
+		// instantiate variables
+		// cX, cY = current X and Y position of mouse, updated by mousemove event
+		// pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
+		var cX, cY, pX, pY;
+
+		// A private function for getting mouse position
+		var track = function(ev) {
+			cX = ev.pageX;
+			cY = ev.pageY;
+		};
+
+		// A private function for comparing current and previous mouse position
+		var compare = function(ev,ob) {
+			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
+			// compare mouse positions to see if they've crossed the threshold
+			if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
+				$(ob).unbind("mousemove",track);
+				// set hoverIntent state to true (so mouseOut can be called)
+				ob.hoverIntent_s = 1;
+				return cfg.over.apply(ob,[ev]);
+			} else {
+				// set previous coordinates for next time
+				pX = cX; pY = cY;
+				// use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
+				ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
+			}
+		};
+
+		// A private function for delaying the mouseOut function
+		var delay = function(ev,ob) {
+			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
+			ob.hoverIntent_s = 0;
+			return cfg.out.apply(ob,[ev]);
+		};
+
+		// A private function for handling mouse 'hovering'
+		var handleHover = function(e) {
+			// next three lines copied from jQuery.hover, ignore children onMouseOver/onMouseOut
+			var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
+			while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } }
+			if ( p == this ) { return false; }
+
+			// copy objects to be passed into t (required for event object to be passed in IE)
+			var ev = jQuery.extend({},e);
+			var ob = this;
+
+			// cancel hoverIntent timer if it exists
+			if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
+
+			// else e.type == "onmouseover"
+			if (e.type == "mouseover") {
+				// set "previous" X and Y position based on initial entry point
+				pX = ev.pageX; pY = ev.pageY;
+				// update "current" X and Y position based on mousemove
+				$(ob).bind("mousemove",track);
+				// start polling interval (self-calling timeout) to compare mouse coordinates over time
+				if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
+
+			// else e.type == "onmouseout"
+			} else {
+				// unbind expensive mousemove event
+				$(ob).unbind("mousemove",track);
+				// if hoverIntent state is true, then call the mouseOut function after the specified delay
+				if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
+			}
+		};
+
+		// bind the function to the two event listeners
+		return this.mouseover(handleHover).mouseout(handleHover);
+	};
+	
+})(jQuery);
\ No newline at end of file

Added: trunk/demos/ec2-ui/src/main/webapp/js/ico_searcharrow.png
===================================================================
(Binary files differ)


Property changes on: trunk/demos/ec2-ui/src/main/webapp/js/ico_searcharrow.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/demos/ec2-ui/src/main/webapp/js/infinispan-banner.png
===================================================================
(Binary files differ)


Property changes on: trunk/demos/ec2-ui/src/main/webapp/js/infinispan-banner.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/demos/ec2-ui/src/main/webapp/js/jqModal.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/jqModal.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/jqModal.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,67 @@
+/*
+ * jqModal - Minimalist Modaling with jQuery
+ *
+ * Copyright (c) 2007 Brice Burgess <bhb at iceburg.net>, http://www.iceburg.net
+ * Licensed under the MIT License:
+ * http://www.opensource.org/licenses/mit-license.php
+ * 
+ * $Version: 2007.08.17 +r11
+ * 
+ */
+(function($) {
+$.fn.jqm=function(o){
+var _o = {
+zIndex: 3000,
+overlay: 50,
+overlayClass: 'jqmOverlay',
+closeClass: 'jqmClose',
+trigger: '.jqModal',
+ajax: false,
+target: false,
+modal: false,
+toTop: false,
+onShow: false,
+onHide: false,
+onLoad: false
+};
+return this.each(function(){if(this._jqm)return; s++; this._jqm=s;
+H[s]={c:$.extend(_o, o),a:false,w:$(this).addClass('jqmID'+s),s:s};
+if(_o.trigger)$(this).jqmAddTrigger(_o.trigger);
+});};
+
+$.fn.jqmAddClose=function(e){hs(this,e,'jqmHide'); return this;};
+$.fn.jqmAddTrigger=function(e){hs(this,e,'jqmShow'); return this;};
+$.fn.jqmShow=function(t){return this.each(function(){if(!H[this._jqm].a)$.jqm.open(this._jqm,t)});};
+$.fn.jqmHide=function(t){return this.each(function(){if(H[this._jqm].a)$.jqm.close(this._jqm,t)});};
+
+$.jqm = {
+hash:{},
+open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(/^\d+$/.test(h.w.css('z-index')))?h.w.css('z-index'):c.zIndex,o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});h.t=t;h.a=true;h.w.css('z-index',z);
+ if(c.modal) {if(!A[0])F('bind');A.push(s);o.css('cursor','wait');}
+ else if(c.overlay > 0)h.w.jqmAddClose(o);
+ else o=false;
+
+ h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):false;
+ if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in {Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'");}}
+
+ if(c.ajax) {var r=c.target||h.w,u=c.ajax,r=(typeof r == 'string')?$(r,h.w):$(r),u=(u.substr(0,1) == '@')?$(t).attr(u.substring(1)):u;
+  r.load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h);});}
+ else if(cc)h.w.jqmAddClose($(cc,h.w));
+
+ if(c.toTop&&h.o)h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o);	
+ (c.onShow)?c.onShow(h):h.w.show();e(h);return false;
+},
+close:function(s){var h=H[s];h.a=false;
+ if(A[0]){A.pop();if(!A[0])F('unbind');}
+ if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove();
+ if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove();} return false;
+}};
+var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version == "6.0"),
+i=$('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),
+e=function(h){if(ie6)if(h.o)h.o.html('<p style="width:100%;height:100%"/>').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i); f(h);},
+f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(e){}},
+F=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);},
+m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return !r;},
+hs=function(w,e,y){var s=[];w.each(function(){s.push(this._jqm)});
+ $(e).each(function(){if(this[y])$.extend(this[y],s);else{this[y]=s;$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return false;});}});};
+})(jQuery);
\ No newline at end of file

Added: trunk/demos/ec2-ui/src/main/webapp/js/jquery-1.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/jquery-1.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/jquery-1.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,32 @@
+/*
+ * jQuery 1.2.6 - New Wave Javascript
+ *
+ * Copyright (c) 2008 John Resig (jquery.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
+ * $Rev: 5685 $
+ */
+(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
+return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},cs!
 s:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:funct!
 ion(){return this.domManip(arguments,true,true,function(elem){!
 if(this.
nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
+return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
+selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(valu!
 e);}}return values;}else
+return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
+this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
+return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataTyp!
 e:"script"});else
+jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;!
 return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
+script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===fa!
 lse)break;}else
+for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else
+for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];!
 }callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
+jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i]!
 )){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+=''!
 ;if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/!
 >/g,func
tion(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j!
 >=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
+ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&&notxml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").repla!
 ce(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
+while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
+while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQ!
 uery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret!
 =jQuery.map(this,fn);if(selector&&typeof selector=="string")re!
 t=jQuery
.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}!
 },empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:!
 [\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=!
 new RegE
xp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").i!
 ndexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},h!
 eader:function(a){return/h\d/i.test(a.nodeName);},animated:fun!
 ction(a)
{return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(!
 \w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeN!
 ame(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=!
 m[1]=="#
"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQue!
 ry.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)!
 /first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var !
 fn=jQuer
y.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.d!
 ata(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.hand!
 ler;types=types.type;}jQuery.each(types.split(/\s+/),function(!
 index,ty
pe){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
+for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefau!
 lt;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];f!
 or(var j in handlers){var handler=handlers[j];if(all||handler.!
 type==na
mespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelB!
 ubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:!
 {ready:{setup:function(){bindReady();return;},teardown:functio!
 n(){retu
rn;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQu!
 ery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(!
 jQuery.isReady)fn.call(document,jQuery);else
+jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser!
 .safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,pa!
 rams,callback){if(typeof url!='string')return this._load(url);!
 var off=
url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).v!
 al();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout!
 :0,contentType:"application/x-www-form-urlencoded",processData!
 :true,as
ync:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[!
 jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(!
 script);return undefined;}var requestDone=false;var xhr=window!
 .ActiveX
Object?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
+xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success!
 "){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
+jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return!
  false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
+for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
+s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"t!
 oggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt!
 .complete.call(this);if(p=="height"||p=="width"){opt.display=j!
 Query.cs
s(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
+e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed!
 ,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")t!
 his.elem.style.display="block";},cur:function(force){if(this.e!
 lem[this
.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=j!
 Query.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.dura!
 tion);this.now=this.start+((this.end-this.start)*this.pos);thi!
 s.update
();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParen!
 t.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",tr!
 ue));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(!
 t,10)||0
;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(wi!
 ndow).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();
\ No newline at end of file

Added: trunk/demos/ec2-ui/src/main/webapp/js/jquery.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/jquery.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/jquery.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,11 @@
+/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
+ *
+ * $LastChangedDate: 2007-07-21 18:45:56 -0500 (Sat, 21 Jul 2007) $
+ * $Rev: 2447 $
+ *
+ * Version 2.1.1
+ */
+(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&/6.0/.test(navigator.userAgent)){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insert!
 Before(document.createElement(html),this.firstChild);});}return this;};})(jQuery);
+

Added: trunk/demos/ec2-ui/src/main/webapp/js/jquery_002.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/jquery_002.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/jquery_002.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,361 @@
+/*
+ * jQuery blockUI plugin
+ * Version 1.33  (09/14/2007)
+ * @requires jQuery v1.1.1
+ *
+ * $Id$
+ *
+ * Examples at: http://malsup.com/jquery/block/
+ * Copyright (c) 2007 M. Alsup
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+ (function($) {
+/**
+ * blockUI provides a mechanism for blocking user interaction with a page (or parts of a page).
+ * This can be an effective way to simulate synchronous behavior during ajax operations without
+ * locking the browser.  It will prevent user operations for the current page while it is
+ * active ane will return the page to normal when it is deactivate.  blockUI accepts the following
+ * two optional arguments:
+ *
+ *   message (String|Element|jQuery): The message to be displayed while the UI is blocked. The message
+ *              argument can be a plain text string like "Processing...", an HTML string like
+ *              "<h1><img src="busy.gif" /> Please wait...</h1>", a DOM element, or a jQuery object.
+ *              The default message is "<h1>Please wait...</h1>"
+ *
+ *   css (Object):  Object which contains css property/values to override the default styles of
+ *              the message.  Use this argument if you wish to override the default
+ *              styles.  The css Object should be in a format suitable for the jQuery.css
+ *              function.  For example:
+ *              $.blockUI({
+ *                    backgroundColor: '#ff8',
+ *                    border: '5px solid #f00,
+ *                    fontWeight: 'bold'
+ *              });
+ *
+ * The default blocking message used when blocking the entire page is "<h1>Please wait...</h1>"
+ * but this can be overridden by assigning a value to $.blockUI.defaults.pageMessage in your
+ * own code.  For example:
+ *
+ *      $.blockUI.defaults.pageMessage = "<h1>Bitte Wartezeit</h1>";
+ *
+ * The default message styling can also be overridden.  For example:
+ *
+ *      $.extend($.blockUI.defaults.pageMessageCSS, { color: '#00a', backgroundColor: '#0f0' });
+ *
+ * The default styles work well for simple messages like "Please wait", but for longer messages
+ * style overrides may be necessary.
+ *
+ * @example  $.blockUI();
+ * @desc prevent user interaction with the page (and show the default message of 'Please wait...')
+ *
+ * @example  $.blockUI( { backgroundColor: '#f00', color: '#fff'} );
+ * @desc prevent user interaction and override the default styles of the message to use a white on red color scheme
+ *
+ * @example  $.blockUI('Processing...');
+ * @desc prevent user interaction and display the message "Processing..." instead of the default message
+ *
+ * @name blockUI
+ * @param String|jQuery|Element message Message to display while the UI is blocked
+ * @param Object css Style object to control look of the message
+ * @cat Plugins/blockUI
+ */
+$.blockUI = function(msg, css, opts) {
+    $.blockUI.impl.install(window, msg, css, opts);
+};
+
+// expose version number so other plugins can interogate
+$.blockUI.version = 1.33;
+
+/**
+ * unblockUI removes the UI block that was put in place by blockUI
+ *
+ * @example  $.unblockUI();
+ * @desc unblocks the page
+ *
+ * @name unblockUI
+ * @cat Plugins/blockUI
+ */
+$.unblockUI = function(opts) {
+    $.blockUI.impl.remove(window, opts);
+};
+
+/**
+ * Blocks user interaction with the selected elements.  (Hat tip: Much of
+ * this logic comes from Brandon Aaron's bgiframe plugin.  Thanks, Brandon!)
+ * By default, no message is displayed when blocking elements.
+ *
+ * @example  $('div.special').block();
+ * @desc prevent user interaction with all div elements with the 'special' class.
+ *
+ * @example  $('div.special').block('Please wait');
+ * @desc prevent user interaction with all div elements with the 'special' class
+ * and show a message over the blocked content.
+ *
+ * @name block
+ * @type jQuery
+ * @param String|jQuery|Element message Message to display while the element is blocked
+ * @param Object css Style object to control look of the message
+ * @cat Plugins/blockUI
+ */
+$.fn.block = function(msg, css, opts) {
+    return this.each(function() {
+		if (!this.$pos_checked) {
+            if ($.css(this,"position") == 'static')
+                this.style.position = 'relative';
+            if ($.browser.msie) this.style.zoom = 1; // force 'hasLayout' in IE
+            this.$pos_checked = 1;
+        }
+        $.blockUI.impl.install(this, msg, css, opts);
+    });
+};
+
+/**
+ * Unblocks content that was blocked by "block()"
+ *
+ * @example  $('div.special').unblock();
+ * @desc unblocks all div elements with the 'special' class.
+ *
+ * @name unblock
+ * @type jQuery
+ * @cat Plugins/blockUI
+ */
+$.fn.unblock = function(opts) {
+    return this.each(function() {
+        $.blockUI.impl.remove(this, opts);
+    });
+};
+
+/**
+ * displays the first matched element in a "display box" above a page overlay.
+ *
+ * @example  $('#myImage').displayBox();
+ * @desc displays "myImage" element in a box
+ *
+ * @name displayBox
+ * @type jQuery
+ * @cat Plugins/blockUI
+ */
+$.fn.displayBox = function(css, fn, isFlash) {
+    var msg = this[0];
+    if (!msg) return;
+    var $msg = $(msg);
+    css = css || {};
+
+    var w = $msg.width()  || $msg.attr('width')  || css.width  || $.blockUI.defaults.displayBoxCSS.width;
+    var h = $msg.height() || $msg.attr('height') || css.height || $.blockUI.defaults.displayBoxCSS.height ;
+    if (w[w.length-1] == '%') {
+        var ww = document.documentElement.clientWidth || document.body.clientWidth;
+        w = parseInt(w) || 100;
+        w = (w * ww) / 100;
+    }
+    if (h[h.length-1] == '%') {
+        var hh = document.documentElement.clientHeight || document.body.clientHeight;
+        h = parseInt(h) || 100;
+        h = (h * hh) / 100;
+    }
+
+    var ml = '-' + parseInt(w)/2 + 'px';
+    var mt = '-' + parseInt(h)/2 + 'px';
+
+    // supress opacity on overlay if displaying flash content on mac/ff platform
+    var ua = navigator.userAgent.toLowerCase();
+    var opts = {
+        displayMode: fn || 1,
+        noalpha: isFlash && /mac/.test(ua) && /firefox/.test(ua)
+    };
+
+    $.blockUI.impl.install(window, msg, { width: w, height: h, marginTop: mt, marginLeft: ml }, opts);
+};
+
+
+// override these in your code to change the default messages and styles
+$.blockUI.defaults = {
+    // the message displayed when blocking the entire page
+    pageMessage:    '<h1>Please wait...</h1>',
+    // the message displayed when blocking an element
+    elementMessage: '', // none
+    // styles for the overlay iframe
+    overlayCSS:  { backgroundColor: '#fff', opacity: '0.5' },
+    // styles for the message when blocking the entire page
+    pageMessageCSS:    { width:'250px', margin:'-50px 0 0 -125px', top:'50%', left:'50%', textAlign:'center', color:'#000', backgroundColor:'#fff', border:'3px solid #aaa' },
+    // styles for the message when blocking an element
+    elementMessageCSS: { width:'250px', padding:'10px', textAlign:'center', backgroundColor:'#fff'},
+    // styles for the displayBox
+    displayBoxCSS: { width: '400px', height: '400px', top:'50%', left:'50%' },
+    // allow body element to be stetched in ie6
+    ie6Stretch: 1,
+    // supress tab nav from leaving blocking content?
+    allowTabToLeave: 0,
+    // Title attribute for overlay when using displayBox
+    closeMessage: 'Click to close',
+    // use fadeOut effect when unblocking (can be overridden on unblock call)
+    fadeOut:  1,
+    // fadeOut transition time in millis
+    fadeTime: 400
+};
+
+// the gory details
+$.blockUI.impl = {
+    box: null,
+    boxCallback: null,
+    pageBlock: null,
+    pageBlockEls: [],
+    op8: window.opera && window.opera.version() < 9,
+    ie6: $.browser.msie && /MSIE 6.0/.test(navigator.userAgent),
+    install: function(el, msg, css, opts) {
+        opts = opts || {};
+        this.boxCallback = typeof opts.displayMode == 'function' ? opts.displayMode : null;
+        this.box = opts.displayMode ? msg : null;
+        var full = (el == window);
+
+        // use logical settings for opacity support based on browser but allow overrides via opts arg
+        var noalpha = this.op8 || $.browser.mozilla && /Linux/.test(navigator.platform);
+        if (typeof opts.alphaOverride != 'undefined')
+            noalpha = opts.alphaOverride == 0 ? 1 : 0;
+
+        if (full && this.pageBlock) this.remove(window, {fadeOut:0});
+        // check to see if we were only passed the css object (a literal)
+        if (msg && typeof msg == 'object' && !msg.jquery && !msg.nodeType) {
+            css = msg;
+            msg = null;
+        }
+        msg = msg ? (msg.nodeType ? $(msg) : msg) : full ? $.blockUI.defaults.pageMessage : $.blockUI.defaults.elementMessage;
+        if (opts.displayMode)
+            var basecss = jQuery.extend({}, $.blockUI.defaults.displayBoxCSS);
+        else
+            var basecss = jQuery.extend({}, full ? $.blockUI.defaults.pageMessageCSS : $.blockUI.defaults.elementMessageCSS);
+        css = jQuery.extend(basecss, css || {});
+        var f = ($.browser.msie) ? $('<iframe class="blockUI" style="z-index:1000;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="javascript:false;"></iframe>')
+                                 : $('<div class="blockUI" style="display:none"></div>');
+        var w = $('<div class="blockUI" style="z-index:1001;cursor:wait;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
+        var m = full ? $('<div class="blockUI blockMsg" style="z-index:1002;cursor:wait;padding:0;position:fixed"></div>')
+                     : $('<div class="blockUI" style="display:none;z-index:1002;cursor:wait;position:absolute"></div>');
+        w.css('position', full ? 'fixed' : 'absolute');
+        if (msg) m.css(css);
+        if (!noalpha) w.css($.blockUI.defaults.overlayCSS);
+        if (this.op8) w.css({ width:''+el.clientWidth,height:''+el.clientHeight }); // lame
+        if ($.browser.msie) f.css('opacity','0.0');
+
+        $([f[0],w[0],m[0]]).appendTo(full ? 'body' : el);
+
+        // ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
+        var expr = $.browser.msie && (!$.boxModel || $('object,embed', full ? null : el).length > 0);
+        if (this.ie6 || expr) {
+            // stretch content area if it's short
+            if (full && $.blockUI.defaults.ie6Stretch && $.boxModel)
+                $('html,body').css('height','100%');
+
+            // fix ie6 problem when blocked element has a border width
+            if ((this.ie6 || !$.boxModel) && !full) {
+                var t = this.sz(el,'borderTopWidth'), l = this.sz(el,'borderLeftWidth');
+                var fixT = t ? '(0 - '+t+')' : 0;
+                var fixL = l ? '(0 - '+l+')' : 0;
+            }
+
+            // simulate fixed position
+            $.each([f,w,m], function(i,o) {
+                var s = o[0].style;
+                s.position = 'absolute';
+                if (i < 2) {
+                    full ? s.setExpression('height','document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + "px"')
+                         : s.setExpression('height','this.parentNode.offsetHeight + "px"');
+                    full ? s.setExpression('width','jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"')
+                         : s.setExpression('width','this.parentNode.offsetWidth + "px"');
+                    if (fixL) s.setExpression('left', fixL);
+                    if (fixT) s.setExpression('top', fixT);
+                }
+                else {
+                    if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
+                    s.marginTop = 0;
+                }
+            });
+        }
+        if (opts.displayMode) {
+            w.css('cursor','default').attr('title', $.blockUI.defaults.closeMessage);
+            m.css('cursor','default');
+            $([f[0],w[0],m[0]]).removeClass('blockUI').addClass('displayBox');
+            $().click($.blockUI.impl.boxHandler).bind('keypress', $.blockUI.impl.boxHandler);
+        }
+        else
+            this.bind(1, el);
+        m.append(msg).show();
+        if (msg.jquery) msg.show();
+        if (opts.displayMode) return;
+        if (full) {
+            this.pageBlock = m[0];
+            this.pageBlockEls = $(':input:enabled:visible',this.pageBlock);
+            setTimeout(this.focus, 20);
+        }
+        else this.center(m[0]);
+    },
+    remove: function(el, opts) {
+        var o = $.extend({}, $.blockUI.defaults, opts);
+        this.bind(0, el);
+        var full = el == window;
+        var els = full ? $('body').children().filter('.blockUI') : $('.blockUI', el);
+        if (full) this.pageBlock = this.pageBlockEls = null;
+
+        if (o.fadeOut) {
+            els.fadeOut(o.fadeTime, function() {
+                if (this.parentNode) this.parentNode.removeChild(this);
+            });
+        }
+        else els.remove();
+    },
+    boxRemove: function(el) {
+        $().unbind('click',$.blockUI.impl.boxHandler).unbind('keypress', $.blockUI.impl.boxHandler);
+        if (this.boxCallback)
+            this.boxCallback(this.box);
+        $('body .displayBox').hide().remove();
+    },
+    // event handler to suppress keyboard/mouse events when blocking
+    handler: function(e) {
+        if (e.keyCode && e.keyCode == 9) {
+            if ($.blockUI.impl.pageBlock && !$.blockUI.defaults.allowTabToLeave) {
+                var els = $.blockUI.impl.pageBlockEls;
+                var fwd = !e.shiftKey && e.target == els[els.length-1];
+                var back = e.shiftKey && e.target == els[0];
+                if (fwd || back) {
+                    setTimeout(function(){$.blockUI.impl.focus(back)},10);
+                    return false;
+                }
+            }
+        }
+        if ($(e.target).parents('div.blockMsg').length > 0)
+            return true;
+        return $(e.target).parents().children().filter('div.blockUI').length == 0;
+    },
+    boxHandler: function(e) {
+        if ((e.keyCode && e.keyCode == 27) || (e.type == 'click' && $(e.target).parents('div.blockMsg').length == 0))
+            $.blockUI.impl.boxRemove();
+        return true;
+    },
+    // bind/unbind the handler
+    bind: function(b, el) {
+        var full = el == window;
+        // don't bother unbinding if there is nothing to unbind
+        if (!b && (full && !this.pageBlock || !full && !el.$blocked)) return;
+        if (!full) el.$blocked = b;
+        var $e = $(el).find('a,:input');
+        $.each(['mousedown','mouseup','keydown','keypress','click'], function(i,o) {
+            $e[b?'bind':'unbind'](o, $.blockUI.impl.handler);
+        });
+    },
+    focus: function(back) {
+        if (!$.blockUI.impl.pageBlockEls) return;
+        var e = $.blockUI.impl.pageBlockEls[back===true ? $.blockUI.impl.pageBlockEls.length-1 : 0];
+        if (e) e.focus();
+    },
+    center: function(el) {
+		var p = el.parentNode, s = el.style;
+        var l = ((p.offsetWidth - el.offsetWidth)/2) - this.sz(p,'borderLeftWidth');
+        var t = ((p.offsetHeight - el.offsetHeight)/2) - this.sz(p,'borderTopWidth');
+        s.left = l > 0 ? (l+'px') : '0';
+        s.top  = t > 0 ? (t+'px') : '0';
+    },
+    sz: function(el, p) { return parseInt($.css(el,p))||0; }
+};
+
+})(jQuery);

Added: trunk/demos/ec2-ui/src/main/webapp/js/jquery_003.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/jquery_003.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/jquery_003.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,12 @@
+/*
+ * jQuery 1.2.3 - New Wave Javascript
+ *
+ * Copyright (c) 2008 John Resig (jquery.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $
+ * $Rev: 4663 $
+ */
+
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(J(){7(1e.3N)L w=1e.3N;L E=1e.3N=J(a,b){K 1B E.2l.4T(a,b)};7(1e.$)L D=1e.$;1e.$=E;L u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/;L G=/^.[^:#\\[\\.]*$/;E.1n=E.2l={4T:J(d,b){d=d||T;7(d.15){6[0]=d;6.M=1;K 6}N 7(1o d=="25"){L c=u.2O(d);7(c&&(c[1]||!b)){7(c[1])d=E.4a([c[1]],b);N{L a=T.5J(c[3]);7(a)7(a.2w!=c[3])K E().2s(d);N{6[0]=a;6.M=1;K 6}N d=[]}}N K 1B E(b).2s(d)}N 7(E.1q(d))K 1B E(T)[E.1n.21?"21":"3U"](d);K 6.6E(d.1k==1M&&d||(d.5h||d.M&&d!=1e&&!d.15&&d[0]!=10&&d[0].15)&&E.2I(d)||[d])},5h:"1.2.3",87:J(){K 6.M},M:0,22:J(a){K a==10?E.2I(6):6[a]},2F:J(b){L a=E(b);a.54=6;K a},6E:J(a){6.M=0;1M.2l.1g.1i(6,a);K 6},R:J(a,b){K E.R(6,a,b)},4X:J(b){L a=-1;6.R(J(i){7(6==b)a!
 =i});K a},1J:J(c,a,b){L d=c;7(c.1k==4e)7(a==10)K 6.M&&E[b||"1J"](6[0],c)||10;N{d={};d[c]=a}K 6.R(J(i){Q(c 1p d)E.1J(b?6.W:6,c,E.1l(6,d[c],b,i,c))})},1j:J(b,a){7((b==\'27\'||b==\'1R\')&&2M(a)<0)a=10;K 6.1J(b,a,"2o")},1u:J(b){7(1o b!="3V"&&b!=V)K 6.4x().3t((6[0]&&6[0].2i||T).5r(b));L a="";E.R(b||6,J(){E.R(6.3p,J(){7(6.15!=8)a+=6.15!=1?6.6K:E.1n.1u([6])})});K a},5m:J(b){7(6[0])E(b,6[0].2i).5k().3o(6[0]).2c(J(){L a=6;2b(a.1C)a=a.1C;K a}).3t(6);K 6},8w:J(a){K 6.R(J(){E(6).6z().5m(a)})},8p:J(a){K 6.R(J(){E(6).5m(a)})},3t:J(){K 6.3O(18,P,S,J(a){7(6.15==1)6.38(a)})},6q:J(){K 6.3O(18,P,P,J(a){7(6.15==1)6.3o(a,6.1C)})},6o:J(){K 6.3O(18,S,S,J(a){6.1a.3o(a,6)})},5a:J(){K 6.3O(18,S,P,J(a){6.1a.3o(a,6.2B)})},3h:J(){K 6.54||E([])},2s:J(b){L c=E.2c(6,J(a){K E.2s(b,a)});K 6.2F(/[^+>] [^+>]/.17(b)||b.1f("..")>-1?E.57(c):c)},5k:J(e){L f=6.2c(J(){7(E.14.1d&&!E.3E(6)){L a=6.69(P),4Y=T.3s("1x");4Y.38(a);K E.4a([4Y.3d])[0]}N K 6.69(P)});L d=f.2s("*").4R().R(J(){7(6[F]!=10)6[F]=V});7(e===P)6.2s("*!
 ").4R().R(J(i){7(6.15==3)K;L c=E.O(6,"2R");Q(L a 1p c)Q(L b 1p!
  c[a])E.
16.1b(d[i],a,c[a][b],c[a][b].O)});K f},1E:J(b){K 6.2F(E.1q(b)&&E.3y(6,J(a,i){K b.1P(a,i)})||E.3e(b,6))},56:J(b){7(b.1k==4e)7(G.17(b))K 6.2F(E.3e(b,6,P));N b=E.3e(b,6);L a=b.M&&b[b.M-1]!==10&&!b.15;K 6.1E(J(){K a?E.33(6,b)<0:6!=b})},1b:J(a){K!a?6:6.2F(E.37(6.22(),a.1k==4e?E(a).22():a.M!=10&&(!a.12||E.12(a,"3u"))?a:[a]))},3H:J(a){K a?E.3e(a,6).M>0:S},7j:J(a){K 6.3H("."+a)},5O:J(b){7(b==10){7(6.M){L c=6[0];7(E.12(c,"2k")){L e=c.3T,5I=[],11=c.11,2X=c.U=="2k-2X";7(e<0)K V;Q(L i=2X?e:0,2f=2X?e+1:11.M;i<2f;i++){L d=11[i];7(d.2p){b=E.14.1d&&!d.9J.1A.9y?d.1u:d.1A;7(2X)K b;5I.1g(b)}}K 5I}N K(6[0].1A||"").1r(/\\r/g,"")}K 10}K 6.R(J(){7(6.15!=1)K;7(b.1k==1M&&/5u|5t/.17(6.U))6.3k=(E.33(6.1A,b)>=0||E.33(6.31,b)>=0);N 7(E.12(6,"2k")){L a=b.1k==1M?b:[b];E("98",6).R(J(){6.2p=(E.33(6.1A,a)>=0||E.33(6.1u,a)>=0)});7(!a.M)6.3T=-1}N 6.1A=b})},3q:J(a){K a==10?(6.M?6[0].3d:V):6.4x().3t(a)},6S:J(a){K 6.5a(a).1V()},6Z:J(i){K 6.2K(i,i+1)},2K:J(){K 6.2F(1M.2l.2K.1i(6,18))},2c:J(b){K 6.2F(E.2c(6,J(a,i){!
 K b.1P(a,i,a)}))},4R:J(){K 6.1b(6.54)},O:J(d,b){L a=d.23(".");a[1]=a[1]?"."+a[1]:"";7(b==V){L c=6.5n("8P"+a[1]+"!",[a[0]]);7(c==10&&6.M)c=E.O(6[0],d);K c==V&&a[1]?6.O(a[0]):c}N K 6.1N("8K"+a[1]+"!",[a[0],b]).R(J(){E.O(6,d,b)})},35:J(a){K 6.R(J(){E.35(6,a)})},3O:J(g,f,h,d){L e=6.M>1,3n;K 6.R(J(){7(!3n){3n=E.4a(g,6.2i);7(h)3n.8D()}L b=6;7(f&&E.12(6,"1O")&&E.12(3n[0],"4v"))b=6.3S("1U")[0]||6.38(6.2i.3s("1U"));L c=E([]);E.R(3n,J(){L a=e?E(6).5k(P)[0]:6;7(E.12(a,"1m")){c=c.1b(a)}N{7(a.15==1)c=c.1b(E("1m",a).1V());d.1P(b,a)}});c.R(6A)})}};E.2l.4T.2l=E.2l;J 6A(i,a){7(a.3Q)E.3P({1c:a.3Q,3l:S,1H:"1m"});N E.5g(a.1u||a.6x||a.3d||"");7(a.1a)a.1a.34(a)}E.1s=E.1n.1s=J(){L b=18[0]||{},i=1,M=18.M,5c=S,11;7(b.1k==8d){5c=b;b=18[1]||{};i=2}7(1o b!="3V"&&1o b!="J")b={};7(M==1){b=6;i=0}Q(;i<M;i++)7((11=18[i])!=V)Q(L a 1p 11){7(b===11[a])6w;7(5c&&11[a]&&1o 11[a]=="3V"&&b[a]&&!11[a].15)b[a]=E.1s(b[a],11[a]);N 7(11[a]!=10)b[a]=11[a]}K b};L F="3N"+(1B 3v()).3L(),6t=0,5b={};L H=/z-?4X|86-?84|1w|6k|7!
 Z-?1R/i;E.1s({7Y:J(a){1e.$=D;7(a)1e.3N=w;K E},1q:J(a){K!!a&&1o!
  a!="25"
&&!a.12&&a.1k!=1M&&/J/i.17(a+"")},3E:J(a){K a.1F&&!a.1h||a.28&&a.2i&&!a.2i.1h},5g:J(a){a=E.3g(a);7(a){L b=T.3S("6f")[0]||T.1F,1m=T.3s("1m");1m.U="1u/4m";7(E.14.1d)1m.1u=a;N 1m.38(T.5r(a));b.38(1m);b.34(1m)}},12:J(b,a){K b.12&&b.12.2E()==a.2E()},1T:{},O:J(c,d,b){c=c==1e?5b:c;L a=c[F];7(!a)a=c[F]=++6t;7(d&&!E.1T[a])E.1T[a]={};7(b!=10)E.1T[a][d]=b;K d?E.1T[a][d]:a},35:J(c,b){c=c==1e?5b:c;L a=c[F];7(b){7(E.1T[a]){2V E.1T[a][b];b="";Q(b 1p E.1T[a])1Q;7(!b)E.35(c)}}N{1S{2V c[F]}1X(e){7(c.52)c.52(F)}2V E.1T[a]}},R:J(c,a,b){7(b){7(c.M==10){Q(L d 1p c)7(a.1i(c[d],b)===S)1Q}N Q(L i=0,M=c.M;i<M;i++)7(a.1i(c[i],b)===S)1Q}N{7(c.M==10){Q(L d 1p c)7(a.1P(c[d],d,c[d])===S)1Q}N Q(L i=0,M=c.M,1A=c[0];i<M&&a.1P(1A,i,1A)!==S;1A=c[++i]){}}K c},1l:J(b,a,c,i,d){7(E.1q(a))a=a.1P(b,i);K a&&a.1k==51&&c=="2o"&&!H.17(d)?a+"2S":a},1t:{1b:J(c,b){E.R((b||"").23(/\\s+/),J(i,a){7(c.15==1&&!E.1t.3Y(c.1t,a))c.1t+=(c.1t?" ":"")+a})},1V:J(c,b){7(c.15==1)c.1t=b!=10?E.3y(c.1t.23(/\\s+/),J(a){K!E.1t.3Y(b,a)}).6a("!
  "):""},3Y:J(b,a){K E.33(a,(b.1t||b).3X().23(/\\s+/))>-1}},68:J(b,c,a){L e={};Q(L d 1p c){e[d]=b.W[d];b.W[d]=c[d]}a.1P(b);Q(L d 1p c)b.W[d]=e[d]},1j:J(d,e,c){7(e=="27"||e=="1R"){L b,46={43:"4W",4U:"1Z",19:"3D"},3c=e=="27"?["7O","7M"]:["7J","7I"];J 5E(){b=e=="27"?d.7H:d.7F;L a=0,2N=0;E.R(3c,J(){a+=2M(E.2o(d,"7E"+6,P))||0;2N+=2M(E.2o(d,"2N"+6+"5X",P))||0});b-=24.7C(a+2N)}7(E(d).3H(":4d"))5E();N E.68(d,46,5E);K 24.2f(0,b)}K E.2o(d,e,c)},2o:J(e,k,j){L d;J 3x(b){7(!E.14.2d)K S;L a=T.4c.4K(b,V);K!a||a.4M("3x")==""}7(k=="1w"&&E.14.1d){d=E.1J(e.W,"1w");K d==""?"1":d}7(E.14.2z&&k=="19"){L c=e.W.50;e.W.50="0 7r 7o";e.W.50=c}7(k.1D(/4g/i))k=y;7(!j&&e.W&&e.W[k])d=e.W[k];N 7(T.4c&&T.4c.4K){7(k.1D(/4g/i))k="4g";k=k.1r(/([A-Z])/g,"-$1").2h();L h=T.4c.4K(e,V);7(h&&!3x(e))d=h.4M(k);N{L f=[],2C=[];Q(L a=e;a&&3x(a);a=a.1a)2C.4J(a);Q(L i=0;i<2C.M;i++)7(3x(2C[i])){f[i]=2C[i].W.19;2C[i].W.19="3D"}d=k=="19"&&f[2C.M-1]!=V?"2H":(h&&h.4M(k))||"";Q(L i=0;i<f.M;i++)7(f[i]!=V)2C[i].W.19=f[i]}7(k=="1w"&!
 &d=="")d="1"}N 7(e.4n){L g=k.1r(/\\-(\\w)/g,J(a,b){K b.2E()});!
 d=e.4n[k
]||e.4n[g];7(!/^\\d+(2S)?$/i.17(d)&&/^\\d/.17(d)){L l=e.W.26,3K=e.3K.26;e.3K.26=e.4n.26;e.W.26=d||0;d=e.W.7f+"2S";e.W.26=l;e.3K.26=3K}}K d},4a:J(l,h){L k=[];h=h||T;7(1o h.3s==\'10\')h=h.2i||h[0]&&h[0].2i||T;E.R(l,J(i,d){7(!d)K;7(d.1k==51)d=d.3X();7(1o d=="25"){d=d.1r(/(<(\\w+)[^>]*?)\\/>/g,J(b,a,c){K c.1D(/^(aa|a6|7e|a5|4D|7a|a0|3m|9W|9U|9S)$/i)?b:a+"></"+c+">"});L f=E.3g(d).2h(),1x=h.3s("1x");L e=!f.1f("<9P")&&[1,"<2k 74=\'74\'>","</2k>"]||!f.1f("<9M")&&[1,"<73>","</73>"]||f.1D(/^<(9G|1U|9E|9B|9x)/)&&[1,"<1O>","</1O>"]||!f.1f("<4v")&&[2,"<1O><1U>","</1U></1O>"]||(!f.1f("<9w")||!f.1f("<9v"))&&[3,"<1O><1U><4v>","</4v></1U></1O>"]||!f.1f("<7e")&&[2,"<1O><1U></1U><6V>","</6V></1O>"]||E.14.1d&&[1,"1x<1x>","</1x>"]||[0,"",""];1x.3d=e[1]+d+e[2];2b(e[0]--)1x=1x.5o;7(E.14.1d){L g=!f.1f("<1O")&&f.1f("<1U")<0?1x.1C&&1x.1C.3p:e[1]=="<1O>"&&f.1f("<1U")<0?1x.3p:[];Q(L j=g.M-1;j>=0;--j)7(E.12(g[j],"1U")&&!g[j].3p.M)g[j].1a.34(g[j]);7(/^\\s/.17(d))1x.3o(h.5r(d.1D(/^\\s*/)[0]),1x.1C)}d=E.2I!
 (1x.3p)}7(d.M===0&&(!E.12(d,"3u")&&!E.12(d,"2k")))K;7(d[0]==10||E.12(d,"3u")||d.11)k.1g(d);N k=E.37(k,d)});K k},1J:J(d,e,c){7(!d||d.15==3||d.15==8)K 10;L f=E.3E(d)?{}:E.46;7(e=="2p"&&E.14.2d)d.1a.3T;7(f[e]){7(c!=10)d[f[e]]=c;K d[f[e]]}N 7(E.14.1d&&e=="W")K E.1J(d.W,"9u",c);N 7(c==10&&E.14.1d&&E.12(d,"3u")&&(e=="9r"||e=="9o"))K d.9m(e).6K;N 7(d.28){7(c!=10){7(e=="U"&&E.12(d,"4D")&&d.1a)6Q"U 9i 9h\'t 9g 9e";d.9b(e,""+c)}7(E.14.1d&&/6O|3Q/.17(e)&&!E.3E(d))K d.4z(e,2);K d.4z(e)}N{7(e=="1w"&&E.14.1d){7(c!=10){d.6k=1;d.1E=(d.1E||"").1r(/6M\\([^)]*\\)/,"")+(2M(c).3X()=="96"?"":"6M(1w="+c*6L+")")}K d.1E&&d.1E.1f("1w=")>=0?(2M(d.1E.1D(/1w=([^)]*)/)[1])/6L).3X():""}e=e.1r(/-([a-z])/95,J(a,b){K b.2E()});7(c!=10)d[e]=c;K d[e]}},3g:J(a){K(a||"").1r(/^\\s+|\\s+$/g,"")},2I:J(b){L a=[];7(1o b!="93")Q(L i=0,M=b.M;i<M;i++)a.1g(b[i]);N a=b.2K(0);K a},33:J(b,a){Q(L i=0,M=a.M;i<M;i++)7(a[i]==b)K i;K-1},37:J(a,b){7(E.14.1d){Q(L i=0;b[i];i++)7(b[i].15!=8)a.1g(b[i])}N Q(L i=0;b[i];i++)a.1g(b[i]);K!
  a},57:J(a){L c=[],2r={};1S{Q(L i=0,M=a.M;i<M;i++){L b=E.O(a[i!
 ]);7(!2r
[b]){2r[b]=P;c.1g(a[i])}}}1X(e){c=a}K c},3y:J(c,a,d){L b=[];Q(L i=0,M=c.M;i<M;i++)7(!d&&a(c[i],i)||d&&!a(c[i],i))b.1g(c[i]);K b},2c:J(d,a){L c=[];Q(L i=0,M=d.M;i<M;i++){L b=a(d[i],i);7(b!==V&&b!=10){7(b.1k!=1M)b=[b];c=c.71(b)}}K c}});L v=8Y.8W.2h();E.14={5K:(v.1D(/.+(?:8T|8S|8R|8O)[\\/: ]([\\d.]+)/)||[])[1],2d:/77/.17(v),2z:/2z/.17(v),1d:/1d/.17(v)&&!/2z/.17(v),48:/48/.17(v)&&!/(8L|77)/.17(v)};L y=E.14.1d?"6H":"75";E.1s({8I:!E.14.1d||T.6F=="79",46:{"Q":"8F","8E":"1t","4g":y,75:y,6H:y,3d:"3d",1t:"1t",1A:"1A",2Y:"2Y",3k:"3k",8C:"8B",2p:"2p",8A:"8z",3T:"3T",6C:"6C",28:"28",12:"12"}});E.R({6B:J(a){K a.1a},8y:J(a){K E.4u(a,"1a")},8x:J(a){K E.2Z(a,2,"2B")},8v:J(a){K E.2Z(a,2,"4t")},8u:J(a){K E.4u(a,"2B")},8t:J(a){K E.4u(a,"4t")},8s:J(a){K E.5i(a.1a.1C,a)},8r:J(a){K E.5i(a.1C)},6z:J(a){K E.12(a,"8q")?a.8o||a.8n.T:E.2I(a.3p)}},J(c,d){E.1n[c]=J(b){L a=E.2c(6,d);7(b&&1o b=="25")a=E.3e(b,a);K 6.2F(E.57(a))}});E.R({6y:"3t",8m:"6q",3o:"6o",8l:"5a",8k:"6S"},J(c,b){E.1n[c]=J(){L a=18;K 6.R!
 (J(){Q(L i=0,M=a.M;i<M;i++)E(a[i])[b](6)})}});E.R({8j:J(a){E.1J(6,a,"");7(6.15==1)6.52(a)},8i:J(a){E.1t.1b(6,a)},8h:J(a){E.1t.1V(6,a)},8g:J(a){E.1t[E.1t.3Y(6,a)?"1V":"1b"](6,a)},1V:J(a){7(!a||E.1E(a,[6]).r.M){E("*",6).1b(6).R(J(){E.16.1V(6);E.35(6)});7(6.1a)6.1a.34(6)}},4x:J(){E(">*",6).1V();2b(6.1C)6.34(6.1C)}},J(a,b){E.1n[a]=J(){K 6.R(b,18)}});E.R(["8f","5X"],J(i,c){L b=c.2h();E.1n[b]=J(a){K 6[0]==1e?E.14.2z&&T.1h["5e"+c]||E.14.2d&&1e["8e"+c]||T.6F=="79"&&T.1F["5e"+c]||T.1h["5e"+c]:6[0]==T?24.2f(24.2f(T.1h["5d"+c],T.1F["5d"+c]),24.2f(T.1h["5L"+c],T.1F["5L"+c])):a==10?(6.M?E.1j(6[0],b):V):6.1j(b,a.1k==4e?a:a+"2S")}});L C=E.14.2d&&4s(E.14.5K)<8c?"(?:[\\\\w*4r-]|\\\\\\\\.)":"(?:[\\\\w\\8b-\\8a*4r-]|\\\\\\\\.)",6v=1B 4q("^>\\\\s*("+C+"+)"),6u=1B 4q("^("+C+"+)(#)("+C+"+)"),6s=1B 4q("^([#.]?)("+C+"*)");E.1s({6r:{"":J(a,i,m){K m[2]=="*"||E.12(a,m[2])},"#":J(a,i,m){K a.4z("2w")==m[2]},":":{89:J(a,i,m){K i<m[3]-0},88:J(a,i,m){K i>m[3]-0},2Z:J(a,i,m){K m[3]-0==i},6Z:J(a,i,m){K m[3]!
 -0==i},3j:J(a,i){K i==0},3J:J(a,i,m,r){K i==r.M-1},6n:J(a,i){K!
  i%2==0}
,6l:J(a,i){K i%2},"3j-4p":J(a){K a.1a.3S("*")[0]==a},"3J-4p":J(a){K E.2Z(a.1a.5o,1,"4t")==a},"83-4p":J(a){K!E.2Z(a.1a.5o,2,"4t")},6B:J(a){K a.1C},4x:J(a){K!a.1C},82:J(a,i,m){K(a.6x||a.81||E(a).1u()||"").1f(m[3])>=0},4d:J(a){K"1Z"!=a.U&&E.1j(a,"19")!="2H"&&E.1j(a,"4U")!="1Z"},1Z:J(a){K"1Z"==a.U||E.1j(a,"19")=="2H"||E.1j(a,"4U")=="1Z"},80:J(a){K!a.2Y},2Y:J(a){K a.2Y},3k:J(a){K a.3k},2p:J(a){K a.2p||E.1J(a,"2p")},1u:J(a){K"1u"==a.U},5u:J(a){K"5u"==a.U},5t:J(a){K"5t"==a.U},59:J(a){K"59"==a.U},3I:J(a){K"3I"==a.U},58:J(a){K"58"==a.U},6j:J(a){K"6j"==a.U},6i:J(a){K"6i"==a.U},2G:J(a){K"2G"==a.U||E.12(a,"2G")},4D:J(a){K/4D|2k|6h|2G/i.17(a.12)},3Y:J(a,i,m){K E.2s(m[3],a).M},7X:J(a){K/h\\d/i.17(a.12)},7W:J(a){K E.3y(E.3G,J(b){K a==b.Y}).M}}},6g:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,1B 4q("^([:.#]*)("+C+"+)")],3e:J(a,c,b){L d,2m=[];2b(a&&a!=d){d=a;L f=E.1E(a,c,b);a=f.t.1r(/^\\s*,\\s*/,"");2m=b?c=f.r:E.37(2m,f.r)}K!
  2m},2s:J(t,p){7(1o t!="25")K[t];7(p&&p.15!=1&&p.15!=9)K[];p=p||T;L d=[p],2r=[],3J,12;2b(t&&3J!=t){L r=[];3J=t;t=E.3g(t);L o=S;L g=6v;L m=g.2O(t);7(m){12=m[1].2E();Q(L i=0;d[i];i++)Q(L c=d[i].1C;c;c=c.2B)7(c.15==1&&(12=="*"||c.12.2E()==12))r.1g(c);d=r;t=t.1r(g,"");7(t.1f(" ")==0)6w;o=P}N{g=/^([>+~])\\s*(\\w*)/i;7((m=g.2O(t))!=V){r=[];L l={};12=m[2].2E();m=m[1];Q(L j=0,3f=d.M;j<3f;j++){L n=m=="~"||m=="+"?d[j].2B:d[j].1C;Q(;n;n=n.2B)7(n.15==1){L h=E.O(n);7(m=="~"&&l[h])1Q;7(!12||n.12.2E()==12){7(m=="~")l[h]=P;r.1g(n)}7(m=="+")1Q}}d=r;t=E.3g(t.1r(g,""));o=P}}7(t&&!o){7(!t.1f(",")){7(p==d[0])d.4l();2r=E.37(2r,d);r=d=[p];t=" "+t.6e(1,t.M)}N{L k=6u;L m=k.2O(t);7(m){m=[0,m[2],m[3],m[1]]}N{k=6s;m=k.2O(t)}m[2]=m[2].1r(/\\\\/g,"");L f=d[d.M-1];7(m[1]=="#"&&f&&f.5J&&!E.3E(f)){L q=f.5J(m[2]);7((E.14.1d||E.14.2z)&&q&&1o q.2w=="25"&&q.2w!=m[2])q=E(\'[@2w="\'+m[2]+\'"]\',f)[0];d=r=q&&(!m[3]||E.12(q,m[3]))?[q]:[]}N{Q(L i=0;d[i];i++){L a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];7(a=!
 ="*"&&d[i].12.2h()=="3V")a="3m";r=E.37(r,d[i].3S(a))}7(m[1]=="!
 .")r=E.5
5(r,m[2]);7(m[1]=="#"){L e=[];Q(L i=0;r[i];i++)7(r[i].4z("2w")==m[2]){e=[r[i]];1Q}r=e}d=r}t=t.1r(k,"")}}7(t){L b=E.1E(t,r);d=r=b.r;t=E.3g(b.t)}}7(t)d=[];7(d&&p==d[0])d.4l();2r=E.37(2r,d);K 2r},55:J(r,m,a){m=" "+m+" ";L c=[];Q(L i=0;r[i];i++){L b=(" "+r[i].1t+" ").1f(m)>=0;7(!a&&b||a&&!b)c.1g(r[i])}K c},1E:J(t,r,h){L d;2b(t&&t!=d){d=t;L p=E.6g,m;Q(L i=0;p[i];i++){m=p[i].2O(t);7(m){t=t.7V(m[0].M);m[2]=m[2].1r(/\\\\/g,"");1Q}}7(!m)1Q;7(m[1]==":"&&m[2]=="56")r=G.17(m[3])?E.1E(m[3],r,P).r:E(r).56(m[3]);N 7(m[1]==".")r=E.55(r,m[2],h);N 7(m[1]=="["){L g=[],U=m[3];Q(L i=0,3f=r.M;i<3f;i++){L a=r[i],z=a[E.46[m[2]]||m[2]];7(z==V||/6O|3Q|2p/.17(m[2]))z=E.1J(a,m[2])||\'\';7((U==""&&!!z||U=="="&&z==m[5]||U=="!="&&z!=m[5]||U=="^="&&z&&!z.1f(m[5])||U=="$="&&z.6e(z.M-m[5].M)==m[5]||(U=="*="||U=="~=")&&z.1f(m[5])>=0)^h)g.1g(a)}r=g}N 7(m[1]==":"&&m[2]=="2Z-4p"){L e={},g=[],17=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.2O(m[3]=="6n"&&"2n"||m[3]=="6l"&&"2n+1"||!/\\D/.17(m[3])&&"7U+"+m[3]||m[3]),3j=(17[1]+(17!
 [2]||1))-0,d=17[3]-0;Q(L i=0,3f=r.M;i<3f;i++){L j=r[i],1a=j.1a,2w=E.O(1a);7(!e[2w]){L c=1;Q(L n=1a.1C;n;n=n.2B)7(n.15==1)n.4k=c++;e[2w]=P}L b=S;7(3j==0){7(j.4k==d)b=P}N 7((j.4k-d)%3j==0&&(j.4k-d)/3j>=0)b=P;7(b^h)g.1g(j)}r=g}N{L f=E.6r[m[1]];7(1o f=="3V")f=f[m[2]];7(1o f=="25")f=6c("S||J(a,i){K "+f+";}");r=E.3y(r,J(a,i){K f(a,i,m,r)},h)}}K{r:r,t:t}},4u:J(b,c){L d=[];L a=b[c];2b(a&&a!=T){7(a.15==1)d.1g(a);a=a[c]}K d},2Z:J(a,e,c,b){e=e||1;L d=0;Q(;a;a=a[c])7(a.15==1&&++d==e)1Q;K a},5i:J(n,a){L r=[];Q(;n;n=n.2B){7(n.15==1&&(!a||n!=a))r.1g(n)}K r}});E.16={1b:J(f,i,g,e){7(f.15==3||f.15==8)K;7(E.14.1d&&f.53!=10)f=1e;7(!g.2D)g.2D=6.2D++;7(e!=10){L h=g;g=J(){K h.1i(6,18)};g.O=e;g.2D=h.2D}L j=E.O(f,"2R")||E.O(f,"2R",{}),1v=E.O(f,"1v")||E.O(f,"1v",J(){L a;7(1o E=="10"||E.16.5f)K a;a=E.16.1v.1i(18.3R.Y,18);K a});1v.Y=f;E.R(i.23(/\\s+/),J(c,b){L a=b.23(".");b=a[0];g.U=a[1];L d=j[b];7(!d){d=j[b]={};7(!E.16.2y[b]||E.16.2y[b].4j.1P(f)===S){7(f.3F)f.3F(b,1v,S);N 7(f.6b)f.6b("4i"+b,1v)}}d[g.!
 2D]=g;E.16.2a[b]=P});f=V},2D:1,2a:{},1V:J(e,h,f){7(e.15==3||e.!
 15==8)K;
L i=E.O(e,"2R"),29,4X;7(i){7(h==10||(1o h=="25"&&h.7T(0)=="."))Q(L g 1p i)6.1V(e,g+(h||""));N{7(h.U){f=h.2q;h=h.U}E.R(h.23(/\\s+/),J(b,a){L c=a.23(".");a=c[0];7(i[a]){7(f)2V i[a][f.2D];N Q(f 1p i[a])7(!c[1]||i[a][f].U==c[1])2V i[a][f];Q(29 1p i[a])1Q;7(!29){7(!E.16.2y[a]||E.16.2y[a].4h.1P(e)===S){7(e.67)e.67(a,E.O(e,"1v"),S);N 7(e.66)e.66("4i"+a,E.O(e,"1v"))}29=V;2V i[a]}}})}Q(29 1p i)1Q;7(!29){L d=E.O(e,"1v");7(d)d.Y=V;E.35(e,"2R");E.35(e,"1v")}}},1N:J(g,c,d,f,h){c=E.2I(c||[]);7(g.1f("!")>=0){g=g.2K(0,-1);L a=P}7(!d){7(6.2a[g])E("*").1b([1e,T]).1N(g,c)}N{7(d.15==3||d.15==8)K 10;L b,29,1n=E.1q(d[g]||V),16=!c[0]||!c[0].36;7(16)c.4J(6.4Z({U:g,2L:d}));c[0].U=g;7(a)c[0].65=P;7(E.1q(E.O(d,"1v")))b=E.O(d,"1v").1i(d,c);7(!1n&&d["4i"+g]&&d["4i"+g].1i(d,c)===S)b=S;7(16)c.4l();7(h&&E.1q(h)){29=h.1i(d,b==V?c:c.71(b));7(29!==10)b=29}7(1n&&f!==S&&b!==S&&!(E.12(d,\'a\')&&g=="4V")){6.5f=P;1S{d[g]()}1X(e){}}6.5f=S}K b},1v:J(c){L a;c=E.16.4Z(c||1e.16||{});L b=c.U.23(".");c.U=b[0];L f=E.O(6,"!
 2R")&&E.O(6,"2R")[c.U],42=1M.2l.2K.1P(18,1);42.4J(c);Q(L j 1p f){L d=f[j];42[0].2q=d;42[0].O=d.O;7(!b[1]&&!c.65||d.U==b[1]){L e=d.1i(6,42);7(a!==S)a=e;7(e===S){c.36();c.44()}}}7(E.14.1d)c.2L=c.36=c.44=c.2q=c.O=V;K a},4Z:J(c){L a=c;c=E.1s({},a);c.36=J(){7(a.36)a.36();a.7S=S};c.44=J(){7(a.44)a.44();a.7R=P};7(!c.2L)c.2L=c.7Q||T;7(c.2L.15==3)c.2L=a.2L.1a;7(!c.4S&&c.5w)c.4S=c.5w==c.2L?c.7P:c.5w;7(c.64==V&&c.63!=V){L b=T.1F,1h=T.1h;c.64=c.63+(b&&b.2v||1h&&1h.2v||0)-(b.62||0);c.7N=c.7L+(b&&b.2x||1h&&1h.2x||0)-(b.60||0)}7(!c.3c&&((c.4f||c.4f===0)?c.4f:c.5Z))c.3c=c.4f||c.5Z;7(!c.7b&&c.5Y)c.7b=c.5Y;7(!c.3c&&c.2G)c.3c=(c.2G&1?1:(c.2G&2?3:(c.2G&4?2:0)));K c},2y:{21:{4j:J(){5M();K},4h:J(){K}},3C:{4j:J(){7(E.14.1d)K S;E(6).2j("4P",E.16.2y.3C.2q);K P},4h:J(){7(E.14.1d)K S;E(6).3w("4P",E.16.2y.3C.2q);K P},2q:J(a){7(I(a,6))K P;18[0].U="3C";K E.16.1v.1i(6,18)}},3B:{4j:J(){7(E.14.1d)K S;E(6).2j("4O",E.16.2y.3B.2q);K P},4h:J(){7(E.14.1d)K S;E(6).3w("4O",E.16.2y.3B.2q);K P},2q:J(a){7(I(a,6))K P!
 ;18[0].U="3B";K E.16.1v.1i(6,18)}}}};E.1n.1s({2j:J(c,a,b){K c=!
 ="4H"?6.
2X(c,a,b):6.R(J(){E.16.1b(6,c,b||a,b&&a)})},2X:J(d,b,c){K 6.R(J(){E.16.1b(6,d,J(a){E(6).3w(a);K(c||b).1i(6,18)},c&&b)})},3w:J(a,b){K 6.R(J(){E.16.1V(6,a,b)})},1N:J(c,a,b){K 6.R(J(){E.16.1N(c,a,6,P,b)})},5n:J(c,a,b){7(6[0])K E.16.1N(c,a,6[0],S,b);K 10},2g:J(){L b=18;K 6.4V(J(a){6.4N=0==6.4N?1:0;a.36();K b[6.4N].1i(6,18)||S})},7D:J(a,b){K 6.2j(\'3C\',a).2j(\'3B\',b)},21:J(a){5M();7(E.2Q)a.1P(T,E);N E.3A.1g(J(){K a.1P(6,E)});K 6}});E.1s({2Q:S,3A:[],21:J(){7(!E.2Q){E.2Q=P;7(E.3A){E.R(E.3A,J(){6.1i(T)});E.3A=V}E(T).5n("21")}}});L x=S;J 5M(){7(x)K;x=P;7(T.3F&&!E.14.2z)T.3F("5W",E.21,S);7(E.14.1d&&1e==3b)(J(){7(E.2Q)K;1S{T.1F.7B("26")}1X(3a){3z(18.3R,0);K}E.21()})();7(E.14.2z)T.3F("5W",J(){7(E.2Q)K;Q(L i=0;i<T.4L.M;i++)7(T.4L[i].2Y){3z(18.3R,0);K}E.21()},S);7(E.14.2d){L a;(J(){7(E.2Q)K;7(T.39!="5V"&&T.39!="1y"){3z(18.3R,0);K}7(a===10)a=E("W, 7a[7A=7z]").M;7(T.4L.M!=a){3z(18.3R,0);K}E.21()})()}E.16.1b(1e,"3U",E.21)}E.R(("7y,7x,3U,7w,5d,4H,4V,7v,"+"7G,7u,7t,4P,4O,7s,2k,"+"58,7K,7q,7p!
 ,3a").23(","),J(i,b){E.1n[b]=J(a){K a?6.2j(b,a):6.1N(b)}});L I=J(a,c){L b=a.4S;2b(b&&b!=c)1S{b=b.1a}1X(3a){b=c}K b==c};E(1e).2j("4H",J(){E("*").1b(T).3w()});E.1n.1s({3U:J(g,d,c){7(E.1q(g))K 6.2j("3U",g);L e=g.1f(" ");7(e>=0){L i=g.2K(e,g.M);g=g.2K(0,e)}c=c||J(){};L f="4Q";7(d)7(E.1q(d)){c=d;d=V}N{d=E.3m(d);f="61"}L h=6;E.3P({1c:g,U:f,1H:"3q",O:d,1y:J(a,b){7(b=="1W"||b=="5U")h.3q(i?E("<1x/>").3t(a.4b.1r(/<1m(.|\\s)*?\\/1m>/g,"")).2s(i):a.4b);h.R(c,[a.4b,b,a])}});K 6},7n:J(){K E.3m(6.5T())},5T:J(){K 6.2c(J(){K E.12(6,"3u")?E.2I(6.7m):6}).1E(J(){K 6.31&&!6.2Y&&(6.3k||/2k|6h/i.17(6.12)||/1u|1Z|3I/i.17(6.U))}).2c(J(i,c){L b=E(6).5O();K b==V?V:b.1k==1M?E.2c(b,J(a,i){K{31:c.31,1A:a}}):{31:c.31,1A:b}}).22()}});E.R("5S,6d,5R,6D,5Q,6m".23(","),J(i,o){E.1n[o]=J(f){K 6.2j(o,f)}});L B=(1B 3v).3L();E.1s({22:J(d,b,a,c){7(E.1q(b)){a=b;b=V}K E.3P({U:"4Q",1c:d,O:b,1W:a,1H:c})},7l:J(b,a){K E.22(b,V,a,"1m")},7k:J(c,b,a){K E.22(c,b,a,"3i")},7i:J(d,b,a,c){7(E.1q(b)){a=b;b={}}K E.3P({U:"61",1c:d,!
 O:b,1W:a,1H:c})},85:J(a){E.1s(E.4I,a)},4I:{2a:P,U:"4Q",2U:0,5P!
 :"4o/x-7
h-3u-7g",5N:P,3l:P,O:V,6p:V,3I:V,49:{3M:"4o/3M, 1u/3M",3q:"1u/3q",1m:"1u/4m, 4o/4m",3i:"4o/3i, 1u/4m",1u:"1u/a7",4G:"*/*"}},4F:{},3P:J(s){L f,2W=/=\\?(&|$)/g,1z,O;s=E.1s(P,s,E.1s(P,{},E.4I,s));7(s.O&&s.5N&&1o s.O!="25")s.O=E.3m(s.O);7(s.1H=="4E"){7(s.U.2h()=="22"){7(!s.1c.1D(2W))s.1c+=(s.1c.1D(/\\?/)?"&":"?")+(s.4E||"7d")+"=?"}N 7(!s.O||!s.O.1D(2W))s.O=(s.O?s.O+"&":"")+(s.4E||"7d")+"=?";s.1H="3i"}7(s.1H=="3i"&&(s.O&&s.O.1D(2W)||s.1c.1D(2W))){f="4E"+B++;7(s.O)s.O=(s.O+"").1r(2W,"="+f+"$1");s.1c=s.1c.1r(2W,"="+f+"$1");s.1H="1m";1e[f]=J(a){O=a;1W();1y();1e[f]=10;1S{2V 1e[f]}1X(e){}7(h)h.34(g)}}7(s.1H=="1m"&&s.1T==V)s.1T=S;7(s.1T===S&&s.U.2h()=="22"){L i=(1B 3v()).3L();L j=s.1c.1r(/(\\?|&)4r=.*?(&|$)/,"$a4="+i+"$2");s.1c=j+((j==s.1c)?(s.1c.1D(/\\?/)?"&":"?")+"4r="+i:"")}7(s.O&&s.U.2h()=="22"){s.1c+=(s.1c.1D(/\\?/)?"&":"?")+s.O;s.O=V}7(s.2a&&!E.5H++)E.16.1N("5S");7((!s.1c.1f("a3")||!s.1c.1f("//"))&&s.1H=="1m"&&s.U.2h()=="22"){L h=T.3S("6f")[0];L g=T.3s("1m");g.3Q=s.1c;7(s.7c)g.a2!
 =s.7c;7(!f){L l=S;g.9Z=g.9Y=J(){7(!l&&(!6.39||6.39=="5V"||6.39=="1y")){l=P;1W();1y();h.34(g)}}}h.38(g);K 10}L m=S;L k=1e.78?1B 78("9X.9V"):1B 76();k.9T(s.U,s.1c,s.3l,s.6p,s.3I);1S{7(s.O)k.4C("9R-9Q",s.5P);7(s.5C)k.4C("9O-5A-9N",E.4F[s.1c]||"9L, 9K 9I 9H 5z:5z:5z 9F");k.4C("X-9C-9A","76");k.4C("9z",s.1H&&s.49[s.1H]?s.49[s.1H]+", */*":s.49.4G)}1X(e){}7(s.6Y)s.6Y(k);7(s.2a)E.16.1N("6m",[k,s]);L c=J(a){7(!m&&k&&(k.39==4||a=="2U")){m=P;7(d){6I(d);d=V}1z=a=="2U"&&"2U"||!E.6X(k)&&"3a"||s.5C&&E.6J(k,s.1c)&&"5U"||"1W";7(1z=="1W"){1S{O=E.6W(k,s.1H)}1X(e){1z="5x"}}7(1z=="1W"){L b;1S{b=k.5q("6U-5A")}1X(e){}7(s.5C&&b)E.4F[s.1c]=b;7(!f)1W()}N E.5v(s,k,1z);1y();7(s.3l)k=V}};7(s.3l){L d=53(c,13);7(s.2U>0)3z(J(){7(k){k.9t();7(!m)c("2U")}},s.2U)}1S{k.9s(s.O)}1X(e){E.5v(s,k,V,e)}7(!s.3l)c();J 1W(){7(s.1W)s.1W(O,1z);7(s.2a)E.16.1N("5Q",[k,s])}J 1y(){7(s.1y)s.1y(k,1z);7(s.2a)E.16.1N("5R",[k,s]);7(s.2a&&!--E.5H)E.16.1N("6d")}K k},5v:J(s,a,b,e){7(s.3a)s.3a(a,b,e);7(s.2a)E.16.1N("6D",[a,s,e])},5H:!
 0,6X:J(r){1S{K!r.1z&&9q.9p=="59:"||(r.1z>=6T&&r.1z<9n)||r.1z==!
 6R||r.1z
==9l||E.14.2d&&r.1z==10}1X(e){}K S},6J:J(a,c){1S{L b=a.5q("6U-5A");K a.1z==6R||b==E.4F[c]||E.14.2d&&a.1z==10}1X(e){}K S},6W:J(r,b){L c=r.5q("9k-U");L d=b=="3M"||!b&&c&&c.1f("3M")>=0;L a=d?r.9j:r.4b;7(d&&a.1F.28=="5x")6Q"5x";7(b=="1m")E.5g(a);7(b=="3i")a=6c("("+a+")");K a},3m:J(a){L s=[];7(a.1k==1M||a.5h)E.R(a,J(){s.1g(3r(6.31)+"="+3r(6.1A))});N Q(L j 1p a)7(a[j]&&a[j].1k==1M)E.R(a[j],J(){s.1g(3r(j)+"="+3r(6))});N s.1g(3r(j)+"="+3r(a[j]));K s.6a("&").1r(/%20/g,"+")}});E.1n.1s({1G:J(c,b){K c?6.2e({1R:"1G",27:"1G",1w:"1G"},c,b):6.1E(":1Z").R(J(){6.W.19=6.5s||"";7(E.1j(6,"19")=="2H"){L a=E("<"+6.28+" />").6y("1h");6.W.19=a.1j("19");7(6.W.19=="2H")6.W.19="3D";a.1V()}}).3h()},1I:J(b,a){K b?6.2e({1R:"1I",27:"1I",1w:"1I"},b,a):6.1E(":4d").R(J(){6.5s=6.5s||E.1j(6,"19");6.W.19="2H"}).3h()},6N:E.1n.2g,2g:J(a,b){K E.1q(a)&&E.1q(b)?6.6N(a,b):a?6.2e({1R:"2g",27:"2g",1w:"2g"},a,b):6.R(J(){E(6)[E(6).3H(":1Z")?"1G":"1I"]()})},9f:J(b,a){K 6.2e({1R:"1G"},b,a)},9d:J(b,a){K 6.2e({1R:"1I"},b,a)},!
 9c:J(b,a){K 6.2e({1R:"2g"},b,a)},9a:J(b,a){K 6.2e({1w:"1G"},b,a)},99:J(b,a){K 6.2e({1w:"1I"},b,a)},97:J(c,a,b){K 6.2e({1w:a},c,b)},2e:J(l,k,j,h){L i=E.6P(k,j,h);K 6[i.2P===S?"R":"2P"](J(){7(6.15!=1)K S;L g=E.1s({},i);L f=E(6).3H(":1Z"),4A=6;Q(L p 1p l){7(l[p]=="1I"&&f||l[p]=="1G"&&!f)K E.1q(g.1y)&&g.1y.1i(6);7(p=="1R"||p=="27"){g.19=E.1j(6,"19");g.32=6.W.32}}7(g.32!=V)6.W.32="1Z";g.40=E.1s({},l);E.R(l,J(c,a){L e=1B E.2t(4A,g,c);7(/2g|1G|1I/.17(a))e[a=="2g"?f?"1G":"1I":a](l);N{L b=a.3X().1D(/^([+-]=)?([\\d+-.]+)(.*)$/),1Y=e.2m(P)||0;7(b){L d=2M(b[2]),2A=b[3]||"2S";7(2A!="2S"){4A.W[c]=(d||1)+2A;1Y=((d||1)/e.2m(P))*1Y;4A.W[c]=1Y+2A}7(b[1])d=((b[1]=="-="?-1:1)*d)+1Y;e.45(1Y,d,2A)}N e.45(1Y,a,"")}});K P})},2P:J(a,b){7(E.1q(a)||(a&&a.1k==1M)){b=a;a="2t"}7(!a||(1o a=="25"&&!b))K A(6[0],a);K 6.R(J(){7(b.1k==1M)A(6,a,b);N{A(6,a).1g(b);7(A(6,a).M==1)b.1i(6)}})},94:J(b,c){L a=E.3G;7(b)6.2P([]);6.R(J(){Q(L i=a.M-1;i>=0;i--)7(a[i].Y==6){7(c)a[i](P);a.72(i,1)}});7(!c)6.5p();K 6}});L A=J(!
 b,c,a){7(!b)K 10;c=c||"2t";L q=E.O(b,c+"2P");7(!q||a)q=E.O(b,c!
 +"2P",a?
E.2I(a):[]);K q};E.1n.5p=J(a){a=a||"2t";K 6.R(J(){L q=A(6,a);q.4l();7(q.M)q[0].1i(6)})};E.1s({6P:J(b,a,c){L d=b&&b.1k==92?b:{1y:c||!c&&a||E.1q(b)&&b,2u:b,3Z:c&&a||a&&a.1k!=91&&a};d.2u=(d.2u&&d.2u.1k==51?d.2u:{90:8Z,9D:6T}[d.2u])||8X;d.5y=d.1y;d.1y=J(){7(d.2P!==S)E(6).5p();7(E.1q(d.5y))d.5y.1i(6)};K d},3Z:{70:J(p,n,b,a){K b+a*p},5j:J(p,n,b,a){K((-24.8V(p*24.8U)/2)+0.5)*a+b}},3G:[],3W:V,2t:J(b,c,a){6.11=c;6.Y=b;6.1l=a;7(!c.47)c.47={}}});E.2t.2l={4y:J(){7(6.11.30)6.11.30.1i(6.Y,[6.2J,6]);(E.2t.30[6.1l]||E.2t.30.4G)(6);7(6.1l=="1R"||6.1l=="27")6.Y.W.19="3D"},2m:J(a){7(6.Y[6.1l]!=V&&6.Y.W[6.1l]==V)K 6.Y[6.1l];L r=2M(E.1j(6.Y,6.1l,a));K r&&r>-8Q?r:2M(E.2o(6.Y,6.1l))||0},45:J(c,b,d){6.5B=(1B 3v()).3L();6.1Y=c;6.3h=b;6.2A=d||6.2A||"2S";6.2J=6.1Y;6.4B=6.4w=0;6.4y();L e=6;J t(a){K e.30(a)}t.Y=6.Y;E.3G.1g(t);7(E.3W==V){E.3W=53(J(){L a=E.3G;Q(L i=0;i<a.M;i++)7(!a[i]())a.72(i--,1);7(!a.M){6I(E.3W);E.3W=V}},13)}},1G:J(){6.11.47[6.1l]=E.1J(6.Y.W,6.1l);6.11.1G=P;6.45(0,6.2m());7(6.1l=="27"|!
 |6.1l=="1R")6.Y.W[6.1l]="8N";E(6.Y).1G()},1I:J(){6.11.47[6.1l]=E.1J(6.Y.W,6.1l);6.11.1I=P;6.45(6.2m(),0)},30:J(a){L t=(1B 3v()).3L();7(a||t>6.11.2u+6.5B){6.2J=6.3h;6.4B=6.4w=1;6.4y();6.11.40[6.1l]=P;L b=P;Q(L i 1p 6.11.40)7(6.11.40[i]!==P)b=S;7(b){7(6.11.19!=V){6.Y.W.32=6.11.32;6.Y.W.19=6.11.19;7(E.1j(6.Y,"19")=="2H")6.Y.W.19="3D"}7(6.11.1I)6.Y.W.19="2H";7(6.11.1I||6.11.1G)Q(L p 1p 6.11.40)E.1J(6.Y.W,p,6.11.47[p])}7(b&&E.1q(6.11.1y))6.11.1y.1i(6.Y);K S}N{L n=t-6.5B;6.4w=n/6.11.2u;6.4B=E.3Z[6.11.3Z||(E.3Z.5j?"5j":"70")](6.4w,n,0,1,6.11.2u);6.2J=6.1Y+((6.3h-6.1Y)*6.4B);6.4y()}K P}};E.2t.30={2v:J(a){a.Y.2v=a.2J},2x:J(a){a.Y.2x=a.2J},1w:J(a){E.1J(a.Y.W,"1w",a.2J)},4G:J(a){a.Y.W[a.1l]=a.2J+a.2A}};E.1n.5L=J(){L b=0,3b=0,Y=6[0],5l;7(Y)8M(E.14){L d=Y.1a,41=Y,1K=Y.1K,1L=Y.2i,5D=2d&&4s(5K)<8J&&!/a1/i.17(v),2T=E.1j(Y,"43")=="2T";7(Y.6G){L c=Y.6G();1b(c.26+24.2f(1L.1F.2v,1L.1h.2v),c.3b+24.2f(1L.1F.2x,1L.1h.2x));1b(-1L.1F.62,-1L.1F.60)}N{1b(Y.5G,Y.5F);2b(1K){1b(1K.5G,1K.5F);7(48&&!/^t(8!
 H|d|h)$/i.17(1K.28)||2d&&!5D)2N(1K);7(!2T&&E.1j(1K,"43")=="2T"!
 )2T=P;41
=/^1h$/i.17(1K.28)?41:1K;1K=1K.1K}2b(d&&d.28&&!/^1h|3q$/i.17(d.28)){7(!/^8G|1O.*$/i.17(E.1j(d,"19")))1b(-d.2v,-d.2x);7(48&&E.1j(d,"32")!="4d")2N(d);d=d.1a}7((5D&&(2T||E.1j(41,"43")=="4W"))||(48&&E.1j(41,"43")!="4W"))1b(-1L.1h.5G,-1L.1h.5F);7(2T)1b(24.2f(1L.1F.2v,1L.1h.2v),24.2f(1L.1F.2x,1L.1h.2x))}5l={3b:3b,26:b}}J 2N(a){1b(E.2o(a,"a8",P),E.2o(a,"a9",P))}J 1b(l,t){b+=4s(l)||0;3b+=4s(t)||0}K 5l}})();',62,631,'||||||this|if||||||||||||||||||||||||||||||||||||||function|return|var|length|else|data|true|for|each|false|document|type|null|style||elem||undefined|options|nodeName||browser|nodeType|event|test|arguments|display|parentNode|add|url|msie|window|indexOf|push|body|apply|css|constructor|prop|script|fn|typeof|in|isFunction|replace|extend|className|text|handle|opacity|div|complete|status|value|new|firstChild|match|filter|documentElement|show|dataType|hide|attr|offsetParent|doc|Array|trigger|table|call|break|height|try|cache|tbody|remove|success|catch|start|hidden||ready|get|s!
 plit|Math|string|left|width|tagName|ret|global|while|map|safari|animate|max|toggle|toLowerCase|ownerDocument|bind|select|prototype|cur||curCSS|selected|handler|done|find|fx|duration|scrollLeft|id|scrollTop|special|opera|unit|nextSibling|stack|guid|toUpperCase|pushStack|button|none|makeArray|now|slice|target|parseFloat|border|exec|queue|isReady|events|px|fixed|timeout|delete|jsre|one|disabled|nth|step|name|overflow|inArray|removeChild|removeData|preventDefault|merge|appendChild|readyState|error|top|which|innerHTML|multiFilter|rl|trim|end|json|first|checked|async|param|elems|insertBefore|childNodes|html|encodeURIComponent|createElement|append|form|Date|unbind|color|grep|setTimeout|readyList|mouseleave|mouseenter|block|isXMLDoc|addEventListener|timers|is|password|last|runtimeStyle|getTime|xml|jQuery|domManip|ajax|src|callee|getElementsByTagName|selectedIndex|load|object|timerId|toString|has|easing|curAnim|offsetChild|args|position|stopPropagation|custom|props|orig|mozilla|acce!
 pts|clean|responseText|defaultView|visible|String|charCode|flo!
 at|teard
own|on|setup|nodeIndex|shift|javascript|currentStyle|application|child|RegExp|_|parseInt|previousSibling|dir|tr|state|empty|update|getAttribute|self|pos|setRequestHeader|input|jsonp|lastModified|_default|unload|ajaxSettings|unshift|getComputedStyle|styleSheets|getPropertyValue|lastToggle|mouseout|mouseover|GET|andSelf|relatedTarget|init|visibility|click|absolute|index|container|fix|outline|Number|removeAttribute|setInterval|prevObject|classFilter|not|unique|submit|file|after|windowData|deep|scroll|client|triggered|globalEval|jquery|sibling|swing|clone|results|wrapAll|triggerHandler|lastChild|dequeue|getResponseHeader|createTextNode|oldblock|checkbox|radio|handleError|fromElement|parsererror|old|00|Modified|startTime|ifModified|safari2|getWH|offsetTop|offsetLeft|active|values|getElementById|version|offset|bindReady|processData|val|contentType|ajaxSuccess|ajaxComplete|ajaxStart|serializeArray|notmodified|loaded|DOMContentLoaded|Width|ctrlKey|keyCode|clientTop|POST|clientLeft|c!
 lientX|pageX|exclusive|detachEvent|removeEventListener|swap|cloneNode|join|attachEvent|eval|ajaxStop|substr|head|parse|textarea|reset|image|zoom|odd|ajaxSend|even|before|username|prepend|expr|quickClass|uuid|quickID|quickChild|continue|textContent|appendTo|contents|evalScript|parent|defaultValue|ajaxError|setArray|compatMode|getBoundingClientRect|styleFloat|clearInterval|httpNotModified|nodeValue|100|alpha|_toggle|href|speed|throw|304|replaceWith|200|Last|colgroup|httpData|httpSuccess|beforeSend|eq|linear|concat|splice|fieldset|multiple|cssFloat|XMLHttpRequest|webkit|ActiveXObject|CSS1Compat|link|metaKey|scriptCharset|callback|col|pixelLeft|urlencoded|www|post|hasClass|getJSON|getScript|elements|serialize|black|keyup|keypress|solid|change|mousemove|mouseup|dblclick|resize|focus|blur|stylesheet|rel|doScroll|round|hover|padding|offsetHeight|mousedown|offsetWidth|Bottom|Top|keydown|clientY|Right|pageY|Left|toElement|srcElement|cancelBubble|returnValue|charAt|0n|substring|anima!
 ted|header|noConflict|line|enabled|innerText|contains|only|wei!
 ght|ajax
Setup|font|size|gt|lt|uFFFF|u0128|417|Boolean|inner|Height|toggleClass|removeClass|addClass|removeAttr|replaceAll|insertAfter|prependTo|contentWindow|contentDocument|wrap|iframe|children|siblings|prevAll|nextAll|prev|wrapInner|next|parents|maxLength|maxlength|readOnly|readonly|reverse|class|htmlFor|inline|able|boxModel|522|setData|compatible|with|1px|ie|getData|10000|ra|it|rv|PI|cos|userAgent|400|navigator|600|slow|Function|Object|array|stop|ig|NaN|fadeTo|option|fadeOut|fadeIn|setAttribute|slideToggle|slideUp|changed|slideDown|be|can|property|responseXML|content|1223|getAttributeNode|300|method|protocol|location|action|send|abort|cssText|th|td|cap|specified|Accept|With|colg|Requested|fast|tfoot|GMT|thead|1970|Jan|attributes|01|Thu|leg|Since|If|opt|Type|Content|embed|open|area|XMLHTTP|hr|Microsoft|onreadystatechange|onload|meta|adobeair|charset|http|1_|img|br|plain|borderLeftWidth|borderTopWidth|abbr'.split('|'),0,{}))
\ No newline at end of file

Added: trunk/demos/ec2-ui/src/main/webapp/js/m2lwst.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/m2lwst.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/m2lwst.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,292 @@
+//-- Market2Lead Inc. Website Tagging
+
+var _m2lTracker = 
+{
+    // On Demand Settings
+    tenantId : null,       // Tenant Id
+    tenantCode : null,     // Tenant Code
+    pageName : null,       // The Alias Name for the Page. Defaults to window title
+    campaignCode : null,   // The Code of the Campaign for which the page belongs
+    programCode : null,    // The Code of the Program for which the page belongs
+    category : [],         // Categories
+
+    // Internal Settings, But still can be configured by the user.
+    _detectFlash:1,	    // set flash version detect option (1=on|0=off)
+    _detectTitle:1,     // set the document title detect option (1=on|0=off)
+    _detectAnchor:0,	// enable use of anchors for campaign (1=on|0=off)
+    _supportHttps:1,    // set the https protocol support (1=on|0=off)
+
+    _md: document,
+    _wstImg : 'wst.gif',
+
+    /**
+     * The Main track function, which will track the Website Statistics by 
+     * loading an Image and passing query parameters for that image.
+     */
+    track: function(){
+
+        this._init();
+        if (this.tenantCode == null) {
+            this._log("tenantCode is missing for Tracking");
+            return;
+        }
+
+        if(this._md.location == 'file:') return;
+
+        var tenConfig = {
+            'ti': this.tenantId,
+            'tc': this.tenantCode,
+            'page': this.pageName,
+            'cc': this.campaignCode,
+            'pc': this.programCode,
+            'c1': this.category1,
+            'ct' : this.category,
+            'rnd' : Math.round(Math.random()*2147483647)
+        }
+        var bInfo = this._browserInfo();
+        var pInfo = this._pageInfo();
+        
+        var qryStr = this._toQueryString(tenConfig, bInfo, pInfo);
+        var imgUrl = this.wtBaseUrl + '/' + this._wstImg;
+
+        var trkImg = new Image(1,1);
+        trkImg.src = imgUrl + "?" + qryStr;
+        //trkImg.onload=function() { this._mVoid(); }        
+    },
+
+
+    /**
+     * Converts the given JSON arguments into a Query String
+     * 
+     * @param {JSON} The JSON Objects which contains Query Parameters
+     *               n Number of JSON Objects can be passed.
+     * 
+     * @return {String} Query String i.e created from the JSON Objects
+     */
+    _toQueryString : function(){         
+         var query = ""
+         var args = arguments;
+
+         if(!args && args.length > 0) return query;
+
+         // Last Argument is Key 
+         var current_index = null;
+         if(typeof(args[args.length-1]) == 'string') {
+             current_index = args[args.length-1];
+         }
+             
+         var params = new Array();
+         for(var i = 0; i < args.length; i++) 
+         {
+             if( typeof(args[i]) == 'object') {
+                 for(key in args[i]) 
+                 {
+                     var data = args[i][key];
+                     var key_value = key;
+                     if(current_index) {
+                         key_value = current_index+"["+key+"]"
+                     }
+
+                     if(data == null)  continue;
+
+                     if(typeof(data) == 'object') {
+                         /**
+                            06/20/2008 - Commented out (Neelesh).  
+                            For some sites, this was causing the query string to become very long
+                            and the logging was failing 
+                            params.push(this._toQueryString(data, key_value));
+                         */                    	 
+                    	 // ref bug#6835 (Vamsi)
+                    	 if (key == 'ct')
+                    		 params.push(this._toQueryString(data, key_value));
+                     }
+                     else{
+                         /*
+                          * If the data is a function, dont add it.
+                          * if a customer is including some javascript that extends base javascript objects
+                          * like arrays, this can get appended to the URL. To avoid that we check for the
+                          * type of data. Neelesh 02/09
+                          */
+                         if (typeof(data) != 'function')
+                            params.push(key_value+"="+this._encode(data));
+                     }                         
+                 }
+             }
+         }
+         query = params.join("&");
+         return query;
+    },
+
+    /**
+     * Returns an JSON object which contains the Browser Information.
+     * 
+     * @return {JSON} Object cotaining the Browser Information, 
+     *          JSON Object Properties
+     *          bsr - Screen Resolution
+     *          bsc - Screen Color
+     *          bl  - Browser Language
+     *          bje - Is Java Enabled ?
+     *          bfv - Flash Version
+     *          bcs - Charset
+     */
+    _browserInfo : function(){
+         var sr="-",sc="-",bl="-",fl="-",cs="-",je=1;
+         var n=navigator;
+         if (self.screen) {
+             sr=screen.width+"x"+screen.height;
+             sc=screen.colorDepth+"-bit";
+         } else if (self.java) {
+             var j=java.awt.Toolkit.getDefaultToolkit();
+             var s=j.getScreenSize();
+             sr=s.width+"x"+s.height;
+         }
+
+         if (n.language) { 
+             bl = n.language.toLowerCase(); 
+         }  else if (n.browserLanguage) { 
+             bl = n.browserLanguage.toLowerCase(); 
+         }
+
+         je = n.javaEnabled()?1:0;
+         fl = this._flash();
+
+         if (this._md.characterSet) {
+             cs = this._encode(this._md.characterSet);
+         }             
+         else if (this._md.charset) {
+             cs = this._encode(this._md.charset);
+         }            
+
+         var brInfo = {
+             "bsr":sr, 
+             "bsc":sc,
+             "bl":bl,
+             "bje":je, 
+             "bfv":fl, 
+             "bcs":cs
+         };
+         return brInfo;        
+    },
+
+    /**
+     * Returns an JSON object which contains the Page Information.
+     * 
+     * @return {JSON} Object cotaining the Page Information
+     *         JSON Object Properties
+     *          pr  - Page Referer
+     *          pl  - Page Location
+     *          pp  - Page Protocol
+     *          plh - Page Location Hash
+     *          pt  - Page Title
+     *          pqs - Page Query String
+     */
+    _pageInfo: function(){
+
+         pl = this._md.location;
+
+         _pr = this._md.referrer;
+         _pl = this._md.location.href;
+         _pp = pl.protocol;
+         _plh = pl.href.substring(pl.href.indexOf('#'));
+         _pt = this._encode(this._md.title);
+         _pqs = this._encode(this._md.location.search);
+         
+         var pageInfo = {
+             'pr' : _pr,           
+             'pl' : _pl,
+             'pp' : _pp,
+             'plh': _plh,
+             'pt' : _pt,
+             'pqs' : _pqs
+         }
+         return pageInfo;
+    },
+
+    /**
+     * Returns Flash Version of the Browser
+     * 
+     * @return The Browsers Flash Version
+     */
+    _flash:  function () {
+         var f="-",n=navigator;
+         if (n.plugins && n.plugins.length) {
+             for (var ii=0;ii<n.plugins.length;ii++) {
+                 if (n.plugins[ii].name.indexOf('Shockwave Flash')!=-1) {
+                     f=n.plugins[ii].description.split('Shockwave Flash ')[1];
+                     break;
+                 }
+             }
+         }
+         else if (window.ActiveXObject) {
+             for (var ii=10;ii>=2;ii--) {
+                 try {
+                     var fl=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');");
+                     if (fl) { 
+                        f=ii + '.0'; 
+                        break; 
+                     }
+                 }
+                 catch(e) {}
+             }
+         }
+         return f;
+    },
+
+    /**
+     * Encodes the given String
+     * 
+     * @param {String} The String that has to be Encoded
+     * 
+     * @return {String} Encoded String
+     */
+    _encode: function (s,u) {
+         if (typeof(encodeURIComponent) == 'function') {
+             if (u) 
+                 return encodeURI(s);
+             else 
+                 return encodeURIComponent(s);
+         } 
+         else {
+             return escape(s);
+         }
+    },
+
+    /**
+     * Decodes the given String
+     * 
+     * @param {String} The String that has to be Decoded
+     * 
+     * @return {String} Decoded String
+     */
+    _decode : function (s) {
+         if (typeof(decodeURIComponent) == 'function') {
+             return decodeURIComponent(s);
+         } else {
+             return unescape(s);
+         }
+    },
+
+    _mVoid : function(){
+         return;
+    },
+
+    _log: function(msg){
+         alert(msg);
+    },
+
+
+    _init: function(){
+
+         if(document.getElementById("m2lwst")) {
+             var scriptSrc = document.getElementById("m2lwst").src;
+             if(scriptSrc) {
+                 var lastIndex = scriptSrc.lastIndexOf("/");
+                 this.wtBaseUrl = scriptSrc.substring(0,lastIndex);
+             }
+         }
+
+         if(!this.wtBaseUrl) {
+             this.wtBaseUrl = 'http://m2l.market2lead.com/wt';
+         }
+    }
+}

Added: trunk/demos/ec2-ui/src/main/webapp/js/modal.html
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/modal.html	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/modal.html	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,570 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/><meta content="all" name="robots"/><meta content="no-cache" http-equiv="cache-control"/><meta content="no-cache" http-equiv="pragma"/><link href="/theme/favicon.ico" rel="Shortcut Icon"/><title>Not Found - JBoss Community</title><script src="/docroot/siteDesigner/js/functions.js" type="text/javascript"></script><script src="/docroot/siteDesigner/js/form.js" type="text/javascript"></script>
+   <script type="text/javascript" src="http://www.jboss.org/theme/js/magnolia/jquery.js"> 
+</script> <script type="text/javascript" src="http://www.jboss.org/theme/js/magnolia/jquery.blockUI.js"> 
+</script> <script type="text/javascript" src="http://www.jboss.org/theme/js/magnolia/jqModal.js"> </script> 
+<script type="text/javascript" src="http://www.jboss.org/theme/js/magnolia/search.js"> </script> 
+<script type="text/javascript" src="http://www.jboss.org/theme/js/magnolia/jquery-1.2.6.min.js"> </script> 
+<script type="text/javascript" src="http://www.jboss.org/theme/js/magnolia/hoverIntent.js"> </script> 
+<script type="text/javascript" src="http://www.jboss.org/theme/js/magnolia/superfish.js"> </script> 
+<script type="text/javascript" src="http://www.jboss.org/theme/js/magnolia/jquery.bgiframe.min.js"> </script> 
+<script type="text/javascript" src="http://www.jboss.org/theme/js/magnolia/slimbox2.js"> </script> 
+<!--[if lt IE 7]> 	<script type="text/javascript" src="http://www.jboss.org/theme/js/magnolia/maxWidthFixForIE6.js"></script> 
+<![endif]-->  <script type="text/javascript" src="http://www.jboss.org/theme/js/magnolia/modaldialog.js"> </script>
+
+<script type="text/javascript">
+        // initialise Superfish 
+        $(document).ready(function() { 
+            $('ul.sf-menu').superfish({ 
+                delay:       300,                            // one second delay on mouseout 
+                animation:   {opacity:'show',height:'show'},  // fade-in and slide-down animation 
+                speed:       'fast',                          // faster animation speed 
+                autoArrows:  false,                           // disable generation of arrow mark-up 
+                dropShadows: false                            // disable drop shadows 
+            }); 
+        }); 
+       </script><style type="text/css">
+      @import "/notfound.css";
+      @import "/notfound.nav";
+    </style><link type="text/css" rel="stylesheet" href="/docroot/jbossorg/css/magnolia/modal.css"/></head><body id="" onload=""><a name="mgnlTop"></a><div style="position:absolute;top:0px;left:0px;width:5%;padding:0px;margin:0px;"><div style="position:relative;height:28px;"></div></div><div id="container"><div id="ORGheader">
+<h1><a href="/">JBoss Community</a></h1>
+  <!-- Primary Navigation -->
+  <div id="primarynav">
+    <ul class="sf-menu">
+      <li id="primary-nav-home"> <a class="menu-title sf-with-ul" href="/">Home</a>
+        <ul class="level1">
+        <span>
+        <li class="leaf"><a id="primary-nav-home-community" href="/community">Community</a></li>
+        <li class="leaf"><a id="primary-nav-home-user-groups" href="/usergroups">User Groups</a></li>
+        <li class="leaf"><a id="primary-nav-home-events" href="/events">Events</a></li>
+        <li class="leaf"><a id="primary-nav-home-feeds" href="/feeds">Blogs</a></li>
+        <li class="leaf"><a id="primary-nav-home-articles" href="http://www.dzone.com/mz/jboss">Articles</a></li>
+        <li class="leaf"><a id="primary-nav-home-books" href="/books">Books</a></li>       
+        <li class="leaf"><a id="primary-nav-home-help" href="/help">Help</a></li>
+</span>
+        </ul>
+      </li>
+      <li id="primary-nav-members"> <a class="menu-title" href="/community/people">Members</a>
+        <ul class="level1">
+            <span>
+        <li class="leaf"><a id="primary-nav-members-contributor" href="/contributor">Become a contributor</a></li>
+        <li class="leaf"><a id="primary-nav-members-new-members" href="/community/people?sort=creationDate&amp;showDisabledUsers=false&amp;showExternalUsers=false&amp;resultTypes=COMMUNITY&amp;start=0&amp;onlineOnly=false&amp;recentlyAddedOnly=true">Recently joined</a></li>
+        <li class="leaf"><a id="primary-nav-members-developers" href="/community/groups/developers">Developers</a></li>
+        <li class="leaf"><a id="primary-nav-members-testers" href="/community/groups/testers">Testers</a></li>
+        <li class="leaf"><a id="primary-nav-members-writers" href="/community/groups/writers">Writers</a></li>
+        <li class="leaf"><a id="primary-nav-members-speakers" href="/community/groups/speakers">Speakers</a></li>
+        <li class="leaf"><a id="primary-nav-members-groups" href="/community/groups">Groups</a></li>
+</span>
+        </ul>
+      </li>
+      <li id="primary-nav-projects"> <a class="menu-title sf-with-ul" href="/projects">Projects</a>
+        <ul class="level1">
+        <span>
+        <li class="leaf"><a id="primary-nav-projects-matrix" href="/projects/matrix">Index</a></li>
+        <li class="open"><a id="primary-nav-projects-web-interface" class="sf-with-ul unlinked">Web Interface</a>                
+          <ul class="level2">
+            <li class="open"><a id="primary-nav-projects-jbossportal" class="sf-with-ul" href="/jbossportal">Portal</a>
+              <ul>
+                <li class="leaf"><a id="primary-nav-projects-portlet-bridge" href="/portletbridge">Portlet Bridge</a></li>
+                <li class="leaf"><a id="primary-nav-projects-portlet-container" href="/portletcontainer">Portlet Container</a></li>     
+              </ul>
+            </li>
+            <li class="leaf"><a id="primary-nav-projects-richfaces" href="/jbossrichfaces">RichFaces</a></li>
+            <li class="leaf"><a id="primary-nav-projects-gravel" href="/gravel">Gravel</a></li>
+          </ul>
+        </li>        
+        <li class="open"><a id="primary-nav-projects-programming-model" class="sf-with-ul unlinked">Programming Model</a>
+          <ul class="level2">
+            <li class="leaf"><a id="primary-nav-projects-seam" href="http://seamframework.org/">Seam</a></li>
+            <li class="leaf"><a id="primary-nav-projects-resteasy" href="/resteasy">RESTEasy</a></li>
+            <li class="leaf"><a id="primary-nav-projects-railo" href="http://www.getrailo.org/">Railo</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossaop" href="/jbossaop">AOP</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossejb3" href="/jbossejb3">EJB3</a></li>
+            <li class="leaf"><a id="primary-nav-projects-esb" href="/jbossesb">ESB</a></li>           
+            <li class="leaf"><a id="primary-nav-projects-web-beans" href="http://seamframework.org/WebBeans">Web Beans</a></li>
+            <li class="leaf"><a id="primary-nav-projects-torquebox" href="http://torquebox.org/">TorqueBox</a></li>
+          </ul>
+        </li>
+        <li class="open"><a id="primary-nav-projects-services" class="sf-with-ul unlinked">Services</a>
+          <ul class="level2">
+            <li class="open"><a id="primary-nav-projects-hibernate" class="sf-with-ul" href="http://www.hibernate.org">Hibernate</a>
+              <ul>
+                <li class="leaf"><a id="primary-nav-projects-hibernate-core" href="http://core.hibernate.org">Core</a></li>
+                <li class="leaf"><a id="primary-nav-projects-hibernate-annotations" href="http://annotations.hibernate.org">Annotations</a></li>
+                <li class="leaf"><a id="primary-nav-projects-hibernate-entity-manager" href="http://entitymanager.hibernate.org">Entity Manager</a></li>
+                <li class="leaf"><a id="primary-nav-projects-hibernate-shards" href="http://shards.hibernate.org">Shards</a></li>
+                <li class="leaf"><a id="primary-nav-projects-hibernate-validator" href="http://validator.hibernate.org">Validator</a></li>
+                <li class="leaf"><a id="primary-nav-projects-hibernate-search" href="http://search.hibernate.org">Search</a></li>
+                <li class="leaf"><a id="primary-nav-projects-hibernate-envers" href="/envers">Envers</a></li>
+                <li class="leaf"><a id="primary-nav-projects-hibernate-tools" href="http://tools.hibernate.org">Tools</a></li>
+              </ul>
+            </li>
+            <li class="leaf"><a id="primary-nav-projects-jbossjbpm" href="/jbossjbpm">jBPM</a></li>
+            <li class="leaf"><a id="primary-nav-projects-drools" href="/drools">Drools</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jgroups" href="http://www.jgroups.org/">JGroups</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossiiop" href="/jbossiiop">IIOP</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jdcom" href="/jdcom">jDCOM</a></li>
+            <li class="leaf"><a id="primary-nav-projects-blacktie" href="/blacktie">Blacktie</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbosstm" href="/jbosstm">Transactions</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossmessaging" href="/jbossmessaging">Messaging</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossws" href="/jbossws">Web Services</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossremoting" href="/jbossremoting">Remoting</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbosscache" href="/jbosscache">Cache</a></li>
+            <li class="leaf"><a id="primary-nav-projects-infinispan" href="/infinispan">Infinispan</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossclustering" href="/jbossclustering">Clustering</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbosssecurity" href="/jbosssecurity">Security</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossidentity" href="/jbossidentity">Identity</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbosssso" href="/jbosssso">Federated SSO</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossmarshalling" href="/jbossmarshalling">Marshalling</a></li>
+            <li class="leaf"><a id="primary-nav-projects-serialization" href="/serialization">Serialization</a></li>
+            <li class="leaf"><a id="primary-nav-projects-rhmessaging" href="/rhmessaging">Red Hat Messaging</a></li>
+          </ul>
+        </li>
+        <li class="open"><a id="primary-nav-projects-servers" class="sf-with-ul unlinked">Servers</a>
+          <ul class="level2">
+            <li class="open"><a id="primary-nav-projects-mobicents" class="sf-with-ul" href="http://www.mobicents.org">Mobicents</a>
+              <ul>
+                <li class="leaf"><a id="primary-nav-projects-mobicents-jainslee" href="http://www.mobicents.org/products_jain_slee.html">JAIN SLEE</a></li>
+                <li class="leaf"><a id="primary-nav-projects-mobicents-sipservlets" href="http://www.mobicents.org/products_sip_servlets.html">Sip Servlets</a></li>
+                <li class="leaf"><a id="primary-nav-projects-mobicents-media" href="http://www.mobicents.org/products_media_server.html">Media</a></li>
+                <li class="leaf"><a id="primary-nav-projects-mobicents-sippresence" href="http://www.jboss.org/mobicents">SIP Presence</a></li>
+                <li class="leaf"><a id="primary-nav-projects-mobicents-diameter" href="http://www.jboss.org/mobicents">Diameter</a></li>
+              </ul>
+            </li>
+            <li class="leaf"><a id="primary-nav-projects-teiid" href="/teiid">Teiid</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossmc" href="/jbossmc">Microcontainer</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossweb" href="/jbossweb">Web</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossas" href="/jbossas">Application Server</a></li>
+          </ul>
+        </li>
+        <li class="open"><a id="primary-nav-projects-management" class="sf-with-ul unlinked">Management</a>
+          <ul class="level2">
+            <li class="leaf"><a id="primary-nav-projects-jopr" href="/jopr">Jopr</a></li>
+            <li class="leaf"><a id="primary-nav-projects-embjopr" href="/embjopr">Embedded Jopr</a></li>
+            <li class="leaf"><a id="primary-nav-projects-dna" href="/dna">DNA</a></li>
+            <li class="leaf"><a id="primary-nav-projects-overlord" href="/overlord">Overlord</a></li>
+            <li class="leaf"><a id="primary-nav-projects-guvnor" href="/guvnor">Guvnor</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossjmx" href="/jbossjmx">JMX</a></li>
+          </ul>
+        </li>
+        <li class="open"><a id="primary-nav-projects-tools" class="sf-with-ul unlinked">Tools</a>
+          <ul class="level2">
+            <li class="leaf"><a id="primary-nav-projects-teiiddesigner" href="/teiiddesigner">Teiid Designer</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jsfunit" href="/jsfunit">JSFUnit</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jrunit" href="/jrunit">JRunit</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbosstools" href="/tools">Tools</a></li>
+            <li class="leaf"><a id="primary-nav-projects-mass" href="/mass">Mass</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossprofiler" href="/jbossprofiler">Profiler</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbossdtf" href="/jbossdtf">Distributed Test Framework</a></li>
+            <li class="leaf"><a id="primary-nav-projects-tattletale" href="/tattletale">Tattletale</a></li>
+          </ul>
+        </li>
+        <li class="open"><a id="primary-nav-projects-other" class="sf-with-ul unlinked">Other</a>
+          <ul class="level2">
+            <li class="open"><a id="primary-nav-projects-maven-plugins" class="sf-with-ul unlinked">Maven Plugins</a>
+              <ul>
+                <li class="leaf"><a id="primary-nav-projects-jdocbook" href="/maven-jdocbook-plugin">jdocbook</a></li>
+                <li class="leaf"><a id="primary-nav-projects-jdocbook-style" href="/maven-jdocbook-style-plugin">jdocbook-style</a></li>
+                <li class="leaf"><a id="primary-nav-projects-retro-plugin" href="/maven-jboss-retro-plugin">jboss-retro</a></li>
+                <li class="leaf"><a id="primary-nav-projects-deploy-plugin" href="/maven-jboss-deploy-plugin">jboss-deploy</a></li>
+                <li class="leaf"><a id="primary-nav-projects-buildmagic-thirdparty" href="/maven-buildmagic-thirdparty-plugin">buildmagic-thirdparty</a></li>
+              </ul>
+            </li>
+            <li class="open"><a id="primary-nav-projects-portlets" class="sf-with-ul unlinked">Portlets</a>
+              <ul>
+                <li class="leaf"><a id="primary-nav-projects-jbossforums" href="/jbossforums">Forums</a></li>
+                <li class="leaf"><a id="primary-nav-projects-jbosswiki" href="/jbosswiki">Wiki</a></li>
+                <li class="leaf"><a id="primary-nav-projects-jbossblog" href="/jbossblog">Blog</a></li>
+                <li class="leaf"><a id="primary-nav-projects-portletswap" href="/portletswap">Portlet Swap</a></li>
+              </ul>
+            </li>            
+            <li class="leaf"><a id="primary-nav-projects-mod-cluster" href="/mod_cluster">mod_cluster</a></li>
+            <li class="leaf"><a id="primary-nav-projects-xnio" href="/xnio">XNIO</a></li>
+            <li class="leaf"><a id="primary-nav-projects-netty" href="/netty">Netty</a></li>
+            <li class="leaf"><a id="primary-nav-projects-javassist" href="/javassist">Javassist</a></li>
+            <li class="leaf"><a id="primary-nav-projects-wise" href="/wise">Wise</a></li>
+            <li class="leaf"><a id="primary-nav-projects-apiviz" href="/apiviz">APIviz</a></li>           
+            <li class="leaf"><a id="primary-nav-projects-kosmos" href="/kosmos">Kosmos</a></li>
+            <li class="leaf"><a id="primary-nav-projects-jbosscommon" href="/jboss-common">Common</a></li> 
+            <li class="leaf"><a id="primary-nav-projects-jbossretro" href="/jbossretro">Retro</a></li>
+          </ul>
+        </li>
+        <li class="open"><a id="primary-nav-projects-archive" class="sf-with-ul unlinked">Archive</a>
+          <ul class="level2">
+            <li class="leaf"><a id="primary-nav-projects-shotoku" href="/shotoku">Shotoku</a></li>
+            <li class="leaf"><a id="primary-nav-projects-davcache" href="/davcache">DavCache</a></li>
+            <li class="leaf"><a id="primary-nav-projects-reportingservices" href="/reportingservices">Reporting Services</a></li>
+            <li class="leaf"><a id="primary-nav-projects-metajizer" href="/metajizer">Metajizer</a></li>
+          </ul>
+        </li>
+</span>
+
+        </ul>
+      </li>
+      <li class="enterprise"> <a class="menu-title" href="http://www.jboss.com/products">Products</a>
+        <ul class="level1">
+        <span>
+        <li class="open"><a class="sf-with-ul unlinked">Enterprise Platforms</a>
+          <ul class="level2">
+            <li class="leaf"><a href="http://www.jboss.com/products/platforms/application">Application Platform</a></li>
+            <li class="leaf"><a href="http://www.jboss.com/products/platforms/communications">Communications Platform</a></li>
+            <li class="leaf"><a href="http://www.jboss.com/products/platforms/portals">Portal Platform</a></li>
+            <li class="leaf"><a href="http://www.jboss.com/products/platforms/soa">SOA Platform</a></li>
+            <li class="leaf"><a href="http://www.jboss.com/products/platforms/dataservices">Data Services Platform</a></li>
+          </ul>
+        </li>
+        <li class="open"><a class="sf-with-ul unlinked">Enterprise Frameworks</a>
+          <ul class="level2">
+            <li class="leaf"><a href="http://www.jboss.com/products/hibernate">JBoss Hibernate</a></li>
+            <li class="leaf"><a href="http://www.jboss.com/products/seam">JBoss Seam</a></li>
+            <li class="leaf"><a href="http://www.jboss.com/products/jbpm">JBoss jBPM</a></li>
+            <li class="leaf"><a href="http://www.jboss.com/products/rules">JBoss Rules</a></li>
+          </ul>
+        </li>
+        <li class="open"><a class="sf-with-ul unlinked">Management</a>
+          <ul class="level2">
+            <li class="leaf"><a href="http://www.jboss.com/products/jbosson">Operations Network</a></li>
+          </ul>
+        </li>
+        <li class="open"><a class="sf-with-ul unlinked">Development Tools</a>
+          <ul class="level2">
+            <li class="leaf"><a href="http://www.jboss.com/products/devstudio">Developer Studio</a></li>
+          </ul>
+        </li>
+        <li class="leaf"><a href="http://www.jboss.com/downloads/">Downloads</a></li>
+</span>
+        </ul>
+      </li>
+    </ul>
+  </div><!-- END of primarynav -->
+  <!-- Utility controls -->
+<div id='utilitynav' style="vertical-align: top">
+
+  <form class="nomargin" id="TopSearch" action="" onSubmit="" method="GET" >
+    <input type="hidden" id="searchArea" name="searchArea" value="" />
+    <input type="hidden" id="as_sitesearch" name="as_sitesearch" value="jboss.org" />
+    <ul>
+      
+      
+      <li><a href="https://www.jboss.org/community/login.jspa">Login</a> | </li>
+      
+      <li><a href="/index.html?op=checkage&module=user">Register</a> | </li>
+      <li id="storelink"><a href="/coolstuff">Cool Stuff</a></li>
+      <li id="search-field">
+        <input 
+                            style="width:146px; height:13px;" 
+                            id="q" 
+                            name="q" 
+                            type="text" 
+                            onFocus="this.value= (this.value=='Search Project Pages' || this.value=='Search the Community') ? '' : this.value" 
+                            onBlur="this.value= (this.value=='') ? 'Search the site' : (this.value; setSelected();)" 
+                            onmouseover="dropdownmenu(this, event, search, '150px')" 
+                            onmouseout="delayhidemenu()"
+                            onkeydown="submitonEnter(event);"
+                            value="Search the Community" />
+        <input 
+                            style="width:16px; height:16px;" 
+                            type="image" 
+                            value="go" 
+                            src="http://www.jboss.org/theme/images/common/ico_searcharrow.png" 
+                            align="middle"  />
+      </li>
+    </ul>
+  </form>
+</div>
+
+</div><!-- END of ORGheader -->
+
+
+<!-- ORG header javascript -->
+<script type="text/javascript">
+/* <![CDATA[ */
+/** Function highlight menu item */
+function setMenuItemActive(navitemId) {
+  if (navitemId == "primary-nav-home-overview" 
+   || navitemId == "primary-nav-members-overview" 
+   || navitemId == "primary-nav-projects-overview") {
+    // overview item has been removed from menu.
+    return;
+  }
+  
+  navItem = document.getElementById(navitemId);
+  if (navItem != null) {
+    navItem.className = "current";
+  }
+}
+/** Function highlight sub menu item */
+function setSubmenuItemActive(navitemId) {
+  var sub_div=document.getElementById("sub_nav");
+  if (sub_div == null) { return; }
+
+  var uls = sub_div. getElementsByTagName("ul");
+  if (uls == null) { return; }
+  
+  var ul = uls.item(0);
+  if (ul != null) {
+    var items = sub_div.getElementsByTagName("li");
+    for ( var i = 0; i < items.length; i++) {
+      var item = items.item(i);
+      var anchors = item.getElementsByTagName("a");
+      
+      if (anchors.length <= 0) { continue; }
+
+      var anchor = anchors.item(0);
+      
+      if (anchor.id == navitemId) {
+        item.className = "current";
+        return;
+      }
+    }
+  }
+}
+
+/** Array of menu items */
+var items = new Array();
+var itemsCount = 0;
+
+// template - new Array("what url contains", "tab name", "item");
+items[itemsCount++] = new Array("/overview", "home", "overview");
+items[itemsCount++] = new Array("/usergroups", "home", "user-groups");
+items[itemsCount++] = new Array("/events", "home", "events");
+items[itemsCount++] = new Array("/feeds", "home", "feeds");
+items[itemsCount++] = new Array("dzone.com/mz/jboss", "home", "articles");
+items[itemsCount++] = new Array("/books", "home", "books");
+items[itemsCount++] = new Array("/help", "home", "help");
+
+items[itemsCount++] = new Array("/contributor", "members", "contributor");
+
+items[itemsCount++] = new Array("/projects/matrix", "projects", "matrix");
+items[itemsCount++] = new Array("/projects", "projects", "overview");
+
+/** 
+ * Array of project menu items - it's different array due to performance optimalization
+ * When menu item is founded in "items" array then projects array is not touched.
+ */
+var projects = new Array();
+var projectsCount = 0;
+
+// template - new Array("what url contains", "item", "array of items that also should be highlighted");
+
+// Web Interface
+projects[projectsCount++] = new Array("/jbossportal", "jbossportal", new Array("web-interface"));
+projects[projectsCount++] = new Array("/portletbridge", "portlet-bridge", new Array("web-interface", "jbossportal"));
+projects[projectsCount++] = new Array("/portletcontainer", "portlet-container", new Array("web-interface", "jbossportal"));
+projects[projectsCount++] = new Array("/jbossrichfaces", "richfaces", new Array("web-interface"));
+projects[projectsCount++] = new Array("/gravel", "gravel", new Array("web-interface"));
+
+// Programming Model
+projects[projectsCount++] = new Array("seamframework.org", "seam", new Array("programming-model"));
+projects[projectsCount++] = new Array("/resteasy", "resteasy", new Array("programming-model"));
+projects[projectsCount++] = new Array("/railo", "railo", new Array("programming-model"));
+projects[projectsCount++] = new Array("/jbossaop", "jbossaop", new Array("programming-model"));
+projects[projectsCount++] = new Array("/jbossejb3", "jbossejb3", new Array("programming-model"));
+projects[projectsCount++] = new Array("/jbossesb", "esb", new Array("programming-model"));
+projects[projectsCount++] = new Array("seamframework.org/WebBeans", "web-beans", new Array("programming-model"));
+projects[projectsCount++] = new Array("torquebox.org", "torquebox", new Array("programming-model"));
+
+// Services
+projects[projectsCount++] = new Array("core.hibernate.org", "hibernate-core", new Array("services", "hibernate"));
+projects[projectsCount++] = new Array("annotations.hibernate.org", "hibernate-annotations", new Array("services", "hibernate"));
+projects[projectsCount++] = new Array("entitymanager.hibernate.org", "hibernate-entity-manager", new Array("services", "hibernate"));
+projects[projectsCount++] = new Array("shards.hibernate.org", "hibernate-shards", new Array("services", "hibernate"));
+projects[projectsCount++] = new Array("validator.hibernate.org", "hibernate-validator", new Array("services", "hibernate"));
+projects[projectsCount++] = new Array("search.hibernate.org", "hibernate-search", new Array("services", "hibernate"));
+projects[projectsCount++] = new Array("/envers", "hibernate-envers", new Array("services", "hibernate"));
+projects[projectsCount++] = new Array("tools.hibernate.org", "hibernate-tools", new Array("services", "hibernate"));
+
+projects[projectsCount++] = new Array("/jbossjbpm", "jbossjbpm", new Array("services"));
+projects[projectsCount++] = new Array("/drools", "drools", new Array("services"));
+projects[projectsCount++] = new Array("www.jgroups.org", "jgroups", new Array("services"));
+projects[projectsCount++] = new Array("/jbossiiop", "jbossiiop", new Array("services"));
+projects[projectsCount++] = new Array("/jdcom", "jdcom", new Array("services"));
+projects[projectsCount++] = new Array("/blacktie", "blacktie", new Array("services"));
+projects[projectsCount++] = new Array("/jbosstm", "jbosstm", new Array("services"));
+projects[projectsCount++] = new Array("/jbossmessaging", "jbossmessaging", new Array("services"));
+projects[projectsCount++] = new Array("/jbossws", "jbossws", new Array("services"));
+projects[projectsCount++] = new Array("/jbossremoting", "jbossremoting", new Array("services"));
+projects[projectsCount++] = new Array("/jbosscache", "jbosscache", new Array("services"));
+projects[projectsCount++] = new Array("/infinispan", "infinispan", new Array("services"));
+projects[projectsCount++] = new Array("/jbossclustering", "jbossclustering", new Array("services"));
+projects[projectsCount++] = new Array("/jbosssecurity", "jbosssecurity", new Array("services"));
+projects[projectsCount++] = new Array("/jbossidentity", "jbossidentity", new Array("services"));
+projects[projectsCount++] = new Array("/jbosssso", "jbosssso", new Array("services"));
+projects[projectsCount++] = new Array("/jbossmarshalling", "jbossmarshalling", new Array("services"));
+projects[projectsCount++] = new Array("/serialization", "serialization", new Array("services"));
+projects[projectsCount++] = new Array("/rhmessaging", "rhmessaging", new Array("services"));
+
+// Teiid Designer page has to be before Teiid page for string matching to work
+projects[projectsCount++] = new Array("/teiiddesigner", "teiiddesigner", new Array("tools"));
+
+// Servers
+projects[projectsCount++] = new Array("www.mobicents.org/products_jain_slee", "jainslee", new Array("services", "mobicents"));
+projects[projectsCount++] = new Array("www.mobicents.org/products_sip_servlets", "sipservlets", new Array("services", "mobicents"));
+projects[projectsCount++] = new Array("www.mobicents.org/products_media_server", "media", new Array("services", "mobicents"));
+projects[projectsCount++] = new Array("www.mobicents.org", "sippresence", new Array("services", "mobicents"));
+projects[projectsCount++] = new Array("www.mobicents.org", "diameter", new Array("services", "mobicents"));
+
+projects[projectsCount++] = new Array("/teiid", "teiid", new Array("servers"));
+projects[projectsCount++] = new Array("/jbossmc", "jbossmc", new Array("servers"));
+projects[projectsCount++] = new Array("/jbossweb", "jbossweb", new Array("servers"));
+projects[projectsCount++] = new Array("/jbossas", "jbossas", new Array("servers"));
+
+// Management
+projects[projectsCount++] = new Array("/jopr", "jopr", new Array("management"));
+projects[projectsCount++] = new Array("/embjopr", "embjopr", new Array("management"));
+projects[projectsCount++] = new Array("/dna", "dna", new Array("management"));
+projects[projectsCount++] = new Array("/overlord", "overlord", new Array("management"));
+projects[projectsCount++] = new Array("/guvnor", "guvnor", new Array("management"));
+projects[projectsCount++] = new Array("/jbossjmx", "jbossjmx", new Array("management"));
+
+// Tools
+projects[projectsCount++] = new Array("/jsfunit", "jsfunit", new Array("tools"));
+projects[projectsCount++] = new Array("/jrunit", "jrunit", new Array("tools"));
+projects[projectsCount++] = new Array("/tools", "jbosstools", new Array("tools"));
+projects[projectsCount++] = new Array("/mass", "mass", new Array("tools"));
+projects[projectsCount++] = new Array("/jbossprofiler", "jbossprofiler", new Array("tools"));
+projects[projectsCount++] = new Array("/jbossdtf", "jbossdtf", new Array("tools"));
+projects[projectsCount++] = new Array("/tattletale", "tattletale", new Array("tools"));
+
+// Other
+projects[projectsCount++] = new Array("/maven-jdocbook-plugin", "jdocbook", new Array("other", "maven-plugins"));
+projects[projectsCount++] = new Array("/maven-jdocbook-style-plugin", "jdocbook-style", new Array("other", "maven-plugins"));
+projects[projectsCount++] = new Array("/maven-jboss-retro-plugin", "retro-plugin", new Array("other", "maven-plugins"));
+projects[projectsCount++] = new Array("/maven-jboss-deploy-plugin", "deploy-plugin", new Array("other", "maven-plugins"));
+projects[projectsCount++] = new Array("/maven-buildmagic-thirdparty-plugin", "buildmagic-thirdparty", new Array("other", "maven-plugins"));
+
+projects[projectsCount++] = new Array("/jbossforums", "jbossforums", new Array("other", "portlets"));
+projects[projectsCount++] = new Array("/jbosswiki", "jbosswiki", new Array("other", "portlets"));
+projects[projectsCount++] = new Array("/jbossblog", "jbossblog", new Array("other", "portlets"));
+projects[projectsCount++] = new Array("/portletswap", "portletswap", new Array("other", "portlets"));
+
+projects[projectsCount++] = new Array("/mod_cluster", "mod-cluster", new Array("other"));
+projects[projectsCount++] = new Array("/xnio", "xnio", new Array("other"));
+projects[projectsCount++] = new Array("/netty", "netty", new Array("other"));
+projects[projectsCount++] = new Array("/javassist", "javassist", new Array("other"));
+projects[projectsCount++] = new Array("/wise", "wise", new Array("other"));
+projects[projectsCount++] = new Array("/apiviz", "apiviz", new Array("other"));
+projects[projectsCount++] = new Array("/kosmos", "kosmos", new Array("other"));
+projects[projectsCount++] = new Array("/jboss-common", "jbosscommon", new Array("other"));
+projects[projectsCount++] = new Array("/jbossretro", "jbossretro", new Array("other"));
+
+// Archive
+projects[projectsCount++] = new Array("/shotoku", "shotoku", new Array("archive"));
+projects[projectsCount++] = new Array("/davcache", "davcache", new Array("archive"));
+projects[projectsCount++] = new Array("/reportingservices", "reportingservices", new Array("archive"));
+projects[projectsCount++] = new Array("/metajizer", "metajizer", new Array("archive"));
+
+// Overview - it must be last !!! we have i.e. /projects/jbossas page
+projects[projectsCount++] = new Array("/projects", "overview", null);
+
+// Highlight the relevant tab and dropdown item/s depending on the URL
+function setupPrimaryMenuItemActive() {
+  var url = window.location.pathname;
+
+  // Handle the root URL
+  if (url == null || url == "/" || url == "") {
+    setMenuItemActive("primary-nav-home-overview");
+    setMenuItemActive("primary-nav-home");
+    setSubmenuItemActive("primary-nav-home-overview");
+    return;
+  }
+
+  // Ensure project pages highligting (/projects and /projects/matrix)
+  if ( (url.indexOf("/projects") != -1) && (url.indexOf("/projects/matrix") == -1) ) {
+    setMenuItemActive("primary-nav-projects");
+    setSubmenuItemActive("primary-nav-home-overview");
+  }
+ 
+  // Iterate through items in the Home, Members, and Projects tabs (except for the projects) 
+  var selectedItem = null;
+  for (var i = 0; i < items.length; i++) {
+    if (url.indexOf(items[i][0]) != -1) {
+      selectedItem = items[i];
+      break;
+    }
+  }
+  if (selectedItem != null) {
+    setMenuItemActive("primary-nav-" + selectedItem[1] + "-" +  selectedItem[2]);
+    setMenuItemActive("primary-nav-" + selectedItem[1]);
+    setSubmenuItemActive("primary-nav-" + selectedItem[1] + "-" +  selectedItem[2]);
+    return;
+  }
+
+  // Iterate through projects
+  var wholeUrl = window.location.href;
+  selectedItem = null;
+  for (var i = 0; i < projects.length; i++) {
+    if (wholeUrl.indexOf(projects[i][0]) != -1) {
+      selectedItem = projects[i];
+      break;
+    }
+  }
+  if (selectedItem != null) {
+    setMenuItemActive("primary-nav-projects" + "-" +  selectedItem[1]);
+    setMenuItemActive("primary-nav-projects");
+    if (selectedItem[2] != null) {
+      subitems=selectedItem[2];
+      for (var j = 0; j < subitems.length; j++) {
+        setMenuItemActive("primary-nav-projects" + "-" +  subitems[j]);
+      }
+    }
+    return;
+  }
+
+}
+
+setupPrimaryMenuItemActive();
+
+/* ]]> */
+</script>
+
+<!-- END of ORG header javascript -->
+<div id="contentcontainer"><div id="container_grey"><table width="945" class="contentTable" cellspacing="0" cellpadding="0" border="0"><tr id="main-contentwrapper"><td valign="top" style="background-color: #${mainColumnBackgroundColor}; padding-left:30px;padding-right:30px;padding-bottom:2px;" align="left" width="945" class="mainColumn-noright"><div id="main-main_content"><div id="commonContent">
+			<h3>
+Sorry, the page you're looking for cannot be found.</h3>
+<h6> Please use the Search box in the header to check that the information isn't located somewhere else.   </h6> <div class="page-space">&nbsp;</div>
+		</div><div style="clear:both;"></div></div></td></tr><tr><td colspan="1"><div id="one-col-corners"/></td></tr><tr><td align="left" width="945" colspan="1">
+			<div id="subnav_footer"> <ul>  </ul> </div>
+		<div style="clear:both;"></div></td></tr></table></div><div class="footer">
+  <p>
+    <a href="/about.html">About Us</a>   |   
+    <a href="/contact.html">Contact Us</a>   |   
+    <a href="http://www.redhat.com/about/careers">Careers</a>   |   
+    <a href="http://www.jboss.com/">JBoss Enterprise</a>   |   
+    <a href="http://www.redhat.com/">Red Hat</a>  
+  </p>
+  <p>Powered by 
+    <a href="http://www.magnolia-cms.com">Magnolia</a>,  
+    <a href="http://www.jivesoftware.com/poweredby/">Clearspace</a>,  
+    <a href="http://www.jboss.com/products/platforms/application">JBoss EAP</a>, and 
+    <a href="http://www.redhat.com/rhel/">RHEL</a>.
+  </p>
+</div></div></div>
+
+<!-- SiteCatalyst code version: H.1.
+ Copyright 1997-2005 Omniture, Inc. More info available at
+ http://www.omniture.com sec -->
+<div id="oTags">
+<!-- // **************************** CHANGE PAT BELOW TO YOUR SERVERS PATH -->
+<script type="text/javascript" src="http://www.redhat.com/j/s_code.js"></script>
+<script><!--
+ /* You may give each page an identifying name, server, and channel on
+ the next lines. */
+/* E-commerce Variables */
+
+ /************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
+var s_code=s.t();if(s_code)document.write(s_code)//--></script>
+
+<script type="text/javascript"><!--
+if(navigator.appVersion.indexOf('MSIE')>=0)document.write(unescape('%3C')+'\!-'+'-')
+//--></script><noscript><img
+src="https://smtrcs.redhat.com/b/ss/redhatjbossorg,redhatglobal/1/H.2--NS/0"
+height="1" width="1" border="0" alt="" /></noscript><!--/DO NOT REMOVE/-->
+</div>
+
+<!-- End SiteCatalyst code version: H.1. -->
+<script src="https://inquiries.redhat.com/wt/m2lwst.js" id="m2lwst"/><script language="javascript">
+_m2lTracker.tenantId ='108';
+_m2lTracker.tenantCode ='redhat';
+_m2lTracker.category['1']='jboss.org';
+_m2lTracker.track();
+</script></body></html>
\ No newline at end of file

Added: trunk/demos/ec2-ui/src/main/webapp/js/modaldialog.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/modaldialog.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/modaldialog.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,283 @@
+///// downloads box implementation /////
+
+var HEADER = "Reminder";
+var TEXT_1 = "Community projects represent the latest development releases and are ";
+var UNDERLINED_1 = "not"; 
+var TEXT_1a = " supported.";
+var TEXT_2 = "If you're looking for fully supported, certified, enterprise middleware try ";
+var LINKTEXT_1 = "JBoss Enterprise Middleware";
+var TEXT_2a = " products. \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0";
+var DETAILS = "Show Details";
+
+var ENTERPRISE_LINK = "http://www.jboss.com/products";
+var DETAILS_LINK = "http://www.jboss.com/products/community-enterprise/";
+
+//var TEXT_3 = ".";
+//var TEXT_4 = "Please note that Red Hat ";
+//var BOLD_1 = "does not";
+//var TEXT_5 = " provide support for this software but ";
+//var BOLD_2 = "does";
+//var TEXT_6 = "  offer fully-supported, enterprise ready solutions based on it. For more details see ";
+
+var JBOSSCOM = "Show Details";
+//var TEXT_7 = ".";
+var CONTINUE = "Continue Download";
+//var MORE_INFO = "More Info...";
+var CANCEL = "Cancel Download";
+
+//var JBOSSCOM_LINK = "http://www.jboss.com";
+//var FORUMS_LINK = "http://www.jboss.com/index.html?module=bb";
+//
+//var FORUMS = "FORUMS FORUMS FORUMS";
+
+function turnOnModal(downloadAnhor) {
+
+   tkOnModal();
+
+   createDownloadsBox(downloadAnhor.href);
+}
+
+// Based upon http://slayeroffice.com/code/custom_alert
+function createDownloadsBox(url) {
+
+	// if the modallayer object already exists in the DOM, bail out.
+	if(document.getElementById("modallayer")) return;
+
+	// create the modallayer div as a child of the BODY element
+	var mObj = document.getElementsByTagName("body")[0].appendChild(document.createElement("div"));
+	mObj.id = "modallayer";
+	 // make sure its as tall as it needs to be to overlay all the content on the page
+	mObj.style.height = document.documentElement.scrollHeight + "px";
+
+	// create the DIV that will be the alert
+	var alertObj = mObj.appendChild(document.createElement("div"));
+	alertObj.id = "dialog";
+	// MSIE doesnt treat position:fixed correctly, so this compensates for positioning the alert
+	if(document.all && !window.opera) alertObj.style.top = document.documentElement.scrollTop + "px";
+	// center the alert box
+	alertObj.style.left = (document.documentElement.scrollWidth - alertObj.offsetWidth)/2 + "px";
+
+   var div = alertObj.appendChild(document.createElement("div"));
+
+   var h = div.appendChild(document.createElement("h4"));
+   h.appendChild(document.createTextNode(HEADER));
+
+   var p1 = div.appendChild(document.createElement("p"));
+   p1.style.fontWeight = "bold";
+   p1.appendChild(document.createTextNode(TEXT_1));
+   var u1 = document.createElement("u");
+   u1.appendChild(document.createTextNode(UNDERLINED_1));
+   p1.appendChild(u1);
+   p1.appendChild(document.createTextNode(TEXT_1a));
+   
+   var p2 = div.appendChild(document.createElement("p"));
+   p2.appendChild(document.createTextNode(TEXT_2));
+
+   var a = p2.appendChild(document.createElement("a"));
+   a.appendChild(document.createTextNode(LINKTEXT_1));
+   a.href = ENTERPRISE_LINK;
+   a.onclick = function() { turnOffModal();tkForums();return true; } ;
+   
+   p2.appendChild(document.createTextNode(TEXT_2a));
+
+   var a2 = p2.appendChild(document.createElement("a"));
+   a2.appendChild(document.createTextNode(DETAILS));
+   a2.href = DETAILS_LINK;
+   a2.onclick = function() { turnOffModal();tkJBossCom();return true; } ;
+
+//   var p3 = div.appendChild(document.createElement("p"));
+//   p3.appendChild(document.createTextNode(TEXT_4));
+//
+//   var b = p3.appendChild(document.createElement("b"));
+//   b.appendChild(document.createTextNode(BOLD_1));
+//
+//   p3.appendChild(document.createTextNode(TEXT_5));
+//   
+//   var b2 = p3.appendChild(document.createElement("b"));
+//   b2.appendChild(document.createTextNode(BOLD_2));
+//
+//   p3.appendChild(document.createTextNode(TEXT_6));
+//
+//
+//   p3.appendChild(document.createTextNode(TEXT_7));
+
+   var btnrow = alertObj.appendChild(document.createElement("div"));
+   btnrow.id = "buttonrow";
+
+   var ul = btnrow.appendChild(document.createElement("ul"));
+
+   ul.appendChild(createLi(CONTINUE, "continue", url, function() { turnOffModal();tkContinue();return true; } ));
+   //   ul.appendChild(createLi(MORE_INFO, "", ENTERPRISE_LINK, function() { turnOffModal();tkMoreInfo();return true; } ));
+   ul.appendChild(createLi(CANCEL, "cancel", "#", function() { turnOffModal();tkCancel();return false; }));
+
+}
+
+function createLi(text, id, url, onclick) {
+
+   var li = document.createElement("li");
+
+   var a = li.appendChild(document.createElement("a"));
+   a.appendChild(document.createTextNode(text));
+   a.className = "hrefbuttons";
+   a.onclick = onclick;
+   a.href = url;
+   a.id = id;
+
+   return li;
+}
+
+function turnOffModal() {
+
+   document.getElementsByTagName("body")[0].removeChild(document.getElementById("modallayer"));
+}
+
+///// tracking /////
+
+function tk(suffix) {
+
+   // Google Analytics
+   //pageTracker._trackPageview(location.pathname + "/" + suffix);
+
+   // Omniture SiteCatalyst
+   s.pageName = location.pathname + "/" + suffix;
+   void(s.t());
+}
+
+function tkOnModal() {
+  tk("open");
+}
+
+function tkCancel() {
+  tk("cancel");
+}
+
+function tkContinue() {
+  tk("continue");
+}
+
+function tkMoreInfo() {
+  tk("moreinfo");
+}
+
+function tkForums() {
+  tk("forums");
+}
+
+function tkJBossCom() {
+  tk("jbosscom");
+}
+
+///// initailization /////
+
+function init() {
+
+   var elements = getElementsByStyleClass("rowline");
+
+   for (var e = 0; e < elements.length; e++) {
+
+      var children = elements[e].childNodes;
+      for (var c = 0; c < children.length; c++) {
+         var child = children[c];
+         if ((child != null) && (((child.nodeName == "A") || (child.nodeName == "a"))
+                          && (child.firstChild != null)
+                          && (child.firstChild.nodeValue != null)
+                          && (child.firstChild.nodeValue.toLowerCase().indexOf("download") != -1))) {
+            child.onclick = function() { turnOnModal(this); return false; };
+         }
+      }
+   }
+}
+
+function getElementsByStyleClass (className) {
+  var all = document.all ? document.all :
+    document.getElementsByTagName('*');
+  var elements = new Array();
+  for (var e = 0; e < all.length; e++)
+    if ((all[e].className != null) && (all[e].className.indexOf(className) != -1)) {
+      elements[elements.length] = all[e];
+    }
+  return elements;
+}
+
+// menu appendices
+function addJiraLink(jiralink) {
+	// if no link is provided, do nothing
+	if (jiralink==null || jiralink=='') return;
+	// if item already exists, do nothing
+	if (document.getElementById("jiralinkitem")) return;
+	// else
+    var myLI = document.getElementById("issuetrackermenu"); 
+    var children = myLI.childNodes;
+
+    var jira = document.createElement("li");
+    jira.className = "leaf";
+    jira.id = "jiralinkitem"
+    var link = jira.appendChild(document.createElement("a"));
+    link.href = jiralink;
+    link.appendChild(document.createTextNode("JIRA"));
+
+    var myUL = document.createElement("ul");
+    myUL.className = "level1";
+    myUL.appendChild(jira);
+    
+    for (var c=0; c < children.length; c++) {
+      var child = children[c];
+      if (child!=null && (child.nodeName == 'ul' || child.nodeName == 'UL')) {
+        var itms = child.childNodes;
+        var itmsnum = itms.length;
+
+        for (var i=0; i < itmsnum; ) {
+          myUL.appendChild(itms[0]);
+          i++;
+        }
+        
+        myLI.replaceChild(myUL, child);
+      } else {
+    	myLI.appendChild(myUL);  
+      }
+    }
+}
+
+function addHudsonLink(hudsonlink) {
+	// if no link is provided, do nothing
+	if (hudsonlink==null || hudsonlink=='') return;
+	// if item already exists, do nothing
+	if (document.getElementById("hudsonlinkitem")) return;
+	// else
+    var myLI = document.getElementById("buildmenu"); 
+    var children = myLI.childNodes;
+
+    var hudson = document.createElement("li");
+    hudson.className = "leaf";
+    hudson.id = "hudsonlinkitem"
+    var link = hudson.appendChild(document.createElement("a"));
+    link.href = hudsonlink;
+    link.appendChild(document.createTextNode("Hudson"));
+
+    var myUL = document.createElement("ul");
+    myUL.className = "level1";
+    myUL.appendChild(hudson);
+
+    for (var c=0; c < children.length; c++) {
+      var child = children[c];
+
+      
+      if (child!=null && (child.nodeName == 'ul' || child.nodeName == 'UL')) {
+        var itms = child.childNodes;
+        var itmsnum = itms.length;
+        
+        for (var i=0; i < itmsnum; ) {
+          myUL.appendChild(itms[0]);
+          i++;
+        }
+        
+        myLI.replaceChild(myUL, child);
+      } else {
+    	myLI.appendChild(myUL);  
+      }
+    }
+}
+
+
+// Trigger initialization at startup
+init();

Added: trunk/demos/ec2-ui/src/main/webapp/js/s_code.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/s_code.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/s_code.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,336 @@
+/* SiteCatalyst code version: H.1.
+Copyright 1997-2005 Omniture, Inc. More info available at
+http://www.omniture.com */
+/************************ ADDITIONAL FEATURES ************************
+     Dynamic Account Selection
+*/
+/* Specify the Report Suite ID(s) to track here */
+var s_account="redhatglobaltest,redhatdev"
+var s=s_gi(s_account)
+/************************** CONFIG SECTION **************************/
+/* You may add or alter any code config here. */
+s.dynamicAccountSelection=true
+s.dynamicAccountList="redhatglobal,redhatmobicent=mobicents.org;redhatglobal,redhatcom=redhatmagazine.com;redhatglobal,redhatrhx=rhx.redhat.com;redhatglobal,redhatjboss=jboss.com;redhatglobal,redhatjbossorg=jboss.org;redhatglobaltest,redhatdev=stage.rhb.hosted.redhat.com;redhatglobaltest,redhatdev=stage.rhs.hosted.redhat.com;redhatglobaltest,redhatdev=news.stage.rhs.hosted.redhat.com;redhatglobaltest,redhatqa=webqa.redhat.com;redhatglobaltest,redhatqa=qa.redhat.com;redhatglobaltest,redhatdev=webeng.redhat.com;redhatglobaltest,redhatdev=search.cspserver5.app.dev.redhat.com;redhatglobaltest,redhatqa=kbserver1.webqa-colo.redhat.com;redhatglobaltest,redhatstage=stage.redhat.com;redhatglobal,redhatcom=redhat.com"
+
+s.dynamicAccountMatch=window.location.host+window.location.pathname
+/* Link Tracking Config */
+s.trackDownloadLinks=true
+s.trackExternalLinks=true
+s.trackInlineStats=true
+s.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mpg,avi,wmv,doc,pdf,xls,ogg,rm,ram,swf,flv,jar"
+s.linkInternalFilters="javascript:,redhat.com,redhatmagazine.com,europe.redhat.com,cz.redhat.com,de.redhat.com,redhat.de,redhat.es,es.redhat.com,redhat.fr,fr.redhat.com,europe.redhat.com,redhat.it,it.redhat.com,redhat.com.cn,cn.redhat.com,kr.redhat.com,latam.redhat.com,redhat.com.br,br.redhat.com,latam.redhat.com,redhat.com.au,apac.redhat.com,redhat.in,in.redhat.com,jboss.org,jboss.com,mobicents.org"
+s.linkLeaveQueryString=false
+s.linkTrackVars="None"
+s.linkTrackEvents="None"
+
+/* WARNING: Changing the visitor namespace will cause drastic changes
+to how your visitor data is collected.  Changes should only be made
+when instructed to do so by your account manager.*/
+s.visitorNamespace="redhat"
+
+/* Plugin Config */
+s.usePlugins=true
+function s_doPlugins(s) {
+	/* Add calls to plugins here */
+	/* External Campaign Tracking */
+	if(!s.campaign)
+		s.campaign=s.getQueryParamNC('sc_cid');
+	/* Internal Campaign Tracking */
+	if(!s.eVar1)
+		s.eVar1=s.getQueryParamNC('intcmp');
+
+        s.setCookieParam('rh_omni_tc',(s.getQueryParamNC('s_kwcid')) ? s.getQueryParamNC('s_kwcid') : s.getQueryParamNC('sc_cid'),1,365);
+
+        s.setCookieParam('rh_omni_itc',s.getQueryParamNC('intcmp'),1,365);
+
+        if(!s.c_r('rh_omni_tc') && !s.campaign) {
+          var chk_ref = document.referrer;
+          s.campaign = (chk_ref) ? '70160000000H4AoAAK' : '70160000000H4AjAAK';
+          s.setCookieParam('rh_omni_tc',s.campaign,1,365);
+        }
+
+        if(s.c_r('rh_omni_tc') == '70160000000H4Aj' && !s.campaign) {
+          var chk_ref = document.referrer;
+          s.campaign = '70160000000H4AjAAK';
+          s.setCookieParam('rh_omni_tc',s.campaign,1,365);
+        }
+
+        if(s.c_r('rh_omni_tc') == '70160000000H4Ao' && !s.campaign) {
+          var chk_ref = document.referrer;
+          s.campaign = '70160000000H4AoAAK';
+          s.setCookieParam('rh_omni_tc',s.campaign,1,365);
+        }
+
+
+}
+s.doPlugins=s_doPlugins
+/************************** PLUGINS SECTION *************************/
+/* You may insert any plugins you wish to use here.                 */
+
+/*
+ * Plugin: setCookieParam 0.2 -
+ */
+s.setCookieParam=new Function("c","v","x","t",""
++"var s=this,cr,d;cr=s.c_r(c);if(cr&&!x){s.c_w(c,cr);return cr};"
++"if(!t){d='';}else{d=new Date;d.setTime(d.getTime()+(t*24*60*60"
++"*1000));};if(v){s.c_w(c,v,d)};return v;");
+
+/*
+ * Plugin: getQueryParam 1.3 - Return query string parameter values
+ */
+s.getQueryParam=new Function("qp","d",""
++"var s=this,v='',i,t;d=d?d:'';while(qp){i=qp.indexOf(',');i=i<0?qp.l"
++"ength:i;t=s.gcgi(qp.substring(0,i));if(t)v+=v?d+t:t;qp=qp.substring"
++"(i==qp.length?i:i+1)}return v");
+s.gcgi=new Function("k",""
++"var v='',s=this;if(k&&s.wd.location.search){var q=s.wd.location.sea"
++"rch.toLowerCase(),qq=q.indexOf('?');q=qq<0?q:q.substring(qq+1);v=s."
++"pt(q,'&','cgif',k.toLowerCase())}return v");
+s.cgif=new Function("t","k",""
++"if(t){var s=this,i=t.indexOf('='),sk=i<0?t:t.substring(0,i),sv=i<0?"
++"'True':t.substring(i+1);if(sk.toLowerCase()==k)return s.epa(sv)}ret"
++"urn ''");
+
+/*
+ *PLUGIN: getQueryParamNC 0.1 - do not lowercase
+ */
+
+s.getQueryParamNC=new Function("p","d","u",""
++"var s=this,v='',i,t;d=d?d:'';u=u?u:(s.pageURL?s.pageURL:''+s.wd.loc"
++"ation);u=u=='f'?''+s.gtfs().location:u;while(p){i=p.indexOf(',');i="
++"i<0?p.length:i;t=s.p_gpv_nc(p.substring(0,i),u);if(t)v+=v?d+t:t;p=p.su"
++"bstring(i==p.length?i:i+1)}return v");
+s.p_gpv_nc=new Function("k","u",""
++"var s=this,v='',i=u.indexOf('?'),q;if(k&&i>-1){q=u.substring(i+1);v"
++"=s.pt(q,'&','p_gvf_nc',k)}return v");
+s.p_gvf_nc=new Function("t","k",""
++"if(t){var s=this,i=t.indexOf('='),p=i<0?t:t.substring(0,i),v=i<0?'T"
++"rue':t.substring(i+1);if(p==k)return s."
++"epa(v)}return ''");
+
+/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
+var s_objectID;function s_c2fe(f){var x='',s=0,e,a,b,c;while(1){e=
+f.indexOf('"',s);b=f.indexOf('\\',s);c=f.indexOf("\n",s);if(e<0||(b>=
+0&&b<e))e=b;if(e<0||(c>=0&&c<e))e=c;if(e>=0){x+=(e>s?f.substring(s,e):
+'')+(e==c?'\\n':'\\'+f.substring(e,e+1));s=e+1}else return x
++f.substring(s)}return f}function s_c2fa(f){var s=f.indexOf('(')+1,e=
+f.indexOf(')'),a='',c;while(s>=0&&s<e){c=f.substring(s,s+1);if(c==',')
+a+='","';else if(("\n\r\t ").indexOf(c)<0)a+=c;s++}return a?'"'+a+'"':
+a}function s_c2f(cc){cc=''+cc;var fc='var f=new Function(',s=
+cc.indexOf(';',cc.indexOf('{')),e=cc.lastIndexOf('}'),o,a,d,q,c,f,h,x
+fc+=s_c2fa(cc)+',"var s=new Object;';c=cc.substring(s+1,e);s=
+c.indexOf('function');while(s>=0){d=1;q='';x=0;f=c.substring(s);a=
+s_c2fa(f);e=o=c.indexOf('{',s);e++;while(d>0){h=c.substring(e,e+1);if(
+q){if(h==q&&!x)q='';if(h=='\\')x=x?0:1;else x=0}else{if(h=='"'||h=="'"
+)q=h;if(h=='{')d++;if(h=='}')d--}if(d>0)e++}c=c.substring(0,s)
++'new Function('+(a?a+',':'')+'"'+s_c2fe(c.substring(o+1,e))+'")'
++c.substring(e+1);s=c.indexOf('function')}fc+=s_c2fe(c)+';return s");'
+eval(fc);return f}function s_gi(un,pg,ss){var c="function s_c(un,pg,s"
++"s){var s=this;s.wd=window;if(!s.wd.s_c_in){s.wd.s_c_il=new Array;s."
++"wd.s_c_in=0;}s._il=s.wd.s_c_il;s._in=s.wd.s_c_in;s._il[s._in]=s;s.w"
++"d.s_c_in++;s.m=function(m){return (''+m).indexOf('{')<0};s.fl=funct"
++"ion(x,l){return x?(''+x).substring(0,l):x};s.co=function(o){if(!o)r"
++"eturn o;var n=new Object,x;for(x in o)if(x.indexOf('select')<0&&x.i"
++"ndexOf('filter')<0)n[x]=o[x];return n};s.num=function(x){x=''+x;for"
++"(var p=0;p<x.length;p++)if(('0123456789').indexOf(x.substring(p,p+1"
++"))<0)return 0;return 1};s.rep=function(x,o,n){var i=x.indexOf(o),l="
++"n.length>0?n.length:1;while(x&&i>=0){x=x.substring(0,i)+n+x.substri"
++"ng(i+o.length);i=x.indexOf(o,i+l)}return x};s.ape=function(x){var s"
++"=this,i;x=x?s.rep(escape(''+x),'+','%2B'):x;if(x&&s.charSet&&s.em=="
++"1&&x.indexOf('%u')<0&&x.indexOf('%U')<0){i=x.indexOf('%');while(i>="
++"0){i++;if(('89ABCDEFabcdef').indexOf(x.substring(i,i+1))>=0)return "
++"x.substring(0,i)+'u00'+x.substring(i);i=x.indexOf('%',i)}}return x}"
++";s.epa=function(x){var s=this;return x?unescape(s.rep(''+x,'+',' ')"
++"):x};s.pt=function(x,d,f,a){var s=this,t=x,z=0,y,r;while(t){y=t.ind"
++"exOf(d);y=y<0?t.length:y;t=t.substring(0,y);r=s.m(f)?s[f](t,a):f(t,"
++"a);if(r)return r;z+=y+d.length;t=x.substring(z,x.length);t=z<x.leng"
++"th?t:''}return ''};s.isf=function(t,a){var c=a.indexOf(':');if(c>=0"
++")a=a.substring(0,c);if(t.substring(0,2)=='s_')t=t.substring(2);retu"
++"rn (t!=''&&t==a)};s.fsf=function(t,a){var s=this;if(s.pt(a,',','isf"
++"',t))s.fsg+=(s.fsg!=''?',':'')+t;return 0};s.fs=function(x,f){var s"
++"=this;s.fsg='';s.pt(x,',','fsf',f);return s.fsg};s.c_d='';s.c_gdf=f"
++"unction(t,a){var s=this;if(!s.num(t))return 1;return 0};s.c_gd=func"
++"tion(){var s=this,d=s.wd.location.hostname,n=s.cookieDomainPeriods,"
++"p;if(d&&!s.c_d){n=n?parseInt(n):2;n=n>2?n:2;p=d.lastIndexOf('.');wh"
++"ile(p>=0&&n>1){p=d.lastIndexOf('.',p-1);n--}s.c_d=p>0&&s.pt(d,'.','"
++"c_gdf',0)?d.substring(p):''}return s.c_d};s.c_r=function(k){var s=t"
++"his;k=s.ape(k);var c=' '+s.d.cookie,i=c.indexOf(' '+k+'='),e=i<0?i:"
++"c.indexOf(';',i),v=i<0?'':s.epa(c.substring(i+2+k.length,e<0?c.leng"
++"th:e));return v!='[[B]]'?v:''};s.c_w=function(k,v,e){var s=this,d=s"
++".c_gd(),l=s.cookieLifetime,t;v=''+v;l=l?(''+l).toUpperCase():'';if("
++"e&&l!='SESSION'&&l!='NONE'){t=(v!=''?parseInt(l?l:0):-60);if(t){e=n"
++"ew Date;e.setTime(e.getTime()+(t*1000))}}if(k&&l!='NONE'){s.d.cooki"
++"e=k+'='+s.ape(v!=''?v:'[[B]]')+'; path=/;'+(e&&l!='SESSION'?' expir"
++"es='+e.toGMTString()+';':'')+(d?' domain='+d+';':'');return s.c_r(k"
++")==v}return 0};s.eh=function(o,e,r,f){var s=this,b='s_'+e+'_'+s._in"
++",n=-1,l,i,x;if(!s.ehl)s.ehl=new Array;l=s.ehl;for(i=0;i<l.length&&n"
++"<0;i++){if(l[i].o==o&&l[i].e==e)n=i}if(n<0){n=i;l[n]=new Object}x=l"
++"[n];x.o=o;x.e=e;f=r?x.b:f;if(r||f){x.b=r?0:o[e];x.o[e]=f}if(x.b){x."
++"o[b]=x.b;return b}return 0};s.cet=function(f,a,t,o,b){var s=this,r;"
++"if(s.isie&&a.apv>=5)eval('try{r=s.m(f)?s[f](a):f(a)}catch(e){r=s.m("
++"t)?s[t](e):t(e)}');else{if(s.ismac&&s.u.indexOf('MSIE 4')>=0)r=s.m("
++"b)?s[b](a):b(a);else{s.eh(s.wd,'onerror',0,o);r=s.m(f)?s[f](a):f(a)"
++";s.eh(s.wd,'onerror',1)}}return r};s.gtfset=function(e){var s=this;"
++"return s.tfs};s.gtfsoe=new Function('e','var s=s_c_il['+s._in+'];s."
++"eh(window,\"onerror\",1);s.etfs=1;var c=s.t();if(c)s.d.write(c);s.e"
++"tfs=0;return true');s.gtfsfb=function(a){return window};s.gtfsf=fun"
++"ction(w){var s=this,p=w.parent,l=w.location;s.tfs=w;if(p&&p.locatio"
++"n!=l&&p.location.host==l.host){s.tfs=p;return s.gtfsf(s.tfs)}return"
++" s.tfs};s.gtfs=function(){var s=this;if(!s.tfs){s.tfs=s.wd;if(!s.et"
++"fs)s.tfs=s.cet('gtfsf',s.tfs,'gtfset',s.gtfsoe,'gtfsfb')}return s.t"
++"fs};s.ca=function(){var s=this,imn='s_i_'+s.fun;if(s.d.images&&s.ap"
++"v>=3&&!s.isopera&&(s.ns6<0||s.apv>=6.1)){s.ios=1;if(!s.d.images[imn"
++"]&&(!s.isns||(s.apv<4||s.apv>=5))){s.d.write('<im'+'g name=\"'+imn+"
++"'\" height=1 width=1 border=0 alt=\"\">');if(!s.d.images[imn])s.ios"
++"=0}}};s.mr=function(sess,q,ta){var s=this,ns=s.visitorNamespace,unc"
++"=s.rep(s.fun,'_','-'),imn='s_i_'+s.fun,im,b,e,rs='http'+(s.ssl?'s':"
++"'')+'://'+(s.ssl?'smtrcs':'mtrcs')+'.redhat.com/b/ss/'+s.un+'/1/H"
++".1-pDv-2/'+sess+'?[AQB]&ndh=1'+(q?q:'')+(s.q?s.q:'')+'&[AQE]';if(s."
++"isie&&!s.ismac){if(s.apv>5.5)rs=s.fl(rs,4095);else rs=s.fl(rs,2047)"
++"}if(s.ios){im=s.wd[imn]?s.wd[imn]:s.d.images[imn];if(!im)im=s.wd[im"
++"n]=new Image;im.src=rs;if(rs.indexOf('&pe=')>=0&&(!ta||ta=='_self'|"
++"|ta=='_top'||(s.wd.name&&ta==s.wd.name))){b=e=new Date;while(e.getT"
++"ime()-b.getTime()<500)e=new Date}return ''}return '<im'+'g sr'+'c="
++"\"'+rs+'\" width=1 height=1 border=0 alt=\"\">'};s.gg=function(v){v"
++"ar s=this;return s.wd['s_'+v]};s.glf=function(t,a){if(t.substring(0"
++",2)=='s_')t=t.substring(2);var s=this,v=s.gg(t);if(v)s[t]=v};s.gl=f"
++"unction(v){var s=this;s.pt(v,',','glf',0)};s.gv=function(v){var s=t"
++"his;return s['vpm_'+v]?s['vpv_'+v]:s[v]};s.havf=function(t,a){var s"
++"=this,b=t.substring(0,4),x=t.substring(4),n=parseInt(x),k='g_'+t,m="
++"'vpm_'+t,q=t,v=s.linkTrackVars,e=s.linkTrackEvents;s[k]=s.gv(t);if("
++"s.lnk||s.eo){v=v?v+','+s.vl_l:'';if(v&&!s.pt(v,',','isf',t))s[k]=''"
++";if(t=='events'&&e)s[k]=s.fs(s[k],e)}s[m]=0;if(t=='pageURL')q='g';e"
++"lse if(t=='referrer')q='r';else if(t=='charSet'){q='ce';if(s[k]&&s."
++"em==2)s[k]='UTF-8'}else if(t=='visitorNamespace')q='ns';else if(t=="
++"'cookieDomainPeriods')q='cdp';else if(t=='cookieLifetime')q='cl';el"
++"se if(t=='visitVariableProvider')q='vvp';else if(t=='currencyCode')"
++"q='cc';else if(t=='channel')q='ch';else if(t=='campaign')q='v0';els"
++"e if(s.num(x)) {if(b=='prop')q='c'+n;else if(b=='eVar')q='v'+n;else"
++" if(b=='hier'){q='h'+n;s[k]=s.fl(s[k],255)}}if(s[k]&&t!='linkName'&"
++"&t!='linkType')s.qav+='&'+q+'='+s.ape(s[k]);return ''};s.hav=functi"
++"on(){var s=this;s.qav='';s.pt(s.vl_t,',','havf',0);return s.qav};s."
++"lnf=function(t,h){t=t?t.toLowerCase():'';h=h?h.toLowerCase():'';var"
++" te=t.indexOf('=');if(t&&te>0&&h.indexOf(t.substring(te+1))>=0)retu"
++"rn t.substring(0,te);return ''};s.ln=function(h){var s=this,n=s.lin"
++"kNames;if(n)return s.pt(n,',','lnf',h);return ''};s.ltdf=function(t"
++",h){t=t?t.toLowerCase():'';h=h?h.toLowerCase():'';var qi=h.indexOf("
++"'?');h=qi>=0?h.substring(0,qi):h;if(t&&h.substring(h.length-(t.leng"
++"th+1))=='.'+t)return 1;return 0};s.ltef=function(t,h){t=t?t.toLower"
++"Case():'';h=h?h.toLowerCase():'';if(t&&h.indexOf(t)>=0)return 1;ret"
++"urn 0};s.lt=function(h){var s=this,lft=s.linkDownloadFileTypes,lef="
++"s.linkExternalFilters,lif=s.linkInternalFilters;lif=lif?lif:s.wd.lo"
++"cation.hostname;h=h.toLowerCase();if(s.trackDownloadLinks&&lft&&s.p"
++"t(lft,',','ltdf',h))return 'd';if(s.trackExternalLinks&&(lef||lif)&"
++"&(!lef||s.pt(lef,',','ltef',h))&&(!lif||!s.pt(lif,',','ltef',h)))re"
++"turn 'e';return ''};s.lc=new Function('e','var s=s_c_il['+s._in+'],"
++"b=s.eh(this,\"onclick\");s.lnk=s.co(this);s.t();s.lnk=0;if(b)return"
++" this[b](e);return true');s.bc=new Function('e','var s=s_c_il['+s._"
++"in+'];if(s.d&&s.d.all&&s.d.all.cppXYctnr)return;s.eo=e.srcElement?e"
++".srcElement:e.target;s.t();s.eo=0');s.ot=function(o){var a=o.type,b"
++"=o.tagName;return (a&&a.toUpperCase?a:b&&b.toUpperCase?b:o.href?'A'"
++":'').toUpperCase()};s.oid=function(o){var s=this,t=s.ot(o),p=o.prot"
++"ocol,c=o.onclick,n='',x=0;if(!o.s_oid){if(o.href&&(t=='A'||t=='AREA"
++"')&&(!c||!p||p.toLowerCase().indexOf('javascript')<0))n=o.href;else"
++" if(c){n=s.rep(s.rep(s.rep(s.rep(''+c,\"\\r\",''),\"\\n\",''),\"\\t"
++"\",''),' ','');x=2}else if(o.value&&(t=='INPUT'||t=='SUBMIT')){n=o."
++"value;x=3}else if(o.src&&t=='IMAGE')n=o.src;if(n){o.s_oid=s.fl(n,10"
++"0);o.s_oidt=x}}return o.s_oid};s.rqf=function(t,un){var s=this,e=t."
++"indexOf('='),u=e>=0?','+t.substring(0,e)+',':'';return u&&u.indexOf"
++"(','+un+',')>=0?s.epa(t.substring(e+1)):''};s.rq=function(un){var s"
++"=this,c=un.indexOf(','),v=s.c_r('s_sq'),q='';if(c<0)return s.pt(v,'"
++"&','rqf',un);return s.pt(un,',','rq',0)};s.sqp=function(t,a){var s="
++"this,e=t.indexOf('='),q=e<0?'':s.epa(t.substring(e+1));s.sqq[q]='';"
++"if(e>=0)s.pt(t.substring(0,e),',','sqs',q);return 0};s.sqs=function"
++"(un,q){var s=this;s.squ[un]=q;return 0};s.sq=function(q){var s=this"
++",k='s_sq',v=s.c_r(k),x,c=0;s.sqq=new Object;s.squ=new Object;s.sqq["
++"q]='';s.pt(v,'&','sqp',0);s.pt(s.un,',','sqs',q);v='';for(x in s.sq"
++"u)s.sqq[s.squ[x]]+=(s.sqq[s.squ[x]]?',':'')+x;for(x in s.sqq)if(x&&"
++"s.sqq[x]&&(x==q||c<2)){v+=(v?'&':'')+s.sqq[x]+'='+s.ape(x);c++}retu"
++"rn s.c_w(k,v,0)};s.wdl=new Function('e','var s=s_c_il['+s._in+'],r="
++"true,b=s.eh(s.wd,\"onload\"),i,o,oc;if(b)r=this[b](e);for(i=0;i<s.d"
++".links.length;i++){o=s.d.links[i];oc=o.onclick?\"\"+o.onclick:\"\";"
++"if((oc.indexOf(\"s_gs(\")<0||oc.indexOf(\".s_oc(\")>=0)&&oc.indexOf"
++"(\".tl(\")<0)s.eh(o,\"onclick\",0,s.lc);}return r');s.wds=function("
++"){var s=this;if(s.apv>3&&(!s.isie||!s.ismac||s.apv>=5)){if(s.b&&s.b"
++".attachEvent)s.b.attachEvent('onclick',s.bc);else if(s.b&&s.b.addEv"
++"entListener)s.b.addEventListener('click',s.bc,false);else s.eh(s.wd"
++",'onload',0,s.wdl)}};s.vs=function(x){var s=this,v=s.visitorSamplin"
++"g,g=s.visitorSamplingGroup,k='s_vsn_'+s.un+(g?'_'+g:''),n=s.c_r(k),"
++"e=new Date,y=e.getYear();e.setYear(y+10+(y<1900?1900:0));if(v){v*=1"
++"00;if(!n){if(!s.c_w(k,x,e))return 0;n=x}if(n%10000>v)return 0}retur"
++"n 1};s.dyasmf=function(t,m){if(t&&m&&m.indexOf(t)>=0)return 1;retur"
++"n 0};s.dyasf=function(t,m){var s=this,i=t?t.indexOf('='):-1,n,x;if("
++"i>=0&&m){var n=t.substring(0,i),x=t.substring(i+1);if(s.pt(x,',','d"
++"yasmf',m))return n}return 0};s.uns=function(){var s=this,x=s.dynami"
++"cAccountSelection,l=s.dynamicAccountList,m=s.dynamicAccountMatch,n,"
++"i;s.un.toLowerCase();if(x&&l){if(!m)m=s.wd.location.host;if(!m.toLo"
++"werCase)m=''+m;l=l.toLowerCase();m=m.toLowerCase();n=s.pt(l,';','dy"
++"asf',m);if(n)s.un=n}i=s.un.indexOf(',');s.fun=i<0?s.un:s.un.substri"
++"ng(0,i)};s.t=function(){var s=this,trk=1,tm=new Date,sed=Math&&Math"
++".random?Math.floor(Math.random()*10000000000000):tm.getTime(),sess="
++"'s'+Math.floor(tm.getTime()/10800000)%10+sed,yr=tm.getYear(),vt=tm."
++"getDate()+'/'+tm.getMonth()+'/'+(yr<1900?yr+1900:yr)+' '+tm.getHour"
++"s()+':'+tm.getMinutes()+':'+tm.getSeconds()+' '+tm.getDay()+' '+tm."
++"getTimezoneOffset(),tfs=s.gtfs(),ta='',q='',qs='';s.uns();if(!s.q){"
++"var tl=tfs.location,x='',c='',v='',p='',bw='',bh='',j='1.0',k=s.c_w"
++"('s_cc','true',0)?'Y':'N',hp='',ct='',pn=0,ps;if(s.apv>=4)x=screen."
++"width+'x'+screen.height;if(s.isns||s.isopera){if(s.apv>=3){j='1.1';"
++"v=s.n.javaEnabled()?'Y':'N';if(s.apv>=4){j='1.2';c=screen.pixelDept"
++"h;bw=s.wd.innerWidth;bh=s.wd.innerHeight;if(s.apv>=4.06)j='1.3'}}s."
++"pl=s.n.plugins}else if(s.isie){if(s.apv>=4){v=s.n.javaEnabled()?'Y'"
++":'N';j='1.2';c=screen.colorDepth;if(s.apv>=5){bw=s.d.documentElemen"
++"t.offsetWidth;bh=s.d.documentElement.offsetHeight;j='1.3';if(!s.ism"
++"ac&&s.b){s.b.addBehavior('#default#homePage');hp=s.b.isHomePage(tl)"
++"?\"Y\":\"N\";s.b.addBehavior('#default#clientCaps');ct=s.b.connecti"
++"onType}}}else r=''}if(s.pl)while(pn<s.pl.length&&pn<30){ps=s.fl(s.p"
++"l[pn].name,100)+';';if(p.indexOf(ps)<0)p+=ps;pn++}s.q=(x?'&s='+s.ap"
++"e(x):'')+(c?'&c='+s.ape(c):'')+(j?'&j='+j:'')+(v?'&v='+v:'')+(k?'&k"
++"='+k:'')+(bw?'&bw='+bw:'')+(bh?'&bh='+bh:'')+(ct?'&ct='+s.ape(ct):'"
++"')+(hp?'&hp='+hp:'')+(p?'&p='+s.ape(p):'')}if(s.usePlugins)s.doPlug"
++"ins(s);var l=s.wd.location,r=tfs.document.referrer;if(!s.pageURL)s."
++"pageURL=s.fl(l?l:'',255);if(!s.referrer)s.referrer=s.fl(r?r:'',255)"
++";if(s.lnk||s.eo){var o=s.eo?s.eo:s.lnk;if(!o)return '';var p=s.gv('"
++"pageName'),w=1,t=s.ot(o),n=s.oid(o),x=o.s_oidt,h,l,i,oc;if(s.eo&&o="
++"=s.eo){while(o&&!n&&t!='BODY'){o=o.parentElement?o.parentElement:o."
++"parentNode;if(!o)return '';t=s.ot(o);n=s.oid(o);x=o.s_oidt}oc=o.onc"
++"lick?''+o.onclick:'';if((oc.indexOf(\"s_gs(\")>=0&&oc.indexOf(\".s_"
++"oc(\")<0)||oc.indexOf(\".tl(\")>=0)return ''}ta=o.target;h=o.href?o"
++".href:'';i=h.indexOf('?');h=s.linkLeaveQueryString||i<0?h:h.substri"
++"ng(0,i);l=s.linkName?s.linkName:s.ln(h);t=s.linkType?s.linkType.toL"
++"owerCase():s.lt(h);if(t&&(h||l))q+='&pe=lnk_'+(t=='d'||t=='e'?s.ape"
++"(t):'o')+(h?'&pev1='+s.ape(h):'')+(l?'&pev2='+s.ape(l):'');else trk"
++"=0;if(s.trackInlineStats){if(!p){p=s.gv('pageURL');w=0}t=s.ot(o);i="
++"o.sourceIndex;if(s.gg('objectID')){n=s.gg('objectID');x=1;i=1}if(p&"
++"&n&&t)qs='&pid='+s.ape(s.fl(p,255))+(w?'&pidt='+w:'')+'&oid='+s.ape"
++"(s.fl(n,100))+(x?'&oidt='+x:'')+'&ot='+s.ape(t)+(i?'&oi='+i:'')}}if"
++"(!trk&&!qs)return '';var code='';if(trk&&s.vs(sed))code=s.mr(sess,("
++"vt?'&t='+s.ape(vt):'')+s.hav()+q+(qs?qs:s.rq(s.un)),ta);s.sq(trk?''"
++":qs);s.lnk=s.eo=s.linkName=s.linkType=s.wd.s_objectID='';return cod"
++"e};s.tl=function(o,t,n){var s=this;s.lnk=s.co(o);s.linkType=t;s.lin"
++"kName=n;s.t()};s.ssl=(s.wd.location.protocol.toLowerCase().indexOf("
++"'https')>=0);s.d=document;s.b=s.d.body;s.n=navigator;s.u=s.n.userAg"
++"ent;s.ns6=s.u.indexOf('Netscape6/');var apn=s.n.appName,v=s.n.appVe"
++"rsion,ie=v.indexOf('MSIE '),i;if(v.indexOf('Opera')>=0||s.u.indexOf"
++"('Opera')>=0)apn='Opera';s.isie=(apn=='Microsoft Internet Explorer'"
++");s.isns=(apn=='Netscape');s.isopera=(apn=='Opera');s.ismac=(s.u.in"
++"dexOf('Mac')>=0);if(ie>0){s.apv=parseInt(i=v.substring(ie+5));if(s."
++"apv>3)s.apv=parseFloat(i)}else if(s.ns6>0)s.apv=parseFloat(s.u.subs"
++"tring(s.ns6+10));else s.apv=parseFloat(v);s.em=0;if(String.fromChar"
++"Code){i=escape(String.fromCharCode(256)).toUpperCase();s.em=(i=='%C"
++"4%80'?2:(i=='%U0100'?1:0))}s.un=un;s.uns();s.vl_l='charSet,visitorN"
++"amespace,cookieDomainPeriods,cookieLifetime,visitVariableProvider,p"
++"ageName,pageURL,referrer,currencyCode,purchaseID';s.vl_t=s.vl_l+',c"
++"hannel,server,pageType,campaign,state,zip,events,products,linkName,"
++"linkType';for(var n=1;n<51;n++)s.vl_t+=',prop'+n+',eVar'+n+',hier'+"
++"n;s.vl_g=s.vl_t+',trackDownloadLinks,trackExternalLinks,trackInline"
++"Stats,linkLeaveQueryString,linkDownloadFileTypes,linkExternalFilter"
++"s,linkInternalFilters,linkNames';if(pg)s.gl(s.vl_g);if(!ss){s.wds()"
++";s.ca()}}",
+l=window.s_c_il,n=navigator,u=n.userAgent,v=n.appVersion,e=v.indexOf(
+'MSIE '),m=u.indexOf('Netscape6/'),a,i,s;if(l)for(i=0;i<l.length;i++){
+s=l[i];s.uns();if(s.un==un)return s;else if(s.pt(s.un,',','isf',un)){
+s=s.co(s);s.un=un;s.uns();return s}}if(e>0){a=parseInt(i=v.substring(e
++5));if(a>3)a=parseFloat(i)}else if(m>0)a=parseFloat(u.substring(m+10)
+);else a=parseFloat(v);if(a>=5&&v.indexOf('Opera')<0&&u.indexOf(
+'Opera')<0){eval(c);return new s_c(un,pg,ss)}else s=s_c2f(c);return s(
+un,pg,ss)}

Added: trunk/demos/ec2-ui/src/main/webapp/js/search.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/search.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/search.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,214 @@
+function submitonEnter(e){
+	
+    var keynum;
+    var keychar;
+    var numcheck;
+
+    if (window.event) {
+        keynum = e.keyCode;
+    } else if (e.which) {
+        keynum = e.which;
+    }
+
+    if (keynum == "13"){
+        document.searchBox.submit();
+    }
+}
+
+function searchCommunity(){
+	resetSelected();
+	jQuery("#q").val("Search the Community");
+	jQuery("#searchArea").val(jQuery("#q").val());
+	search[0]='<a class="selected" id="searchCommunity" href="javascript:void(0);" onclick="searchCommunity()">Search the Community</a>';
+  document.getElementById("TopSearch").method="POST";
+  document.getElementById("TopSearch").action='/community/search?&resultTypes=DOCUMENT&resultTypes=COMMUNITY&resultTypes=COMMENT&peopleEnabled=true';
+}
+
+function searchJBossorgSite(){
+	resetSelected();
+	jQuery("#q").val("Search the JBoss.org site");
+	jQuery("#searchArea").val(jQuery("#q").val());
+	search[0]='<a class="selected" id="searchJBossorgSite" href="javascript:void(0);" onclick="searchJBossorgSite()">Search the JBoss.org site</a>';
+  document.getElementById("TopSearch").method="GET";
+	document.getElementById("TopSearch").action='http://www.google.com/search?&as_sitesearch=jboss.org';
+}
+
+function searchProjectPages(){
+	resetSelected();
+	jQuery("#q").val("Search Project Pages");
+	jQuery("#searchArea").val(jQuery("#q").val());
+	search[1]='<a class="selected" id="searchProjectPages" href="javascript:void(0);" onclick="searchProjectPages()">Search Project Pages</a>';
+  document.getElementById("TopSearch").method="GET";
+	document.getElementById("TopSearch").action='http://www.google.com/search?&as_sitesearch=jboss.org';
+}
+
+function resetSelected(){
+	//search[0]='<a id="searchJBossorgSite" href="javascript:void(0);" onclick="searchJBossorgSite()">Search the JBoss.org site</a>'
+	search[0]='<a id="searchCommunity" href="javascript:void(0);" onclick="searchCommunity()">Search the Community</a>'
+	search[1]='<a id="searchProjectPages" href="javascript:void(0);" onclick="searchProjectPages()">Search Project Pages</a>'
+	//search[4]='<img src="/jbossorg-search/img/search-filter-bottom.png" width="133" height="7" style="margin-top:-6px;" class="pngfix" />'
+}
+
+var search=new Array()
+//search[0]='<a id="searchJBossorgSite" href="javascript:void(0);" onclick="searchJiveSite()">Search the JBoss.org site</a>'
+search[0]='<a id="searchCommunity" href="javascript:void(0);" onclick="searchCommunity()">Search the Community</a>'
+search[1]='<a id="searchProjectPages" href="javascript:void(0);" onclick="searchDocumentation()">Search Project Pages</a>'
+//search[4]='<img src="/jbossorg-search/img/search-filter-bottom.png" width="133" height="7" style="margin-top:-6px;" class="pngfix" />'
+
+function setSelected(){
+	if (jQuery("#searchArea").val() == "Search the JBoss.org site") {
+		searchJBossorgSite();
+		return;
+	}
+
+	if (jQuery("#searchArea").val() == "Search Project Pages") {
+		searchProjectPages();
+		return;
+	}
+
+	if (jQuery("#searchArea").val() == "Search the Community") {
+		searchCommunity();
+		return;
+	}
+
+	try{ // if default search to community is defined 
+		if (defaultSearchToCommunity==true){
+			searchCommunity();
+			return;
+		}
+	}catch(err){
+	}
+
+	if (jQuery("#searchArea").val()=="") {
+		searchCommunity();
+	}
+
+}
+jQuery(document).ready(
+	function () {
+		setSelected();
+	}
+);
+
+var menuwidth='140px'
+var menubgcolor=''
+var disappeardelay=250
+var hidemenu_onclick="yes"
+
+var ie4=document.all
+var ns6=document.getElementById&&!document.all
+
+if (ie4||ns6)
+document.write('<div id="dropmenudiv" style="visibility:hidden;width:'+menuwidth+';background-color:'+menubgcolor+'" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>')
+
+function getposOffset(what, offsettype){
+var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
+var parentEl=what.offsetParent;
+while (parentEl!=null){
+totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
+parentEl=parentEl.offsetParent;
+}
+return totaloffset;
+}
+
+
+function showhide(obj, e, visible, hidden, menuwidth){
+if (ie4||ns6)
+dropmenuobj.style.left=dropmenuobj.style.top="-500px"
+if (menuwidth!=""){
+dropmenuobj.widthobj=dropmenuobj.style
+dropmenuobj.widthobj.width=menuwidth
+}
+if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
+obj.visibility=visible
+else if (e.type=="click")
+obj.visibility=hidden
+}
+
+function iecompattest(){
+return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
+}
+
+function clearbrowseredge(obj, whichedge){
+var edgeoffset=0
+if (whichedge=="rightedge"){
+var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
+dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
+if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
+edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
+}
+else{
+var topedge=ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset
+var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
+dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
+if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){
+edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
+if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure)
+edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge
+}
+}
+return edgeoffset
+}
+
+function populatemenu(what){
+if (ie4||ns6)
+dropmenuobj.innerHTML=what.join("")
+}
+
+
+function dropdownmenu(obj, e, menucontents, menuwidth){
+if (window.event) event.cancelBubble=true
+else if (e.stopPropagation) e.stopPropagation()
+clearhidemenu()
+dropmenuobj=document.getElementById? document.getElementById("dropmenudiv") : dropmenudiv
+populatemenu(menucontents)
+
+if (ie4||ns6){
+showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth)
+dropmenuobj.x=getposOffset(obj, "left")
+dropmenuobj.y=getposOffset(obj, "top")
+dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px"
+dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px"
+}
+
+return clickreturnvalue()
+}
+
+function clickreturnvalue(){
+if (ie4||ns6) return false
+else return true
+}
+
+function contains_ns6(a, b) {
+while (b.parentNode)
+if ((b = b.parentNode) == a)
+return true;
+return false;
+}
+
+function dynamichide(e){
+if (ie4&&!dropmenuobj.contains(e.toElement))
+delayhidemenu()
+else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
+delayhidemenu()
+}
+
+function hidemenu(e){
+if (typeof dropmenuobj!="undefined"){
+if (ie4||ns6)
+dropmenuobj.style.visibility="hidden"
+}
+}
+
+function delayhidemenu(){
+if (ie4||ns6)
+delayhide=setTimeout("hidemenu()",disappeardelay)
+}
+
+function clearhidemenu(){
+if (typeof delayhide!="undefined")
+clearTimeout(delayhide)
+}
+
+if (hidemenu_onclick=="yes")
+document.onclick=hidemenu

Added: trunk/demos/ec2-ui/src/main/webapp/js/slimbox2.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/slimbox2.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/slimbox2.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,13 @@
+/*
+	Slimbox v2.02 - The ultimate lightweight Lightbox clone for jQuery
+	(c) 2007-2009 Christophe Beyls <http://www.digitalia.be>
+	MIT-style license.
+*/
+(function(w){var E=w(window),u,g,F=-1,o,x,D,v,y,L,s,n=!window.XMLHttpRequest,e=window.opera&&(document.compatMode=="CSS1Compat")&&(w.browser.version>=9.3),m=document.documentElement,l={},t=new Image(),J=new Image(),H,a,h,q,I,d,G,c,A,K;w(function(){w("body").append(w([H=w('<div id="lbOverlay" />')[0],a=w('<div id="lbCenter" />')[0],G=w('<div id="lbBottomContainer" />')[0]]).css("display","none"));h=w('<div id="lbImage" />').appendTo(a).append(q=w('<div style="position: relative;" />').append([I=w('<a id="lbPrevLink" href="#" />').click(B)[0],d=w('<a id="lbNextLink" href="#" />').click(f)[0]])[0])[0];c=w('<div id="lbBottom" />').appendTo(G).append([w('<a id="lbCloseLink" href="#" />').add(H).click(C)[0],A=w('<div id="lbCaption" />')[0],K=w('<div id="lbNumber" />')[0],w('<div style="clear: both;" />')[0]])[0]});w.slimbox=function(O,N,M){u=w.extend({loop:false,overlayOpacity:0.8,overlayFadeDuration:400,resizeDuration:400,resizeEasing:"swing",initialWidth:250,initialHeight:250,i!
 mageFadeDuration:400,captionAnimationDuration:400,counterText:"Image {x} of {y}",closeKeys:[27,88,67],previousKeys:[37,80],nextKeys:[39,78]},M);if(typeof O=="string"){O=[[O,N]];N=0}y=E.scrollTop()+((e?m.clientHeight:E.height())/2);L=u.initialWidth;s=u.initialHeight;w(a).css({top:Math.max(0,y-(s/2)),width:L,height:s,marginLeft:-L/2}).show();v=n||(H.currentStyle&&(H.currentStyle.position!="fixed"));if(v){H.style.position="absolute"}w(H).css("opacity",u.overlayOpacity).fadeIn(u.overlayFadeDuration);z();k(1);g=O;u.loop=u.loop&&(g.length>1);return b(N)};w.fn.slimbox=function(M,P,O){P=P||function(Q){return[Q.href,Q.title]};O=O||function(){return true};var N=this;return N.unbind("click").click(function(){var S=this,U=0,T,Q=0,R;T=w.grep(N,function(W,V){return O.call(S,W,V)});for(R=T.length;Q<R;++Q){if(T[Q]==S){U=Q}T[Q]=P(T[Q],Q)}return w.slimbox(T,U,M)})};function z(){var N=E.scrollLeft(),M=e?m.clientWidth:E.width();w([a,G]).css("left",N+(M/2));if(v){w(H).css({left:N,top:E.scrollTo!
 p(),width:M,height:E.height()})}}function k(M){w("object").add!
 (n?"sele
ct":"embed").each(function(O,P){if(M){w.data(P,"slimbox",P.style.visibility)}P.style.visibility=M?"hidden":w.data(P,"slimbox")});var N=M?"bind":"unbind";E[N]("scroll resize",z);w(document)[N]("keydown",p)}function p(O){var N=O.keyCode,M=w.inArray;return(M(N,u.closeKeys)>=0)?C():(M(N,u.nextKeys)>=0)?f():(M(N,u.previousKeys)>=0)?B():false}function B(){return b(x)}function f(){return b(D)}function b(M){if(M>=0){F=M;o=g[F][0];x=(F||(u.loop?g.length:0))-1;D=((F+1)%g.length)||(u.loop?0:-1);r();a.className="lbLoading";l=new Image();l.onload=j;l.src=o}return false}function j(){a.className="";w(h).css({backgroundImage:"url("+o+")",visibility:"hidden",display:""});w(q).width(l.width);w([q,I,d]).height(l.height);w(A).html(g[F][1]||"");w(K).html((((g.length>1)&&u.counterText)||"").replace(/{x}/,F+1).replace(/{y}/,g.length));if(x>=0){t.src=g[x][0]}if(D>=0){J.src=g[D][0]}L=h.offsetWidth;s=h.offsetHeight;var M=Math.max(0,y-(s/2));if(a.offsetHeight!=s){w(a).animate({height:s,top:M},u.resize!
 Duration,u.resizeEasing)}if(a.offsetWidth!=L){w(a).animate({width:L,marginLeft:-L/2},u.resizeDuration,u.resizeEasing)}w(a).queue(function(){w(G).css({width:L,top:M+s,marginLeft:-L/2,visibility:"hidden",display:""});w(h).css({display:"none",visibility:"",opacity:""}).fadeIn(u.imageFadeDuration,i)})}function i(){if(x>=0){w(I).show()}if(D>=0){w(d).show()}w(c).css("marginTop",-c.offsetHeight).animate({marginTop:0},u.captionAnimationDuration);G.style.visibility=""}function r(){l.onload=null;l.src=t.src=J.src=o;w([a,h,c]).stop(true);w([I,d,h,G]).hide()}function C(){if(F>=0){r();F=x=D=-1;w(a).hide();w(H).stop().fadeOut(u.overlayFadeDuration,k)}return false}})(jQuery);
+
+// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
+jQuery(function($) {
+	$("a[rel^='lightbox']").slimbox({/* Put custom options here */}, null, function(el) {
+		return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
+	});
+});
\ No newline at end of file

Added: trunk/demos/ec2-ui/src/main/webapp/js/superfish.js
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/js/superfish.js	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/js/superfish.js	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,121 @@
+
+/*
+ * Superfish v1.4.8 - jQuery menu widget
+ * Copyright (c) 2008 Joel Birch
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * 	http://www.opensource.org/licenses/mit-license.php
+ * 	http://www.gnu.org/licenses/gpl.html
+ *
+ * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
+ */
+
+;(function($){
+	$.fn.superfish = function(op){
+
+		var sf = $.fn.superfish,
+			c = sf.c,
+			$arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
+			over = function(){
+				var $$ = $(this), menu = getMenu($$);
+				clearTimeout(menu.sfTimer);
+				$$.showSuperfishUl().siblings().hideSuperfishUl();
+			},
+			out = function(){
+				var $$ = $(this), menu = getMenu($$), o = sf.op;
+				clearTimeout(menu.sfTimer);
+				menu.sfTimer=setTimeout(function(){
+					o.retainPath=($.inArray($$[0],o.$path)>-1);
+					$$.hideSuperfishUl();
+					if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
+				},o.delay);	
+			},
+			getMenu = function($menu){
+				var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
+				sf.op = sf.o[menu.serial];
+				return menu;
+			},
+			addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
+			
+		return this.each(function() {
+			var s = this.serial = sf.o.length;
+			var o = $.extend({},sf.defaults,op);
+			o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
+				$(this).addClass([o.hoverClass,c.bcClass].join(' '))
+					.filter('li:has(ul)').removeClass(o.pathClass);
+			});
+			sf.o[s] = sf.op = o;
+			
+			$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
+				if (o.autoArrows) addArrow( $('>a:first-child',this) );
+			})
+			.not('.'+c.bcClass)
+				.hideSuperfishUl();
+			
+			var $a = $('a',this);
+			$a.each(function(i){
+				var $li = $a.eq(i).parents('li');
+				$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
+			});
+			o.onInit.call(this);
+			
+		}).each(function() {
+			var menuClasses = [c.menuClass];
+			if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
+			$(this).addClass(menuClasses.join(' '));
+		});
+	};
+
+	var sf = $.fn.superfish;
+	sf.o = [];
+	sf.op = {};
+	sf.IE7fix = function(){
+		var o = sf.op;
+		if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
+			this.toggleClass(sf.c.shadowClass+'-off');
+		};
+	sf.c = {
+		bcClass     : 'sf-breadcrumb',
+		menuClass   : 'sf-js-enabled',
+		anchorClass : 'sf-with-ul',
+		arrowClass  : 'sf-sub-indicator',
+		shadowClass : 'sf-shadow'
+	};
+	sf.defaults = {
+		hoverClass	: 'sfHover',
+		pathClass	: 'overideThisToUse',
+		pathLevels	: 1,
+		delay		: 800,
+		animation	: {opacity:'show'},
+		speed		: 'normal',
+		autoArrows	: true,
+		dropShadows : true,
+		disableHI	: false,		// true disables hoverIntent detection
+		onInit		: function(){}, // callback functions
+		onBeforeShow: function(){},
+		onShow		: function(){},
+		onHide		: function(){}
+	};
+	$.fn.extend({
+		hideSuperfishUl : function(){
+			var o = sf.op,
+				not = (o.retainPath===true) ? o.$path : '';
+			o.retainPath = false;
+			var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
+					.find('>ul').hide().css('visibility','hidden');
+			o.onHide.call($ul);
+			return this;
+		},
+		showSuperfishUl : function(){
+			var o = sf.op,
+				sh = sf.c.shadowClass+'-off',
+				$ul = this.addClass(o.hoverClass)
+					.find('>ul:hidden').css('visibility','visible');
+			sf.IE7fix.call($ul);
+			o.onBeforeShow.call($ul);
+			$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
+			return this;
+		}
+	});
+
+})(jQuery);

Added: trunk/demos/ec2-ui/src/main/webapp/jsp/VirusDetails.jsp
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/jsp/VirusDetails.jsp	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/jsp/VirusDetails.jsp	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,105 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ page import="org.infinispan.ec2demo.Influenza_N_P_CR_Element"%>
+<%@ page import="org.infinispan.ec2demo.Nucleotide_Protein_Element"%>
+<%-- 
+    Document   : VirusDetails
+    Created on : Nov 10, 2009, 7:32:55 AM
+    Author     : noconnor at redhat.com
+--%>
+
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+   "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Influenza Details</title>
+
+
+</head>
+<body>
+<table class="contentTable" border="0" cellpadding="0" cellspacing="0"
+	width="945">
+	<tbody>
+		<tr>
+			<td class="header" colspan="2" align="left" width="945">
+			<div id="header">
+			<div class="paragraphInformationBoxLayout"
+				style="height: 0px; display: none; visibility: hidden;"
+				id="mgnlParagraph1">
+			<div align="right">Inherited from: <a style="color: black;"
+				title="/infinispan.html" href="http://jboss.org/infinispan.html">/infinispan.html</a></div>
+			</div>
+			<div id="commonContent">
+			<div id="proj_announce-whole"><img alt="Infinispan"
+				src="js/infinispan-banner.png">
+			<div id="proj_logo-neg"></div>
+			</div>
+			</div>
+			</div>
+			</td>
+		</tr>
+	</tbody>
+</table>
+<h1>Search Details for <c:out value="${total}"></c:out></h1>
+
+<h1>Nucleotide Information</h1>
+<table border="1" style="text-align:center;">
+	<thead>
+		<tr>
+			<th>Virus Name</th>
+			<th>Host</th>
+			<th>Country</th>
+			<th>Year Found</th>
+			<th>GBAN</th>
+		</tr>
+	</thead>
+	<tbody>
+		<tr>
+			<td><c:out value="${Nucleotide.virusName}" /></td>
+			<td><c:out value="${Nucleotide.host}" /></td>
+			<td><c:out value="${Nucleotide.country}" /></td>
+			<td><c:out value="${Nucleotide.yearFound}" /></td>
+			<td><c:out value="${Nucleotide.genbankAccessionNumber}" /></td>
+		</tr>
+	</tbody>
+</table>
+
+<h1>Protein Information</h1>
+<table border="1">
+	<thead>
+		<tr>
+			<th>Protein GBAN</th>
+			<th>Protein Coding Region</th>
+		</tr>
+	</thead>
+	<tbody>
+		<c:forEach items="${PMap}" var="protein">
+			<tr>
+				<td><c:out value="${protein.key}" /></td>
+				<td><c:out value="${protein.value}" /></td>
+			</tr>
+		</c:forEach>
+	</tbody>
+</table>
+
+
+<h1>Cluster Information</h1>
+<table border="1">
+	<thead>
+		<tr>
+			<th>Nodes</th>
+		</tr>
+	</thead>
+	<tbody>
+		<c:forEach items="${CMap}" var="node">
+			<tr>
+				<td><c:out value="${node}" /></td>
+			</tr>
+		</c:forEach>
+	</tbody>
+</table>
+
+</body>
+</html>

Added: trunk/demos/ec2-ui/src/main/webapp/jsp/VirusSearch.jsp
===================================================================
--- trunk/demos/ec2-ui/src/main/webapp/jsp/VirusSearch.jsp	                        (rev 0)
+++ trunk/demos/ec2-ui/src/main/webapp/jsp/VirusSearch.jsp	2010-05-26 05:18:37 UTC (rev 1854)
@@ -0,0 +1,48 @@
+<%-- 
+    Document   : VirusSearch
+    Created on : Nov 10, 2009, 12:48:06 AM
+    Author     : noconnor at redhat.com
+--%>
+
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Virus Details Search</title>
+
+
+</head>
+<body>
+<table class="contentTable" border="0" cellpadding="0" cellspacing="0"
+	width="945">
+	<tbody>
+		<tr>
+			<td class="header" colspan="2" align="left" width="945">
+			<div id="header">
+			<div class="paragraphInformationBoxLayout"
+				style="height: 0px; display: none; visibility: hidden;"
+				id="mgnlParagraph1">
+			<div align="right">Inherited from: <a style="color: black;"
+				title="/infinispan.html" href="http://jboss.org/infinispan.html">/infinispan.html</a></div>
+			</div>
+			<div id="commonContent">
+			<div id="proj_announce-whole"><img alt="Infinispan"
+				src="js/infinispan-banner.png">
+			<div id="proj_logo-neg"></div>
+			</div>
+			</div>
+			</div>
+			</td>
+		</tr>
+	</tbody>
+</table>
+
+<h1>Enter Virus GBAN</h1>
+<form action="/infinispan-ec2-demoui/CacheSearchServlet" method="POST">
+Genbank Accession Number <INPUT TYPE="TEXT" NAME="vGBAN"> <INPUT
+	type="submit" value="Go" /></form>
+</body>
+</html>



More information about the infinispan-commits mailing list