Add common behaviours, better forms look & feel thanks to Formalize (http://formalize.me)

Signed-off-by: Lukasz Dywicki <luke@code-house.org>

git-svn-id: https://svn.apache.org/repos/asf/karaf/webconsole/trunk@1226434 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/karaf/webconsole/core/behavior/CompositeHeaderContributor.java b/core/src/main/java/org/apache/karaf/webconsole/core/behavior/CompositeHeaderContributor.java
new file mode 100644
index 0000000..ff55d0d
--- /dev/null
+++ b/core/src/main/java/org/apache/karaf/webconsole/core/behavior/CompositeHeaderContributor.java
@@ -0,0 +1,28 @@
+package org.apache.karaf.webconsole.core.behavior;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.wicket.behavior.AbstractHeaderContributor;
+import org.apache.wicket.markup.html.IHeaderContributor;
+
+public abstract class CompositeHeaderContributor extends AbstractHeaderContributor {
+
+    private IHeaderContributor[] contributors;
+
+    protected CompositeHeaderContributor(IHeaderContributor ...contributors) {
+        this.contributors = contributors;
+    }
+
+    protected abstract IHeaderContributor[] getOwnHeaderContributors();
+
+    @Override
+    public final IHeaderContributor[] getHeaderContributors() {
+        List<IHeaderContributor> merge = new ArrayList<IHeaderContributor>();
+        Collections.addAll(merge, contributors);
+        Collections.addAll(merge, getOwnHeaderContributors());
+        return merge.toArray(new IHeaderContributor[merge.size()]);
+    }
+
+}
diff --git a/core/src/main/java/org/apache/karaf/webconsole/core/behavior/DraculaBehavior.java b/core/src/main/java/org/apache/karaf/webconsole/core/behavior/DraculaBehavior.java
new file mode 100644
index 0000000..929be37
--- /dev/null
+++ b/core/src/main/java/org/apache/karaf/webconsole/core/behavior/DraculaBehavior.java
@@ -0,0 +1,24 @@
+package org.apache.karaf.webconsole.core.behavior;
+
+import static org.apache.wicket.markup.html.JavascriptPackageResource.getHeaderContribution;
+
+import org.apache.wicket.markup.html.IHeaderContributor;
+
+public class DraculaBehavior extends CompositeHeaderContributor {
+
+    public DraculaBehavior() {
+        super(new JQueryBehavior(), new RaphaelBehavior());
+    }
+
+    @Override
+    protected IHeaderContributor[] getOwnHeaderContributors() {
+        return new IHeaderContributor[] {
+            getHeaderContribution(DraculaBehavior.class, "dracula/Curry-1.0.1.js"),
+            getHeaderContribution(DraculaBehavior.class, "dracula/seedrandom.js"),
+            getHeaderContribution(DraculaBehavior.class, "dracula/dracula_graph.js"),
+            getHeaderContribution(DraculaBehavior.class, "dracula/dracula_graffle.js"),
+            getHeaderContribution(DraculaBehavior.class, "dracula/dracula_algorithms.js"),
+        };
+    }
+}
+
diff --git a/core/src/main/java/org/apache/karaf/webconsole/core/behavior/FormalizeBehavior.java b/core/src/main/java/org/apache/karaf/webconsole/core/behavior/FormalizeBehavior.java
new file mode 100644
index 0000000..7d54384
--- /dev/null
+++ b/core/src/main/java/org/apache/karaf/webconsole/core/behavior/FormalizeBehavior.java
@@ -0,0 +1,22 @@
+package org.apache.karaf.webconsole.core.behavior;
+
+import org.apache.wicket.markup.html.CSSPackageResource;
+import org.apache.wicket.markup.html.IHeaderContributor;
+import org.apache.wicket.markup.html.JavascriptPackageResource;
+
+public class FormalizeBehavior extends CompositeHeaderContributor {
+
+    public FormalizeBehavior() {
+        super(new JQueryBehavior());
+    }
+
+    @Override
+    protected IHeaderContributor[] getOwnHeaderContributors() {
+        return new IHeaderContributor[] {
+            CSSPackageResource.getHeaderContribution(FormalizeBehavior.class, "formalize/formalize.css"),
+            // formalize don't have releases, so we need to use git hash
+            JavascriptPackageResource.getHeaderContribution(FormalizeBehavior.class, "formalize/jquery.formalize-b9528e8.min.js"),
+        };
+    }
+
+}
diff --git a/core/src/main/java/org/apache/karaf/webconsole/core/behavior/JQueryBehavior.java b/core/src/main/java/org/apache/karaf/webconsole/core/behavior/JQueryBehavior.java
new file mode 100644
index 0000000..1e7630e
--- /dev/null
+++ b/core/src/main/java/org/apache/karaf/webconsole/core/behavior/JQueryBehavior.java
@@ -0,0 +1,16 @@
+package org.apache.karaf.webconsole.core.behavior;
+
+import org.apache.wicket.behavior.AbstractHeaderContributor;
+import org.apache.wicket.markup.html.IHeaderContributor;
+import org.apache.wicket.markup.html.JavascriptPackageResource;
+
+public class JQueryBehavior extends AbstractHeaderContributor {
+
+    @Override
+    public IHeaderContributor[] getHeaderContributors() {
+        return new IHeaderContributor[] {
+            JavascriptPackageResource.getHeaderContribution(JQueryBehavior.class, "jquery/jquery-1.4.2.min.js")
+        };
+    }
+
+}
diff --git a/core/src/main/java/org/apache/karaf/webconsole/core/behavior/RaphaelBehavior.java b/core/src/main/java/org/apache/karaf/webconsole/core/behavior/RaphaelBehavior.java
new file mode 100644
index 0000000..ce4fa3e
--- /dev/null
+++ b/core/src/main/java/org/apache/karaf/webconsole/core/behavior/RaphaelBehavior.java
@@ -0,0 +1,16 @@
+package org.apache.karaf.webconsole.core.behavior;
+
+import org.apache.wicket.behavior.AbstractHeaderContributor;
+import org.apache.wicket.markup.html.IHeaderContributor;
+import org.apache.wicket.markup.html.JavascriptPackageResource;
+
+public class RaphaelBehavior extends AbstractHeaderContributor {
+
+    @Override
+    public IHeaderContributor[] getHeaderContributors() {
+        return new IHeaderContributor[] {
+            JavascriptPackageResource.getHeaderContribution(RaphaelBehavior.class, "raphael/raphael-1.3.1.min.js")
+        };
+    }
+
+}
diff --git a/osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/Curry-1.0.1.js b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/dracula/Curry-1.0.1.js
similarity index 100%
rename from osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/Curry-1.0.1.js
rename to core/src/main/resources/org/apache/karaf/webconsole/core/behavior/dracula/Curry-1.0.1.js
diff --git a/osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/dracula_algorithms.js b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/dracula/dracula_algorithms.js
similarity index 100%
rename from osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/dracula_algorithms.js
rename to core/src/main/resources/org/apache/karaf/webconsole/core/behavior/dracula/dracula_algorithms.js
diff --git a/osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/dracula_graffle.js b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/dracula/dracula_graffle.js
similarity index 100%
rename from osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/dracula_graffle.js
rename to core/src/main/resources/org/apache/karaf/webconsole/core/behavior/dracula/dracula_graffle.js
diff --git a/osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/dracula_graph.js b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/dracula/dracula_graph.js
similarity index 100%
rename from osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/dracula_graph.js
rename to core/src/main/resources/org/apache/karaf/webconsole/core/behavior/dracula/dracula_graph.js
diff --git a/osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/seedrandom.js b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/dracula/seedrandom.js
similarity index 100%
rename from osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/seedrandom.js
rename to core/src/main/resources/org/apache/karaf/webconsole/core/behavior/dracula/seedrandom.js
diff --git a/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/formalize/formalize.css b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/formalize/formalize.css
new file mode 100644
index 0000000..2abfe35
--- /dev/null
+++ b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/formalize/formalize.css
@@ -0,0 +1,374 @@
+.input_tiny {
+  width: 50px;
+}
+
+.input_small {
+  width: 100px;
+}
+
+.input_medium {
+  width: 150px;
+}
+
+.input_large {
+  width: 200px;
+}
+
+.input_xlarge {
+  width: 250px;
+}
+
+.input_xxlarge {
+  width: 300px;
+}
+
+.input_full {
+  width: 100%;
+}
+
+.input_full_wrap {
+  display: block;
+  padding-right: 8px;
+}
+
+::-moz-focus-inner {
+  border: 0;
+  padding: 0;
+}
+
+input[type="search"]::-webkit-search-decoration {
+  display: none;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+  position: relative;
+  vertical-align: top;
+  top: 3px;
+  top: 0 \0;
+  *top: -3px;
+}
+
+@media (-webkit-min-device-pixel-ratio: 1) and (max-device-width: 1024px) {
+  input[type="radio"],
+  input[type="checkbox"] {
+    vertical-align: baseline;
+    top: 2px;
+  }
+}
+@media (-webkit-min-device-pixel-ratio: 1) and (max-device-width: 480px) {
+  input[type="radio"],
+  input[type="checkbox"] {
+    vertical-align: baseline;
+    top: 0;
+  }
+}
+@media (-webkit-min-device-pixel-ratio: 2) and (max-device-width: 480px) {
+  input[type="radio"],
+  input[type="checkbox"] {
+    vertical-align: baseline;
+    top: 0;
+  }
+}
+input,
+button,
+select,
+textarea {
+  margin: 0;
+  vertical-align: middle;
+}
+
+button:focus,
+input:focus,
+select:focus,
+textarea:focus {
+  -webkit-box-shadow: #0066ff 0 0 7px 0;
+  -moz-box-shadow: #0066ff 0 0 7px 0;
+  -o-box-shadow: #0066ff 0 0 7px 0;
+  box-shadow: #0066ff 0 0 7px 0;
+  z-index: 1;
+}
+
+input[type="file"]:focus, input[type="file"]:active,
+input[type="radio"]:focus,
+input[type="radio"]:active,
+input[type="checkbox"]:focus,
+input[type="checkbox"]:active {
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+}
+
+button,
+input[type="reset"],
+input[type="submit"],
+input[type="button"] {
+  -webkit-appearance: none;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-background-clip: padding;
+  -moz-background-clip: padding;
+  -ms-background-clip: padding-box;
+  -o-background-clip: padding-box;
+  background-clip: padding-box;
+  background: #dddddd url('../images/button.png?1298351022') repeat-x;
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
+  background-image: -webkit-linear-gradient(#ffffff, #dddddd);
+  background-image: -moz-linear-gradient(#ffffff, #dddddd);
+  background-image: -o-linear-gradient(#ffffff, #dddddd);
+  background-image: -ms-linear-gradient(#ffffff, #dddddd);
+  background-image: linear-gradient(#ffffff, #dddddd);
+  border: 1px solid;
+  border-color: #dddddd #bbbbbb #999999;
+  cursor: pointer;
+  color: #333333;
+  font: bold 12px/1.3 "Helvetica Neue", Arial, "Liberation Sans", FreeSans, sans-serif;
+  outline: 0;
+  overflow: visible;
+  padding: 3px 10px;
+  text-shadow: white 0 1px 1px;
+  width: auto;
+  *padding-top: 2px;
+  *padding-bottom: 0;
+}
+button:hover,
+input[type="reset"]:hover,
+input[type="submit"]:hover,
+input[type="button"]:hover {
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(1px, #eeeeee), color-stop(100%, #cccccc));
+  background-image: -webkit-linear-gradient(#ffffff, #eeeeee 1px, #cccccc);
+  background-image: -moz-linear-gradient(#ffffff, #eeeeee 1px, #cccccc);
+  background-image: -o-linear-gradient(#ffffff, #eeeeee 1px, #cccccc);
+  background-image: -ms-linear-gradient(#ffffff, #eeeeee 1px, #cccccc);
+  background-image: linear-gradient(#ffffff, #eeeeee 1px, #cccccc);
+}
+button:active,
+input[type="reset"]:active,
+input[type="submit"]:active,
+input[type="button"]:active {
+  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(1px, #dddddd), color-stop(100%, #eeeeee));
+  background-image: -webkit-linear-gradient(#ffffff, #dddddd 1px, #eeeeee);
+  background-image: -moz-linear-gradient(#ffffff, #dddddd 1px, #eeeeee);
+  background-image: -o-linear-gradient(#ffffff, #dddddd 1px, #eeeeee);
+  background-image: -ms-linear-gradient(#ffffff, #dddddd 1px, #eeeeee);
+  background-image: linear-gradient(#ffffff, #dddddd 1px, #eeeeee);
+  -webkit-box-shadow: inset rgba(0, 0, 0, 0.25) 0 1px 2px 0;
+  -moz-box-shadow: inset rgba(0, 0, 0, 0.25) 0 1px 2px 0;
+  -o-box-shadow: inset rgba(0, 0, 0, 0.25) 0 1px 2px 0;
+  box-shadow: inset rgba(0, 0, 0, 0.25) 0 1px 2px 0;
+  border-color: #999999 #bbbbbb #dddddd;
+}
+
+button {
+  *padding-top: 1px;
+  *padding-bottom: 1px;
+}
+
+textarea,
+select,
+input[type="date"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="email"],
+input[type="month"],
+input[type="number"],
+input[type="password"],
+input[type="search"],
+input[type="tel"],
+input[type="text"],
+input[type="time"],
+input[type="url"],
+input[type="week"] {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  box-sizing: border-box;
+  -webkit-background-clip: padding;
+  -moz-background-clip: padding;
+  -ms-background-clip: padding-box;
+  -o-background-clip: padding-box;
+  background-clip: padding-box;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  -ms-border-radius: 0;
+  -o-border-radius: 0;
+  border-radius: 0;
+  -webkit-appearance: none;
+  background-color: white;
+  border: 1px solid;
+  border-color: #848484 #c1c1c1 #e1e1e1;
+  color: black;
+  outline: 0;
+  padding: 2px 3px;
+  text-align: left;
+  font-size: 13px;
+  font-family: Arial, "Liberation Sans", FreeSans, sans-serif;
+  height: 1.8em;
+  *padding-top: 2px;
+  *padding-bottom: 1px;
+  *height: auto;
+}
+textarea[disabled],
+select[disabled],
+input[type="date"][disabled],
+input[type="datetime"][disabled],
+input[type="datetime-local"][disabled],
+input[type="email"][disabled],
+input[type="month"][disabled],
+input[type="number"][disabled],
+input[type="password"][disabled],
+input[type="search"][disabled],
+input[type="tel"][disabled],
+input[type="text"][disabled],
+input[type="time"][disabled],
+input[type="url"][disabled],
+input[type="week"][disabled] {
+  background-color: #eeeeee;
+}
+
+button[disabled],
+input[disabled],
+select[disabled],
+select[disabled] option,
+select[disabled] optgroup,
+textarea[disabled] {
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+  -moz-user-select: -moz-none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  user-select: none;
+  color: #888888;
+  cursor: default;
+}
+
+::-webkit-input-placeholder {
+  color: #888888;
+}
+
+input:-moz-placeholder,
+textarea:-moz-placeholder {
+  color: #888888;
+}
+
+input.placeholder_text,
+textarea.placeholder_text {
+  color: #888888;
+}
+
+:invalid {
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  -o-box-shadow: none;
+  box-shadow: none;
+}
+
+textarea,
+select[size],
+select[multiple] {
+  height: auto;
+}
+
+@media (-webkit-min-device-pixel-ratio: 0) {
+  select[size],
+  select[multiple] {
+    background-image: none;
+    padding-right: 3px;
+  }
+
+  select,
+  select[size="0"],
+  select[size="1"] {
+    background-image: url('../images/select_arrow.gif?1298351050');
+    background-repeat: no-repeat;
+    background-position: right center;
+    padding-right: 20px;
+    height: 1.8em;
+  }
+
+  ::-webkit-validation-bubble-message {
+    -webkit-box-shadow: rgba(0, 0, 0, 0.5) 0 0 5px 0;
+    box-shadow: rgba(0, 0, 0, 0.5) 0 0 5px 0;
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #666666), color-stop(1, black));
+    border: 1px solid;
+    border-color: #747474 #5e5e5e #4f4f4f;
+    color: white;
+    font: 13px/17px "Lucida Grande", Arial, "Liberation Sans", FreeSans, sans-serif;
+    overflow: hidden;
+    padding: 15px 15px 17px;
+    text-shadow: black 0 0 1px;
+    height: 16px;
+  }
+
+  ::-webkit-validation-bubble-arrow,
+  ::-webkit-validation-bubble-top-outer-arrow,
+  ::-webkit-validation-bubble-top-inner-arrow {
+    -webkit-box-shadow: none;
+    box-shadow: none;
+    background: #666666;
+    border: 0;
+  }
+}
+textarea {
+  min-height: 40px;
+  overflow: auto;
+  resize: vertical;
+  width: 100%;
+}
+
+optgroup {
+  color: black;
+  font-style: normal;
+  font-weight: normal;
+}
+
+.ie6_button,
+* html button {
+  background: #dddddd url('../images/button.png?1298351022') repeat-x;
+  border: 1px solid;
+  border-color: #dddddd #bbbbbb #999999;
+  cursor: pointer;
+  color: #333333;
+  font: bold 12px/1.2 Arial, sans-serif;
+  padding: 2px 10px 0px;
+  overflow: visible;
+  width: auto;
+}
+
+* html button {
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
+
+.ie6_input,
+* html textarea,
+* html select {
+  background: white;
+  border: 1px solid;
+  border-color: #848484 #c1c1c1 #e1e1e1;
+  color: black;
+  padding: 2px 3px 1px;
+  font-size: 13px;
+  font-family: Arial, sans-serif;
+  vertical-align: top;
+}
+
+* html select {
+  margin-top: 1px;
+}
+
+.placeholder_text,
+.ie6_input_disabled,
+.ie6_button_disabled {
+  color: #888888;
+}
+
+.ie6_input_disabled {
+  background: #eeeeee;
+}
diff --git a/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/formalize/images/button.png b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/formalize/images/button.png
new file mode 100644
index 0000000..c465162
--- /dev/null
+++ b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/formalize/images/button.png
Binary files differ
diff --git a/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/formalize/images/select_arrow.gif b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/formalize/images/select_arrow.gif
new file mode 100644
index 0000000..004c3bf
--- /dev/null
+++ b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/formalize/images/select_arrow.gif
Binary files differ
diff --git a/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/formalize/jquery.formalize-b9528e8.min.js b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/formalize/jquery.formalize-b9528e8.min.js
new file mode 100644
index 0000000..55540ee
--- /dev/null
+++ b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/formalize/jquery.formalize-b9528e8.min.js
@@ -0,0 +1 @@
+var FORMALIZE=function(a,b,c){var d="placeholder"in c.createElement("input"),e="autofocus"in c.createElement("input"),f=!!a.browser.msie&&parseInt(a.browser.version,10)===6,g=!!a.browser.msie&&parseInt(a.browser.version,10)===7;return{go:function(){for(var a in FORMALIZE.init)FORMALIZE.init[a]()},init:{full_input_size:function(){g&&a("textarea, input.input_full").length&&a("textarea, input.input_full").wrap('<span class="input_full_wrap"></span>')},ie6_skin_inputs:function(){if(f&&a("input, select, textarea").length){var b=/button|submit|reset/,c=/date|datetime|datetime-local|email|month|number|password|range|search|tel|text|time|url|week/;a("input").each(function(){var d=a(this);this.getAttribute("type").match(b)?(d.addClass("ie6_button"),this.disabled&&d.addClass("ie6_button_disabled")):this.getAttribute("type").match(c)&&(d.addClass("ie6_input"),this.disabled&&d.addClass("ie6_input_disabled"))}),a("textarea, select").each(function(){this.disabled&&a(this).addClass("ie6_input_disabled")})}},autofocus:function(){e||!a(":input[autofocus]").length||a(":input[autofocus]:visible:first").focus()},placeholder:function(){!d&&!!a(":input[placeholder]").length&&(FORMALIZE.misc.add_placeholder(),a(":input[placeholder]").each(function(){if(this.type!=="password"){var b=a(this),c=b.attr("placeholder");b.focus(function(){b.val()===c&&b.val("").removeClass("placeholder_text")}).blur(function(){FORMALIZE.misc.add_placeholder()}),b.closest("form").submit(function(){b.val()===c&&b.val("").removeClass("placeholder_text")}).bind("reset",function(){setTimeout(FORMALIZE.misc.add_placeholder,50)})}}))}},misc:{add_placeholder:function(){d||!a(":input[placeholder]").length||a(":input[placeholder]").each(function(){if(this.type!=="password"){var b=a(this),c=b.attr("placeholder");(!b.val()||b.val()===c)&&b.val(c).addClass("placeholder_text")}})}}}}(jQuery,this,this.document);jQuery(document).ready(function(){FORMALIZE.go()})
\ No newline at end of file
diff --git a/osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/jquery-1.4.2.min.js b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/jquery/jquery-1.4.2.min.js
similarity index 100%
rename from osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/jquery-1.4.2.min.js
rename to core/src/main/resources/org/apache/karaf/webconsole/core/behavior/jquery/jquery-1.4.2.min.js
diff --git a/osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/raphael-min.js b/core/src/main/resources/org/apache/karaf/webconsole/core/behavior/raphael/raphael-1.3.1.min.js
similarity index 100%
rename from osgi/blueprint/src/main/resources/org/apache/karaf/webconsole/osgi/blueprint/details/raphael-min.js
rename to core/src/main/resources/org/apache/karaf/webconsole/core/behavior/raphael/raphael-1.3.1.min.js