You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by al...@apache.org on 2013/06/01 04:07:31 UTC

svn commit: r1488448 [9/15] - in /juddi/trunk: juddi-examples/uddi-createbulk/src/uddi/createbulk/ juddi-tomcat/ juddiv3-war/ juddiv3-war/src/main/java/org/apache/juddi/webconsole/ juddiv3-war/src/main/java/org/apache/juddi/webconsole/hub/ juddiv3-war/...

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/happy.jsp
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/happy.jsp?rev=1488448&view=auto
==============================================================================
--- juddi/trunk/juddiv3-war/src/main/webapp/admin/happy.jsp (added)
+++ juddi/trunk/juddiv3-war/src/main/webapp/admin/happy.jsp Sat Jun  1 02:07:29 2013
@@ -0,0 +1,379 @@
+<%-- 
+    Document   : happy
+    Created on : May 4, 2013, 9:05:05 AM
+    Author     : Alex O'Ree
+--%>
+
+<%@page import="org.apache.commons.lang.StringEscapeUtils"%>
+<%@page import="org.apache.juddi.servlets.RegistryServlet"%>
+<%@page import="java.util.SortedSet"%>
+<%@page import="java.util.Properties"%>
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<!DOCTYPE html>
+<%@ page session="false"
+         import="java.io.File,
+                 java.io.IOException,
+                 java.net.URL,
+                 java.net.JarURLConnection,
+                 java.sql.Connection,
+                 java.sql.ResultSet,
+                 java.sql.Statement,
+                 java.util.Properties,
+                 java.util.Iterator,
+                 java.util.SortedSet,
+                 java.util.TreeSet,
+                 javax.naming.Context,
+                 javax.naming.InitialContext,
+                 javax.sql.DataSource"
+		 
+                 
+%>
+<%
+/*
+ * Copyright 2002,2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+%>
+<%!
+
+    /**
+     * Look for the named class in the classpath
+     *
+     * @param name of the class to lookup
+     * @return the location of the named class
+     * @throws IOException
+     */
+    String lookupClass(String className) 
+      throws IOException 
+    {
+      // load the class (if it exists)
+      Class clazz = null;      
+      try {
+        clazz = Class.forName(className);
+        if (clazz == null)
+          return null;
+      }
+      catch (ClassNotFoundException e) {
+        return null;
+      }
+
+      // class was found, now get it's URL
+      URL url = null;
+      try {
+        url = clazz.getProtectionDomain().getCodeSource().getLocation();
+        if (url == null)
+          return "";
+      }
+      catch(Throwable t) {
+        return "";
+      }
+      
+      // got the classes URL, now determine it's location
+      String location = getLocation(url);
+      if (location == null) 
+        return "";
+      else
+        return location;   
+    }
+
+    /**
+     * Look for the named resource or properties file.
+     *
+     * @param resourceName
+     * @return true if the file was found
+     */
+    String lookupResource(String resourceName) 
+    {
+      URL url = null;
+      ClassLoader classLoader = null;
+
+      classLoader = this.getClass().getClassLoader();
+      if (classLoader != null) 
+      {
+        url = classLoader.getResource(resourceName);
+        if (url != null) {
+          return getLocation(url);
+        }
+      }
+      else      
+      {
+        classLoader = System.class.getClassLoader(); 
+        if (classLoader != null) 
+        {
+          url = classLoader.getResource(resourceName);
+          if (url != null) {
+            return getLocation(url);
+          }
+        }
+        else
+                       {
+            //try to the thread context loader
+        }
+      }
+
+      return null;
+    }
+
+    /**
+     * Determine the location of the Java class.
+     *
+     * @param clazz
+     * @return the file path to the jar file or class 
+     *  file where the class was located.
+     */
+    String getLocation(URL url)
+    {
+      try
+      {
+        String location = url.toString();
+        if (location.startsWith("jar:file:/"))
+        {
+          File file = new File(url.getFile());
+          return file.getPath().substring(6);
+        }
+        else if (location.startsWith("jar")) 
+        {
+          url = ((JarURLConnection)url.openConnection()).getJarFileURL();
+          return url.toString();
+        }
+        else if (location.startsWith("file")) 
+        {
+          File file = new File(url.getFile());
+          return file.getAbsolutePath();
+        }
+        else
+        {
+          return url.toString();
+        }
+      } 
+      catch (Throwable t) { 
+        return null;
+      }
+    }
+%>
+<html>
+<head>
+<title>jUDDI Happiness Page</title>
+<link rel="stylesheet" href="juddi.css">
+</head>
+<body>
+
+<div class="nav" align="right"><font size="-2"><a href="http://juddi.apache.org/">jUDDI@Apache</a></font></div>
+<h1>jUDDI</h1>
+
+<div class="announcement">
+<p>
+<h3>Happy jUDDI!</h3>
+
+<h4>jUDDI Version Information</h4>
+<pre>
+<b>jUDDI Version:</b> <%= org.apache.juddi.config.Release.getRegistryVersion() %>
+<b>UDDI Version:</b>  <%= org.apache.juddi.config.Release.getUDDIVersion() %>
+</pre>
+        
+<h4>jUDDI Dependencies: Class Files &amp; Libraries</h4>
+<pre>
+<%
+    //creates the schema if not there
+ //  RegistryEngine registry = RegistryServlet.getRegistry();
+  //  registry.init();
+    
+    String[] classArray = {
+      "org.apache.juddi.servlets.RegistryServlet",
+      "org.apache.juddi.servlets.NotifyServlet",
+      "org.apache.axis.transport.http.AxisServlet",
+      "org.springframework.web.context.ContextLoaderListener",
+      "org.apache.cxf.transport.servlet.CXFServlet",
+      "org.apache.commons.discovery.Resource",
+      "org.apache.commons.logging.Log",
+      "org.apache.log4j.Layout",
+      "javax.xml.soap.SOAPMessage",
+    //not used anymore  "javax.xml.rpc.Service",
+      "com.ibm.wsdl.factory.WSDLFactoryImpl",
+      "javax.xml.parsers.SAXParserFactory"
+    };
+    
+    for (int i=0; i<classArray.length; i++)
+    {
+      out.write("<b>Looking for</b>: "+classArray[i]+"<br>");
+      
+      String result = lookupClass(classArray[i]);
+      if (result == null)
+      {
+        out.write("<font color=\"red\">-Not Found</font><br>");
+      }
+      else if (result.length() == 0)
+      {        
+        out.write("<font color=\"blue\">+Found in an unknown location</font><br>");
+      }
+      else
+      {        
+        out.write("<font color=\"green\">+Found in: "+ result +"</font><br>");
+      }
+    }   
+%>
+</pre>
+        
+<h4>jUDDI Dependencies: Resource &amp; Properties Files</h4>
+<pre>
+<%
+    String[] resourceArray = {
+      "log4j.xml",
+      "juddiv3.properties",
+      "context.xml",
+      "beans.xml",
+      "persistence.xml"
+    };
+    
+    for (int i=0; i<resourceArray.length; i++)
+    {
+      out.write("<b>Looking for</b>: "+resourceArray[i]+"<br>");
+      
+      String result = lookupResource(resourceArray[i]);
+      if (result == null)
+      {
+        out.write("<font color=\"red\">-Not Found</font><br>");
+      }
+      else if (result.length() == 0)
+      {        
+        out.write("<font color=\"blue\">+Found in an unknown location</font><br>");
+      }
+      else
+      {        
+        out.write("<font color=\"green\">+Found in: "+ result +"</font><br>");
+      }
+    }   
+%>
+</pre>
+
+<h4>jUDDI DataSource Validation</h4>
+<pre>
+<%
+  String dsname = null;
+  Context ctx = null;
+  DataSource ds = null;
+  Connection conn = null;
+  String sql = "SELECT COUNT(*) FROM PUBLISHER";
+  
+  try
+  {
+    dsname = request.getParameter("dsname");
+    if ((dsname == null) || (dsname.trim().length() == 0)) {
+      dsname = "java:comp/env/jdbc/juddiDB";
+    } else {
+      dsname = StringEscapeUtils.escapeXml(dsname); 
+    }
+    
+    ctx = new InitialContext();
+    if (ctx == null )
+      throw new Exception("No Context");
+  
+    out.print("<font color=\"green\">");
+    out.print("+ Got a JNDI Context!");
+    out.println("</font>");
+  }
+  catch(Exception ex)
+  {
+    out.print("<font color=\"red\">");
+    out.print("- No JNDI Context ("+ex.getMessage()+")");
+    out.println("</font>");
+  }
+
+  try
+  {
+    ds = (DataSource)ctx.lookup(dsname);
+    if (ds == null)
+      throw new Exception("No Context");
+
+    out.print("<font color=\"green\">");
+    out.print("+ Got a JDBC DataSource (dsname="+dsname+")");
+    out.println("</font>");
+  }
+  catch(Exception ex)
+  {
+    out.print("<font color=\"red\">");
+    out.print("- No '"+dsname+"' DataSource Located("+ex.getMessage()+")");
+    out.println("</font>");
+  }
+  
+  try
+  {
+    conn = ds.getConnection();
+    if (conn == null)
+    throw new Exception("No Connection (conn=null)");  
+
+    out.print("<font color=\"green\">");
+    out.print("+ Got a JDBC Connection!");
+    out.println("</font>");
+  }
+  catch(Exception ex)
+  {
+    out.print("<font color=\"red\">");
+    out.print("- DB connection was not acquired. ("+ex.getMessage()+")");
+    out.println("</font>");
+  }
+  
+  try
+  {
+    Statement stmt = conn.createStatement();
+    ResultSet rs = stmt.executeQuery(sql);
+
+    out.print("<font color=\"green\">");
+    out.print("+ "+sql+" = ");
+    if (rs.next())
+      out.print(rs.getString(1));
+    out.println("</font>");
+
+    conn.close();
+  }
+  catch (Exception ex)
+  {
+    out.print("<font color=\"red\">");
+    out.print("- "+sql+" failed ("+ex.getMessage()+")");
+    out.println("</font>");
+  }
+%>
+</pre>
+
+
+<h4>System Properties</h4>
+<pre>
+<%
+  try
+  {
+    Properties sysProps = System.getProperties();
+    SortedSet sortedProperties = new TreeSet(sysProps.keySet()); 
+    for (Iterator keys = sortedProperties.iterator(); keys.hasNext();)
+    {
+      String key = (String)keys.next();
+      out.println("<b>"+key + "</b>: " + sysProps.getProperty(key));
+    }
+  }
+  catch(Exception e)
+  {
+    e.printStackTrace();
+  }
+%>
+</pre>
+
+<hr>
+Platform: <%= getServletConfig().getServletContext().getServerInfo() %>
+
+<table width="100%" border="0">
+<tr><td height="50" align="center" valign="bottom" nowrap><div class="footer">&nbsp;</div></td></tr>
+</table>
+
+</div>
+</body>
+</html>
\ No newline at end of file

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/header-bottom.jsp
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/header-bottom.jsp?rev=1488448&view=auto
==============================================================================
--- juddi/trunk/juddiv3-war/src/main/webapp/admin/header-bottom.jsp (added)
+++ juddi/trunk/juddiv3-war/src/main/webapp/admin/header-bottom.jsp Sat Jun  1 02:07:29 2013
@@ -0,0 +1,28 @@
+<%-- 
+    Document   : header-bottom
+    Created on : Feb 24, 2013, 9:08:18 AM
+    Author     : Alex O'Ree
+--%>
+
+<%@page import="org.apache.commons.lang.StringEscapeUtils"%>
+<%@page import="java.io.IOException"%>
+<%@page import="java.util.jar.Attributes"%>
+<%@page import="java.util.jar.Manifest"%>
+<%@page import="java.io.InputStream"%>
+<%@page import="java.util.jar.JarFile"%>
+<%@page import="java.net.URL"%>
+<%@page import="java.util.Enumeration"%>
+<%@page import="org.apache.juddi.webconsole.resources.ResourceLoader"%>
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+
+</div> <!-- /container -->
+</form>
+<div style="
+     padding: 0px 0px 0px 0px; bottom: 0px; margin: 0px 0px 0px 0px; width:100%; text-align: center; position: fixed; 
+     background-color: white; 
+     "><center><footer><span style="color: red"><b>BETA</b></span> - v<%
+     out.write(StringEscapeUtils.escapeHtml(org.apache.juddi.v3.client.Release.getRegistryVersion()));
+        %> - <a href="http://www.apache.org"><%=ResourceLoader.GetResource(session, "footer.apachecopyright")%></a</footer></center></div>
+</body>
+</html>
+

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/header-top.jsp
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/header-top.jsp?rev=1488448&view=auto
==============================================================================
--- juddi/trunk/juddiv3-war/src/main/webapp/admin/header-top.jsp (added)
+++ juddi/trunk/juddiv3-war/src/main/webapp/admin/header-top.jsp Sat Jun  1 02:07:29 2013
@@ -0,0 +1,176 @@
+<%-- 
+/*
+ * Copyright 2001-2013 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+    Document   : header-top
+    Created on : Feb 24, 2013, 9:08:12 AM
+    Author     : Alex O'Ree
+--%>
+
+<%@page import="org.apache.juddi.webconsole.hub.UddiHub"%>
+<%@page import="org.apache.juddi.webconsole.resources.ResourceLoader"%>
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<!DOCTYPE html>
+<%
+    //this is to catch someone that bookmarked a page after selecting a language
+    Cookie[] cookies2 = request.getCookies();
+    if (cookies2 != null && cookies2.length > 0) {
+        for (int i = 0; i < cookies2.length; i++) {
+            if (cookies2[i] != null && cookies2[i].getName() != null && cookies2[i].getName().equalsIgnoreCase("locale")) {
+                if (cookies2[i].getValue() != null) {
+                    session.setAttribute("locale", cookies2[i].getValue());
+                }
+            }
+        }
+    }
+    if (session.getAttribute("locale") == null) {
+        //last chance, default to english
+        session.setAttribute("locale", "en");
+    }
+%>
+<html lang="<%=(String) session.getAttribute("locale")%>" dir="<%=ResourceLoader.GetResource(session, "direction")%>">
+    <head>
+        <meta charset="utf-8">
+        <title><%=ResourceLoader.GetResource(session, "title")%></title>
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="description" content="<%=ResourceLoader.GetResource(session, "description")%>">
+        <meta name="author" content="Apache Software Foundation">
+
+        <link href="css/bootstrap.min.css" rel="stylesheet">
+        <link href="css/bootstrap-datetimepicker.min.css" rel="stylesheet">
+        <link href="css/bootstrap-timepicker.min.css" rel="stylesheet">
+        <link rel="stylesheet" href="css/font-awesome.min.css">
+        <link rel="stylesheet" href="css/ui-lightness/jquery-ui-1.10.2.custom.min.css">
+        <!--[if IE 7]>
+        <link rel="stylesheet" href="css/font-awesome-ie7.min.css">
+        <![endif]-->
+
+        <link rel="shortcut icon" href="favicon.ico" />
+        <style type="text/css">
+            body {
+                padding-top: 60px;
+                padding-bottom: 40px;
+            }
+        </style>
+        <link href="css/bootstrap-responsive.min.css" rel="stylesheet">
+        <link href="css/bootstrap-modal.css" rel="stylesheet">
+
+        <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
+        <!--[if lt IE 9]>
+          <script src="js/html5shiv.js"></script>
+        <![endif]-->
+
+        <!-- Fav and touch icons -->
+
+        <link rel="shortcut icon" href="ico/favicon.png">
+        <script src="js/jquery-1.9.1.js"></script>
+        <script src="js/i18n.js.jsp"></script>
+        <script src="js/bootstrap.min.js"></script>
+        <script src="js/bootstrap-datetimepicker.min.js"></script>
+        <script src="js/bootstrap-timepicker.min.js"></script>
+        <script src="js/bootstrap-modalmanager.js"></script>
+        <script src="js/bootstrap-modal.js"></script>
+        <script src="js/jquery.jeditable.js"></script>
+        <script src="js/jquery-ui-1.10.2.custom.min.js"></script>
+        <script src="js/main.js"></script>
+    </head>
+
+    <body>
+        <form id="uddiform">
+            <%@include  file="csrf.jsp" %>
+            <input type="hidden" name="nonce" id="nonce" value="<%=StringEscapeUtils.escapeHtml((String) session.getAttribute("nonce"))%>" />
+            <div class="alert" style="display:none; position: fixed; top:45px; width:80%; left: 10%; z-index: 1000; opacity: 1.0; background-color: #FFD530; color:black " id="resultBar">
+            </div>
+            <%
+                UddiHub hub = UddiHub.getInstance(application, session);
+            %>
+
+            <div class="navbar navbar-inverse navbar-fixed-top">
+                <div class="navbar-inner">
+                    <div class="container">
+                        <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+                            <span class="icon-bar"></span>
+                            <span class="icon-bar"></span>
+                            <span class="icon-bar"></span>
+                        </button>
+                        <a class="brand" href="home.jsp" style="padding-left:19px; padding-top:0px; padding-bottom:0px"><img src="img/logo2.png"></a>
+                        <div class="nav-collapse collapse">
+                            <ul class="nav">
+                                <li class="dropdown"><a href="home.jsp" data-toggle="dropdown" class="dropdowb-town"><i class="icon-home icon-large"></i><%=ResourceLoader.GetResource(session, "navbar.home")%><b class="caret"></b></a>
+                                    <ul class="dropdown-menu">
+                                        <li><a href="reginfo.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.create.mybiz.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.create.mybiz")%></a></li>
+                                        <li><a href="assertions.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.publisherassertions.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.publisherassertions")%></a></li>
+                                        <li><a href="transfer.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.transfer.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.transfer")%></a></li>
+                                        <li class="divider"></li>
+                                        <li><a href="viewSubscriptions.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.subscriptions.view.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.subscriptions.view")%></a></li>
+                                        <li><a href="editSubscription.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.subscriptions.create.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.subscriptions.create")%></a></li>
+                                        <li><a href="subscriptionFeed.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.subscriptions.feed.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.subscriptions.feed")%></a></li>
+                                    </ul>
+
+
+                                </li>
+                                <li class="dropdown" ><a href="#" data-toggle="dropdown" class="dropdowb-town"><i class="icon-search icon-large"></i><%=ResourceLoader.GetResource(session, "navbar.discover")%><b class="caret"></b></a>
+                                    <ul class="dropdown-menu">
+                                        <li><a href="businessBrowse.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.businesses.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.businesses")%></a></li>
+                                        <li><a href="serviceBrowse.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.services.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.services")%></a></li>
+                                        <li><a href="tmodelBrowse.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.tmodels.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.tmodels")%></a></li>
+                                        <%//                                        <li><a href="publisherBrowse.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.publishers.tooltip")">ResourceLoader.GetResource(session, "navbar.publishers")</a></li>
+%>
+                                        <li class="divider"> </li>
+
+                                        <li><a href="search.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.search.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.search")%></a></li>
+
+
+                                    </ul>
+                                </li>
+                                <li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdowb-town"><i class="icon-pencil icon-large"></i><%=ResourceLoader.GetResource(session, "navbar.create")%><b class="caret"></b></a>
+                                    <ul class="dropdown-menu">
+                                        <li><a href="businessEditor2.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.create.business.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.create.business")%></a></li>
+                                        <li><a href="businessBrowse.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.create.service.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.create.service")%></a></li>
+                                        <li><a href="importFromWsdl.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.create.serviceimport.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.create.serviceimport")%></a></li>
+                                        <li><a href="tmodelEditor.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.create.tmodel.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.create.tmodel")%></a></li>
+                                        <li><a href="tmodelPartitions.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.create.tmodelkeygen.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.create.tmodelkeygen")%></a></li>
+                                    </ul>
+                                </li>
+
+                                <li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdowb-town"><i class="icon-cog icon-large"></i><%=ResourceLoader.GetResource(session, "navbar.settings")%><b class="caret"></b></a>
+                                    <ul class="dropdown-menu">
+                                        <li><a href="settings.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.settings.config.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.settings.config")%></a></li>
+                                    </ul>
+                                </li>
+
+                                <li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdowb-town"><i class="icon-question-sign icon-large"></i><%=ResourceLoader.GetResource(session, "navbar.help")%> <b class="caret"></b></a>
+                                    <ul class="dropdown-menu">
+                                        <li><a href="http://juddi.apache.org/docs/3.x/userguide/html/index.html" title="<%=ResourceLoader.GetResource(session, "navbar.help.userguide")%>"><%=ResourceLoader.GetResource(session, "navbar.help.userguide")%></a></li>
+                                        <li><a href="http://juddi.apache.org/docs/3.x/devguide/html/index.html" title="<%=ResourceLoader.GetResource(session, "navbar.help.devguide")%>"><%=ResourceLoader.GetResource(session, "navbar.help.devguide")%></a></li>
+                                        <li><a href="http://juddi.apache.org/docs.html" title="<%=ResourceLoader.GetResource(session, "navbar.help.api")%>"><%=ResourceLoader.GetResource(session, "navbar.help.api")%></a></li>
+                                        <li><a href="http://wiki.apache.org/juddi" title="<%=ResourceLoader.GetResource(session, "navbar.help.wiki")%>"><%=ResourceLoader.GetResource(session, "navbar.help.wiki")%></a></li>
+                                        <li><a href="http://juddi.apache.org/issue-tracking.html" title="<%=ResourceLoader.GetResource(session, "navbar.help.bugreport")%>"><%=ResourceLoader.GetResource(session, "navbar.help.bugreport")%></a></li>
+                                        <li><a href="http://juddi.apache.org/" title="<%=ResourceLoader.GetResource(session, "navbar.help.website")%>"><%=ResourceLoader.GetResource(session, "navbar.help.website")%></a></li>
+                                        <li><a href="http://www.nabble.com/jUDDI-f218.html" title="<%=ResourceLoader.GetResource(session, "navbar.help.mailinglist")%>"><%=ResourceLoader.GetResource(session, "navbar.help.mailinglist")%></a></li>
+                                        <li><a href="http://svn.apache.org/viewvc/juddi/" title="<%=ResourceLoader.GetResource(session, "navbar.help.source")%>"><%=ResourceLoader.GetResource(session, "navbar.help.source")%></a></li>
+                                        <li><a href="about.jsp" title="<%=ResourceLoader.GetResource(session, "navbar.help.about.tooltip")%>"><%=ResourceLoader.GetResource(session, "navbar.help.about")%></a></li>
+
+                                    </ul>
+                                </li>
+                            </ul>
+                            <div id="loginfield">
+                                <%@include file="login.jsp" %>
+                            </div>
+                        </div><!--/.nav-collapse -->
+                    </div>
+                </div>
+            </div>

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/home.jsp
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/home.jsp?rev=1488448&view=auto
==============================================================================
--- juddi/trunk/juddiv3-war/src/main/webapp/admin/home.jsp (added)
+++ juddi/trunk/juddiv3-war/src/main/webapp/admin/home.jsp Sat Jun  1 02:07:29 2013
@@ -0,0 +1,39 @@
+<%-- 
+    Document   : index
+    Created on : Feb 23, 2013, 2:05:35 PM
+    Author     : Alex O'Ree
+--%>
+
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<%@include file="header-top.jsp"%>
+
+<div class="container">
+
+    <!-- Main hero unit for a primary marketing message or call to action -->
+    <div class="hero-unit">
+        <h1>jUDDI Administration</h1>
+
+    </div>
+
+    <!-- Example row of columns -->
+    <div class="row">
+
+
+        <div class="span4">
+            <h2>Configure jUDDI</h2>
+            <p><%=ResourceLoader.GetResource(session, "index.browse")%></p>
+            <p><a class="btn" href="businessBrowse.jsp"><%=ResourceLoader.GetResource(session, "viewdetails")%> &raquo;</a></p>
+        </div>
+        <div class="span4">
+            <h2>Status and Statistics</h2>
+            <p><%=ResourceLoader.GetResource(session, "index.search")%></p>
+            <p><a class="btn" href="search.jsp"><%=ResourceLoader.GetResource(session, "viewdetails")%> &raquo;</a></p>
+        </div>
+        <div class="span4">
+            <h2>Administration</h2>
+            <p><%=ResourceLoader.GetResource(session, "index.learn")%></p>
+            <p><a class="btn" href="http://uddi.org/pubs/uddi_v3.htm"><%=ResourceLoader.GetResource(session, "viewdetails")%> &raquo;</a></p>
+        </div>
+
+    </div>
+<%@include file="header-bottom.jsp"%>
\ No newline at end of file

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/ajax-loader.gif
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/img/ajax-loader.gif?rev=1488448&view=auto
==============================================================================
Binary file - no diff available.

Propchange: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/ajax-loader.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/bigrollergreen.gif
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/img/bigrollergreen.gif?rev=1488448&view=auto
==============================================================================
Binary file - no diff available.

Propchange: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/bigrollergreen.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/bluemarble2.jpg
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/img/bluemarble2.jpg?rev=1488448&view=auto
==============================================================================
Binary file - no diff available.

Propchange: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/bluemarble2.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/glyphicons-halflings-white.png
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/img/glyphicons-halflings-white.png?rev=1488448&view=auto
==============================================================================
Binary file - no diff available.

Propchange: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/glyphicons-halflings-white.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/glyphicons-halflings.png
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/img/glyphicons-halflings.png?rev=1488448&view=auto
==============================================================================
Binary file - no diff available.

Propchange: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/glyphicons-halflings.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/juddi_logo_v2.png
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/img/juddi_logo_v2.png?rev=1488448&view=auto
==============================================================================
Binary file - no diff available.

Propchange: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/juddi_logo_v2.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/logo.png
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/img/logo.png?rev=1488448&view=auto
==============================================================================
Binary file - no diff available.

Propchange: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/logo.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/logo2.png
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/img/logo2.png?rev=1488448&view=auto
==============================================================================
Binary file - no diff available.

Propchange: juddi/trunk/juddiv3-war/src/main/webapp/admin/img/logo2.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/index.jsp
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/index.jsp?rev=1488448&view=auto
==============================================================================
--- juddi/trunk/juddiv3-war/src/main/webapp/admin/index.jsp (added)
+++ juddi/trunk/juddiv3-war/src/main/webapp/admin/index.jsp Sat Jun  1 02:07:29 2013
@@ -0,0 +1,116 @@
+<%-- 
+/*
+ * Copyright 2001-2013 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+    Document   : index
+    Created on : Mar 30, 2013, 10:05:37 PM
+    Author     : Alex O'Ree
+
+--%>
+
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<!DOCTYPE html>
+<%
+    Cookie[] cookies = request.getCookies();
+    if (cookies != null && cookies.length > 0) {
+        for (int i = 0; i < cookies.length; i++) {
+            if (cookies[i] != null && cookies[i].getName() != null && cookies[i].getName().equalsIgnoreCase("locale")) {
+                if (cookies[i].getValue() != null) {
+                    session.setAttribute("locale", cookies[i].getValue());
+                    response.sendRedirect("home.jsp");
+                }
+            }
+        }
+    }
+    if (request.getMethod().equalsIgnoreCase("post")) {
+        String lang = request.getParameter("language");
+        String checked=request.getParameter("setcookie");
+        if (lang != null) {
+            session.setAttribute("locale", lang);
+            if (checked != null && checked.equalsIgnoreCase("on")) {
+                Cookie cookie = new Cookie("locale", lang);
+                //TODO this is for debugging purposes 
+                //this is in ms, Maxvalue represents something like 70 years
+                cookie.setMaxAge(Integer.MAX_VALUE);
+                //cookie.setDomain("/UDDIBrowser");
+                cookie.setPath("/UDDIBrowser");
+                response.addCookie(cookie);
+            }
+            response.sendRedirect("home.jsp");
+        }
+    }
+%>
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>Welcome to jUDDI</title>
+        <meta charset="utf-8">
+        <title>Welcome to Apache jUDDI</title>
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="description" content="Apache jUDDI">
+        <meta name="author" content="Apache Software Foundation">
+
+        <!-- Le styles -->
+        <link href="css/bootstrap.css" rel="stylesheet">
+        <link rel="shortcut icon" href="favicon.ico" />
+        <link href="css/bootstrap-responsive.css" rel="stylesheet">
+
+        <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
+        <!--[if lt IE 9]>
+          <script src="js/html5shiv.js"></script>
+        <![endif]-->
+
+        <!-- Fav and touch icons -->
+
+        <link rel="shortcut icon" href="ico/favicon.png">
+        <style type="text/css">
+            body {
+                padding: 0px 0px 0px 0px;
+                margin: 0px 0px 0px 0px;
+            }
+        </style>
+
+    </head>
+    <body>
+        <div style="width:100%; height: 100%; position:absolute; text-align: center; vertical-align: middle; padding: 0px; margin: 0px; 
+             background-image: url('img/bluemarble2.jpg'); background-repeat: no-repeat; background-position-x: center;
+             background-position-y: center; background-size: cover">
+            <div style="color: black; background-color: whitesmoke; 
+                 background: rgb(235, 235, 235); /* Fall-back for browsers that don't
+                                    support rgba */
+                 background: rgba(235, 235, 235, .7);width:60%; position: relative; left:20%; top:25%; height:50%; vertical-align: middle">
+                <br><br>
+                <h1>Welcome to jUDDI</h1>
+                <form method="POST">
+
+                    <select id="language" name="language" >
+                        <option value="en" selected>English</option>
+                        <option value="es" >Español</option>
+                    </select>
+                    <br>
+                    <input type="checkbox" name="setcookie" checked> Remember my decision<br>
+                    <button type="submit" value="Go" class="btn btn-primary">Go</button>
+
+                </form><br>
+                <b>We welcome help internationalizing jUDDI!</b><br>
+                <script type="text/javascript">
+                
+                </script>
+                <noscript>Your browser does not support JavaScript! Functionality will be so severely reduced, that you might as well give up, sorry!</noscript>
+            </div>
+        </div>
+    </body>
+</html>

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/js/bindingChooser.js
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/js/bindingChooser.js?rev=1488448&view=auto
==============================================================================
--- juddi/trunk/juddiv3-war/src/main/webapp/admin/js/bindingChooser.js (added)
+++ juddi/trunk/juddiv3-war/src/main/webapp/admin/js/bindingChooser.js Sat Jun  1 02:07:29 2013
@@ -0,0 +1,180 @@
+/* 
+ * source http://stackoverflow.com/questions/6049687/jquery-ui-dialog-box-need-to-return-value-when-user-presses-button-but-not-wor 
+ * http://stackoverflow.com/questions/3560872/returning-value-from-confirmation-dialog-using-jquery-ui-dialog
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+function reloadBindingModal()
+{
+    RenderBindingListBySearch('%', offsetBinding, maxrecordsBinding, true);
+                      
+}
+
+
+
+var offsetBinding=0; //start at the begining
+var maxrecordsBinding=10;  //record 20 at a time
+var langBinding="en";  //langauge english
+var totalrecordsBinding=0;
+
+RenderBindingListBySearch('%', offsetBinding, maxrecordsBinding, true);
+
+function pagedownChooserBinding()
+{
+    offsetBinding = $("#offsetBinding").text();
+    //alert(offset);
+    var newoffset = offsetBinding - maxrecordsBinding;
+    if (newoffset < 0)
+        return;
+    //alert(newoffset);
+    if (newoffset != offsetBinding)
+        RenderBindingListBySearch('%', newoffset, maxrecordsBinding, true);
+}
+function pageupChooserBinding()
+{
+    offsetBinding = $("#offsetBinding").text();
+    //alert(offset);
+    var fetch = maxrecordsBinding;
+    if ((parseInt(offsetBinding) + parseInt(maxrecordsBinding))  > totalrecordsBinding)
+        //fetch = maxrecords - offset;
+        return;
+    else 
+        fetch = (parseInt(offsetBinding) + parseInt(maxrecordsBinding));    
+    //alert(fetch);
+    offsetBinding = fetch;
+    RenderBindingListBySearch('%', fetch, maxrecordsBinding, true);
+}
+
+
+var selectedItemBinding=null;
+
+//offset, maxrecords, keyword
+function RenderBindingListBySearch(keyword1, offset1, maxrecords1, isForChooser)
+{
+    var lang = $("#langBinding").text();
+    $("#bindinglist").html("<img src=\"img/bigrollergreen.gif\" title=\"Loading\"/>");
+    var request=   $.ajax({
+        url: 'ajax/bindingsearch.jsp?keyword=' + keyword1 + "&offset=" + offset1 + "&maxrecords=" + maxrecords1 + "&lang=" + lang + "&chooser=" + isForChooser,
+        type:"GET",
+        cache: false
+    });
+                  
+    request.done(function(msg) {
+        window.console && console.log('postback done ');                
+        $("#bindinglist").html(msg);
+       
+    //refresh();
+    });
+
+    request.fail(function(jqXHR, textStatus) {
+        window.console && console.log('postback failed ');                                
+        $("#bindinglist").html("An error occured! " + jqXHR.responseText + textStatus);
+    //refresh();
+    });
+/*
+    $.get('ajax/businesssearch.jsp?keyword=' + keyword1 + "&offset=" + offset1 + "&maxrecords=" + maxrecords1 + "&lang=" + lang, function(data) {
+        $("#businesslist").html(data);
+        refresh();
+    });*/
+}
+
+function refreshBinding()
+{
+    var displayrecords = $("#displayrecords").text();
+    if (displayrecords == totalrecordsBinding)
+    {
+        $("#pageupBinding").addClass("disabled");
+        $("#pagedownBinding").addClass("disabled");
+    }
+    else if (offsetBinding + maxrecordsBinding > totalrecordsBinding)
+    {
+        $("#pageupBinding").addClass("disabled");    
+    }
+    else if (offsetBinding ==0)
+    {
+        $("#pagedownBinding").removeClass("disabled");        
+    }
+    else
+    {
+        $("#pagedownBinding").removeClass("disabled");        
+        $("#pageupBinding").removeClass("disabled");        
+    }
+}
+
+/**
+ *This launches the tModel model div, upon return (and if not abprted), the contents of the div parameter will be replaced with the 
+ *first selected tModel
+ */
+function bindingModal(div, type){
+    //reset the form in case it was lanucheed more than once per page view
+    reloadBindingModal();
+    
+    $.dialogBinding.confirm({
+        callback: function(success, result) {
+            if (!success)
+            {
+            //  alert("aborted!");    
+            }
+                
+            else{
+                if (type=='val')
+                    $("#" + div).val(result[0]);
+                else if (type=='html')
+                    $("#" + div).html(result[0]);
+            }
+        //     return false;
+        }
+    });
+// return false;
+}
+            
+            
+function bindingCancel()
+{
+    $(".modalableBinding").each(function()
+    {
+        $(this).prop('checked', false);
+    }); 
+    $('#bindingChooser').modal('hide');
+                
+}
+            
+/**
+ *returns an array of selected tmodel keys
+ */            
+$.dialogBinding = {
+    confirm: function(options) {
+        var $modal = $('#bindingChooser');
+        //$modal.find('.modal-body').text(options.message);
+        
+        $modal.off('click.dialog', '.btn, .close')
+        .off('hidden')
+        .on('click.dialog', '.btn, .close', function() {
+            $(this).addClass('modal-result');
+        }).on('hidden', function() {
+            var result = $(this).find('.modal-result').filter('.btn-primary').length > 0;
+            $(this).find('.modal-result').removeClass('modal-result');
+            /**
+                         * find the result from the model (the selected key)
+                         */
+            var selectedtmodels =  new Array();
+            $(".modalableBinding").each(function()
+            {
+                var id=$(this).attr("id");
+                if ($(this).is(':checked')) {
+                    selectedtmodels.push(
+                        id
+                        );
+                }
+            }); 
+            
+            options.callback(result ,selectedtmodels);
+        //  $modal.modal('hide');
+        });
+        //callback = options.callback;
+        
+        $modal.modal();
+    }        
+};
+

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/js/bootstrap-datetimepicker.min.js
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/js/bootstrap-datetimepicker.min.js?rev=1488448&view=auto
==============================================================================
--- juddi/trunk/juddiv3-war/src/main/webapp/admin/js/bootstrap-datetimepicker.min.js (added)
+++ juddi/trunk/juddiv3-war/src/main/webapp/admin/js/bootstrap-datetimepicker.min.js Sat Jun  1 02:07:29 2013
@@ -0,0 +1,26 @@
+/**
+ * @license
+ * =========================================================
+ * bootstrap-datetimepicker.js 
+ * http://www.eyecon.ro/bootstrap-datepicker
+ * =========================================================
+ * Copyright 2012 Stefan Petre
+ *
+ * Contributions:
+ *  - Andrew Rowls
+ *  - Thiago de Arruda
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * =========================================================
+ */
+(function($){var smartPhone=window.orientation!=undefined;var DateTimePicker=function(element,options){this.id=dpgId++;this.init(element,options)};var dateToDate=function(dt){if(typeof dt==="string"){return new Date(dt)}return dt};DateTimePicker.prototype={constructor:DateTimePicker,init:function(element,options){var icon;if(!(options.pickTime||options.pickDate))throw new Error("Must choose at least one picker");this.options=options;this.$element=$(element);this.language=options.language in dates?options.language:"en";this.pickDate=options.pickDate;this.pickTime=options.pickTime;this.isInput=this.$element.is("input");this.component=false;if(this.$element.is(".input-append")||this.$element.is(".input-prepend"))this.component=this.$element.find(".add-on");this.format=options.format;if(!this.format){if(this.isInput)this.format=this.$element.data("format");else this.format=this.$element.find("input").data("format");if(!this.format)this.format="MM/dd/yyyy"}this._compileFormat();i
 f(this.component){icon=this.component.find("i")}if(this.pickTime){if(icon&&icon.length)this.timeIcon=icon.data("time-icon");if(!this.timeIcon)this.timeIcon="icon-time";icon.addClass(this.timeIcon)}if(this.pickDate){if(icon&&icon.length)this.dateIcon=icon.data("date-icon");if(!this.dateIcon)this.dateIcon="icon-calendar";icon.removeClass(this.timeIcon);icon.addClass(this.dateIcon)}this.widget=$(getTemplate(this.timeIcon,options.pickDate,options.pickTime,options.pick12HourFormat,options.pickSeconds)).appendTo("body");this.minViewMode=options.minViewMode||this.$element.data("date-minviewmode")||0;if(typeof this.minViewMode==="string"){switch(this.minViewMode){case"months":this.minViewMode=1;break;case"years":this.minViewMode=2;break;default:this.minViewMode=0;break}}this.viewMode=options.viewMode||this.$element.data("date-viewmode")||0;if(typeof this.viewMode==="string"){switch(this.viewMode){case"months":this.viewMode=1;break;case"years":this.viewMode=2;break;default:this.viewM
 ode=0;break}}this.startViewMode=this.viewMode;this.weekStart=options.weekStart||this.$element.data("date-weekstart")||0;this.weekEnd=this.weekStart===0?6:this.weekStart-1;this.setStartDate(options.startDate||this.$element.data("date-startdate"));this.setEndDate(options.endDate||this.$element.data("date-enddate"));this.fillDow();this.fillMonths();this.fillHours();this.fillMinutes();this.fillSeconds();this.update();this.showMode();this._attachDatePickerEvents()},show:function(e){this.widget.show();this.height=this.component?this.component.outerHeight():this.$element.outerHeight();this.place();this.$element.trigger({type:"show",date:this._date});this._attachDatePickerGlobalEvents();if(e){e.stopPropagation();e.preventDefault()}},disable:function(){this.$element.find("input").prop("disabled",true);this._detachDatePickerEvents()},enable:function(){this.$element.find("input").prop("disabled",false);this._attachDatePickerEvents()},hide:function(){var collapse=this.widget.find(".coll
 apse");for(var i=0;i<collapse.length;i++){var collapseData=collapse.eq(i).data("collapse");if(collapseData&&collapseData.transitioning)return}this.widget.hide();this.viewMode=this.startViewMode;this.showMode();this.set();this.$element.trigger({type:"hide",date:this._date});this._detachDatePickerGlobalEvents()},set:function(){var formatted="";if(!this._unset)formatted=this.formatDate(this._date);if(!this.isInput){if(this.component){var input=this.$element.find("input");input.val(formatted);this._resetMaskPos(input)}this.$element.data("date",formatted)}else{this.$element.val(formatted);this._resetMaskPos(this.$element)}},setValue:function(newDate){if(!newDate){this._unset=true}else{this._unset=false}if(typeof newDate==="string"){this._date=this.parseDate(newDate)}else if(newDate){this._date=new Date(newDate)}this.set();this.viewDate=UTCDate(this._date.getUTCFullYear(),this._date.getUTCMonth(),1,0,0,0,0);this.fillDate();this.fillTime()},getDate:function(){if(this._unset)return 
 null;return new Date(this._date.valueOf())},setDate:function(date){if(!date)this.setValue(null);else this.setValue(date.valueOf())},setStartDate:function(date){if(date instanceof Date){this.startDate=date}else if(typeof date==="string"){this.startDate=new UTCDate(date);if(!this.startDate.getUTCFullYear()){this.startDate=-Infinity}}else{this.startDate=-Infinity}if(this.viewDate){this.update()}},setEndDate:function(date){if(date instanceof Date){this.endDate=date}else if(typeof date==="string"){this.endDate=new UTCDate(date);if(!this.endDate.getUTCFullYear()){this.endDate=Infinity}}else{this.endDate=Infinity}if(this.viewDate){this.update()}},getLocalDate:function(){if(this._unset)return null;var d=this._date;return new Date(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate(),d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds(),d.getUTCMilliseconds())},setLocalDate:function(localDate){if(!localDate)this.setValue(null);else this.setValue(Date.UTC(localDate.getFullYear(),localDate.g
 etMonth(),localDate.getDate(),localDate.getHours(),localDate.getMinutes(),localDate.getSeconds(),localDate.getMilliseconds()))},place:function(){var offset=this.component?this.component.offset():this.$element.offset();this.widget.css({top:offset.top+this.height,left:offset.left})},notifyChange:function(){this.$element.trigger({type:"changeDate",date:this.getDate(),localDate:this.getLocalDate()})},update:function(newDate){var dateStr=newDate;if(!dateStr){if(this.isInput){dateStr=this.$element.val()}else{dateStr=this.$element.find("input").val()}if(!dateStr){var tmp=new Date;this._date=UTCDate(tmp.getFullYear(),tmp.getMonth(),tmp.getDate(),tmp.getHours(),tmp.getMinutes(),tmp.getSeconds(),tmp.getMilliseconds())}else{this._date=this.parseDate(dateStr)}}this.viewDate=UTCDate(this._date.getUTCFullYear(),this._date.getUTCMonth(),1,0,0,0,0);this.fillDate();this.fillTime()},fillDow:function(){var dowCnt=this.weekStart;var html="<tr>";while(dowCnt<this.weekStart+7){html+='<th class="d
 ow">'+dates[this.language].daysMin[dowCnt++%7]+"</th>"}html+="</tr>";this.widget.find(".datepicker-days thead").append(html)},fillMonths:function(){var html="";var i=0;while(i<12){html+='<span class="month">'+dates[this.language].monthsShort[i++]+"</span>"}this.widget.find(".datepicker-months td").append(html)},fillDate:function(){var year=this.viewDate.getUTCFullYear();var month=this.viewDate.getUTCMonth();var currentDate=UTCDate(this._date.getUTCFullYear(),this._date.getUTCMonth(),this._date.getUTCDate(),0,0,0,0);var startYear=typeof this.startDate==="object"?this.startDate.getUTCFullYear():-Infinity;var startMonth=typeof this.startDate==="object"?this.startDate.getUTCMonth():-1;var endYear=typeof this.endDate==="object"?this.endDate.getUTCFullYear():Infinity;var endMonth=typeof this.endDate==="object"?this.endDate.getUTCMonth():12;this.widget.find(".datepicker-days").find(".disabled").removeClass("disabled");this.widget.find(".datepicker-months").find(".disabled").removeC
 lass("disabled");this.widget.find(".datepicker-years").find(".disabled").removeClass("disabled");this.widget.find(".datepicker-days th:eq(1)").text(dates[this.language].months[month]+" "+year);var prevMonth=UTCDate(year,month-1,28,0,0,0,0);var day=DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(),prevMonth.getUTCMonth());prevMonth.setUTCDate(day);prevMonth.setUTCDate(day-(prevMonth.getUTCDay()-this.weekStart+7)%7);if(year==startYear&&month<=startMonth||year<startYear){this.widget.find(".datepicker-days th:eq(0)").addClass("disabled")}if(year==endYear&&month>=endMonth||year>endYear){this.widget.find(".datepicker-days th:eq(2)").addClass("disabled")}var nextMonth=new Date(prevMonth.valueOf());nextMonth.setUTCDate(nextMonth.getUTCDate()+42);nextMonth=nextMonth.valueOf();var html=[];var clsName;while(prevMonth.valueOf()<nextMonth){if(prevMonth.getUTCDay()===this.weekStart){html.push("<tr>")}clsName="";if(prevMonth.getUTCFullYear()<year||prevMonth.getUTCFullYear()==year&&prevMon
 th.getUTCMonth()<month){clsName+=" old"}else if(prevMonth.getUTCFullYear()>year||prevMonth.getUTCFullYear()==year&&prevMonth.getUTCMonth()>month){clsName+=" new"}if(prevMonth.valueOf()===currentDate.valueOf()){clsName+=" active"}if(prevMonth.valueOf()+864e5<=this.startDate){clsName+=" disabled"}if(prevMonth.valueOf()>this.endDate){clsName+=" disabled"}html.push('<td class="day'+clsName+'">'+prevMonth.getUTCDate()+"</td>");if(prevMonth.getUTCDay()===this.weekEnd){html.push("</tr>")}prevMonth.setUTCDate(prevMonth.getUTCDate()+1)}this.widget.find(".datepicker-days tbody").empty().append(html.join(""));var currentYear=this._date.getUTCFullYear();var months=this.widget.find(".datepicker-months").find("th:eq(1)").text(year).end().find("span").removeClass("active");if(currentYear===year){months.eq(this._date.getUTCMonth()).addClass("active")}if(currentYear-1<startYear){this.widget.find(".datepicker-months th:eq(0)").addClass("disabled")}if(currentYear+1>endYear){this.widget.find(".
 datepicker-months th:eq(2)").addClass("disabled")}for(var i=0;i<12;i++){if(year==startYear&&startMonth>i||year<startYear){$(months[i]).addClass("disabled")}else if(year==endYear&&endMonth<i||year>endYear){$(months[i]).addClass("disabled")}}html="";year=parseInt(year/10,10)*10;var yearCont=this.widget.find(".datepicker-years").find("th:eq(1)").text(year+"-"+(year+9)).end().find("td");this.widget.find(".datepicker-years").find("th").removeClass("disabled");if(startYear>year){this.widget.find(".datepicker-years").find("th:eq(0)").addClass("disabled")}if(endYear<year+9){this.widget.find(".datepicker-years").find("th:eq(2)").addClass("disabled")}year-=1;for(var i=-1;i<11;i++){html+='<span class="year'+(i===-1||i===10?" old":"")+(currentYear===year?" active":"")+(year<startYear||year>endYear?" disabled":"")+'">'+year+"</span>";year+=1}yearCont.html(html)},fillHours:function(){var table=this.widget.find(".timepicker .timepicker-hours table");table.parent().hide();var html="";if(thi
 s.options.pick12HourFormat){var current=1;for(var i=0;i<3;i+=1){html+="<tr>";for(var j=0;j<4;j+=1){var c=current.toString();html+='<td class="hour">'+padLeft(c,2,"0")+"</td>";current++}html+="</tr>"}}else{var current=0;for(var i=0;i<6;i+=1){html+="<tr>";for(var j=0;j<4;j+=1){var c=current.toString();html+='<td class="hour">'+padLeft(c,2,"0")+"</td>";current++}html+="</tr>"}}table.html(html)},fillMinutes:function(){var table=this.widget.find(".timepicker .timepicker-minutes table");table.parent().hide();var html="";var current=0;for(var i=0;i<5;i++){html+="<tr>";for(var j=0;j<4;j+=1){var c=current.toString();html+='<td class="minute">'+padLeft(c,2,"0")+"</td>";current+=3}html+="</tr>"}table.html(html)},fillSeconds:function(){var table=this.widget.find(".timepicker .timepicker-seconds table");table.parent().hide();var html="";var current=0;for(var i=0;i<5;i++){html+="<tr>";for(var j=0;j<4;j+=1){var c=current.toString();html+='<td class="second">'+padLeft(c,2,"0")+"</td>";curre
 nt+=3}html+="</tr>"}table.html(html)},fillTime:function(){if(!this._date)return;var timeComponents=this.widget.find(".timepicker span[data-time-component]");var table=timeComponents.closest("table");var is12HourFormat=this.options.pick12HourFormat;var hour=this._date.getUTCHours();var period="AM";if(is12HourFormat){if(hour>=12)period="PM";if(hour===0)hour=12;else if(hour!=12)hour=hour%12;this.widget.find(".timepicker [data-action=togglePeriod]").text(period)}hour=padLeft(hour.toString(),2,"0");var minute=padLeft(this._date.getUTCMinutes().toString(),2,"0");var second=padLeft(this._date.getUTCSeconds().toString(),2,"0");timeComponents.filter("[data-time-component=hours]").text(hour);timeComponents.filter("[data-time-component=minutes]").text(minute);timeComponents.filter("[data-time-component=seconds]").text(second)},click:function(e){e.stopPropagation();e.preventDefault();this._unset=false;var target=$(e.target).closest("span, td, th");if(target.length===1){if(!target.is(".d
 isabled")){switch(target[0].nodeName.toLowerCase()){case"th":switch(target[0].className){case"switch":this.showMode(1);break;case"prev":case"next":var vd=this.viewDate;var navFnc=DPGlobal.modes[this.viewMode].navFnc;var step=DPGlobal.modes[this.viewMode].navStep;if(target[0].className==="prev")step=step*-1;vd["set"+navFnc](vd["get"+navFnc]()+step);this.fillDate();this.set();break}break;case"span":if(target.is(".month")){var month=target.parent().find("span").index(target);this.viewDate.setUTCMonth(month)}else{var year=parseInt(target.text(),10)||0;this.viewDate.setUTCFullYear(year)}if(this.viewMode!==0){this._date=UTCDate(this.viewDate.getUTCFullYear(),this.viewDate.getUTCMonth(),this.viewDate.getUTCDate(),this._date.getUTCHours(),this._date.getUTCMinutes(),this._date.getUTCSeconds(),this._date.getUTCMilliseconds());this.notifyChange()}this.showMode(-1);this.fillDate();this.set();break;case"td":if(target.is(".day")){var day=parseInt(target.text(),10)||1;var month=this.viewDa
 te.getUTCMonth();var year=this.viewDate.getUTCFullYear();if(target.is(".old")){if(month===0){month=11;year-=1}else{month-=1}}else if(target.is(".new")){if(month==11){month=0;year+=1}else{month+=1}}this._date=UTCDate(year,month,day,this._date.getUTCHours(),this._date.getUTCMinutes(),this._date.getUTCSeconds(),this._date.getUTCMilliseconds());this.viewDate=UTCDate(year,month,Math.min(28,day),0,0,0,0);this.fillDate();this.set();this.notifyChange()}break}}}},actions:{incrementHours:function(e){this._date.setUTCHours(this._date.getUTCHours()+1)},incrementMinutes:function(e){this._date.setUTCMinutes(this._date.getUTCMinutes()+1)},incrementSeconds:function(e){this._date.setUTCSeconds(this._date.getUTCSeconds()+1)},decrementHours:function(e){this._date.setUTCHours(this._date.getUTCHours()-1)},decrementMinutes:function(e){this._date.setUTCMinutes(this._date.getUTCMinutes()-1)},decrementSeconds:function(e){this._date.setUTCSeconds(this._date.getUTCSeconds()-1)},togglePeriod:function(e
 ){var hour=this._date.getUTCHours();if(hour>=12)hour-=12;else hour+=12;this._date.setUTCHours(hour)},showPicker:function(){this.widget.find(".timepicker > div:not(.timepicker-picker)").hide();this.widget.find(".timepicker .timepicker-picker").show()},showHours:function(){this.widget.find(".timepicker .timepicker-picker").hide();this.widget.find(".timepicker .timepicker-hours").show()},showMinutes:function(){this.widget.find(".timepicker .timepicker-picker").hide();this.widget.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){this.widget.find(".timepicker .timepicker-picker").hide();this.widget.find(".timepicker .timepicker-seconds").show()},selectHour:function(e){var tgt=$(e.target);var value=parseInt(tgt.text(),10);if(this.options.pick12HourFormat){var current=this._date.getUTCHours();if(current>=12){if(value!=12)value=(value+12)%24}else{if(value===12)value=0;else value=value%12}}this._date.setUTCHours(value);this.actions.showPicker.call(this)},selectMi
 nute:function(e){var tgt=$(e.target);var value=parseInt(tgt.text(),10);this._date.setUTCMinutes(value);this.actions.showPicker.call(this)},selectSecond:function(e){var tgt=$(e.target);var value=parseInt(tgt.text(),10);this._date.setUTCSeconds(value);this.actions.showPicker.call(this)}},doAction:function(e){e.stopPropagation();e.preventDefault();if(!this._date)this._date=UTCDate(1970,0,0,0,0,0,0);var action=$(e.currentTarget).data("action");var rv=this.actions[action].apply(this,arguments);this.set();this.fillTime();this.notifyChange();return rv},stopEvent:function(e){e.stopPropagation();e.preventDefault()},keydown:function(e){var self=this,k=e.which,input=$(e.target);if(k==8||k==46){setTimeout(function(){self._resetMaskPos(input)})}},keypress:function(e){var k=e.which;if(k==8||k==46){return}var input=$(e.target);var c=String.fromCharCode(k);var val=input.val()||"";val+=c;var mask=this._mask[this._maskPos];if(!mask){return false}if(mask.end!=val.length){return}if(!mask.patter
 n.test(val.slice(mask.start))){val=val.slice(0,val.length-1);while((mask=this._mask[this._maskPos])&&mask.character){val+=mask.character;this._maskPos++}val+=c;if(mask.end!=val.length){input.val(val);return false}else{if(!mask.pattern.test(val.slice(mask.start))){input.val(val.slice(0,mask.start));return false}else{input.val(val);this._maskPos++;return false}}}else{this._maskPos++}},change:function(e){var input=$(e.target);var val=input.val();if(this._formatPattern.test(val)){this.update();this.setValue(this._date.getTime());this.notifyChange();this.set()}else if(val&&val.trim()){this.setValue(this._date.getTime());if(this._date)this.set();else input.val("")}else{if(this._date){this.setValue(null);this.notifyChange();this._unset=true}}this._resetMaskPos(input)},showMode:function(dir){if(dir){this.viewMode=Math.max(this.minViewMode,Math.min(2,this.viewMode+dir))}this.widget.find(".datepicker > div").hide().filter(".datepicker-"+DPGlobal.modes[this.viewMode].clsName).show()},d
 estroy:function(){this._detachDatePickerEvents();this._detachDatePickerGlobalEvents();this.widget.remove();this.$element.removeData("datetimepicker");this.component.removeData("datetimepicker")},formatDate:function(d){return this.format.replace(formatReplacer,function(match){var methodName,property,rv,len=match.length;if(match==="ms")len=1;property=dateFormatComponents[match].property;if(property==="Hours12"){rv=d.getUTCHours();if(rv===0)rv=12;else if(rv!==12)rv=rv%12}else if(property==="Period12"){if(d.getUTCHours()>=12)return"PM";else return"AM"}else{methodName="get"+property;rv=d[methodName]()}if(methodName==="getUTCMonth")rv=rv+1;if(methodName==="getUTCYear")rv=rv+1900-2e3;return padLeft(rv.toString(),len,"0")})},parseDate:function(str){var match,i,property,methodName,value,parsed={};if(!(match=this._formatPattern.exec(str)))return null;for(i=1;i<match.length;i++){property=this._propertiesByIndex[i];if(!property)continue;value=match[i];if(/^\d+$/.test(value))value=parseI
 nt(value,10);parsed[property]=value}return this._finishParsingDate(parsed)},_resetMaskPos:function(input){var val=input.val();for(var i=0;i<this._mask.length;i++){if(this._mask[i].end>val.length){this._maskPos=i;break}else if(this._mask[i].end===val.length){this._maskPos=i+1;break}}},_finishParsingDate:function(parsed){var year,month,date,hours,minutes,seconds,milliseconds;year=parsed.UTCFullYear;if(parsed.UTCYear)year=2e3+parsed.UTCYear;if(!year)year=1970;if(parsed.UTCMonth)month=parsed.UTCMonth-1;else month=0;date=parsed.UTCDate||1;hours=parsed.UTCHours||0;minutes=parsed.UTCMinutes||0;seconds=parsed.UTCSeconds||0;milliseconds=parsed.UTCMilliseconds||0;if(parsed.Hours12){hours=parsed.Hours12}if(parsed.Period12){if(/pm/i.test(parsed.Period12)){if(hours!=12)hours=(hours+12)%24}else{hours=hours%12}}return UTCDate(year,month,date,hours,minutes,seconds,milliseconds)},_compileFormat:function(){var match,component,components=[],mask=[],str=this.format,propertiesByIndex={},i=0,pos=
 0;while(match=formatComponent.exec(str)){component=match[0];if(component in dateFormatComponents){i++;propertiesByIndex[i]=dateFormatComponents[component].property;components.push("\\s*"+dateFormatComponents[component].getPattern(this)+"\\s*");mask.push({pattern:new RegExp(dateFormatComponents[component].getPattern(this)),property:dateFormatComponents[component].property,start:pos,end:pos+=component.length})}else{components.push(escapeRegExp(component));mask.push({pattern:new RegExp(escapeRegExp(component)),character:component,start:pos,end:++pos})}str=str.slice(component.length)}this._mask=mask;this._maskPos=0;this._formatPattern=new RegExp("^\\s*"+components.join("")+"\\s*$");this._propertiesByIndex=propertiesByIndex},_attachDatePickerEvents:function(){var self=this;this.widget.on("click",".datepicker *",$.proxy(this.click,this));this.widget.on("click","[data-action]",$.proxy(this.doAction,this));this.widget.on("mousedown",$.proxy(this.stopEvent,this));if(this.pickDate&&th
 is.pickTime){this.widget.on("click.togglePicker",".accordion-toggle",function(e){e.stopPropagation();var $this=$(this);var $parent=$this.closest("ul");var expanded=$parent.find(".collapse.in");var closed=$parent.find(".collapse:not(.in)");if(expanded&&expanded.length){var collapseData=expanded.data("collapse");if(collapseData&&collapseData.transitioning)return;expanded.collapse("hide");closed.collapse("show");$this.find("i").toggleClass(self.timeIcon+" "+self.dateIcon);self.$element.find(".add-on i").toggleClass(self.timeIcon+" "+self.dateIcon)}})}if(this.isInput){this.$element.on({focus:$.proxy(this.show,this),change:$.proxy(this.change,this)});if(this.options.maskInput){this.$element.on({keydown:$.proxy(this.keydown,this),keypress:$.proxy(this.keypress,this)})}}else{this.$element.on({change:$.proxy(this.change,this)},"input");if(this.options.maskInput){this.$element.on({keydown:$.proxy(this.keydown,this),keypress:$.proxy(this.keypress,this)},"input")}if(this.component){thi
 s.component.on("click",$.proxy(this.show,this))}else{this.$element.on("click",$.proxy(this.show,this))}}},_attachDatePickerGlobalEvents:function(){$(window).on("resize.datetimepicker"+this.id,$.proxy(this.place,this));if(!this.isInput){$(document).on("mousedown.datetimepicker"+this.id,$.proxy(this.hide,this))}},_detachDatePickerEvents:function(){this.widget.off("click",".datepicker *",this.click);this.widget.off("click","[data-action]");this.widget.off("mousedown",this.stopEvent);if(this.pickDate&&this.pickTime){this.widget.off("click.togglePicker")}if(this.isInput){this.$element.off({focus:this.show,change:this.change});if(this.options.maskInput){this.$element.off({keydown:this.keydown,keypress:this.keypress})}}else{this.$element.off({change:this.change},"input");if(this.options.maskInput){this.$element.off({keydown:this.keydown,keypress:this.keypress},"input")}if(this.component){this.component.off("click",this.show)}else{this.$element.off("click",this.show)}}},_detachDateP
 ickerGlobalEvents:function(){$(window).off("resize.datetimepicker"+this.id);if(!this.isInput){$(document).off("mousedown.datetimepicker"+this.id)}}};$.fn.datetimepicker=function(option,val){return this.each(function(){var $this=$(this),data=$this.data("datetimepicker"),options=typeof option==="object"&&option;if(!data){$this.data("datetimepicker",data=new DateTimePicker(this,$.extend({},$.fn.datetimepicker.defaults,options)))}if(typeof option==="string")data[option](val)})};$.fn.datetimepicker.defaults={maskInput:false,pickDate:true,pickTime:true,pick12HourFormat:false,pickSeconds:true,startDate:-Infinity,endDate:Infinity};$.fn.datetimepicker.Constructor=DateTimePicker;var dpgId=0;var dates=$.fn.datetimepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","Ju
 ly","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}};var dateFormatComponents={dd:{property:"UTCDate",getPattern:function(){return"(0?[1-9]|[1-2][0-9]|3[0-1])\\b"}},MM:{property:"UTCMonth",getPattern:function(){return"(0?[1-9]|1[0-2])\\b"}},yy:{property:"UTCYear",getPattern:function(){return"(\\d{2})\\b"}},yyyy:{property:"UTCFullYear",getPattern:function(){return"(\\d{4})\\b"}},hh:{property:"UTCHours",getPattern:function(){return"(0?[0-9]|1[0-9]|2[0-3])\\b"}},mm:{property:"UTCMinutes",getPattern:function(){return"(0?[0-9]|[1-5][0-9])\\b"}},ss:{property:"UTCSeconds",getPattern:function(){return"(0?[0-9]|[1-5][0-9])\\b"}},ms:{property:"UTCMilliseconds",getPattern:function(){return"([0-9]{1,3})\\b"}},HH:{property:"Hours12",getPattern:function(){return"(0?[1-9]|1[0-2])\\b"}},PP:{property:"Period12",getPattern:function(){return"(AM|PM|am|pm|Am|aM|Pm|pM)\\b"}}};var keys=[];for(var k in dat
 eFormatComponents)keys.push(k);keys[keys.length-1]+="\\b";keys.push(".");var formatComponent=new RegExp(keys.join("\\b|"));keys.pop();var formatReplacer=new RegExp(keys.join("\\b|"),"g");function escapeRegExp(str){return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function padLeft(s,l,c){if(l<s.length)return s;else return Array(l-s.length+1).join(c||" ")+s}function getTemplate(timeIcon,pickDate,pickTime,is12Hours,showSeconds){if(pickDate&&pickTime){return'<div class="bootstrap-datetimepicker-widget dropdown-menu">'+"<ul>"+'<li class="collapse in">'+'<div class="datepicker">'+DPGlobal.template+"</div>"+"</li>"+'<li class="picker-switch"><a class="accordion-toggle"><i class="'+timeIcon+'"></i></a></li>'+'<li class="collapse">'+'<div class="timepicker">'+TPGlobal.getTemplate(is12Hours,showSeconds)+"</div>"+"</li>"+"</ul>"+"</div>"}else if(pickTime){return'<div class="bootstrap-datetimepicker-widget dropdown-menu">'+'<div class="timepicker">'+TPGlobal.getTemplate(i
 s12Hours,showSeconds)+"</div>"+"</div>"}else{return'<div class="bootstrap-datetimepicker-widget dropdown-menu">'+'<div class="datepicker">'+DPGlobal.template+"</div>"+"</div>"}}function UTCDate(){return new Date(Date.UTC.apply(Date,arguments))}var DPGlobal={modes:[{clsName:"days",navFnc:"UTCMonth",navStep:1},{clsName:"months",navFnc:"UTCFullYear",navStep:1},{clsName:"years",navFnc:"UTCFullYear",navStep:10}],isLeapYear:function(year){return year%4===0&&year%100!==0||year%400===0},getDaysInMonth:function(year,month){return[31,DPGlobal.isLeapYear(year)?29:28,31,30,31,30,31,31,30,31,30,31][month]},headTemplate:"<thead>"+"<tr>"+'<th class="prev">&lsaquo;</th>'+'<th colspan="5" class="switch"></th>'+'<th class="next">&rsaquo;</th>'+"</tr>"+"</thead>",contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>'};DPGlobal.template='<div class="datepicker-days">'+'<table class="table-condensed">'+DPGlobal.headTemplate+"<tbody></tbody>"+"</table>"+"</div>"+'<div class="datepicker-mont
 hs">'+'<table class="table-condensed">'+DPGlobal.headTemplate+DPGlobal.contTemplate+"</table>"+"</div>"+'<div class="datepicker-years">'+'<table class="table-condensed">'+DPGlobal.headTemplate+DPGlobal.contTemplate+"</table>"+"</div>";var TPGlobal={hourTemplate:'<span data-action="showHours" data-time-component="hours" class="timepicker-hour"></span>',minuteTemplate:'<span data-action="showMinutes" data-time-component="minutes" class="timepicker-minute"></span>',secondTemplate:'<span data-action="showSeconds" data-time-component="seconds" class="timepicker-second"></span>'};TPGlobal.getTemplate=function(is12Hours,showSeconds){return'<div class="timepicker-picker">'+'<table class="table-condensed"'+(is12Hours?' data-hour-format="12"':"")+">"+"<tr>"+'<td><a href="#" class="btn" data-action="incrementHours"><i class="icon-chevron-up"></i></a></td>'+'<td class="separator"></td>'+'<td><a href="#" class="btn" data-action="incrementMinutes"><i class="icon-chevron-up"></i></a></td>'
 +(showSeconds?'<td class="separator"></td>'+'<td><a href="#" class="btn" data-action="incrementSeconds"><i class="icon-chevron-up"></i></a></td>':"")+(is12Hours?'<td class="separator"></td>':"")+"</tr>"+"<tr>"+"<td>"+TPGlobal.hourTemplate+"</td> "+'<td class="separator">:</td>'+"<td>"+TPGlobal.minuteTemplate+"</td> "+(showSeconds?'<td class="separator">:</td>'+"<td>"+TPGlobal.secondTemplate+"</td>":"")+(is12Hours?'<td class="separator"></td>'+"<td>"+'<button type="button" class="btn btn-primary" data-action="togglePeriod"></button>'+"</td>":"")+"</tr>"+"<tr>"+'<td><a href="#" class="btn" data-action="decrementHours"><i class="icon-chevron-down"></i></a></td>'+'<td class="separator"></td>'+'<td><a href="#" class="btn" data-action="decrementMinutes"><i class="icon-chevron-down"></i></a></td>'+(showSeconds?'<td class="separator"></td>'+'<td><a href="#" class="btn" data-action="decrementSeconds"><i class="icon-chevron-down"></i></a></td>':"")+(is12Hours?'<td class="separator"></
 td>':"")+"</tr>"+"</table>"+"</div>"+'<div class="timepicker-hours" data-action="selectHour">'+'<table class="table-condensed">'+"</table>"+"</div>"+'<div class="timepicker-minutes" data-action="selectMinute">'+'<table class="table-condensed">'+"</table>"+"</div>"+(showSeconds?'<div class="timepicker-seconds" data-action="selectSecond">'+'<table class="table-condensed">'+"</table>"+"</div>":"")}})(window.jQuery);
\ No newline at end of file

Added: juddi/trunk/juddiv3-war/src/main/webapp/admin/js/bootstrap-modal.js
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/src/main/webapp/admin/js/bootstrap-modal.js?rev=1488448&view=auto
==============================================================================
--- juddi/trunk/juddiv3-war/src/main/webapp/admin/js/bootstrap-modal.js (added)
+++ juddi/trunk/juddiv3-war/src/main/webapp/admin/js/bootstrap-modal.js Sat Jun  1 02:07:29 2013
@@ -0,0 +1,374 @@
+/* ===========================================================
+ * bootstrap-modal.js v2.1
+ * ===========================================================
+ * Copyright 2012 Jordan Schroter
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+	"use strict"; // jshint ;_;
+
+	/* MODAL CLASS DEFINITION
+	* ====================== */
+
+	var Modal = function (element, options) {
+		this.init(element, options);
+	};
+
+	Modal.prototype = {
+
+		constructor: Modal,
+
+		init: function (element, options) {
+			this.options = options;
+
+			this.$element = $(element)
+				.delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this));
+
+			this.options.remote && this.$element.find('.modal-body').load(this.options.remote);
+
+			var manager = typeof this.options.manager === 'function' ?
+				this.options.manager.call(this) : this.options.manager;
+
+			manager = manager.appendModal ?
+				manager : $(manager).modalmanager().data('modalmanager');
+
+			manager.appendModal(this);
+		},
+
+		toggle: function () {
+			return this[!this.isShown ? 'show' : 'hide']();
+		},
+
+		show: function () {
+			var e = $.Event('show');
+
+			if (this.isShown) return;
+
+			this.$element.trigger(e);
+
+			if (e.isDefaultPrevented()) return;
+
+			this.escape();
+
+			this.tab();
+
+			this.options.loading && this.loading();
+		},
+
+		hide: function (e) {
+			e && e.preventDefault();
+
+			e = $.Event('hide');
+
+			this.$element.trigger(e);
+
+			if (!this.isShown || e.isDefaultPrevented()) return (this.isShown = false);
+
+			this.isShown = false;
+
+			this.escape();
+
+			this.tab();
+
+			this.isLoading && this.loading();
+
+			$(document).off('focusin.modal');
+
+			this.$element
+				.removeClass('in')
+				.removeClass('animated')
+				.removeClass(this.options.attentionAnimation)
+				.removeClass('modal-overflow')
+				.attr('aria-hidden', true);
+
+			$.support.transition && this.$element.hasClass('fade') ?
+				this.hideWithTransition() :
+				this.hideModal();
+		},
+
+		layout: function () {
+			var prop = this.options.height ? 'height' : 'max-height',
+				value = this.options.height || this.options.maxHeight;
+
+			if (this.options.width){
+				this.$element.css('width', this.options.width);
+
+				var that = this;
+				this.$element.css('margin-left', function () {
+					if (/%/ig.test(that.options.width)){
+						return -(parseInt(that.options.width) / 2) + '%';
+					} else {
+						return -($(this).width() / 2) + 'px';
+					}
+				});
+			} else {
+				this.$element.css('width', '');
+				this.$element.css('margin-left', '');
+			}
+
+			this.$element.find('.modal-body')
+				.css('overflow', '')
+				.css(prop, '');
+
+			var modalOverflow = $(window).height() - 10 < this.$element.height();
+
+			if (value){
+				this.$element.find('.modal-body')
+					.css('overflow', 'auto')
+					.css(prop, value);
+			}
+
+			if (modalOverflow || this.options.modalOverflow) {
+				this.$element
+					.css('margin-top', 0)
+					.addClass('modal-overflow');
+			} else {
+				this.$element
+					.css('margin-top', 0 - this.$element.height() / 2)
+					.removeClass('modal-overflow');
+			}
+		},
+
+		tab: function () {
+			var that = this;
+
+			if (this.isShown && this.options.consumeTab) {
+				this.$element.on('keydown.tabindex.modal', '[data-tabindex]', function (e) {
+			    	if (e.keyCode && e.keyCode == 9){
+						var $next = $(this),
+							$rollover = $(this);
+
+						that.$element.find('[data-tabindex]:enabled:not([readonly])').each(function (e) {
+							if (!e.shiftKey){
+						 		$next = $next.data('tabindex') < $(this).data('tabindex') ?
+									$next = $(this) :
+									$rollover = $(this);
+							} else {
+								$next = $next.data('tabindex') > $(this).data('tabindex') ?
+									$next = $(this) :
+									$rollover = $(this);
+							}
+						});
+
+						$next[0] !== $(this)[0] ?
+							$next.focus() : $rollover.focus();
+
+						e.preventDefault();
+					}
+				});
+			} else if (!this.isShown) {
+				this.$element.off('keydown.tabindex.modal');
+			}
+		},
+
+		escape: function () {
+			var that = this;
+			if (this.isShown && this.options.keyboard) {
+				if (!this.$element.attr('tabindex')) this.$element.attr('tabindex', -1);
+
+				this.$element.on('keyup.dismiss.modal', function (e) {
+					e.which == 27 && that.hide();
+				});
+			} else if (!this.isShown) {
+				this.$element.off('keyup.dismiss.modal')
+			}
+		},
+
+		hideWithTransition: function () {
+			var that = this
+				, timeout = setTimeout(function () {
+					that.$element.off($.support.transition.end);
+					that.hideModal();
+				}, 500);
+
+			this.$element.one($.support.transition.end, function () {
+				clearTimeout(timeout);
+				that.hideModal();
+			});
+		},
+
+		hideModal: function () {
+			this.$element
+				.hide()
+				.trigger('hidden');
+
+			var prop = this.options.height ? 'height' : 'max-height';
+			var value = this.options.height || this.options.maxHeight;
+
+			if (value){
+				this.$element.find('.modal-body')
+					.css('overflow', '')
+					.css(prop, '');
+			}
+
+		},
+
+		removeLoading: function () {
+			this.$loading.remove();
+			this.$loading = null;
+			this.isLoading = false;
+		},
+
+		loading: function (callback) {
+			callback = callback || function () {};
+
+			var animate = this.$element.hasClass('fade') ? 'fade' : '';
+
+			if (!this.isLoading) {
+				var doAnimate = $.support.transition && animate;
+
+				this.$loading = $('<div class="loading-mask ' + animate + '">')
+					.append(this.options.spinner)
+					.appendTo(this.$element);
+
+				if (doAnimate) this.$loading[0].offsetWidth; // force reflow
+
+				this.$loading.addClass('in');
+
+				this.isLoading = true;
+
+				doAnimate ?
+					this.$loading.one($.support.transition.end, callback) :
+					callback();
+
+			} else if (this.isLoading && this.$loading) {
+				this.$loading.removeClass('in');
+
+				var that = this;
+				$.support.transition && this.$element.hasClass('fade')?
+					this.$loading.one($.support.transition.end, function () { that.removeLoading() }) :
+					that.removeLoading();
+
+			} else if (callback) {
+				callback(this.isLoading);
+			}
+		},
+
+		focus: function () {
+			var $focusElem = this.$element.find(this.options.focusOn);
+
+			$focusElem = $focusElem.length ? $focusElem : this.$element;
+
+			$focusElem.focus();
+		},
+
+		attention: function (){
+			// NOTE: transitionEnd with keyframes causes odd behaviour
+
+			if (this.options.attentionAnimation){
+				this.$element
+					.removeClass('animated')
+					.removeClass(this.options.attentionAnimation);
+
+				var that = this;
+
+				setTimeout(function () {
+					that.$element
+						.addClass('animated')
+						.addClass(that.options.attentionAnimation);
+				}, 0);
+			}
+
+
+			this.focus();
+		},
+
+
+		destroy: function () {
+			var e = $.Event('destroy');
+			this.$element.trigger(e);
+			if (e.isDefaultPrevented()) return;
+
+			this.teardown();
+		},
+
+		teardown: function () {
+			if (!this.$parent.length){
+				this.$element.remove();
+				this.$element = null;
+				return;
+			}
+
+			if (this.$parent !== this.$element.parent()){
+				this.$element.appendTo(this.$parent);
+			}
+
+			this.$element.off('.modal');
+			this.$element.removeData('modal');
+			this.$element
+				.removeClass('in')
+				.attr('aria-hidden', true);
+		}
+	};
+
+
+	/* MODAL PLUGIN DEFINITION
+	* ======================= */
+
+	$.fn.modal = function (option, args) {
+		return this.each(function () {
+			var $this = $(this),
+				data = $this.data('modal'),
+				options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option);
+
+			if (!data) $this.data('modal', (data = new Modal(this, options)));
+			if (typeof option == 'string') data[option].apply(data, [].concat(args));
+			else if (options.show) data.show()
+		})
+	};
+
+	$.fn.modal.defaults = {
+		keyboard: true,
+		backdrop: true,
+		loading: false,
+		show: true,
+		width: null,
+		height: null,
+		maxHeight: null,
+		modalOverflow: false,
+		consumeTab: true,
+		focusOn: null,
+		replace: false,
+		resize: false,
+		attentionAnimation: 'shake',
+		manager: 'body',
+		spinner: '<div class="loading-spinner" style="width: 200px; margin-left: -100px;"><div class="progress progress-striped active"><div class="bar" style="width: 100%;"></div></div></div>'
+	};
+
+	$.fn.modal.Constructor = Modal;
+
+
+	/* MODAL DATA-API
+	* ============== */
+
+	$(function () {
+		$(document).off('click.modal').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
+			var $this = $(this),
+				href = $this.attr('href'),
+				$target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))), //strip for ie7
+				option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data());
+
+			e.preventDefault();
+			$target
+				.modal(option)
+				.one('hide', function () {
+					$this.focus();
+				})
+		});
+	});
+
+}(window.jQuery);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@juddi.apache.org
For additional commands, e-mail: commits-help@juddi.apache.org