diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/index.html b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/index.html
index 45dfa442afe78f83b6b9ea7e26bf763374861b3c..878d1bcd967ace329b6c42993b26d75b6e68091d 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/index.html
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/index.html
@@ -30,6 +30,7 @@
 	<link type="text/css" rel="stylesheet" href="./lib/bootstrap-switch/css/toggle-switch.css" />
 	<link type="text/css" rel="stylesheet" href="./lib/jquery-jnotify/css/jNotify.sis.jquery.css" />
 	<link type="text/css" rel="stylesheet" href="./lib/jquery-tooltipster/css/tooltipster.css" />
+	<link type="text/css" rel="stylesheet" href="./lib/fuelux/css/fuelux.min.css" />
 	
 	<!-- ELN UI Stylesheets -->
 	<link type="text/css" rel="stylesheet" href="./css/style.css" />
@@ -56,11 +57,13 @@
 	<script type="text/javascript" src="./lib/jquery-blockui/js/jquery.blockUI.js"></script>
 	<script type="text/javascript" src="./lib/jquery-history/js/bundled/html5/jquery.history.js"></script>
 	<script type="text/javascript" src="./lib/jquery-tooltipster/js/jquery.tooltipster.min.js"></script>
+	<script type="text/javascript" src="./lib/fuelux/js/fuelux.min.js"></script>
 	<script type="text/javascript" src="./lib/d3/js/d3.min.js"></script>
 	<script type="text/javascript" src="./lib/d3-dagre/js/dagre-d3.min.js"></script>
 	<script type="text/javascript" src="./lib/naturalsort/js/naturalSort.js"></script>
 	<script type="text/javascript" src="./lib/mozilla/js/infra.js"></script>
 	<script type="text/javascript" src="./lib/filesaver/js/FileSaver.js"></script>
+	<script type="text/javascript" src="./lib/grid/js/Grid.js"></script>
 	
 	<!-- ELN UI -->
 	<script type="text/javascript" src="./js/controllers/MainController.js"></script>
@@ -106,7 +109,11 @@
 	<script type="text/javascript" src="./js/views/StickersNavigator/StickersNavigatorModel.js"></script>
 	<script type="text/javascript" src="./js/views/StickersNavigator/StickersNavigatorView.js"></script>
 	 -->
-	 
+	
+	<script type="text/javascript" src="./js/views/DataGrid/DataGridController.js"></script>
+	<script type="text/javascript" src="./js/views/DataGrid/DataGridModel.js"></script>
+	<script type="text/javascript" src="./js/views/DataGrid/DataGridView.js"></script>
+	
 	<script type="text/javascript" src="./js/views/SampleForm/SampleFormController.js"></script>
 	<script type="text/javascript" src="./js/views/SampleForm/SampleFormModel.js"></script>
 	<script type="text/javascript" src="./js/views/SampleForm/SampleFormView.js"></script>
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js
index cd34f5a6bfc1b333ae456f6c9996d77075c6047a..106f35c92420d1671377df776d9dba4986a24d7a 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js
@@ -507,7 +507,10 @@ function MainController(profile) {
 					localReference.serverFacade.searchOnSearchDomain(searchDomain, value, function(data) {
 						if(localSearchId === localReference.lastSearchId) {
 							$("#search").removeClass("search-query-searching");
-							var asdf = 0;
+							var dataGrid = new DataGridController(localReference, null);
+							localReference.currentView = dataGrid;
+							dataGrid.init($("#mainContainer"));
+							history.pushState(null, "", ""); //History Push State
 						} else {
 							//Discard old response, was triggered but a new one was started
 						}
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataGrid/DataGridController.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataGrid/DataGridController.js
new file mode 100644
index 0000000000000000000000000000000000000000..99fc79d9b399bf791187ad3a8e562687e79beaa4
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataGrid/DataGridController.js
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2014 ETH Zuerich, Scientific IT Services
+ *
+ * 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 DataGridController(mainController, data) {
+	this._mainController = mainController;
+	this._dataGridModel = new DataGridModel(data);
+	this._dataGridView = new DataGridView(this, this._dataGridModel);
+	
+	this.init = function($container) {
+		this._dataGridView.repaint($container);
+	}
+}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataGrid/DataGridModel.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataGrid/DataGridModel.js
new file mode 100644
index 0000000000000000000000000000000000000000..952f40d21f5ded27e2688c1696688e4b52b36668
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataGrid/DataGridModel.js
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2014 ETH Zuerich, Scientific IT Services
+ *
+ * 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 DataGridModel(data) {
+	this.data = data;
+}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataGrid/DataGridView.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataGrid/DataGridView.js
new file mode 100644
index 0000000000000000000000000000000000000000..ece86d6eb95e4382356decb3c7a47e59eb2915bf
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataGrid/DataGridView.js
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2014 ETH Zuerich, Scientific IT Services
+ *
+ * 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 DataGridView(dataGridController, dataGridModel) {
+	this._dataGridController = dataGridController;
+	this._dataGridModel = dataGridModel;
+	
+	this.repaint = function($container) {
+		$container.empty();
+		$container.append("Hello World!");
+	}
+}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/LICENSE.txt b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..81f5ac3ea411d601c5597780540f3f298a76a54d
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/LICENSE.txt
@@ -0,0 +1 @@
+Licensed under the BSD-3-Clause license
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/VERSION.txt b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/VERSION.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d9c62ed923329477e5de742a0fdf392d55cdbce3
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/VERSION.txt
@@ -0,0 +1 @@
+3.0.2
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/css/fuelux.css b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/css/fuelux.css
new file mode 100644
index 0000000000000000000000000000000000000000..d0a7cd74544aa8c19276818f7c03f4295b269a1b
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/css/fuelux.css
@@ -0,0 +1,1657 @@
+/*!
+ * Fuel UX v3.0.2 
+ * Copyright 2012-2014 ExactTarget
+ * Licensed under the BSD-3-Clause license ()
+ */
+
+.fuelux {
+  
+}@charset "UTF-8";
+.fuelux .clearfix {
+  *zoom: 1;
+}
+.fuelux .clearfix:before,
+.fuelux .clearfix:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.fuelux .clearfix:after {
+  clear: both;
+}
+@font-face {
+  font-family: "fuelux";
+  src: url("../fonts/fuelux.eot");
+  src: url("../fonts/fuelux.eot?#iefix") format("embedded-opentype"), url("../fonts/fuelux.woff") format("woff"), url("../fonts/fuelux.ttf") format("truetype"), url("../fonts/fuelux.svg#fuelux") format("svg");
+  font-weight: normal;
+  font-style: normal;
+}
+.fuelux [class^="fueluxicon-"]:before,
+.fuelux [class*=" fueluxicon-"]:before {
+  font-family: "fuelux" !important;
+  font-style: normal !important;
+  font-weight: normal !important;
+  font-variant: normal !important;
+  text-transform: none !important;
+  line-height: 1;
+  speak: none;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.fuelux .fueluxicon-loader-full:before {
+  content: "\e000";
+}
+.fuelux .fueluxicon-loader-1:before {
+  content: "\e001";
+}
+.fuelux .fueluxicon-loader-2:before {
+  content: "\e002";
+}
+.fuelux .fueluxicon-loader-3:before {
+  content: "\e003";
+}
+.fuelux .fueluxicon-loader-4:before {
+  content: "\e004";
+}
+.fuelux .fueluxicon-loader-5:before {
+  content: "\e005";
+}
+.fuelux .fueluxicon-loader-6:before {
+  content: "\e006";
+}
+.fuelux .fueluxicon-loader-7:before {
+  content: "\e007";
+}
+.fuelux .fueluxicon-loader-8:before {
+  content: "\e008";
+}
+.fuelux .fueluxicon-bullet:before {
+  content: "\e009";
+}
+.fuelux .checkbox {
+  /* for keyboard tabbing */
+}
+.fuelux .checkbox.highlight {
+  padding: 4px;
+}
+.fuelux .checkbox.highlight.checked {
+  background: #e9e9e9;
+  border-radius: 4px;
+}
+.fuelux .checkbox input[type="checkbox"]:focus + .checkbox-label,
+.fuelux .checkbox input[type="checkbox"]:hover + .checkbox-label,
+.fuelux .checkbox .checkbox-label:hover {
+  color: #999999;
+}
+.fuelux .checkbox-custom {
+  position: relative;
+  /* for keyboard tabbing */
+}
+.fuelux .checkbox-custom:before {
+  font-family: "Glyphicons Halflings" !important;
+  font-style: normal !important;
+  font-weight: normal !important;
+  font-variant: normal !important;
+  text-transform: none !important;
+  line-height: 1;
+  speak: none;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  border: 1px solid #adadad;
+  border-radius: 4px;
+  color: #fff;
+  content: " ";
+  font-size: 9px;
+  height: 14px;
+  left: 0px;
+  padding: 1px 0 0 1px;
+  position: absolute;
+  top: 3px;
+  width: 14px;
+}
+.fuelux .checkbox-custom.checked:before {
+  background: #39b3d7;
+  border-color: #39b3d7;
+  content: "\e013";
+}
+.fuelux .checkbox-custom.disabled {
+  cursor: not-allowed;
+}
+.fuelux .checkbox-custom.disabled:before {
+  cursor: not-allowed;
+  opacity: .5;
+}
+.fuelux .checkbox-custom.checkbox-inline:before {
+  left: 0;
+  top: 3px;
+}
+.fuelux .checkbox-custom.checkbox-inline.highlight {
+  padding: 4px 4px 4px 24px;
+}
+.fuelux .checkbox-custom.checkbox-inline.highlight:before {
+  left: 4px;
+  top: 7px;
+}
+.fuelux .checkbox-custom.checkbox-inline.highlight.checked {
+  background: #e9e9e9;
+  border-radius: 4px;
+}
+.fuelux .checkbox-custom input[type="checkbox"]:focus + .checkbox-label {
+  color: #999999;
+}
+.fuelux .combobox.disabled .input-group-btn {
+  cursor: not-allowed;
+}
+.fuelux .datepicker-calendar {
+  padding: 16px 16px 0;
+  min-height: 262px;
+}
+.fuelux .datepicker-calendar button {
+  border: 0;
+  padding: 0;
+  background-color: transparent;
+}
+.fuelux .datepicker-calendar-days {
+  height: 182px;
+  margin: 10px 0 12px;
+  width: 100%;
+  /* for spacing */
+}
+.fuelux .datepicker-calendar-days thead {
+  border-bottom: 1px solid #cccaca;
+}
+.fuelux .datepicker-calendar-days tbody:before {
+  line-height: 3px;
+  content: "\200C";
+  display: block;
+}
+.fuelux .datepicker-calendar-days td,
+.fuelux .datepicker-calendar-days th {
+  font-size: 14px;
+  height: 32px;
+  text-align: center;
+  vertical-align: middle;
+  width: 14.29%;
+}
+.fuelux .datepicker-calendar-days td button {
+  color: #231f20;
+  display: inline-block;
+  height: 30px;
+  text-decoration: none;
+  width: 30px;
+}
+.fuelux .datepicker-calendar-days td span {
+  display: block;
+}
+.fuelux .datepicker-calendar-days td span:hover {
+  background: #b7e3f8;
+  text-decoration: none;
+}
+.fuelux .datepicker-calendar-days td.current-day button {
+  border: 1px solid #1d75bb;
+}
+.fuelux .datepicker-calendar-days td.last-month,
+.fuelux .datepicker-calendar-days td.next-month {
+  background: #e3e2e1;
+}
+.fuelux .datepicker-calendar-days td.past button {
+  color: #8d8787;
+}
+.fuelux .datepicker-calendar-days td.restricted button {
+  cursor: no-drop;
+  position: relative;
+}
+.fuelux .datepicker-calendar-days td.restricted button:before {
+  border-top: 1px solid #a94442;
+  bottom: 0;
+  content: " ";
+  display: block;
+  left: 5px;
+  position: absolute;
+  right: 5px;
+  top: 50%;
+}
+.fuelux .datepicker-calendar-days td.restricted button:hover {
+  background: none;
+}
+.fuelux .datepicker-calendar-days td.selected span {
+  background: #1d75bb;
+}
+.fuelux .datepicker-calendar-days td.selected span:hover {
+  background: #0f5f9f;
+}
+.fuelux .datepicker-calendar-days td.selected button {
+  color: #fff;
+}
+.fuelux .datepicker-calendar-days td.selected.current-day {
+  box-shadow: 0 0 0 1px #fff offset;
+}
+.fuelux .datepicker-calendar-days th {
+  font-weight: bold;
+  height: 22px;
+  vertical-align: top;
+}
+.fuelux .datepicker-calendar-header {
+  *zoom: 1;
+}
+.fuelux .datepicker-calendar-header:before,
+.fuelux .datepicker-calendar-header:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.fuelux .datepicker-calendar-header:after {
+  clear: both;
+}
+.fuelux .datepicker-calendar-header button {
+  border: 0;
+  padding: 0;
+  background-color: transparent;
+}
+.fuelux .datepicker-calendar-header .title {
+  margin: 0 auto;
+  text-align: center;
+  display: block;
+  width: 174px;
+  color: #4d4d4f;
+  font-size: 20px;
+  line-height: 30px;
+  text-decoration: underline;
+  vertical-align: middle;
+}
+.fuelux .datepicker-calendar-header .title:hover {
+  color: #1d75bb;
+  text-decoration: underline;
+}
+.fuelux .datepicker-calendar-header .title.disabled {
+  cursor: default;
+  pointer-events: none;
+  text-decoration: none;
+}
+.fuelux .datepicker-calendar-header .title .month {
+  display: inline;
+  margin: 0;
+  padding: 0;
+}
+.fuelux .datepicker-calendar-header .title .month span {
+  display: none;
+}
+.fuelux .datepicker-calendar-header .title .month span.current {
+  display: inline;
+}
+.fuelux .datepicker-calendar-header .next,
+.fuelux .datepicker-calendar-header .prev {
+  background: #666669;
+  background-clip: padding-box;
+  border-radius: 30px;
+  cursor: pointer;
+  float: left;
+  height: 30px;
+  text-align: center;
+  width: 30px;
+}
+.fuelux .datepicker-calendar-header .next span.glyphicon,
+.fuelux .datepicker-calendar-header .prev span.glyphicon {
+  color: #fff;
+  font-size: 16px;
+  line-height: 30px;
+}
+.fuelux .datepicker-calendar-header .next:hover,
+.fuelux .datepicker-calendar-header .prev:hover {
+  background: #1d75bb;
+}
+.fuelux .datepicker-calendar-header .next {
+  float: right;
+}
+.fuelux .datepicker-calendar-header .next span.glyphicon {
+  line-height: 28px;
+}
+.fuelux .datepicker-calendar-footer {
+  background: #e3e2e1;
+  background-clip: padding-box;
+  border-radius: 0 0 4px 4px;
+  border-top: 1px solid #cccaca;
+  height: 30px;
+  margin: 0 -16px;
+  padding: 4px 14px;
+}
+.fuelux .datepicker-calendar-footer .datepicker-today {
+  color: #231f20;
+  font-size: 14px;
+  text-decoration: underline;
+}
+.fuelux .datepicker-calendar-footer .datepicker-today:hover {
+  color: #1b75bb;
+  text-decoration: underline;
+}
+.fuelux .datepicker-calendar-footer .datepicker-today.disabled {
+  color: #8b8c8e;
+  cursor: default;
+  pointer-events: none;
+}
+.fuelux .datepicker-calendar-footer .datepicker-today.disabled:hover {
+  color: #8b8c8e;
+}
+.fuelux .datepicker-calendar-wrapper {
+  border: 1px solid #6e6f71;
+  min-height: 20px;
+  padding: 0;
+  width: 300px;
+}
+.fuelux .datepicker-wheels {
+  display: none;
+}
+.fuelux .datepicker-wheels ul button {
+  border: 0;
+  padding: 0;
+  background-color: transparent;
+}
+.fuelux .datepicker-wheels-footer {
+  background: #e3e2e1;
+  border-radius: 0 0 4px 4px;
+  border-top: 1px solid #cccaca;
+  clear: both;
+}
+.fuelux .datepicker-wheels-footer .datepicker-wheels-back {
+  display: block;
+  color: #4d4d4f;
+  float: left;
+  line-height: 22px;
+  border: 0;
+  background-color: transparent;
+}
+.fuelux .datepicker-wheels-footer .datepicker-wheels-back:hover {
+  color: #1d75bb;
+}
+.fuelux .datepicker-wheels-footer .datepicker-wheels-select {
+  float: right;
+  background-color: transparent;
+  color: #049cdb;
+}
+.fuelux .datepicker-wheels-footer .datepicker-wheels-select:hover {
+  color: #1d75bb;
+}
+.fuelux .datepicker-wheels-month,
+.fuelux .datepicker-wheels-year {
+  float: left;
+  width: 50%;
+}
+.fuelux .datepicker-wheels-month ul,
+.fuelux .datepicker-wheels-year ul {
+  height: 217px;
+  list-style-type: none;
+  margin: 0;
+  overflow: auto;
+  padding: 0;
+  text-align: center;
+}
+.fuelux .datepicker-wheels-month ul li,
+.fuelux .datepicker-wheels-year ul li {
+  margin: 4px 0;
+}
+.fuelux .datepicker-wheels-month ul li button,
+.fuelux .datepicker-wheels-year ul li button {
+  width: 100%;
+  text-align: center;
+  color: #414041;
+  display: block;
+  font-size: 16px;
+  line-height: 24px;
+  text-decoration: none;
+}
+.fuelux .datepicker-wheels-month ul li button:hover,
+.fuelux .datepicker-wheels-year ul li button:hover {
+  background: #aee0f8;
+  text-decoration: none;
+}
+.fuelux .datepicker-wheels-month ul li.selected button,
+.fuelux .datepicker-wheels-year ul li.selected button {
+  background: #1d75bb;
+  color: #fff;
+}
+.fuelux .datepicker-wheels-month ul li.selected button:hover,
+.fuelux .datepicker-wheels-year ul li.selected button:hover {
+  background: #0f5f9f;
+}
+.fuelux .datepicker-wheels-month .header,
+.fuelux .datepicker-wheels-year .header {
+  background: #e3e2e1;
+  background-clip: padding-box;
+  border-bottom: 1px solid #cccaca;
+  border-radius: 4px 0 0 0;
+  color: #4d4d4f;
+  font-size: 20px;
+  font-weight: bold;
+  line-height: 30px;
+  margin-top: 0;
+  margin-bottom: 0;
+  text-align: center;
+}
+.fuelux .datepicker-wheels-month.full,
+.fuelux .datepicker-wheels-year.full {
+  border-left: 0;
+  width: 100%;
+}
+.fuelux .datepicker-wheels-month.full .header,
+.fuelux .datepicker-wheels-year.full .header {
+  border-radius: 4px 4px 0 0;
+}
+.fuelux .datepicker-wheels-year {
+  border-left: 1px solid #cccaca;
+  float: right;
+}
+.fuelux .datepicker-wheels-year .header {
+  border-radius: 0 4px 0 0;
+}
+.fuelux .infinitescroll {
+  overflow-y: auto;
+}
+.fuelux .infinitescroll .infinitescroll-end {
+  clear: both;
+  font-style: italic;
+  padding: 6px;
+  text-align: center;
+}
+.fuelux .infinitescroll .infinitescroll-load {
+  clear: both;
+  padding: 6px;
+}
+.fuelux .infinitescroll .infinitescroll-load button {
+  padding: 5px 12px;
+  width: 100%;
+}
+.fuelux .infinitescroll .infinitescroll-load .loader {
+  font-size: 32px;
+  height: 32px;
+  margin: 0 auto;
+  width: 32px;
+}
+.fuelux .dropUp {
+  -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
+  -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
+}
+.fuelux .loader {
+  height: 64px;
+  font-size: 64px;
+  position: relative;
+  width: 64px;
+}
+.fuelux .loader:after,
+.fuelux .loader:before {
+  font-family: "fuelux" !important;
+  font-style: normal !important;
+  font-weight: normal !important;
+  font-variant: normal !important;
+  text-transform: none !important;
+  line-height: 1;
+  speak: none;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  bottom: 0;
+  display: block;
+  left: 0;
+  position: absolute;
+  right: 0;
+  top: 0;
+}
+.fuelux .loader:before {
+  content: '\e000';
+  opacity: 0.33;
+}
+.fuelux .loader.iefix:before {
+  color: #bcbcbc;
+  opacity: 1;
+}
+.fuelux .loader[data-frame="1"]:after {
+  content: '\e001';
+}
+.fuelux .loader[data-frame="2"]:after {
+  content: '\e002';
+}
+.fuelux .loader[data-frame="3"]:after {
+  content: '\e003';
+}
+.fuelux .loader[data-frame="4"]:after {
+  content: '\e004';
+}
+.fuelux .loader[data-frame="5"]:after {
+  content: '\e005';
+}
+.fuelux .loader[data-frame="6"]:after {
+  content: '\e006';
+}
+.fuelux .loader[data-frame="7"]:after {
+  content: '\e007';
+}
+.fuelux .loader[data-frame="8"]:after {
+  content: '\e008';
+}
+.fuelux input.glass,
+.fuelux textarea.glass {
+  background: transparent;
+  border: 1px solid #fff;
+  box-shadow: none;
+}
+.fuelux input.glass:hover,
+.fuelux textarea.glass:hover {
+  background: #d9edf7;
+  border-color: #66afe9;
+  cursor: pointer;
+}
+.fuelux input.glass:hover[disabled],
+.fuelux textarea.glass:hover[disabled] {
+  background: transparent;
+  border-color: #fff;
+  cursor: not-allowed;
+}
+.fuelux input.glass:focus,
+.fuelux textarea.glass:focus {
+  background: #fff;
+  border-color: #66afe9;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
+  cursor: auto;
+}
+.fuelux input.glass:focus[disabled],
+.fuelux textarea.glass:focus[disabled] {
+  background: transparent;
+  border-color: #fff;
+  cursor: not-allowed;
+}
+.fuelux input.glass[disabled],
+.fuelux textarea.glass[disabled] {
+  cursor: not-allowed;
+}
+.fuelux [data-toggle="buttons"] > .btn > input[type="radio"],
+.fuelux [data-toggle="buttons"] > .btn > input[type="checkbox"] {
+  display: inline;
+  position: absolute;
+  left: -9999px;
+}
+.fuelux .pillbox {
+  border: 1px solid #BBBBBB;
+  border-radius: 4px;
+  cursor: text;
+  padding: 3px;
+}
+.fuelux .pillbox[data-readonly] {
+  border: 1px solid transparent;
+}
+.fuelux .pillbox[data-readonly].truncate .pillbox-input-wrap {
+  display: inline-block;
+}
+.fuelux .pillbox[data-readonly].truncate .pillbox-input-wrap.truncated {
+  display: none;
+}
+.fuelux .pillbox[data-readonly].truncate .pillbox-more {
+  display: inline;
+}
+.fuelux .pillbox[data-readonly] .pill span.glyphicon-close {
+  display: none;
+}
+.fuelux .pillbox[data-readonly] .pillbox-add-item {
+  display: none;
+}
+.fuelux .pillbox[data-readonly] .pillbox-input-wrap {
+  display: none;
+}
+.fuelux .pillbox[data-readonly] .pillbox-input-wrap button.dropdown-toggle {
+  display: none;
+}
+.fuelux .pillbox.pills-editable .pill-group .pill span {
+  cursor: text;
+}
+.fuelux .pillbox.pills-editable .pill-group .pill span.glyphicon-close {
+  cursor: pointer;
+}
+.fuelux .pillbox > .pill-group {
+  margin: 0;
+  padding: 0;
+  width: 100%;
+}
+.fuelux .pillbox > .pill-group > .pill {
+  margin: 2px;
+  cursor: default;
+  float: left;
+  word-break: break-all;
+}
+.fuelux .pillbox > .pill-group > .pill.pillbox-highlight {
+  outline: 1px dotted #999999;
+}
+.fuelux .pillbox > .pill-group > .pill.truncated {
+  display: none;
+}
+.fuelux .pillbox > .pill-group > .pill .pillbox-list-edit {
+  border: none;
+  color: #333333;
+  font-weight: normal;
+  border-radius: 2px;
+}
+.fuelux .pillbox > .pill-group > .pill .pillbox-list-edit:focus {
+  outline: none;
+  border: none;
+}
+.fuelux .pillbox > .pill-group > .pill .glyphicon-close {
+  cursor: pointer;
+  top: -1px;
+  left: 2px;
+}
+.fuelux .pillbox > .pill-group > .pill .glyphicon-close:before {
+  content: " \00d7";
+}
+.fuelux .pillbox > .pill-group > .pill .glyphicon-close:hover {
+  opacity: .4;
+}
+.fuelux .pillbox .pillbox-input-wrap {
+  position: relative;
+  margin: 4px 0 3px 3px;
+  float: left;
+}
+.fuelux .pillbox .pillbox-input-wrap.editing {
+  border: 1px solid #ccc;
+  border-radius: 4px;
+  margin: 2px 0 3px 3px;
+}
+.fuelux .pillbox .pillbox-input-wrap.editing input.pillbox-add-item {
+  border-radius: 4px;
+  color: #333;
+  height: 32px;
+}
+.fuelux .pillbox .pillbox-add-item {
+  border: none;
+  box-shadow: none;
+}
+.fuelux .pillbox .pillbox-add-item:focus {
+  outline: none;
+  border: none;
+}
+.fuelux .pillbox .pillbox-more {
+  cursor: pointer;
+  display: none;
+  line-height: 30px;
+}
+.fuelux .pillbox .suggest {
+  max-height: 166px;
+  overflow-y: auto;
+}
+.fuelux .pillbox .suggest > li {
+  white-space: nowrap;
+  cursor: pointer;
+  padding: 3px 20px;
+}
+.fuelux .pillbox .suggest > li.pillbox-suggest-sel {
+  background-color: #eeeeee;
+}
+.fuelux .pillbox .suggest > li:hover {
+  background-color: #eeeeee;
+}
+.fuelux .placard {
+  display: inline-block;
+  position: relative;
+}
+.fuelux .placard[data-ellipsis="true"].showing input.placard-field {
+  overflow: visible;
+  text-overflow: clip;
+  white-space: normal;
+}
+.fuelux .placard[data-ellipsis="true"] input.placard-field {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.fuelux .placard[data-ellipsis="true"] textarea.placard-field[readonly] {
+  overflow: hidden;
+}
+.fuelux .placard.showing .placard-footer,
+.fuelux .placard.showing .placard-header,
+.fuelux .placard.showing .placard-popup {
+  display: block;
+  z-index: 1;
+}
+.fuelux .placard.showing input.placard-field,
+.fuelux .placard.showing textarea.placard-field {
+  background: #fff;
+  border: 1px solid #CCCCCC;
+  box-shadow: none;
+  position: relative;
+  z-index: 1;
+}
+.fuelux .placard input.placard-field,
+.fuelux .placard textarea.placard-field {
+  resize: none;
+}
+.fuelux .placard input.placard-field[readonly],
+.fuelux .placard textarea.placard-field[readonly] {
+  background: #fff;
+  cursor: auto;
+}
+.fuelux .placard input.placard-field[readonly].glass,
+.fuelux .placard textarea.placard-field[readonly].glass {
+  background: none;
+}
+.fuelux .placard input.placard-field[readonly].glass:hover,
+.fuelux .placard textarea.placard-field[readonly].glass:hover {
+  background: #d9edf7;
+  cursor: pointer;
+}
+.fuelux .placard input.placard-field:focus,
+.fuelux .placard textarea.placard-field:focus {
+  border: 1px solid #CCCCCC;
+  box-shadow: none;
+}
+.fuelux .placard-cancel {
+  font-size: 12px;
+  margin-right: 4px;
+  vertical-align: middle;
+}
+.fuelux .placard-footer,
+.fuelux .placard-header {
+  display: none;
+  left: 0;
+  line-height: 1;
+  position: absolute;
+  right: 0;
+}
+.fuelux .placard-footer {
+  padding: 4px 0 8px 0;
+  text-align: right;
+  top: 100%;
+}
+.fuelux .placard-header {
+  bottom: 100%;
+  padding: 8px 0 4px 0;
+}
+.fuelux .placard-header h1,
+.fuelux .placard-header h2,
+.fuelux .placard-header h3,
+.fuelux .placard-header h4,
+.fuelux .placard-header h5,
+.fuelux .placard-header h6 {
+  margin: 0;
+}
+.fuelux .placard-popup {
+  background: #d9edf7;
+  background-clip: padding-box;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+  bottom: -8px;
+  box-shadow: 0 0 0 1px #fff inset;
+  display: none;
+  left: -8px;
+  position: absolute;
+  right: -8px;
+  top: -8px;
+}
+.fuelux .radio {
+  /* for keyboard tabbing */
+}
+.fuelux .radio.highlight {
+  padding: 4px;
+}
+.fuelux .radio.highlight.checked {
+  background: #e9e9e9;
+  border-radius: 4px;
+}
+.fuelux .radio input[type="radio"]:focus + .radio-label,
+.fuelux .radio input[type="radio"]:hover + .radio-label,
+.fuelux .radio .radio-label:hover {
+  color: #999999;
+}
+.fuelux .radio-custom {
+  position: relative;
+  /* for keyboard tabbing */
+}
+.fuelux .radio-custom:after {
+  background: transparent;
+  border-radius: 6px;
+  content: " ";
+  height: 6px;
+  left: 4px;
+  position: absolute;
+  top: 7px;
+  width: 6px;
+}
+.fuelux .radio-custom:before {
+  border: 1px solid #adadad;
+  border-radius: 14px;
+  content: " ";
+  height: 14px;
+  left: 0px;
+  position: absolute;
+  top: 3px;
+  width: 14px;
+}
+.fuelux .radio-custom.checked:after {
+  background: #fff;
+}
+.fuelux .radio-custom.checked:before {
+  background: #39b3d7;
+  border-color: #39b3d7;
+}
+.fuelux .radio-custom.disabled {
+  cursor: not-allowed;
+}
+.fuelux .radio-custom.disabled:after {
+  cursor: not-allowed;
+}
+.fuelux .radio-custom.disabled:before {
+  cursor: not-allowed;
+  opacity: .5;
+}
+.fuelux .radio-custom.radio-inline:after {
+  left: 4px;
+  top: 7px;
+}
+.fuelux .radio-custom.radio-inline:before {
+  left: 0;
+  top: 3px;
+}
+.fuelux .radio-custom.radio-inline.highlight {
+  padding: 4px 4px 4px 24px;
+}
+.fuelux .radio-custom.radio-inline.highlight:after {
+  left: 8px;
+  top: 11px;
+}
+.fuelux .radio-custom.radio-inline.highlight:before {
+  left: 4px;
+  top: 7px;
+}
+.fuelux .radio-custom.radio-inline.highlight.checked {
+  background: #e9e9e9;
+  border-radius: 4px;
+}
+.fuelux .radio-custom input[type="radio"]:focus + .radio-label {
+  color: #999999;
+}
+.fuelux .repeater {
+  border: 1px solid #ddd;
+  border-radius: 4px;
+}
+.fuelux .repeater-canvas.scrolling {
+  bottom: 0;
+  left: 0;
+  overflow-y: auto;
+  position: absolute;
+  right: 0;
+  top: 0;
+}
+.fuelux .repeater-header,
+.fuelux .repeater-footer {
+  background: #f9f9f9;
+  min-height: 50px;
+  padding: 8px;
+  *zoom: 1;
+}
+.fuelux .repeater-header:before,
+.fuelux .repeater-footer:before,
+.fuelux .repeater-header:after,
+.fuelux .repeater-footer:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.fuelux .repeater-header:after,
+.fuelux .repeater-footer:after {
+  clear: both;
+}
+.fuelux .repeater-header-left,
+.fuelux .repeater-footer-left {
+  float: left;
+}
+.fuelux .repeater-header-right,
+.fuelux .repeater-footer-right {
+  float: right;
+}
+@media (max-width: 625px) {
+  .fuelux .repeater-header-left,
+  .fuelux .repeater-footer-left,
+  .fuelux .repeater-header-right,
+  .fuelux .repeater-footer-right {
+    float: none;
+    *zoom: 1;
+  }
+  .fuelux .repeater-header-left:before,
+  .fuelux .repeater-footer-left:before,
+  .fuelux .repeater-header-right:before,
+  .fuelux .repeater-footer-right:before,
+  .fuelux .repeater-header-left:after,
+  .fuelux .repeater-footer-left:after,
+  .fuelux .repeater-header-right:after,
+  .fuelux .repeater-footer-right:after {
+    display: table;
+    content: "";
+    line-height: 0;
+  }
+  .fuelux .repeater-header-left:after,
+  .fuelux .repeater-footer-left:after,
+  .fuelux .repeater-header-right:after,
+  .fuelux .repeater-footer-right:after {
+    clear: both;
+  }
+  .fuelux .repeater-header-left,
+  .fuelux .repeater-footer-left {
+    margin-bottom: 8px;
+  }
+}
+.fuelux .repeater-header {
+  border-bottom: 1px solid #ddd;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.fuelux .repeater-footer {
+  border-top: 1px solid #ddd;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.fuelux .repeater-loader {
+  display: none;
+  left: 50%;
+  position: absolute;
+  margin: -32px 0 0 -32px;
+  top: 50%;
+}
+.fuelux .repeater-viewport {
+  min-height: 80px;
+  position: relative;
+}
+.fuelux .repeater-pagination label {
+  font-weight: normal;
+}
+.fuelux .repeater-pagination .repeater-primaryPaging {
+  display: none;
+  vertical-align: middle;
+  width: 116px;
+}
+.fuelux .repeater-pagination .repeater-primaryPaging.active {
+  display: inline-block;
+}
+.fuelux .repeater-pagination .repeater-primaryPaging ul.dropdown-menu {
+  min-width: 116px;
+}
+.fuelux .repeater-pagination .repeater-secondaryPaging {
+  display: none;
+  width: 82px;
+}
+.fuelux .repeater-pagination .repeater-secondaryPaging.active {
+  display: inline-block;
+}
+.fuelux .repeater-search {
+  float: left;
+  width: 200px;
+}
+.fuelux .repeater-title {
+  display: block;
+  float: left;
+  line-height: 34px;
+  margin-right: 10px;
+}
+.fuelux .repeater[data-currentview="list"] .repeater-loader {
+  margin-top: -12px;
+}
+.fuelux .repeater[data-currentview="list"] .repeater-loader.noHeader {
+  margin-top: -32px;
+}
+.fuelux .repeater-list-check {
+  display: inline-block;
+  height: 0;
+  line-height: 0;
+  position: relative;
+  vertical-align: top;
+  width: 0;
+}
+.fuelux .repeater-list-check span.glyphicon {
+  left: -22px;
+  position: absolute;
+  top: 2px;
+}
+.fuelux .repeater-list-header,
+.fuelux .repeater-list-items {
+  margin-bottom: 0;
+  width: 100%;
+}
+.fuelux .repeater-list-header td,
+.fuelux .repeater-list-items td {
+  border-bottom: 1px solid #ddd;
+  border-left: 1px solid #ddd;
+  border-top: none;
+}
+.fuelux .repeater-list-header td:first-child,
+.fuelux .repeater-list-items td:first-child {
+  border-left: none;
+}
+.fuelux .repeater-list-header {
+  background: #F9F9F9;
+}
+.fuelux .repeater-list-header td {
+  font-weight: bold;
+}
+.fuelux .repeater-list-header td.sortable:hover,
+.fuelux .repeater-list-header td.sortable.sorted {
+  background: #F1F1F1;
+  cursor: pointer;
+  background-color: #f1f1f1;
+  background-image: -moz-linear-gradient(top, #f9f9f9, #e5e5e5);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(#e5e5e5));
+  background-image: -webkit-linear-gradient(top, #f9f9f9, #e5e5e5);
+  background-image: -o-linear-gradient(top, #f9f9f9, #e5e5e5);
+  background-image: linear-gradient(to bottom, #f9f9f9, #e5e5e5);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#ffe5e5e5', GradientType=0);
+}
+.fuelux .repeater-list-header td.sortable.sorted span.glyphicon {
+  display: block;
+}
+.fuelux .repeater-list-header td span.glyphicon {
+  display: none;
+  float: right;
+  margin-top: 2px;
+}
+.fuelux .repeater-list-items tr.empty td {
+  border-bottom: none;
+  font-style: italic;
+  padding: 20px;
+  text-align: center;
+  width: 100%;
+}
+.fuelux .repeater-list-items tr.selectable:hover {
+  background: #d9edf7;
+  cursor: pointer;
+}
+.fuelux .repeater-list-items tr.selected {
+  background: #66AFE9;
+  color: #fff;
+}
+.fuelux .repeater-list-items tr.selected:hover {
+  background: #428bca;
+}
+.fuelux .repeater-list-items tr.selected td:first-child {
+  padding-left: 30px;
+}
+.fuelux .repeater-list-wrapper {
+  overflow-y: auto;
+}
+.fuelux .repeater-thumbnail {
+  border: 1px solid #ddd;
+  color: #666;
+  float: left;
+  font-size: 12px;
+  height: 130px;
+  line-height: 36px;
+  margin: 10px 12px;
+  text-align: center;
+  width: 100px;
+  -webkit-box-shadow: 0 1px 4px 0 #ddd;
+  box-shadow: 0 1px 4px 0 #ddd;
+}
+.fuelux .repeater-thumbnail img {
+  display: block;
+  margin-top: 12px;
+}
+.fuelux .repeater-thumbnail-cont {
+  height: 100%;
+  overflow-y: auto;
+  padding: 10px;
+  width: 100%;
+}
+.fuelux .repeater-thumbnail-cont div.empty {
+  font-style: italic;
+  padding: 20px 10px;
+  text-align: center;
+}
+.fuelux .spinbox {
+  display: inline-block;
+  position: relative;
+}
+.fuelux .spinbox.digits-3 {
+  width: 60px;
+}
+.fuelux .spinbox.disabled .spinbox-buttons {
+  cursor: not-allowed;
+}
+.fuelux .spinbox .spinbox-input {
+  float: left;
+  padding-bottom: 3px;
+  /* Magic number */
+  padding: 0px 25px 0px 7px;
+}
+.fuelux .spinbox .btn {
+  position: relative;
+  width: 20px;
+  height: 13px;
+  padding-top: 0;
+  padding-right: 9px;
+  padding-left: 9px;
+}
+.fuelux .spinbox .btn.disabled {
+  cursor: not-allowed;
+}
+.fuelux .spinbox .spinbox-buttons {
+  position: absolute;
+  height: 28px;
+  width: 20px;
+  right: 2px;
+}
+.fuelux .spinbox .spinbox-up {
+  padding: 0 0 14px 1px;
+  top: 2px;
+}
+.fuelux .spinbox .spinbox-up .glyphicon-chevron-up {
+  position: relative;
+  top: 0px;
+}
+.fuelux .spinbox .btn-group > .btn.spinbox-up {
+  border-top-right-radius: 4px;
+}
+.fuelux .spinbox .spinbox-down {
+  padding: 0 0 8px 1px;
+  top: 2px;
+  height: 15px;
+  border-bottom-left-radius: 4px;
+}
+.fuelux .spinbox .spinbox-down .glyphicon-chevron-down {
+  position: relative;
+  left: -1px;
+  top: 0px;
+}
+.fuelux .scheduler {
+  /* -------------------------------
+	START DATE/TIME
+------------------------------- */
+  /* -------------------------------
+	TIMEZONE
+------------------------------- */
+  /* -------------------------------
+	REPEAT PANELS
+------------------------------- */
+  /* -------------------------------
+END
+------------------------------- */
+}
+.fuelux .scheduler .control-label {
+  min-width: 7em;
+}
+.fuelux .scheduler .inline-form-text {
+  float: left;
+  line-height: 27px;
+  margin-top: 4px;
+}
+.fuelux .scheduler .start-datetime.form-group {
+  margin-bottom: 0;
+}
+.fuelux .scheduler .start-datetime .form-group {
+  margin-left: 0;
+}
+.fuelux .scheduler .start-datetime .combobox {
+  max-width: 9em;
+}
+.fuelux .scheduler .start-datetime .combobox .dropdown-menu {
+  max-height: 200px;
+  overflow: auto;
+}
+.fuelux .scheduler .start-datetime .dropdown {
+  float: left;
+  margin: 0 10px 0 0;
+}
+.fuelux .scheduler .timezone-container .input-group {
+  max-width: 20em;
+}
+.fuelux .scheduler .timezone-container .dropdown-label {
+  height: 18px;
+  white-space: nowrap;
+  max-width: 20em;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.fuelux .scheduler .timezone-container .dropdown-menu {
+  max-height: 200px;
+  overflow: auto;
+}
+.fuelux .scheduler .repeat-panel {
+  margin-left: 0;
+}
+.fuelux .scheduler .repeat-panel label {
+  font-weight: normal;
+}
+.fuelux .scheduler .repeat-panel .radio {
+  margin-right: 10px;
+}
+.fuelux .scheduler .repeat-panel .form-group {
+  margin-left: 0;
+}
+.fuelux .scheduler .repeat-interval {
+  margin-left: 0;
+  *zoom: 1;
+}
+.fuelux .scheduler .repeat-interval:before,
+.fuelux .scheduler .repeat-interval:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.fuelux .scheduler .repeat-interval:after {
+  clear: both;
+}
+.fuelux .scheduler .repeat-interval .form-group {
+  margin-left: 0;
+}
+.fuelux .scheduler .repeat-interval .dropdown-menu {
+  max-height: 200px;
+  overflow: auto;
+}
+.fuelux .scheduler .repeat-interval .repeat-every-panel {
+  float: left;
+}
+.fuelux .scheduler .repeat-interval .repeat-every-panel .repeat-every-pretext {
+  padding: 0 10px;
+}
+.fuelux .scheduler .repeat-interval .repeat-every-panel .spinbox {
+  float: left;
+  margin-right: 10px;
+}
+.fuelux .scheduler .repeat-interval .repeat-every-panel .spinbox input {
+  margin-bottom: 0;
+}
+.fuelux .scheduler .repeat-monthly .repeat-monthly-date {
+  margin-top: 10px;
+  *zoom: 1;
+}
+.fuelux .scheduler .repeat-monthly .repeat-monthly-date:before,
+.fuelux .scheduler .repeat-monthly .repeat-monthly-date:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.fuelux .scheduler .repeat-monthly .repeat-monthly-date:after {
+  clear: both;
+}
+.fuelux .scheduler .repeat-monthly .repeat-monthly-date .selectlist {
+  margin-left: 5px;
+}
+.fuelux .scheduler .repeat-monthly .repeat-monthly-day {
+  margin-top: 10px;
+  *zoom: 1;
+}
+.fuelux .scheduler .repeat-monthly .repeat-monthly-day:before,
+.fuelux .scheduler .repeat-monthly .repeat-monthly-day:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.fuelux .scheduler .repeat-monthly .repeat-monthly-day:after {
+  clear: both;
+}
+.fuelux .scheduler .repeat-monthly .month-days {
+  margin-left: 10px;
+}
+.fuelux .scheduler .repeat-yearly .repeat-yearly-date {
+  margin-top: 10px;
+  *zoom: 1;
+}
+.fuelux .scheduler .repeat-yearly .repeat-yearly-date:before,
+.fuelux .scheduler .repeat-yearly .repeat-yearly-date:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.fuelux .scheduler .repeat-yearly .repeat-yearly-date:after {
+  clear: both;
+}
+.fuelux .scheduler .repeat-yearly .repeat-yearly-date .year-month-day {
+  margin-left: 10px;
+}
+.fuelux .scheduler .repeat-yearly .year-month-days {
+  margin-left: 10px;
+}
+.fuelux .scheduler .repeat-yearly .year-month {
+  margin-left: 10px;
+}
+.fuelux .scheduler .repeat-yearly .repeat-yearly-day {
+  margin-top: 10px;
+  *zoom: 1;
+}
+.fuelux .scheduler .repeat-yearly .repeat-yearly-day:before,
+.fuelux .scheduler .repeat-yearly .repeat-yearly-day:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.fuelux .scheduler .repeat-yearly .repeat-yearly-day:after {
+  clear: both;
+}
+.fuelux .scheduler .repeat-yearly .repeat-yearly-day .repeat-yearly-day-text {
+  margin-left: 10px;
+}
+.fuelux .scheduler .repeat-weekly button:not(.active) {
+  background-color: #fff;
+}
+.fuelux .scheduler .repeat-weekly .btn-group.disabled {
+  position: relative;
+  opacity: 0.65;
+}
+.fuelux .scheduler .repeat-weekly .btn-group.disabled:before {
+  background: transparent;
+  bottom: 0;
+  content: "";
+  left: 0;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 5;
+}
+.fuelux .scheduler .selectlist {
+  float: left;
+}
+.fuelux .scheduler label.radio {
+  float: left;
+  line-height: 27px;
+}
+.fuelux .scheduler label.radio input {
+  margin-top: 8px;
+}
+.fuelux .scheduler .repeat-end .end-after {
+  float: left;
+  display: inline-block;
+  margin-right: 10px;
+}
+.fuelux .scheduler .repeat-end .form-group {
+  margin-left: 0;
+}
+.fuelux .search.disabled .input-group-btn {
+  cursor: not-allowed;
+}
+.fuelux .selectlist.disabled {
+  cursor: not-allowed;
+}
+.fuelux .selectlist-sizer {
+  display: inline-block;
+  position: absolute;
+  visibility: hidden;
+  top: 0;
+}
+.fuelux .selectlist .selected-label {
+  overflow: hidden;
+  min-width: 2em;
+}
+.fuelux .selectlist .btn.dropdown-toggle {
+  white-space: normal;
+}
+.fuelux .selectlist .btn.dropdown-toggle .selected-label {
+  padding-right: 10px;
+  text-align: left;
+}
+.fuelux .tree {
+  border: 1px solid #999999;
+  border-radius: 4px 4px 4px 4px;
+  padding: 10px 15px 0 15px;
+  overflow-x: auto;
+  overflow-y: auto;
+  position: relative;
+  list-style: none;
+}
+.fuelux .tree *:focus {
+  outline: none;
+}
+.fuelux .tree button:focus {
+  color: #999999;
+}
+.fuelux .tree ul {
+  padding-left: 0;
+  margin-top: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+.fuelux .tree li {
+  margin: 0;
+  margin-top: 5px;
+  margin-bottom: 5px;
+}
+.fuelux .tree .tree-loader {
+  margin-left: 45px;
+}
+.fuelux .tree .tree-open > .tree-branch-header .glyphicon-play {
+  transform: rotate(90deg);
+  -ms-transform: rotate(90deg);
+  -webkit-transform: rotate(90deg);
+  position: relative;
+  left: -5px;
+}
+.fuelux .tree [data-children=false] > .tree-branch-header .icon-caret:before {
+  content: '\00a0';
+}
+.fuelux .tree .tree-branch .tree-branch-header {
+  position: relative;
+  border-radius: 6px;
+}
+.fuelux .tree .tree-branch .tree-branch-header .tree-branch-name:hover {
+  color: #999999;
+}
+.fuelux .tree .tree-branch .tree-branch-header .glyphicon-play {
+  font-size: 10px;
+  padding-right: 5px;
+}
+.fuelux .tree .tree-branch .tree-branch-header .glyphicon-play:before {
+  position: relative;
+  top: -2px;
+}
+.fuelux .tree .tree-branch .tree-branch-header .tree-branch-name {
+  white-space: nowrap;
+  border-radius: 6px;
+  background-color: transparent;
+  border: 0;
+}
+.fuelux .tree .tree-branch .tree-branch-header label {
+  font-weight: normal;
+  padding-left: 3px;
+  margin-bottom: 0;
+  cursor: pointer;
+}
+.fuelux .tree .tree-branch .tree-branch-children {
+  margin-left: 14px;
+}
+.fuelux .tree .tree-item {
+  position: relative;
+  cursor: pointer;
+  border-radius: 6px;
+  margin-left: 26px;
+}
+.fuelux .tree .tree-item .tree-item-name {
+  white-space: nowrap;
+  border-radius: 6px;
+  background-color: transparent;
+  border: 0;
+}
+.fuelux .tree .tree-item .tree-item-name:hover {
+  color: #999999;
+}
+.fuelux .tree .tree-item.tree-selected .tree-item-name {
+  background-color: #4f4f4f;
+  color: #fff;
+}
+.fuelux .tree .tree-item label {
+  font-weight: normal;
+  padding-left: 7px;
+  margin-bottom: 0;
+  cursor: pointer;
+}
+.fuelux .tree .icon-caret:hover + .tree-branch-name {
+  color: #999999;
+}
+.fuelux .tree.tree-folder-select .tree-branch .icon-caret {
+  background-color: transparent;
+  border: 0;
+}
+.fuelux .tree.tree-folder-select .tree-branch .icon-caret:hover {
+  cursor: pointer;
+  color: #999999;
+}
+.fuelux .tree.tree-folder-select .tree-branch > .tree-branch-name {
+  padding: 1px 5px 0 5px;
+  border-radius: 6px;
+}
+.fuelux .tree.tree-folder-select .tree-branch > .tree-branch-name.tree-selected {
+  background-color: #4f4f4f;
+  color: #fff;
+}
+.fuelux .tree.tree-folder-select .tree-branch.tree-selected > .tree-branch-header .tree-branch-name {
+  background-color: #4f4f4f;
+  color: #fff;
+}
+.fuelux .tree.tree-folder-select .tree-branch.tree-selected > .tree-branch-header .tree-branch-name:hover {
+  background-color: #4f4f4f;
+  color: #fff;
+}
+.fuelux .wizard {
+  *zoom: 1;
+  border: 1px solid #d4d4d4;
+  border-radius: 4px;
+  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  background-color: #f9f9f9;
+  position: relative;
+  min-height: 48px;
+  overflow: hidden;
+}
+.fuelux .wizard:before,
+.fuelux .wizard:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.fuelux .wizard:after {
+  clear: both;
+}
+.fuelux .wizard > .steps {
+  list-style: none outside none;
+  padding: 0;
+  margin: 0;
+  width: 4000px;
+}
+.fuelux .wizard > .steps.previous-disabled li.complete {
+  cursor: default;
+}
+.fuelux .wizard > .steps.previous-disabled li.complete:hover {
+  background: #f3f4f5;
+  color: #468847;
+  cursor: default;
+}
+.fuelux .wizard > .steps.previous-disabled li.complete:hover .chevron:before {
+  border-left-color: #f3f4f5;
+}
+.fuelux .wizard > .steps li {
+  float: left;
+  margin: 0;
+  padding: 0 20px 0 30px;
+  height: 46px;
+  line-height: 46px;
+  position: relative;
+  background: #ededed;
+  color: #999999;
+  font-size: 16px;
+  cursor: not-allowed;
+}
+.fuelux .wizard > .steps li .chevron {
+  border: 24px solid transparent;
+  border-left: 14px solid #d4d4d4;
+  border-right: 0;
+  display: block;
+  position: absolute;
+  right: -14px;
+  top: 0;
+  z-index: 1;
+}
+.fuelux .wizard > .steps li .chevron:before {
+  border: 24px solid transparent;
+  border-left: 14px solid #ededed;
+  border-right: 0;
+  content: "";
+  display: block;
+  position: absolute;
+  right: 1px;
+  top: -24px;
+}
+.fuelux .wizard > .steps li.complete {
+  background: #f3f4f5;
+  color: #468847;
+}
+.fuelux .wizard > .steps li.complete:hover {
+  background: #e7eff8;
+  cursor: pointer;
+}
+.fuelux .wizard > .steps li.complete:hover .chevron:before {
+  border-left: 14px solid #e7eff8;
+}
+.fuelux .wizard > .steps li.complete .chevron:before {
+  border-left: 14px solid #f3f4f5;
+}
+.fuelux .wizard > .steps li.active {
+  background: #f1f6fc;
+  color: #3a87ad;
+  cursor: default;
+}
+.fuelux .wizard > .steps li.active .chevron:before {
+  border-left: 14px solid #f1f6fc;
+}
+.fuelux .wizard > .steps li.active .badge {
+  background-color: #3a87ad;
+}
+.fuelux .wizard > .steps li .badge {
+  margin-right: 8px;
+}
+.fuelux .wizard > .steps li .badge-success {
+  background-color: #468847;
+}
+.fuelux .wizard > .steps li:first-child {
+  border-radius: 4px 0 0 4px;
+  padding-left: 20px;
+}
+.fuelux .wizard > .actions {
+  z-index: 1000;
+  position: absolute;
+  right: 0;
+  line-height: 46px;
+  float: right;
+  padding-left: 15px;
+  padding-right: 15px;
+  vertical-align: middle;
+  background-color: #e5e5e5;
+  border-left: 1px solid #d4d4d4;
+}
+.fuelux .wizard > .actions a {
+  line-height: 45px;
+  font-size: 12px;
+  margin-right: 8px;
+}
+.fuelux .wizard > .actions .btn-prev[disabled] {
+  cursor: not-allowed;
+}
+.fuelux .wizard > .actions .btn-prev span {
+  margin-right: 5px;
+}
+.fuelux .wizard > .actions .btn-next[disabled] {
+  cursor: not-allowed;
+}
+.fuelux .wizard > .actions .btn-next span {
+  margin-left: 5px;
+}
+.fuelux .wizard .step-content {
+  border-top: 1px solid #D4D4D4;
+  padding: 10px;
+  float: left;
+  width: 100%;
+}
+.fuelux .wizard .step-content .step-pane {
+  display: none;
+}
+.fuelux .wizard .step-content > .active {
+  display: block;
+}
+.fuelux .wizard .step-content > .active .btn-group .active {
+  display: inline-block;
+}
+.fuelux .wizard.complete > .actions .glyphicon-arrow-right:before {
+  display: none;
+}
+.fuelux .wizard.complete > .actions .glyphicon-arrow-right {
+  margin-left: 0;
+}
+/*# sourceMappingURL=fuelux.css.map */
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/css/fuelux.css.map b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/css/fuelux.css.map
new file mode 100644
index 0000000000000000000000000000000000000000..ac523ca7968107388dc347cda60c40bc8ec16b9d
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/css/fuelux.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["less/fuelux.less","less/icons.less","less/mixins.less","less/checkbox.less","less/combobox.less","less/datepicker.less","less/infinite-scroll.less","less/intelligent-dropdown.less","less/loader.less","less/misc.less","less/pillbox.less","less/placard.less","less/radio.less","less/repeater.less","less/repeater-list.less","less/repeater-thumbnail.less","less/spinbox.less","less/scheduler.less","less/search.less","less/selectlist.less","less/tree.less","less/wizard.less"],"names":[],"mappings":"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","sourcesContent":[".fuelux {\n\n\t// Core variables, mixins, and icons\n\t@import \"variables.less\";\t// Modify this for custom colors, font-sizes, etc\n\t@import \"mixins.less\";\n\t@import \"icons.less\";\n\n\t// Fuel UX controls\n\t@import \"checkbox.less\";\n\t@import \"combobox.less\";\n\t@import \"datepicker.less\";\n\t@import \"infinite-scroll.less\";\n\t@import \"intelligent-dropdown.less\";\n\t@import \"loader.less\";\n\t@import \"misc.less\";\n\t@import \"pillbox.less\";\n\t@import \"placard.less\";\n\t@import \"radio.less\";\n\t@import \"repeater.less\";\n\t@import \"repeater-list.less\";\n\t@import \"repeater-thumbnail.less\";\n\t@import \"spinbox.less\";\n    @import \"scheduler.less\";\n\t@import \"search.less\";\n\t@import \"selectlist.less\";\n\t@import \"tree.less\";\n\t@import \"wizard.less\";\n\n}\n","@charset \"UTF-8\";\n\n@font-face {\n\tfont-family: \"fuelux\";\n\tsrc:url(\"@{fueluxFontPath}fuelux.eot\");\n\tsrc:url(\"@{fueluxFontPath}fuelux.eot?#iefix\") format(\"embedded-opentype\"),\n\turl(\"@{fueluxFontPath}fuelux.woff\") format(\"woff\"),\n\turl(\"@{fueluxFontPath}fuelux.ttf\") format(\"truetype\"),\n\turl(\"@{fueluxFontPath}fuelux.svg#fuelux\") format(\"svg\");\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n//This could be an interesting addition...\n//[data-icon]:before {\n//\t.iconBaseStyles();\n//\tcontent: attr(data-icon);\n//}\n\n[class^=\"fueluxicon-\"]:before,\n[class*=\" fueluxicon-\"]:before {\n\t.iconBaseStyles();\n}\n\n.fueluxicon-loader-full:before {\n\tcontent: \"\\e000\";\n}\n\n.fueluxicon-loader-1:before {\n\tcontent: \"\\e001\";\n}\n\n.fueluxicon-loader-2:before {\n\tcontent: \"\\e002\";\n}\n\n.fueluxicon-loader-3:before {\n\tcontent: \"\\e003\";\n}\n\n.fueluxicon-loader-4:before {\n\tcontent: \"\\e004\";\n}\n\n.fueluxicon-loader-5:before {\n\tcontent: \"\\e005\";\n}\n\n.fueluxicon-loader-6:before {\n\tcontent: \"\\e006\";\n}\n\n.fueluxicon-loader-7:before {\n\tcontent: \"\\e007\";\n}\n\n.fueluxicon-loader-8:before {\n\tcontent: \"\\e008\";\n}\n\n//tree\n\n.fueluxicon-bullet:before {\n  content: \"\\e009\";\n}","// For clearing floats\n.clearfix {\n\t*zoom: 1;\n\t&:before,\n\t&:after {\n\t\tdisplay: table;\n\t\tcontent: \"\";\n\t\t// Fixes Opera/contenteditable bug:\n\t\t// http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952\n\t\tline-height: 0;\n\t}\n\t&:after {\n\t\tclear: both;\n\t}\n}\n\n// Single side border-radius\n.border-top-radius(@radius) {\n\tborder-top-right-radius: @radius;\n\tborder-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n\tborder-bottom-right-radius: @radius;\n \tborder-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n\tborder-bottom-right-radius: @radius;\n\tborder-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n\tborder-bottom-left-radius: @radius;\n\tborder-top-left-radius: @radius;\n}\n\n// Gradient Bar Colors for buttons and alerts\n.gradientBar(@primaryColor, @secondaryColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {\n\tcolor: @textColor;\n\ttext-shadow: @textShadow;\n\t#gradient > .vertical(@primaryColor, @secondaryColor);\n\tborder-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);\n\tborder-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);\n}\n\n// Gradients\n#gradient {\n\t.vertical(@startColor: #555, @endColor: #333) {\n\t\tbackground-color: mix(@startColor, @endColor, 60%);\n\t\tbackground-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+\n\t\tbackground-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+\n\t\tbackground-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+\n\t\tbackground-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10\n\t\tbackground-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10\n\t\tbackground-repeat: repeat-x;\n\t\tfilter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@startColor),argb(@endColor))); // IE9 and down\n\t}\n}\n\n// Icon Base Styles\n.iconBaseStyles(@fontFamily: \"fuelux\"){\n\tfont-family: @fontFamily !important;\n\tfont-style: normal !important;\n\tfont-weight: normal !important;\n\tfont-variant: normal !important;\n\ttext-transform: none !important;\n\tline-height: 1;\n\tspeak: none;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n// Opacity\n.opacity(@opacity) {\n\topacity: @opacity / 100;\n\tfilter: ~\"alpha(opacity=@{opacity})\";\n}",".checkbox {\n\n\t&.highlight {\n\t\tpadding: 4px;\n\n\t\t&.checked {\n\t\t\tbackground: #e9e9e9;\n\t\t\tborder-radius: @baseBorderRadius;\n\t\t}\n\t}\n\n\t/* for keyboard tabbing */\n\tinput[type=\"checkbox\"]:focus + .checkbox-label,\n\tinput[type=\"checkbox\"]:hover + .checkbox-label,\n\t.checkbox-label:hover {\n\t\tcolor: @grayLight;\n\t}\n\n}\n\n.checkbox-custom {\n\tposition: relative;\n\n\t&:before\n\t{\n\t\t.iconBaseStyles(\"Glyphicons Halflings\");\n\n\t\tborder: 1px solid #adadad;\n\t\tborder-radius: @baseBorderRadius;\n\t\tcolor: #fff;\n\t\tcontent: \" \";\n\t\tfont-size: 9px;\n\t\theight: 14px;\n\t\tleft: 0px;\n\t\tpadding: 1px 0 0 1px;\n\t\tposition: absolute;\n\t\ttop: 3px;\n\t\twidth: 14px;\n\t}\n\n\t&.checked {\n\t\t&:before {\n\t\t\tbackground: #39b3d7;\n\t\t\tborder-color: #39b3d7;\n\t\t\tcontent: \"\\e013\";\n\t\t}\n\t}\n\n\t&.disabled {\n\t\tcursor: not-allowed;\n\n\t\t&:before\n\t\t{\n\t\t\tcursor: not-allowed;\n\t\t\topacity: .5;\n\t\t}\n\t}\n\n\t&.checkbox-inline {\n\t\t&:before {\n\t\t\tleft: 0;\n\t\t\ttop: 3px;\n\t\t}\n\n\t\t&.highlight {\n\t\t\tpadding: 4px 4px 4px 24px;\n\n\t\t\t&:before {\n\t\t\t\tleft: 4px;\n\t\t\t\ttop: 7px;\n\t\t\t}\n\n\t\t\t&.checked {\n\t\t\t\tbackground: #e9e9e9;\n\t\t\t\tborder-radius: @baseBorderRadius;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* for keyboard tabbing */\n\tinput[type=\"checkbox\"]:focus + .checkbox-label {\n\t\tcolor: @grayLight;\n\t}\n\n}",".combobox {\n\t&.disabled {\n\t\t.input-group-btn {\n\t\t\tcursor: not-allowed;\n\t\t}\n\t}\n}",".datepicker {\n\n\t&-calendar {\n\t\tpadding: 16px 16px 0;\n\t\tmin-height: 262px;\n\n\t\tbutton {\n\t\t\tborder: 0;\n\t\t\tpadding: 0;\n\t\t\tbackground-color: transparent;\n\t\t}\n\n\t\t&-days {\n\t\t\theight: 182px;\n\t\t\tmargin: 10px 0 12px;\n\t\t\twidth: 100%;\n\n\t\t\tthead {\n\t\t\t\tborder-bottom: 1px solid #cccaca;\n\t\t\t}\n\n\t\t\t/* for spacing */\n\t\t\ttbody:before {\n\t\t\t\tline-height:3px;\n\t\t\t\tcontent:\"\\200C\";\n\t\t\t\tdisplay:block;\n\t\t\t}\n\n\t\t\ttd, th {\n\t\t\t\tfont-size: 14px;\n\t\t\t\theight: 32px;\n\t\t\t\ttext-align: center;\n\t\t\t\tvertical-align: middle;\n\t\t\t\twidth: 14.29%;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\tbutton {\n\t\t\t\t\tcolor: #231f20;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\theight: 30px;\n\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\twidth: 30px;\n\t\t\t\t}\n\n\t\t\t\tspan {\n\t\t\t\t\tdisplay: block;\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tbackground: #b7e3f8;\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&.current-day {\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tborder: 1px solid #1d75bb;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&.last-month, &.next-month {\n\t\t\t\t\tbackground: #e3e2e1;\n\t\t\t\t}\n\n\t\t\t\t&.past {\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tcolor: #8d8787;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&.restricted {\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tcursor: no-drop;\n\t\t\t\t\t\tposition: relative;\n\n\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\tborder-top: 1px solid #a94442;\n\t\t\t\t\t\t\tbottom: 0;\n\t\t\t\t\t\t\tcontent: \" \";\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tleft: 5px;\n\t\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\t\tright: 5px;\n\t\t\t\t\t\t\ttop: 50%;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&.selected {\n\t\t\t\t\tspan {\n\t\t\t\t\t\tbackground: #1d75bb;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground: #0f5f9f;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t}\n\n\t\t\t\t\t&.current-day {\n\t\t\t\t\t\tbox-shadow: 0 0 0 1px #fff offset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tth {\n\t\t\t\tfont-weight: bold;\n\t\t\t\theight: 22px;\n\t\t\t\tvertical-align: top;\n\t\t\t}\n\t\t}\n\n\t\t&-header {\n\t\t\t.clearfix;\n\n\t\t\tbutton {\n\t\t\t\tborder: 0;\n\t\t\t\tpadding: 0;\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\n\t\t\t.title {\n\t\t\t\tmargin: 0 auto;\n\t\t\t\ttext-align: center;\n\t\t\t\tdisplay: block;\n\t\t\t\twidth: 174px;\n\t\t\t\tcolor: #4d4d4f;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tline-height: 30px;\n\t\t\t\ttext-decoration: underline;\n\t\t\t\tvertical-align: middle;\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tcolor: #1d75bb;\n\t\t\t\t\t\ttext-decoration: underline;\n\t\t\t\t\t}\n\n\t\t\t\t\t&.disabled {\n\t\t\t\t\t\tcursor: default;\n\t\t\t\t\t\tpointer-events: none;\n\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t}\n\n\t\t\t\t\t.month {\n\t\t\t\t\t\tdisplay: inline;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tpadding: 0;\n\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tdisplay: none;\n\n\t\t\t\t\t\t\t&.current {\n\t\t\t\t\t\t\t\tdisplay: inline;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t.next, .prev {\n\t\t\t\tbackground: #666669;\n\t\t\t\tbackground-clip: padding-box;\n\t\t\t\tborder-radius: 30px;\n\t\t\t\tcursor: pointer;\n\t\t\t\tfloat: left;\n\t\t\t\theight: 30px;\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 30px;\n\n\t\t\t\tspan.glyphicon {\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\tfont-size: 16px;\n\t\t\t\t\tline-height: 30px;\n\t\t\t\t}\n\n\t\t\t\t&:hover {\n\t\t\t\t\tbackground: #1d75bb;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.next {\n\t\t\t\tfloat: right;\n\n\t\t\t\tspan.glyphicon {\n\t\t\t\t\tline-height: 28px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-footer {\n\t\t\tbackground: #e3e2e1;\n\t\t\tbackground-clip: padding-box;\n\t\t\tborder-radius: 0 0 4px 4px;\n\t\t\tborder-top: 1px solid #cccaca;\n\t\t\theight: 30px;\n\t\t\tmargin: 0 -16px;\n\t\t\tpadding: 4px 14px;\n\n\t\t\t.datepicker-today {\n\t\t\t\tcolor: #231f20;\n\t\t\t\tfont-size: 14px;\n\t\t\t\ttext-decoration: underline;\n\n\t\t\t\t&:hover {\n\t\t\t\t\tcolor: #1b75bb;\n\t\t\t\t\ttext-decoration: underline;\n\t\t\t\t}\n\n\t\t\t\t&.disabled {\n\t\t\t\t\tcolor: #8b8c8e;\n\t\t\t\t\tcursor: default;\n\t\t\t\t\tpointer-events: none;\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tcolor: #8b8c8e\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&-calendar-wrapper {\n\t\tborder: 1px solid #6e6f71;\n\t\tmin-height: 20px;\n\t\tpadding: 0;\n\t\twidth: 300px;\n\t}\n\n\t&-wheels {\n\t\tdisplay: none;\n\n\t\tul button {\n\t\t\tborder: 0;\n\t\t\tpadding: 0;\n\t\t\tbackground-color: transparent;\n\t\t}\n\n\t\t&-footer {\n\t\t\tbackground: #e3e2e1;\n\t\t\tborder-radius: 0 0 4px 4px;\n\t\t\tborder-top: 1px solid #cccaca;\n\t\t\tclear: both;\n\n\t\t\t.datepicker-wheels-back {\n\t\t\t\tdisplay: block;\n\t\t\t\tcolor: #4d4d4f;\n\t\t\t\tfloat: left;\n\t\t\t\tline-height: 22px;\n\t\t\t\tborder: 0;\n\t\t\t\tbackground-color: transparent;\n\n\t\t\t\t&:hover {\n\t\t\t\t\tcolor: #1d75bb;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.datepicker-wheels-select {\n\t\t\t\tfloat: right;\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tcolor: @blue;\n\n\t\t\t\t&:hover {\n\t\t\t\t\tcolor: #1d75bb;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-month, &-year {\n\t\t\tfloat: left;\n\t\t\twidth: 50%;\n\n\t\t\tul {\n\t\t\t\theight: 217px;\n\t\t\t\tlist-style-type: none;\n\t\t\t\tmargin: 0;\n\t\t\t\toverflow: auto;\n\t\t\t\tpadding: 0;\n\t\t\t\ttext-align: center;\n\n\t\t\t\tli {\n\t\t\t\t\tmargin: 4px 0;\n\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\tcolor: #414041;\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tfont-size: 16px;\n\t\t\t\t\t\tline-height: 24px;\n\t\t\t\t\t\ttext-decoration: none;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground: #aee0f8;\n\t\t\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&.selected {\n\t\t\t\t\t\tbutton {\n\t\t\t\t\t\t\tbackground: #1d75bb;\n\t\t\t\t\t\t\tcolor: #fff;\n\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\tbackground: #0f5f9f;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.header {\n\t\t\t\tbackground: #e3e2e1;\n\t\t\t\tbackground-clip: padding-box;\n\t\t\t\tborder-bottom: 1px solid #cccaca;\n\t\t\t\tborder-radius: 4px 0 0 0;\n\t\t\t\tcolor: #4d4d4f;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tline-height: 30px;\n\t\t\t\tmargin-top: 0;\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\n\t\t\t&.full {\n\t\t\t\tborder-left: 0;\n\t\t\t\twidth: 100%;\n\n\t\t\t\t.header {\n\t\t\t\t\tborder-radius: 4px 4px 0 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-year {\n\t\t\tborder-left: 1px solid #cccaca;\n\t\t\tfloat: right;\n\n\t\t\t.header {\n\t\t\t\tborder-radius: 0 4px 0 0;\n\t\t\t}\n\t\t}\n\t}\n}\n",".infinitescroll {\n\toverflow-y: auto;\n\n\t.infinitescroll-end {\n\t\tclear: both;\n\t\tfont-style: italic;\n\t\tpadding: 6px;\n\t\ttext-align: center;\n\t}\n\n\t.infinitescroll-load {\n\t\tclear: both;\n\t\tpadding: 6px;\n\n\t\tbutton {\n\t\t\tpadding: 5px 12px;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.loader {\n\t\t\tfont-size: 32px;\n\t\t\theight: 32px;\n\t\t\tmargin: 0 auto;\n\t\t\twidth: 32px;\n\t\t}\n\t}\n}",".dropUp {\n\t-webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n\t-moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n\tbox-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n}",".loader {\n    height: 64px;\n    font-size: 64px;\n    position: relative;\n    width: 64px;\n\n\t&:after, &:before {\n\t\t.iconBaseStyles();\n\n\t\tbottom: 0;\n\t\tdisplay: block;\n\t\tleft: 0;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 0;\n\t}\n\n\t&:before {\n\t\tcontent: '\\e000';\n\t\topacity: 0.33;\n\t}\n\n\t&.iefix:before{\n\t\tcolor: #bcbcbc;\n\t\topacity: 1;\n\t}\n\n\t&[data-frame=\"1\"]:after {\n\t\tcontent: '\\e001';\n\t}\n\n\t&[data-frame=\"2\"]:after {\n\t\tcontent: '\\e002';\n\t}\n\n\t&[data-frame=\"3\"]:after {\n\t\tcontent: '\\e003';\n\t}\n\n\t&[data-frame=\"4\"]:after {\n\t\tcontent: '\\e004';\n\t}\n\n\t&[data-frame=\"5\"]:after {\n\t\tcontent: '\\e005';\n\t}\n\n\t&[data-frame=\"6\"]:after {\n\t\tcontent: '\\e006';\n\t}\n\n\t&[data-frame=\"7\"]:after {\n\t\tcontent: '\\e007';\n\t}\n\n\t&[data-frame=\"8\"]:after {\n\t\tcontent: '\\e008';\n\t}\n}","input, textarea {\n\t&.glass {\n\t\tbackground: transparent;\n\t\tborder: 1px solid #fff;\n\t\tbox-shadow: none;\n\n\t\t&:hover {\n\t\t\tbackground: #d9edf7;\n\t\t\tborder-color: #66afe9;\n\t\t\tcursor: pointer;\n\n\t\t\t&[disabled] {\n\t\t\t\tbackground: transparent;\n\t\t\t\tborder-color: #fff;\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\t\t}\n\n\t\t&:focus {\n\t\t\tbackground: #fff;\n\t\t\tborder-color: #66afe9;\n\t\t\tbox-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102,175,233,.6);\n\t\t\tcursor: auto;\n\n\t\t\t&[disabled] {\n\t\t\t\tbackground: transparent;\n\t\t\t\tborder-color: #fff;\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\t\t}\n\n\t\t&[disabled] {\n\t\t\tcursor: not-allowed;\n\t\t}\n\t}\n}\n\n// makes radios and checkboxes that use Bootstrap button plugin accessible (tabbable)  \n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n\tdisplay:inline;\n\tposition:absolute;\n\tleft:-9999px;\n}",".pillbox {\n\tborder: 1px solid #BBBBBB;\n\tborder-radius: 4px;\n\tcursor: text;\n\tpadding: 3px;\n\n\t&[data-readonly] {\n\t\tborder: 1px solid transparent;\n\n\t\t&.truncate {\n\t\t\t.pillbox-input-wrap {\n\t\t\t\tdisplay: inline-block;\n\n\t\t\t\t&.truncated {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.pillbox-more {\n\t\t\t\tdisplay: inline;\n\t\t\t}\n\t\t}\n\n\t\t.pill {\n\t\t\tspan.glyphicon-close {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\n\t\t.pillbox-add-item {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t.pillbox-input-wrap {\n\t\t\tdisplay: none;\n\n\t\t\tbutton.dropdown-toggle {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t&.pills-editable {\n\t\t.pill-group {\n\t\t\t.pill {\n\t\t\t\tspan {\n\t\t\t\t\tcursor: text;\n\n\t\t\t\t\t&.glyphicon-close {\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t> .pill-group {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 100%;\n\n\t\t> .pill {\n\t\t\tmargin: 2px;\n\t\t\tcursor: default;\n\t\t\tfloat:left;\n\t\t\tword-break: break-all;\n\n\t\t\t&.pillbox-highlight {\n\t\t\t\toutline: 1px dotted @grayLight;\n\t\t\t}\n\n\t\t\t&.truncated {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t.pillbox-list-edit {\n\t\t\t\tborder: none;\n\t\t\t\tcolor: @grayDark;\n\t\t\t\tfont-weight: normal;\n\t\t\t\tborder-radius: 2px;\n\n\t\t\t\t&:focus {\n\t\t\t\t\toutline: none;\n\t\t\t\t\tborder: none;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.glyphicon-close {\n\t\t\t\tcursor: pointer;\n\t\t\t\ttop: -1px;\n\t\t\t\tleft: 2px;\n\n\t\t\t\t&:before {\n\t\t\t\t\tcontent: \" \\00d7\";\n\t\t\t\t}\n\n\t\t\t\t&:hover {\n\t\t\t\t\topacity: .4;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\t.pillbox-input-wrap {\n\t\tposition: relative;\n\t\tmargin: 4px 0 3px 3px;\n\t\tfloat: left;\n\n\t\t&.editing {\n\t\t\tborder: 1px solid #ccc;\n\t\t\tborder-radius: 4px;\n\t\t\tmargin: 2px 0 3px 3px;\n\n\t\t\tinput.pillbox-add-item {\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tcolor: #333;\n\t\t\t\theight: 32px;\n\t\t\t}\n\t\t}\n\t}\n\n\t.pillbox-add-item {\n\t\tborder: none;\n\t\tbox-shadow: none;\n\n\t\t&:focus {\n\t\t\toutline: none;\n\t\t\tborder: none;\n\t\t}\n\t}\n\n\t.pillbox-more {\n\t\tcursor: pointer;\n\t\tdisplay: none;\n\t\tline-height: 30px;\n\t}\n\n\t.suggest {\n\t\tmax-height: 166px; // arbitrary number\n\t\toverflow-y: auto;\n\n\t\t> li {\n\t\t\twhite-space: nowrap;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 3px 20px;\n\n\t\t\t&.pillbox-suggest-sel {\n\t\t\t\tbackground-color: @grayLighter;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: @grayLighter;\n\t\t\t}\n\t\t}\n\t}\n}\n",".placard {\n\tdisplay: inline-block;\n\tposition: relative;\n\n\t&[data-ellipsis=\"true\"] {\n\t\t&.showing {\n\t\t\tinput.placard-field {\n\t\t\t\toverflow: visible;\n\t\t\t\ttext-overflow: clip;\n\t\t\t\twhite-space: normal;\n\t\t\t}\n\t\t}\n\n\t\tinput.placard-field {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\n\t\ttextarea.placard-field {\n\t\t\t&[readonly] {\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\t}\n\n\t&.showing {\n\t\t.placard-footer,\n\t\t.placard-header,\n\t\t.placard-popup {\n\t\t\tdisplay: block;\n\t\t\tz-index: 1;\n\t\t}\n\n\t\tinput.placard-field, textarea.placard-field {\n\t\t\tbackground: #fff;\n\t\t\tborder: 1px solid #CCCCCC;\n\t\t\tbox-shadow: none;\n\t\t\tposition: relative;\n\t\t\tz-index: 1;\n\t\t}\n\t}\n\n\tinput.placard-field, textarea.placard-field {\n\t\tresize: none;\n\n\t\t&[readonly] {\n\t\t\tbackground: #fff;\n\t\t\tcursor: auto;\n\n\t\t\t&.glass {\n\t\t\t\tbackground: none;\n\n\t\t\t\t&:hover {\n\t\t\t\t\tbackground: #d9edf7;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&:focus {\n\t\t\tborder: 1px solid #CCCCCC;\n\t\t\tbox-shadow: none;\n\t\t}\n\t}\n\n\t&-cancel {\n\t\tfont-size: 12px;\n\t\tmargin-right: 4px;\n\t\tvertical-align: middle;\n\t}\n\n\t&-footer,\n\t&-header {\n\t\tdisplay: none;\n\t\tleft: 0;\n\t\tline-height: 1;\n\t\tposition: absolute;\n\t\tright: 0;\n\t}\n\n\t&-footer {\n\t\tpadding: 4px 0 8px 0;\n\t\ttext-align: right;\n\t\ttop: 100%;\n\t}\n\n\t&-header {\n\t\tbottom: 100%;\n\t\tpadding: 8px 0 4px 0;\n\n\t\th1, h2, h3, h4, h5, h6 {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n\n\t&-popup {\n\t\tbackground: #d9edf7;\n\t\tbackground-clip: padding-box;\n\t\tborder: 1px solid #ccc;\n\t\tborder-radius: 4px;\n\t\tbottom: -8px;\n\t\tbox-shadow: 0 0 0 1px #fff inset;\n\t\tdisplay: none;\n\t\tleft: -8px;\n\t\tposition: absolute;\n\t\tright: -8px;\n\t\ttop: -8px;\n\t}\n}\n",".radio {\n\t&.highlight {\n\t\tpadding: 4px;\n\n\t\t&.checked {\n\t\t\tbackground: #e9e9e9;\n\t\t\tborder-radius: @baseBorderRadius;\n\t\t}\n\t}\n\n\t/* for keyboard tabbing */\n\tinput[type=\"radio\"]:focus + .radio-label,\n\tinput[type=\"radio\"]:hover + .radio-label,\n\t.radio-label:hover {\n\t\tcolor: @grayLight;\n\t}\n\n}\n\n.radio-custom {\n\tposition: relative;\n\n\t&:after {\n\t\tbackground: transparent;\n\t\tborder-radius: 6px;\n\t\tcontent: \" \";\n\t\theight: 6px;\n\t\tleft: 4px;\n\t\tposition: absolute;\n\t\ttop: 7px;\n\t\twidth: 6px;\n\t}\n\n\t&:before\n\t{\n\t\tborder: 1px solid #adadad;\n\t\tborder-radius: 14px;\n\t\tcontent: \" \";\n\t\theight: 14px;\n\t\tleft: 0px;\n\t\tposition: absolute;\n\t\ttop: 3px;\n\t\twidth: 14px;\n\t}\n\n\t&.checked {\n\t\t&:after {\n\t\t\tbackground: #fff;\n\t\t}\n\n\t\t&:before {\n\t\t\tbackground: #39b3d7;\n\t\t\tborder-color: #39b3d7;\n\t\t}\n\t}\n\n\t&.disabled {\n\t\tcursor: not-allowed;\n\n\t\t&:after {\n\t\t\tcursor: not-allowed;\n\t\t}\n\t\t\n\t\t&:before {\n\t\t\tcursor: not-allowed;\n\t\t\topacity: .5;\n\t\t}\n\t}\n\n\t&.radio-inline {\n\t\t&:after {\n\t\t\tleft: 4px;\n\t\t\ttop: 7px;\n\t\t}\n\n\t\t&:before {\n\t\t\tleft: 0;\n\t\t\ttop: 3px;\n\t\t}\n\n\t\t&.highlight {\n\t\t\tpadding: 4px 4px 4px 24px;\n\n\t\t\t&:after {\n\t\t\t\tleft: 8px;\n\t\t\t\ttop: 11px;\n\t\t\t}\n\n\t\t\t&:before {\n\t\t\t\tleft: 4px;\n\t\t\t\ttop: 7px;\n\t\t\t}\n\n\t\t\t&.checked {\n\t\t\t\tbackground: #e9e9e9;\n\t\t\t\tborder-radius: @baseBorderRadius;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* for keyboard tabbing */\n\tinput[type=\"radio\"]:focus + .radio-label {\n\t\tcolor: @grayLight;\n\t}\n\n}\n",".repeater {\n\tborder: 1px solid #ddd;\n\tborder-radius: 4px;\n\n\t&-canvas {\n\t\t&.scrolling{\n\t\t\tbottom: 0;\n\t\t\tleft: 0;\n\t\t\toverflow-y: auto;\n\t\t\tposition: absolute;\n\t\t\tright: 0;\n\t\t\ttop: 0;\n\t\t}\n\t}\n\n\t&-header,\n\t&-footer\n\t{\n\t\tbackground: #f9f9f9;\n\t\tmin-height: 50px;\n\t\tpadding: 8px;\n\t\t.clearfix;\n\n\t\t&-left {\n\t\t\tfloat: left;\n\t\t}\n\n\t\t&-right {\n\t\t\tfloat: right;\n\t\t}\n\n\t\t@media (max-width: 625px) {\n\t\t\t&-left,\n\t\t\t&-right {\n\t\t\t\tfloat: none;\n\t\t\t\t.clearfix;\n\t\t\t}\n\n\t\t\t&-left {\n\t\t\t\tmargin-bottom: 8px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&-header {\n\t\tborder-bottom: 1px solid #ddd;\n\t\t.border-top-radius(4px);\n\t}\n\n\t&-footer {\n\t\tborder-top: 1px solid #ddd;\n\t\t.border-bottom-radius(4px);\n\t}\n\n\t&-loader {\n\t\tdisplay: none;\n\t\tleft: 50%;\n\t\tposition: absolute;\n\t\tmargin: -32px 0 0 -32px;\n\t\ttop: 50%;\n\t}\n\n\t&-viewport {\n\t\tmin-height: 80px;\n\t\tposition: relative;\n\t}\n\n\t&-pagination {\n\n\t\tlabel {\n\t\t\tfont-weight: normal;\n\t\t}\n\n\t\t.repeater-primaryPaging {\n\t\t\tdisplay: none;\n\t\t\tvertical-align: middle;\n\t\t\twidth: 116px;\n\n\t\t\t&.active {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\n\t\t\tul.dropdown-menu {\n\t\t\t\tmin-width: 116px;\n\t\t\t}\n\t\t}\n\n\t\t.repeater-secondaryPaging {\n\t\t\tdisplay: none;\n\t\t\twidth: 82px;\n\n\t\t\t&.active {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\t\t}\n\t}\n\n\t&-search {\n\t\tfloat: left;\n\t\twidth: 200px;\n\t}\n\n\t&-title {\n\t\tdisplay: block;\n\t\tfloat: left;\n\t\tline-height: 34px;\n\t\tmargin-right: 10px;\n\t}\n}",".repeater[data-currentview=\"list\"] {\n\t.repeater-loader {\n\t\tmargin-top: -12px;\n\n\t\t&.noHeader {\n\t\t\tmargin-top: -32px;\n\t\t}\n\t}\n}\n\n.repeater-list {\n\t&-check {\n\t\tdisplay: inline-block;\n\t\theight: 0;\n\t\tline-height: 0;\n\t\tposition: relative;\n\t\tvertical-align: top;\n\t\twidth: 0;\n\n\t\tspan.glyphicon {\n\t\t\tleft: -22px;\n\t\t\tposition: absolute;\n\t\t\ttop: 2px;\n\t\t}\n\t}\n\n\t&-header,\n\t&-items {\n\t\tmargin-bottom: 0;\n\t\twidth: 100%;\n\n\t\ttd {\n\t\t\tborder-bottom: 1px solid #ddd;\n\t\t\tborder-left: 1px solid #ddd;\n\t\t\tborder-top: none;\n\n\t\t\t&:first-child {\n\t\t\t\tborder-left: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t&-header {\n\t\tbackground: #F9F9F9;\n\n\t\ttd {\n\t\t\tfont-weight: bold;\n\n\t\t\t&.sortable {\n\t\t\t\t&:hover,\n\t\t\t\t&.sorted\n\t\t\t\t{\n\t\t\t\t\tbackground: #F1F1F1;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t#gradient > .vertical(@startColor: #F9F9F9; @endColor: #E5E5E5);\n\t\t\t\t}\n\n\t\t\t\t&.sorted {\n\t\t\t\t\tspan.glyphicon {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tspan.glyphicon {\n\t\t\t\tdisplay: none;\n\t\t\t\tfloat: right;\n\t\t\t\tmargin-top: 2px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&-items {\n\t\ttr {\n\t\t\t&.empty {\n\t\t\t\ttd {\n\t\t\t\t\tborder-bottom: none;\n\t\t\t\t\tfont-style: italic;\n\t\t\t\t\tpadding: 20px;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.selectable{\n\t\t\t\t&:hover {\n\t\t\t\t\tbackground: #d9edf7;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.selected {\n\t\t\t\tbackground: #66AFE9;\n\t\t\t\tcolor: #fff;\n\n\t\t\t\t&:hover {\n\t\t\t\t\tbackground: #428bca;\n\t\t\t\t}\n\n\t\t\t\ttd:first-child {\n\t\t\t\t\tpadding-left: 30px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&-wrapper {\n\t\toverflow-y: auto;\n\t}\n}",".repeater-thumbnail {\n\tborder: 1px solid #ddd;\n\tcolor: #666;\n\tfloat: left;\n\tfont-size: 12px;\n\theight: 130px;\n\tline-height: 36px;\n\tmargin: 10px 12px;\n\ttext-align: center;\n\twidth: 100px;\n\n\t-webkit-box-shadow: 0 1px 4px 0 #ddd;\n\tbox-shadow: 0 1px 4px 0 #ddd;\n\n\timg {\n\t\tdisplay: block;\n\t\tmargin-top: 12px;\n\t}\n\n\t&-cont {\n\t\theight: 100%;\n\t\toverflow-y: auto;\n\t\tpadding: 10px;\n\t\twidth: 100%;\n\n\t\tdiv.empty {\n\t\t\tfont-style: italic;\n\t\t\tpadding: 20px 10px;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n}",".spinbox {\n\tdisplay: inline-block;\n\tposition: relative;\n\n\t&.digits-3 {\n\t\twidth: 60px;\n\t}\n\n\t&.disabled {\n\t\t.spinbox-buttons {\n\t\t\tcursor: not-allowed;\n\t\t}\n\t}\n\n\t.spinbox-input {\n\t\tfloat: left;\n\t\tpadding-bottom: 3px; /* Magic number */\n\t\tpadding: 0px 25px 0px 7px;\n\t}\n\n\t.btn {\n\t\tposition: relative;\n\t\twidth: 20px;\n\t\theight: 13px;\n\t\tpadding-top: 0;\n\t\tpadding-right: 9px;\n\t\tpadding-left: 9px;\n\n\t\t&.disabled {\n\t\t\tcursor: not-allowed;\n\t\t}\n\t}\n\n\t.spinbox-buttons {\n\t\tposition: absolute;\n\t\theight: 28px;\n\t\twidth: 20px;\n\t\tright: 2px;\n\t}\n\n\t.spinbox-up {\n\t\tpadding: 0 0 14px 1px;\n\t\ttop: 2px;\n\n\t\t.glyphicon-chevron-up {\n\t\t\tposition:relative;\n\t\t\ttop: 0px;\n\t\t}\n\t}\n\n\t// fix radius from BS btn-group\n\t.btn-group > .btn.spinbox-up {\n\t\tborder-top-right-radius: 4px;\n\t}\n\n\t.spinbox-down {\n\t\tpadding: 0 0 8px 1px;\n\t\ttop: 2px;\n\t\theight: 15px;\n\t\tborder-bottom-left-radius: 4px;\n\n\t\t.glyphicon-chevron-down {\n\t\t\tposition: relative;\n\t\t\tleft: -1px;\n\t\t\ttop: 0px;\n\t\t}\n\t}\n}",".scheduler {\n\n\t.control-label {\n\t\tmin-width: 7em;\n\t}\n\n\t.inline-form-text {\n\t\tfloat: left;\n\t\tline-height: 27px;\n\t\tmargin-top:4px;\n\t}\n\n\t/* -------------------------------\n\tSTART DATE/TIME\n------------------------------- */\n\n\t.start-datetime {\n\n\t\t&.form-group {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\t.form-group {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t\t.combobox {\n\t\t\tmax-width: 9em;\n\n\t\t\t.dropdown-menu {\n\t\t\t\tmax-height: 200px;\n\t\t\t\toverflow: auto;\n\t\t\t}\n\n\t\t}\n\n\t\t.dropdown {\n\t\t\tfloat: left;\n\t\t\tmargin: 0 10px 0 0;\n\t\t}\n\n\t}\n\n\t/* -------------------------------\n\tTIMEZONE\n------------------------------- */\n\n\t.timezone-container {\n\t\t.input-group {\n\t\t\tmax-width: 20em;\n\t\t}\n\n\t\t.dropdown-label {\n\t\t\theight: 18px;\n\t\t\twhite-space: nowrap;\n\t\t\tmax-width: 20em;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t.dropdown-menu {\n\t\t\tmax-height: 200px;\n\t\t\toverflow: auto;\n\t\t}\n\n\t}\n\n/* -------------------------------\n\tREPEAT PANELS\n------------------------------- */\n\n\t.repeat-panel {\n\t\tmargin-left: 0;\n\n\t\tlabel {\n\t\t\tfont-weight: normal;\n\t\t}\n\t\t\n\t\t.radio {\n\t\t\tmargin-right: 10px;\n\t\t}\n\n\t\t.form-group {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t}\n\n// EVERY\n\n\t.repeat-interval {\n\t\tmargin-left: 0;\n\n\t\t.clearfix;\n\n\t\t.form-group {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t\t.dropdown-menu {\n\t\t\tmax-height: 200px;\n\t\t\toverflow: auto;\n\t\t}\n\n\t\t.repeat-every-panel {\n\t\t\tfloat: left;\n\n\t\t\t.repeat-every-pretext {\n\t\t\t\tpadding: 0 10px;\n\t\t\t}\n\n\t\t\t.spinbox {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-right: 10px;\n\n\t\t\t\tinput {\n\t\t\t\t\tmargin-bottom: 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// MONTHLY\n\n\t\t.repeat-monthly {\n\n\t\t\t.repeat-monthly-date {\n\t\t\t\tmargin-top: 10px;\n\t\t\t\t.clearfix;\n\n\t\t\t\t.selectlist {\n\t\t\t\t\tmargin-left: 5px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.repeat-monthly-day {\n\t\t\t\tmargin-top: 10px;\n\t\t\t\t.clearfix;\n\t\t\t}\n\n\t\t\t.month-days {\n\t\t\t\tmargin-left: 10px;\n\t\t\t}\n\n\t\t}\n\n// YEARLY\n\n\t\t.repeat-yearly {\n\n\t\t\t.repeat-yearly-date {\n\t\t\t\tmargin-top: 10px;\n\t\t\t\t.clearfix;\n\n\t\t\t\t.year-month-day {\n\t\t\t\t\tmargin-left: 10px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.year-month-days {\n\t\t\t\tmargin-left: 10px;\n\t\t\t}\n\n\t\t\t.year-month {\n\t\t\t\tmargin-left: 10px;\n\n\t\t\t}\n\n\t\t\t.repeat-yearly-day {\n\t\t\t\tmargin-top: 10px;\n\t\t\t\t.clearfix;\n\n\t\t\t\t.repeat-yearly-day-text {\n\t\t\t\t\tmargin-left: 10px;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n// WEEKLY\n\n\t\t.repeat-weekly {\n\n\t\t\tbutton:not(.active) {\n\t\t\t\tbackground-color: #fff;\n\t\t\t}\n\n\t\t\t.btn-group {\n\t\t\t\t&.disabled {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\topacity: 0.65;\n\n\t\t\t\t\t&:before {\n\t\t\t\t\t\tbackground: transparent;\n\t\t\t\t\t\tbottom: 0;\n\t\t\t\t\t\tcontent: \"\";\n\t\t\t\t\t\tleft: 0;\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\tright: 0;\n\t\t\t\t\t\ttop: 0;\n\t\t\t\t\t\tz-index: 5;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.selectlist {\n\t\t\tfloat: left;\n\t\t}\n\n\t\tlabel.radio {\n\t\t\tfloat: left;\n\t\t\tline-height: 27px;\n\n\t\t\tinput {\n\t\t\t\tmargin-top: 8px;\n\t\t\t}\n\t\t}\n\n/* -------------------------------\nEND\n------------------------------- */\n\n\t.repeat-end {\n\n\t\t.end-after {\n\t\t\tfloat: left;\n\t\t\tdisplay: inline-block;\n\t\t\tmargin-right: 10px;\n\t\t}\n\t\t\n\t\t.form-group {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t\t.end-option-panel {\n\n\t\t}\n\n\t}\n\n\n}",".search {\n\t&.disabled {\n\t\t.input-group-btn {\n\t\t\tcursor: not-allowed;\n\t\t}\n\t}\n}",".selectlist {\n\n\t&.disabled {\n\t\tcursor: not-allowed;\n\t}\n\n\t&-sizer {\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\tvisibility: hidden;\n\t\ttop: 0;\n\t}\n\n\t.selected-label {\n\t\toverflow: hidden;\t// helps with text flow on small screens\n\t\tmin-width: 2em;\n\t}\n\n\t.btn.dropdown-toggle {\n\t\twhite-space: normal;\n\n\t\t.selected-label {\n\t\t\tpadding-right: 10px;\n\t\t\ttext-align: left;\n\t\t}\n\t}\n}",".tree {\n\tborder: 1px solid @grayLight;\n\tborder-radius: 4px 4px 4px 4px;\n\tpadding: 10px 15px 0 15px;\n\toverflow-x: auto;\n\toverflow-y: auto;\n\tposition: relative;\n\tlist-style: none;\n\n\t*:focus {\n\t\toutline: none;\n\t}\n\n\tbutton:focus {\n\t\tcolor: @treeHoverText;\n\t}\n\n\tul {\n\t\tpadding-left: 0;\n\t\tmargin-top: 0;\n\t\tmargin-bottom: 0;\n\t\tlist-style: none;\n\t}\n\n\tli {\n\t\tmargin: 0;\n\t\tmargin-top: 5px;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.tree-loader {\n\t\t// make even with tree-branch-children\n\t\tmargin-left: 45px;\n\t}\n\n\t.tree-open > .tree-branch-header .glyphicon-play {\n\t\ttransform:rotate(90deg);\n\t\t-ms-transform:rotate(90deg);\n\t\t-webkit-transform:rotate(90deg);\n\t\tposition: relative;\n\t\tleft: -5px;\n\t}\n\n\t[data-children=false] > .tree-branch-header .icon-caret:before {\n\t\tcontent: '\\00a0'; //space\n\t}\n\n\t.tree-branch {\n\n\t\t.tree-branch-header {\n\t\t\tposition: relative;\n\t\t\tborder-radius: 6px;\n\n\t\t\t.tree-branch-name:hover {\n\t\t\t\tcolor: @treeHoverText;\n\t\t\t}\n\n\t\t\t.glyphicon-play {\n\t\t\t\tfont-size: 10px;\n\t\t\t\tpadding-right: 5px;\n\n\t\t\t\t&:before {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\ttop: -2px;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t.tree-branch-name {\n\t\t\t\twhite-space: nowrap;\n\t\t\t\tborder-radius: 6px;\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tborder: 0;\n\t\t\t}\n\n\t\t\tlabel {\n\t\t\t\tfont-weight: normal;\n\t\t\t\tpadding-left: 3px;\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t}\n\n\t\t.tree-branch-children {\n\t\t\tmargin-left: 14px;\n\t\t}\n\n\t}\n\n\t.tree-item {\n\t\tposition: relative;\n\t\tcursor: pointer;\n\t\tborder-radius: 6px;\n\t\tmargin-left: 26px;\n\n\t\t.tree-item-name {\n\t\t\twhite-space: nowrap;\n\t\t\tborder-radius: 6px;\n\t\t\tbackground-color: transparent;\n\t\t\tborder: 0;\n\t\t}\n\n\t\t.tree-item-name:hover {\n\t\t\tcolor: @treeHoverText;\n\t\t}\n\n\t\t&.tree-selected .tree-item-name {\n\t\t\tbackground-color: @treeSelectBackground;\n\t\t\tcolor: #fff;\n\t\t}\n\n\t\tlabel {\n\t\t\tfont-weight: normal;\n\t\t\tpadding-left: 7px;\n\t\t\tmargin-bottom: 0;\n\t\t\tcursor: pointer;\n\t\t}\n\n\t}\n\n\t.icon-caret:hover + .tree-branch-name {\n\t\tcolor: @treeHoverText;\n\t}\n\n\t// folder selectable\n\t&.tree-folder-select {\n\n\t\t.tree-branch {\n\n\t\t\t.icon-caret {\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tborder: 0;\n\t\t\t}\n\n\t\t\t.icon-caret:hover {\n\t\t\t\tcursor: pointer;\n\t\t\t\tcolor: @treeHoverText;\n\t\t\t}\n\n\t\t\t> .tree-branch-name {\n\t\t\t\tpadding: 1px 5px 0 5px;\n\t\t\t\tborder-radius: 6px;\n\n\n\t\t\t\t&.tree-selected {\n\t\t\t\t\tbackground-color: @treeSelectBackground;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t.tree-branch.tree-selected > .tree-branch-header .tree-branch-name {\n\t\t\tbackground-color: @treeSelectBackground;\n\t\t\tcolor: #fff;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: @treeSelectBackground;\n\t\t\t\tcolor: #fff;\n\t\t\t}\n\t\t}\n\n\t}\n\n}",".wizard {\n\n\t.clearfix;\n\n\tborder: 1px solid @navbarBorder;\n\tborder-radius: @baseBorderRadius;\n\tbox-shadow: 0 1px 4px rgba(0,0,0,.065);\n\tbackground-color: @tableBackgroundAccent;\n\tposition: relative;\n\tmin-height: 48px;\n\toverflow: hidden;\n\n\t> .steps {\n\t\tlist-style: none outside none;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\twidth: 4000px;\n\n\t\t&.previous-disabled {\n\t\t\tli {\n\t\t\t\t&.complete {\n\t\t\t\t\tcursor: default;\n\n\t\t\t\t\t&:hover {\n\t\t\t\t\t\tbackground: #f3f4f5;\n\t\t\t\t\t\tcolor: @successText;\n\t\t\t\t\t\tcursor: default;\n\n\t\t\t\t\t\t.chevron:before {\n\t\t\t\t\t\t\tborder-left-color: #f3f4f5;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tli {\n\t\t\tfloat: left;\n\t\t\tmargin: 0;\n\t\t\tpadding: 0 20px 0 30px;\n\t\t\theight: 46px;\n\t\t\tline-height: 46px;\n\t\t\tposition: relative;\n\t\t\tbackground: #ededed;\n\t\t\tcolor: @grayLight;\n\t\t\tfont-size: 16px;\n\t\t\tcursor: not-allowed;\n\n\t\t\t.chevron {\n\t\t\t\tborder: 24px solid transparent;\n\t\t\t\tborder-left: 14px solid @navbarBorder;\n\t\t\t\tborder-right: 0;\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tright: -14px;\n\t\t\t\ttop: 0;\n\t\t\t\tz-index: 1;\n\t\t\t}\n\n\t\t\t.chevron:before {\n\t\t\t\tborder: 24px solid transparent;\n\t\t\t\tborder-left: 14px solid #ededed;\n\t\t\t\tborder-right: 0;\n\t\t\t\tcontent: \"\";\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tright: 1px;\n\t\t\t\ttop: -24px;\n\t\t\t}\n\n\t\t\t&.complete {\n\t\t\t\tbackground: #f3f4f5;\n\t\t\t\tcolor: @successText;\n\n\t\t\t\t&:hover {\n\t\t\t\t\tbackground: #e7eff8;\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t.chevron:before {\n\t\t\t\t\t\tborder-left: 14px solid #e7eff8;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.chevron:before {\n\t\t\t\t\tborder-left: 14px solid #f3f4f5;\n\t\t\t\t}\n\t\t\t}\n\t\t\t&.active {\n\t\t\t\tbackground: #f1f6fc;\n\t\t\t\tcolor: @infoText;\n\t\t\t\tcursor: default;\n\n\t\t\t\t.chevron:before {\n\t\t\t\t\tborder-left: 14px solid #f1f6fc;\n\t\t\t\t}\n\n\t\t\t\t.badge {\n\t\t\t\t\tbackground-color: @infoText;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.badge {\n\t\t\t\tmargin-right: 8px;\n\t\t\t}\n\n\t\t\t.badge-success {\n\t\t\t\tbackground-color: @successText;\n\t\t\t}\n\t\t}\n\n\t\tli:first-child {\n\t\t\tborder-radius: 4px 0 0 4px;\n\t\t\tpadding-left: 20px;\n\t\t}\n\t}\n\n\t> .actions {\n\t\tz-index: 1000;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tline-height: 46px;\n\t\tfloat: right;\n\t\tpadding-left: 15px;\n\t\tpadding-right: 15px;\n\t\tvertical-align: middle;\n\t\tbackground-color: #e5e5e5;\n\t\tborder-left: 1px solid @navbarBorder;\n\n\t\ta {\n\t\t\tline-height: 45px;\n\t\t\tfont-size: 12px;\n\t\t\tmargin-right: 8px;\n\t\t}\n\n\t\t.btn-prev {\n\t\t\t&[disabled] {\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\n\t\t\tspan {\n\t\t\t\tmargin-right: 5px;\n\t\t\t}\n\t\t}\n\n\t\t.btn-next {\n\t\t\t&[disabled] {\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\n\t\t\tspan {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t}\n\n\t.step-content {\n\t\tborder-top: 1px solid #D4D4D4;\n\t\tpadding: 10px;\n\t\tfloat: left;\n\t\twidth: 100%;\n\n\t\t.step-pane {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t> .active {\n\t\t\tdisplay: block;\n\n\t\t\t.btn-group {\n\t\t\t\t.active {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// when complete\n\t&.complete {\n\t\t> .actions .glyphicon-arrow-right:before {\n\t\t\tdisplay: none;\n\t\t}\n\t\t> .actions .glyphicon-arrow-right {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n}"]}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/css/fuelux.min.css b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/css/fuelux.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..758a7b824caed8f5487e2d10f51b5bebac32d7fa
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/css/fuelux.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Fuel UX v3.0.2 
+ * Copyright 2012-2014 ExactTarget
+ * Licensed under the BSD-3-Clause license ()
+ */
+
+@charset "UTF-8";.fuelux .clearfix{*zoom:1}.fuelux .clearfix:before,.fuelux .clearfix:after{display:table;content:"";line-height:0}.fuelux .clearfix:after{clear:both}@font-face{font-family:fuelux;src:url(../fonts/fuelux.eot);src:url(../fonts/fuelux.eot?#iefix) format("embedded-opentype"),url(../fonts/fuelux.woff) format("woff"),url(../fonts/fuelux.ttf) format("truetype"),url(../fonts/fuelux.svg#fuelux) format("svg");font-weight:400;font-style:normal}.fuelux [class^=fueluxicon-]:before,.fuelux [class*=" fueluxicon-"]:before{font-family:fuelux!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;line-height:1;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fuelux .fueluxicon-loader-full:before{content:"\e000"}.fuelux .fueluxicon-loader-1:before{content:"\e001"}.fuelux .fueluxicon-loader-2:before{content:"\e002"}.fuelux .fueluxicon-loader-3:before{content:"\e003"}.fuelux .fueluxicon-loader-4:before{content:"\e004"}.fuelux .fueluxicon-loader-5:before{content:"\e005"}.fuelux .fueluxicon-loader-6:before{content:"\e006"}.fuelux .fueluxicon-loader-7:before{content:"\e007"}.fuelux .fueluxicon-loader-8:before{content:"\e008"}.fuelux .fueluxicon-bullet:before{content:"\e009"}.fuelux .checkbox.highlight{padding:4px}.fuelux .checkbox.highlight.checked{background:#e9e9e9;border-radius:4px}.fuelux .checkbox input[type=checkbox]:focus+.checkbox-label,.fuelux .checkbox input[type=checkbox]:hover+.checkbox-label,.fuelux .checkbox .checkbox-label:hover{color:#999}.fuelux .checkbox-custom{position:relative}.fuelux .checkbox-custom:before{font-family:"Glyphicons Halflings"!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;line-height:1;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;border:1px solid #adadad;border-radius:4px;color:#fff;content:" ";font-size:9px;height:14px;left:0;padding:1px 0 0 1px;position:absolute;top:3px;width:14px}.fuelux .checkbox-custom.checked:before{background:#39b3d7;border-color:#39b3d7;content:"\e013"}.fuelux .checkbox-custom.disabled{cursor:not-allowed}.fuelux .checkbox-custom.disabled:before{cursor:not-allowed;opacity:.5}.fuelux .checkbox-custom.checkbox-inline:before{left:0;top:3px}.fuelux .checkbox-custom.checkbox-inline.highlight{padding:4px 4px 4px 24px}.fuelux .checkbox-custom.checkbox-inline.highlight:before{left:4px;top:7px}.fuelux .checkbox-custom.checkbox-inline.highlight.checked{background:#e9e9e9;border-radius:4px}.fuelux .checkbox-custom input[type=checkbox]:focus+.checkbox-label{color:#999}.fuelux .combobox.disabled .input-group-btn{cursor:not-allowed}.fuelux .datepicker-calendar{padding:16px 16px 0;min-height:262px}.fuelux .datepicker-calendar button{border:0;padding:0;background-color:transparent}.fuelux .datepicker-calendar-days{height:182px;margin:10px 0 12px;width:100%}.fuelux .datepicker-calendar-days thead{border-bottom:1px solid #cccaca}.fuelux .datepicker-calendar-days tbody:before{line-height:3px;content:"\200C";display:block}.fuelux .datepicker-calendar-days td,.fuelux .datepicker-calendar-days th{font-size:14px;height:32px;text-align:center;vertical-align:middle;width:14.29%}.fuelux .datepicker-calendar-days td button{color:#231f20;display:inline-block;height:30px;text-decoration:none;width:30px}.fuelux .datepicker-calendar-days td span{display:block}.fuelux .datepicker-calendar-days td span:hover{background:#b7e3f8;text-decoration:none}.fuelux .datepicker-calendar-days td.current-day button{border:1px solid #1d75bb}.fuelux .datepicker-calendar-days td.last-month,.fuelux .datepicker-calendar-days td.next-month{background:#e3e2e1}.fuelux .datepicker-calendar-days td.past button{color:#8d8787}.fuelux .datepicker-calendar-days td.restricted button{cursor:no-drop;position:relative}.fuelux .datepicker-calendar-days td.restricted button:before{border-top:1px solid #a94442;bottom:0;content:" ";display:block;left:5px;position:absolute;right:5px;top:50%}.fuelux .datepicker-calendar-days td.restricted button:hover{background:0 0}.fuelux .datepicker-calendar-days td.selected span{background:#1d75bb}.fuelux .datepicker-calendar-days td.selected span:hover{background:#0f5f9f}.fuelux .datepicker-calendar-days td.selected button{color:#fff}.fuelux .datepicker-calendar-days td.selected.current-day{box-shadow:0 0 0 1px #fff offset}.fuelux .datepicker-calendar-days th{font-weight:700;height:22px;vertical-align:top}.fuelux .datepicker-calendar-header{*zoom:1}.fuelux .datepicker-calendar-header:before,.fuelux .datepicker-calendar-header:after{display:table;content:"";line-height:0}.fuelux .datepicker-calendar-header:after{clear:both}.fuelux .datepicker-calendar-header button{border:0;padding:0;background-color:transparent}.fuelux .datepicker-calendar-header .title{margin:0 auto;text-align:center;display:block;width:174px;color:#4d4d4f;font-size:20px;line-height:30px;text-decoration:underline;vertical-align:middle}.fuelux .datepicker-calendar-header .title:hover{color:#1d75bb;text-decoration:underline}.fuelux .datepicker-calendar-header .title.disabled{cursor:default;pointer-events:none;text-decoration:none}.fuelux .datepicker-calendar-header .title .month{display:inline;margin:0;padding:0}.fuelux .datepicker-calendar-header .title .month span{display:none}.fuelux .datepicker-calendar-header .title .month span.current{display:inline}.fuelux .datepicker-calendar-header .next,.fuelux .datepicker-calendar-header .prev{background:#666669;background-clip:padding-box;border-radius:30px;cursor:pointer;float:left;height:30px;text-align:center;width:30px}.fuelux .datepicker-calendar-header .next span.glyphicon,.fuelux .datepicker-calendar-header .prev span.glyphicon{color:#fff;font-size:16px;line-height:30px}.fuelux .datepicker-calendar-header .next:hover,.fuelux .datepicker-calendar-header .prev:hover{background:#1d75bb}.fuelux .datepicker-calendar-header .next{float:right}.fuelux .datepicker-calendar-header .next span.glyphicon{line-height:28px}.fuelux .datepicker-calendar-footer{background:#e3e2e1;background-clip:padding-box;border-radius:0 0 4px 4px;border-top:1px solid #cccaca;height:30px;margin:0 -16px;padding:4px 14px}.fuelux .datepicker-calendar-footer .datepicker-today{color:#231f20;font-size:14px;text-decoration:underline}.fuelux .datepicker-calendar-footer .datepicker-today:hover{color:#1b75bb;text-decoration:underline}.fuelux .datepicker-calendar-footer .datepicker-today.disabled{color:#8b8c8e;cursor:default;pointer-events:none}.fuelux .datepicker-calendar-footer .datepicker-today.disabled:hover{color:#8b8c8e}.fuelux .datepicker-calendar-wrapper{border:1px solid #6e6f71;min-height:20px;padding:0;width:300px}.fuelux .datepicker-wheels{display:none}.fuelux .datepicker-wheels ul button{border:0;padding:0;background-color:transparent}.fuelux .datepicker-wheels-footer{background:#e3e2e1;border-radius:0 0 4px 4px;border-top:1px solid #cccaca;clear:both}.fuelux .datepicker-wheels-footer .datepicker-wheels-back{display:block;color:#4d4d4f;float:left;line-height:22px;border:0;background-color:transparent}.fuelux .datepicker-wheels-footer .datepicker-wheels-back:hover{color:#1d75bb}.fuelux .datepicker-wheels-footer .datepicker-wheels-select{float:right;background-color:transparent;color:#049cdb}.fuelux .datepicker-wheels-footer .datepicker-wheels-select:hover{color:#1d75bb}.fuelux .datepicker-wheels-month,.fuelux .datepicker-wheels-year{float:left;width:50%}.fuelux .datepicker-wheels-month ul,.fuelux .datepicker-wheels-year ul{height:217px;list-style-type:none;margin:0;overflow:auto;padding:0;text-align:center}.fuelux .datepicker-wheels-month ul li,.fuelux .datepicker-wheels-year ul li{margin:4px 0}.fuelux .datepicker-wheels-month ul li button,.fuelux .datepicker-wheels-year ul li button{width:100%;text-align:center;color:#414041;display:block;font-size:16px;line-height:24px;text-decoration:none}.fuelux .datepicker-wheels-month ul li button:hover,.fuelux .datepicker-wheels-year ul li button:hover{background:#aee0f8;text-decoration:none}.fuelux .datepicker-wheels-month ul li.selected button,.fuelux .datepicker-wheels-year ul li.selected button{background:#1d75bb;color:#fff}.fuelux .datepicker-wheels-month ul li.selected button:hover,.fuelux .datepicker-wheels-year ul li.selected button:hover{background:#0f5f9f}.fuelux .datepicker-wheels-month .header,.fuelux .datepicker-wheels-year .header{background:#e3e2e1;background-clip:padding-box;border-bottom:1px solid #cccaca;border-radius:4px 0 0;color:#4d4d4f;font-size:20px;font-weight:700;line-height:30px;margin-top:0;margin-bottom:0;text-align:center}.fuelux .datepicker-wheels-month.full,.fuelux .datepicker-wheels-year.full{border-left:0;width:100%}.fuelux .datepicker-wheels-month.full .header,.fuelux .datepicker-wheels-year.full .header{border-radius:4px 4px 0 0}.fuelux .datepicker-wheels-year{border-left:1px solid #cccaca;float:right}.fuelux .datepicker-wheels-year .header{border-radius:0 4px 0 0}.fuelux .infinitescroll{overflow-y:auto}.fuelux .infinitescroll .infinitescroll-end{clear:both;font-style:italic;padding:6px;text-align:center}.fuelux .infinitescroll .infinitescroll-load{clear:both;padding:6px}.fuelux .infinitescroll .infinitescroll-load button{padding:5px 12px;width:100%}.fuelux .infinitescroll .infinitescroll-load .loader{font-size:32px;height:32px;margin:0 auto;width:32px}.fuelux .dropUp{-webkit-box-shadow:0 0 10px rgba(0,0,0,.2);-moz-box-shadow:0 0 10px rgba(0,0,0,.2);box-shadow:0 0 10px rgba(0,0,0,.2)}.fuelux .loader{height:64px;font-size:64px;position:relative;width:64px}.fuelux .loader:after,.fuelux .loader:before{font-family:fuelux!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;line-height:1;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;bottom:0;display:block;left:0;position:absolute;right:0;top:0}.fuelux .loader:before{content:'\e000';opacity:.33}.fuelux .loader.iefix:before{color:#bcbcbc;opacity:1}.fuelux .loader[data-frame="1"]:after{content:'\e001'}.fuelux .loader[data-frame="2"]:after{content:'\e002'}.fuelux .loader[data-frame="3"]:after{content:'\e003'}.fuelux .loader[data-frame="4"]:after{content:'\e004'}.fuelux .loader[data-frame="5"]:after{content:'\e005'}.fuelux .loader[data-frame="6"]:after{content:'\e006'}.fuelux .loader[data-frame="7"]:after{content:'\e007'}.fuelux .loader[data-frame="8"]:after{content:'\e008'}.fuelux input.glass,.fuelux textarea.glass{background:0 0;border:1px solid #fff;box-shadow:none}.fuelux input.glass:hover,.fuelux textarea.glass:hover{background:#d9edf7;border-color:#66afe9;cursor:pointer}.fuelux input.glass:hover[disabled],.fuelux textarea.glass:hover[disabled]{background:0 0;border-color:#fff;cursor:not-allowed}.fuelux input.glass:focus,.fuelux textarea.glass:focus{background:#fff;border-color:#66afe9;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);cursor:auto}.fuelux input.glass:focus[disabled],.fuelux textarea.glass:focus[disabled]{background:0 0;border-color:#fff;cursor:not-allowed}.fuelux input.glass[disabled],.fuelux textarea.glass[disabled]{cursor:not-allowed}.fuelux [data-toggle=buttons]>.btn>input[type=radio],.fuelux [data-toggle=buttons]>.btn>input[type=checkbox]{display:inline;position:absolute;left:-9999px}.fuelux .pillbox{border:1px solid #BBB;border-radius:4px;cursor:text;padding:3px}.fuelux .pillbox[data-readonly]{border:1px solid transparent}.fuelux .pillbox[data-readonly].truncate .pillbox-input-wrap{display:inline-block}.fuelux .pillbox[data-readonly].truncate .pillbox-input-wrap.truncated{display:none}.fuelux .pillbox[data-readonly].truncate .pillbox-more{display:inline}.fuelux .pillbox[data-readonly] .pill span.glyphicon-close{display:none}.fuelux .pillbox[data-readonly] .pillbox-add-item{display:none}.fuelux .pillbox[data-readonly] .pillbox-input-wrap{display:none}.fuelux .pillbox[data-readonly] .pillbox-input-wrap button.dropdown-toggle{display:none}.fuelux .pillbox.pills-editable .pill-group .pill span{cursor:text}.fuelux .pillbox.pills-editable .pill-group .pill span.glyphicon-close{cursor:pointer}.fuelux .pillbox>.pill-group{margin:0;padding:0;width:100%}.fuelux .pillbox>.pill-group>.pill{margin:2px;cursor:default;float:left;word-break:break-all}.fuelux .pillbox>.pill-group>.pill.pillbox-highlight{outline:1px dotted #999}.fuelux .pillbox>.pill-group>.pill.truncated{display:none}.fuelux .pillbox>.pill-group>.pill .pillbox-list-edit{border:0;color:#333;font-weight:400;border-radius:2px}.fuelux .pillbox>.pill-group>.pill .pillbox-list-edit:focus{outline:0;border:0}.fuelux .pillbox>.pill-group>.pill .glyphicon-close{cursor:pointer;top:-1px;left:2px}.fuelux .pillbox>.pill-group>.pill .glyphicon-close:before{content:" \00d7"}.fuelux .pillbox>.pill-group>.pill .glyphicon-close:hover{opacity:.4}.fuelux .pillbox .pillbox-input-wrap{position:relative;margin:4px 0 3px 3px;float:left}.fuelux .pillbox .pillbox-input-wrap.editing{border:1px solid #ccc;border-radius:4px;margin:2px 0 3px 3px}.fuelux .pillbox .pillbox-input-wrap.editing input.pillbox-add-item{border-radius:4px;color:#333;height:32px}.fuelux .pillbox .pillbox-add-item{border:0;box-shadow:none}.fuelux .pillbox .pillbox-add-item:focus{outline:0;border:0}.fuelux .pillbox .pillbox-more{cursor:pointer;display:none;line-height:30px}.fuelux .pillbox .suggest{max-height:166px;overflow-y:auto}.fuelux .pillbox .suggest>li{white-space:nowrap;cursor:pointer;padding:3px 20px}.fuelux .pillbox .suggest>li.pillbox-suggest-sel{background-color:#eee}.fuelux .pillbox .suggest>li:hover{background-color:#eee}.fuelux .placard{display:inline-block;position:relative}.fuelux .placard[data-ellipsis=true].showing input.placard-field{overflow:visible;text-overflow:clip;white-space:normal}.fuelux .placard[data-ellipsis=true] input.placard-field{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fuelux .placard[data-ellipsis=true] textarea.placard-field[readonly]{overflow:hidden}.fuelux .placard.showing .placard-footer,.fuelux .placard.showing .placard-header,.fuelux .placard.showing .placard-popup{display:block;z-index:1}.fuelux .placard.showing input.placard-field,.fuelux .placard.showing textarea.placard-field{background:#fff;border:1px solid #CCC;box-shadow:none;position:relative;z-index:1}.fuelux .placard input.placard-field,.fuelux .placard textarea.placard-field{resize:none}.fuelux .placard input.placard-field[readonly],.fuelux .placard textarea.placard-field[readonly]{background:#fff;cursor:auto}.fuelux .placard input.placard-field[readonly].glass,.fuelux .placard textarea.placard-field[readonly].glass{background:0 0}.fuelux .placard input.placard-field[readonly].glass:hover,.fuelux .placard textarea.placard-field[readonly].glass:hover{background:#d9edf7;cursor:pointer}.fuelux .placard input.placard-field:focus,.fuelux .placard textarea.placard-field:focus{border:1px solid #CCC;box-shadow:none}.fuelux .placard-cancel{font-size:12px;margin-right:4px;vertical-align:middle}.fuelux .placard-footer,.fuelux .placard-header{display:none;left:0;line-height:1;position:absolute;right:0}.fuelux .placard-footer{padding:4px 0 8px;text-align:right;top:100%}.fuelux .placard-header{bottom:100%;padding:8px 0 4px}.fuelux .placard-header h1,.fuelux .placard-header h2,.fuelux .placard-header h3,.fuelux .placard-header h4,.fuelux .placard-header h5,.fuelux .placard-header h6{margin:0}.fuelux .placard-popup{background:#d9edf7;background-clip:padding-box;border:1px solid #ccc;border-radius:4px;bottom:-8px;box-shadow:0 0 0 1px #fff inset;display:none;left:-8px;position:absolute;right:-8px;top:-8px}.fuelux .radio.highlight{padding:4px}.fuelux .radio.highlight.checked{background:#e9e9e9;border-radius:4px}.fuelux .radio input[type=radio]:focus+.radio-label,.fuelux .radio input[type=radio]:hover+.radio-label,.fuelux .radio .radio-label:hover{color:#999}.fuelux .radio-custom{position:relative}.fuelux .radio-custom:after{background:0 0;border-radius:6px;content:" ";height:6px;left:4px;position:absolute;top:7px;width:6px}.fuelux .radio-custom:before{border:1px solid #adadad;border-radius:14px;content:" ";height:14px;left:0;position:absolute;top:3px;width:14px}.fuelux .radio-custom.checked:after{background:#fff}.fuelux .radio-custom.checked:before{background:#39b3d7;border-color:#39b3d7}.fuelux .radio-custom.disabled{cursor:not-allowed}.fuelux .radio-custom.disabled:after{cursor:not-allowed}.fuelux .radio-custom.disabled:before{cursor:not-allowed;opacity:.5}.fuelux .radio-custom.radio-inline:after{left:4px;top:7px}.fuelux .radio-custom.radio-inline:before{left:0;top:3px}.fuelux .radio-custom.radio-inline.highlight{padding:4px 4px 4px 24px}.fuelux .radio-custom.radio-inline.highlight:after{left:8px;top:11px}.fuelux .radio-custom.radio-inline.highlight:before{left:4px;top:7px}.fuelux .radio-custom.radio-inline.highlight.checked{background:#e9e9e9;border-radius:4px}.fuelux .radio-custom input[type=radio]:focus+.radio-label{color:#999}.fuelux .repeater{border:1px solid #ddd;border-radius:4px}.fuelux .repeater-canvas.scrolling{bottom:0;left:0;overflow-y:auto;position:absolute;right:0;top:0}.fuelux .repeater-header,.fuelux .repeater-footer{background:#f9f9f9;min-height:50px;padding:8px;*zoom:1}.fuelux .repeater-header:before,.fuelux .repeater-footer:before,.fuelux .repeater-header:after,.fuelux .repeater-footer:after{display:table;content:"";line-height:0}.fuelux .repeater-header:after,.fuelux .repeater-footer:after{clear:both}.fuelux .repeater-header-left,.fuelux .repeater-footer-left{float:left}.fuelux .repeater-header-right,.fuelux .repeater-footer-right{float:right}@media (max-width:625px){.fuelux .repeater-header-left,.fuelux .repeater-footer-left,.fuelux .repeater-header-right,.fuelux .repeater-footer-right{float:none;*zoom:1}.fuelux .repeater-header-left:before,.fuelux .repeater-footer-left:before,.fuelux .repeater-header-right:before,.fuelux .repeater-footer-right:before,.fuelux .repeater-header-left:after,.fuelux .repeater-footer-left:after,.fuelux .repeater-header-right:after,.fuelux .repeater-footer-right:after{display:table;content:"";line-height:0}.fuelux .repeater-header-left:after,.fuelux .repeater-footer-left:after,.fuelux .repeater-header-right:after,.fuelux .repeater-footer-right:after{clear:both}.fuelux .repeater-header-left,.fuelux .repeater-footer-left{margin-bottom:8px}}.fuelux .repeater-header{border-bottom:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px}.fuelux .repeater-footer{border-top:1px solid #ddd;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.fuelux .repeater-loader{display:none;left:50%;position:absolute;margin:-32px 0 0 -32px;top:50%}.fuelux .repeater-viewport{min-height:80px;position:relative}.fuelux .repeater-pagination label{font-weight:400}.fuelux .repeater-pagination .repeater-primaryPaging{display:none;vertical-align:middle;width:116px}.fuelux .repeater-pagination .repeater-primaryPaging.active{display:inline-block}.fuelux .repeater-pagination .repeater-primaryPaging ul.dropdown-menu{min-width:116px}.fuelux .repeater-pagination .repeater-secondaryPaging{display:none;width:82px}.fuelux .repeater-pagination .repeater-secondaryPaging.active{display:inline-block}.fuelux .repeater-search{float:left;width:200px}.fuelux .repeater-title{display:block;float:left;line-height:34px;margin-right:10px}.fuelux .repeater[data-currentview=list] .repeater-loader{margin-top:-12px}.fuelux .repeater[data-currentview=list] .repeater-loader.noHeader{margin-top:-32px}.fuelux .repeater-list-check{display:inline-block;height:0;line-height:0;position:relative;vertical-align:top;width:0}.fuelux .repeater-list-check span.glyphicon{left:-22px;position:absolute;top:2px}.fuelux .repeater-list-header,.fuelux .repeater-list-items{margin-bottom:0;width:100%}.fuelux .repeater-list-header td,.fuelux .repeater-list-items td{border-bottom:1px solid #ddd;border-left:1px solid #ddd;border-top:0}.fuelux .repeater-list-header td:first-child,.fuelux .repeater-list-items td:first-child{border-left:0}.fuelux .repeater-list-header{background:#F9F9F9}.fuelux .repeater-list-header td{font-weight:700}.fuelux .repeater-list-header td.sortable:hover,.fuelux .repeater-list-header td.sortable.sorted{background:#F1F1F1;cursor:pointer;background-color:#f1f1f1;background-image:-moz-linear-gradient(top,#f9f9f9,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f9f9f9),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f9f9f9,#e5e5e5);background-image:-o-linear-gradient(top,#f9f9f9,#e5e5e5);background-image:linear-gradient(to bottom,#f9f9f9,#e5e5e5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#ffe5e5e5', GradientType=0)}.fuelux .repeater-list-header td.sortable.sorted span.glyphicon{display:block}.fuelux .repeater-list-header td span.glyphicon{display:none;float:right;margin-top:2px}.fuelux .repeater-list-items tr.empty td{border-bottom:0;font-style:italic;padding:20px;text-align:center;width:100%}.fuelux .repeater-list-items tr.selectable:hover{background:#d9edf7;cursor:pointer}.fuelux .repeater-list-items tr.selected{background:#66AFE9;color:#fff}.fuelux .repeater-list-items tr.selected:hover{background:#428bca}.fuelux .repeater-list-items tr.selected td:first-child{padding-left:30px}.fuelux .repeater-list-wrapper{overflow-y:auto}.fuelux .repeater-thumbnail{border:1px solid #ddd;color:#666;float:left;font-size:12px;height:130px;line-height:36px;margin:10px 12px;text-align:center;width:100px;-webkit-box-shadow:0 1px 4px 0 #ddd;box-shadow:0 1px 4px 0 #ddd}.fuelux .repeater-thumbnail img{display:block;margin-top:12px}.fuelux .repeater-thumbnail-cont{height:100%;overflow-y:auto;padding:10px;width:100%}.fuelux .repeater-thumbnail-cont div.empty{font-style:italic;padding:20px 10px;text-align:center}.fuelux .spinbox{display:inline-block;position:relative}.fuelux .spinbox.digits-3{width:60px}.fuelux .spinbox.disabled .spinbox-buttons{cursor:not-allowed}.fuelux .spinbox .spinbox-input{float:left;padding-bottom:3px;padding:0 25px 0 7px}.fuelux .spinbox .btn{position:relative;width:20px;height:13px;padding-top:0;padding-right:9px;padding-left:9px}.fuelux .spinbox .btn.disabled{cursor:not-allowed}.fuelux .spinbox .spinbox-buttons{position:absolute;height:28px;width:20px;right:2px}.fuelux .spinbox .spinbox-up{padding:0 0 14px 1px;top:2px}.fuelux .spinbox .spinbox-up .glyphicon-chevron-up{position:relative;top:0}.fuelux .spinbox .btn-group>.btn.spinbox-up{border-top-right-radius:4px}.fuelux .spinbox .spinbox-down{padding:0 0 8px 1px;top:2px;height:15px;border-bottom-left-radius:4px}.fuelux .spinbox .spinbox-down .glyphicon-chevron-down{position:relative;left:-1px;top:0}.fuelux .scheduler .control-label{min-width:7em}.fuelux .scheduler .inline-form-text{float:left;line-height:27px;margin-top:4px}.fuelux .scheduler .start-datetime.form-group{margin-bottom:0}.fuelux .scheduler .start-datetime .form-group{margin-left:0}.fuelux .scheduler .start-datetime .combobox{max-width:9em}.fuelux .scheduler .start-datetime .combobox .dropdown-menu{max-height:200px;overflow:auto}.fuelux .scheduler .start-datetime .dropdown{float:left;margin:0 10px 0 0}.fuelux .scheduler .timezone-container .input-group{max-width:20em}.fuelux .scheduler .timezone-container .dropdown-label{height:18px;white-space:nowrap;max-width:20em;overflow:hidden;text-overflow:ellipsis}.fuelux .scheduler .timezone-container .dropdown-menu{max-height:200px;overflow:auto}.fuelux .scheduler .repeat-panel{margin-left:0}.fuelux .scheduler .repeat-panel label{font-weight:400}.fuelux .scheduler .repeat-panel .radio{margin-right:10px}.fuelux .scheduler .repeat-panel .form-group{margin-left:0}.fuelux .scheduler .repeat-interval{margin-left:0;*zoom:1}.fuelux .scheduler .repeat-interval:before,.fuelux .scheduler .repeat-interval:after{display:table;content:"";line-height:0}.fuelux .scheduler .repeat-interval:after{clear:both}.fuelux .scheduler .repeat-interval .form-group{margin-left:0}.fuelux .scheduler .repeat-interval .dropdown-menu{max-height:200px;overflow:auto}.fuelux .scheduler .repeat-interval .repeat-every-panel{float:left}.fuelux .scheduler .repeat-interval .repeat-every-panel .repeat-every-pretext{padding:0 10px}.fuelux .scheduler .repeat-interval .repeat-every-panel .spinbox{float:left;margin-right:10px}.fuelux .scheduler .repeat-interval .repeat-every-panel .spinbox input{margin-bottom:0}.fuelux .scheduler .repeat-monthly .repeat-monthly-date{margin-top:10px;*zoom:1}.fuelux .scheduler .repeat-monthly .repeat-monthly-date:before,.fuelux .scheduler .repeat-monthly .repeat-monthly-date:after{display:table;content:"";line-height:0}.fuelux .scheduler .repeat-monthly .repeat-monthly-date:after{clear:both}.fuelux .scheduler .repeat-monthly .repeat-monthly-date .selectlist{margin-left:5px}.fuelux .scheduler .repeat-monthly .repeat-monthly-day{margin-top:10px;*zoom:1}.fuelux .scheduler .repeat-monthly .repeat-monthly-day:before,.fuelux .scheduler .repeat-monthly .repeat-monthly-day:after{display:table;content:"";line-height:0}.fuelux .scheduler .repeat-monthly .repeat-monthly-day:after{clear:both}.fuelux .scheduler .repeat-monthly .month-days{margin-left:10px}.fuelux .scheduler .repeat-yearly .repeat-yearly-date{margin-top:10px;*zoom:1}.fuelux .scheduler .repeat-yearly .repeat-yearly-date:before,.fuelux .scheduler .repeat-yearly .repeat-yearly-date:after{display:table;content:"";line-height:0}.fuelux .scheduler .repeat-yearly .repeat-yearly-date:after{clear:both}.fuelux .scheduler .repeat-yearly .repeat-yearly-date .year-month-day{margin-left:10px}.fuelux .scheduler .repeat-yearly .year-month-days{margin-left:10px}.fuelux .scheduler .repeat-yearly .year-month{margin-left:10px}.fuelux .scheduler .repeat-yearly .repeat-yearly-day{margin-top:10px;*zoom:1}.fuelux .scheduler .repeat-yearly .repeat-yearly-day:before,.fuelux .scheduler .repeat-yearly .repeat-yearly-day:after{display:table;content:"";line-height:0}.fuelux .scheduler .repeat-yearly .repeat-yearly-day:after{clear:both}.fuelux .scheduler .repeat-yearly .repeat-yearly-day .repeat-yearly-day-text{margin-left:10px}.fuelux .scheduler .repeat-weekly button:not(.active){background-color:#fff}.fuelux .scheduler .repeat-weekly .btn-group.disabled{position:relative;opacity:.65}.fuelux .scheduler .repeat-weekly .btn-group.disabled:before{background:0 0;bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:5}.fuelux .scheduler .selectlist{float:left}.fuelux .scheduler label.radio{float:left;line-height:27px}.fuelux .scheduler label.radio input{margin-top:8px}.fuelux .scheduler .repeat-end .end-after{float:left;display:inline-block;margin-right:10px}.fuelux .scheduler .repeat-end .form-group{margin-left:0}.fuelux .search.disabled .input-group-btn{cursor:not-allowed}.fuelux .selectlist.disabled{cursor:not-allowed}.fuelux .selectlist-sizer{display:inline-block;position:absolute;visibility:hidden;top:0}.fuelux .selectlist .selected-label{overflow:hidden;min-width:2em}.fuelux .selectlist .btn.dropdown-toggle{white-space:normal}.fuelux .selectlist .btn.dropdown-toggle .selected-label{padding-right:10px;text-align:left}.fuelux .tree{border:1px solid #999;border-radius:4px;padding:10px 15px 0;overflow-x:auto;overflow-y:auto;position:relative;list-style:none}.fuelux .tree :focus{outline:0}.fuelux .tree button:focus{color:#999}.fuelux .tree ul{padding-left:0;margin-top:0;margin-bottom:0;list-style:none}.fuelux .tree li{margin:0;margin-top:5px;margin-bottom:5px}.fuelux .tree .tree-loader{margin-left:45px}.fuelux .tree .tree-open>.tree-branch-header .glyphicon-play{transform:rotate(90deg);-ms-transform:rotate(90deg);-webkit-transform:rotate(90deg);position:relative;left:-5px}.fuelux .tree [data-children=false]>.tree-branch-header .icon-caret:before{content:'\00a0'}.fuelux .tree .tree-branch .tree-branch-header{position:relative;border-radius:6px}.fuelux .tree .tree-branch .tree-branch-header .tree-branch-name:hover{color:#999}.fuelux .tree .tree-branch .tree-branch-header .glyphicon-play{font-size:10px;padding-right:5px}.fuelux .tree .tree-branch .tree-branch-header .glyphicon-play:before{position:relative;top:-2px}.fuelux .tree .tree-branch .tree-branch-header .tree-branch-name{white-space:nowrap;border-radius:6px;background-color:transparent;border:0}.fuelux .tree .tree-branch .tree-branch-header label{font-weight:400;padding-left:3px;margin-bottom:0;cursor:pointer}.fuelux .tree .tree-branch .tree-branch-children{margin-left:14px}.fuelux .tree .tree-item{position:relative;cursor:pointer;border-radius:6px;margin-left:26px}.fuelux .tree .tree-item .tree-item-name{white-space:nowrap;border-radius:6px;background-color:transparent;border:0}.fuelux .tree .tree-item .tree-item-name:hover{color:#999}.fuelux .tree .tree-item.tree-selected .tree-item-name{background-color:#4f4f4f;color:#fff}.fuelux .tree .tree-item label{font-weight:400;padding-left:7px;margin-bottom:0;cursor:pointer}.fuelux .tree .icon-caret:hover+.tree-branch-name{color:#999}.fuelux .tree.tree-folder-select .tree-branch .icon-caret{background-color:transparent;border:0}.fuelux .tree.tree-folder-select .tree-branch .icon-caret:hover{cursor:pointer;color:#999}.fuelux .tree.tree-folder-select .tree-branch>.tree-branch-name{padding:1px 5px 0;border-radius:6px}.fuelux .tree.tree-folder-select .tree-branch>.tree-branch-name.tree-selected{background-color:#4f4f4f;color:#fff}.fuelux .tree.tree-folder-select .tree-branch.tree-selected>.tree-branch-header .tree-branch-name{background-color:#4f4f4f;color:#fff}.fuelux .tree.tree-folder-select .tree-branch.tree-selected>.tree-branch-header .tree-branch-name:hover{background-color:#4f4f4f;color:#fff}.fuelux .wizard{*zoom:1;border:1px solid #d4d4d4;border-radius:4px;box-shadow:0 1px 4px rgba(0,0,0,.065);background-color:#f9f9f9;position:relative;min-height:48px;overflow:hidden}.fuelux .wizard:before,.fuelux .wizard:after{display:table;content:"";line-height:0}.fuelux .wizard:after{clear:both}.fuelux .wizard>.steps{list-style:none outside none;padding:0;margin:0;width:4000px}.fuelux .wizard>.steps.previous-disabled li.complete{cursor:default}.fuelux .wizard>.steps.previous-disabled li.complete:hover{background:#f3f4f5;color:#468847;cursor:default}.fuelux .wizard>.steps.previous-disabled li.complete:hover .chevron:before{border-left-color:#f3f4f5}.fuelux .wizard>.steps li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#999;font-size:16px;cursor:not-allowed}.fuelux .wizard>.steps li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.fuelux .wizard>.steps li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.fuelux .wizard>.steps li.complete{background:#f3f4f5;color:#468847}.fuelux .wizard>.steps li.complete:hover{background:#e7eff8;cursor:pointer}.fuelux .wizard>.steps li.complete:hover .chevron:before{border-left:14px solid #e7eff8}.fuelux .wizard>.steps li.complete .chevron:before{border-left:14px solid #f3f4f5}.fuelux .wizard>.steps li.active{background:#f1f6fc;color:#3a87ad;cursor:default}.fuelux .wizard>.steps li.active .chevron:before{border-left:14px solid #f1f6fc}.fuelux .wizard>.steps li.active .badge{background-color:#3a87ad}.fuelux .wizard>.steps li .badge{margin-right:8px}.fuelux .wizard>.steps li .badge-success{background-color:#468847}.fuelux .wizard>.steps li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.fuelux .wizard>.actions{z-index:1000;position:absolute;right:0;line-height:46px;float:right;padding-left:15px;padding-right:15px;vertical-align:middle;background-color:#e5e5e5;border-left:1px solid #d4d4d4}.fuelux .wizard>.actions a{line-height:45px;font-size:12px;margin-right:8px}.fuelux .wizard>.actions .btn-prev[disabled]{cursor:not-allowed}.fuelux .wizard>.actions .btn-prev span{margin-right:5px}.fuelux .wizard>.actions .btn-next[disabled]{cursor:not-allowed}.fuelux .wizard>.actions .btn-next span{margin-left:5px}.fuelux .wizard .step-content{border-top:1px solid #D4D4D4;padding:10px;float:left;width:100%}.fuelux .wizard .step-content .step-pane{display:none}.fuelux .wizard .step-content>.active{display:block}.fuelux .wizard .step-content>.active .btn-group .active{display:inline-block}.fuelux .wizard.complete>.actions .glyphicon-arrow-right:before{display:none}.fuelux .wizard.complete>.actions .glyphicon-arrow-right{margin-left:0}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/fonts/fuelux.eot b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/fonts/fuelux.eot
new file mode 100644
index 0000000000000000000000000000000000000000..36f005ee9819158bf4dbb3e0cf3b94949c755d26
Binary files /dev/null and b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/fonts/fuelux.eot differ
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/fonts/fuelux.svg b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/fonts/fuelux.svg
new file mode 100644
index 0000000000000000000000000000000000000000..4f0eeb005708f4e95c9090a068d678c6cfcf7169
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/fonts/fuelux.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by Fontastic.me</metadata>
+<defs>
+<font id="fuelux" horiz-adv-x="512">
+<font-face font-family="fuelux" units-per-em="512" ascent="480" descent="-32"/>
+<missing-glyph horiz-adv-x="512" />
+
+<glyph unicode="&#57344;" d="M151 391c26 19 56 32 90 35l0 83c-56-3-108-25-149-59z m-148-114l84 0c4 34 18 64 38 89l-58 58c-36-39-59-91-64-147z m59-185l59 59c-19 26-32 56-35 90l-83 0c3-56 25-108 59-149z m173-5c-34 4-64 18-89 38l-58-58c39-36 91-59 147-64z m126 34c-26-19-56-32-90-35l0-83c56 3 108 25 149 59z m148 114l-84 0c-4-34-18-64-38-89l58-58c36 39 59 91 64 147z m-232 190c34-4 64-18 89-38l58 58c-39 36-91 59-147 64z m173-5l-59-59c19-26 32-56 35-90l83 0c-3 56-25 108-59 149z"/>
+<glyph unicode="&#57345;" d="M277 425c34-4 64-18 89-38l58 58c-39 36-91 59-147 64z"/>
+<glyph unicode="&#57346;" d="M450 420l-59-59c19-26 32-56 35-90l83 0c-3 56-25 108-59 149z"/>
+<glyph unicode="&#57347;" d="M509 235l-84 0c-4-34-18-64-38-89l58-58c36 39 59 91 64 147z"/>
+<glyph unicode="&#57348;" d="M361 121c-26-19-56-32-90-35l0-83c56 3 108 25 149 59z"/>
+<glyph unicode="&#57349;" d="M235 87c-34 4-64 18-89 38l-58-58c39-36 91-59 147-64z"/>
+<glyph unicode="&#57350;" d="M62 92l59 59c-19 26-32 56-35 90l-83 0c3-56 25-108 59-149z"/>
+<glyph unicode="&#57351;" d="M3 277l84 0c4 34 18 64 38 89l-58 58c-36-39-59-91-64-147z"/>
+<glyph unicode="&#57352;" d="M151 391c26 19 56 32 90 35l0 83c-56-3-108-25-149-59z"/>
+<glyph unicode="&#57353;" d="M336 218c0-47-38-85-85-85-46 0-84 38-84 85 0 46 38 84 84 84 47 0 85-38 85-84z"/>
+</font></defs></svg>
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/fonts/fuelux.ttf b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/fonts/fuelux.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..100a104bf190eaae589165a04a19db27beef7d2c
Binary files /dev/null and b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/fonts/fuelux.ttf differ
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/fonts/fuelux.woff b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/fonts/fuelux.woff
new file mode 100644
index 0000000000000000000000000000000000000000..4c2cd2d62cb06f7ffd09ae877a475c3887d9dc04
Binary files /dev/null and b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/fonts/fuelux.woff differ
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/js/fuelux.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/js/fuelux.js
new file mode 100644
index 0000000000000000000000000000000000000000..84b321b12d1fede074656b771d58758b7857d78e
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/js/fuelux.js
@@ -0,0 +1,6226 @@
+/*!
+ * Fuel UX v3.0.2
+ * Copyright 2012-2014 ExactTarget
+ * Licensed under the BSD-3-Clause license ()
+ */
+
+
+// For more information on UMD visit: https://github.com/umdjs/umd/
+( function( factory ) {
+	if ( typeof define === 'function' && define.amd ) {
+		define( [ 'jquery', 'bootstrap' ], factory );
+	} else {
+		factory( jQuery );
+	}
+}( function( jQuery ) {
+
+	if ( typeof jQuery === 'undefined' ) {
+		throw new Error( 'Fuel UX\'s JavaScript requires jQuery' )
+	}
+
+	if ( typeof jQuery.fn.dropdown === 'undefined' || typeof jQuery.fn.collapse === 'undefined' ) {
+		throw new Error( 'Fuel UX\'s JavaScript requires Bootstrap' )
+	}
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Checkbox
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.checkbox;
+
+		// CHECKBOX CONSTRUCTOR AND PROTOTYPE
+
+		var Checkbox = function( element, options ) {
+			this.options = $.extend( {}, $.fn.checkbox.defaults, options );
+
+			// cache elements
+			this.$element = $( element ).is( 'input[type="checkbox"]' ) ? $( element ) : $( element ).find( 'input[type="checkbox"]:first' );
+			this.$label = this.$element.parent();
+			this.$parent = this.$label.parent( '.checkbox' );
+			this.$toggleContainer = this.$element.attr( 'data-toggle' );
+			this.state = {
+				disabled: false,
+				checked: false
+			};
+
+			if ( this.$parent.length === 0 ) {
+				this.$parent = null;
+			}
+
+			if ( Boolean( this.$toggleContainer ) ) {
+				this.$toggleContainer = $( this.$toggleContainer );
+			} else {
+				this.$toggleContainer = null;
+			}
+
+			// handle events
+			this.$element.on( 'change.fu.checkbox', $.proxy( this.itemchecked, this ) );
+
+			// set default state
+			this.setState();
+		};
+
+		Checkbox.prototype = {
+
+			constructor: Checkbox,
+
+			setState: function( $chk ) {
+				$chk = $chk || this.$element;
+
+				this.state.disabled = Boolean( $chk.prop( 'disabled' ) );
+				this.state.checked = Boolean( $chk.is( ':checked' ) );
+
+				this._resetClasses();
+
+				// set state of checkbox
+				this._toggleCheckedState();
+				this._toggleDisabledState();
+
+				//toggle container
+				this.toggleContainer();
+			},
+
+			enable: function() {
+				this.state.disabled = false;
+				this.$element.attr( 'disabled', false );
+				this._resetClasses();
+				this.$element.trigger( 'enabled.fu.checkbox' );
+			},
+
+			disable: function() {
+				this.state.disabled = true;
+				this.$element.attr( 'disabled', true );
+				this._setDisabledClass();
+				this.$element.trigger( 'disabled.fu.checkbox' );
+			},
+
+			check: function() {
+				this.state.checked = true;
+				this.$element.prop( 'checked', true );
+				this._setCheckedClass();
+				this.$element.trigger( 'checked.fu.checkbox' );
+			},
+
+			uncheck: function() {
+				this.state.checked = false;
+				this.$element.prop( 'checked', false );
+				this._resetClasses();
+				this.$element.trigger( 'unchecked.fu.checkbox' );
+			},
+
+			isChecked: function() {
+				return this.state.checked;
+			},
+
+			toggle: function() {
+				this.state.checked = !this.state.checked;
+
+				this._toggleCheckedState();
+			},
+
+			toggleContainer: function() {
+				if ( Boolean( this.$toggleContainer ) ) {
+					if ( this.state.checked ) {
+						this.$toggleContainer.removeClass( 'hide' );
+						this.$toggleContainer.attr( 'aria-hidden', 'false' );
+					} else {
+						this.$toggleContainer.addClass( 'hide' );
+						this.$toggleContainer.attr( 'aria-hidden', 'true' );
+					}
+				}
+			},
+
+			itemchecked: function( element ) {
+				this.setState( $( element.target ) );
+			},
+
+			destroy: function() {
+				this.$parent.remove();
+				// remove any external bindings
+				// [none]
+				// empty elements to return to original markup
+				// [none]
+				return this.$parent[ 0 ].outerHTML;
+			},
+
+			_resetClasses: function() {
+				var classesToRemove = [];
+
+				if ( !this.state.checked ) {
+					classesToRemove.push( 'checked' );
+				}
+
+				if ( !this.state.disabled ) {
+					classesToRemove.push( 'disabled' );
+				}
+
+				classesToRemove = classesToRemove.join( ' ' );
+
+				this.$label.removeClass( classesToRemove );
+
+				if ( this.$parent ) {
+					this.$parent.removeClass( classesToRemove );
+				}
+			},
+
+			_toggleCheckedState: function() {
+				if ( this.state.checked ) {
+					this.check();
+				} else {
+					this.uncheck();
+				}
+			},
+
+			_toggleDisabledState: function() {
+				if ( this.state.disabled ) {
+					this.disable();
+				} else {
+					this.enable();
+				}
+			},
+
+			_setCheckedClass: function() {
+				this.$label.addClass( 'checked' );
+
+				if ( this.$parent ) {
+					this.$parent.addClass( 'checked' );
+				}
+			},
+
+			_setDisabledClass: function() {
+				this.$label.addClass( 'disabled' );
+
+				if ( this.$parent ) {
+					this.$parent.addClass( 'disabled' );
+				}
+			}
+		};
+
+
+		// CHECKBOX PLUGIN DEFINITION
+
+		$.fn.checkbox = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.checkbox' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) {
+					$this.data( 'fu.checkbox', ( data = new Checkbox( this, options ) ) );
+				}
+
+				if ( typeof option === 'string' ) {
+					methodReturn = data[ option ].apply( data, args );
+				}
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.checkbox.defaults = {};
+
+		$.fn.checkbox.Constructor = Checkbox;
+
+		$.fn.checkbox.noConflict = function() {
+			$.fn.checkbox = old;
+			return this;
+		};
+
+		// DATA-API
+
+		$( document ).on( 'mouseover.fu.checkbox.data-api', '[data-initialize=checkbox]', function( e ) {
+			var $control = $( e.target ).closest( '.checkbox' ).find( '[type=checkbox]' );
+			if ( !$control.data( 'fu.checkbox' ) ) {
+				$control.checkbox( $control.data() );
+			}
+		} );
+
+		// Must be domReady for AMD compatibility
+		$( function() {
+			$( '[data-initialize=checkbox] [type=checkbox]' ).each( function() {
+				var $this = $( this );
+				if ( !$this.data( 'fu.checkbox' ) ) {
+					$this.checkbox( $this.data() );
+				}
+			} );
+		} );
+
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Combobox
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.combobox;
+
+
+		// COMBOBOX CONSTRUCTOR AND PROTOTYPE
+
+		var Combobox = function( element, options ) {
+			this.$element = $( element );
+			this.options = $.extend( {}, $.fn.combobox.defaults, options );
+
+			this.$dropMenu = this.$element.find( '.dropdown-menu' );
+			this.$input = this.$element.find( 'input' );
+			this.$button = this.$element.find( '.btn' );
+
+			this.$element.on( 'click.fu.combobox', 'a', $.proxy( this.itemclicked, this ) );
+			this.$element.on( 'change.fu.combobox', 'input', $.proxy( this.inputchanged, this ) );
+			this.$element.on( 'shown.bs.dropdown', $.proxy( this.menuShown, this ) );
+
+			// set default selection
+			this.setDefaultSelection();
+		};
+
+		Combobox.prototype = {
+
+			constructor: Combobox,
+
+			destroy: function() {
+				this.$element.remove();
+				// remove any external bindings
+				// [none]
+
+				// set input value attrbute in markup
+				this.$element.find( 'input' ).each( function() {
+					$( this ).attr( 'value', $( this ).val() );
+				} );
+
+				// empty elements to return to original markup
+				// [none]
+
+				return this.$element[ 0 ].outerHTML;
+			},
+
+			doSelect: function( $item ) {
+				if ( typeof $item[ 0 ] !== 'undefined' ) {
+					this.$selectedItem = $item;
+					this.$input.val( this.$selectedItem.text() );
+				} else {
+					this.$selectedItem = null;
+				}
+			},
+
+			menuShown: function() {
+				if ( this.options.autoResizeMenu ) {
+					this.resizeMenu();
+				}
+			},
+
+			resizeMenu: function() {
+				var width = this.$element.outerWidth();
+				this.$dropMenu.outerWidth( width );
+			},
+
+			selectedItem: function() {
+				var item = this.$selectedItem;
+				var data = {};
+
+				if ( item ) {
+					var txt = this.$selectedItem.text();
+					data = $.extend( {
+						text: txt
+					}, this.$selectedItem.data() );
+				} else {
+					data = {
+						text: this.$input.val()
+					};
+				}
+
+				return data;
+			},
+
+			selectByText: function( text ) {
+				var $item = $( [] );
+				this.$element.find( 'li' ).each( function() {
+					if ( ( this.textContent || this.innerText || $( this ).text() || '' ).toLowerCase() === ( text || '' ).toLowerCase() ) {
+						$item = $( this );
+						return false;
+					}
+				} );
+				this.doSelect( $item );
+			},
+
+			selectByValue: function( value ) {
+				var selector = 'li[data-value="' + value + '"]';
+				this.selectBySelector( selector );
+			},
+
+			selectByIndex: function( index ) {
+				// zero-based index
+				var selector = 'li:eq(' + index + ')';
+				this.selectBySelector( selector );
+			},
+
+			selectBySelector: function( selector ) {
+				var $item = this.$element.find( selector );
+				this.doSelect( $item );
+			},
+
+			setDefaultSelection: function() {
+				var selector = 'li[data-selected=true]:first';
+				var item = this.$element.find( selector );
+
+				if ( item.length > 0 ) {
+					// select by data-attribute
+					this.selectBySelector( selector );
+					item.removeData( 'selected' );
+					item.removeAttr( 'data-selected' );
+				}
+			},
+
+			enable: function() {
+				this.$element.removeClass( 'disabled' );
+				this.$input.removeAttr( 'disabled' );
+				this.$button.removeClass( 'disabled' );
+			},
+
+			disable: function() {
+				this.$element.addClass( 'disabled' );
+				this.$input.attr( 'disabled', true );
+				this.$button.addClass( 'disabled' );
+			},
+
+			itemclicked: function( e ) {
+				this.$selectedItem = $( e.target ).parent();
+
+				// set input text and trigger input change event marked as synthetic
+				this.$input.val( this.$selectedItem.text() ).trigger( 'change', {
+					synthetic: true
+				} );
+
+				// pass object including text and any data-attributes
+				// to onchange event
+				var data = this.selectedItem();
+
+				// trigger changed event
+				this.$element.trigger( 'changed.fu.combobox', data );
+
+				e.preventDefault();
+
+				// return focus to control after selecting an option
+				this.$element.find( '.dropdown-toggle' ).focus();
+			},
+
+			inputchanged: function( e, extra ) {
+
+				// skip processing for internally-generated synthetic event
+				// to avoid double processing
+				if ( extra && extra.synthetic ) return;
+
+				var val = $( e.target ).val();
+				this.selectByText( val );
+
+				// find match based on input
+				// if no match, pass the input value
+				var data = this.selectedItem();
+				if ( data.text.length === 0 ) {
+					data = {
+						text: val
+					};
+				}
+
+				// trigger changed event
+				this.$element.trigger( 'changed.fu.combobox', data );
+
+			}
+
+		};
+
+
+		// COMBOBOX PLUGIN DEFINITION
+
+		$.fn.combobox = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.combobox' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.combobox', ( data = new Combobox( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.combobox.defaults = {
+			autoResizeMenu: true
+		};
+
+		$.fn.combobox.Constructor = Combobox;
+
+		$.fn.combobox.noConflict = function() {
+			$.fn.combobox = old;
+			return this;
+		};
+
+		// DATA-API
+
+		$( document ).on( 'mousedown.fu.combobox.data-api', '[data-initialize=combobox]', function( e ) {
+			var $control = $( e.target ).closest( '.combobox' );
+			if ( !$control.data( 'fu.combobox' ) ) {
+				$control.combobox( $control.data() );
+			}
+		} );
+
+		// Must be domReady for AMD compatibility
+		$( function() {
+			$( '[data-initialize=combobox]' ).each( function() {
+				var $this = $( this );
+				if ( !$this.data( 'fu.combobox' ) ) {
+					$this.combobox( $this.data() );
+				}
+			} );
+		} );
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Datepicker
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var INVALID_DATE = 'Invalid Date';
+		var MOMENT_NOT_AVAILABLE = 'moment.js is not available so you cannot use this function';
+
+		var datepickerStack = [];
+		var moment = false;
+		var old = $.fn.datepicker;
+		var requestedMoment = false;
+
+		var runStack = function() {
+			var i, l;
+			requestedMoment = true;
+			for ( i = 0, l = datepickerStack.length; i < l; i++ ) {
+				datepickerStack[ i ].init.call( datepickerStack[ i ].scope );
+			}
+			datepickerStack = [];
+		};
+
+		//only load moment if it's there. otherwise we'll look for it in window.moment
+		if ( typeof define === 'function' && define.amd ) { //check if AMD is available
+			require( [ 'moment' ], function( amdMoment ) {
+				moment = amdMoment;
+				runStack();
+			}, function( err ) {
+				var failedId = err.requireModules && err.requireModules[ 0 ];
+				if ( failedId === 'moment' ) {
+					runStack();
+				}
+			} );
+		} else {
+			runStack();
+		}
+
+		// DATEPICKER CONSTRUCTOR AND PROTOTYPE
+
+		var Datepicker = function( element, options ) {
+			this.$element = $( element );
+			this.options = $.extend( true, {}, $.fn.datepicker.defaults, options );
+
+			this.$calendar = this.$element.find( '.datepicker-calendar' );
+			this.$days = this.$calendar.find( '.datepicker-calendar-days' );
+			this.$header = this.$calendar.find( '.datepicker-calendar-header' );
+			this.$headerTitle = this.$header.find( '.title' );
+			this.$input = this.$element.find( 'input' );
+			this.$wheels = this.$element.find( '.datepicker-wheels' );
+			this.$wheelsMonth = this.$element.find( '.datepicker-wheels-month' );
+			this.$wheelsYear = this.$element.find( '.datepicker-wheels-year' );
+
+			this.artificialScrolling = false;
+			this.formatDate = this.options.formatDate || this.formatDate;
+			this.inputValue = null;
+			this.moment = false;
+			this.momentFormat = null;
+			this.parseDate = this.options.parseDate || this.parseDate;
+			this.preventBlurHide = false;
+			this.restricted = this.options.restricted || [];
+			this.restrictedParsed = [];
+			this.restrictedText = this.options.restrictedText;
+			this.sameYearOnly = this.options.sameYearOnly;
+			this.selectedDate = null;
+			this.yearRestriction = null;
+
+			this.$calendar.find( '.datepicker-today' ).on( 'click.fu.datepicker', $.proxy( this.todayClicked, this ) );
+			this.$days.on( 'click.fu.datepicker', 'tr td button', $.proxy( this.dateClicked, this ) );
+			this.$element.find( '.dropdown-menu' ).on( 'mousedown.fu.datepicker', $.proxy( this.dropdownMousedown, this ) );
+			this.$header.find( '.next' ).on( 'click.fu.datepicker', $.proxy( this.next, this ) );
+			this.$header.find( '.prev' ).on( 'click.fu.datepicker', $.proxy( this.prev, this ) );
+			this.$headerTitle.on( 'click.fu.datepicker', $.proxy( this.titleClicked, this ) );
+			this.$input.on( 'blur.fu.datepicker', $.proxy( this.inputBlurred, this ) );
+			this.$input.on( 'focus.fu.datepicker', $.proxy( this.inputFocused, this ) );
+			this.$wheels.find( '.datepicker-wheels-back' ).on( 'click.fu.datepicker', $.proxy( this.backClicked, this ) );
+			this.$wheels.find( '.datepicker-wheels-select' ).on( 'click.fu.datepicker', $.proxy( this.selectClicked, this ) );
+			this.$wheelsMonth.on( 'click.fu.datepicker', 'ul button', $.proxy( this.monthClicked, this ) );
+			this.$wheelsYear.on( 'click.fu.datepicker', 'ul button', $.proxy( this.yearClicked, this ) );
+			this.$wheelsYear.find( 'ul' ).on( 'scroll.fu.datepicker', $.proxy( this.onYearScroll, this ) );
+
+			var init = function() {
+				if ( this.checkForMomentJS() ) {
+					moment = moment || window.moment; // need to pull in the global moment if they didn't do it via require
+					this.moment = true;
+					this.momentFormat = this.options.momentConfig.format;
+					this.setCulture( this.options.momentConfig.culture );
+				}
+
+				this.setRestrictedDates( this.restricted );
+				if ( !this.setDate( this.options.date ) ) {
+					this.$input.val( '' );
+					this.inputValue = this.$input.val();
+				}
+				if ( this.sameYearOnly ) {
+					this.yearRestriction = ( this.selectedDate ) ? this.selectedDate.getFullYear() : new Date().getFullYear();
+				}
+			};
+
+			if ( requestedMoment ) {
+				init.call( this );
+			} else {
+				datepickerStack.push( {
+					init: init,
+					scope: this
+				} );
+			}
+		};
+
+		Datepicker.prototype = {
+
+			constructor: Datepicker,
+
+			backClicked: function() {
+				this.changeView( 'calendar' );
+			},
+
+			changeView: function( view, date ) {
+				if ( view === 'wheels' ) {
+					this.$calendar.hide().attr( 'aria-hidden', 'true' );
+					this.$wheels.show().removeAttr( 'aria-hidden', '' );
+					if ( date ) {
+						this.renderWheel( date );
+					}
+				} else {
+					this.$wheels.hide().attr( 'aria-hidden', 'true' );
+					this.$calendar.show().removeAttr( 'aria-hidden', '' );
+					if ( date ) {
+						this.renderMonth( date );
+					}
+				}
+			},
+
+			checkForMomentJS: function() {
+				if (
+					( $.isFunction( window.moment ) || ( typeof moment !== 'undefined' && $.isFunction( moment ) ) ) &&
+					$.isPlainObject( this.options.momentConfig ) &&
+					this.options.momentConfig.culture && this.options.momentConfig.format
+				) {
+					return true;
+				} else {
+					return false;
+				}
+			},
+
+			dateClicked: function( e ) {
+				var $td = $( e.currentTarget ).parents( 'td:first' );
+				var date;
+
+				if ( $td.hasClass( 'restricted' ) ) {
+					return;
+				}
+
+				this.$days.find( 'td.selected' ).removeClass( 'selected' );
+				$td.addClass( 'selected' );
+
+				date = new Date( $td.attr( 'data-year' ), $td.attr( 'data-month' ), $td.attr( 'data-date' ) );
+				this.selectedDate = date;
+				this.$input.val( this.formatDate( date ) );
+				this.inputValue = this.$input.val();
+				this.$input.focus();
+			},
+
+			destroy: function() {
+				this.$element.remove();
+				// any external bindings
+				// [none]
+
+				// empty elements to return to original markup
+				this.$days.find( 'tbody' ).empty();
+				this.$wheelsYear.find( 'ul' ).empty();
+
+				return this.$element[ 0 ].outerHTML;
+			},
+
+			disable: function() {
+				this.$element.addClass( 'disabled' );
+				this.$element.find( 'input, button' ).attr( 'disabled', 'disabled' );
+				this.$element.find( '.input-group-btn' ).removeClass( 'open' );
+			},
+
+			dropdownMousedown: function() {
+				var self = this;
+				this.preventBlurHide = true;
+				setTimeout( function() {
+					self.preventBlurHide = false;
+				}, 0 );
+			},
+
+			enable: function() {
+				this.$element.removeClass( 'disabled' );
+				this.$element.find( 'input, button' ).removeAttr( 'disabled' );
+			},
+
+			formatDate: function( date ) {
+				var padTwo = function( value ) {
+					var s = '0' + value;
+					return s.substr( s.length - 2 );
+				};
+
+				if ( this.moment ) {
+					return moment( date ).format( this.momentFormat );
+				} else {
+					return padTwo( date.getMonth() + 1 ) + '/' + padTwo( date.getDate() ) + '/' + date.getFullYear();
+				}
+			},
+
+			getCulture: function() {
+				if ( this.moment ) {
+					return moment.lang();
+				} else {
+					throw MOMENT_NOT_AVAILABLE;
+				}
+			},
+
+			getDate: function() {
+				return ( !this.selectedDate ) ? new Date( NaN ) : this.selectedDate;
+			},
+
+			getFormat: function() {
+				if ( this.moment ) {
+					return this.momentFormat;
+				} else {
+					throw MOMENT_NOT_AVAILABLE;
+				}
+			},
+
+			getFormattedDate: function() {
+				return ( !this.selectedDate ) ? INVALID_DATE : this.formatDate( this.selectedDate );
+			},
+
+			getRestrictedDates: function() {
+				return this.restricted;
+			},
+
+			inputBlurred: function( e ) {
+				var inputVal = this.$input.val();
+				var date;
+				if ( inputVal !== this.inputValue ) {
+					date = this.setDate( inputVal );
+					if ( date === null ) {
+						this.$element.trigger( 'inputParsingFailed.fu.datepicker', inputVal );
+					} else if ( date === false ) {
+						this.$element.trigger( 'inputRestrictedDate.fu.datepicker', date );
+					} else {
+						this.$element.trigger( 'changed.fu.datepicker', date );
+					}
+				}
+				if ( !this.preventBlurHide ) {
+					this.$element.find( '.input-group-btn' ).removeClass( 'open' );
+				}
+			},
+
+			inputFocused: function( e ) {
+				this.$element.find( '.input-group-btn' ).addClass( 'open' );
+			},
+
+			isInvalidDate: function( date ) {
+				var dateString = date.toString();
+				if ( dateString === INVALID_DATE || dateString === 'NaN' ) {
+					return true;
+				}
+				return false;
+			},
+
+			isRestricted: function( date, month, year ) {
+				var restricted = this.restrictedParsed;
+				var i, from, l, to;
+
+				if ( this.sameYearOnly && this.yearRestriction !== null && year !== this.yearRestriction ) {
+					return true;
+				}
+				for ( i = 0, l = restricted.length; i < l; i++ ) {
+					from = restricted[ i ].from;
+					to = restricted[ i ].to;
+					if (
+						( year > from.year || ( year === from.year && month > from.month ) || ( year === from.year && month === from.month && date >= from.date ) ) &&
+						( year < to.year || ( year === to.year && month < to.month ) || ( year === to.year && month === to.month && date <= to.date ) )
+					) {
+						return true;
+					}
+				}
+
+				return false;
+			},
+
+			monthClicked: function( e ) {
+				this.$wheelsMonth.find( '.selected' ).removeClass( 'selected' );
+				$( e.currentTarget ).parent().addClass( 'selected' );
+			},
+
+			next: function() {
+				var month = this.$headerTitle.attr( 'data-month' );
+				var year = this.$headerTitle.attr( 'data-year' );
+				month++;
+				if ( month > 11 ) {
+					if ( this.sameYearOnly ) {
+						return;
+					}
+					month = 0;
+					year++;
+				}
+				this.renderMonth( new Date( year, month, 1 ) );
+			},
+
+			onYearScroll: function( e ) {
+				if ( this.artificialScrolling ) {
+					return;
+				}
+
+				var $yearUl = $( e.currentTarget );
+				var height = ( $yearUl.css( 'box-sizing' ) === 'border-box' ) ? $yearUl.outerHeight() : $yearUl.height();
+				var scrollHeight = $yearUl.get( 0 ).scrollHeight;
+				var scrollTop = $yearUl.scrollTop();
+				var bottomPercentage = ( height / ( scrollHeight - scrollTop ) ) * 100;
+				var topPercentage = ( scrollTop / scrollHeight ) * 100;
+				var i, start;
+
+				if ( topPercentage < 5 ) {
+					start = parseInt( $yearUl.find( 'li:first' ).attr( 'data-year' ), 10 );
+					for ( i = ( start - 1 ); i > ( start - 11 ); i-- ) {
+						$yearUl.prepend( '<li data-year="' + i + '"><button type="button">' + i + '</button></li>' );
+					}
+					this.artificialScrolling = true;
+					$yearUl.scrollTop( ( $yearUl.get( 0 ).scrollHeight - scrollHeight ) + scrollTop );
+					this.artificialScrolling = false;
+				} else if ( bottomPercentage > 90 ) {
+					start = parseInt( $yearUl.find( 'li:last' ).attr( 'data-year' ), 10 );
+					for ( i = ( start + 1 ); i < ( start + 11 ); i++ ) {
+						$yearUl.append( '<li data-year="' + i + '"><button type="button">' + i + '</button></li>' );
+					}
+				}
+			},
+
+			//some code ripped from http://stackoverflow.com/questions/2182246/javascript-dates-in-ie-nan-firefox-chrome-ok
+			parseDate: function( date ) {
+				var self = this;
+				var dt, isoExp, momentParse, month, parts, use;
+
+				if ( date ) {
+					if ( this.moment ) { //if we have moment, use that to parse the dates
+						momentParse = function( type, d ) {
+							d = ( type === 'b' ) ? moment( d, self.momentFormat ) : moment( d );
+							return ( d.isValid() === true ) ? d.toDate() : new Date( NaN );
+						};
+						use = ( typeof( date ) === 'string' ) ? [ 'b', 'a' ] : [ 'a', 'b' ];
+						dt = momentParse( use[ 0 ], date );
+						if ( !this.isInvalidDate( dt ) ) {
+							return dt;
+						} else {
+							dt = momentParse( use[ 1 ], date );
+							if ( !this.isInvalidDate( dt ) ) {
+								return dt;
+							}
+						}
+					} else { //if moment isn't present, use previous date parsing strategy
+						if ( typeof( date ) === 'string' ) {
+							dt = new Date( Date.parse( date ) );
+							if ( !this.isInvalidDate( dt ) ) {
+								return dt;
+							} else {
+								date = date.split( 'T' )[ 0 ];
+								isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/;
+								parts = isoExp.exec( date );
+								if ( parts ) {
+									month = parseInt( parts[ 2 ], 10 );
+									dt = new Date( parts[ 1 ], month - 1, parts[ 3 ] );
+									if ( month === ( dt.getMonth() + 1 ) ) {
+										return dt;
+									}
+								}
+							}
+						} else {
+							dt = new Date( date );
+							if ( !this.isInvalidDate( dt ) ) {
+								return dt;
+							}
+						}
+					}
+				}
+				return new Date( NaN );
+			},
+
+			prev: function() {
+				var month = this.$headerTitle.attr( 'data-month' );
+				var year = this.$headerTitle.attr( 'data-year' );
+				month--;
+				if ( month < 0 ) {
+					if ( this.sameYearOnly ) {
+						return;
+					}
+					month = 11;
+					year--;
+				}
+				this.renderMonth( new Date( year, month, 1 ) );
+			},
+
+			renderMonth: function( date ) {
+				date = date || new Date();
+
+				var firstDay = new Date( date.getFullYear(), date.getMonth(), 1 ).getDay();
+				var lastDate = new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate();
+				var lastMonthDate = new Date( date.getFullYear(), date.getMonth(), 0 ).getDate();
+				var $month = this.$headerTitle.find( '.month' );
+				var month = date.getMonth();
+				var now = new Date();
+				var nowDate = now.getDate();
+				var nowMonth = now.getMonth();
+				var nowYear = now.getFullYear();
+				var selected = this.selectedDate;
+				var $tbody = this.$days.find( 'tbody' );
+				var year = date.getFullYear();
+				var curDate, curMonth, curYear, i, j, rows, stage, $td, $tr;
+
+				if ( selected ) {
+					selected = {
+						date: selected.getDate(),
+						month: selected.getMonth(),
+						year: selected.getFullYear()
+					};
+				}
+
+				$month.find( '.current' ).removeClass( 'current' );
+				$month.find( 'span[data-month="' + month + '"]' ).addClass( 'current' );
+				this.$headerTitle.find( '.year' ).text( year );
+				this.$headerTitle.attr( {
+					'data-month': month,
+					'data-year': year
+				} );
+
+				$tbody.empty();
+				if ( firstDay !== 0 ) {
+					curDate = lastMonthDate - firstDay + 1;
+					stage = -1;
+				} else {
+					curDate = 1;
+					stage = 0;
+				}
+				rows = ( lastDate <= ( 35 - firstDay ) ) ? 5 : 6;
+				for ( i = 0; i < rows; i++ ) {
+					$tr = $( '<tr></tr>' );
+					for ( j = 0; j < 7; j++ ) {
+						$td = $( '<td><span><button type="button" class="datepicker-date">' + curDate + '</button></span></td>' );
+						if ( stage === -1 ) {
+							$td.addClass( 'last-month' );
+						} else if ( stage === 1 ) {
+							$td.addClass( 'next-month' );
+						}
+
+						curMonth = month + stage;
+						curYear = year;
+						if ( curMonth < 0 ) {
+							curMonth = 11;
+							curYear--;
+						} else if ( curMonth > 11 ) {
+							curMonth = 0;
+							curYear++;
+						}
+
+						$td.attr( {
+							'data-date': curDate,
+							'data-month': curMonth,
+							'data-year': curYear
+						} );
+						if ( curYear === nowYear && curMonth === nowMonth && curDate === nowDate ) {
+							$td.addClass( 'current-day' );
+						} else if ( curYear < nowYear || ( curYear === nowYear && curMonth < nowMonth ) ||
+							( curYear === nowYear && curMonth === nowMonth && curDate < nowDate ) ) {
+							$td.addClass( 'past' );
+							if ( !this.options.allowPastDates ) {
+								$td.addClass( 'restricted' ).attr( 'title', this.restrictedText );
+							}
+						}
+						if ( this.isRestricted( curDate, curMonth, curYear ) ) {
+							$td.addClass( 'restricted' ).attr( 'title', this.restrictedText );
+						}
+						if ( selected && curYear === selected.year && curMonth === selected.month && curDate === selected.date ) {
+							$td.addClass( 'selected' );
+						}
+
+						curDate++;
+						if ( stage === -1 && curDate > lastMonthDate ) {
+							curDate = 1;
+							stage = 0;
+						} else if ( stage === 0 && curDate > lastDate ) {
+							curDate = 1;
+							stage = 1;
+						}
+
+						$tr.append( $td );
+					}
+					$tbody.append( $tr );
+				}
+			},
+
+			renderWheel: function( date ) {
+				var month = date.getMonth();
+				var $monthUl = this.$wheelsMonth.find( 'ul' );
+				var year = date.getFullYear();
+				var $yearUl = this.$wheelsYear.find( 'ul' );
+				var i, $monthSelected, $yearSelected;
+
+				if ( this.sameYearOnly ) {
+					this.$wheelsMonth.addClass( 'full' );
+					this.$wheelsYear.addClass( 'hide' );
+				} else {
+					this.$wheelsMonth.removeClass( 'full' );
+					this.$wheelsYear.removeClass( 'hide' );
+				}
+
+				$monthUl.find( '.selected' ).removeClass( 'selected' );
+				$monthSelected = $monthUl.find( 'li[data-month="' + month + '"]' );
+				$monthSelected.addClass( 'selected' );
+				$monthUl.scrollTop( $monthUl.scrollTop() + ( $monthSelected.position().top - $monthUl.outerHeight() / 2 - $monthSelected.outerHeight( true ) / 2 ) );
+
+				$yearUl.empty();
+				for ( i = ( year - 10 ); i < ( year + 11 ); i++ ) {
+					$yearUl.append( '<li data-year="' + i + '"><button type="button">' + i + '</button></li>' );
+				}
+				$yearSelected = $yearUl.find( 'li[data-year="' + year + '"]' );
+				$yearSelected.addClass( 'selected' );
+				this.artificialScrolling = true;
+				$yearUl.scrollTop( $yearUl.scrollTop() + ( $yearSelected.position().top - $yearUl.outerHeight() / 2 - $yearSelected.outerHeight( true ) / 2 ) );
+				this.artificialScrolling = false;
+				$monthSelected.find( 'button' ).focus();
+			},
+
+			selectClicked: function() {
+				var month = this.$wheelsMonth.find( '.selected' ).attr( 'data-month' );
+				var year = this.$wheelsYear.find( '.selected' ).attr( 'data-year' );
+				this.changeView( 'calendar', new Date( year, month, 1 ) );
+			},
+
+			setCulture: function( cultureCode ) {
+				if ( !cultureCode ) {
+					return false;
+				}
+				if ( this.moment ) {
+					moment.lang( cultureCode );
+				} else {
+					throw MOMENT_NOT_AVAILABLE;
+				}
+			},
+
+			setDate: function( date ) {
+				var parsed = this.parseDate( date );
+				if ( !this.isInvalidDate( parsed ) ) {
+					if ( !this.isRestricted( parsed.getDate(), parsed.getMonth(), parsed.getFullYear() ) ) {
+						this.selectedDate = parsed;
+						this.renderMonth( parsed );
+						this.$input.val( this.formatDate( parsed ) );
+					} else {
+						this.selectedDate = false;
+						this.renderMonth();
+					}
+				} else {
+					this.selectedDate = null;
+					this.renderMonth();
+				}
+				this.inputValue = this.$input.val();
+				return this.selectedDate;
+			},
+
+			setFormat: function( format ) {
+				if ( !format ) {
+					return false;
+				}
+				if ( this.moment ) {
+					this.momentFormat = format;
+				} else {
+					throw MOMENT_NOT_AVAILABLE;
+				}
+			},
+
+			setRestrictedDates: function( restricted ) {
+				var parsed = [];
+				var self = this;
+				var i, l;
+
+				var parseItem = function( val ) {
+					if ( val === -Infinity ) {
+						return {
+							date: -Infinity,
+							month: -Infinity,
+							year: -Infinity
+						};
+					} else if ( val === Infinity ) {
+						return {
+							date: Infinity,
+							month: Infinity,
+							year: Infinity
+						};
+					} else {
+						val = self.parseDate( val );
+						return {
+							date: val.getDate(),
+							month: val.getMonth(),
+							year: val.getFullYear()
+						};
+					}
+				};
+
+				this.restricted = restricted;
+				for ( i = 0, l = restricted.length; i < l; i++ ) {
+					parsed.push( {
+						from: parseItem( restricted[ i ].from ),
+						to: parseItem( restricted[ i ].to )
+					} );
+				}
+				this.restrictedParsed = parsed;
+			},
+
+			titleClicked: function( e ) {
+				this.changeView( 'wheels', new Date( this.$headerTitle.attr( 'data-year' ), this.$headerTitle.attr( 'data-month' ), 1 ) );
+			},
+
+			todayClicked: function( e ) {
+				var date = new Date();
+
+				if ( ( date.getMonth() + '' ) !== this.$headerTitle.attr( 'data-month' ) || ( date.getFullYear() + '' ) !== this.$headerTitle.attr( 'data-year' ) ) {
+					this.renderMonth( date );
+				}
+			},
+
+			yearClicked: function( e ) {
+				this.$wheelsYear.find( '.selected' ).removeClass( 'selected' );
+				$( e.currentTarget ).parent().addClass( 'selected' );
+			}
+		};
+
+
+		// DATEPICKER PLUGIN DEFINITION
+
+		$.fn.datepicker = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.datepicker' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.datepicker', ( data = new Datepicker( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.datepicker.defaults = {
+			allowPastDates: false,
+			date: new Date(),
+			formatDate: null,
+			momentConfig: {
+				culture: 'en',
+				format: 'L' // more formats can be found here http://momentjs.com/docs/#/customization/long-date-formats/.
+			},
+			parseDate: null,
+			restricted: [], //accepts an array of objects formatted as so: { from: {{date}}, to: {{date}} }  (ex: [ { from: new Date('12/11/2014'), to: new Date('03/31/2015') } ])
+			restrictedText: 'Restricted',
+			sameYearOnly: false
+		};
+
+		$.fn.datepicker.Constructor = Datepicker;
+
+		$.fn.datepicker.noConflict = function() {
+			$.fn.datepicker = old;
+			return this;
+		};
+
+		// DATA-API
+
+		$( document ).on( 'mousedown.fu.datepicker.data-api', '[data-initialize=datepicker]', function( e ) {
+			var $control = $( e.target ).closest( '.datepicker' );
+			if ( !$control.data( 'datepicker' ) ) {
+				$control.datepicker( $control.data() );
+			}
+		} );
+
+		//used to prevent the dropdown from closing when clicking within it's bounds
+		$( document ).on( 'click.fu.datepicker.data-api', '.datepicker .dropdown-menu', function( e ) {
+			var $target = $( e.target );
+			if ( !$target.is( '.datepicker-date' ) || $target.closest( '.restricted' ).length ) {
+				e.stopPropagation();
+			}
+		} );
+
+		//used to prevent the dropdown from closing when clicking on the input
+		$( document ).on( 'click.fu.datepicker.data-api', '.datepicker input', function( e ) {
+			e.stopPropagation();
+		} );
+
+		$( function() {
+			$( '[data-initialize=datepicker]' ).each( function() {
+				var $this = $( this );
+				if ( $this.data( 'datepicker' ) ) {
+					return;
+				}
+				$this.datepicker( $this.data() );
+			} );
+		} );
+
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Dropdown Auto Flip
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		$( document.body ).on( 'click.fu.dropdown-autoflip', '[data-toggle=dropdown][data-flip]', function( event ) {
+			if ( $( this ).data().flip === "auto" ) {
+				// have the drop down decide where to place itself
+				_autoFlip( $( this ).next( '.dropdown-menu' ) );
+			}
+		} );
+
+		// For pillbox suggestions dropdown 
+		$( document.body ).on( 'suggested.fu.pillbox', function( event, element ) {
+			_autoFlip( $( element ) );
+			$( element ).parent().addClass( 'open' );
+		} );
+
+		function _autoFlip( menu ) {
+			// hide while the browser thinks
+			$( menu ).css( {
+				visibility: "hidden"
+			} );
+
+			// decide where to put menu
+			if ( dropUpCheck( menu ) ) {
+				menu.parent().addClass( "dropup" );
+			} else {
+				menu.parent().removeClass( "dropup" );
+			}
+
+			// show again
+			$( menu ).css( {
+				visibility: "visible"
+			} );
+		}
+
+		function dropUpCheck( element ) {
+			// caching container
+			var $container = _getContainer( element );
+
+			// building object with measurementsances for later use
+			var measurements = {};
+			measurements.parentHeight = element.parent().outerHeight();
+			measurements.parentOffsetTop = element.parent().offset().top;
+			measurements.dropdownHeight = element.outerHeight();
+			measurements.containerHeight = $container.overflowElement.outerHeight();
+
+			// this needs to be different if the window is the container or another element is
+			measurements.containerOffsetTop = ( !!$container.isWindow ) ? $container.overflowElement.scrollTop() : $container.overflowElement.offset().top;
+
+			// doing the calculations
+			measurements.fromTop = measurements.parentOffsetTop - measurements.containerOffsetTop;
+			measurements.fromBottom = measurements.containerHeight - measurements.parentHeight - ( measurements.parentOffsetTop - measurements.containerOffsetTop );
+
+			// actual determination of where to put menu
+			// false = drop down
+			// true = drop up
+			if ( measurements.dropdownHeight < measurements.fromBottom ) {
+				return false;
+			} else if ( measurements.dropdownHeight < measurements.fromTop ) {
+				return true;
+			} else if ( measurements.dropdownHeight >= measurements.fromTop && measurements.dropdownHeight >= measurements.fromBottom ) {
+				// decide which one is bigger and put it there
+				if ( measurements.fromTop >= measurements.fromBottom ) {
+					return true;
+				} else {
+					return false;
+				}
+			}
+		}
+
+		function _getContainer( element ) {
+			var containerElement = window;
+			var isWindow = true;
+
+			$.each( element.parents(), function( index, value ) {
+				if ( $( value ).css( 'overflow' ) !== 'visible' ) {
+					containerElement = value;
+					isWindow = false;
+					return false;
+				}
+			} );
+
+			return {
+				overflowElement: $( containerElement ),
+				isWindow: isWindow
+			};
+		}
+
+		// register empty plugin
+		$.fn.dropdownautoflip = function() { /* empty */ };
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Loader
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.loader;
+
+		// LOADER CONSTRUCTOR AND PROTOTYPE
+
+		var Loader = function( element, options ) {
+			this.$element = $( element );
+			this.options = $.extend( {}, $.fn.loader.defaults, options );
+
+			this.begin = ( this.$element.is( '[data-begin]' ) ) ? parseInt( this.$element.attr( 'data-begin' ), 10 ) : 1;
+			this.delay = ( this.$element.is( '[data-delay]' ) ) ? parseFloat( this.$element.attr( 'data-delay' ) ) : 150;
+			this.end = ( this.$element.is( '[data-end]' ) ) ? parseInt( this.$element.attr( 'data-end' ), 10 ) : 8;
+			this.frame = ( this.$element.is( '[data-frame]' ) ) ? parseInt( this.$element.attr( 'data-frame' ), 10 ) : this.begin;
+			this.isIElt9 = false;
+			this.timeout = {};
+
+			var ieVer = this.msieVersion();
+			if ( ieVer !== false && ieVer < 9 ) {
+				this.$element.addClass( 'iefix' );
+				this.isIElt9 = true;
+			}
+
+			this.$element.attr( 'data-frame', this.frame + '' );
+			this.play();
+		};
+
+		Loader.prototype = {
+
+			constructor: Loader,
+
+			destroy: function() {
+				this.$element.remove();
+				// any external bindings
+				// [none]
+				// empty elements to return to original markup
+				// [none]
+				// returns string of markup
+				return this.$element[ 0 ].outerHTML;
+			},
+
+			ieRepaint: function() {
+				if ( this.isIElt9 ) {
+					this.$element.addClass( 'iefix_repaint' ).removeClass( 'iefix_repaint' );
+				}
+			},
+
+			msieVersion: function() {
+				var ua = window.navigator.userAgent;
+				var msie = ua.indexOf( 'MSIE ' );
+				if ( msie > 0 ) {
+					return parseInt( ua.substring( msie + 5, ua.indexOf( ".", msie ) ), 10 );
+				} else {
+					return false;
+				}
+			},
+
+			next: function() {
+				this.frame++;
+				if ( this.frame > this.end ) {
+					this.frame = this.begin;
+				}
+				this.$element.attr( 'data-frame', this.frame + '' );
+				this.ieRepaint();
+			},
+
+			pause: function() {
+				clearTimeout( this.timeout );
+			},
+
+			play: function() {
+				var self = this;
+				clearTimeout( this.timeout );
+				this.timeout = setTimeout( function() {
+					self.next();
+					self.play();
+				}, this.delay );
+			},
+
+			previous: function() {
+				this.frame--;
+				if ( this.frame < this.begin ) {
+					this.frame = this.end;
+				}
+				this.$element.attr( 'data-frame', this.frame + '' );
+				this.ieRepaint();
+			},
+
+			reset: function() {
+				this.frame = this.begin;
+				this.$element.attr( 'data-frame', this.frame + '' );
+				this.ieRepaint();
+			}
+
+		};
+
+		// LOADER PLUGIN DEFINITION
+
+		$.fn.loader = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.loader' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.loader', ( data = new Loader( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.loader.defaults = {};
+
+		$.fn.loader.Constructor = Loader;
+
+		$.fn.loader.noConflict = function() {
+			$.fn.loader = old;
+			return this;
+		};
+
+		// INIT LOADER ON DOMCONTENTLOADED
+
+		$( function() {
+			$( '[data-initialize=loader]' ).each( function() {
+				var $this = $( this );
+				if ( !$this.data( 'fu.loader' ) ) {
+					$this.loader( $this.data() );
+				}
+			} );
+		} );
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Placard
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.placard;
+
+		// PLACARD CONSTRUCTOR AND PROTOTYPE
+
+		var Placard = function( element, options ) {
+			var self = this;
+			this.$element = $( element );
+			this.options = $.extend( {}, $.fn.placard.defaults, options );
+
+			this.$accept = this.$element.find( '.placard-accept' );
+			this.$cancel = this.$element.find( '.placard-cancel' );
+			this.$field = this.$element.find( '.placard-field' );
+			this.$footer = this.$element.find( '.placard-footer' );
+			this.$header = this.$element.find( '.placard-header' );
+			this.$popup = this.$element.find( '.placard-popup' );
+
+			this.actualValue = null;
+			this.clickStamp = '_';
+			this.previousValue = '';
+			if ( this.options.revertOnCancel === -1 ) {
+				this.options.revertOnCancel = ( this.$accept.length > 0 ) ? true : false;
+			}
+
+			this.$field.on( 'focus.fu.placard', $.proxy( this.show, this ) );
+			this.$accept.on( 'click.fu.placard', $.proxy( this.complete, this, 'accept' ) );
+			this.$cancel.on( 'click.fu.placard', function( e ) {
+				e.preventDefault();
+				self.complete( 'cancel' );
+			} );
+
+			this.ellipsis();
+		};
+
+		Placard.prototype = {
+			constructor: Placard,
+
+			complete: function( action ) {
+				var func = this.options[ 'on' + action[ 0 ].toUpperCase() + action.substring( 1 ) ];
+				var obj = {
+					previousValue: this.previousValue,
+					value: this.$field.val()
+				};
+				if ( func ) {
+					func( obj );
+					this.$element.trigger( action, obj );
+				} else {
+					if ( action === 'cancel' && this.options.revertOnCancel ) {
+						this.$field.val( this.previousValue );
+					}
+					this.$element.trigger( action, obj );
+					this.hide();
+				}
+			},
+
+			destroy: function() {
+				this.$element.remove();
+				// remove any external bindings
+				$( document ).off( 'click.fu.placard.externalClick.' + this.clickStamp );
+				// set input value attrbute
+				this.$element.find( 'input' ).each( function() {
+					$( this ).attr( 'value', $( this ).val() );
+				} );
+				// empty elements to return to original markup
+				// [none]
+				// return string of markup
+				return this.$element[ 0 ].outerHTML;
+			},
+
+			disable: function() {
+				this.$element.addClass( 'disabled' );
+				this.$field.attr( 'disabled', 'disabled' );
+				this.hide();
+			},
+
+			ellipsis: function() {
+				var field, i, str;
+				if ( this.$element.attr( 'data-ellipsis' ) === 'true' ) {
+					field = this.$field.get( 0 );
+					if ( this.$field.is( 'input' ) ) {
+						field.scrollLeft = 0;
+					} else {
+						field.scrollTop = 0;
+						if ( field.clientHeight < field.scrollHeight ) {
+							this.actualValue = this.$field.val();
+							this.$field.val( '' );
+							str = '';
+							i = 0;
+							while ( field.clientHeight >= field.scrollHeight ) {
+								str += this.actualValue[ i ];
+								this.$field.val( str + '...' );
+								i++;
+							}
+							str = ( str.length > 0 ) ? str.substring( 0, str.length - 1 ) : '';
+							this.$field.val( str + '...' );
+						}
+					}
+				}
+			},
+
+			enable: function() {
+				this.$element.removeClass( 'disabled' );
+				this.$field.removeAttr( 'disabled' );
+			},
+
+			externalClickListener: function( e, force ) {
+				if ( force === true || this.isExternalClick( e ) ) {
+					this.complete( this.options.externalClickAction );
+				}
+			},
+
+			getValue: function() {
+				if ( this.actualValue !== null ) {
+					return this.actualValue;
+				} else {
+					return this.$field.val();
+				}
+			},
+
+			hide: function() {
+				if ( !this.$element.hasClass( 'showing' ) ) {
+					return;
+				}
+				this.$element.removeClass( 'showing' );
+				this.ellipsis();
+				$( document ).off( 'click.fu.placard.externalClick.' + this.clickStamp );
+				this.$element.trigger( 'hidden.fu.placard' );
+			},
+
+			isExternalClick: function( e ) {
+				var el = this.$element.get( 0 );
+				var exceptions = this.options.externalClickExceptions || [];
+				var $originEl = $( e.target );
+				var i, l;
+
+				if ( e.target === el || $originEl.parents( '.placard:first' ).get( 0 ) === el ) {
+					return false;
+				} else {
+					for ( i = 0, l = exceptions.length; i < l; i++ ) {
+						if ( $originEl.is( exceptions[ i ] ) || $originEl.parents( exceptions[ i ] ).length > 0 ) {
+							return false;
+						}
+					}
+				}
+				return true;
+			},
+
+			setValue: function( val ) {
+				this.$field.val( val );
+				if ( !this.$element.hasClass( 'showing' ) ) {
+					this.ellipsis();
+				}
+			},
+
+			show: function() {
+				var other;
+
+				if ( this.$element.hasClass( 'showing' ) ) {
+					return;
+				}
+				other = $( document ).find( '.placard.showing' );
+				if ( other.length > 0 ) {
+					if ( other.data( 'fu.placard' ) && other.data( 'fu.placard' ).options.explicit ) {
+						return;
+					}
+					other.placard( 'externalClickListener', {}, true );
+				}
+				this.previousValue = this.$field.val();
+
+				this.$element.addClass( 'showing' );
+				if ( this.actualValue !== null ) {
+					this.$field.val( this.actualValue );
+					this.actualValue = null;
+				}
+				if ( this.$header.length > 0 ) {
+					this.$popup.css( 'top', '-' + this.$header.outerHeight( true ) + 'px' );
+				}
+				if ( this.$footer.length > 0 ) {
+					this.$popup.css( 'bottom', '-' + this.$footer.outerHeight( true ) + 'px' );
+				}
+
+				this.$element.trigger( 'shown.fu.placard' );
+				this.clickStamp = new Date().getTime() + ( Math.floor( Math.random() * 100 ) + 1 );
+				if ( !this.options.explicit ) {
+					$( document ).on( 'click.fu.placard.externalClick.' + this.clickStamp, $.proxy( this.externalClickListener, this ) );
+				}
+			}
+		};
+
+		// PLACARD PLUGIN DEFINITION
+
+		$.fn.placard = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.placard' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.placard', ( data = new Placard( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.placard.defaults = {
+			onAccept: undefined,
+			onCancel: undefined,
+			externalClickAction: 'cancel',
+			externalClickExceptions: [],
+			explicit: false,
+			revertOnCancel: -1 //negative 1 will check for an '.placard-accept' button. Also can be set to true or false
+		};
+
+		$.fn.placard.Constructor = Placard;
+
+		$.fn.placard.noConflict = function() {
+			$.fn.placard = old;
+			return this;
+		};
+
+		// DATA-API
+
+		$( document ).on( 'focus.fu.placard.data-api', '[data-initialize=placard]', function( e ) {
+			var $control = $( e.target ).closest( '.placard' );
+			if ( !$control.data( 'fu.placard' ) ) {
+				$control.placard( $control.data() );
+			}
+		} );
+
+		// Must be domReady for AMD compatibility
+		$( function() {
+			$( '[data-initialize=placard]' ).each( function() {
+				var $this = $( this );
+				if ( $this.data( 'fu.placard' ) ) return;
+				$this.placard( $this.data() );
+			} );
+		} );
+
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Radio
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.radio;
+
+		// RADIO CONSTRUCTOR AND PROTOTYPE
+
+		var Radio = function( element, options ) {
+			this.options = $.extend( {}, $.fn.radio.defaults, options );
+
+			// cache elements
+			this.$radio = $( element ).is( 'input[type="radio"]' ) ? $( element ) : $( element ).find( 'input[type="radio"]:first' );
+			this.$label = this.$radio.parent();
+			this.groupName = this.$radio.attr( 'name' );
+			this.$parent = this.$label.parent( '.radio' );
+			this.$toggleContainer = null;
+
+			if ( this.$parent.length === 0 ) {
+				this.$parent = null;
+			}
+
+			var toggleSelector = this.$radio.attr( 'data-toggle' );
+			if ( toggleSelector ) {
+				this.$toggleContainer = $( toggleSelector );
+			}
+
+			// set default state
+			this.setState( this.$radio );
+
+			// handle events
+			this.$radio.on( 'change.fu.radio', $.proxy( this.itemchecked, this ) );
+		};
+
+		Radio.prototype = {
+
+			constructor: Radio,
+
+			destroy: function() {
+				this.$parent.remove();
+				// remove any external bindings
+				// [none]
+				// empty elements to return to original markup
+				// [none]
+				// return string of markup
+				return this.$parent[ 0 ].outerHTML;
+			},
+
+			setState: function( $radio ) {
+				$radio = $radio || this.$radio;
+
+				var checked = $radio.is( ':checked' );
+				var disabled = !!$radio.prop( 'disabled' );
+
+				this.$label.removeClass( 'checked' );
+				if ( this.$parent ) {
+					this.$parent.removeClass( 'checked disabled' );
+				}
+
+				// set state of radio
+				if ( checked === true ) {
+					this.$label.addClass( 'checked' );
+					if ( this.$parent ) {
+						this.$parent.addClass( 'checked' );
+					}
+				}
+				if ( disabled === true ) {
+					this.$label.addClass( 'disabled' );
+					if ( this.$parent ) {
+						this.$parent.addClass( 'disabled' );
+					}
+				}
+
+				//toggle container
+				this.toggleContainer();
+			},
+
+			resetGroup: function() {
+				var group = $( 'input[name="' + this.groupName + '"]' );
+
+				group.each( function() {
+					var lbl = $( this ).parent( 'label' );
+					lbl.removeClass( 'checked' );
+					lbl.parent( '.radio' ).removeClass( 'checked' );
+				} );
+			},
+
+			enable: function() {
+				this.$radio.attr( 'disabled', false );
+				this.$label.removeClass( 'disabled' );
+				if ( this.$parent ) {
+					this.$parent.removeClass( 'disabled' );
+				}
+			},
+
+			disable: function() {
+				this.$radio.attr( 'disabled', true );
+				this.$label.addClass( 'disabled' );
+				if ( this.$parent ) {
+					this.$parent.addClass( 'disabled' );
+				}
+			},
+
+			itemchecked: function( e ) {
+				var radio = $( e.target );
+
+				this.resetGroup();
+				this.setState( radio );
+			},
+
+			check: function() {
+				this.resetGroup();
+				this.$radio.prop( 'checked', true );
+				this.setState( this.$radio );
+			},
+
+			toggleContainer: function() {
+				var group;
+				if ( this.$toggleContainer ) {
+					// show corresponding container for currently selected radio
+					if ( this.isChecked() ) {
+						// hide containers for each item in group
+						group = $( 'input[name="' + this.groupName + '"]' );
+						group.each( function() {
+							var selector = $( this ).attr( 'data-toggle' );
+							$( selector ).addClass( 'hide' );
+							$( selector ).attr( 'aria-hidden', 'true' );
+						} );
+						this.$toggleContainer.removeClass( 'hide' );
+						this.$toggleContainer.attr( 'aria-hidden', 'false' );
+					} else {
+						this.$toggleContainer.addClass( 'hide' );
+						this.$toggleContainer.attr( 'aria-hidden', 'true' );
+					}
+
+				}
+			},
+
+			uncheck: function() {
+				this.$radio.prop( 'checked', false );
+				this.setState( this.$radio );
+			},
+
+			isChecked: function() {
+				return this.$radio.is( ':checked' );
+			}
+		};
+
+
+		// RADIO PLUGIN DEFINITION
+
+		$.fn.radio = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.radio' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.radio', ( data = new Radio( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.radio.defaults = {};
+
+		$.fn.radio.Constructor = Radio;
+
+		$.fn.radio.noConflict = function() {
+			$.fn.radio = old;
+			return this;
+		};
+
+
+		// DATA-API
+
+		$( document ).on( 'mouseover.fu.checkbox.data-api', '[data-initialize=radio]', function( e ) {
+			var $control = $( e.target ).closest( '.radio' ).find( '[type=radio]' );
+			if ( !$control.data( 'fu.radio' ) ) {
+				$control.radio( $control.data() );
+			}
+		} );
+
+		// Must be domReady for AMD compatibility
+		$( function() {
+			$( '[data-initialize=radio] [type=radio]' ).each( function() {
+				var $this = $( this );
+				if ( $this.data( 'fu.radio' ) ) return;
+				$this.radio( $this.data() );
+			} );
+		} );
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Search
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.search;
+
+		// SEARCH CONSTRUCTOR AND PROTOTYPE
+
+		var Search = function( element, options ) {
+			this.$element = $( element );
+			this.options = $.extend( {}, $.fn.search.defaults, options );
+
+			this.$button = this.$element.find( 'button' );
+			this.$input = this.$element.find( 'input' );
+			this.$icon = this.$element.find( '.glyphicon' );
+
+			this.$button.on( 'click.fu.search', $.proxy( this.buttonclicked, this ) );
+			this.$input.on( 'keydown.fu.search', $.proxy( this.keypress, this ) );
+			this.$input.on( 'keyup.fu.search', $.proxy( this.keypressed, this ) );
+
+			this.activeSearch = '';
+		};
+
+		Search.prototype = {
+
+			constructor: Search,
+
+			destroy: function() {
+				this.$element.remove();
+				// any external bindings
+				// [none]
+				// set input value attrbute
+				this.$element.find( 'input' ).each( function() {
+					$( this ).attr( 'value', $( this ).val() );
+				} );
+				// empty elements to return to original markup
+				// [none]
+				// returns string of markup
+				return this.$element[ 0 ].outerHTML;
+			},
+
+			search: function( searchText ) {
+				if ( this.$icon.hasClass( 'glyphicon' ) ) {
+					this.$icon.removeClass( 'glyphicon-search' ).addClass( 'glyphicon-remove' );
+				}
+				this.activeSearch = searchText;
+				this.$element.addClass( 'searched' );
+				this.$element.trigger( 'searched.fu.search', searchText );
+			},
+
+			clear: function() {
+				if ( this.$icon.hasClass( 'glyphicon' ) ) {
+					this.$icon.removeClass( 'glyphicon-remove' ).addClass( 'glyphicon-search' );
+				}
+				this.activeSearch = '';
+				this.$input.val( '' );
+				this.$element.removeClass( 'searched' );
+				this.$element.trigger( 'cleared.fu.search' );
+			},
+
+			action: function() {
+				var val = this.$input.val();
+				var inputEmptyOrUnchanged = val === '' || val === this.activeSearch;
+
+				if ( this.activeSearch && inputEmptyOrUnchanged ) {
+					this.clear();
+				} else if ( val ) {
+					this.search( val );
+				}
+			},
+
+			buttonclicked: function( e ) {
+				e.preventDefault();
+				if ( $( e.currentTarget ).is( '.disabled, :disabled' ) ) return;
+				this.action();
+			},
+
+			keypress: function( e ) {
+				if ( e.which === 13 ) {
+					e.preventDefault();
+				}
+			},
+
+			keypressed: function( e ) {
+				var val, inputPresentAndUnchanged;
+
+				if ( e.which === 13 ) {
+					e.preventDefault();
+					this.action();
+				} else {
+					val = this.$input.val();
+					inputPresentAndUnchanged = val && ( val === this.activeSearch );
+					this.$icon.attr( 'class', inputPresentAndUnchanged ? 'glyphicon glyphicon-remove' : 'glyphicon glyphicon-search' );
+				}
+			},
+
+			disable: function() {
+				this.$element.addClass( 'disabled' );
+				this.$input.attr( 'disabled', 'disabled' );
+				this.$button.addClass( 'disabled' );
+			},
+
+			enable: function() {
+				this.$element.removeClass( 'disabled' );
+				this.$input.removeAttr( 'disabled' );
+				this.$button.removeClass( 'disabled' );
+			}
+
+		};
+
+
+		// SEARCH PLUGIN DEFINITION
+
+		$.fn.search = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.search' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.search', ( data = new Search( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.search.defaults = {};
+
+		$.fn.search.Constructor = Search;
+
+		$.fn.search.noConflict = function() {
+			$.fn.search = old;
+			return this;
+		};
+
+
+		// DATA-API
+
+		$( document ).on( 'mousedown.fu.search.data-api', '[data-initialize=search]', function( e ) {
+			var $control = $( e.target ).closest( '.search' );
+			if ( !$control.data( 'fu.search' ) ) {
+				$control.search( $control.data() );
+			}
+		} );
+
+		// Must be domReady for AMD compatibility
+		$( function() {
+			$( '[data-initialize=search]' ).each( function() {
+				var $this = $( this );
+				if ( $this.data( 'fu.search' ) ) return;
+				$this.search( $this.data() );
+			} );
+		} );
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Button Dropdown
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.selectlist;
+		// SELECT CONSTRUCTOR AND PROTOTYPE
+
+		var Selectlist = function( element, options ) {
+			this.$element = $( element );
+			this.options = $.extend( {}, $.fn.selectlist.defaults, options );
+
+			this.$button = this.$element.find( '.btn.dropdown-toggle' );
+			this.$hiddenField = this.$element.find( '.hidden-field' );
+			this.$label = this.$element.find( '.selected-label' );
+
+			this.$element.on( 'click.fu.selectlist', '.dropdown-menu a', $.proxy( this.itemClicked, this ) );
+			this.setDefaultSelection();
+
+			if ( options.resize === 'auto' ) {
+				this.resize();
+			}
+		};
+
+		Selectlist.prototype = {
+
+			constructor: Selectlist,
+
+			destroy: function() {
+				this.$element.remove();
+				// any external bindings
+				// [none]
+				// empty elements to return to original markup
+				// [none]
+				// returns string of markup
+				return this.$element[ 0 ].outerHTML;
+			},
+
+			doSelect: function( $item ) {
+				var $selectedItem;
+				this.$selectedItem = $selectedItem = $item;
+
+				this.$hiddenField.val( this.$selectedItem.attr( 'data-value' ) );
+				this.$label.html( $( this.$selectedItem.children()[ 0 ] ).html() );
+
+				// clear and set selected item to allow declarative init state
+				// unlike other controls, selectlist's value is stored internal, not in an input
+				this.$element.find( 'li' ).each( function() {
+					if ( $selectedItem.is( $( this ) ) ) {
+						$( this ).attr( 'data-selected', true );
+					} else {
+						$( this ).removeData( 'selected' ).removeAttr( 'data-selected' );
+					}
+				} );
+
+			},
+
+			itemClicked: function( e ) {
+				this.$element.trigger( 'clicked.fu.selectlist', this.$selectedItem );
+
+				e.preventDefault();
+
+				// is clicked element different from currently selected element?
+				if ( !( $( e.target ).parent().is( this.$selectedItem ) ) ) {
+					this.itemChanged( e );
+				}
+
+				// return focus to control after selecting an option
+				this.$element.find( '.dropdown-toggle' ).focus();
+
+			},
+
+			itemChanged: function( e ) {
+
+				this.doSelect( $( e.target ).parent() );
+
+				// pass object including text and any data-attributes
+				// to onchange event
+				var data = this.selectedItem();
+				// trigger changed event
+				this.$element.trigger( 'changed.fu.selectlist', data );
+			},
+
+			resize: function() {
+				var newWidth = 0;
+				var sizer = $( '<div/>' ).addClass( 'selectlist-sizer' );
+				var width = 0;
+
+				if ( Boolean( $( document ).find( 'html' ).hasClass( 'fuelux' ) ) ) {
+					// default behavior for fuel ux setup. means fuelux was a class on the html tag
+					$( document.body ).append( sizer );
+				} else {
+					// fuelux is not a class on the html tag. So we'll look for the first one we find so the correct styles get applied to the sizer
+					$( '.fuelux:first' ).append( sizer );
+				}
+
+				// iterate through each item to find longest string
+				this.$element.find( 'a' ).each( function() {
+					sizer.text( $( this ).text() );
+					newWidth = sizer.outerWidth();
+					if ( newWidth > width ) {
+						width = newWidth;
+					}
+				} );
+
+				sizer.remove();
+
+				//TODO: betting this is somewhat off with box-sizing: border-box
+				this.$label.width( width );
+			},
+
+			selectedItem: function() {
+				var txt = this.$selectedItem.text();
+				return $.extend( {
+					text: txt
+				}, this.$selectedItem.data() );
+			},
+
+			selectByText: function( text ) {
+				var $item = $( [] );
+				this.$element.find( 'li' ).each( function() {
+					if ( ( this.textContent || this.innerText || $( this ).text() || '' ).toLowerCase() === ( text || '' ).toLowerCase() ) {
+						$item = $( this );
+						return false;
+					}
+				} );
+				this.doSelect( $item );
+			},
+
+			selectByValue: function( value ) {
+				var selector = 'li[data-value="' + value + '"]';
+				this.selectBySelector( selector );
+			},
+
+			selectByIndex: function( index ) {
+				// zero-based index
+				var selector = 'li:eq(' + index + ')';
+				this.selectBySelector( selector );
+			},
+
+			selectBySelector: function( selector ) {
+				var $item = this.$element.find( selector );
+				this.doSelect( $item );
+			},
+
+			setDefaultSelection: function() {
+				var $item = this.$element.find( 'li[data-selected=true]' ).eq( 0 );
+
+				if ( $item.length === 0 ) {
+					$item = this.$element.find( 'li' ).has( 'a' ).eq( 0 );
+				}
+
+				this.doSelect( $item );
+			},
+
+			enable: function() {
+				this.$element.removeClass( 'disabled' );
+				this.$button.removeClass( 'disabled' );
+			},
+
+			disable: function() {
+				this.$element.addClass( 'disabled' );
+				this.$button.addClass( 'disabled' );
+			}
+
+		};
+
+
+		// SELECT PLUGIN DEFINITION
+
+		$.fn.selectlist = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.selectlist' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.selectlist', ( data = new Selectlist( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.selectlist.defaults = {};
+
+		$.fn.selectlist.Constructor = Selectlist;
+
+		$.fn.selectlist.noConflict = function() {
+			$.fn.selectlist = old;
+			return this;
+		};
+
+
+		// DATA-API
+
+		$( document ).on( 'mousedown.fu.selectlist.data-api', '[data-initialize=selectlist]', function( e ) {
+			var $control = $( e.target ).closest( '.selectlist' );
+			if ( !$control.data( 'fu.selectlist' ) ) {
+				$control.selectlist( $control.data() );
+			}
+		} );
+
+		// Must be domReady for AMD compatibility
+		$( function() {
+			$( '[data-initialize=selectlist]' ).each( function() {
+				var $this = $( this );
+				if ( !$this.data( 'fu.selectlist' ) ) {
+					$this.selectlist( $this.data() );
+				}
+			} );
+		} );
+
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Spinbox
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.spinbox;
+
+		// SPINBOX CONSTRUCTOR AND PROTOTYPE
+
+		var Spinbox = function( element, options ) {
+			this.$element = $( element );
+			this.options = $.extend( {}, $.fn.spinbox.defaults, options );
+			this.$input = this.$element.find( '.spinbox-input' );
+			this.$element.on( 'focusin.fu.spinbox', this.$input, $.proxy( this.changeFlag, this ) );
+			this.$element.on( 'focusout.fu.spinbox', this.$input, $.proxy( this.change, this ) );
+			this.$element.on( 'keydown.fu.spinbox', this.$input, $.proxy( this.keydown, this ) );
+			this.$element.on( 'keyup.fu.spinbox', this.$input, $.proxy( this.keyup, this ) );
+
+			this.bindMousewheelListeners();
+			this.mousewheelTimeout = {};
+
+			if ( this.options.hold ) {
+				this.$element.on( 'mousedown.fu.spinbox', '.spinbox-up', $.proxy( function() {
+					this.startSpin( true );
+				}, this ) );
+				this.$element.on( 'mouseup.fu.spinbox', '.spinbox-up, .spinbox-down', $.proxy( this.stopSpin, this ) );
+				this.$element.on( 'mouseout.fu.spinbox', '.spinbox-up, .spinbox-down', $.proxy( this.stopSpin, this ) );
+				this.$element.on( 'mousedown.fu.spinbox', '.spinbox-down', $.proxy( function() {
+					this.startSpin( false );
+				}, this ) );
+			} else {
+				this.$element.on( 'click.fu.spinbox', '.spinbox-up', $.proxy( function() {
+					this.step( true );
+				}, this ) );
+				this.$element.on( 'click.fu.spinbox', '.spinbox-down', $.proxy( function() {
+					this.step( false );
+				}, this ) );
+			}
+
+			this.switches = {
+				count: 1,
+				enabled: true
+			};
+
+			if ( this.options.speed === 'medium' ) {
+				this.switches.speed = 300;
+			} else if ( this.options.speed === 'fast' ) {
+				this.switches.speed = 100;
+			} else {
+				this.switches.speed = 500;
+			}
+
+			this.lastValue = this.options.value;
+
+			this.render();
+
+			if ( this.options.disabled ) {
+				this.disable();
+			}
+		};
+
+		Spinbox.prototype = {
+			constructor: Spinbox,
+
+			destroy: function() {
+				this.$element.remove();
+				// any external bindings
+				// [none]
+				// set input value attrbute
+				this.$element.find( 'input' ).each( function() {
+					$( this ).attr( 'value', $( this ).val() );
+				} );
+				// empty elements to return to original markup
+				// [none]
+				// returns string of markup
+				return this.$element[ 0 ].outerHTML;
+			},
+
+			render: function() {
+				var inputValue = this.parseInput( this.$input.val() );
+				var maxUnitLength = '';
+
+				// if input is empty and option value is default, 0
+				if ( inputValue !== '' && this.options.value === 0 ) {
+					this.value( inputValue );
+				} else {
+					this.output( this.options.value );
+				}
+
+				if ( this.options.units.length ) {
+					$.each( this.options.units, function( index, value ) {
+						if ( value.length > maxUnitLength.length ) {
+							maxUnitLength = value;
+						}
+					} );
+				}
+
+			},
+
+			output: function( value, updateField ) {
+				value = ( value + '' ).split( '.' ).join( this.options.decimalMark );
+				updateField = ( updateField || true );
+				if ( updateField ) {
+					this.$input.val( value );
+				}
+
+				return value;
+			},
+
+			parseInput: function( value ) {
+				value = ( value + '' ).split( this.options.decimalMark ).join( '.' );
+
+				return value;
+			},
+
+			change: function() {
+				var newVal = this.parseInput( this.$input.val() ) || '';
+
+				if ( this.options.units.length || this.options.decimalMark !== '.' ) {
+					newVal = this.parseValueWithUnit( newVal );
+				} else if ( newVal / 1 ) {
+					newVal = this.options.value = this.checkMaxMin( newVal / 1 );
+				} else {
+					newVal = this.checkMaxMin( newVal.replace( /[^0-9.-]/g, '' ) || '' );
+					this.options.value = newVal / 1;
+				}
+				this.output( newVal );
+
+				this.changeFlag = false;
+				this.triggerChangedEvent();
+			},
+
+			changeFlag: function() {
+				this.changeFlag = true;
+			},
+
+			stopSpin: function() {
+				if ( this.switches.timeout !== undefined ) {
+					clearTimeout( this.switches.timeout );
+					this.switches.count = 1;
+					this.triggerChangedEvent();
+				}
+			},
+
+			triggerChangedEvent: function() {
+				var currentValue = this.value();
+				if ( currentValue === this.lastValue ) return;
+
+				this.lastValue = currentValue;
+
+				// Primary changed event
+				this.$element.trigger( 'changed.fu.spinbox', this.output( currentValue, false ) ); // no DOM update
+			},
+
+			startSpin: function( type ) {
+
+				if ( !this.options.disabled ) {
+					var divisor = this.switches.count;
+
+					if ( divisor === 1 ) {
+						this.step( type );
+						divisor = 1;
+					} else if ( divisor < 3 ) {
+						divisor = 1.5;
+					} else if ( divisor < 8 ) {
+						divisor = 2.5;
+					} else {
+						divisor = 4;
+					}
+
+					this.switches.timeout = setTimeout( $.proxy( function() {
+						this.iterate( type );
+					}, this ), this.switches.speed / divisor );
+					this.switches.count++;
+				}
+			},
+
+			iterate: function( type ) {
+				this.step( type );
+				this.startSpin( type );
+			},
+
+			step: function( isIncrease ) {
+				// isIncrease: true is up, false is down
+
+				var digits, multiple, currentValue, limitValue;
+
+				// trigger change event
+				if ( this.changeFlag ) {
+					this.change();
+				}
+
+				// get current value and min/max options
+				currentValue = this.options.value;
+				limitValue = isIncrease ? this.options.max : this.options.min;
+
+				if ( ( isIncrease ? currentValue < limitValue : currentValue > limitValue ) ) {
+					var newVal = currentValue + ( isIncrease ? 1 : -1 ) * this.options.step;
+
+					// raise to power of 10 x number of decimal places, then round
+					if ( this.options.step % 1 !== 0 ) {
+						digits = ( this.options.step + '' ).split( '.' )[ 1 ].length;
+						multiple = Math.pow( 10, digits );
+						newVal = Math.round( newVal * multiple ) / multiple;
+					}
+
+					// if outside limits, set to limit value
+					if ( isIncrease ? newVal > limitValue : newVal < limitValue ) {
+						this.value( limitValue );
+					} else {
+						this.value( newVal );
+					}
+
+				} else if ( this.options.cycle ) {
+					var cycleVal = isIncrease ? this.options.min : this.options.max;
+					this.value( cycleVal );
+				}
+			},
+
+			value: function( value ) {
+
+				if ( value || value === 0 ) {
+					if ( this.options.units.length || this.options.decimalMark !== '.' ) {
+						this.output( this.parseValueWithUnit( value + ( this.unit || '' ) ) );
+						return this;
+
+					} else if ( !isNaN( parseFloat( value ) ) && isFinite( value ) ) {
+						this.options.value = value / 1;
+						this.output( value + ( this.unit ? this.unit : '' ) );
+						return this;
+
+					}
+				} else {
+					if ( this.changeFlag ) {
+						this.change();
+					}
+
+					if ( this.unit ) {
+						return this.options.value + this.unit;
+					} else {
+						return this.output( this.options.value, false ); // no DOM update
+					}
+				}
+			},
+
+			isUnitLegal: function( unit ) {
+				var legalUnit;
+
+				$.each( this.options.units, function( index, value ) {
+					if ( value.toLowerCase() === unit.toLowerCase() ) {
+						legalUnit = unit.toLowerCase();
+						return false;
+					}
+				} );
+
+				return legalUnit;
+			},
+
+			// strips units and add them back
+			parseValueWithUnit: function( value ) {
+				var unit = value.replace( /[^a-zA-Z]/g, '' );
+				var number = value.replace( /[^0-9.-]/g, '' );
+
+				if ( unit ) {
+					unit = this.isUnitLegal( unit );
+				}
+
+				this.options.value = this.checkMaxMin( number / 1 );
+				this.unit = unit || undefined;
+				return this.options.value + ( unit || '' );
+			},
+
+			checkMaxMin: function( value ) {
+				// if unreadable
+				if ( isNaN( parseFloat( value ) ) ) {
+					return value;
+				}
+				// if not within range return the limit
+				if ( !( value <= this.options.max && value >= this.options.min ) ) {
+					value = value >= this.options.max ? this.options.max : this.options.min;
+				}
+				return value;
+			},
+
+			disable: function() {
+				this.options.disabled = true;
+				this.$element.addClass( 'disabled' );
+				this.$input.attr( 'disabled', '' );
+				this.$element.find( 'button' ).addClass( 'disabled' );
+			},
+
+			enable: function() {
+				this.options.disabled = false;
+				this.$element.removeClass( 'disabled' );
+				this.$input.removeAttr( "disabled" );
+				this.$element.find( 'button' ).removeClass( 'disabled' );
+			},
+
+			keydown: function( event ) {
+				var keyCode = event.keyCode;
+				if ( keyCode === 38 ) {
+					this.step( true );
+				} else if ( keyCode === 40 ) {
+					this.step( false );
+				}
+			},
+
+			keyup: function( event ) {
+				var keyCode = event.keyCode;
+
+				if ( keyCode === 38 || keyCode === 40 ) {
+					this.triggerChangedEvent();
+				}
+			},
+
+			bindMousewheelListeners: function() {
+				var inputEl = this.$input.get( 0 );
+				if ( inputEl.addEventListener ) {
+					//IE 9, Chrome, Safari, Opera
+					inputEl.addEventListener( 'mousewheel', $.proxy( this.mousewheelHandler, this ), false );
+					// Firefox
+					inputEl.addEventListener( 'DOMMouseScroll', $.proxy( this.mousewheelHandler, this ), false );
+				} else {
+					// IE <9
+					inputEl.attachEvent( 'onmousewheel', $.proxy( this.mousewheelHandler, this ) );
+				}
+			},
+
+			mousewheelHandler: function( event ) {
+				var e = window.event || event; // old IE support
+				var delta = Math.max( -1, Math.min( 1, ( e.wheelDelta || -e.detail ) ) );
+				var self = this;
+
+				clearTimeout( this.mousewheelTimeout );
+				this.mousewheelTimeout = setTimeout( function() {
+					self.triggerChangedEvent();
+				}, 300 );
+
+				if ( delta < 0 ) {
+					this.step( true );
+				} else {
+					this.step( false );
+				}
+
+				if ( e.preventDefault ) {
+					e.preventDefault();
+				} else {
+					e.returnValue = false;
+				}
+				return false;
+			}
+		};
+
+
+		// SPINBOX PLUGIN DEFINITION
+
+		$.fn.spinbox = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.spinbox' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) {
+					$this.data( 'fu.spinbox', ( data = new Spinbox( this, options ) ) );
+				}
+				if ( typeof option === 'string' ) {
+					methodReturn = data[ option ].apply( data, args );
+				}
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		// value needs to be 0 for this.render();
+		$.fn.spinbox.defaults = {
+			value: 0,
+			min: 0,
+			max: 999,
+			step: 1,
+			hold: true,
+			speed: 'medium',
+			disabled: false,
+			cycle: false,
+			units: [],
+			decimalMark: '.'
+		};
+
+		$.fn.spinbox.Constructor = Spinbox;
+
+		$.fn.spinbox.noConflict = function() {
+			$.fn.spinbox = old;
+			return this;
+		};
+
+
+		// DATA-API
+
+		$( document ).on( 'mousedown.fu.spinbox.data-api', '[data-initialize=spinbox]', function( e ) {
+			var $control = $( e.target ).closest( '.spinbox' );
+			if ( !$control.data( 'fu.spinbox' ) ) {
+				$control.spinbox( $control.data() );
+			}
+		} );
+
+		// Must be domReady for AMD compatibility
+		$( function() {
+			$( '[data-initialize=spinbox]' ).each( function() {
+				var $this = $( this );
+				if ( !$this.data( 'fu.spinbox' ) ) {
+					$this.spinbox( $this.data() );
+				}
+			} );
+		} );
+
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Tree
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.tree;
+
+		// TREE CONSTRUCTOR AND PROTOTYPE
+
+		var Tree = function( element, options ) {
+			this.$element = $( element );
+			this.options = $.extend( {}, $.fn.tree.defaults, options );
+
+			this.$element.on( 'click.fu.tree', '.tree-item', $.proxy( function( ev ) {
+				this.selectItem( ev.currentTarget );
+			}, this ) );
+			this.$element.on( 'click.fu.tree', '.tree-branch-name', $.proxy( function( ev ) {
+				this.openFolder( ev.currentTarget );
+			}, this ) );
+
+			if ( this.options.folderSelect ) {
+				this.$element.off( 'click.fu.tree', '.tree-branch-name' );
+				this.$element.on( 'click.fu.tree', '.icon-caret', $.proxy( function( ev ) {
+					this.openFolder( $( ev.currentTarget ).parent() );
+				}, this ) );
+				this.$element.on( 'click.fu.tree', '.tree-branch-name', $.proxy( function( ev ) {
+					this.selectFolder( $( ev.currentTarget ) );
+				}, this ) );
+			}
+
+			this.render();
+		};
+
+		Tree.prototype = {
+			constructor: Tree,
+
+			destroy: function() {
+				// any external bindings [none]
+				// empty elements to return to original markup
+				this.$element.find( "li:not([data-template])" ).remove();
+
+				this.$element.remove();
+				// returns string of markup
+				return this.$element[ 0 ].outerHTML;
+			},
+
+			render: function() {
+				this.populate( this.$element );
+			},
+
+			populate: function( $el ) {
+				var self = this;
+				var $parent = ( $el.hasClass( 'tree' ) ) ? $el : $el.parent();
+				var loader = $parent.find( '.tree-loader:eq(0)' );
+
+				loader.removeClass( 'hide' );
+				this.options.dataSource( this.options.folderSelect ? $parent.data() : $el.data(), function( items ) {
+					loader.addClass( 'hide' );
+
+					$.each( items.data, function( index, value ) {
+						var $entity;
+
+						if ( value.type === 'folder' ) {
+							$entity = self.$element.find( '[data-template=treebranch]:eq(0)' ).clone().removeClass( 'hide' ).removeAttr( 'data-template' );
+							$entity.data( value );
+							$entity.find( '.tree-branch-name > .tree-label' ).html( value.name );
+						} else if ( value.type === 'item' ) {
+							$entity = self.$element.find( '[data-template=treeitem]:eq(0)' ).clone().removeClass( 'hide' ).removeAttr( 'data-template' );
+							$entity.find( '.tree-item-name > .tree-label' ).html( value.name );
+							$entity.data( value );
+						}
+
+						// Decorate $entity with data making the element
+						// easily accessable with libraries like jQuery.
+						//
+						// Values are contained within the object returned
+						// for folders and items as dataAttributes:
+						//
+						// {
+						//     name: "An Item",
+						//     type: 'item',
+						//     dataAttributes = {
+						//         'classes': 'required-item red-text',
+						//         'data-parent': parentId,
+						//         'guid': guid,
+						//         'id': guid
+						//     }
+						// };
+
+						// add attributes to tree-branch or tree-item
+						var dataAttributes = value.dataAttributes || [];
+						$.each( dataAttributes, function( key, value ) {
+							switch ( key ) {
+								case 'class':
+								case 'classes':
+								case 'className':
+									$entity.addClass( value );
+									break;
+
+									// allow custom icons
+								case 'data-icon':
+									$entity.find( '.icon-item' ).removeClass().addClass( 'icon-item ' + value );
+									$entity.attr( key, value );
+									break;
+
+									// ARIA support
+								case 'id':
+									$entity.attr( key, value );
+									$entity.attr( 'aria-labelledby', value + '-label' );
+									$entity.find( '.tree-branch-name > .tree-label' ).attr( 'id', value + '-label' );
+									break;
+
+									// id, style, data-*
+								default:
+									$entity.attr( key, value );
+									break;
+							}
+						} );
+
+						// add child nodes
+						if ( $el.hasClass( 'tree-branch-header' ) ) {
+							$parent.find( '.tree-branch-children:eq(0)' ).append( $entity );
+						} else {
+							$el.append( $entity );
+						}
+					} );
+
+					// return newly populated folder
+					self.$element.trigger( 'loaded.fu.tree', $parent );
+				} );
+			},
+
+			selectItem: function( el ) {
+				var $el = $( el );
+				var $all = this.$element.find( '.tree-selected' );
+				var data = [];
+				var $icon = $el.find( '.icon-item' );
+
+				if ( this.options.multiSelect ) {
+					$.each( $all, function( index, value ) {
+						var $val = $( value );
+						if ( $val[ 0 ] !== $el[ 0 ] ) {
+							data.push( $( value ).data() );
+						}
+					} );
+				} else if ( $all[ 0 ] !== $el[ 0 ] ) {
+					$all.removeClass( 'tree-selected' )
+						.find( '.glyphicon' ).removeClass( 'glyphicon-ok' ).addClass( 'fueluxicon-bullet' );
+					data.push( $el.data() );
+				}
+
+				var eventType = 'selected';
+				if ( $el.hasClass( 'tree-selected' ) ) {
+					eventType = 'unselected';
+					$el.removeClass( 'tree-selected' );
+					if ( $icon.hasClass( 'glyphicon-ok' ) || $icon.hasClass( 'fueluxicon-bullet' ) ) {
+						$icon.removeClass( 'glyphicon-ok' ).addClass( 'fueluxicon-bullet' );
+					}
+				} else {
+					$el.addClass( 'tree-selected' );
+					// add tree dot back in
+					if ( $icon.hasClass( 'glyphicon-ok' ) || $icon.hasClass( 'fueluxicon-bullet' ) ) {
+						$icon.removeClass( 'fueluxicon-bullet' ).addClass( 'glyphicon-ok' );
+					}
+					if ( this.options.multiSelect ) {
+						data.push( $el.data() );
+					}
+				}
+
+				if ( data.length ) {
+					this.$element.trigger( 'selected', {
+						selected: data
+					} );
+				}
+
+				// Return new list of selected items, the item
+				// clicked, and the type of event:
+				$el.trigger( 'updated.fu.tree', {
+					selected: data,
+					item: $el,
+					eventType: eventType
+				} );
+			},
+
+			openFolder: function( el ) {
+				var $el = $( el ); // tree-branch-name
+				var $branch;
+				var $treeFolderContent;
+				var $treeFolderContentFirstChild;
+
+				// if item select only
+				if ( !this.options.folderSelect ) {
+					$el = $( el ).parent(); // tree-branch, if tree-branch-name clicked
+				}
+
+				$branch = $el.closest( '.tree-branch' ); // tree branch
+				$treeFolderContent = $branch.find( '.tree-branch-children' );
+				$treeFolderContentFirstChild = $treeFolderContent.eq( 0 );
+
+				// manipulate branch/folder
+				var eventType, classToTarget, classToAdd;
+				if ( $el.find( '.glyphicon-folder-close' ).length ) {
+					eventType = 'opened';
+					classToTarget = '.glyphicon-folder-close';
+					classToAdd = 'glyphicon-folder-open';
+
+					$branch.addClass( 'tree-open' );
+					$branch.attr( 'aria-expanded', 'true' );
+
+					$treeFolderContentFirstChild.removeClass( 'hide' );
+					if ( !$treeFolderContent.children().length ) {
+						this.populate( $treeFolderContent );
+					}
+
+				} else if ( $el.find( '.glyphicon-folder-open' ) ) {
+					eventType = 'closed';
+					classToTarget = '.glyphicon-folder-open';
+					classToAdd = 'glyphicon-folder-close';
+
+					$branch.removeClass( 'tree-open' );
+					$branch.attr( 'aria-expanded', 'false' );
+					$treeFolderContentFirstChild.addClass( 'hide' );
+
+					// remove if no cache
+					if ( !this.options.cacheItems ) {
+						$treeFolderContentFirstChild.empty();
+					}
+
+				}
+
+				$branch.find( '> .tree-branch-header .icon-folder' ).eq( 0 )
+					.removeClass( 'glyphicon-folder-close glyphicon-folder-open' )
+					.addClass( classToAdd );
+
+				this.$element.trigger( eventType, $branch.data() );
+			},
+
+			selectFolder: function( clickedElement ) {
+				var $clickedElement = $( clickedElement );
+				var $clickedBranch = $clickedElement.closest( '.tree-branch' );
+				var $selectedBranch = this.$element.find( '.tree-branch.tree-selected' );
+				var selectedData = [];
+				var eventType = 'selected';
+
+				// select clicked item
+				if ( $clickedBranch.hasClass( 'tree-selected' ) ) {
+					eventType = 'unselected';
+					$clickedBranch.removeClass( 'tree-selected' );
+				} else {
+					$clickedBranch.addClass( 'tree-selected' );
+				}
+
+				if ( this.options.multiSelect ) {
+
+					// get currently selected
+					$selectedBranch = this.$element.find( '.tree-branch.tree-selected' );
+
+					$.each( $selectedBranch, function( index, value ) {
+						var $value = $( value );
+						if ( $value[ 0 ] !== $clickedElement[ 0 ] ) {
+							selectedData.push( $( value ).data() );
+						}
+					} );
+
+				} else if ( $selectedBranch[ 0 ] !== $clickedElement[ 0 ] ) {
+					$selectedBranch.removeClass( 'tree-selected' );
+
+					selectedData.push( $clickedBranch.data() );
+				}
+
+				if ( selectedData.length ) {
+					this.$element.trigger( 'selected.fu.tree', {
+						selected: selectedData
+					} );
+				}
+
+				// Return new list of selected items, the item
+				// clicked, and the type of event:
+				$clickedElement.trigger( 'updated.fu.tree', {
+					selected: selectedData,
+					item: $clickedElement,
+					eventType: eventType
+				} );
+			},
+
+			selectedItems: function() {
+				var $sel = this.$element.find( '.tree-selected' );
+				var data = [];
+
+				$.each( $sel, function( index, value ) {
+					data.push( $( value ).data() );
+				} );
+				return data;
+			},
+
+			// collapses open folders
+			collapse: function() {
+				var cacheItems = this.options.cacheItems;
+
+				// find open folders
+				this.$element.find( '.icon-folder-open' ).each( function() {
+					// update icon class
+					var $this = $( this )
+						.removeClass( 'icon-folder-close icon-folder-open' )
+						.addClass( 'icon-folder-close' );
+
+					// "close" or empty folder contents
+					var $parent = $this.parent().parent();
+					var $folder = $parent.children( '.tree-branch-children' );
+
+					$folder.addClass( 'hide' );
+					if ( !cacheItems ) {
+						$folder.empty();
+					}
+				} );
+			}
+		};
+
+
+		// TREE PLUGIN DEFINITION
+
+		$.fn.tree = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.tree' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.tree', ( data = new Tree( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.tree.defaults = {
+			dataSource: function( options, callback ) {},
+			multiSelect: false,
+			cacheItems: true,
+			folderSelect: true
+		};
+
+		$.fn.tree.Constructor = Tree;
+
+		$.fn.tree.noConflict = function() {
+			$.fn.tree = old;
+			return this;
+		};
+
+
+		// NO DATA-API DUE TO NEED OF DATA-SOURCE
+
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Wizard
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.wizard;
+
+		// WIZARD CONSTRUCTOR AND PROTOTYPE
+
+		var Wizard = function( element, options ) {
+			var kids;
+
+			this.$element = $( element );
+			this.options = $.extend( {}, $.fn.wizard.defaults, options );
+			this.options.disablePreviousStep = ( this.$element.attr( 'data-restrict' ) === "previous" ) ? true : this.options.disablePreviousStep;
+			this.currentStep = this.options.selectedItem.step;
+			this.numSteps = this.$element.find( '.steps li' ).length;
+			this.$prevBtn = this.$element.find( 'button.btn-prev' );
+			this.$nextBtn = this.$element.find( 'button.btn-next' );
+
+			kids = this.$nextBtn.children().detach();
+			this.nextText = $.trim( this.$nextBtn.text() );
+			this.$nextBtn.append( kids );
+
+			// handle events
+			this.$prevBtn.on( 'click.fu.wizard', $.proxy( this.previous, this ) );
+			this.$nextBtn.on( 'click.fu.wizard', $.proxy( this.next, this ) );
+			this.$element.on( 'click.fu.wizard', 'li.complete', $.proxy( this.stepclicked, this ) );
+
+			this.selectedItem( this.options.selectedItem );
+
+			if ( this.options.disablePreviousStep ) {
+				this.$prevBtn.attr( 'disabled', true );
+				this.$element.find( '.steps' ).addClass( 'previous-disabled' );
+			}
+		};
+
+		Wizard.prototype = {
+
+			constructor: Wizard,
+
+			destroy: function() {
+				this.$element.remove();
+				// any external bindings [none]
+				// empty elements to return to original markup [none]
+				// returns string of markup
+				return this.$element[ 0 ].outerHTML;
+			},
+
+			//index is 1 based
+			//second parameter can be array of objects [{ ... }, { ... }] or you can pass n additional objects as args
+			//object structure is as follows (all params are optional): { badge: '', label: '', pane: '' }
+			addSteps: function( index ) {
+				var items = [].slice.call( arguments ).slice( 1 );
+				var $steps = this.$element.find( '.steps' );
+				var $stepContent = this.$element.find( '.step-content' );
+				var i, l, $pane, $startPane, $startStep, $step;
+
+				index = ( index === -1 || ( index > ( this.numSteps + 1 ) ) ) ? this.numSteps + 1 : index;
+				if ( items[ 0 ] instanceof Array ) {
+					items = items[ 0 ];
+				}
+
+				$startStep = $steps.find( 'li:nth-child(' + index + ')' );
+				$startPane = $stepContent.find( '.step-pane:nth-child(' + index + ')' );
+				if ( $startStep.length < 1 ) {
+					$startStep = null;
+				}
+
+				for ( i = 0, l = items.length; i < l; i++ ) {
+					$step = $( '<li data-step="' + index + '"><span class="badge badge-info"></span></li>' );
+					$step.append( items[ i ].label || '' ).append( '<span class="chevron"></span>' );
+					$step.find( '.badge' ).append( items[ i ].badge || index );
+
+					$pane = $( '<div class="step-pane" data-step="' + index + '"></div>' );
+					$pane.append( items[ i ].pane || '' );
+
+					if ( !$startStep ) {
+						$steps.append( $step );
+						$stepContent.append( $pane );
+					} else {
+						$startStep.before( $step );
+						$startPane.before( $pane );
+					}
+					index++;
+				}
+
+				this.syncSteps();
+				this.numSteps = $steps.find( 'li' ).length;
+				this.setState();
+			},
+
+			//index is 1 based, howMany is number to remove
+			removeSteps: function( index, howMany ) {
+				var action = 'nextAll';
+				var i = 0;
+				var $steps = this.$element.find( '.steps' );
+				var $stepContent = this.$element.find( '.step-content' );
+				var $start;
+
+				howMany = ( howMany !== undefined ) ? howMany : 1;
+
+				if ( index > $steps.find( 'li' ).length ) {
+					$start = $steps.find( 'li:last' );
+				} else {
+					$start = $steps.find( 'li:nth-child(' + index + ')' ).prev();
+					if ( $start.length < 1 ) {
+						action = 'children';
+						$start = $steps;
+					}
+				}
+
+				$start[ action ]().each( function() {
+					var item = $( this );
+					var step = item.attr( 'data-step' );
+					if ( i < howMany ) {
+						item.remove();
+						$stepContent.find( '.step-pane[data-step="' + step + '"]:first' ).remove();
+					} else {
+						return false;
+					}
+					i++;
+				} );
+
+				this.syncSteps();
+				this.numSteps = $steps.find( 'li' ).length;
+				this.setState();
+			},
+
+			setState: function() {
+				var canMovePrev = ( this.currentStep > 1 );
+				var firstStep = ( this.currentStep === 1 );
+				var lastStep = ( this.currentStep === this.numSteps );
+
+				// disable buttons based on current step
+				if ( !this.options.disablePreviousStep ) {
+					this.$prevBtn.attr( 'disabled', ( firstStep === true || canMovePrev === false ) );
+				}
+
+				// change button text of last step, if specified
+				var last = this.$nextBtn.attr( 'data-last' );
+				if ( last ) {
+					this.lastText = last;
+					// replace text
+					var text = this.nextText;
+					if ( lastStep === true ) {
+						text = this.lastText;
+						// add status class to wizard
+						this.$element.addClass( 'complete' );
+					} else {
+						this.$element.removeClass( 'complete' );
+					}
+					var kids = this.$nextBtn.children().detach();
+					this.$nextBtn.text( text ).append( kids );
+				}
+
+				// reset classes for all steps
+				var $steps = this.$element.find( '.steps li' );
+				$steps.removeClass( 'active' ).removeClass( 'complete' );
+				$steps.find( 'span.badge' ).removeClass( 'badge-info' ).removeClass( 'badge-success' );
+
+				// set class for all previous steps
+				var prevSelector = '.steps li:lt(' + ( this.currentStep - 1 ) + ')';
+				var $prevSteps = this.$element.find( prevSelector );
+				$prevSteps.addClass( 'complete' );
+				$prevSteps.find( 'span.badge' ).addClass( 'badge-success' );
+
+				// set class for current step
+				var currentSelector = '.steps li:eq(' + ( this.currentStep - 1 ) + ')';
+				var $currentStep = this.$element.find( currentSelector );
+				$currentStep.addClass( 'active' );
+				$currentStep.find( 'span.badge' ).addClass( 'badge-info' );
+
+				// set display of target element
+				var $stepContent = this.$element.find( '.step-content' );
+				var target = $currentStep.attr( 'data-step' );
+				$stepContent.find( '.step-pane' ).removeClass( 'active' );
+				$stepContent.find( '.step-pane[data-step="' + target + '"]:first' ).addClass( 'active' );
+
+				// reset the wizard position to the left
+				this.$element.find( '.steps' ).first().attr( 'style', 'margin-left: 0' );
+
+				// check if the steps are wider than the container div
+				var totalWidth = 0;
+				this.$element.find( '.steps > li' ).each( function() {
+					totalWidth += $( this ).outerWidth();
+				} );
+				var containerWidth = 0;
+				if ( this.$element.find( '.actions' ).length ) {
+					containerWidth = this.$element.width() - this.$element.find( '.actions' ).first().outerWidth();
+				} else {
+					containerWidth = this.$element.width();
+				}
+				if ( totalWidth > containerWidth ) {
+
+					// set the position so that the last step is on the right
+					var newMargin = totalWidth - containerWidth;
+					this.$element.find( '.steps' ).first().attr( 'style', 'margin-left: -' + newMargin + 'px' );
+
+					// set the position so that the active step is in a good
+					// position if it has been moved out of view
+					if ( this.$element.find( 'li.active' ).first().position().left < 200 ) {
+						newMargin += this.$element.find( 'li.active' ).first().position().left - 200;
+						if ( newMargin < 1 ) {
+							this.$element.find( '.steps' ).first().attr( 'style', 'margin-left: 0' );
+						} else {
+							this.$element.find( '.steps' ).first().attr( 'style', 'margin-left: -' + newMargin + 'px' );
+						}
+					}
+				}
+
+				// only fire changed event after initializing
+				if ( typeof( this.initialized ) !== 'undefined' ) {
+					var e = $.Event( 'changed.fu.wizard' );
+					this.$element.trigger( e, {
+						step: this.currentStep
+					} );
+				}
+
+				this.initialized = true;
+			},
+
+			stepclicked: function( e ) {
+				var li = $( e.currentTarget );
+				var index = this.$element.find( '.steps li' ).index( li );
+				var canMovePrev = true;
+
+				if ( this.options.disablePreviousStep ) {
+					if ( index < this.currentStep ) {
+						canMovePrev = false;
+					}
+				}
+
+				if ( canMovePrev ) {
+					var evt = $.Event( 'stepclicked.fu.wizard' );
+					this.$element.trigger( evt, {
+						step: index + 1
+					} );
+					if ( evt.isDefaultPrevented() ) {
+						return;
+					}
+
+					this.currentStep = ( index + 1 );
+					this.setState();
+				}
+			},
+
+			syncSteps: function() {
+				var i = 1;
+				var $steps = this.$element.find( '.steps' );
+				var $stepContent = this.$element.find( '.step-content' );
+
+				$steps.children().each( function() {
+					var item = $( this );
+					var badge = item.find( '.badge' );
+					var step = item.attr( 'data-step' );
+
+					if ( !isNaN( parseInt( badge.html(), 10 ) ) ) {
+						badge.html( i );
+					}
+					item.attr( 'data-step', i );
+					$stepContent.find( '.step-pane[data-step="' + step + '"]:last' ).attr( 'data-step', i );
+					i++;
+				} );
+			},
+
+			previous: function() {
+				var canMovePrev = ( this.currentStep > 1 );
+				if ( this.options.disablePreviousStep ) {
+					canMovePrev = false;
+				}
+				if ( canMovePrev ) {
+					var e = $.Event( 'actionclicked.fu.wizard' );
+					this.$element.trigger( e, {
+						step: this.currentStep,
+						direction: 'previous'
+					} );
+					if ( e.isDefaultPrevented() ) {
+						return;
+					} // don't increment
+
+					this.currentStep -= 1;
+					this.setState();
+				}
+
+				// return focus to control after selecting an option
+				if ( this.$prevBtn.is( ':disabled' ) ) {
+					this.$nextBtn.focus();
+				} else {
+					this.$prevBtn.focus();
+				}
+
+			},
+
+			next: function() {
+				var canMoveNext = ( this.currentStep + 1 <= this.numSteps );
+				var lastStep = ( this.currentStep === this.numSteps );
+
+				if ( canMoveNext ) {
+					var e = $.Event( 'actionclicked.fu.wizard' );
+					this.$element.trigger( e, {
+						step: this.currentStep,
+						direction: 'next'
+					} );
+					if ( e.isDefaultPrevented() ) {
+						return;
+					} // don't increment
+
+					this.currentStep += 1;
+					this.setState();
+				} else if ( lastStep ) {
+					this.$element.trigger( 'finished.fu.wizard' );
+				}
+
+				// return focus to control after selecting an option
+				if ( this.$nextBtn.is( ':disabled' ) ) {
+					this.$prevBtn.focus();
+				} else {
+					this.$nextBtn.focus();
+				}
+			},
+
+			selectedItem: function( selectedItem ) {
+				var retVal, step;
+
+				if ( selectedItem ) {
+
+					step = selectedItem.step || -1;
+
+					if ( step >= 1 && step <= this.numSteps ) {
+						this.currentStep = step;
+						this.setState();
+					} else {
+						step = this.$element.find( '.steps li.active:first' ).attr( 'data-step' );
+						if ( !isNaN( step ) ) {
+							this.currentStep = parseInt( step, 10 );
+							this.setState();
+						}
+					}
+
+					retVal = this;
+				} else {
+					retVal = {
+						step: this.currentStep
+					};
+				}
+
+				return retVal;
+			}
+		};
+
+
+		// WIZARD PLUGIN DEFINITION
+
+		$.fn.wizard = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.wizard' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.wizard', ( data = new Wizard( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.wizard.defaults = {
+			disablePreviousStep: false,
+			selectedItem: {
+				step: -1
+			} //-1 means it will attempt to look for "active" class in order to set the step
+		};
+
+		$.fn.wizard.Constructor = Wizard;
+
+		$.fn.wizard.noConflict = function() {
+			$.fn.wizard = old;
+			return this;
+		};
+
+
+		// DATA-API
+
+		$( document ).on( 'mouseover.fu.wizard.data-api', '[data-initialize=wizard]', function( e ) {
+			var $control = $( e.target ).closest( '.wizard' );
+			if ( !$control.data( 'fu.wizard' ) ) {
+				$control.wizard( $control.data() );
+			}
+		} );
+
+		// Must be domReady for AMD compatibility
+		$( function() {
+			$( '[data-initialize=wizard]' ).each( function() {
+				var $this = $( this );
+				if ( $this.data( 'fu.wizard' ) ) return;
+				$this.wizard( $this.data() );
+			} );
+		} );
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Infinite Scroll
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.infinitescroll;
+
+		// INFINITE SCROLL CONSTRUCTOR AND PROTOTYPE
+
+		var InfiniteScroll = function( element, options ) {
+			this.$element = $( element );
+			this.$element.addClass( 'infinitescroll' );
+			this.options = $.extend( {}, $.fn.infinitescroll.defaults, options );
+
+			this.curScrollTop = this.$element.scrollTop();
+			this.curPercentage = this.getPercentage();
+			this.fetchingData = false;
+
+			this.$element.on( 'scroll.fu.infinitescroll', $.proxy( this.onScroll, this ) );
+			this.onScroll();
+		};
+
+		InfiniteScroll.prototype = {
+
+			constructor: InfiniteScroll,
+
+			destroy: function() {
+				this.$element.remove();
+				// any external bindings
+				// [none]
+
+				// empty elements to return to original markup
+				this.$element.empty();
+
+				return this.$element[ 0 ].outerHTML;
+			},
+
+			disable: function() {
+				this.$element.off( 'scroll.fu.infinitescroll' );
+			},
+
+			enable: function() {
+				this.$element.on( 'scroll.fu.infinitescroll', $.proxy( this.onScroll, this ) );
+			},
+
+			end: function( content ) {
+				var end = $( '<div class="infinitescroll-end"></div>' );
+				if ( content ) {
+					end.append( content );
+				} else {
+					end.append( '---------' );
+				}
+				this.$element.append( end );
+				this.disable();
+			},
+
+			getPercentage: function() {
+				var height = ( this.$element.css( 'box-sizing' ) === 'border-box' ) ? this.$element.outerHeight() : this.$element.height();
+				var scrollHeight = this.$element.get( 0 ).scrollHeight;
+				return ( scrollHeight > height ) ? ( ( height / ( scrollHeight - this.curScrollTop ) ) * 100 ) : 0;
+			},
+
+			fetchData: function( force ) {
+				var load = $( '<div class="infinitescroll-load"></div>' );
+				var self = this;
+				var moreBtn;
+
+				var fetch = function() {
+					var helpers = {
+						percentage: self.curPercentage,
+						scrollTop: self.curScrollTop
+					};
+					var $loader = $( '<div class="loader"></div>' );
+					load.append( $loader );
+					$loader.loader();
+					if ( self.options.dataSource ) {
+						self.options.dataSource( helpers, function( resp ) {
+							var end;
+							load.remove();
+							if ( resp.content ) {
+								self.$element.append( resp.content );
+							}
+							if ( resp.end ) {
+								end = ( resp.end !== true ) ? resp.end : undefined;
+								self.end( end );
+							}
+							self.fetchingData = false;
+						} );
+					}
+				};
+
+				this.fetchingData = true;
+				this.$element.append( load );
+				if ( this.options.hybrid && force !== true ) {
+					moreBtn = $( '<button type="button" class="btn btn-primary"></button>' );
+					if ( typeof this.options.hybrid === 'object' ) {
+						moreBtn.append( this.options.hybrid.label );
+					} else {
+						moreBtn.append( '<span class="glyphicon glyphicon-repeat"></span>' );
+					}
+					moreBtn.on( 'click.fu.infinitescroll', function() {
+						moreBtn.remove();
+						fetch();
+					} );
+					load.append( moreBtn );
+				} else {
+					fetch();
+				}
+			},
+
+			onScroll: function( e ) {
+				this.curScrollTop = this.$element.scrollTop();
+				this.curPercentage = this.getPercentage();
+				if ( !this.fetchingData && this.curPercentage >= this.options.percentage ) {
+					this.fetchData();
+				}
+			}
+
+		};
+
+		// INFINITE SCROLL PLUGIN DEFINITION
+
+		$.fn.infinitescroll = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.infinitescroll' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.infinitescroll', ( data = new InfiniteScroll( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.infinitescroll.defaults = {
+			dataSource: null,
+			hybrid: false, //can be true or an object with structure: { 'label': (markup or jQuery obj) }
+			percentage: 95 //percentage scrolled to the bottom before more is loaded
+		};
+
+		$.fn.infinitescroll.Constructor = InfiniteScroll;
+
+		$.fn.infinitescroll.noConflict = function() {
+			$.fn.infinitescroll = old;
+			return this;
+		};
+
+		// NO DATA-API DUE TO NEED OF DATA-SOURCE
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Pillbox
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.pillbox;
+
+		// PILLBOX CONSTRUCTOR AND PROTOTYPE
+
+		var Pillbox = function( element, options ) {
+			this.$element = $( element );
+			this.$moreCount = this.$element.find( '.pillbox-more-count' );
+			this.$pillGroup = this.$element.find( '.pill-group' );
+			this.$addItem = this.$element.find( '.pillbox-add-item' );
+			this.$addItemWrap = this.$addItem.parent();
+			this.$suggest = this.$element.find( '.suggest' );
+			this.$pillHTML = '<li class="btn btn-default pill">' +
+				'	<span></span>' +
+				'	<span class="glyphicon glyphicon-close">' +
+				'		<span class="sr-only">Remove</span>' +
+				'	</span>' +
+				'</li>';
+
+			this.options = $.extend( {}, $.fn.pillbox.defaults, options );
+
+			if ( this.options.readonly === -1 ) {
+				if ( this.$element.attr( 'data-readonly' ) !== undefined ) {
+					this.readonly( true );
+				}
+			} else if ( this.options.readonly ) {
+				this.readonly( true );
+			}
+
+			// EVENTS
+			this.acceptKeyCodes = this._generateObject( this.options.acceptKeyCodes );
+			// Creatie an object out of the key code array, so we dont have to loop through it on every key stroke
+
+			this.$element.on( 'click.fu.pillbox', '.pill-group > .pill', $.proxy( this.itemClicked, this ) );
+			this.$element.on( 'click.fu.pillbox', $.proxy( this.inputFocus, this ) );
+			this.$element.on( 'keydown.fu.pillbox', '.pillbox-add-item', $.proxy( this.inputEvent, this ) );
+			if ( this.options.onKeyDown ) {
+				this.$element.on( 'mousedown.fu.pillbox', '.suggest > li', $.proxy( this.suggestionClick, this ) );
+			}
+			if ( this.options.edit ) {
+				this.$element.addClass( 'pills-editable' );
+				this.$element.on( 'blur.fu.pillbox', '.pillbox-add-item', $.proxy( this.cancelEdit, this ) );
+			}
+		};
+
+		Pillbox.prototype = {
+			constructor: Pillbox,
+
+			destroy: function() {
+				this.$element.remove();
+				// any external bindings
+				// [none]
+				// empty elements to return to original markup
+				// [none]
+				// returns string of markup
+				return this.$element[ 0 ].outerHTML;
+			},
+
+			items: function() {
+				var self = this;
+
+				return this.$pillGroup.children( '.pill' ).map( function() {
+					return self.getItemData( $( this ) );
+				} ).get();
+			},
+
+			itemClicked: function( e ) {
+				var self = this;
+				var $target = $( e.target );
+				var $item;
+
+				e.preventDefault();
+				e.stopPropagation();
+				this._closeSuggestions();
+
+				if ( !$target.hasClass( 'pill' ) ) {
+					$item = $target.parent();
+					if ( this.$element.attr( 'data-readonly' ) === undefined ) {
+						if ( $target.hasClass( 'glyphicon-close' ) ) {
+							if ( this.options.onRemove ) {
+								this.options.onRemove( this.getItemData( $item, {
+									el: $item
+								} ), $.proxy( this._removeElement, this ) );
+							} else {
+								this._removeElement( this.getItemData( $item, {
+									el: $item
+								} ) );
+							}
+							return false;
+						} else if ( this.options.edit ) {
+							if ( $item.find( '.pillbox-list-edit' ).length ) {
+								return false;
+							}
+							this.openEdit( $item );
+						}
+					}
+				} else {
+					$item = $target;
+				}
+
+				this.$element.trigger( 'clicked.fu.pillbox', this.getItemData( $item ) );
+			},
+
+			readonly: function( enable ) {
+				if ( enable ) {
+					this.$element.attr( 'data-readonly', 'readonly' );
+				} else {
+					this.$element.removeAttr( 'data-readonly' );
+				}
+				if ( this.options.truncate ) {
+					this.truncate( enable );
+				}
+			},
+
+			suggestionClick: function( e ) {
+				var $item = $( e.currentTarget );
+
+				e.preventDefault();
+				this.$addItem.val( '' );
+
+				this.addItems( {
+					text: $item.html(),
+					value: $item.data( 'value' )
+				}, true );
+
+				// needs to be after addItems for IE
+				this._closeSuggestions();
+			},
+
+			itemCount: function() {
+				return this.$pillGroup.children( '.pill' ).length;
+			},
+
+			// First parameter is 1 based index (optional, if index is not passed all new items will be appended)
+			// Second parameter can be array of objects [{ ... }, { ... }] or you can pass n additional objects as args
+			// object structure is as follows (index and value are optional): { text: '', value: '' }
+			addItems: function() {
+				var self = this;
+				var items, index, isInternal;
+
+				if ( isFinite( String( arguments[ 0 ] ) ) && !( arguments[ 0 ] instanceof Array ) ) {
+					items = [].slice.call( arguments ).slice( 1 );
+					index = arguments[ 0 ];
+				} else {
+					items = [].slice.call( arguments ).slice( 0 );
+					isInternal = items[ 1 ] && !items[ 1 ].text;
+				}
+
+				//Accounting for array parameter
+				if ( items[ 0 ] instanceof Array ) {
+					items = items[ 0 ];
+				}
+
+				if ( items.length ) {
+					$.each( items, function( i, value ) {
+						var data = {
+							text: value.text,
+							value: ( value.value ? value.value : value.text ),
+							el: self.$pillHTML
+						};
+
+						items[ i ] = data;
+					} );
+
+					if ( this.options.edit && this.currentEdit ) {
+						items[ 0 ].el = this.currentEdit.wrap( '<div></div>' ).parent().html();
+					}
+
+					if ( isInternal ) {
+						items.pop( 1 );
+					}
+
+					if ( self.options.onAdd && isInternal ) {
+
+						if ( this.options.edit && this.currentEdit ) {
+							self.options.onAdd( items[ 0 ], $.proxy( self.saveEdit, this ) );
+						} else {
+							self.options.onAdd( items[ 0 ], $.proxy( self.placeItems, this, true ) );
+						}
+					} else {
+						if ( this.options.edit && this.currentEdit ) {
+							self.saveEdit( items );
+						} else {
+							if ( index ) {
+								self.placeItems( index, items );
+							} else {
+								self.placeItems( items, isInternal );
+							}
+						}
+					}
+				}
+
+			},
+
+			//First parameter is the index (1 based) to start removing items
+			//Second parameter is the number of items to be removed
+			removeItems: function( index, howMany ) {
+				var self = this;
+				var count;
+				var $currentItem;
+
+				if ( !index ) {
+					this.$pillGroup.find( '.pill' ).remove();
+					this._removePillTrigger( {
+						method: 'removeAll'
+					} );
+				} else {
+					howMany = howMany ? howMany : 1;
+
+					for ( count = 0; count < howMany; count++ ) {
+						$currentItem = self.$pillGroup.find( '> .pill:nth-child(' + index + ')' );
+
+						if ( $currentItem ) {
+							$currentItem.remove();
+						} else {
+							break;
+						}
+					}
+				}
+			},
+
+			//First parameter is index (optional)
+			//Second parameter is new arguments
+			placeItems: function() {
+				var newHtml = '';
+				var items;
+				var index;
+				var $neighbor;
+				var isInternal;
+
+				if ( isFinite( String( arguments[ 0 ] ) ) && !( arguments[ 0 ] instanceof Array ) ) {
+					items = [].slice.call( arguments ).slice( 1 );
+					index = arguments[ 0 ];
+				} else {
+					items = [].slice.call( arguments ).slice( 0 );
+					isInternal = items[ 1 ] && !items[ 1 ].text;
+				}
+
+				if ( items[ 0 ] instanceof Array ) {
+					items = items[ 0 ];
+				}
+
+				if ( items.length ) {
+					$.each( items, function( i, item ) {
+						var $item = $( item.el );
+						var $neighbor;
+
+						$item.attr( 'data-value', item.value );
+						$item.find( 'span:first' ).html( item.text );
+
+						newHtml += $item.wrap( '<div></div>' ).parent().html();
+					} );
+
+					if ( this.$pillGroup.children( '.pill' ).length > 0 ) {
+						if ( index ) {
+							$neighbor = this.$pillGroup.find( '.pill:nth-child(' + index + ')' );
+
+							if ( $neighbor.length ) {
+								$neighbor.before( newHtml );
+							} else {
+								this.$pillGroup.children( '.pill:last' ).after( newHtml );
+							}
+						} else {
+							this.$pillGroup.children( '.pill:last' ).after( newHtml );
+						}
+					} else {
+						this.$pillGroup.prepend( newHtml );
+					}
+
+					if ( isInternal ) {
+						this.$element.trigger( 'added.fu.pillbox', {
+							text: items[ 0 ].text,
+							value: items[ 0 ].value
+						} );
+					}
+				}
+			},
+
+			inputEvent: function( e ) {
+				var self = this;
+				var text = this.$addItem.val();
+				var value;
+				var $lastItem;
+				var $selection;
+
+				if ( this.acceptKeyCodes[ e.keyCode ] ) {
+
+					if ( this.options.onKeyDown && this._isSuggestionsOpen() ) {
+						$selection = this.$suggest.find( '.pillbox-suggest-sel' );
+
+						if ( $selection.length ) {
+							text = $selection.html();
+							value = $selection.data( 'value' );
+						}
+					}
+
+					if ( text.length ) {
+						this._closeSuggestions();
+						this.$addItem.hide();
+
+						this.addItems( {
+							text: text,
+							value: value
+						}, true );
+
+						setTimeout( function() {
+							self.$addItem.show().val( '' ).attr( {
+								size: 10
+							} );
+						}, 0 );
+					}
+
+					e.preventDefault();
+					return true;
+				} else if ( e.keyCode === 8 || e.keyCode === 46 ) {
+					// backspace: 8
+					// delete: 46
+
+					if ( !text.length ) {
+						e.preventDefault();
+
+						if ( this.options.edit && this.currentEdit ) {
+							this.cancelEdit();
+							return true;
+						}
+
+						this._closeSuggestions();
+						$lastItem = this.$pillGroup.children( '.pill:last' );
+
+						if ( $lastItem.hasClass( 'pillbox-highlight' ) ) {
+							this._removeElement( this.getItemData( $lastItem, {
+								el: $lastItem
+							} ) );
+						} else {
+							$lastItem.addClass( 'pillbox-highlight' );
+						}
+
+						return true;
+					}
+				} else if ( text.length > 10 ) {
+					if ( this.$addItem.width() < ( this.$pillGroup.width() - 6 ) ) {
+						this.$addItem.attr( {
+							size: text.length + 3
+						} );
+					}
+				}
+
+				this.$pillGroup.find( '.pill' ).removeClass( 'pillbox-highlight' );
+
+				if ( this.options.onKeyDown ) {
+					if ( e.keyCode === 9 || e.keyCode === 38 || e.keyCode === 40 ) {
+						// tab: 9
+						// up arrow: 38
+						// down arrow: 40
+
+						if ( this._isSuggestionsOpen() ) {
+							this._keySuggestions( e );
+						}
+						return true;
+					}
+
+					//only allowing most recent event callback to register
+					this.callbackId = e.timeStamp;
+					this.options.onKeyDown( {
+						event: e,
+						value: text
+					}, function( data ) {
+						self._openSuggestions( e, data );
+					} );
+				}
+			},
+
+			openEdit: function( el ) {
+				var index = el.index() + 1;
+				var $addItemWrap = this.$addItemWrap.detach().hide();
+
+				this.$pillGroup.find( '.pill:nth-child(' + index + ')' ).before( $addItemWrap );
+				this.currentEdit = el.detach();
+
+				$addItemWrap.addClass( 'editing' );
+				this.$addItem.val( el.find( 'span:first' ).html() );
+				$addItemWrap.show();
+				this.$addItem.focus().select();
+			},
+
+			cancelEdit: function( e ) {
+				var $addItemWrap;
+				if ( !this.currentEdit ) {
+					return false;
+				}
+
+				this._closeSuggestions();
+				if ( e ) {
+					this.$addItemWrap.before( this.currentEdit );
+				}
+				this.currentEdit = false;
+
+				$addItemWrap = this.$addItemWrap.detach();
+				$addItemWrap.removeClass( 'editing' );
+				this.$addItem.val( '' );
+				this.$pillGroup.append( $addItemWrap );
+			},
+
+			//Must match syntax of placeItem so addItem callback is called when an item is edited
+			//expecting to receive an array back from the callback containing edited items
+			saveEdit: function() {
+				var item = arguments[ 0 ][ 0 ];
+
+				this.currentEdit = $( item.el );
+				this.currentEdit.data( 'value', item.value );
+				this.currentEdit.find( 'span:first' ).html( item.text );
+
+				this.$addItemWrap.hide();
+				this.$addItemWrap.before( this.currentEdit );
+				this.currentEdit = false;
+
+				this.$addItem.val( '' );
+				this.$addItemWrap.removeClass( 'editing' );
+				this.$pillGroup.append( this.$addItemWrap.detach().show() );
+				this.$element.trigger( 'edited.fu.pillbox', {
+					value: item.value,
+					text: item.text
+				} );
+			},
+
+			removeBySelector: function() {
+				var selectors = [].slice.call( arguments ).slice( 0 );
+				var self = this;
+
+				$.each( selectors, function( i, sel ) {
+					self.$pillGroup.find( sel ).remove();
+				} );
+
+				this._removePillTrigger( {
+					method: 'removeBySelector',
+					removedSelectors: selectors
+				} );
+			},
+
+			removeByValue: function() {
+				var values = [].slice.call( arguments ).slice( 0 );
+				var self = this;
+
+				$.each( values, function( i, val ) {
+					self.$pillGroup.find( '> .pill[data-value="' + val + '"]' ).remove();
+				} );
+
+				this._removePillTrigger( {
+					method: 'removeByValue',
+					removedValues: values
+				} );
+			},
+
+			removeByText: function() {
+				var text = [].slice.call( arguments ).slice( 0 );
+				var self = this;
+
+				$.each( text, function( i, text ) {
+					self.$pillGroup.find( '> .pill:contains("' + text + '")' ).remove();
+				} );
+
+				this._removePillTrigger( {
+					method: 'removeByText',
+					removedText: text
+				} );
+			},
+
+			truncate: function( enable ) {
+				var self = this;
+				var available, full, i, pills, used;
+
+				this.$element.removeClass( 'truncate' );
+				this.$addItemWrap.removeClass( 'truncated' );
+				this.$pillGroup.find( '.pill' ).removeClass( 'truncated' );
+
+				if ( enable ) {
+					this.$element.addClass( 'truncate' );
+
+					available = this.$element.width();
+					full = false;
+					i = 0;
+					pills = this.$pillGroup.find( '.pill' ).length;
+					used = 0;
+
+					this.$pillGroup.find( '.pill' ).each( function() {
+						var pill = $( this );
+						if ( !full ) {
+							i++;
+							self.$moreCount.text( pills - i );
+							if ( ( used + pill.outerWidth( true ) + self.$addItemWrap.outerWidth( true ) ) <= available ) {
+								used += pill.outerWidth( true );
+							} else {
+								self.$moreCount.text( ( pills - i ) + 1 );
+								pill.addClass( 'truncated' );
+								full = true;
+							}
+						} else {
+							pill.addClass( 'truncated' );
+						}
+					} );
+					if ( i === pills ) {
+						this.$addItemWrap.addClass( 'truncated' );
+					}
+				}
+			},
+
+			inputFocus: function( e ) {
+				this.$element.find( '.pillbox-add-item' ).focus();
+			},
+
+			getItemData: function( el, data ) {
+				return $.extend( {
+					text: el.find( 'span:first' ).html()
+				}, el.data(), data );
+			},
+
+			_removeElement: function( data ) {
+				data.el.remove();
+				delete data.el;
+				this.$element.trigger( 'removed.fu.pillbox', data );
+			},
+
+			_removePillTrigger: function( removedBy ) {
+				this.$element.trigger( 'removed.fu.pillbox', removedBy );
+			},
+
+			_generateObject: function( data ) {
+				var obj = {};
+
+				$.each( data, function( index, value ) {
+					obj[ value ] = true;
+				} );
+
+				return obj;
+			},
+
+			_openSuggestions: function( e, data ) {
+				var markup = '';
+
+				if ( this.callbackId !== e.timeStamp ) {
+					return false;
+				}
+
+				if ( data.data && data.data.length ) {
+					$.each( data.data, function( index, value ) {
+						var val = value.value ? value.value : value.text;
+						markup += '<li data-value="' + val + '">' + value.text + '</li>';
+					} );
+
+					// suggestion dropdown
+
+					this.$suggest.html( '' ).append( markup );
+					$( document.body ).trigger( 'suggested.fu.pillbox', this.$suggest );
+				}
+			},
+
+			_closeSuggestions: function() {
+				this.$suggest.html( '' ).parent().removeClass( 'open' );
+			},
+
+			_isSuggestionsOpen: function() {
+				return this.$suggest.parent().hasClass( 'open' );
+			},
+
+			_keySuggestions: function( e ) {
+				var $first = this.$suggest.find( 'li.pillbox-suggest-sel' );
+				var dir = e.keyCode === 38; // up arrow
+				var $next, val;
+
+				e.preventDefault();
+
+				if ( !$first.length ) {
+					$first = this.$suggest.find( 'li:first' );
+					$first.addClass( 'pillbox-suggest-sel' );
+				} else {
+					$next = dir ? $first.prev() : $first.next();
+
+					if ( !$next.length ) {
+						$next = dir ? this.$suggest.find( 'li:last' ) : this.$suggest.find( 'li:first' );
+					}
+
+					if ( $next ) {
+						$next.addClass( 'pillbox-suggest-sel' );
+						$first.removeClass( 'pillbox-suggest-sel' );
+					}
+				}
+			}
+		};
+
+		// PILLBOX PLUGIN DEFINITION
+
+		$.fn.pillbox = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.pillbox' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.pillbox', ( data = new Pillbox( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.pillbox.defaults = {
+			onAdd: undefined,
+			onRemove: undefined,
+			onKeyDown: undefined,
+			edit: false,
+			readonly: -1, //can be true or false. -1 means it will check for data-readonly="readonly"
+			truncate: false,
+			acceptKeyCodes: [
+				13, //Enter
+				188 //Comma
+			]
+
+			//example on remove
+			/*onRemove: function(data,callback){
+			console.log('onRemove');
+			callback(data);
+		}*/
+
+			//example on key down
+			/*onKeyDown: function(event, data, callback ){
+			callback({data:[
+				{text: Math.random(),value:'sdfsdfsdf'},
+				{text: Math.random(),value:'sdfsdfsdf'}
+			]});
+		}
+		*/
+			//example onAdd
+			/*onAdd: function( data, callback ){
+			console.log(data, callback);
+			callback(data);
+		}*/
+		};
+
+		$.fn.pillbox.Constructor = Pillbox;
+
+		$.fn.pillbox.noConflict = function() {
+			$.fn.pillbox = old;
+			return this;
+		};
+
+
+		// DATA-API
+
+		$( document ).on( 'mousedown.fu.pillbox.data-api', '[data-initialize=pillbox]', function( e ) {
+			var $control = $( e.target ).closest( '.pillbox' );
+			if ( !$control.data( 'fu.pillbox' ) ) {
+				$control.pillbox( $control.data() );
+			}
+		} );
+
+		// Must be domReady for AMD compatibility
+		$( function() {
+			$( '[data-initialize=pillbox]' ).each( function() {
+				var $this = $( this );
+				if ( $this.data( 'fu.pillbox' ) ) return;
+				$this.pillbox( $this.data() );
+			} );
+		} );
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Repeater
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.repeater;
+
+		// REPEATER CONSTRUCTOR AND PROTOTYPE
+
+		var Repeater = function( element, options ) {
+			var self = this;
+			var currentView;
+
+			this.$element = $( element );
+
+			this.$canvas = this.$element.find( '.repeater-canvas' );
+			this.$count = this.$element.find( '.repeater-count' );
+			this.$end = this.$element.find( '.repeater-end' );
+			this.$filters = this.$element.find( '.repeater-filters' );
+			this.$loader = this.$element.find( '.repeater-loader' );
+			this.$pageSize = this.$element.find( '.repeater-itemization .selectlist' );
+			this.$nextBtn = this.$element.find( '.repeater-next' );
+			this.$pages = this.$element.find( '.repeater-pages' );
+			this.$prevBtn = this.$element.find( '.repeater-prev' );
+			this.$primaryPaging = this.$element.find( '.repeater-primaryPaging' );
+			this.$search = this.$element.find( '.repeater-search' ).find( '.search' );
+			this.$secondaryPaging = this.$element.find( '.repeater-secondaryPaging' );
+			this.$start = this.$element.find( '.repeater-start' );
+			this.$viewport = this.$element.find( '.repeater-viewport' );
+			this.$views = this.$element.find( '.repeater-views' );
+
+			this.eventStamp = new Date().getTime() + ( Math.floor( Math.random() * 100 ) + 1 );
+			this.currentPage = 0;
+			this.currentView = null;
+			this.infiniteScrollingCallback = function() {};
+			this.infiniteScrollingCont = null;
+			this.infiniteScrollingEnabled = false;
+			this.infiniteScrollingEnd = null;
+			this.infiniteScrollingOptions = {};
+			this.lastPageInput = 0;
+			this.options = $.extend( {}, $.fn.repeater.defaults, options );
+			this.pageIncrement = 0; // store direction navigated
+			this.resizeTimeout = {};
+			this.staticHeight = ( this.options.staticHeight === -1 ) ? this.$element.attr( 'data-staticheight' ) : this.options.staticHeight;
+
+			this.$filters.selectlist();
+			this.$pageSize.selectlist();
+			this.$primaryPaging.find( '.combobox' ).combobox();
+			this.$search.search();
+
+			this.$filters.on( 'changed.fu.selectlist', $.proxy( this.render, this, {
+				clearInfinite: true,
+				pageIncrement: null
+			} ) );
+			this.$nextBtn.on( 'click.fu.repeater', $.proxy( this.next, this ) );
+			this.$pageSize.on( 'changed.fu.selectlist', $.proxy( this.render, this, {
+				pageIncrement: null
+			} ) );
+			this.$prevBtn.on( 'click.fu.repeater', $.proxy( this.previous, this ) );
+			this.$primaryPaging.find( '.combobox' ).on( 'changed.fu.combobox', function( evt, data ) {
+				self.pageInputChange( data.text );
+			} );
+			this.$search.on( 'searched.fu.search cleared.fu.search', $.proxy( this.render, this, {
+				clearInfinite: true,
+				pageIncrement: null
+			} ) );
+			this.$secondaryPaging.on( 'blur.fu.repeater', function() {
+				self.pageInputChange( self.$secondaryPaging.val() );
+			} );
+			this.$secondaryPaging.on( 'change.fu.repeater', function() {
+				self.pageInputChange( self.$secondaryPaging.val() );
+			} );
+			this.$views.find( 'input' ).on( 'change.fu.repeater', $.proxy( this.viewChanged, this ) );
+
+			// ID needed since event is bound to instance
+			$( window ).on( 'resize.fu.repeater.' + this.eventStamp, function( event ) {
+				clearTimeout( self.resizeTimeout );
+				self.resizeTimeout = setTimeout( function() {
+					self.resize();
+					self.$element.trigger( 'resized.fu.repeater' );
+				}, 75 );
+			} );
+
+			this.$loader.loader();
+			this.$loader.loader( 'pause' );
+			currentView = ( this.options.defaultView !== -1 ) ? this.options.defaultView : this.$views.find( 'label.active input' ).val();
+
+			this.initViews( function() {
+				self.resize();
+				self.$element.trigger( 'resized.fu.repeater' );
+				self.render( {
+					changeView: currentView
+				} );
+			} );
+		};
+
+		Repeater.prototype = {
+			constructor: Repeater,
+
+			clear: function( options ) {
+				var scan = function( cont ) {
+					var keep = [];
+					cont.children().each( function() {
+						var item = $( this );
+						var pres = item.attr( 'data-preserve' );
+						if ( pres === 'deep' ) {
+							item.detach();
+							keep.push( item );
+						} else if ( pres === 'shallow' ) {
+							scan( item );
+							item.detach();
+							keep.push( item );
+						}
+					} );
+					cont.empty();
+					cont.append( keep );
+				};
+
+				options = options || {};
+
+				if ( !options.preserve ) {
+					this.$canvas.empty();
+				} else if ( !this.infiniteScrollingEnabled || options.clearInfinite ) {
+					scan( this.$canvas );
+				}
+			},
+
+			destroy: function() {
+				var markup;
+				// set input value attrbute in markup
+				this.$element.find( 'input' ).each( function() {
+					$( this ).attr( 'value', $( this ).val() );
+				} );
+
+				// empty elements to return to original markup
+				this.$canvas.empty();
+				markup = this.$element[ 0 ].outerHTML;
+
+				// destroy components and remove leftover
+				this.$element.find( '.combobox' ).combobox( 'destroy' );
+				this.$element.find( '.selectlist' ).selectlist( 'destroy' );
+				this.$element.find( '.search' ).search( 'destroy' );
+				if ( this.infiniteScrollingEnabled ) {
+					$( this.infiniteScrollingCont ).infinitescroll( 'destroy' );
+				}
+				this.$element.remove();
+
+				// any external events
+				$( window ).off( 'resize.fu.repeater.' + this.eventStamp );
+
+				return markup;
+			},
+
+			getDataOptions: function( options, callback ) {
+				var opts = {};
+				var val, viewDataOpts;
+
+				options = options || {};
+
+				opts.filter = this.$filters.selectlist( 'selectedItem' );
+				opts.view = this.currentView;
+
+				if ( !this.infiniteScrollingEnabled ) {
+					opts.pageSize = parseInt( this.$pageSize.selectlist( 'selectedItem' ).value, 10 );
+				}
+				if ( options.pageIncrement !== undefined ) {
+					if ( options.pageIncrement === null ) {
+						this.currentPage = 0;
+					} else {
+						this.currentPage += options.pageIncrement;
+					}
+				}
+				opts.pageIndex = this.currentPage;
+
+				val = this.$search.find( 'input' ).val();
+				if ( val !== '' ) {
+					opts.search = val;
+				}
+
+				viewDataOpts = $.fn.repeater.views[ this.currentView ] || {};
+				viewDataOpts = viewDataOpts.dataOptions;
+				if ( viewDataOpts ) {
+					viewDataOpts.call( this, opts, function( obj ) {
+						callback( obj );
+					} );
+				} else {
+					callback( opts );
+				}
+			},
+
+			infiniteScrolling: function( enable, options ) {
+				var itemization = this.$element.find( '.repeater-itemization' );
+				var pagination = this.$element.find( '.repeater-pagination' );
+				var cont, data;
+
+				options = options || {};
+
+				if ( enable ) {
+					this.infiniteScrollingEnabled = true;
+					this.infiniteScrollingEnd = options.end;
+					delete options.dataSource;
+					delete options.end;
+					this.infiniteScrollingOptions = options;
+					itemization.hide();
+					pagination.hide();
+				} else {
+					cont = this.infiniteScrollingCont;
+					data = cont.data();
+					delete data.infinitescroll;
+					cont.off( 'scroll' );
+					cont.removeClass( 'infinitescroll' );
+
+					this.infiniteScrollingCont = null;
+					this.infiniteScrollingEnabled = false;
+					this.infiniteScrollingEnd = null;
+					this.infiniteScrollingOptions = {};
+					itemization.show();
+					pagination.show();
+				}
+			},
+
+			infiniteScrollPaging: function( data, options ) {
+				var end = ( this.infiniteScrollingEnd !== true ) ? this.infiniteScrollingEnd : undefined;
+				var page = data.page;
+				var pages = data.pages;
+
+				this.currentPage = ( page !== undefined ) ? page : NaN;
+
+				if ( ( this.currentPage + 1 ) >= pages ) {
+					this.infiniteScrollingCont.infinitescroll( 'end', end );
+				}
+			},
+
+			initInfiniteScrolling: function() {
+				var cont = this.$canvas.find( '[data-infinite="true"]:first' );
+				var opts, self;
+
+				cont = ( cont.length < 1 ) ? this.$canvas : cont;
+				if ( cont.data( 'fu.infinitescroll' ) ) {
+					cont.infinitescroll( 'enable' );
+				} else {
+					self = this;
+					opts = $.extend( {}, this.infiniteScrollingOptions );
+					opts.dataSource = function( helpers, callback ) {
+						self.infiniteScrollingCallback = callback;
+						self.render( {
+							pageIncrement: 1
+						} );
+					};
+					cont.infinitescroll( opts );
+					this.infiniteScrollingCont = cont;
+				}
+			},
+
+			initViews: function( callback ) {
+				var views = [];
+				var i, viewsLength;
+
+				var init = function( index ) {
+					var next = function() {
+						index++;
+						if ( index < viewsLength ) {
+							init( index );
+						} else {
+							callback();
+						}
+					};
+
+					if ( views[ index ].initialize ) {
+						views[ index ].initialize.call( this, {}, function() {
+							next();
+						} );
+					} else {
+						next();
+					}
+				};
+
+				for ( i in $.fn.repeater.views ) {
+					views.push( $.fn.repeater.views[ i ] );
+				}
+				viewsLength = views.length;
+				if ( viewsLength > 0 ) {
+					init( 0 );
+				} else {
+					callback();
+				}
+			},
+
+			itemization: function( data ) {
+				this.$count.html( data.count || '' );
+				this.$end.html( data.end || '' );
+				this.$start.html( data.start || '' );
+			},
+
+			next: function() {
+				var d = 'disabled';
+				this.$nextBtn.attr( d, d );
+				this.$prevBtn.attr( d, d );
+				this.pageIncrement = 1;
+				this.render( {
+					pageIncrement: this.pageIncrement
+				} );
+			},
+
+			pageInputChange: function( val ) {
+				var pageInc;
+				if ( val !== this.lastPageInput ) {
+					this.lastPageInput = val;
+					val = parseInt( val, 10 ) - 1;
+					pageInc = val - this.currentPage;
+					this.render( {
+						pageIncrement: pageInc
+					} );
+				}
+			},
+
+			pagination: function( data ) {
+				var act = 'active';
+				var dsbl = 'disabled';
+				var page = data.page;
+				var pages = data.pages;
+				var dropMenu, i, l;
+
+				this.currentPage = ( page !== undefined ) ? page : NaN;
+
+				this.$primaryPaging.removeClass( act );
+				this.$secondaryPaging.removeClass( act );
+
+				if ( pages <= this.options.dropPagingCap ) {
+					this.$primaryPaging.addClass( act );
+					dropMenu = this.$primaryPaging.find( '.dropdown-menu' );
+					dropMenu.empty();
+					for ( i = 0; i < pages; i++ ) {
+						l = i + 1;
+						dropMenu.append( '<li data-value="' + l + '"><a href="#">' + l + '</a></li>' );
+					}
+					this.$primaryPaging.find( 'input.form-control' ).val( this.currentPage + 1 );
+				} else {
+					this.$secondaryPaging.addClass( act );
+					this.$secondaryPaging.val( this.currentPage + 1 );
+				}
+				this.lastPageInput = this.currentPage + 1 + '';
+
+				this.$pages.html( pages );
+
+				// this is not the last page
+				if ( ( this.currentPage + 1 ) < pages ) {
+					this.$nextBtn.removeAttr( dsbl );
+				} else {
+					this.$nextBtn.attr( dsbl, dsbl );
+				}
+				// this is not the first page
+				if ( ( this.currentPage - 1 ) >= 0 ) {
+					this.$prevBtn.removeAttr( dsbl );
+				} else {
+					this.$prevBtn.attr( dsbl, dsbl );
+				}
+
+				// return focus to next/previous buttons after navigating
+				if ( this.pageIncrement !== 0 ) {
+					if ( this.pageIncrement > 0 ) {
+						if ( this.$nextBtn.is( ':disabled' ) ) {
+							// if you can't focus, go the other way
+							this.$prevBtn.focus();
+						} else {
+							this.$nextBtn.focus();
+						}
+					} else {
+						if ( this.$prevBtn.is( ':disabled' ) ) {
+							// if you can't focus, go the other way
+							this.$nextBtn.focus();
+						} else {
+							this.$prevBtn.focus();
+						}
+					}
+				}
+			},
+
+			previous: function() {
+				var d = 'disabled';
+				this.$nextBtn.attr( d, d );
+				this.$prevBtn.attr( d, d );
+				this.pageIncrement = -1;
+				this.render( {
+					pageIncrement: this.pageIncrement
+				} );
+			},
+
+			render: function( options ) {
+				var self = this;
+				var viewChanged = false;
+				var viewObj = $.fn.repeater.views[ self.currentView ] || {};
+				var prevView;
+
+				var start = function() {
+					options.preserve = ( options.preserve !== undefined ) ? options.preserve : !viewChanged;
+					self.clear( options );
+					if ( !self.infiniteScrollingEnabled || ( self.infiniteScrollingEnabled && viewChanged ) ) {
+						self.$loader.show().loader( 'play' );
+					}
+					self.getDataOptions( options, function( opts ) {
+						self.options.dataSource( opts, function( data ) {
+							var renderer = viewObj.renderer;
+							if ( self.infiniteScrollingEnabled ) {
+								self.infiniteScrollingCallback( {} );
+							} else {
+								self.itemization( data );
+								self.pagination( data );
+							}
+							if ( renderer ) {
+								self.runRenderer( self.$canvas, renderer, data, function() {
+									if ( self.infiniteScrollingEnabled ) {
+										if ( viewChanged || options.clearInfinite ) {
+											self.initInfiniteScrolling();
+										}
+										self.infiniteScrollPaging( data, options );
+									}
+									self.$loader.hide().loader( 'pause' );
+									self.$element.trigger( 'loaded.fu.repeater' );
+								} );
+							}
+						} );
+					} );
+				};
+
+				options = options || {};
+
+				if ( options.changeView && this.currentView !== options.changeView ) {
+					prevView = this.currentView;
+					this.currentView = options.changeView;
+					this.$element.attr( 'data-currentview', this.currentView );
+					viewChanged = true;
+					if ( this.infiniteScrollingEnabled ) {
+						self.infiniteScrolling( false );
+					}
+					viewObj = $.fn.repeater.views[ self.currentView ] || {};
+					if ( viewObj.selected ) {
+						viewObj.selected.call( this, {
+							prevView: prevView
+						}, function() {
+							start();
+						} );
+					} else {
+						start();
+					}
+				} else {
+					start();
+				}
+			},
+
+			resize: function() {
+				var staticHeight = this.staticHeight;
+				var viewObj = $.fn.repeater.views[ this.currentView ] || {};
+				var height, viewportMargins;
+
+				if ( staticHeight !== undefined ) {
+					this.$canvas.addClass( 'scrolling' );
+					viewportMargins = {
+						bottom: this.$viewport.css( 'margin-bottom' ),
+						top: this.$viewport.css( 'margin-top' )
+					};
+					height = ( ( staticHeight === 'true' || staticHeight === true ) ? this.$element.height() : parseInt( staticHeight, 10 ) ) -
+						this.$element.find( '.repeater-header' ).outerHeight() -
+						this.$element.find( '.repeater-footer' ).outerHeight() -
+						( ( viewportMargins.bottom === 'auto' ) ? 0 : parseInt( viewportMargins.bottom, 10 ) ) -
+						( ( viewportMargins.top === 'auto' ) ? 0 : parseInt( viewportMargins.top, 10 ) );
+					this.$viewport.outerHeight( height );
+				} else {
+					this.$canvas.removeClass( 'scrolling' );
+				}
+
+				if ( viewObj.resize ) {
+					viewObj.resize.call( this, {
+						height: this.$element.outerHeight(),
+						width: this.$element.outerWidth()
+					}, function() {} );
+				}
+			},
+
+			runRenderer: function( container, renderer, data, callback ) {
+				var self = this;
+				var skipNested = false;
+				var repeat, subset, i, l;
+
+				var loopSubset = function( index ) {
+					var args = {
+						container: container,
+						data: data
+					};
+					if ( renderer.repeat ) {
+						args.subset = subset;
+						args.index = index;
+					}
+					if ( subset.length < 1 ) {
+						callback();
+					} else {
+						start( args, function() {
+							index++;
+							if ( index < subset.length ) {
+								loopSubset( index );
+							} else {
+								callback();
+							}
+						} );
+					}
+				};
+
+				var start = function( args, cb ) {
+					var item = '';
+
+					var callbacks = {
+						before: function( resp ) {
+							if ( resp && resp.skipNested === true ) {
+								skipNested = true;
+							}
+							proceed( 'render', args );
+						},
+						render: function( resp ) {
+							var action = ( resp && resp.action ) ? resp.action : 'append';
+							if ( resp && resp.item !== undefined ) {
+								item = $( resp.item );
+								if ( item.length < 1 ) {
+									item = resp.item;
+								}
+								if ( action !== 'none' ) {
+									container[ action ]( item );
+								}
+								args.item = item;
+							}
+							if ( resp && resp.skipNested === true ) {
+								skipNested = true;
+							}
+							proceed( 'after', args );
+						},
+						after: function( resp ) {
+							var cont;
+							var loopNested = function( cont, index ) {
+								self.runRenderer( cont, renderer.nested[ index ], data, function() {
+									index++;
+									if ( index < renderer.nested.length ) {
+										loopNested( cont, index );
+									} else {
+										proceed( 'complete', args );
+									}
+								} );
+							};
+
+							if ( resp && resp.skipNested === true ) {
+								skipNested = true;
+							}
+
+							if ( renderer.nested && !skipNested ) {
+								cont = $( item );
+								cont = ( cont.attr( 'data-container' ) === 'true' ) ? cont : cont.find( '[data-container="true"]:first' );
+								if ( cont.length < 1 ) {
+									cont = container;
+								}
+								loopNested( cont, 0 );
+							} else {
+								callbacks.complete( null );
+							}
+						},
+						complete: function( resp ) {
+							if ( cb ) {
+								cb();
+							}
+						}
+					};
+
+					var proceed = function( stage, argus ) {
+						argus = $.extend( {}, argus );
+						if ( renderer[ stage ] ) {
+							renderer[ stage ].call( self, argus, callbacks[ stage ] );
+						} else {
+							callbacks[ stage ]( null );
+						}
+					};
+
+					proceed( 'before', args );
+				};
+
+				if ( renderer.repeat ) {
+					repeat = renderer.repeat.split( '.' );
+					if ( repeat[ 0 ] === 'data' || repeat[ 0 ] === 'this' ) {
+						subset = ( repeat[ 0 ] === 'this' ) ? this : data;
+						repeat.shift();
+					} else {
+						repeat = [];
+						subset = [ '' ];
+					}
+
+					for ( i = 0, l = repeat.length; i < l; i++ ) {
+						subset = subset[ repeat[ i ] ];
+					}
+				} else {
+					subset = [ '' ];
+				}
+
+				loopSubset( 0 );
+			},
+
+			viewChanged: function( e ) {
+				var $selected = $( e.target );
+				this.render( {
+					changeView: $selected.val(),
+					pageIncrement: null
+				} );
+			}
+		};
+
+		// REPEATER PLUGIN DEFINITION
+
+		$.fn.repeater = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.repeater' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.repeater', ( data = new Repeater( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.repeater.defaults = {
+			dataSource: function( options, callback ) {},
+			defaultView: -1, //should be a string value. -1 means it will grab the active view from the view controls
+			dropPagingCap: 10,
+			staticHeight: -1 //normally true or false. -1 means it will look for data-staticheight on the element
+		};
+
+		//views object contains keyed list of view plugins, each an object with following optional parameters:
+		//{
+		//initialize: function(){},
+		//selected: function(){},
+		//renderer: {}
+		//}
+		//renderer object contains following optional parameters:
+		//{
+		//before: function(helpers){},
+		//after: function(helpers){},
+		//complete: function(helpers){},
+		//repeat: 'parameter.subparameter.etc',
+		//render: function(helpers){},
+		//nested: [ *array of renderer objects* ]
+		//}
+
+		//helpers object structure:
+		//{
+		//container: jQuery object,	(current renderer parent)
+		//data: {...}, (data returned from dataSource)
+		//index: int, (only there if repeat was set. current item index)
+		//item: str or jQuery object, (only there if rendered function returned item)
+		//subset: {}, (only there if repeat was set. subset of data being repeated on)
+		//}
+		$.fn.repeater.views = {};
+
+		$.fn.repeater.Constructor = Repeater;
+
+		$.fn.repeater.noConflict = function() {
+			$.fn.repeater = old;
+			return this;
+		};
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Repeater - List View Plugin
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		if ( $.fn.repeater ) {
+
+			$.fn.repeater.Constructor.prototype.clearSelectedItems = function() {
+				this.$canvas.find( '.repeater-list-check' ).remove();
+				this.$canvas.find( '.repeater-list-items tr.selected' ).removeClass( 'selected' );
+			};
+
+			$.fn.repeater.Constructor.prototype.getSelectedItems = function() {
+				var selected = [];
+				this.$canvas.find( '.repeater-list-items tr.selected' ).each( function() {
+					var $item = $( this );
+					selected.push( {
+						data: $item.data( 'item_data' ),
+						element: $item
+					} );
+				} );
+				return selected;
+			};
+
+			$.fn.repeater.Constructor.prototype.setSelectedItems = function( items, force ) {
+				var selectable = this.options.list_selectable;
+				var self = this;
+				var data, i, $item, l;
+
+				var eachFunc = function() {
+					$item = $( this );
+					data = $item.data( 'item_data' ) || {};
+					if ( data[ items[ i ].property ] === items[ i ].value ) {
+						selectItem( $item, items[ i ].selected );
+					}
+				};
+
+				var selectItem = function( $itm, select ) {
+					select = ( select !== undefined ) ? select : true;
+					if ( select ) {
+						if ( !force && selectable !== 'multi' ) {
+							self.clearSelectedItems();
+						}
+						if ( !$itm.hasClass( 'selected' ) ) {
+							$itm.addClass( 'selected' );
+							$itm.find( 'td:first' ).prepend( '<div class="repeater-list-check"><span class="glyphicon glyphicon-ok"></span></div>' );
+						}
+					} else {
+						$itm.find( '.repeater-list-check' ).remove();
+						$itm.removeClass( 'selected' );
+					}
+				};
+
+				if ( !$.isArray( items ) ) {
+					items = [ items ];
+				}
+				if ( force === true || selectable === 'multi' ) {
+					l = items.length;
+				} else if ( selectable ) {
+					l = ( items.length > 0 ) ? 1 : 0;
+				} else {
+					l = 0;
+				}
+				for ( i = 0; i < l; i++ ) {
+					if ( items[ i ].index !== undefined ) {
+						$item = this.$canvas.find( '.repeater-list-items tr:nth-child(' + ( items[ i ].index + 1 ) + ')' );
+						if ( $item.length > 0 ) {
+							selectItem( $item, items[ i ].selected );
+						}
+					} else if ( items[ i ].property !== undefined && items[ i ].value !== undefined ) {
+						//lint demanded this function not be within this loop
+						this.$canvas.find( '.repeater-list-items tr' ).each( eachFunc );
+					}
+				}
+			};
+
+			$.fn.repeater.defaults = $.extend( {}, $.fn.repeater.defaults, {
+				list_columnRendered: null,
+				list_columnSizing: true,
+				list_columnSyncing: true,
+				list_infiniteScroll: false,
+				list_noItemsHTML: '',
+				list_selectable: false,
+				list_sortClearing: false,
+				list_rowRendered: null
+			} );
+
+			$.fn.repeater.views.list = {
+				dataOptions: function( opts, callback ) {
+					if ( this.list_sortDirection ) {
+						opts.sortDirection = this.list_sortDirection;
+					}
+					if ( this.list_sortProperty ) {
+						opts.sortProperty = this.list_sortProperty;
+					}
+					callback( opts );
+				},
+				initialize: function( helpers, callback ) {
+					this.list_sortDirection = null;
+					this.list_sortProperty = null;
+					callback();
+				},
+				selected: function( helpers, callback ) {
+					var infScroll = this.options.list_infiniteScroll;
+					var opts;
+
+					this.list_firstRender = true;
+					this.$loader.addClass( 'noHeader' );
+
+					if ( infScroll ) {
+						opts = ( typeof infScroll === 'object' ) ? infScroll : {};
+						this.infiniteScrolling( true, opts );
+					}
+
+					callback( {} );
+				},
+				renderer: {
+					complete: function( helpers, callback ) {
+						columnSyncing.call( this, helpers, callback );
+					},
+					nested: [ {
+						complete: function( helpers, callback ) {
+							var auto = [];
+							var self = this;
+							var i, l, newWidth, taken;
+
+							if ( !this.options.list_columnSizing || this.list_columnsSame ) {
+								callback();
+							} else {
+								i = 0;
+								taken = 0;
+								helpers.item.find( 'td' ).each( function() {
+									var $col = $( this );
+									var isLast = ( $col.next( 'td' ).length === 0 ) ? true : false;
+									var width;
+									if ( self.list_columns[ i ].width !== undefined ) {
+										width = self.list_columns[ i ].width;
+										$col.outerWidth( width );
+										taken += $col.outerWidth();
+										if ( !isLast ) {
+											self.list_columns[ i ]._auto_width = width;
+										} else {
+											$col.outerWidth( '' );
+										}
+									} else {
+										auto.push( {
+											col: $col,
+											index: i,
+											last: isLast
+										} );
+									}
+									i++;
+								} );
+
+								l = auto.length;
+								if ( l > 0 ) {
+									newWidth = Math.floor( ( this.$canvas.width() - taken ) / l );
+									for ( i = 0; i < l; i++ ) {
+										if ( !auto[ i ].last ) {
+											auto[ i ].col.outerWidth( newWidth );
+											this.list_columns[ auto[ i ].index ]._auto_width = newWidth;
+										}
+									}
+								}
+								callback();
+							}
+						},
+						render: function( helpers, callback ) {
+							var differentColumns = function( oldCols, newCols ) {
+								var i, j, l;
+								if ( !oldCols ) {
+									return true;
+								}
+								if ( !newCols ) {
+									return false;
+								}
+								for ( i = 0, l = newCols.length; i < l; i++ ) {
+									if ( !oldCols[ i ] ) {
+										return true;
+									} else {
+										for ( j in newCols[ i ] ) {
+											if ( oldCols[ i ][ j ] !== newCols[ i ][ j ] ) {
+												return true;
+											}
+										}
+									}
+								}
+								return false;
+							};
+
+							if ( this.list_firstRender || differentColumns( this.list_columns, helpers.data.columns ) ) {
+								this.$element.find( '.repeater-list-header' ).remove();
+								this.list_columns = helpers.data.columns;
+								this.list_columnsSame = false;
+								this.list_firstRender = false;
+								this.$loader.removeClass( 'noHeader' );
+								callback( {
+									action: 'prepend',
+									item: '<table class="table repeater-list-header" data-preserve="deep" role="grid" aria-readonly="true"><tr data-container="true"></tr></table>'
+								} );
+							} else {
+								this.list_columnsSame = true;
+								callback( {
+									skipNested: true
+								} );
+							}
+						},
+						nested: [ {
+							render: function( helpers, callback ) {
+								var chev = 'glyphicon-chevron';
+								var chevDown = chev + '-down';
+								var chevUp = chev + '-up';
+								var index = helpers.index;
+								var self = this;
+								var subset = helpers.subset;
+								var cssClass, $item, sortable, $span;
+
+								cssClass = subset[ index ].cssClass;
+								$item = $( '<td><span class="glyphicon"></span></td>' );
+								$item.addClass( ( ( cssClass !== undefined ) ? cssClass : '' ) ).prepend( subset[ index ].label );
+								$span = $item.find( 'span.glyphicon:first' );
+
+								sortable = subset[ index ].sortable;
+								if ( sortable ) {
+									$item.addClass( 'sortable' );
+									$item.on( 'click.fu.repeater-list', function() {
+										self.list_sortProperty = ( typeof sortable === 'string' ) ? sortable : subset[ index ].property;
+										if ( $item.hasClass( 'sorted' ) ) {
+											if ( $span.hasClass( chevUp ) ) {
+												$span.removeClass( chevUp ).addClass( chevDown );
+												self.list_sortDirection = 'desc';
+											} else {
+												if ( !self.options.list_sortClearing ) {
+													$span.removeClass( chevDown ).addClass( chevUp );
+													self.list_sortDirection = 'asc';
+												} else {
+													$item.removeClass( 'sorted' );
+													$span.removeClass( chevDown );
+													self.list_sortDirection = null;
+													self.list_sortProperty = null;
+												}
+											}
+										} else {
+											helpers.container.find( 'td' ).removeClass( 'sorted' );
+											$span.removeClass( chevDown ).addClass( chevUp );
+											self.list_sortDirection = 'asc';
+											$item.addClass( 'sorted' );
+										}
+										self.render( {
+											clearInfinite: true,
+											pageIncrement: null
+										} );
+									} );
+								}
+								if ( subset[ index ].sortDirection === 'asc' || subset[ index ].sortDirection === 'desc' ) {
+									helpers.container.find( 'td' ).removeClass( 'sorted' );
+									$item.addClass( 'sortable sorted' );
+									if ( subset[ index ].sortDirection === 'asc' ) {
+										$span.addClass( chevUp );
+										this.list_sortDirection = 'asc';
+									} else {
+										$span.addClass( chevDown );
+										this.list_sortDirection = 'desc';
+									}
+									this.list_sortProperty = ( typeof sortable === 'string' ) ? sortable : subset[ index ].property;
+								}
+
+								callback( {
+									item: $item
+								} );
+							},
+							repeat: 'data.columns'
+						} ]
+					}, {
+						after: function( helpers, callback ) {
+							var canvas = this.$canvas;
+							var header = canvas.find( '.repeater-list-header' );
+							if ( this.staticHeight ) {
+								helpers.item.height( canvas.height() - header.outerHeight() );
+							}
+							callback();
+						},
+						render: function( helpers, callback ) {
+							var $item = this.$canvas.find( '.repeater-list-wrapper' );
+							var obj = {};
+							var $empty;
+							if ( $item.length > 0 ) {
+								obj.action = 'none';
+							} else {
+								$item = $( '<div class="repeater-list-wrapper" data-infinite="true"><table class="table repeater-list-items" data-container="true" role="grid" aria-readonly="true"></table></div>' );
+							}
+							obj.item = $item;
+							if ( helpers.data.items.length < 1 ) {
+								obj.skipNested = true;
+								$empty = $( '<tr class="empty"><td></td></tr>' );
+								$empty.find( 'td' ).append( this.options.list_noItemsHTML );
+								$item.find( '.repeater-list-items' ).append( $empty );
+							} else {
+								$item.find( '.repeater-list-items tr.empty:first' ).remove();
+							}
+							callback( obj );
+						},
+						nested: [ {
+							complete: function( helpers, callback ) {
+								var obj = {
+									container: helpers.container
+								};
+								if ( helpers.item !== undefined ) {
+									obj.item = helpers.item;
+								}
+								if ( this.options.list_rowRendered ) {
+									this.options.list_rowRendered( obj, function() {
+										callback();
+									} );
+								} else {
+									callback();
+								}
+							},
+							render: function( helpers, callback ) {
+								var $item = $( '<tr data-container="true"></tr>' );
+								var self = this;
+
+								if ( this.options.list_selectable ) {
+									$item.addClass( 'selectable' );
+									$item.attr( 'tabindex', 0 ); // allow items to be tabbed to / focused on
+									$item.data( 'item_data', helpers.subset[ helpers.index ] );
+									$item.on( 'click.fu.repeater-list', function() {
+										var $row = $( this );
+										if ( $row.hasClass( 'selected' ) ) {
+											$row.removeClass( 'selected' );
+											$row.find( '.repeater-list-check' ).remove();
+											self.$element.trigger( 'itemDeselected.fu.repeater', $row );
+										} else {
+											if ( self.options.list_selectable !== 'multi' ) {
+												self.$canvas.find( '.repeater-list-check' ).remove();
+												self.$canvas.find( '.repeater-list-items tr.selected' ).each( function() {
+													$( this ).removeClass( 'selected' );
+													self.$element.trigger( 'itemDeselected.fu.repeater', $( this ) );
+												} );
+											}
+											$row.addClass( 'selected' );
+											$row.find( 'td:first' ).prepend( '<div class="repeater-list-check"><span class="glyphicon glyphicon-ok"></span></div>' );
+											self.$element.trigger( 'itemSelected.fu.repeater', $row );
+										}
+									} );
+									// allow selection via enter key
+									$item.keyup( function( e ) {
+										if ( e.keyCode === 13 ) {
+											$item.trigger( 'click.fu.repeater-list' );
+										}
+									} );
+								}
+
+
+
+								this.list_curRowIndex = helpers.index;
+								callback( {
+									item: $item
+								} );
+							},
+							repeat: 'data.items',
+							nested: [ {
+								after: function( helpers, callback ) {
+									var obj = {
+										container: helpers.container
+									};
+									if ( helpers.item !== undefined ) {
+										obj.item = helpers.item;
+									}
+									if ( this.options.list_columnRendered ) {
+										this.options.list_columnRendered( obj, function() {
+											callback();
+										} );
+									} else {
+										callback();
+									}
+								},
+								render: function( helpers, callback ) {
+									var cssClass = helpers.subset[ helpers.index ].cssClass;
+									var content = helpers.data.items[ this.list_curRowIndex ][ helpers.subset[ helpers.index ].property ];
+									var $item = $( '<td></td>' );
+									var width = helpers.subset[ helpers.index ]._auto_width;
+
+									$item.addClass( ( ( cssClass !== undefined ) ? cssClass : '' ) ).append( content );
+									if ( width !== undefined ) {
+										$item.outerWidth( width );
+									}
+									callback( {
+										item: $item
+									} );
+								},
+								repeat: 'this.list_columns'
+							} ]
+						} ]
+					} ]
+				},
+				resize: function( helpers, callback ) {
+					columnSyncing.call( this, {
+						data: {
+							items: [ '' ]
+						}
+					}, callback );
+				}
+			};
+
+			var columnSyncing = function( helpers, callback ) {
+				var i = 0;
+				var widths = [];
+				var $header, $items;
+
+				if ( !this.options.list_columnSyncing || ( helpers.data.items.length < 1 ) ) {
+					callback();
+				} else {
+					$header = this.$element.find( '.repeater-list-header:first' );
+					$items = this.$element.find( '.repeater-list-items:first' );
+					$items.find( 'tr:first td' ).each( function() {
+						widths.push( $( this ).outerWidth() );
+					} );
+					widths.pop();
+					$header.find( 'td' ).each( function() {
+						if ( widths[ i ] !== undefined ) {
+							$( this ).outerWidth( widths[ i ] );
+						}
+						i++;
+					} );
+					callback();
+				}
+			};
+		}
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Repeater - Thumbnail View Plugin
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		if ( $.fn.repeater ) {
+
+			$.fn.repeater.defaults = $.extend( {}, $.fn.repeater.defaults, {
+				thumbnail_infiniteScroll: false,
+				thumbnail_itemRendered: null,
+				thumbnail_template: '<div class="thumbnail repeater-thumbnail" style="background-color: {{color}};"><img height="75" src="{{src}}" width="65"><span>{{name}}</span></div>'
+			} );
+
+			$.fn.repeater.views.thumbnail = {
+				selected: function( helpers, callback ) {
+					var infScroll = this.options.thumbnail_infiniteScroll;
+					var opts;
+					if ( infScroll ) {
+						opts = ( typeof infScroll === 'object' ) ? infScroll : {};
+						this.infiniteScrolling( true, opts );
+					}
+					callback( {} );
+				},
+				renderer: {
+					render: function( helpers, callback ) {
+						var $item = this.$element.find( '.repeater-thumbnail-cont' );
+						var obj = {};
+						var $empty;
+						if ( $item.length > 0 ) {
+							obj.action = 'none';
+						} else {
+							$item = $( '<div class="clearfix repeater-thumbnail-cont" data-container="true" data-infinite="true" data-preserve="shallow"></div>' );
+						}
+						obj.item = $item;
+						if ( helpers.data.items.length < 1 ) {
+							obj.skipNested = true;
+							$empty = $( '<div class="empty"></div>' );
+							$empty.append( this.options.thumbnail_noItemsHTML );
+							$item.append( $empty );
+						} else {
+							$item.find( '.empty:first' ).remove();
+						}
+						callback( obj );
+					},
+					nested: [ {
+						after: function( helpers, callback ) {
+							var obj = {
+								container: helpers.container
+							};
+							if ( helpers.item !== undefined ) {
+								obj.item = helpers.item;
+							}
+							if ( this.options.thumbnail_itemRendered ) {
+								this.options.thumbnail_itemRendered( obj, function() {
+									callback();
+								} );
+							} else {
+								callback();
+							}
+						},
+						render: function( helpers, callback ) {
+							var item = helpers.subset[ helpers.index ];
+							var template = function( str ) {
+								var invalid = false;
+								var replace = function() {
+									var end, start, val;
+
+									start = str.indexOf( '{{' );
+									end = str.indexOf( '}}', start + 2 );
+
+									if ( start > -1 && end > -1 ) {
+										val = $.trim( str.substring( start + 2, end ) );
+										val = ( item[ val ] !== undefined ) ? item[ val ] : '';
+										str = str.substring( 0, start ) + val + str.substring( end + 2 );
+									} else {
+										invalid = true;
+									}
+								};
+
+								while ( !invalid && str.search( '{{' ) >= 0 ) {
+									replace( str );
+								}
+								return str;
+							};
+							callback( {
+								item: template( this.options.thumbnail_template )
+							} );
+						},
+						repeat: 'data.items'
+					} ]
+				}
+			};
+
+		}
+
+
+	} )( jQuery );
+
+
+	( function( $ ) {
+
+		/*
+		 * Fuel UX Scheduler
+		 * https://github.com/ExactTarget/fuelux
+		 *
+		 * Copyright (c) 2014 ExactTarget
+		 * Licensed under the BSD New license.
+		 */
+
+
+
+		// -- BEGIN MODULE CODE HERE --
+
+		var old = $.fn.scheduler;
+
+		// SCHEDULER CONSTRUCTOR AND PROTOTYPE
+
+		var Scheduler = function( element, options ) {
+			var self = this;
+
+			this.$element = $( element );
+			this.options = $.extend( {}, $.fn.scheduler.defaults, options );
+
+			// cache elements
+			this.$startDate = this.$element.find( '.start-datetime .start-date' );
+			this.$startTime = this.$element.find( '.start-datetime .start-time' );
+
+			this.$timeZone = this.$element.find( '.timezone-container .timezone' );
+
+			this.$repeatIntervalPanel = this.$element.find( '.repeat-every-panel' );
+			this.$repeatIntervalSelect = this.$element.find( '.repeat-options' );
+
+			this.$repeatIntervalSpinbox = this.$element.find( '.repeat-every' );
+			this.$repeatIntervalTxt = this.$element.find( '.repeat-every-text' );
+
+			this.$end = this.$element.find( '.repeat-end' );
+			this.$endSelect = this.$end.find( '.end-options' );
+			this.$endAfter = this.$end.find( '.end-after' );
+			this.$endDate = this.$end.find( '.end-on-date' );
+
+			// panels
+			this.$recurrencePanels = this.$element.find( '.repeat-panel' );
+
+
+			this.$repeatIntervalSelect.selectlist();
+
+			//initialize sub-controls
+			this.$element.find( '.selectlist' ).selectlist();
+			this.$startDate.datepicker();
+			this.$startTime.combobox();
+			// init start time
+			if ( this.$startTime.find( 'input' ).val() === '' ) {
+				this.$startTime.combobox( 'selectByIndex', 0 );
+			}
+			// every 0 days/hours doesn't make sense, change if not set
+			if ( this.$repeatIntervalSpinbox.find( 'input' ).val() === '0' ) {
+				this.$repeatIntervalSpinbox.spinbox( {
+					'value': 1,
+					'min': 1
+				} );
+			} else {
+				this.$repeatIntervalSpinbox.spinbox( {
+					'min': 1
+				} );
+			}
+			this.$endAfter.spinbox( {
+				'value': 1,
+				'min': 1
+			} );
+			this.$endDate.datepicker();
+			this.$element.find( '.radio-custom' ).radio();
+
+			// bind events: 'change' is a Bootstrap JS fired event
+			this.$repeatIntervalSelect.on( 'changed.fu.selectlist', $.proxy( this.repeatIntervalSelectChanged, this ) );
+			this.$endSelect.on( 'changed.fu.selectlist', $.proxy( this.endSelectChanged, this ) );
+			this.$element.find( '.repeat-days-of-the-week .btn-group .btn' ).on( 'change.fu.scheduler', function( e, data ) {
+				self.changed( e, data, true );
+			} );
+			this.$element.find( '.combobox' ).on( 'changed.fu.combobox', $.proxy( this.changed, this ) );
+			this.$element.find( '.datepicker' ).on( 'changed.fu.datepicker', $.proxy( this.changed, this ) );
+			this.$element.find( '.selectlist' ).on( 'changed.fu.selectlist', $.proxy( this.changed, this ) );
+			this.$element.find( '.spinbox' ).on( 'changed.fu.spinbox', $.proxy( this.changed, this ) );
+			this.$element.find( '.repeat-monthly .radio, .repeat-yearly .radio' ).on( 'change.fu.scheduler', $.proxy( this.changed, this ) );
+
+		};
+
+		Scheduler.prototype = {
+			constructor: Scheduler,
+
+			destroy: function() {
+
+				var markup;
+				// set input value attribute
+				this.$element.find( 'input' ).each( function() {
+					$( this ).attr( 'value', $( this ).val() );
+				} );
+
+				// empty elements to return to original markup and store
+				this.$element.find( '.datepicker .calendar' ).empty();
+
+				markup = this.$element[ 0 ].outerHTML;
+
+				// destroy components
+				this.$element.find( '.combobox' ).combobox( 'destroy' );
+				this.$element.find( '.datepicker' ).datepicker( 'destroy' );
+				this.$element.find( '.selectlist' ).selectlist( 'destroy' );
+				this.$element.find( '.spinbox' ).spinbox( 'destroy' );
+				this.$element.find( '[type=radio]' ).radio( 'destroy' );
+				this.$element.remove();
+
+				// any external bindings
+				// [none]
+
+				return markup;
+			},
+
+			changed: function( e, data, propagate ) {
+				if ( !propagate ) {
+					e.stopPropagation();
+				}
+				this.$element.trigger( 'changed.fu.scheduler', {
+					data: ( data !== undefined ) ? data : $( e.currentTarget ).data(),
+					originalEvent: e,
+					value: this.getValue()
+				} );
+			},
+
+			disable: function() {
+				this.toggleState( 'disable' );
+			},
+
+			enable: function() {
+				this.toggleState( 'enable' );
+			},
+
+			// called when the end range changes
+			// (Never, After, On date)
+			endSelectChanged: function( e, data ) {
+				var selectedItem, val;
+
+				if ( !data ) {
+					selectedItem = this.$endSelect.selectlist( 'selectedItem' );
+					val = selectedItem.value;
+				} else {
+					val = data.value;
+				}
+
+				// hide all panels
+				this.$endAfter.parent().addClass( 'hide' );
+				this.$endAfter.parent().attr( 'aria-hidden', 'true' );
+
+				this.$endDate.parent().addClass( 'hide' );
+				this.$endDate.parent().attr( 'aria-hidden', 'true' );
+
+				if ( val === 'after' ) {
+					this.$endAfter.parent().removeClass( 'hide' );
+					this.$endAfter.parent().attr( 'aria-hidden', 'false' );
+				} else if ( val === 'date' ) {
+					this.$endDate.parent().removeClass( 'hide' );
+					this.$endDate.parent().attr( 'aria-hidden', 'false' );
+				}
+			},
+
+			getValue: function() {
+				// FREQ = frequency (hourly, daily, monthly...)
+				// BYDAY = when picking days (MO,TU,WE,etc)
+				// BYMONTH = when picking months (Jan,Feb,March) - note the values should be 1,2,3...
+				// BYMONTHDAY = when picking days of the month (1,2,3...)
+				// BYSETPOS = when picking First,Second,Third,Fourth,Last (1,2,3,4,-1)
+
+				var interval = this.$repeatIntervalSpinbox.spinbox( 'value' );
+				var pattern = '';
+				var repeat = this.$repeatIntervalSelect.selectlist( 'selectedItem' ).value;
+				var startTime = this.$startTime.combobox( 'selectedItem' ).text.toLowerCase();
+				var timeZone = this.$timeZone.selectlist( 'selectedItem' );
+				var getFormattedDate;
+
+				getFormattedDate = function( dateObj, dash ) {
+					var fdate = '';
+					var item;
+
+					fdate += dateObj.getFullYear();
+					fdate += dash;
+					item = dateObj.getMonth() + 1; //because 0 indexing makes sense when dealing with months /sarcasm
+					fdate += ( item < 10 ) ? '0' + item : item;
+					fdate += dash;
+					item = dateObj.getDate();
+					fdate += ( item < 10 ) ? '0' + item : item;
+
+					return fdate;
+				};
+
+				var day, days, hasAm, hasPm, month, pos, startDateTime, type;
+
+				startDateTime = '' + getFormattedDate( this.$startDate.datepicker( 'getDate' ), '-' );
+
+				startDateTime += 'T';
+				hasAm = ( startTime.search( 'am' ) >= 0 );
+				hasPm = ( startTime.search( 'pm' ) >= 0 );
+				startTime = $.trim( startTime.replace( /am/g, '' ).replace( /pm/g, '' ) ).split( ':' );
+				startTime[ 0 ] = parseInt( startTime[ 0 ], 10 );
+				startTime[ 1 ] = parseInt( startTime[ 1 ], 10 );
+				if ( hasAm && startTime[ 0 ] > 11 ) {
+					startTime[ 0 ] = 0;
+				} else if ( hasPm && startTime[ 0 ] < 12 ) {
+					startTime[ 0 ] += 12;
+				}
+				startDateTime += ( startTime[ 0 ] < 10 ) ? '0' + startTime[ 0 ] : startTime[ 0 ];
+				startDateTime += ':';
+				startDateTime += ( startTime[ 1 ] < 10 ) ? '0' + startTime[ 1 ] : startTime[ 1 ];
+
+				startDateTime += ( timeZone.offset === '+00:00' ) ? 'Z' : timeZone.offset;
+
+				if ( repeat === 'none' ) {
+					pattern = 'FREQ=DAILY;INTERVAL=1;COUNT=1;';
+				} else if ( repeat === 'hourly' ) {
+					pattern = 'FREQ=HOURLY;';
+					pattern += 'INTERVAL=' + interval + ';';
+				} else if ( repeat === 'daily' ) {
+					pattern += 'FREQ=DAILY;';
+					pattern += 'INTERVAL=' + interval + ';';
+				} else if ( repeat === 'weekdays' ) {
+					pattern += 'FREQ=DAILY;';
+					pattern += 'BYDAY=MO,TU,WE,TH,FR;';
+					pattern += 'INTERVAL=1;';
+				} else if ( repeat === 'weekly' ) {
+					days = [];
+					this.$element.find( '.repeat-days-of-the-week .btn-group input:checked' ).each( function() {
+						days.push( $( this ).data().value );
+					} );
+
+					pattern += 'FREQ=WEEKLY;';
+					pattern += 'BYDAY=' + days.join( ',' ) + ';';
+					pattern += 'INTERVAL=' + interval + ';';
+				} else if ( repeat === 'monthly' ) {
+					pattern += 'FREQ=MONTHLY;';
+					pattern += 'INTERVAL=' + interval + ';';
+					type = this.$element.find( 'input[name=repeat-monthly]:checked' ).val();
+
+					if ( type === 'bymonthday' ) {
+						day = parseInt( this.$element.find( '.repeat-monthly-date .selectlist' ).selectlist( 'selectedItem' ).text, 10 );
+						pattern += 'BYMONTHDAY=' + day + ';';
+					} else if ( type === 'bysetpos' ) {
+						days = this.$element.find( '.month-days' ).selectlist( 'selectedItem' ).value;
+						pos = this.$element.find( '.month-day-pos' ).selectlist( 'selectedItem' ).value;
+						pattern += 'BYDAY=' + days + ';';
+						pattern += 'BYSETPOS=' + pos + ';';
+					}
+
+				} else if ( repeat === 'yearly' ) {
+					pattern += 'FREQ=YEARLY;';
+					type = this.$element.find( 'input[name=repeat-yearly]:checked' ).val();
+
+					if ( type === 'bymonthday' ) {
+						month = this.$element.find( '.repeat-yearly-date .year-month' ).selectlist( 'selectedItem' ).value;
+						day = this.$element.find( '.year-month-day' ).selectlist( 'selectedItem' ).text;
+						pattern += 'BYMONTH=' + month + ';';
+						pattern += 'BYMONTHDAY=' + day + ';';
+					} else if ( type === 'bysetpos' ) {
+						days = this.$element.find( '.year-month-days' ).selectlist( 'selectedItem' ).value;
+						pos = this.$element.find( '.year-month-day-pos' ).selectlist( 'selectedItem' ).value;
+						month = this.$element.find( '.repeat-yearly-day .year-month' ).selectlist( 'selectedItem' ).value;
+
+						pattern += 'BYDAY=' + days + ';';
+						pattern += 'BYSETPOS=' + pos + ';';
+						pattern += 'BYMONTH=' + month + ';';
+					}
+
+				}
+
+				var end = this.$endSelect.selectlist( 'selectedItem' ).value;
+				var duration = '';
+
+				// if both UNTIL and COUNT are not specified, the recurrence will repeat forever
+				// http://tools.ietf.org/html/rfc2445#section-4.3.10
+				if ( repeat !== 'none' ) {
+					if ( end === 'after' ) {
+						duration = 'COUNT=' + this.$endAfter.spinbox( 'value' ) + ';';
+					} else if ( end === 'date' ) {
+						duration = 'UNTIL=' + getFormattedDate( this.$endDate.datepicker( 'getDate' ), '' ) + ';';
+					}
+				}
+
+				pattern += duration;
+
+				var data = {
+					startDateTime: startDateTime,
+					timeZone: {
+						name: timeZone.name,
+						offset: timeZone.offset
+					},
+					recurrencePattern: pattern
+				};
+
+				return data;
+			},
+
+			// called when the repeat interval changes
+			// (None, Hourly, Daily, Weekdays, Weekly, Monthly, Yearly
+			repeatIntervalSelectChanged: function( e, data ) {
+				var selectedItem, val, txt;
+
+				if ( !data ) {
+					selectedItem = this.$repeatIntervalSelect.selectlist( 'selectedItem' );
+					val = selectedItem.value;
+					txt = selectedItem.text;
+				} else {
+					val = data.value;
+					txt = data.text;
+				}
+
+				// set the text
+				this.$repeatIntervalTxt.text( txt );
+
+				switch ( val.toLowerCase() ) {
+					case 'hourly':
+					case 'daily':
+					case 'weekly':
+					case 'monthly':
+						this.$repeatIntervalPanel.removeClass( 'hide' );
+						this.$repeatIntervalPanel.attr( 'aria-hidden', 'false' );
+						break;
+					default:
+						this.$repeatIntervalPanel.addClass( 'hide' );
+						this.$repeatIntervalPanel.attr( 'aria-hidden', 'true' );
+						break;
+				}
+
+				// hide all panels
+				this.$recurrencePanels.addClass( 'hide' );
+				this.$recurrencePanels.attr( 'aria-hidden', 'true' );
+
+				// show panel for current selection
+				this.$element.find( '.repeat-' + val ).removeClass( 'hide' );
+				this.$element.find( '.repeat-' + val ).attr( 'aria-hidden', 'false' );
+
+				// the end selection should only be shown when
+				// the repeat interval is not "None (run once)"
+				if ( val === 'none' ) {
+					this.$end.addClass( 'hide' );
+					this.$end.attr( 'aria-hidden', 'true' );
+				} else {
+					this.$end.removeClass( 'hide' );
+					this.$end.attr( 'aria-hidden', 'false' );
+				}
+			},
+
+			setValue: function( options ) {
+				var hours, i, item, l, minutes, period, recur, temp;
+
+				if ( options.startDateTime ) {
+					temp = options.startDateTime.split( 'T' );
+					this.$startDate.datepicker( 'setDate', temp[ 0 ] );
+
+					if ( temp[ 1 ] ) {
+						temp[ 1 ] = temp[ 1 ].split( ':' );
+						hours = parseInt( temp[ 1 ][ 0 ], 10 );
+						minutes = ( temp[ 1 ][ 1 ] ) ? parseInt( temp[ 1 ][ 1 ].split( '+' )[ 0 ].split( '-' )[ 0 ].split( 'Z' )[ 0 ], 10 ) : 0;
+						period = ( hours < 12 ) ? 'AM' : 'PM';
+
+						if ( hours === 0 ) {
+							hours = 12;
+						} else if ( hours > 12 ) {
+							hours -= 12;
+						}
+						minutes = ( minutes < 10 ) ? '0' + minutes : minutes;
+
+						temp = hours + ':' + minutes + ' ' + period;
+						this.$startTime.find( 'input' ).val( temp );
+						this.$startTime.combobox( 'selectByText', temp );
+					}
+				}
+
+				item = 'li[data';
+				if ( options.timeZone ) {
+					if ( typeof( options.timeZone ) === 'string' ) {
+						item += '-name="' + options.timeZone;
+					} else {
+						if ( options.timeZone.name ) {
+							item += '-name="' + options.timeZone.name;
+						} else {
+							item += '-offset="' + options.timeZone.offset;
+						}
+					}
+					item += '"]';
+					this.$timeZone.selectlist( 'selectBySelector', item );
+				} else if ( options.startDateTime ) {
+					temp = options.startDateTime.split( 'T' )[ 1 ];
+					if ( temp ) {
+						if ( temp.search( /\+/ ) > -1 ) {
+							temp = '+' + $.trim( temp.split( '+' )[ 1 ] );
+						} else if ( temp.search( /\-/ ) > -1 ) {
+							temp = '-' + $.trim( temp.split( '-' )[ 1 ] );
+						} else {
+							temp = '+00:00';
+						}
+					} else {
+						temp = '+00:00';
+					}
+					item += '-offset="' + temp + '"]';
+					this.$timeZone.selectlist( 'selectBySelector', item );
+				}
+
+				if ( options.recurrencePattern ) {
+					recur = {};
+					temp = options.recurrencePattern.toUpperCase().split( ';' );
+					for ( i = 0, l = temp.length; i < l; i++ ) {
+						if ( temp[ i ] !== '' ) {
+							item = temp[ i ].split( '=' );
+							recur[ item[ 0 ] ] = item[ 1 ];
+						}
+					}
+
+					if ( recur.FREQ === 'DAILY' ) {
+						if ( recur.BYDAY === 'MO,TU,WE,TH,FR' ) {
+							item = 'weekdays';
+						} else {
+							if ( recur.INTERVAL === '1' && recur.COUNT === '1' ) {
+								item = 'none';
+							} else {
+								item = 'daily';
+							}
+						}
+					} else if ( recur.FREQ === 'HOURLY' ) {
+						item = 'hourly';
+					} else if ( recur.FREQ === 'WEEKLY' ) {
+						if ( recur.BYDAY ) {
+							item = this.$element.find( '.repeat-days-of-the-week .btn-group' );
+							item.find( 'label' ).removeClass( 'active' );
+							temp = recur.BYDAY.split( ',' );
+							for ( i = 0, l = temp.length; i < l; i++ ) {
+								item.find( 'input[data-value="' + temp[ i ] + '"]' ).parent().addClass( 'active' );
+							}
+						}
+						item = 'weekly';
+					} else if ( recur.FREQ === 'MONTHLY' ) {
+						this.$element.find( '.repeat-monthly input' ).removeAttr( 'checked' ).removeClass( 'checked' );
+						this.$element.find( '.repeat-monthly label.radio-custom' ).removeClass( 'checked' );
+						if ( recur.BYMONTHDAY ) {
+							temp = this.$element.find( '.repeat-monthly-date' );
+							temp.find( 'input' ).addClass( 'checked' ).attr( 'checked', 'checked' );
+							temp.find( 'label.radio-custom' ).addClass( 'checked' );
+							temp.find( '.selectlist' ).selectlist( 'selectByValue', recur.BYMONTHDAY );
+						} else if ( recur.BYDAY ) {
+							temp = this.$element.find( '.repeat-monthly-day' );
+							temp.find( 'input' ).addClass( 'checked' ).attr( 'checked', 'checked' );
+							temp.find( 'label.radio-custom' ).addClass( 'checked' );
+							if ( recur.BYSETPOS ) {
+								temp.find( '.month-day-pos' ).selectlist( 'selectByValue', recur.BYSETPOS );
+							}
+							temp.find( '.month-days' ).selectlist( 'selectByValue', recur.BYDAY );
+						}
+						item = 'monthly';
+					} else if ( recur.FREQ === 'YEARLY' ) {
+						this.$element.find( '.repeat-yearly input' ).removeAttr( 'checked' ).removeClass( 'checked' );
+						this.$element.find( '.repeat-yearly label.radio-custom' ).removeClass( 'checked' );
+						if ( recur.BYMONTHDAY ) {
+							temp = this.$element.find( '.repeat-yearly-date' );
+							temp.find( 'input' ).addClass( 'checked' ).attr( 'checked', 'checked' );
+							temp.find( 'label.radio-custom' ).addClass( 'checked' );
+							if ( recur.BYMONTH ) {
+								temp.find( '.year-month' ).selectlist( 'selectByValue', recur.BYMONTH );
+							}
+							temp.find( '.year-month-day' ).selectlist( 'selectByValue', recur.BYMONTHDAY );
+						} else if ( recur.BYSETPOS ) {
+							temp = this.$element.find( '.repeat-yearly-day' );
+							temp.find( 'input' ).addClass( 'checked' ).attr( 'checked', 'checked' );
+							temp.find( 'label.radio-custom' ).addClass( 'checked' );
+							temp.find( '.year-month-day-pos' ).selectlist( 'selectByValue', recur.BYSETPOS );
+							if ( recur.BYDAY ) {
+								temp.find( '.year-month-days' ).selectlist( 'selectByValue', recur.BYDAY );
+							}
+							if ( recur.BYMONTH ) {
+								temp.find( '.year-month' ).selectlist( 'selectByValue', recur.BYMONTH );
+							}
+						}
+						item = 'yearly';
+					} else {
+						item = 'none';
+					}
+
+					if ( recur.COUNT ) {
+						this.$endAfter.spinbox( 'value', parseInt( recur.COUNT, 10 ) );
+						this.$endSelect.selectlist( 'selectByValue', 'after' );
+					} else if ( recur.UNTIL ) {
+						temp = recur.UNTIL;
+						if ( temp.length === 8 ) {
+							temp = temp.split( '' );
+							temp.splice( 4, 0, '-' );
+							temp.splice( 7, 0, '-' );
+							temp = temp.join( '' );
+						}
+						this.$endDate.datepicker( 'setDate', temp );
+						this.$endSelect.selectlist( 'selectByValue', 'date' );
+					}
+					this.endSelectChanged();
+
+					if ( recur.INTERVAL ) {
+						this.$repeatIntervalSpinbox.spinbox( 'value', parseInt( recur.INTERVAL, 10 ) );
+					}
+					this.$repeatIntervalSelect.selectlist( 'selectByValue', item );
+					this.repeatIntervalSelectChanged();
+				}
+			},
+
+			toggleState: function( action ) {
+				this.$element.find( '.combobox' ).combobox( action );
+				this.$element.find( '.datepicker' ).datepicker( action );
+				this.$element.find( '.selectlist' ).selectlist( action );
+				this.$element.find( '.spinbox' ).spinbox( action );
+				this.$element.find( '[type=radio]' ).radio( action );
+
+				if ( action === 'disable' ) {
+					action = 'addClass';
+				} else {
+					action = 'removeClass';
+				}
+				this.$element.find( '.repeat-days-of-the-week .btn-group' )[ action ]( 'disabled' );
+			},
+
+			value: function( options ) {
+				if ( options ) {
+					return this.setValue( options );
+				} else {
+					return this.getValue();
+				}
+			}
+		};
+
+
+		// SCHEDULER PLUGIN DEFINITION
+
+		$.fn.scheduler = function( option ) {
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var methodReturn;
+
+			var $set = this.each( function() {
+				var $this = $( this );
+				var data = $this.data( 'fu.scheduler' );
+				var options = typeof option === 'object' && option;
+
+				if ( !data ) $this.data( 'fu.scheduler', ( data = new Scheduler( this, options ) ) );
+				if ( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
+			} );
+
+			return ( methodReturn === undefined ) ? $set : methodReturn;
+		};
+
+		$.fn.scheduler.defaults = {};
+
+		$.fn.scheduler.Constructor = Scheduler;
+
+		$.fn.scheduler.noConflict = function() {
+			$.fn.scheduler = old;
+			return this;
+		};
+
+
+		// DATA-API
+
+		$( document ).on( 'mousedown.fu.scheduler.data-api', '[data-initialize=scheduler]', function( e ) {
+			var $control = $( e.target ).closest( '.scheduler' );
+			if ( !$control.data( 'fu.scheduler' ) ) {
+				$control.scheduler( $control.data() );
+			}
+		} );
+
+		// Must be domReady for AMD compatibility
+		$( function() {
+			$( '[data-initialize=scheduler]' ).each( function() {
+				var $this = $( this );
+				if ( $this.data( 'scheduler' ) ) return;
+				$this.scheduler( $this.data() );
+			} );
+		} );
+
+
+
+	} )( jQuery );
+
+
+} ) );
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/js/fuelux.min.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/js/fuelux.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..b4694af73d4122b5291f128c4828811b8bfa0312
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/fuelux/js/fuelux.min.js
@@ -0,0 +1,8 @@
+/*!
+ * Fuel UX v3.0.2 
+ * Copyright 2012-2014 ExactTarget
+ * Licensed under the BSD-3-Clause license ()
+ */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","bootstrap"],a):a(jQuery)}(function(a){if("undefined"==typeof a)throw new Error("Fuel UX's JavaScript requires jQuery");if("undefined"==typeof a.fn.dropdown||"undefined"==typeof a.fn.collapse)throw new Error("Fuel UX's JavaScript requires Bootstrap");!function(a){var b=a.fn.checkbox,c=function(b,c){this.options=a.extend({},a.fn.checkbox.defaults,c),this.$element=a(b).is('input[type="checkbox"]')?a(b):a(b).find('input[type="checkbox"]:first'),this.$label=this.$element.parent(),this.$parent=this.$label.parent(".checkbox"),this.$toggleContainer=this.$element.attr("data-toggle"),this.state={disabled:!1,checked:!1},0===this.$parent.length&&(this.$parent=null),this.$toggleContainer=Boolean(this.$toggleContainer)?a(this.$toggleContainer):null,this.$element.on("change.fu.checkbox",a.proxy(this.itemchecked,this)),this.setState()};c.prototype={constructor:c,setState:function(a){a=a||this.$element,this.state.disabled=Boolean(a.prop("disabled")),this.state.checked=Boolean(a.is(":checked")),this._resetClasses(),this._toggleCheckedState(),this._toggleDisabledState(),this.toggleContainer()},enable:function(){this.state.disabled=!1,this.$element.attr("disabled",!1),this._resetClasses(),this.$element.trigger("enabled.fu.checkbox")},disable:function(){this.state.disabled=!0,this.$element.attr("disabled",!0),this._setDisabledClass(),this.$element.trigger("disabled.fu.checkbox")},check:function(){this.state.checked=!0,this.$element.prop("checked",!0),this._setCheckedClass(),this.$element.trigger("checked.fu.checkbox")},uncheck:function(){this.state.checked=!1,this.$element.prop("checked",!1),this._resetClasses(),this.$element.trigger("unchecked.fu.checkbox")},isChecked:function(){return this.state.checked},toggle:function(){this.state.checked=!this.state.checked,this._toggleCheckedState()},toggleContainer:function(){Boolean(this.$toggleContainer)&&(this.state.checked?(this.$toggleContainer.removeClass("hide"),this.$toggleContainer.attr("aria-hidden","false")):(this.$toggleContainer.addClass("hide"),this.$toggleContainer.attr("aria-hidden","true")))},itemchecked:function(b){this.setState(a(b.target))},destroy:function(){return this.$parent.remove(),this.$parent[0].outerHTML},_resetClasses:function(){var a=[];this.state.checked||a.push("checked"),this.state.disabled||a.push("disabled"),a=a.join(" "),this.$label.removeClass(a),this.$parent&&this.$parent.removeClass(a)},_toggleCheckedState:function(){this.state.checked?this.check():this.uncheck()},_toggleDisabledState:function(){this.state.disabled?this.disable():this.enable()},_setCheckedClass:function(){this.$label.addClass("checked"),this.$parent&&this.$parent.addClass("checked")},_setDisabledClass:function(){this.$label.addClass("disabled"),this.$parent&&this.$parent.addClass("disabled")}},a.fn.checkbox=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.checkbox"),h="object"==typeof b&&b;g||f.data("fu.checkbox",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.checkbox.defaults={},a.fn.checkbox.Constructor=c,a.fn.checkbox.noConflict=function(){return a.fn.checkbox=b,this},a(document).on("mouseover.fu.checkbox.data-api","[data-initialize=checkbox]",function(b){var c=a(b.target).closest(".checkbox").find("[type=checkbox]");c.data("fu.checkbox")||c.checkbox(c.data())}),a(function(){a("[data-initialize=checkbox] [type=checkbox]").each(function(){var b=a(this);b.data("fu.checkbox")||b.checkbox(b.data())})})}(a),function(a){var b=a.fn.combobox,c=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.combobox.defaults,c),this.$dropMenu=this.$element.find(".dropdown-menu"),this.$input=this.$element.find("input"),this.$button=this.$element.find(".btn"),this.$element.on("click.fu.combobox","a",a.proxy(this.itemclicked,this)),this.$element.on("change.fu.combobox","input",a.proxy(this.inputchanged,this)),this.$element.on("shown.bs.dropdown",a.proxy(this.menuShown,this)),this.setDefaultSelection()};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element.find("input").each(function(){a(this).attr("value",a(this).val())}),this.$element[0].outerHTML},doSelect:function(a){"undefined"!=typeof a[0]?(this.$selectedItem=a,this.$input.val(this.$selectedItem.text())):this.$selectedItem=null},menuShown:function(){this.options.autoResizeMenu&&this.resizeMenu()},resizeMenu:function(){var a=this.$element.outerWidth();this.$dropMenu.outerWidth(a)},selectedItem:function(){var b=this.$selectedItem,c={};if(b){var d=this.$selectedItem.text();c=a.extend({text:d},this.$selectedItem.data())}else c={text:this.$input.val()};return c},selectByText:function(b){var c=a([]);this.$element.find("li").each(function(){return(this.textContent||this.innerText||a(this).text()||"").toLowerCase()===(b||"").toLowerCase()?(c=a(this),!1):void 0}),this.doSelect(c)},selectByValue:function(a){var b='li[data-value="'+a+'"]';this.selectBySelector(b)},selectByIndex:function(a){var b="li:eq("+a+")";this.selectBySelector(b)},selectBySelector:function(a){var b=this.$element.find(a);this.doSelect(b)},setDefaultSelection:function(){var a="li[data-selected=true]:first",b=this.$element.find(a);b.length>0&&(this.selectBySelector(a),b.removeData("selected"),b.removeAttr("data-selected"))},enable:function(){this.$element.removeClass("disabled"),this.$input.removeAttr("disabled"),this.$button.removeClass("disabled")},disable:function(){this.$element.addClass("disabled"),this.$input.attr("disabled",!0),this.$button.addClass("disabled")},itemclicked:function(b){this.$selectedItem=a(b.target).parent(),this.$input.val(this.$selectedItem.text()).trigger("change",{synthetic:!0});var c=this.selectedItem();this.$element.trigger("changed.fu.combobox",c),b.preventDefault(),this.$element.find(".dropdown-toggle").focus()},inputchanged:function(b,c){if(!c||!c.synthetic){var d=a(b.target).val();this.selectByText(d);var e=this.selectedItem();0===e.text.length&&(e={text:d}),this.$element.trigger("changed.fu.combobox",e)}}},a.fn.combobox=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.combobox"),h="object"==typeof b&&b;g||f.data("fu.combobox",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.combobox.defaults={autoResizeMenu:!0},a.fn.combobox.Constructor=c,a.fn.combobox.noConflict=function(){return a.fn.combobox=b,this},a(document).on("mousedown.fu.combobox.data-api","[data-initialize=combobox]",function(b){var c=a(b.target).closest(".combobox");c.data("fu.combobox")||c.combobox(c.data())}),a(function(){a("[data-initialize=combobox]").each(function(){var b=a(this);b.data("fu.combobox")||b.combobox(b.data())})})}(a),function(a){var b="Invalid Date",c="moment.js is not available so you cannot use this function",d=[],e=!1,f=a.fn.datepicker,g=!1,h=function(){var a,b;for(g=!0,a=0,b=d.length;b>a;a++)d[a].init.call(d[a].scope);d=[]};"function"==typeof define&&define.amd?require(["moment"],function(a){e=a,h()},function(a){var b=a.requireModules&&a.requireModules[0];"moment"===b&&h()}):h();var i=function(b,c){this.$element=a(b),this.options=a.extend(!0,{},a.fn.datepicker.defaults,c),this.$calendar=this.$element.find(".datepicker-calendar"),this.$days=this.$calendar.find(".datepicker-calendar-days"),this.$header=this.$calendar.find(".datepicker-calendar-header"),this.$headerTitle=this.$header.find(".title"),this.$input=this.$element.find("input"),this.$wheels=this.$element.find(".datepicker-wheels"),this.$wheelsMonth=this.$element.find(".datepicker-wheels-month"),this.$wheelsYear=this.$element.find(".datepicker-wheels-year"),this.artificialScrolling=!1,this.formatDate=this.options.formatDate||this.formatDate,this.inputValue=null,this.moment=!1,this.momentFormat=null,this.parseDate=this.options.parseDate||this.parseDate,this.preventBlurHide=!1,this.restricted=this.options.restricted||[],this.restrictedParsed=[],this.restrictedText=this.options.restrictedText,this.sameYearOnly=this.options.sameYearOnly,this.selectedDate=null,this.yearRestriction=null,this.$calendar.find(".datepicker-today").on("click.fu.datepicker",a.proxy(this.todayClicked,this)),this.$days.on("click.fu.datepicker","tr td button",a.proxy(this.dateClicked,this)),this.$element.find(".dropdown-menu").on("mousedown.fu.datepicker",a.proxy(this.dropdownMousedown,this)),this.$header.find(".next").on("click.fu.datepicker",a.proxy(this.next,this)),this.$header.find(".prev").on("click.fu.datepicker",a.proxy(this.prev,this)),this.$headerTitle.on("click.fu.datepicker",a.proxy(this.titleClicked,this)),this.$input.on("blur.fu.datepicker",a.proxy(this.inputBlurred,this)),this.$input.on("focus.fu.datepicker",a.proxy(this.inputFocused,this)),this.$wheels.find(".datepicker-wheels-back").on("click.fu.datepicker",a.proxy(this.backClicked,this)),this.$wheels.find(".datepicker-wheels-select").on("click.fu.datepicker",a.proxy(this.selectClicked,this)),this.$wheelsMonth.on("click.fu.datepicker","ul button",a.proxy(this.monthClicked,this)),this.$wheelsYear.on("click.fu.datepicker","ul button",a.proxy(this.yearClicked,this)),this.$wheelsYear.find("ul").on("scroll.fu.datepicker",a.proxy(this.onYearScroll,this));var f=function(){this.checkForMomentJS()&&(e=e||window.moment,this.moment=!0,this.momentFormat=this.options.momentConfig.format,this.setCulture(this.options.momentConfig.culture)),this.setRestrictedDates(this.restricted),this.setDate(this.options.date)||(this.$input.val(""),this.inputValue=this.$input.val()),this.sameYearOnly&&(this.yearRestriction=this.selectedDate?this.selectedDate.getFullYear():(new Date).getFullYear())};g?f.call(this):d.push({init:f,scope:this})};i.prototype={constructor:i,backClicked:function(){this.changeView("calendar")},changeView:function(a,b){"wheels"===a?(this.$calendar.hide().attr("aria-hidden","true"),this.$wheels.show().removeAttr("aria-hidden",""),b&&this.renderWheel(b)):(this.$wheels.hide().attr("aria-hidden","true"),this.$calendar.show().removeAttr("aria-hidden",""),b&&this.renderMonth(b))},checkForMomentJS:function(){return(a.isFunction(window.moment)||"undefined"!=typeof e&&a.isFunction(e))&&a.isPlainObject(this.options.momentConfig)&&this.options.momentConfig.culture&&this.options.momentConfig.format?!0:!1},dateClicked:function(b){var c,d=a(b.currentTarget).parents("td:first");d.hasClass("restricted")||(this.$days.find("td.selected").removeClass("selected"),d.addClass("selected"),c=new Date(d.attr("data-year"),d.attr("data-month"),d.attr("data-date")),this.selectedDate=c,this.$input.val(this.formatDate(c)),this.inputValue=this.$input.val(),this.$input.focus())},destroy:function(){return this.$element.remove(),this.$days.find("tbody").empty(),this.$wheelsYear.find("ul").empty(),this.$element[0].outerHTML},disable:function(){this.$element.addClass("disabled"),this.$element.find("input, button").attr("disabled","disabled"),this.$element.find(".input-group-btn").removeClass("open")},dropdownMousedown:function(){var a=this;this.preventBlurHide=!0,setTimeout(function(){a.preventBlurHide=!1},0)},enable:function(){this.$element.removeClass("disabled"),this.$element.find("input, button").removeAttr("disabled")},formatDate:function(a){var b=function(a){var b="0"+a;return b.substr(b.length-2)};return this.moment?e(a).format(this.momentFormat):b(a.getMonth()+1)+"/"+b(a.getDate())+"/"+a.getFullYear()},getCulture:function(){if(this.moment)return e.lang();throw c},getDate:function(){return this.selectedDate?this.selectedDate:new Date(0/0)},getFormat:function(){if(this.moment)return this.momentFormat;throw c},getFormattedDate:function(){return this.selectedDate?this.formatDate(this.selectedDate):b},getRestrictedDates:function(){return this.restricted},inputBlurred:function(){var a,b=this.$input.val();b!==this.inputValue&&(a=this.setDate(b),null===a?this.$element.trigger("inputParsingFailed.fu.datepicker",b):a===!1?this.$element.trigger("inputRestrictedDate.fu.datepicker",a):this.$element.trigger("changed.fu.datepicker",a)),this.preventBlurHide||this.$element.find(".input-group-btn").removeClass("open")},inputFocused:function(){this.$element.find(".input-group-btn").addClass("open")},isInvalidDate:function(a){var c=a.toString();return c===b||"NaN"===c?!0:!1},isRestricted:function(a,b,c){var d,e,f,g,h=this.restrictedParsed;if(this.sameYearOnly&&null!==this.yearRestriction&&c!==this.yearRestriction)return!0;for(d=0,f=h.length;f>d;d++)if(e=h[d].from,g=h[d].to,(c>e.year||c===e.year&&b>e.month||c===e.year&&b===e.month&&a>=e.date)&&(c<g.year||c===g.year&&b<g.month||c===g.year&&b===g.month&&a<=g.date))return!0;return!1},monthClicked:function(b){this.$wheelsMonth.find(".selected").removeClass("selected"),a(b.currentTarget).parent().addClass("selected")},next:function(){var a=this.$headerTitle.attr("data-month"),b=this.$headerTitle.attr("data-year");if(a++,a>11){if(this.sameYearOnly)return;a=0,b++}this.renderMonth(new Date(b,a,1))},onYearScroll:function(b){if(!this.artificialScrolling){var c,d,e=a(b.currentTarget),f="border-box"===e.css("box-sizing")?e.outerHeight():e.height(),g=e.get(0).scrollHeight,h=e.scrollTop(),i=f/(g-h)*100,j=h/g*100;if(5>j){for(d=parseInt(e.find("li:first").attr("data-year"),10),c=d-1;c>d-11;c--)e.prepend('<li data-year="'+c+'"><button type="button">'+c+"</button></li>");this.artificialScrolling=!0,e.scrollTop(e.get(0).scrollHeight-g+h),this.artificialScrolling=!1}else if(i>90)for(d=parseInt(e.find("li:last").attr("data-year"),10),c=d+1;d+11>c;c++)e.append('<li data-year="'+c+'"><button type="button">'+c+"</button></li>")}},parseDate:function(a){var b,c,d,f,g,h,i=this;if(a)if(this.moment){if(d=function(a,b){return b="b"===a?e(b,i.momentFormat):e(b),b.isValid()===!0?b.toDate():new Date(0/0)},h="string"==typeof a?["b","a"]:["a","b"],b=d(h[0],a),!this.isInvalidDate(b))return b;if(b=d(h[1],a),!this.isInvalidDate(b))return b}else if("string"==typeof a){if(b=new Date(Date.parse(a)),!this.isInvalidDate(b))return b;if(a=a.split("T")[0],c=/^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,g=c.exec(a),g&&(f=parseInt(g[2],10),b=new Date(g[1],f-1,g[3]),f===b.getMonth()+1))return b}else if(b=new Date(a),!this.isInvalidDate(b))return b;return new Date(0/0)},prev:function(){var a=this.$headerTitle.attr("data-month"),b=this.$headerTitle.attr("data-year");if(a--,0>a){if(this.sameYearOnly)return;a=11,b--}this.renderMonth(new Date(b,a,1))},renderMonth:function(b){b=b||new Date;var c,d,e,f,g,h,i,j,k,l=new Date(b.getFullYear(),b.getMonth(),1).getDay(),m=new Date(b.getFullYear(),b.getMonth()+1,0).getDate(),n=new Date(b.getFullYear(),b.getMonth(),0).getDate(),o=this.$headerTitle.find(".month"),p=b.getMonth(),q=new Date,r=q.getDate(),s=q.getMonth(),t=q.getFullYear(),u=this.selectedDate,v=this.$days.find("tbody"),w=b.getFullYear();for(u&&(u={date:u.getDate(),month:u.getMonth(),year:u.getFullYear()}),o.find(".current").removeClass("current"),o.find('span[data-month="'+p+'"]').addClass("current"),this.$headerTitle.find(".year").text(w),this.$headerTitle.attr({"data-month":p,"data-year":w}),v.empty(),0!==l?(c=n-l+1,i=-1):(c=1,i=0),h=35-l>=m?5:6,f=0;h>f;f++){for(k=a("<tr></tr>"),g=0;7>g;g++)j=a('<td><span><button type="button" class="datepicker-date">'+c+"</button></span></td>"),-1===i?j.addClass("last-month"):1===i&&j.addClass("next-month"),d=p+i,e=w,0>d?(d=11,e--):d>11&&(d=0,e++),j.attr({"data-date":c,"data-month":d,"data-year":e}),e===t&&d===s&&c===r?j.addClass("current-day"):(t>e||e===t&&s>d||e===t&&d===s&&r>c)&&(j.addClass("past"),this.options.allowPastDates||j.addClass("restricted").attr("title",this.restrictedText)),this.isRestricted(c,d,e)&&j.addClass("restricted").attr("title",this.restrictedText),u&&e===u.year&&d===u.month&&c===u.date&&j.addClass("selected"),c++,-1===i&&c>n?(c=1,i=0):0===i&&c>m&&(c=1,i=1),k.append(j);v.append(k)}},renderWheel:function(a){var b,c,d,e=a.getMonth(),f=this.$wheelsMonth.find("ul"),g=a.getFullYear(),h=this.$wheelsYear.find("ul");for(this.sameYearOnly?(this.$wheelsMonth.addClass("full"),this.$wheelsYear.addClass("hide")):(this.$wheelsMonth.removeClass("full"),this.$wheelsYear.removeClass("hide")),f.find(".selected").removeClass("selected"),c=f.find('li[data-month="'+e+'"]'),c.addClass("selected"),f.scrollTop(f.scrollTop()+(c.position().top-f.outerHeight()/2-c.outerHeight(!0)/2)),h.empty(),b=g-10;g+11>b;b++)h.append('<li data-year="'+b+'"><button type="button">'+b+"</button></li>");d=h.find('li[data-year="'+g+'"]'),d.addClass("selected"),this.artificialScrolling=!0,h.scrollTop(h.scrollTop()+(d.position().top-h.outerHeight()/2-d.outerHeight(!0)/2)),this.artificialScrolling=!1,c.find("button").focus()},selectClicked:function(){var a=this.$wheelsMonth.find(".selected").attr("data-month"),b=this.$wheelsYear.find(".selected").attr("data-year");this.changeView("calendar",new Date(b,a,1))},setCulture:function(a){if(!a)return!1;if(!this.moment)throw c;e.lang(a)},setDate:function(a){var b=this.parseDate(a);return this.isInvalidDate(b)?(this.selectedDate=null,this.renderMonth()):this.isRestricted(b.getDate(),b.getMonth(),b.getFullYear())?(this.selectedDate=!1,this.renderMonth()):(this.selectedDate=b,this.renderMonth(b),this.$input.val(this.formatDate(b))),this.inputValue=this.$input.val(),this.selectedDate},setFormat:function(a){if(!a)return!1;if(!this.moment)throw c;this.momentFormat=a},setRestrictedDates:function(a){var b,c,d=[],e=this,f=function(a){return a===-1/0?{date:-1/0,month:-1/0,year:-1/0}:1/0===a?{date:1/0,month:1/0,year:1/0}:(a=e.parseDate(a),{date:a.getDate(),month:a.getMonth(),year:a.getFullYear()})};for(this.restricted=a,b=0,c=a.length;c>b;b++)d.push({from:f(a[b].from),to:f(a[b].to)});this.restrictedParsed=d},titleClicked:function(){this.changeView("wheels",new Date(this.$headerTitle.attr("data-year"),this.$headerTitle.attr("data-month"),1))},todayClicked:function(){var a=new Date;(a.getMonth()+""!==this.$headerTitle.attr("data-month")||a.getFullYear()+""!==this.$headerTitle.attr("data-year"))&&this.renderMonth(a)},yearClicked:function(b){this.$wheelsYear.find(".selected").removeClass("selected"),a(b.currentTarget).parent().addClass("selected")}},a.fn.datepicker=function(b){var c,d=Array.prototype.slice.call(arguments,1),e=this.each(function(){var e=a(this),f=e.data("fu.datepicker"),g="object"==typeof b&&b;f||e.data("fu.datepicker",f=new i(this,g)),"string"==typeof b&&(c=f[b].apply(f,d))});return void 0===c?e:c},a.fn.datepicker.defaults={allowPastDates:!1,date:new Date,formatDate:null,momentConfig:{culture:"en",format:"L"},parseDate:null,restricted:[],restrictedText:"Restricted",sameYearOnly:!1},a.fn.datepicker.Constructor=i,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=f,this},a(document).on("mousedown.fu.datepicker.data-api","[data-initialize=datepicker]",function(b){var c=a(b.target).closest(".datepicker");c.data("datepicker")||c.datepicker(c.data())}),a(document).on("click.fu.datepicker.data-api",".datepicker .dropdown-menu",function(b){var c=a(b.target);(!c.is(".datepicker-date")||c.closest(".restricted").length)&&b.stopPropagation()}),a(document).on("click.fu.datepicker.data-api",".datepicker input",function(a){a.stopPropagation()}),a(function(){a("[data-initialize=datepicker]").each(function(){var b=a(this);b.data("datepicker")||b.datepicker(b.data())})})}(a),function(a){function b(b){a(b).css({visibility:"hidden"}),c(b)?b.parent().addClass("dropup"):b.parent().removeClass("dropup"),a(b).css({visibility:"visible"})}function c(a){var b=d(a),c={};return c.parentHeight=a.parent().outerHeight(),c.parentOffsetTop=a.parent().offset().top,c.dropdownHeight=a.outerHeight(),c.containerHeight=b.overflowElement.outerHeight(),c.containerOffsetTop=b.isWindow?b.overflowElement.scrollTop():b.overflowElement.offset().top,c.fromTop=c.parentOffsetTop-c.containerOffsetTop,c.fromBottom=c.containerHeight-c.parentHeight-(c.parentOffsetTop-c.containerOffsetTop),c.dropdownHeight<c.fromBottom?!1:c.dropdownHeight<c.fromTop?!0:c.dropdownHeight>=c.fromTop&&c.dropdownHeight>=c.fromBottom?c.fromTop>=c.fromBottom?!0:!1:void 0}function d(b){var c=window,d=!0;return a.each(b.parents(),function(b,e){return"visible"!==a(e).css("overflow")?(c=e,d=!1,!1):void 0}),{overflowElement:a(c),isWindow:d}}a(document.body).on("click.fu.dropdown-autoflip","[data-toggle=dropdown][data-flip]",function(){"auto"===a(this).data().flip&&b(a(this).next(".dropdown-menu"))}),a(document.body).on("suggested.fu.pillbox",function(c,d){b(a(d)),a(d).parent().addClass("open")}),a.fn.dropdownautoflip=function(){}}(a),function(a){var b=a.fn.loader,c=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.loader.defaults,c),this.begin=this.$element.is("[data-begin]")?parseInt(this.$element.attr("data-begin"),10):1,this.delay=this.$element.is("[data-delay]")?parseFloat(this.$element.attr("data-delay")):150,this.end=this.$element.is("[data-end]")?parseInt(this.$element.attr("data-end"),10):8,this.frame=this.$element.is("[data-frame]")?parseInt(this.$element.attr("data-frame"),10):this.begin,this.isIElt9=!1,this.timeout={};var d=this.msieVersion();d!==!1&&9>d&&(this.$element.addClass("iefix"),this.isIElt9=!0),this.$element.attr("data-frame",this.frame+""),this.play()};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element[0].outerHTML},ieRepaint:function(){this.isIElt9&&this.$element.addClass("iefix_repaint").removeClass("iefix_repaint")},msieVersion:function(){var a=window.navigator.userAgent,b=a.indexOf("MSIE ");return b>0?parseInt(a.substring(b+5,a.indexOf(".",b)),10):!1},next:function(){this.frame++,this.frame>this.end&&(this.frame=this.begin),this.$element.attr("data-frame",this.frame+""),this.ieRepaint()},pause:function(){clearTimeout(this.timeout)},play:function(){var a=this;clearTimeout(this.timeout),this.timeout=setTimeout(function(){a.next(),a.play()},this.delay)},previous:function(){this.frame--,this.frame<this.begin&&(this.frame=this.end),this.$element.attr("data-frame",this.frame+""),this.ieRepaint()},reset:function(){this.frame=this.begin,this.$element.attr("data-frame",this.frame+""),this.ieRepaint()}},a.fn.loader=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.loader"),h="object"==typeof b&&b;g||f.data("fu.loader",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.loader.defaults={},a.fn.loader.Constructor=c,a.fn.loader.noConflict=function(){return a.fn.loader=b,this},a(function(){a("[data-initialize=loader]").each(function(){var b=a(this);b.data("fu.loader")||b.loader(b.data())})})}(a),function(a){var b=a.fn.placard,c=function(b,c){var d=this;this.$element=a(b),this.options=a.extend({},a.fn.placard.defaults,c),this.$accept=this.$element.find(".placard-accept"),this.$cancel=this.$element.find(".placard-cancel"),this.$field=this.$element.find(".placard-field"),this.$footer=this.$element.find(".placard-footer"),this.$header=this.$element.find(".placard-header"),this.$popup=this.$element.find(".placard-popup"),this.actualValue=null,this.clickStamp="_",this.previousValue="",-1===this.options.revertOnCancel&&(this.options.revertOnCancel=this.$accept.length>0?!0:!1),this.$field.on("focus.fu.placard",a.proxy(this.show,this)),this.$accept.on("click.fu.placard",a.proxy(this.complete,this,"accept")),this.$cancel.on("click.fu.placard",function(a){a.preventDefault(),d.complete("cancel")}),this.ellipsis()};c.prototype={constructor:c,complete:function(a){var b=this.options["on"+a[0].toUpperCase()+a.substring(1)],c={previousValue:this.previousValue,value:this.$field.val()};b?(b(c),this.$element.trigger(a,c)):("cancel"===a&&this.options.revertOnCancel&&this.$field.val(this.previousValue),this.$element.trigger(a,c),this.hide())},destroy:function(){return this.$element.remove(),a(document).off("click.fu.placard.externalClick."+this.clickStamp),this.$element.find("input").each(function(){a(this).attr("value",a(this).val())}),this.$element[0].outerHTML},disable:function(){this.$element.addClass("disabled"),this.$field.attr("disabled","disabled"),this.hide()},ellipsis:function(){var a,b,c;if("true"===this.$element.attr("data-ellipsis"))if(a=this.$field.get(0),this.$field.is("input"))a.scrollLeft=0;else if(a.scrollTop=0,a.clientHeight<a.scrollHeight){for(this.actualValue=this.$field.val(),this.$field.val(""),c="",b=0;a.clientHeight>=a.scrollHeight;)c+=this.actualValue[b],this.$field.val(c+"..."),b++;c=c.length>0?c.substring(0,c.length-1):"",this.$field.val(c+"...")}},enable:function(){this.$element.removeClass("disabled"),this.$field.removeAttr("disabled")},externalClickListener:function(a,b){(b===!0||this.isExternalClick(a))&&this.complete(this.options.externalClickAction)},getValue:function(){return null!==this.actualValue?this.actualValue:this.$field.val()},hide:function(){this.$element.hasClass("showing")&&(this.$element.removeClass("showing"),this.ellipsis(),a(document).off("click.fu.placard.externalClick."+this.clickStamp),this.$element.trigger("hidden.fu.placard"))},isExternalClick:function(b){var c,d,e=this.$element.get(0),f=this.options.externalClickExceptions||[],g=a(b.target);if(b.target===e||g.parents(".placard:first").get(0)===e)return!1;for(c=0,d=f.length;d>c;c++)if(g.is(f[c])||g.parents(f[c]).length>0)return!1;return!0},setValue:function(a){this.$field.val(a),this.$element.hasClass("showing")||this.ellipsis()},show:function(){var b;if(!this.$element.hasClass("showing")){if(b=a(document).find(".placard.showing"),b.length>0){if(b.data("fu.placard")&&b.data("fu.placard").options.explicit)return;b.placard("externalClickListener",{},!0)}this.previousValue=this.$field.val(),this.$element.addClass("showing"),null!==this.actualValue&&(this.$field.val(this.actualValue),this.actualValue=null),this.$header.length>0&&this.$popup.css("top","-"+this.$header.outerHeight(!0)+"px"),this.$footer.length>0&&this.$popup.css("bottom","-"+this.$footer.outerHeight(!0)+"px"),this.$element.trigger("shown.fu.placard"),this.clickStamp=(new Date).getTime()+(Math.floor(100*Math.random())+1),this.options.explicit||a(document).on("click.fu.placard.externalClick."+this.clickStamp,a.proxy(this.externalClickListener,this))}}},a.fn.placard=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.placard"),h="object"==typeof b&&b;g||f.data("fu.placard",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.placard.defaults={onAccept:void 0,onCancel:void 0,externalClickAction:"cancel",externalClickExceptions:[],explicit:!1,revertOnCancel:-1},a.fn.placard.Constructor=c,a.fn.placard.noConflict=function(){return a.fn.placard=b,this},a(document).on("focus.fu.placard.data-api","[data-initialize=placard]",function(b){var c=a(b.target).closest(".placard");c.data("fu.placard")||c.placard(c.data())}),a(function(){a("[data-initialize=placard]").each(function(){var b=a(this);b.data("fu.placard")||b.placard(b.data())})})}(a),function(a){var b=a.fn.radio,c=function(b,c){this.options=a.extend({},a.fn.radio.defaults,c),this.$radio=a(b).is('input[type="radio"]')?a(b):a(b).find('input[type="radio"]:first'),this.$label=this.$radio.parent(),this.groupName=this.$radio.attr("name"),this.$parent=this.$label.parent(".radio"),this.$toggleContainer=null,0===this.$parent.length&&(this.$parent=null);var d=this.$radio.attr("data-toggle");d&&(this.$toggleContainer=a(d)),this.setState(this.$radio),this.$radio.on("change.fu.radio",a.proxy(this.itemchecked,this))};c.prototype={constructor:c,destroy:function(){return this.$parent.remove(),this.$parent[0].outerHTML},setState:function(a){a=a||this.$radio;var b=a.is(":checked"),c=!!a.prop("disabled");this.$label.removeClass("checked"),this.$parent&&this.$parent.removeClass("checked disabled"),b===!0&&(this.$label.addClass("checked"),this.$parent&&this.$parent.addClass("checked")),c===!0&&(this.$label.addClass("disabled"),this.$parent&&this.$parent.addClass("disabled")),this.toggleContainer()},resetGroup:function(){var b=a('input[name="'+this.groupName+'"]');b.each(function(){var b=a(this).parent("label");b.removeClass("checked"),b.parent(".radio").removeClass("checked")})},enable:function(){this.$radio.attr("disabled",!1),this.$label.removeClass("disabled"),this.$parent&&this.$parent.removeClass("disabled")},disable:function(){this.$radio.attr("disabled",!0),this.$label.addClass("disabled"),this.$parent&&this.$parent.addClass("disabled")},itemchecked:function(b){var c=a(b.target);this.resetGroup(),this.setState(c)},check:function(){this.resetGroup(),this.$radio.prop("checked",!0),this.setState(this.$radio)},toggleContainer:function(){var b;this.$toggleContainer&&(this.isChecked()?(b=a('input[name="'+this.groupName+'"]'),b.each(function(){var b=a(this).attr("data-toggle");a(b).addClass("hide"),a(b).attr("aria-hidden","true")}),this.$toggleContainer.removeClass("hide"),this.$toggleContainer.attr("aria-hidden","false")):(this.$toggleContainer.addClass("hide"),this.$toggleContainer.attr("aria-hidden","true")))},uncheck:function(){this.$radio.prop("checked",!1),this.setState(this.$radio)},isChecked:function(){return this.$radio.is(":checked")}},a.fn.radio=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.radio"),h="object"==typeof b&&b;g||f.data("fu.radio",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.radio.defaults={},a.fn.radio.Constructor=c,a.fn.radio.noConflict=function(){return a.fn.radio=b,this},a(document).on("mouseover.fu.checkbox.data-api","[data-initialize=radio]",function(b){var c=a(b.target).closest(".radio").find("[type=radio]");c.data("fu.radio")||c.radio(c.data())}),a(function(){a("[data-initialize=radio] [type=radio]").each(function(){var b=a(this);b.data("fu.radio")||b.radio(b.data())})})}(a),function(a){var b=a.fn.search,c=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.search.defaults,c),this.$button=this.$element.find("button"),this.$input=this.$element.find("input"),this.$icon=this.$element.find(".glyphicon"),this.$button.on("click.fu.search",a.proxy(this.buttonclicked,this)),this.$input.on("keydown.fu.search",a.proxy(this.keypress,this)),this.$input.on("keyup.fu.search",a.proxy(this.keypressed,this)),this.activeSearch=""};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element.find("input").each(function(){a(this).attr("value",a(this).val())}),this.$element[0].outerHTML},search:function(a){this.$icon.hasClass("glyphicon")&&this.$icon.removeClass("glyphicon-search").addClass("glyphicon-remove"),this.activeSearch=a,this.$element.addClass("searched"),this.$element.trigger("searched.fu.search",a)},clear:function(){this.$icon.hasClass("glyphicon")&&this.$icon.removeClass("glyphicon-remove").addClass("glyphicon-search"),this.activeSearch="",this.$input.val(""),this.$element.removeClass("searched"),this.$element.trigger("cleared.fu.search")},action:function(){var a=this.$input.val(),b=""===a||a===this.activeSearch;this.activeSearch&&b?this.clear():a&&this.search(a)},buttonclicked:function(b){b.preventDefault(),a(b.currentTarget).is(".disabled, :disabled")||this.action()},keypress:function(a){13===a.which&&a.preventDefault()},keypressed:function(a){var b,c;13===a.which?(a.preventDefault(),this.action()):(b=this.$input.val(),c=b&&b===this.activeSearch,this.$icon.attr("class",c?"glyphicon glyphicon-remove":"glyphicon glyphicon-search"))},disable:function(){this.$element.addClass("disabled"),this.$input.attr("disabled","disabled"),this.$button.addClass("disabled")},enable:function(){this.$element.removeClass("disabled"),this.$input.removeAttr("disabled"),this.$button.removeClass("disabled")}},a.fn.search=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.search"),h="object"==typeof b&&b;g||f.data("fu.search",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.search.defaults={},a.fn.search.Constructor=c,a.fn.search.noConflict=function(){return a.fn.search=b,this},a(document).on("mousedown.fu.search.data-api","[data-initialize=search]",function(b){var c=a(b.target).closest(".search");
+c.data("fu.search")||c.search(c.data())}),a(function(){a("[data-initialize=search]").each(function(){var b=a(this);b.data("fu.search")||b.search(b.data())})})}(a),function(a){var b=a.fn.selectlist,c=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.selectlist.defaults,c),this.$button=this.$element.find(".btn.dropdown-toggle"),this.$hiddenField=this.$element.find(".hidden-field"),this.$label=this.$element.find(".selected-label"),this.$element.on("click.fu.selectlist",".dropdown-menu a",a.proxy(this.itemClicked,this)),this.setDefaultSelection(),"auto"===c.resize&&this.resize()};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element[0].outerHTML},doSelect:function(b){var c;this.$selectedItem=c=b,this.$hiddenField.val(this.$selectedItem.attr("data-value")),this.$label.html(a(this.$selectedItem.children()[0]).html()),this.$element.find("li").each(function(){c.is(a(this))?a(this).attr("data-selected",!0):a(this).removeData("selected").removeAttr("data-selected")})},itemClicked:function(b){this.$element.trigger("clicked.fu.selectlist",this.$selectedItem),b.preventDefault(),a(b.target).parent().is(this.$selectedItem)||this.itemChanged(b),this.$element.find(".dropdown-toggle").focus()},itemChanged:function(b){this.doSelect(a(b.target).parent());var c=this.selectedItem();this.$element.trigger("changed.fu.selectlist",c)},resize:function(){var b=0,c=a("<div/>").addClass("selectlist-sizer"),d=0;Boolean(a(document).find("html").hasClass("fuelux"))?a(document.body).append(c):a(".fuelux:first").append(c),this.$element.find("a").each(function(){c.text(a(this).text()),b=c.outerWidth(),b>d&&(d=b)}),c.remove(),this.$label.width(d)},selectedItem:function(){var b=this.$selectedItem.text();return a.extend({text:b},this.$selectedItem.data())},selectByText:function(b){var c=a([]);this.$element.find("li").each(function(){return(this.textContent||this.innerText||a(this).text()||"").toLowerCase()===(b||"").toLowerCase()?(c=a(this),!1):void 0}),this.doSelect(c)},selectByValue:function(a){var b='li[data-value="'+a+'"]';this.selectBySelector(b)},selectByIndex:function(a){var b="li:eq("+a+")";this.selectBySelector(b)},selectBySelector:function(a){var b=this.$element.find(a);this.doSelect(b)},setDefaultSelection:function(){var a=this.$element.find("li[data-selected=true]").eq(0);0===a.length&&(a=this.$element.find("li").has("a").eq(0)),this.doSelect(a)},enable:function(){this.$element.removeClass("disabled"),this.$button.removeClass("disabled")},disable:function(){this.$element.addClass("disabled"),this.$button.addClass("disabled")}},a.fn.selectlist=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.selectlist"),h="object"==typeof b&&b;g||f.data("fu.selectlist",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.selectlist.defaults={},a.fn.selectlist.Constructor=c,a.fn.selectlist.noConflict=function(){return a.fn.selectlist=b,this},a(document).on("mousedown.fu.selectlist.data-api","[data-initialize=selectlist]",function(b){var c=a(b.target).closest(".selectlist");c.data("fu.selectlist")||c.selectlist(c.data())}),a(function(){a("[data-initialize=selectlist]").each(function(){var b=a(this);b.data("fu.selectlist")||b.selectlist(b.data())})})}(a),function(a){var b=a.fn.spinbox,c=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.spinbox.defaults,c),this.$input=this.$element.find(".spinbox-input"),this.$element.on("focusin.fu.spinbox",this.$input,a.proxy(this.changeFlag,this)),this.$element.on("focusout.fu.spinbox",this.$input,a.proxy(this.change,this)),this.$element.on("keydown.fu.spinbox",this.$input,a.proxy(this.keydown,this)),this.$element.on("keyup.fu.spinbox",this.$input,a.proxy(this.keyup,this)),this.bindMousewheelListeners(),this.mousewheelTimeout={},this.options.hold?(this.$element.on("mousedown.fu.spinbox",".spinbox-up",a.proxy(function(){this.startSpin(!0)},this)),this.$element.on("mouseup.fu.spinbox",".spinbox-up, .spinbox-down",a.proxy(this.stopSpin,this)),this.$element.on("mouseout.fu.spinbox",".spinbox-up, .spinbox-down",a.proxy(this.stopSpin,this)),this.$element.on("mousedown.fu.spinbox",".spinbox-down",a.proxy(function(){this.startSpin(!1)},this))):(this.$element.on("click.fu.spinbox",".spinbox-up",a.proxy(function(){this.step(!0)},this)),this.$element.on("click.fu.spinbox",".spinbox-down",a.proxy(function(){this.step(!1)},this))),this.switches={count:1,enabled:!0},this.switches.speed="medium"===this.options.speed?300:"fast"===this.options.speed?100:500,this.lastValue=this.options.value,this.render(),this.options.disabled&&this.disable()};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element.find("input").each(function(){a(this).attr("value",a(this).val())}),this.$element[0].outerHTML},render:function(){var b=this.parseInput(this.$input.val()),c="";""!==b&&0===this.options.value?this.value(b):this.output(this.options.value),this.options.units.length&&a.each(this.options.units,function(a,b){b.length>c.length&&(c=b)})},output:function(a,b){return a=(a+"").split(".").join(this.options.decimalMark),b=b||!0,b&&this.$input.val(a),a},parseInput:function(a){return a=(a+"").split(this.options.decimalMark).join(".")},change:function(){var a=this.parseInput(this.$input.val())||"";this.options.units.length||"."!==this.options.decimalMark?a=this.parseValueWithUnit(a):a/1?a=this.options.value=this.checkMaxMin(a/1):(a=this.checkMaxMin(a.replace(/[^0-9.-]/g,"")||""),this.options.value=a/1),this.output(a),this.changeFlag=!1,this.triggerChangedEvent()},changeFlag:function(){this.changeFlag=!0},stopSpin:function(){void 0!==this.switches.timeout&&(clearTimeout(this.switches.timeout),this.switches.count=1,this.triggerChangedEvent())},triggerChangedEvent:function(){var a=this.value();a!==this.lastValue&&(this.lastValue=a,this.$element.trigger("changed.fu.spinbox",this.output(a,!1)))},startSpin:function(b){if(!this.options.disabled){var c=this.switches.count;1===c?(this.step(b),c=1):c=3>c?1.5:8>c?2.5:4,this.switches.timeout=setTimeout(a.proxy(function(){this.iterate(b)},this),this.switches.speed/c),this.switches.count++}},iterate:function(a){this.step(a),this.startSpin(a)},step:function(a){var b,c,d,e;if(this.changeFlag&&this.change(),d=this.options.value,e=a?this.options.max:this.options.min,a?e>d:d>e){var f=d+(a?1:-1)*this.options.step;this.options.step%1!==0&&(b=(this.options.step+"").split(".")[1].length,c=Math.pow(10,b),f=Math.round(f*c)/c),this.value((a?f>e:e>f)?e:f)}else if(this.options.cycle){var g=a?this.options.min:this.options.max;this.value(g)}},value:function(a){return a||0===a?this.options.units.length||"."!==this.options.decimalMark?(this.output(this.parseValueWithUnit(a+(this.unit||""))),this):!isNaN(parseFloat(a))&&isFinite(a)?(this.options.value=a/1,this.output(a+(this.unit?this.unit:"")),this):void 0:(this.changeFlag&&this.change(),this.unit?this.options.value+this.unit:this.output(this.options.value,!1))},isUnitLegal:function(b){var c;return a.each(this.options.units,function(a,d){return d.toLowerCase()===b.toLowerCase()?(c=b.toLowerCase(),!1):void 0}),c},parseValueWithUnit:function(a){var b=a.replace(/[^a-zA-Z]/g,""),c=a.replace(/[^0-9.-]/g,"");return b&&(b=this.isUnitLegal(b)),this.options.value=this.checkMaxMin(c/1),this.unit=b||void 0,this.options.value+(b||"")},checkMaxMin:function(a){return isNaN(parseFloat(a))?a:(a<=this.options.max&&a>=this.options.min||(a=a>=this.options.max?this.options.max:this.options.min),a)},disable:function(){this.options.disabled=!0,this.$element.addClass("disabled"),this.$input.attr("disabled",""),this.$element.find("button").addClass("disabled")},enable:function(){this.options.disabled=!1,this.$element.removeClass("disabled"),this.$input.removeAttr("disabled"),this.$element.find("button").removeClass("disabled")},keydown:function(a){var b=a.keyCode;38===b?this.step(!0):40===b&&this.step(!1)},keyup:function(a){var b=a.keyCode;(38===b||40===b)&&this.triggerChangedEvent()},bindMousewheelListeners:function(){var b=this.$input.get(0);b.addEventListener?(b.addEventListener("mousewheel",a.proxy(this.mousewheelHandler,this),!1),b.addEventListener("DOMMouseScroll",a.proxy(this.mousewheelHandler,this),!1)):b.attachEvent("onmousewheel",a.proxy(this.mousewheelHandler,this))},mousewheelHandler:function(a){var b=window.event||a,c=Math.max(-1,Math.min(1,b.wheelDelta||-b.detail)),d=this;return clearTimeout(this.mousewheelTimeout),this.mousewheelTimeout=setTimeout(function(){d.triggerChangedEvent()},300),this.step(0>c?!0:!1),b.preventDefault?b.preventDefault():b.returnValue=!1,!1}},a.fn.spinbox=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.spinbox"),h="object"==typeof b&&b;g||f.data("fu.spinbox",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.spinbox.defaults={value:0,min:0,max:999,step:1,hold:!0,speed:"medium",disabled:!1,cycle:!1,units:[],decimalMark:"."},a.fn.spinbox.Constructor=c,a.fn.spinbox.noConflict=function(){return a.fn.spinbox=b,this},a(document).on("mousedown.fu.spinbox.data-api","[data-initialize=spinbox]",function(b){var c=a(b.target).closest(".spinbox");c.data("fu.spinbox")||c.spinbox(c.data())}),a(function(){a("[data-initialize=spinbox]").each(function(){var b=a(this);b.data("fu.spinbox")||b.spinbox(b.data())})})}(a),function(a){var b=a.fn.tree,c=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.tree.defaults,c),this.$element.on("click.fu.tree",".tree-item",a.proxy(function(a){this.selectItem(a.currentTarget)},this)),this.$element.on("click.fu.tree",".tree-branch-name",a.proxy(function(a){this.openFolder(a.currentTarget)},this)),this.options.folderSelect&&(this.$element.off("click.fu.tree",".tree-branch-name"),this.$element.on("click.fu.tree",".icon-caret",a.proxy(function(b){this.openFolder(a(b.currentTarget).parent())},this)),this.$element.on("click.fu.tree",".tree-branch-name",a.proxy(function(b){this.selectFolder(a(b.currentTarget))},this))),this.render()};c.prototype={constructor:c,destroy:function(){return this.$element.find("li:not([data-template])").remove(),this.$element.remove(),this.$element[0].outerHTML},render:function(){this.populate(this.$element)},populate:function(b){var c=this,d=b.hasClass("tree")?b:b.parent(),e=d.find(".tree-loader:eq(0)");e.removeClass("hide"),this.options.dataSource(this.options.folderSelect?d.data():b.data(),function(f){e.addClass("hide"),a.each(f.data,function(e,f){var g;"folder"===f.type?(g=c.$element.find("[data-template=treebranch]:eq(0)").clone().removeClass("hide").removeAttr("data-template"),g.data(f),g.find(".tree-branch-name > .tree-label").html(f.name)):"item"===f.type&&(g=c.$element.find("[data-template=treeitem]:eq(0)").clone().removeClass("hide").removeAttr("data-template"),g.find(".tree-item-name > .tree-label").html(f.name),g.data(f));var h=f.dataAttributes||[];a.each(h,function(a,b){switch(a){case"class":case"classes":case"className":g.addClass(b);break;case"data-icon":g.find(".icon-item").removeClass().addClass("icon-item "+b),g.attr(a,b);break;case"id":g.attr(a,b),g.attr("aria-labelledby",b+"-label"),g.find(".tree-branch-name > .tree-label").attr("id",b+"-label");break;default:g.attr(a,b)}}),b.hasClass("tree-branch-header")?d.find(".tree-branch-children:eq(0)").append(g):b.append(g)}),c.$element.trigger("loaded.fu.tree",d)})},selectItem:function(b){var c=a(b),d=this.$element.find(".tree-selected"),e=[],f=c.find(".icon-item");this.options.multiSelect?a.each(d,function(b,d){var f=a(d);f[0]!==c[0]&&e.push(a(d).data())}):d[0]!==c[0]&&(d.removeClass("tree-selected").find(".glyphicon").removeClass("glyphicon-ok").addClass("fueluxicon-bullet"),e.push(c.data()));var g="selected";c.hasClass("tree-selected")?(g="unselected",c.removeClass("tree-selected"),(f.hasClass("glyphicon-ok")||f.hasClass("fueluxicon-bullet"))&&f.removeClass("glyphicon-ok").addClass("fueluxicon-bullet")):(c.addClass("tree-selected"),(f.hasClass("glyphicon-ok")||f.hasClass("fueluxicon-bullet"))&&f.removeClass("fueluxicon-bullet").addClass("glyphicon-ok"),this.options.multiSelect&&e.push(c.data())),e.length&&this.$element.trigger("selected",{selected:e}),c.trigger("updated.fu.tree",{selected:e,item:c,eventType:g})},openFolder:function(b){var c,d,e,f=a(b);this.options.folderSelect||(f=a(b).parent()),c=f.closest(".tree-branch"),d=c.find(".tree-branch-children"),e=d.eq(0);var g,h,i;f.find(".glyphicon-folder-close").length?(g="opened",h=".glyphicon-folder-close",i="glyphicon-folder-open",c.addClass("tree-open"),c.attr("aria-expanded","true"),e.removeClass("hide"),d.children().length||this.populate(d)):f.find(".glyphicon-folder-open")&&(g="closed",h=".glyphicon-folder-open",i="glyphicon-folder-close",c.removeClass("tree-open"),c.attr("aria-expanded","false"),e.addClass("hide"),this.options.cacheItems||e.empty()),c.find("> .tree-branch-header .icon-folder").eq(0).removeClass("glyphicon-folder-close glyphicon-folder-open").addClass(i),this.$element.trigger(g,c.data())},selectFolder:function(b){var c=a(b),d=c.closest(".tree-branch"),e=this.$element.find(".tree-branch.tree-selected"),f=[],g="selected";d.hasClass("tree-selected")?(g="unselected",d.removeClass("tree-selected")):d.addClass("tree-selected"),this.options.multiSelect?(e=this.$element.find(".tree-branch.tree-selected"),a.each(e,function(b,d){var e=a(d);e[0]!==c[0]&&f.push(a(d).data())})):e[0]!==c[0]&&(e.removeClass("tree-selected"),f.push(d.data())),f.length&&this.$element.trigger("selected.fu.tree",{selected:f}),c.trigger("updated.fu.tree",{selected:f,item:c,eventType:g})},selectedItems:function(){var b=this.$element.find(".tree-selected"),c=[];return a.each(b,function(b,d){c.push(a(d).data())}),c},collapse:function(){var b=this.options.cacheItems;this.$element.find(".icon-folder-open").each(function(){var c=a(this).removeClass("icon-folder-close icon-folder-open").addClass("icon-folder-close"),d=c.parent().parent(),e=d.children(".tree-branch-children");e.addClass("hide"),b||e.empty()})}},a.fn.tree=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.tree"),h="object"==typeof b&&b;g||f.data("fu.tree",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.tree.defaults={dataSource:function(){},multiSelect:!1,cacheItems:!0,folderSelect:!0},a.fn.tree.Constructor=c,a.fn.tree.noConflict=function(){return a.fn.tree=b,this}}(a),function(a){var b=a.fn.wizard,c=function(b,c){var d;this.$element=a(b),this.options=a.extend({},a.fn.wizard.defaults,c),this.options.disablePreviousStep="previous"===this.$element.attr("data-restrict")?!0:this.options.disablePreviousStep,this.currentStep=this.options.selectedItem.step,this.numSteps=this.$element.find(".steps li").length,this.$prevBtn=this.$element.find("button.btn-prev"),this.$nextBtn=this.$element.find("button.btn-next"),d=this.$nextBtn.children().detach(),this.nextText=a.trim(this.$nextBtn.text()),this.$nextBtn.append(d),this.$prevBtn.on("click.fu.wizard",a.proxy(this.previous,this)),this.$nextBtn.on("click.fu.wizard",a.proxy(this.next,this)),this.$element.on("click.fu.wizard","li.complete",a.proxy(this.stepclicked,this)),this.selectedItem(this.options.selectedItem),this.options.disablePreviousStep&&(this.$prevBtn.attr("disabled",!0),this.$element.find(".steps").addClass("previous-disabled"))};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element[0].outerHTML},addSteps:function(b){var c,d,e,f,g,h,i=[].slice.call(arguments).slice(1),j=this.$element.find(".steps"),k=this.$element.find(".step-content");for(b=-1===b||b>this.numSteps+1?this.numSteps+1:b,i[0]instanceof Array&&(i=i[0]),g=j.find("li:nth-child("+b+")"),f=k.find(".step-pane:nth-child("+b+")"),g.length<1&&(g=null),c=0,d=i.length;d>c;c++)h=a('<li data-step="'+b+'"><span class="badge badge-info"></span></li>'),h.append(i[c].label||"").append('<span class="chevron"></span>'),h.find(".badge").append(i[c].badge||b),e=a('<div class="step-pane" data-step="'+b+'"></div>'),e.append(i[c].pane||""),g?(g.before(h),f.before(e)):(j.append(h),k.append(e)),b++;this.syncSteps(),this.numSteps=j.find("li").length,this.setState()},removeSteps:function(b,c){var d,e="nextAll",f=0,g=this.$element.find(".steps"),h=this.$element.find(".step-content");c=void 0!==c?c:1,b>g.find("li").length?d=g.find("li:last"):(d=g.find("li:nth-child("+b+")").prev(),d.length<1&&(e="children",d=g)),d[e]().each(function(){var b=a(this),d=b.attr("data-step");return c>f?(b.remove(),h.find('.step-pane[data-step="'+d+'"]:first').remove(),void f++):!1}),this.syncSteps(),this.numSteps=g.find("li").length,this.setState()},setState:function(){var b=this.currentStep>1,c=1===this.currentStep,d=this.currentStep===this.numSteps;this.options.disablePreviousStep||this.$prevBtn.attr("disabled",c===!0||b===!1);var e=this.$nextBtn.attr("data-last");if(e){this.lastText=e;var f=this.nextText;d===!0?(f=this.lastText,this.$element.addClass("complete")):this.$element.removeClass("complete");var g=this.$nextBtn.children().detach();this.$nextBtn.text(f).append(g)}var h=this.$element.find(".steps li");h.removeClass("active").removeClass("complete"),h.find("span.badge").removeClass("badge-info").removeClass("badge-success");var i=".steps li:lt("+(this.currentStep-1)+")",j=this.$element.find(i);j.addClass("complete"),j.find("span.badge").addClass("badge-success");var k=".steps li:eq("+(this.currentStep-1)+")",l=this.$element.find(k);l.addClass("active"),l.find("span.badge").addClass("badge-info");var m=this.$element.find(".step-content"),n=l.attr("data-step");m.find(".step-pane").removeClass("active"),m.find('.step-pane[data-step="'+n+'"]:first').addClass("active"),this.$element.find(".steps").first().attr("style","margin-left: 0");var o=0;this.$element.find(".steps > li").each(function(){o+=a(this).outerWidth()});var p=0;if(p=this.$element.find(".actions").length?this.$element.width()-this.$element.find(".actions").first().outerWidth():this.$element.width(),o>p){var q=o-p;this.$element.find(".steps").first().attr("style","margin-left: -"+q+"px"),this.$element.find("li.active").first().position().left<200&&(q+=this.$element.find("li.active").first().position().left-200,1>q?this.$element.find(".steps").first().attr("style","margin-left: 0"):this.$element.find(".steps").first().attr("style","margin-left: -"+q+"px"))}if("undefined"!=typeof this.initialized){var r=a.Event("changed.fu.wizard");this.$element.trigger(r,{step:this.currentStep})}this.initialized=!0},stepclicked:function(b){var c=a(b.currentTarget),d=this.$element.find(".steps li").index(c),e=!0;if(this.options.disablePreviousStep&&d<this.currentStep&&(e=!1),e){var f=a.Event("stepclicked.fu.wizard");if(this.$element.trigger(f,{step:d+1}),f.isDefaultPrevented())return;this.currentStep=d+1,this.setState()}},syncSteps:function(){var b=1,c=this.$element.find(".steps"),d=this.$element.find(".step-content");c.children().each(function(){var c=a(this),e=c.find(".badge"),f=c.attr("data-step");isNaN(parseInt(e.html(),10))||e.html(b),c.attr("data-step",b),d.find('.step-pane[data-step="'+f+'"]:last').attr("data-step",b),b++})},previous:function(){var b=this.currentStep>1;if(this.options.disablePreviousStep&&(b=!1),b){var c=a.Event("actionclicked.fu.wizard");if(this.$element.trigger(c,{step:this.currentStep,direction:"previous"}),c.isDefaultPrevented())return;this.currentStep-=1,this.setState()}this.$prevBtn.is(":disabled")?this.$nextBtn.focus():this.$prevBtn.focus()},next:function(){var b=this.currentStep+1<=this.numSteps,c=this.currentStep===this.numSteps;if(b){var d=a.Event("actionclicked.fu.wizard");if(this.$element.trigger(d,{step:this.currentStep,direction:"next"}),d.isDefaultPrevented())return;this.currentStep+=1,this.setState()}else c&&this.$element.trigger("finished.fu.wizard");this.$nextBtn.is(":disabled")?this.$prevBtn.focus():this.$nextBtn.focus()},selectedItem:function(a){var b,c;return a?(c=a.step||-1,c>=1&&c<=this.numSteps?(this.currentStep=c,this.setState()):(c=this.$element.find(".steps li.active:first").attr("data-step"),isNaN(c)||(this.currentStep=parseInt(c,10),this.setState())),b=this):b={step:this.currentStep},b}},a.fn.wizard=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.wizard"),h="object"==typeof b&&b;g||f.data("fu.wizard",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.wizard.defaults={disablePreviousStep:!1,selectedItem:{step:-1}},a.fn.wizard.Constructor=c,a.fn.wizard.noConflict=function(){return a.fn.wizard=b,this},a(document).on("mouseover.fu.wizard.data-api","[data-initialize=wizard]",function(b){var c=a(b.target).closest(".wizard");c.data("fu.wizard")||c.wizard(c.data())}),a(function(){a("[data-initialize=wizard]").each(function(){var b=a(this);b.data("fu.wizard")||b.wizard(b.data())})})}(a),function(a){var b=a.fn.infinitescroll,c=function(b,c){this.$element=a(b),this.$element.addClass("infinitescroll"),this.options=a.extend({},a.fn.infinitescroll.defaults,c),this.curScrollTop=this.$element.scrollTop(),this.curPercentage=this.getPercentage(),this.fetchingData=!1,this.$element.on("scroll.fu.infinitescroll",a.proxy(this.onScroll,this)),this.onScroll()};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element.empty(),this.$element[0].outerHTML},disable:function(){this.$element.off("scroll.fu.infinitescroll")},enable:function(){this.$element.on("scroll.fu.infinitescroll",a.proxy(this.onScroll,this))},end:function(b){var c=a('<div class="infinitescroll-end"></div>');c.append(b?b:"---------"),this.$element.append(c),this.disable()},getPercentage:function(){var a="border-box"===this.$element.css("box-sizing")?this.$element.outerHeight():this.$element.height(),b=this.$element.get(0).scrollHeight;return b>a?a/(b-this.curScrollTop)*100:0},fetchData:function(b){var c,d=a('<div class="infinitescroll-load"></div>'),e=this,f=function(){var b={percentage:e.curPercentage,scrollTop:e.curScrollTop},c=a('<div class="loader"></div>');d.append(c),c.loader(),e.options.dataSource&&e.options.dataSource(b,function(a){var b;d.remove(),a.content&&e.$element.append(a.content),a.end&&(b=a.end!==!0?a.end:void 0,e.end(b)),e.fetchingData=!1})};this.fetchingData=!0,this.$element.append(d),this.options.hybrid&&b!==!0?(c=a('<button type="button" class="btn btn-primary"></button>'),c.append("object"==typeof this.options.hybrid?this.options.hybrid.label:'<span class="glyphicon glyphicon-repeat"></span>'),c.on("click.fu.infinitescroll",function(){c.remove(),f()}),d.append(c)):f()},onScroll:function(){this.curScrollTop=this.$element.scrollTop(),this.curPercentage=this.getPercentage(),!this.fetchingData&&this.curPercentage>=this.options.percentage&&this.fetchData()}},a.fn.infinitescroll=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.infinitescroll"),h="object"==typeof b&&b;g||f.data("fu.infinitescroll",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.infinitescroll.defaults={dataSource:null,hybrid:!1,percentage:95},a.fn.infinitescroll.Constructor=c,a.fn.infinitescroll.noConflict=function(){return a.fn.infinitescroll=b,this}}(a),function(a){var b=a.fn.pillbox,c=function(b,c){this.$element=a(b),this.$moreCount=this.$element.find(".pillbox-more-count"),this.$pillGroup=this.$element.find(".pill-group"),this.$addItem=this.$element.find(".pillbox-add-item"),this.$addItemWrap=this.$addItem.parent(),this.$suggest=this.$element.find(".suggest"),this.$pillHTML='<li class="btn btn-default pill">	<span></span>	<span class="glyphicon glyphicon-close">		<span class="sr-only">Remove</span>	</span></li>',this.options=a.extend({},a.fn.pillbox.defaults,c),-1===this.options.readonly?void 0!==this.$element.attr("data-readonly")&&this.readonly(!0):this.options.readonly&&this.readonly(!0),this.acceptKeyCodes=this._generateObject(this.options.acceptKeyCodes),this.$element.on("click.fu.pillbox",".pill-group > .pill",a.proxy(this.itemClicked,this)),this.$element.on("click.fu.pillbox",a.proxy(this.inputFocus,this)),this.$element.on("keydown.fu.pillbox",".pillbox-add-item",a.proxy(this.inputEvent,this)),this.options.onKeyDown&&this.$element.on("mousedown.fu.pillbox",".suggest > li",a.proxy(this.suggestionClick,this)),this.options.edit&&(this.$element.addClass("pills-editable"),this.$element.on("blur.fu.pillbox",".pillbox-add-item",a.proxy(this.cancelEdit,this)))};c.prototype={constructor:c,destroy:function(){return this.$element.remove(),this.$element[0].outerHTML},items:function(){var b=this;return this.$pillGroup.children(".pill").map(function(){return b.getItemData(a(this))}).get()},itemClicked:function(b){var c,d=a(b.target);if(b.preventDefault(),b.stopPropagation(),this._closeSuggestions(),d.hasClass("pill"))c=d;else if(c=d.parent(),void 0===this.$element.attr("data-readonly")){if(d.hasClass("glyphicon-close"))return this.options.onRemove?this.options.onRemove(this.getItemData(c,{el:c}),a.proxy(this._removeElement,this)):this._removeElement(this.getItemData(c,{el:c})),!1;if(this.options.edit){if(c.find(".pillbox-list-edit").length)return!1;this.openEdit(c)}}this.$element.trigger("clicked.fu.pillbox",this.getItemData(c))},readonly:function(a){a?this.$element.attr("data-readonly","readonly"):this.$element.removeAttr("data-readonly"),this.options.truncate&&this.truncate(a)},suggestionClick:function(b){var c=a(b.currentTarget);b.preventDefault(),this.$addItem.val(""),this.addItems({text:c.html(),value:c.data("value")},!0),this._closeSuggestions()},itemCount:function(){return this.$pillGroup.children(".pill").length},addItems:function(){var b,c,d,e=this;!isFinite(String(arguments[0]))||arguments[0]instanceof Array?(b=[].slice.call(arguments).slice(0),d=b[1]&&!b[1].text):(b=[].slice.call(arguments).slice(1),c=arguments[0]),b[0]instanceof Array&&(b=b[0]),b.length&&(a.each(b,function(a,c){var d={text:c.text,value:c.value?c.value:c.text,el:e.$pillHTML};b[a]=d}),this.options.edit&&this.currentEdit&&(b[0].el=this.currentEdit.wrap("<div></div>").parent().html()),d&&b.pop(1),e.options.onAdd&&d?this.options.edit&&this.currentEdit?e.options.onAdd(b[0],a.proxy(e.saveEdit,this)):e.options.onAdd(b[0],a.proxy(e.placeItems,this,!0)):this.options.edit&&this.currentEdit?e.saveEdit(b):c?e.placeItems(c,b):e.placeItems(b,d))},removeItems:function(a,b){var c,d,e=this;if(a)for(b=b?b:1,c=0;b>c&&(d=e.$pillGroup.find("> .pill:nth-child("+a+")"),d);c++)d.remove();else this.$pillGroup.find(".pill").remove(),this._removePillTrigger({method:"removeAll"})},placeItems:function(){var b,c,d,e,f="";!isFinite(String(arguments[0]))||arguments[0]instanceof Array?(b=[].slice.call(arguments).slice(0),e=b[1]&&!b[1].text):(b=[].slice.call(arguments).slice(1),c=arguments[0]),b[0]instanceof Array&&(b=b[0]),b.length&&(a.each(b,function(b,c){var d=a(c.el);d.attr("data-value",c.value),d.find("span:first").html(c.text),f+=d.wrap("<div></div>").parent().html()}),this.$pillGroup.children(".pill").length>0?c?(d=this.$pillGroup.find(".pill:nth-child("+c+")"),d.length?d.before(f):this.$pillGroup.children(".pill:last").after(f)):this.$pillGroup.children(".pill:last").after(f):this.$pillGroup.prepend(f),e&&this.$element.trigger("added.fu.pillbox",{text:b[0].text,value:b[0].value}))},inputEvent:function(a){var b,c,d,e=this,f=this.$addItem.val();if(this.acceptKeyCodes[a.keyCode])return this.options.onKeyDown&&this._isSuggestionsOpen()&&(d=this.$suggest.find(".pillbox-suggest-sel"),d.length&&(f=d.html(),b=d.data("value"))),f.length&&(this._closeSuggestions(),this.$addItem.hide(),this.addItems({text:f,value:b},!0),setTimeout(function(){e.$addItem.show().val("").attr({size:10})},0)),a.preventDefault(),!0;if(8===a.keyCode||46===a.keyCode){if(!f.length)return a.preventDefault(),this.options.edit&&this.currentEdit?(this.cancelEdit(),!0):(this._closeSuggestions(),c=this.$pillGroup.children(".pill:last"),c.hasClass("pillbox-highlight")?this._removeElement(this.getItemData(c,{el:c})):c.addClass("pillbox-highlight"),!0)}else f.length>10&&this.$addItem.width()<this.$pillGroup.width()-6&&this.$addItem.attr({size:f.length+3});if(this.$pillGroup.find(".pill").removeClass("pillbox-highlight"),this.options.onKeyDown){if(9===a.keyCode||38===a.keyCode||40===a.keyCode)return this._isSuggestionsOpen()&&this._keySuggestions(a),!0;this.callbackId=a.timeStamp,this.options.onKeyDown({event:a,value:f},function(b){e._openSuggestions(a,b)})}},openEdit:function(a){var b=a.index()+1,c=this.$addItemWrap.detach().hide();this.$pillGroup.find(".pill:nth-child("+b+")").before(c),this.currentEdit=a.detach(),c.addClass("editing"),this.$addItem.val(a.find("span:first").html()),c.show(),this.$addItem.focus().select()},cancelEdit:function(a){var b;return this.currentEdit?(this._closeSuggestions(),a&&this.$addItemWrap.before(this.currentEdit),this.currentEdit=!1,b=this.$addItemWrap.detach(),b.removeClass("editing"),this.$addItem.val(""),void this.$pillGroup.append(b)):!1},saveEdit:function(){var b=arguments[0][0];this.currentEdit=a(b.el),this.currentEdit.data("value",b.value),this.currentEdit.find("span:first").html(b.text),this.$addItemWrap.hide(),this.$addItemWrap.before(this.currentEdit),this.currentEdit=!1,this.$addItem.val(""),this.$addItemWrap.removeClass("editing"),this.$pillGroup.append(this.$addItemWrap.detach().show()),this.$element.trigger("edited.fu.pillbox",{value:b.value,text:b.text})},removeBySelector:function(){var b=[].slice.call(arguments).slice(0),c=this;a.each(b,function(a,b){c.$pillGroup.find(b).remove()}),this._removePillTrigger({method:"removeBySelector",removedSelectors:b})},removeByValue:function(){var b=[].slice.call(arguments).slice(0),c=this;a.each(b,function(a,b){c.$pillGroup.find('> .pill[data-value="'+b+'"]').remove()}),this._removePillTrigger({method:"removeByValue",removedValues:b})},removeByText:function(){var b=[].slice.call(arguments).slice(0),c=this;a.each(b,function(a,b){c.$pillGroup.find('> .pill:contains("'+b+'")').remove()}),this._removePillTrigger({method:"removeByText",removedText:b})},truncate:function(b){var c,d,e,f,g,h=this;this.$element.removeClass("truncate"),this.$addItemWrap.removeClass("truncated"),this.$pillGroup.find(".pill").removeClass("truncated"),b&&(this.$element.addClass("truncate"),c=this.$element.width(),d=!1,e=0,f=this.$pillGroup.find(".pill").length,g=0,this.$pillGroup.find(".pill").each(function(){var b=a(this);d?b.addClass("truncated"):(e++,h.$moreCount.text(f-e),g+b.outerWidth(!0)+h.$addItemWrap.outerWidth(!0)<=c?g+=b.outerWidth(!0):(h.$moreCount.text(f-e+1),b.addClass("truncated"),d=!0))}),e===f&&this.$addItemWrap.addClass("truncated"))},inputFocus:function(){this.$element.find(".pillbox-add-item").focus()},getItemData:function(b,c){return a.extend({text:b.find("span:first").html()},b.data(),c)},_removeElement:function(a){a.el.remove(),delete a.el,this.$element.trigger("removed.fu.pillbox",a)},_removePillTrigger:function(a){this.$element.trigger("removed.fu.pillbox",a)},_generateObject:function(b){var c={};return a.each(b,function(a,b){c[b]=!0}),c},_openSuggestions:function(b,c){var d="";return this.callbackId!==b.timeStamp?!1:void(c.data&&c.data.length&&(a.each(c.data,function(a,b){var c=b.value?b.value:b.text;d+='<li data-value="'+c+'">'+b.text+"</li>"}),this.$suggest.html("").append(d),a(document.body).trigger("suggested.fu.pillbox",this.$suggest)))},_closeSuggestions:function(){this.$suggest.html("").parent().removeClass("open")},_isSuggestionsOpen:function(){return this.$suggest.parent().hasClass("open")},_keySuggestions:function(a){var b,c=this.$suggest.find("li.pillbox-suggest-sel"),d=38===a.keyCode;a.preventDefault(),c.length?(b=d?c.prev():c.next(),b.length||(b=this.$suggest.find(d?"li:last":"li:first")),b&&(b.addClass("pillbox-suggest-sel"),c.removeClass("pillbox-suggest-sel"))):(c=this.$suggest.find("li:first"),c.addClass("pillbox-suggest-sel"))}},a.fn.pillbox=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.pillbox"),h="object"==typeof b&&b;
+g||f.data("fu.pillbox",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.pillbox.defaults={onAdd:void 0,onRemove:void 0,onKeyDown:void 0,edit:!1,readonly:-1,truncate:!1,acceptKeyCodes:[13,188]},a.fn.pillbox.Constructor=c,a.fn.pillbox.noConflict=function(){return a.fn.pillbox=b,this},a(document).on("mousedown.fu.pillbox.data-api","[data-initialize=pillbox]",function(b){var c=a(b.target).closest(".pillbox");c.data("fu.pillbox")||c.pillbox(c.data())}),a(function(){a("[data-initialize=pillbox]").each(function(){var b=a(this);b.data("fu.pillbox")||b.pillbox(b.data())})})}(a),function(a){var b=a.fn.repeater,c=function(b,c){var d,e=this;this.$element=a(b),this.$canvas=this.$element.find(".repeater-canvas"),this.$count=this.$element.find(".repeater-count"),this.$end=this.$element.find(".repeater-end"),this.$filters=this.$element.find(".repeater-filters"),this.$loader=this.$element.find(".repeater-loader"),this.$pageSize=this.$element.find(".repeater-itemization .selectlist"),this.$nextBtn=this.$element.find(".repeater-next"),this.$pages=this.$element.find(".repeater-pages"),this.$prevBtn=this.$element.find(".repeater-prev"),this.$primaryPaging=this.$element.find(".repeater-primaryPaging"),this.$search=this.$element.find(".repeater-search").find(".search"),this.$secondaryPaging=this.$element.find(".repeater-secondaryPaging"),this.$start=this.$element.find(".repeater-start"),this.$viewport=this.$element.find(".repeater-viewport"),this.$views=this.$element.find(".repeater-views"),this.eventStamp=(new Date).getTime()+(Math.floor(100*Math.random())+1),this.currentPage=0,this.currentView=null,this.infiniteScrollingCallback=function(){},this.infiniteScrollingCont=null,this.infiniteScrollingEnabled=!1,this.infiniteScrollingEnd=null,this.infiniteScrollingOptions={},this.lastPageInput=0,this.options=a.extend({},a.fn.repeater.defaults,c),this.pageIncrement=0,this.resizeTimeout={},this.staticHeight=-1===this.options.staticHeight?this.$element.attr("data-staticheight"):this.options.staticHeight,this.$filters.selectlist(),this.$pageSize.selectlist(),this.$primaryPaging.find(".combobox").combobox(),this.$search.search(),this.$filters.on("changed.fu.selectlist",a.proxy(this.render,this,{clearInfinite:!0,pageIncrement:null})),this.$nextBtn.on("click.fu.repeater",a.proxy(this.next,this)),this.$pageSize.on("changed.fu.selectlist",a.proxy(this.render,this,{pageIncrement:null})),this.$prevBtn.on("click.fu.repeater",a.proxy(this.previous,this)),this.$primaryPaging.find(".combobox").on("changed.fu.combobox",function(a,b){e.pageInputChange(b.text)}),this.$search.on("searched.fu.search cleared.fu.search",a.proxy(this.render,this,{clearInfinite:!0,pageIncrement:null})),this.$secondaryPaging.on("blur.fu.repeater",function(){e.pageInputChange(e.$secondaryPaging.val())}),this.$secondaryPaging.on("change.fu.repeater",function(){e.pageInputChange(e.$secondaryPaging.val())}),this.$views.find("input").on("change.fu.repeater",a.proxy(this.viewChanged,this)),a(window).on("resize.fu.repeater."+this.eventStamp,function(){clearTimeout(e.resizeTimeout),e.resizeTimeout=setTimeout(function(){e.resize(),e.$element.trigger("resized.fu.repeater")},75)}),this.$loader.loader(),this.$loader.loader("pause"),d=-1!==this.options.defaultView?this.options.defaultView:this.$views.find("label.active input").val(),this.initViews(function(){e.resize(),e.$element.trigger("resized.fu.repeater"),e.render({changeView:d})})};c.prototype={constructor:c,clear:function(b){var c=function(b){var d=[];b.children().each(function(){var b=a(this),e=b.attr("data-preserve");"deep"===e?(b.detach(),d.push(b)):"shallow"===e&&(c(b),b.detach(),d.push(b))}),b.empty(),b.append(d)};b=b||{},b.preserve?(!this.infiniteScrollingEnabled||b.clearInfinite)&&c(this.$canvas):this.$canvas.empty()},destroy:function(){var b;return this.$element.find("input").each(function(){a(this).attr("value",a(this).val())}),this.$canvas.empty(),b=this.$element[0].outerHTML,this.$element.find(".combobox").combobox("destroy"),this.$element.find(".selectlist").selectlist("destroy"),this.$element.find(".search").search("destroy"),this.infiniteScrollingEnabled&&a(this.infiniteScrollingCont).infinitescroll("destroy"),this.$element.remove(),a(window).off("resize.fu.repeater."+this.eventStamp),b},getDataOptions:function(b,c){var d,e,f={};b=b||{},f.filter=this.$filters.selectlist("selectedItem"),f.view=this.currentView,this.infiniteScrollingEnabled||(f.pageSize=parseInt(this.$pageSize.selectlist("selectedItem").value,10)),void 0!==b.pageIncrement&&(null===b.pageIncrement?this.currentPage=0:this.currentPage+=b.pageIncrement),f.pageIndex=this.currentPage,d=this.$search.find("input").val(),""!==d&&(f.search=d),e=a.fn.repeater.views[this.currentView]||{},e=e.dataOptions,e?e.call(this,f,function(a){c(a)}):c(f)},infiniteScrolling:function(a,b){var c,d,e=this.$element.find(".repeater-itemization"),f=this.$element.find(".repeater-pagination");b=b||{},a?(this.infiniteScrollingEnabled=!0,this.infiniteScrollingEnd=b.end,delete b.dataSource,delete b.end,this.infiniteScrollingOptions=b,e.hide(),f.hide()):(c=this.infiniteScrollingCont,d=c.data(),delete d.infinitescroll,c.off("scroll"),c.removeClass("infinitescroll"),this.infiniteScrollingCont=null,this.infiniteScrollingEnabled=!1,this.infiniteScrollingEnd=null,this.infiniteScrollingOptions={},e.show(),f.show())},infiniteScrollPaging:function(a){var b=this.infiniteScrollingEnd!==!0?this.infiniteScrollingEnd:void 0,c=a.page,d=a.pages;this.currentPage=void 0!==c?c:0/0,this.currentPage+1>=d&&this.infiniteScrollingCont.infinitescroll("end",b)},initInfiniteScrolling:function(){var b,c,d=this.$canvas.find('[data-infinite="true"]:first');d=d.length<1?this.$canvas:d,d.data("fu.infinitescroll")?d.infinitescroll("enable"):(c=this,b=a.extend({},this.infiniteScrollingOptions),b.dataSource=function(a,b){c.infiniteScrollingCallback=b,c.render({pageIncrement:1})},d.infinitescroll(b),this.infiniteScrollingCont=d)},initViews:function(b){var c,d,e=[],f=function(a){var c=function(){a++,d>a?f(a):b()};e[a].initialize?e[a].initialize.call(this,{},function(){c()}):c()};for(c in a.fn.repeater.views)e.push(a.fn.repeater.views[c]);d=e.length,d>0?f(0):b()},itemization:function(a){this.$count.html(a.count||""),this.$end.html(a.end||""),this.$start.html(a.start||"")},next:function(){var a="disabled";this.$nextBtn.attr(a,a),this.$prevBtn.attr(a,a),this.pageIncrement=1,this.render({pageIncrement:this.pageIncrement})},pageInputChange:function(a){var b;a!==this.lastPageInput&&(this.lastPageInput=a,a=parseInt(a,10)-1,b=a-this.currentPage,this.render({pageIncrement:b}))},pagination:function(a){var b,c,d,e="active",f="disabled",g=a.page,h=a.pages;if(this.currentPage=void 0!==g?g:0/0,this.$primaryPaging.removeClass(e),this.$secondaryPaging.removeClass(e),h<=this.options.dropPagingCap){for(this.$primaryPaging.addClass(e),b=this.$primaryPaging.find(".dropdown-menu"),b.empty(),c=0;h>c;c++)d=c+1,b.append('<li data-value="'+d+'"><a href="#">'+d+"</a></li>");this.$primaryPaging.find("input.form-control").val(this.currentPage+1)}else this.$secondaryPaging.addClass(e),this.$secondaryPaging.val(this.currentPage+1);this.lastPageInput=this.currentPage+1+"",this.$pages.html(h),this.currentPage+1<h?this.$nextBtn.removeAttr(f):this.$nextBtn.attr(f,f),this.currentPage-1>=0?this.$prevBtn.removeAttr(f):this.$prevBtn.attr(f,f),0!==this.pageIncrement&&(this.pageIncrement>0?this.$nextBtn.is(":disabled")?this.$prevBtn.focus():this.$nextBtn.focus():this.$prevBtn.is(":disabled")?this.$nextBtn.focus():this.$prevBtn.focus())},previous:function(){var a="disabled";this.$nextBtn.attr(a,a),this.$prevBtn.attr(a,a),this.pageIncrement=-1,this.render({pageIncrement:this.pageIncrement})},render:function(b){var c,d=this,e=!1,f=a.fn.repeater.views[d.currentView]||{},g=function(){b.preserve=void 0!==b.preserve?b.preserve:!e,d.clear(b),(!d.infiniteScrollingEnabled||d.infiniteScrollingEnabled&&e)&&d.$loader.show().loader("play"),d.getDataOptions(b,function(a){d.options.dataSource(a,function(a){var c=f.renderer;d.infiniteScrollingEnabled?d.infiniteScrollingCallback({}):(d.itemization(a),d.pagination(a)),c&&d.runRenderer(d.$canvas,c,a,function(){d.infiniteScrollingEnabled&&((e||b.clearInfinite)&&d.initInfiniteScrolling(),d.infiniteScrollPaging(a,b)),d.$loader.hide().loader("pause"),d.$element.trigger("loaded.fu.repeater")})})})};b=b||{},b.changeView&&this.currentView!==b.changeView?(c=this.currentView,this.currentView=b.changeView,this.$element.attr("data-currentview",this.currentView),e=!0,this.infiniteScrollingEnabled&&d.infiniteScrolling(!1),f=a.fn.repeater.views[d.currentView]||{},f.selected?f.selected.call(this,{prevView:c},function(){g()}):g()):g()},resize:function(){var b,c,d=this.staticHeight,e=a.fn.repeater.views[this.currentView]||{};void 0!==d?(this.$canvas.addClass("scrolling"),c={bottom:this.$viewport.css("margin-bottom"),top:this.$viewport.css("margin-top")},b=("true"===d||d===!0?this.$element.height():parseInt(d,10))-this.$element.find(".repeater-header").outerHeight()-this.$element.find(".repeater-footer").outerHeight()-("auto"===c.bottom?0:parseInt(c.bottom,10))-("auto"===c.top?0:parseInt(c.top,10)),this.$viewport.outerHeight(b)):this.$canvas.removeClass("scrolling"),e.resize&&e.resize.call(this,{height:this.$element.outerHeight(),width:this.$element.outerWidth()},function(){})},runRenderer:function(b,c,d,e){var f,g,h,i,j=this,k=!1,l=function(a){var f={container:b,data:d};c.repeat&&(f.subset=g,f.index=a),g.length<1?e():m(f,function(){a++,a<g.length?l(a):e()})},m=function(e,f){var g="",h={before:function(a){a&&a.skipNested===!0&&(k=!0),i("render",e)},render:function(c){var d=c&&c.action?c.action:"append";c&&void 0!==c.item&&(g=a(c.item),g.length<1&&(g=c.item),"none"!==d&&b[d](g),e.item=g),c&&c.skipNested===!0&&(k=!0),i("after",e)},after:function(f){var l,m=function(a,b){j.runRenderer(a,c.nested[b],d,function(){b++,b<c.nested.length?m(a,b):i("complete",e)})};f&&f.skipNested===!0&&(k=!0),c.nested&&!k?(l=a(g),l="true"===l.attr("data-container")?l:l.find('[data-container="true"]:first'),l.length<1&&(l=b),m(l,0)):h.complete(null)},complete:function(){f&&f()}},i=function(b,d){d=a.extend({},d),c[b]?c[b].call(j,d,h[b]):h[b](null)};i("before",e)};if(c.repeat)for(f=c.repeat.split("."),"data"===f[0]||"this"===f[0]?(g="this"===f[0]?this:d,f.shift()):(f=[],g=[""]),h=0,i=f.length;i>h;h++)g=g[f[h]];else g=[""];l(0)},viewChanged:function(b){var c=a(b.target);this.render({changeView:c.val(),pageIncrement:null})}},a.fn.repeater=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.repeater"),h="object"==typeof b&&b;g||f.data("fu.repeater",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.repeater.defaults={dataSource:function(){},defaultView:-1,dropPagingCap:10,staticHeight:-1},a.fn.repeater.views={},a.fn.repeater.Constructor=c,a.fn.repeater.noConflict=function(){return a.fn.repeater=b,this}}(a),function(a){if(a.fn.repeater){a.fn.repeater.Constructor.prototype.clearSelectedItems=function(){this.$canvas.find(".repeater-list-check").remove(),this.$canvas.find(".repeater-list-items tr.selected").removeClass("selected")},a.fn.repeater.Constructor.prototype.getSelectedItems=function(){var b=[];return this.$canvas.find(".repeater-list-items tr.selected").each(function(){var c=a(this);b.push({data:c.data("item_data"),element:c})}),b},a.fn.repeater.Constructor.prototype.setSelectedItems=function(b,c){var d,e,f,g,h=this.options.list_selectable,i=this,j=function(){f=a(this),d=f.data("item_data")||{},d[b[e].property]===b[e].value&&k(f,b[e].selected)},k=function(a,b){b=void 0!==b?b:!0,b?(c||"multi"===h||i.clearSelectedItems(),a.hasClass("selected")||(a.addClass("selected"),a.find("td:first").prepend('<div class="repeater-list-check"><span class="glyphicon glyphicon-ok"></span></div>'))):(a.find(".repeater-list-check").remove(),a.removeClass("selected"))};for(a.isArray(b)||(b=[b]),g=c===!0||"multi"===h?b.length:h&&b.length>0?1:0,e=0;g>e;e++)void 0!==b[e].index?(f=this.$canvas.find(".repeater-list-items tr:nth-child("+(b[e].index+1)+")"),f.length>0&&k(f,b[e].selected)):void 0!==b[e].property&&void 0!==b[e].value&&this.$canvas.find(".repeater-list-items tr").each(j)},a.fn.repeater.defaults=a.extend({},a.fn.repeater.defaults,{list_columnRendered:null,list_columnSizing:!0,list_columnSyncing:!0,list_infiniteScroll:!1,list_noItemsHTML:"",list_selectable:!1,list_sortClearing:!1,list_rowRendered:null}),a.fn.repeater.views.list={dataOptions:function(a,b){this.list_sortDirection&&(a.sortDirection=this.list_sortDirection),this.list_sortProperty&&(a.sortProperty=this.list_sortProperty),b(a)},initialize:function(a,b){this.list_sortDirection=null,this.list_sortProperty=null,b()},selected:function(a,b){var c,d=this.options.list_infiniteScroll;this.list_firstRender=!0,this.$loader.addClass("noHeader"),d&&(c="object"==typeof d?d:{},this.infiniteScrolling(!0,c)),b({})},renderer:{complete:function(a,c){b.call(this,a,c)},nested:[{complete:function(b,c){var d,e,f,g,h=[],i=this;if(!this.options.list_columnSizing||this.list_columnsSame)c();else{if(d=0,g=0,b.item.find("td").each(function(){var b,c=a(this),e=0===c.next("td").length?!0:!1;void 0!==i.list_columns[d].width?(b=i.list_columns[d].width,c.outerWidth(b),g+=c.outerWidth(),e?c.outerWidth(""):i.list_columns[d]._auto_width=b):h.push({col:c,index:d,last:e}),d++}),e=h.length,e>0)for(f=Math.floor((this.$canvas.width()-g)/e),d=0;e>d;d++)h[d].last||(h[d].col.outerWidth(f),this.list_columns[h[d].index]._auto_width=f);c()}},render:function(a,b){var c=function(a,b){var c,d,e;if(!a)return!0;if(!b)return!1;for(c=0,e=b.length;e>c;c++){if(!a[c])return!0;for(d in b[c])if(a[c][d]!==b[c][d])return!0}return!1};this.list_firstRender||c(this.list_columns,a.data.columns)?(this.$element.find(".repeater-list-header").remove(),this.list_columns=a.data.columns,this.list_columnsSame=!1,this.list_firstRender=!1,this.$loader.removeClass("noHeader"),b({action:"prepend",item:'<table class="table repeater-list-header" data-preserve="deep" role="grid" aria-readonly="true"><tr data-container="true"></tr></table>'})):(this.list_columnsSame=!0,b({skipNested:!0}))},nested:[{render:function(b,c){var d,e,f,g,h="glyphicon-chevron",i=h+"-down",j=h+"-up",k=b.index,l=this,m=b.subset;d=m[k].cssClass,e=a('<td><span class="glyphicon"></span></td>'),e.addClass(void 0!==d?d:"").prepend(m[k].label),g=e.find("span.glyphicon:first"),f=m[k].sortable,f&&(e.addClass("sortable"),e.on("click.fu.repeater-list",function(){l.list_sortProperty="string"==typeof f?f:m[k].property,e.hasClass("sorted")?g.hasClass(j)?(g.removeClass(j).addClass(i),l.list_sortDirection="desc"):l.options.list_sortClearing?(e.removeClass("sorted"),g.removeClass(i),l.list_sortDirection=null,l.list_sortProperty=null):(g.removeClass(i).addClass(j),l.list_sortDirection="asc"):(b.container.find("td").removeClass("sorted"),g.removeClass(i).addClass(j),l.list_sortDirection="asc",e.addClass("sorted")),l.render({clearInfinite:!0,pageIncrement:null})})),("asc"===m[k].sortDirection||"desc"===m[k].sortDirection)&&(b.container.find("td").removeClass("sorted"),e.addClass("sortable sorted"),"asc"===m[k].sortDirection?(g.addClass(j),this.list_sortDirection="asc"):(g.addClass(i),this.list_sortDirection="desc"),this.list_sortProperty="string"==typeof f?f:m[k].property),c({item:e})},repeat:"data.columns"}]},{after:function(a,b){var c=this.$canvas,d=c.find(".repeater-list-header");this.staticHeight&&a.item.height(c.height()-d.outerHeight()),b()},render:function(b,c){var d,e=this.$canvas.find(".repeater-list-wrapper"),f={};e.length>0?f.action="none":e=a('<div class="repeater-list-wrapper" data-infinite="true"><table class="table repeater-list-items" data-container="true" role="grid" aria-readonly="true"></table></div>'),f.item=e,b.data.items.length<1?(f.skipNested=!0,d=a('<tr class="empty"><td></td></tr>'),d.find("td").append(this.options.list_noItemsHTML),e.find(".repeater-list-items").append(d)):e.find(".repeater-list-items tr.empty:first").remove(),c(f)},nested:[{complete:function(a,b){var c={container:a.container};void 0!==a.item&&(c.item=a.item),this.options.list_rowRendered?this.options.list_rowRendered(c,function(){b()}):b()},render:function(b,c){var d=a('<tr data-container="true"></tr>'),e=this;this.options.list_selectable&&(d.addClass("selectable"),d.attr("tabindex",0),d.data("item_data",b.subset[b.index]),d.on("click.fu.repeater-list",function(){var b=a(this);b.hasClass("selected")?(b.removeClass("selected"),b.find(".repeater-list-check").remove(),e.$element.trigger("itemDeselected.fu.repeater",b)):("multi"!==e.options.list_selectable&&(e.$canvas.find(".repeater-list-check").remove(),e.$canvas.find(".repeater-list-items tr.selected").each(function(){a(this).removeClass("selected"),e.$element.trigger("itemDeselected.fu.repeater",a(this))})),b.addClass("selected"),b.find("td:first").prepend('<div class="repeater-list-check"><span class="glyphicon glyphicon-ok"></span></div>'),e.$element.trigger("itemSelected.fu.repeater",b))}),d.keyup(function(a){13===a.keyCode&&d.trigger("click.fu.repeater-list")})),this.list_curRowIndex=b.index,c({item:d})},repeat:"data.items",nested:[{after:function(a,b){var c={container:a.container};void 0!==a.item&&(c.item=a.item),this.options.list_columnRendered?this.options.list_columnRendered(c,function(){b()}):b()},render:function(b,c){var d=b.subset[b.index].cssClass,e=b.data.items[this.list_curRowIndex][b.subset[b.index].property],f=a("<td></td>"),g=b.subset[b.index]._auto_width;f.addClass(void 0!==d?d:"").append(e),void 0!==g&&f.outerWidth(g),c({item:f})},repeat:"this.list_columns"}]}]}]},resize:function(a,c){b.call(this,{data:{items:[""]}},c)}};var b=function(b,c){var d,e,f=0,g=[];!this.options.list_columnSyncing||b.data.items.length<1?c():(d=this.$element.find(".repeater-list-header:first"),e=this.$element.find(".repeater-list-items:first"),e.find("tr:first td").each(function(){g.push(a(this).outerWidth())}),g.pop(),d.find("td").each(function(){void 0!==g[f]&&a(this).outerWidth(g[f]),f++}),c())}}}(a),function(a){a.fn.repeater&&(a.fn.repeater.defaults=a.extend({},a.fn.repeater.defaults,{thumbnail_infiniteScroll:!1,thumbnail_itemRendered:null,thumbnail_template:'<div class="thumbnail repeater-thumbnail" style="background-color: {{color}};"><img height="75" src="{{src}}" width="65"><span>{{name}}</span></div>'}),a.fn.repeater.views.thumbnail={selected:function(a,b){var c,d=this.options.thumbnail_infiniteScroll;d&&(c="object"==typeof d?d:{},this.infiniteScrolling(!0,c)),b({})},renderer:{render:function(b,c){var d,e=this.$element.find(".repeater-thumbnail-cont"),f={};e.length>0?f.action="none":e=a('<div class="clearfix repeater-thumbnail-cont" data-container="true" data-infinite="true" data-preserve="shallow"></div>'),f.item=e,b.data.items.length<1?(f.skipNested=!0,d=a('<div class="empty"></div>'),d.append(this.options.thumbnail_noItemsHTML),e.append(d)):e.find(".empty:first").remove(),c(f)},nested:[{after:function(a,b){var c={container:a.container};void 0!==a.item&&(c.item=a.item),this.options.thumbnail_itemRendered?this.options.thumbnail_itemRendered(c,function(){b()}):b()},render:function(b,c){var d=b.subset[b.index],e=function(b){for(var c=!1,e=function(){var e,f,g;f=b.indexOf("{{"),e=b.indexOf("}}",f+2),f>-1&&e>-1?(g=a.trim(b.substring(f+2,e)),g=void 0!==d[g]?d[g]:"",b=b.substring(0,f)+g+b.substring(e+2)):c=!0};!c&&b.search("{{")>=0;)e(b);return b};c({item:e(this.options.thumbnail_template)})},repeat:"data.items"}]}})}(a),function(a){var b=a.fn.scheduler,c=function(b,c){var d=this;this.$element=a(b),this.options=a.extend({},a.fn.scheduler.defaults,c),this.$startDate=this.$element.find(".start-datetime .start-date"),this.$startTime=this.$element.find(".start-datetime .start-time"),this.$timeZone=this.$element.find(".timezone-container .timezone"),this.$repeatIntervalPanel=this.$element.find(".repeat-every-panel"),this.$repeatIntervalSelect=this.$element.find(".repeat-options"),this.$repeatIntervalSpinbox=this.$element.find(".repeat-every"),this.$repeatIntervalTxt=this.$element.find(".repeat-every-text"),this.$end=this.$element.find(".repeat-end"),this.$endSelect=this.$end.find(".end-options"),this.$endAfter=this.$end.find(".end-after"),this.$endDate=this.$end.find(".end-on-date"),this.$recurrencePanels=this.$element.find(".repeat-panel"),this.$repeatIntervalSelect.selectlist(),this.$element.find(".selectlist").selectlist(),this.$startDate.datepicker(),this.$startTime.combobox(),""===this.$startTime.find("input").val()&&this.$startTime.combobox("selectByIndex",0),this.$repeatIntervalSpinbox.spinbox("0"===this.$repeatIntervalSpinbox.find("input").val()?{value:1,min:1}:{min:1}),this.$endAfter.spinbox({value:1,min:1}),this.$endDate.datepicker(),this.$element.find(".radio-custom").radio(),this.$repeatIntervalSelect.on("changed.fu.selectlist",a.proxy(this.repeatIntervalSelectChanged,this)),this.$endSelect.on("changed.fu.selectlist",a.proxy(this.endSelectChanged,this)),this.$element.find(".repeat-days-of-the-week .btn-group .btn").on("change.fu.scheduler",function(a,b){d.changed(a,b,!0)}),this.$element.find(".combobox").on("changed.fu.combobox",a.proxy(this.changed,this)),this.$element.find(".datepicker").on("changed.fu.datepicker",a.proxy(this.changed,this)),this.$element.find(".selectlist").on("changed.fu.selectlist",a.proxy(this.changed,this)),this.$element.find(".spinbox").on("changed.fu.spinbox",a.proxy(this.changed,this)),this.$element.find(".repeat-monthly .radio, .repeat-yearly .radio").on("change.fu.scheduler",a.proxy(this.changed,this))};c.prototype={constructor:c,destroy:function(){var b;return this.$element.find("input").each(function(){a(this).attr("value",a(this).val())}),this.$element.find(".datepicker .calendar").empty(),b=this.$element[0].outerHTML,this.$element.find(".combobox").combobox("destroy"),this.$element.find(".datepicker").datepicker("destroy"),this.$element.find(".selectlist").selectlist("destroy"),this.$element.find(".spinbox").spinbox("destroy"),this.$element.find("[type=radio]").radio("destroy"),this.$element.remove(),b},changed:function(b,c,d){d||b.stopPropagation(),this.$element.trigger("changed.fu.scheduler",{data:void 0!==c?c:a(b.currentTarget).data(),originalEvent:b,value:this.getValue()})},disable:function(){this.toggleState("disable")},enable:function(){this.toggleState("enable")},endSelectChanged:function(a,b){var c,d;b?d=b.value:(c=this.$endSelect.selectlist("selectedItem"),d=c.value),this.$endAfter.parent().addClass("hide"),this.$endAfter.parent().attr("aria-hidden","true"),this.$endDate.parent().addClass("hide"),this.$endDate.parent().attr("aria-hidden","true"),"after"===d?(this.$endAfter.parent().removeClass("hide"),this.$endAfter.parent().attr("aria-hidden","false")):"date"===d&&(this.$endDate.parent().removeClass("hide"),this.$endDate.parent().attr("aria-hidden","false"))},getValue:function(){var b,c=this.$repeatIntervalSpinbox.spinbox("value"),d="",e=this.$repeatIntervalSelect.selectlist("selectedItem").value,f=this.$startTime.combobox("selectedItem").text.toLowerCase(),g=this.$timeZone.selectlist("selectedItem");b=function(a,b){var c,d="";return d+=a.getFullYear(),d+=b,c=a.getMonth()+1,d+=10>c?"0"+c:c,d+=b,c=a.getDate(),d+=10>c?"0"+c:c};var h,i,j,k,l,m,n,o;n=""+b(this.$startDate.datepicker("getDate"),"-"),n+="T",j=f.search("am")>=0,k=f.search("pm")>=0,f=a.trim(f.replace(/am/g,"").replace(/pm/g,"")).split(":"),f[0]=parseInt(f[0],10),f[1]=parseInt(f[1],10),j&&f[0]>11?f[0]=0:k&&f[0]<12&&(f[0]+=12),n+=f[0]<10?"0"+f[0]:f[0],n+=":",n+=f[1]<10?"0"+f[1]:f[1],n+="+00:00"===g.offset?"Z":g.offset,"none"===e?d="FREQ=DAILY;INTERVAL=1;COUNT=1;":"hourly"===e?(d="FREQ=HOURLY;",d+="INTERVAL="+c+";"):"daily"===e?(d+="FREQ=DAILY;",d+="INTERVAL="+c+";"):"weekdays"===e?(d+="FREQ=DAILY;",d+="BYDAY=MO,TU,WE,TH,FR;",d+="INTERVAL=1;"):"weekly"===e?(i=[],this.$element.find(".repeat-days-of-the-week .btn-group input:checked").each(function(){i.push(a(this).data().value)}),d+="FREQ=WEEKLY;",d+="BYDAY="+i.join(",")+";",d+="INTERVAL="+c+";"):"monthly"===e?(d+="FREQ=MONTHLY;",d+="INTERVAL="+c+";",o=this.$element.find("input[name=repeat-monthly]:checked").val(),"bymonthday"===o?(h=parseInt(this.$element.find(".repeat-monthly-date .selectlist").selectlist("selectedItem").text,10),d+="BYMONTHDAY="+h+";"):"bysetpos"===o&&(i=this.$element.find(".month-days").selectlist("selectedItem").value,m=this.$element.find(".month-day-pos").selectlist("selectedItem").value,d+="BYDAY="+i+";",d+="BYSETPOS="+m+";")):"yearly"===e&&(d+="FREQ=YEARLY;",o=this.$element.find("input[name=repeat-yearly]:checked").val(),"bymonthday"===o?(l=this.$element.find(".repeat-yearly-date .year-month").selectlist("selectedItem").value,h=this.$element.find(".year-month-day").selectlist("selectedItem").text,d+="BYMONTH="+l+";",d+="BYMONTHDAY="+h+";"):"bysetpos"===o&&(i=this.$element.find(".year-month-days").selectlist("selectedItem").value,m=this.$element.find(".year-month-day-pos").selectlist("selectedItem").value,l=this.$element.find(".repeat-yearly-day .year-month").selectlist("selectedItem").value,d+="BYDAY="+i+";",d+="BYSETPOS="+m+";",d+="BYMONTH="+l+";"));var p=this.$endSelect.selectlist("selectedItem").value,q="";"none"!==e&&("after"===p?q="COUNT="+this.$endAfter.spinbox("value")+";":"date"===p&&(q="UNTIL="+b(this.$endDate.datepicker("getDate"),"")+";")),d+=q;var r={startDateTime:n,timeZone:{name:g.name,offset:g.offset},recurrencePattern:d};return r},repeatIntervalSelectChanged:function(a,b){var c,d,e;switch(b?(d=b.value,e=b.text):(c=this.$repeatIntervalSelect.selectlist("selectedItem"),d=c.value,e=c.text),this.$repeatIntervalTxt.text(e),d.toLowerCase()){case"hourly":case"daily":case"weekly":case"monthly":this.$repeatIntervalPanel.removeClass("hide"),this.$repeatIntervalPanel.attr("aria-hidden","false");break;default:this.$repeatIntervalPanel.addClass("hide"),this.$repeatIntervalPanel.attr("aria-hidden","true")}this.$recurrencePanels.addClass("hide"),this.$recurrencePanels.attr("aria-hidden","true"),this.$element.find(".repeat-"+d).removeClass("hide"),this.$element.find(".repeat-"+d).attr("aria-hidden","false"),"none"===d?(this.$end.addClass("hide"),this.$end.attr("aria-hidden","true")):(this.$end.removeClass("hide"),this.$end.attr("aria-hidden","false"))},setValue:function(b){var c,d,e,f,g,h,i,j;if(b.startDateTime&&(j=b.startDateTime.split("T"),this.$startDate.datepicker("setDate",j[0]),j[1]&&(j[1]=j[1].split(":"),c=parseInt(j[1][0],10),g=j[1][1]?parseInt(j[1][1].split("+")[0].split("-")[0].split("Z")[0],10):0,h=12>c?"AM":"PM",0===c?c=12:c>12&&(c-=12),g=10>g?"0"+g:g,j=c+":"+g+" "+h,this.$startTime.find("input").val(j),this.$startTime.combobox("selectByText",j))),e="li[data",b.timeZone?(e+="string"==typeof b.timeZone?'-name="'+b.timeZone:b.timeZone.name?'-name="'+b.timeZone.name:'-offset="'+b.timeZone.offset,e+='"]',this.$timeZone.selectlist("selectBySelector",e)):b.startDateTime&&(j=b.startDateTime.split("T")[1],j=j?j.search(/\+/)>-1?"+"+a.trim(j.split("+")[1]):j.search(/\-/)>-1?"-"+a.trim(j.split("-")[1]):"+00:00":"+00:00",e+='-offset="'+j+'"]',this.$timeZone.selectlist("selectBySelector",e)),b.recurrencePattern){for(i={},j=b.recurrencePattern.toUpperCase().split(";"),d=0,f=j.length;f>d;d++)""!==j[d]&&(e=j[d].split("="),i[e[0]]=e[1]);if("DAILY"===i.FREQ)e="MO,TU,WE,TH,FR"===i.BYDAY?"weekdays":"1"===i.INTERVAL&&"1"===i.COUNT?"none":"daily";else if("HOURLY"===i.FREQ)e="hourly";else if("WEEKLY"===i.FREQ){if(i.BYDAY)for(e=this.$element.find(".repeat-days-of-the-week .btn-group"),e.find("label").removeClass("active"),j=i.BYDAY.split(","),d=0,f=j.length;f>d;d++)e.find('input[data-value="'+j[d]+'"]').parent().addClass("active");e="weekly"}else"MONTHLY"===i.FREQ?(this.$element.find(".repeat-monthly input").removeAttr("checked").removeClass("checked"),this.$element.find(".repeat-monthly label.radio-custom").removeClass("checked"),i.BYMONTHDAY?(j=this.$element.find(".repeat-monthly-date"),j.find("input").addClass("checked").attr("checked","checked"),j.find("label.radio-custom").addClass("checked"),j.find(".selectlist").selectlist("selectByValue",i.BYMONTHDAY)):i.BYDAY&&(j=this.$element.find(".repeat-monthly-day"),j.find("input").addClass("checked").attr("checked","checked"),j.find("label.radio-custom").addClass("checked"),i.BYSETPOS&&j.find(".month-day-pos").selectlist("selectByValue",i.BYSETPOS),j.find(".month-days").selectlist("selectByValue",i.BYDAY)),e="monthly"):"YEARLY"===i.FREQ?(this.$element.find(".repeat-yearly input").removeAttr("checked").removeClass("checked"),this.$element.find(".repeat-yearly label.radio-custom").removeClass("checked"),i.BYMONTHDAY?(j=this.$element.find(".repeat-yearly-date"),j.find("input").addClass("checked").attr("checked","checked"),j.find("label.radio-custom").addClass("checked"),i.BYMONTH&&j.find(".year-month").selectlist("selectByValue",i.BYMONTH),j.find(".year-month-day").selectlist("selectByValue",i.BYMONTHDAY)):i.BYSETPOS&&(j=this.$element.find(".repeat-yearly-day"),j.find("input").addClass("checked").attr("checked","checked"),j.find("label.radio-custom").addClass("checked"),j.find(".year-month-day-pos").selectlist("selectByValue",i.BYSETPOS),i.BYDAY&&j.find(".year-month-days").selectlist("selectByValue",i.BYDAY),i.BYMONTH&&j.find(".year-month").selectlist("selectByValue",i.BYMONTH)),e="yearly"):e="none";i.COUNT?(this.$endAfter.spinbox("value",parseInt(i.COUNT,10)),this.$endSelect.selectlist("selectByValue","after")):i.UNTIL&&(j=i.UNTIL,8===j.length&&(j=j.split(""),j.splice(4,0,"-"),j.splice(7,0,"-"),j=j.join("")),this.$endDate.datepicker("setDate",j),this.$endSelect.selectlist("selectByValue","date")),this.endSelectChanged(),i.INTERVAL&&this.$repeatIntervalSpinbox.spinbox("value",parseInt(i.INTERVAL,10)),this.$repeatIntervalSelect.selectlist("selectByValue",e),this.repeatIntervalSelectChanged()}},toggleState:function(a){this.$element.find(".combobox").combobox(a),this.$element.find(".datepicker").datepicker(a),this.$element.find(".selectlist").selectlist(a),this.$element.find(".spinbox").spinbox(a),this.$element.find("[type=radio]").radio(a),a="disable"===a?"addClass":"removeClass",this.$element.find(".repeat-days-of-the-week .btn-group")[a]("disabled")},value:function(a){return a?this.setValue(a):this.getValue()}},a.fn.scheduler=function(b){var d,e=Array.prototype.slice.call(arguments,1),f=this.each(function(){var f=a(this),g=f.data("fu.scheduler"),h="object"==typeof b&&b;g||f.data("fu.scheduler",g=new c(this,h)),"string"==typeof b&&(d=g[b].apply(g,e))});return void 0===d?f:d},a.fn.scheduler.defaults={},a.fn.scheduler.Constructor=c,a.fn.scheduler.noConflict=function(){return a.fn.scheduler=b,this},a(document).on("mousedown.fu.scheduler.data-api","[data-initialize=scheduler]",function(b){var c=a(b.target).closest(".scheduler");c.data("fu.scheduler")||c.scheduler(c.data())}),a(function(){a("[data-initialize=scheduler]").each(function(){var b=a(this);b.data("scheduler")||b.scheduler(b.data())})})}(a)});
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/grid/doc/index.html b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/grid/doc/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..1d5fb1e7dcae8989376d6494d5715fd089a8217a
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/grid/doc/index.html
@@ -0,0 +1,96 @@
+<!--
+/*
+ * Copyright 2014 ETH Zuerich, Scientific IT Services
+ *
+ * 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.
+ */
+-->
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<title>FuelUX</title>
+
+<link rel="stylesheet" href="lib/bootstrap/css/bootstrap.css">
+<link rel="stylesheet" href="lib/fuelux/css/fuelux.css">
+
+<script type="text/javascript" src="lib/jquery/js/jquery.js"></script>
+<script type="text/javascript" src="lib/bootstrap/js/bootstrap.js"></script>
+<script type="text/javascript" src="lib/fuelux/js/fuelux.js"></script>
+<script type="text/javascript" src="lib/naturalsort/js/naturalSort.js"></script>
+<script type="text/javascript" src="Grid.js"></script>
+
+</head>
+
+<body>
+
+	<script type="text/javascript">
+		$(function() {
+			var columns = [ {
+				label : 'Name',
+				property : 'name',
+				sortable : true
+			}, {
+				label : 'Age',
+				property : 'age',
+				sortable : true
+			}, {
+				label : 'Surname',
+				property : 'surname',
+				sortable : true
+			}, {
+				label : "Full Name",
+				property : 'fullname',
+				sortable : true,
+				render : function(data) {
+					var fullName = data.name + " " + data.surname;
+					return $("<button>").text(fullName).click(function() {
+						alert("My name is: " + fullName);
+					});
+				},
+				filter : function(data, filter) {
+					var fullName = data.name + " " + data.surname;
+					return fullName.toLowerCase().indexOf(filter) != -1;
+				},
+				sort : function(data1, data2, asc) {
+					return naturalSort(data1.surname, data2.surname);
+				}
+			} ];
+			var getDataList = function(callback) {
+				callback([ {
+					name : "Name A",
+					surname : "Surname 1",
+					age : 21
+				}, {
+					name : "Name B",
+					surname : "Surname 2",
+					age : 34
+				}, {
+					name : "Name C",
+					surname : "Surname 10",
+					age : 61
+				} ]);
+			};
+			var grid = new Grid(columns, getDataList);
+
+			grid.addRowClickListener(function(e) {
+				console.log("Row clicked - index: " + e.index);
+			});
+
+			$("body").append(grid.render());
+		});
+	</script>
+
+</body>
+</html>
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/grid/js/Grid.html b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/grid/js/Grid.html
new file mode 100644
index 0000000000000000000000000000000000000000..5fa2b9e33b3a30bb36c50bf924bee13bb0e968ab
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/grid/js/Grid.html
@@ -0,0 +1,73 @@
+<div class="repeater" data-staticheight="500px">
+	<div class="repeater-header">
+		<div class="repeater-header-left">
+			<span class="repeater-title"></span>
+			<div class="repeater-search">
+				<div class="search input-group">
+					<input type="search" class="form-control" placeholder="Search" /> <span class="input-group-btn">
+						<button class="btn btn-default" type="button">
+							<span class="glyphicon glyphicon-search"></span> <span class="sr-only">Search</span>
+						</button>
+					</span>
+				</div>
+			</div>
+		</div>
+		<div class="repeater-header-right">
+			<div class="dropdown columnDropdown">
+				<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
+					Columns <span class="caret"></span>
+				</button>
+				<ul style="padding-left: 10px" class="dropdown-menu" role="menu"></ul>
+			</div>
+		</div>
+	</div>
+	<div class="repeater-viewport">
+		<div class="repeater-canvas"></div>
+		<div class="loader repeater-loader"></div>
+	</div>
+	<div class="repeater-footer">
+		<div class="repeater-footer-left">
+			<div class="repeater-itemization">
+				<span><span class="repeater-start"></span> - <span class="repeater-end"></span> of <span class="repeater-count"></span> items</span>
+				<div class="btn-group selectlist" data-resize="auto">
+					<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+						<span class="selected-label">&nbsp;</span> <span class="caret"></span> <span class="sr-only">Toggle Dropdown</span>
+					</button>
+					<ul class="dropdown-menu" role="menu">
+						<li data-value="5"><a href="#">5</a></li>
+						<li data-value="10" data-selected="true"><a href="#">10</a></li>
+						<li data-value="20"><a href="#">20</a></li>
+						<li data-value="50" data-foo="bar" data-fizz="buzz"><a href="#">50</a></li>
+						<li data-value="100"><a href="#">100</a></li>
+					</ul>
+					<input class="hidden hidden-field" name="itemsPerPage" readonly="readonly" aria-hidden="true" type="text" />
+				</div>
+				<span>Per Page</span>
+			</div>
+		</div>
+		<div class="repeater-footer-right">
+			<div class="repeater-pagination">
+				<button type="button" class="btn btn-default btn-sm repeater-prev">
+					<span class="glyphicon glyphicon-chevron-left"></span> <span class="sr-only">Previous Page</span>
+				</button>
+				<label id="MyPageLabel" class="page-label">Page</label>
+				<div class="repeater-primaryPaging active">
+					<div class="input-group input-append dropdown combobox">
+						<input type="text" class="form-control" aria-labelledby="MyPageLabel">
+						<div class="input-group-btn">
+							<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+								<span class="caret"></span> <span class="sr-only">Toggle Dropdown</span>
+							</button>
+							<ul class="dropdown-menu dropdown-menu-right"></ul>
+						</div>
+					</div>
+				</div>
+				<input type="text" class="form-control repeater-secondaryPaging" aria-labelledby="MyPageLabel"> <span>of <span
+					class="repeater-pages"></span></span>
+				<button type="button" class="btn btn-default btn-sm repeater-next">
+					<span class="glyphicon glyphicon-chevron-right"></span> <span class="sr-only">Next Page</span>
+				</button>
+			</div>
+		</div>
+	</div>
+</div>
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/grid/js/Grid.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/grid/js/Grid.js
new file mode 100644
index 0000000000000000000000000000000000000000..608a64cbefd90e0f90f15a1c4cd1d0b8f3af8a56
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/lib/grid/js/Grid.js
@@ -0,0 +1,219 @@
+function Grid(columns, getDataList) {
+	this.init(columns, getDataList);
+}
+
+$.extend(Grid.prototype, {
+	init : function(columns, getDataList) {
+		this.columns = columns;
+		this.getDataList = getDataList;
+	},
+
+	render : function() {
+		var thisGrid = this;
+
+		thisGrid.panel = $("<div>").addClass("fuelux");
+
+		$.get("Grid.html", function(template) {
+			thisGrid.panel.html(template);
+			thisGrid.renderColumnDropdown();
+			thisGrid.panel.repeater({
+				defaultView : "list",
+				dataSource : function(options, callback) {
+					if (options.view == "list") {
+						thisGrid.list(options, callback);
+					}
+				},
+				list_selectable : false,
+				list_noItemsHTML : 'No items found',
+				list_rowRendered : function(helpers, callback) {
+					$(helpers.item).click(function() {
+						var rowIndex = helpers.item[0].rowIndex;
+						thisGrid.notifyRowClickListeners({
+							"index" : rowIndex,
+							"data" : thisGrid.result.datas[rowIndex],
+							"item" : thisGrid.result.items[rowIndex]
+						});
+					});
+
+					callback();
+				}
+			});
+		});
+
+		return thisGrid.panel;
+	},
+
+	renderColumnDropdown : function() {
+		var thisGrid = this;
+
+		var columnList = thisGrid.panel.find(".columnDropdown").find("ul");
+		columnList.click(function(e) {
+			e.stopPropagation();
+		});
+
+		thisGrid.columns.forEach(function(column, columnIndex) {
+			var checkbox = $("<input>").attr("type", "checkbox").attr("value", column.property).attr("checked", "checked");
+			checkbox.change(function() {
+				thisGrid.panel.repeater('render');
+			});
+			var label = $("<label>").attr("role", "menuitem").addClass("checkbox").text(column.label).append(checkbox);
+			var item = $("<li>").attr("role", "presentation").append(label);
+			columnList.append(item);
+		});
+	},
+
+	getAllColumns : function() {
+		return this.columns;
+	},
+
+	getVisibleColumns : function() {
+		var thisGrid = this;
+		var columns = [];
+
+		thisGrid.panel.find(".columnDropdown").find("input:checked").each(function(index, element) {
+			thisGrid.getAllColumns().forEach(function(column) {
+				var checkbox = $(element);
+				if (column.property == checkbox.val()) {
+					columns.push(column);
+				}
+			});
+		});
+
+		// add a dummy empty column (repeater does not properly handle visibility of the last column)
+		columns.push({
+			label : null,
+			property : null,
+			sortable : false
+		});
+
+		return columns;
+	},
+
+	filterData : function(dataList, filter) {
+		var thisGrid = this;
+
+		if (filter) {
+			filter = filter.toLowerCase();
+			dataList = dataList.filter(function(data) {
+				return thisGrid.columns.some(function(column) {
+					if (column.filter) {
+						return column.filter(data, filter);
+					} else {
+						var value = "" + data[column.property];
+						return value != null && value.toLowerCase().indexOf(filter) != -1;
+					}
+				});
+			});
+		}
+
+		return dataList;
+	},
+
+	sortData : function(dataList, sortProperty, sortDirection) {
+		var thisGrid = this;
+
+		if (sortProperty && sortDirection) {
+			var sortColumn = null;
+			thisGrid.columns.forEach(function(column) {
+				if (column.property == sortProperty) {
+					sortColumn = column;
+				}
+			});
+			if (sortColumn) {
+				var sortFunction = null;
+				var sortDirection = sortDirection == "asc" ? 1 : -1;
+
+				if (sortColumn.sort) {
+					sortFunction = sortColumn.sort;
+				} else {
+					sortFunction = function(data1, data2) {
+						var value1 = data1[sortColumn.property];
+						var value2 = data2[sortColumn.property];
+						return naturalSort(value1, value2);
+					};
+				}
+
+				dataList.sort(function(data1, data2) {
+					return sortDirection * sortFunction(data1, data2);
+				});
+			}
+		}
+
+		return dataList;
+	},
+
+	renderData : function(dataList) {
+		var thisGrid = this;
+		var items = [];
+
+		dataList.forEach(function(data) {
+			var item = {};
+			thisGrid.getVisibleColumns().forEach(function(column) {
+				var value = null;
+				if (column.render) {
+					value = column.render(data);
+				} else {
+					value = data[column.property];
+				}
+				item[column.property] = value;
+			});
+			items.push(item);
+		});
+
+		return items;
+	},
+
+	list : function(options, callback) {
+		var thisGrid = this;
+
+		thisGrid.getDataList(function(dataList) {
+
+			dataList = thisGrid.filterData(dataList, options.search);
+			dataList = thisGrid.sortData(dataList, options.sortProperty, options.sortDirection);
+
+			var result = {};
+			var defaultPageSize = 50;
+			var startIndex = options.pageIndex * (options.pageSize || defaultPageSize);
+			var endIndex = startIndex + (options.pageSize || defaultPageSize);
+			endIndex = (endIndex <= result.count) ? endIndex : dataList.length;
+
+			result.count = dataList.length;
+			result.datas = [];
+			result.items = [];
+			result.columns = thisGrid.getVisibleColumns();
+			result.page = options.pageIndex;
+			result.pages = Math.ceil(result.count / (options.pageSize || defaultPageSize));
+			result.start = startIndex + 1;
+			result.end = endIndex;
+
+			dataList = dataList.slice(startIndex, endIndex);
+			itemList = thisGrid.renderData(dataList);
+			itemList.forEach(function(item, index) {
+				result.datas.push(dataList[index]);
+				result.items.push(item);
+			});
+
+			// add some delay (repeater does not properly layout columns without it)
+			setTimeout(function() {
+				thisGrid.result = result;
+				callback(result);
+			}, 1);
+		});
+	},
+
+	addRowClickListener : function(listener) {
+		if (!this.rowClickListeners) {
+			this.rowClickListeners = [];
+		}
+		this.rowClickListeners.push(listener);
+	},
+
+	notifyRowClickListeners : function(event) {
+		if (this.rowClickListeners) {
+			this.rowClickListeners.forEach(function(listener) {
+				listener(event);
+			});
+		}
+	}
+
+});