diff --git a/cdn/js/bootstrap-fileupload.js b/cdn/js/bootstrap-fileupload.js
deleted file mode 100755
index e205f31..0000000
--- a/cdn/js/bootstrap-fileupload.js
+++ /dev/null
@@ -1,125 +0,0 @@
-/* ===========================================================
- * bootstrap-fileupload.js j1a
- * http://jasny.github.com/bootstrap/javascript.html#fileupload
- * ===========================================================
- * Copyright 2012 Jasny BV, Netherlands.
- *
- * Licensed under the Apache License, Version 2.0 (the "License")
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-!function ($) {
-
- "use strict"; // jshint ;_
-
- /* INPUTMASK PUBLIC CLASS DEFINITION
- * ================================= */
-
- var Fileupload = function (element, options) {
- this.$element = $(element)
- this.type = this.$element.data('uploadtype') || (this.$element.find('.thumbnail').length > 0 ? "image" : "file")
-
- this.$input = this.$element.find(':file')
- if (this.$input.length === 0) return
-
- this.name = this.$input.attr('name') || options.name
-
- this.$hidden = this.$element.find(':hidden[name="'+this.name+'"]')
- if (this.$hidden.length === 0) {
- this.$hidden = $('')
- this.$element.prepend(this.$hidden)
- }
-
- this.$preview = this.$element.find('.fileupload-preview')
- var height = this.$preview.css('height')
- if (this.$preview.css('display') != 'inline' && height != '0px' && height != 'none') this.$preview.css('line-height', height)
-
- this.$remove = this.$element.find('[data-dismiss="fileupload"]')
-
- this.listen()
- }
-
- Fileupload.prototype = {
-
- listen: function() {
- this.$input.on('change.fileupload', $.proxy(this.change, this))
- if (this.$remove) this.$remove.on('click.fileupload', $.proxy(this.clear, this))
- },
-
- change: function(e, invoked) {
- var file = e.target.files !== undefined ? e.target.files[0] : { name: e.target.value.replace(/^.+\\/, '') }
- if (!file || invoked === 'clear') return
-
- this.$hidden.attr('name', '')
- this.$input.attr('name', this.name)
-
- if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match('\\.(gif|png|jpe?g)$')) && typeof FileReader !== "undefined") {
- var reader = new FileReader()
- var preview = this.$preview
- var element = this.$element
-
- reader.onload = function(e) {
- preview.html('
')
- element.addClass('fileupload-exists').removeClass('fileupload-new')
- }
-
- reader.readAsDataURL(file)
- } else {
- this.$preview.text(file.name)
- this.$element.addClass('fileupload-exists').removeClass('fileupload-new')
- }
- },
-
- clear: function(e) {
- this.$hidden.val('')
- this.$hidden.attr('name', this.name)
- this.$input.attr('name', '')
-
- this.$preview.html('')
- this.$element.addClass('fileupload-new').removeClass('fileupload-exists')
-
- this.$input.trigger('change', [ 'clear' ])
-
- e.preventDefault()
- return false
- }
- }
-
-
- /* INPUTMASK PLUGIN DEFINITION
- * =========================== */
-
- $.fn.fileupload = function (options) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('fileupload')
- if (!data) $this.data('fileupload', (data = new Fileupload(this, options)))
- })
- }
-
- $.fn.fileupload.Constructor = Fileupload
-
-
- /* INPUTMASK DATA-API
- * ================== */
-
- $(function () {
- $('body').on('click.fileupload.data-api', '[data-provides="fileupload"]', function (e) {
- var $this = $(this)
- if ($this.data('fileupload')) return
- $this.fileupload($this.data())
-
- if ($(e.target).data('dismiss') == 'fileupload') $(e.target).trigger('click.fileupload')
- })
- })
-
-}(window.jQuery)
diff --git a/cdn/js/bootstrap-inputmask.js b/cdn/js/bootstrap-inputmask.js
deleted file mode 100755
index f741408..0000000
--- a/cdn/js/bootstrap-inputmask.js
+++ /dev/null
@@ -1,361 +0,0 @@
-/* ===========================================================
- * bootstrap-inputmask.js j1
- * http://twitter.github.com/bootstrap/javascript.html#tooltips
- * Based on Masked Input plugin by Josh Bush (digitalbush.com)
- * ===========================================================
- * Copyright 2012 Jasny BV, Netherlands.
- *
- * Licensed under the Apache License, Version 2.0 (the "License")
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-!function ($) {
-
- "use strict"; // jshint ;_;
-
- var isIphone = (window.orientation !== undefined),
- isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1
-
- $.mask = {
- //Predefined character definitions
- definitions: {
- '9': "[0-9]",
- 'a': "[A-Za-z]",
- '?': "[A-Za-z0-9]",
- '*': "."
- },
- dataName:"rawMaskFn"
- }
-
-
- /* INPUTMASK PUBLIC CLASS DEFINITION
- * ================================= */
-
- var Inputmask = function (element, options) {
- if (isAndroid) return // No support because caret positioning doesn't work on Android
-
- this.$element = $(element)
- this.mask = options.mask
- this.options = $.extend({}, $.fn.inputmask.defaults, options)
-
- this.init()
- this.listen()
-
- this.checkVal() //Perform initial check for existing values
- }
-
- Inputmask.prototype = {
-
- init: function() {
- var defs = $.mask.definitions
- var len = this.mask.length
-
- this.tests = []
- this.partialPosition = this.mask.length
- this.firstNonMaskPos = null
-
- $.each(this.mask.split(""), $.proxy(function(i, c) {
- if (c == '?') {
- len--
- this.partialPosition = i
- } else if (defs[c]) {
- this.tests.push(new RegExp(defs[c]))
- if(this.firstNonMaskPos === null)
- this.firstNonMaskPos = this.tests.length - 1
- } else {
- this.tests.push(null)
- }
- }, this))
-
- this.buffer = $.map(this.mask.split(""), $.proxy(function(c, i) {
- if (c != '?') return defs[c] ? this.options.placeholder : c
- }, this))
-
- this.focusText = this.$element.val()
-
- this.$element.data($.mask.dataName, $.proxy(function() {
- return $.map(this.buffer, function(c, i) {
- return this.tests[i] && c != this.options.placeholder ? c : null
- }).join('')
- }, this))
- },
-
- listen: function() {
- if (this.$element.attr("readonly")) return
-
- var pasteEventName = ($.browser.msie ? 'paste' : 'input') + ".mask"
-
- this.$element
- .on("unmask", $.proxy(this.unmask, this))
-
- .on("focus.mask", $.proxy(this.focusEvent, this))
- .on("blur.mask", $.proxy(this.blurEvent, this))
-
- .on("keydown.mask", $.proxy(this.keydownEvent, this))
- .on("keypress.mask", $.proxy(this.keypressEvent, this))
-
- .on(pasteEventName, $.proxy(this.pasteEvent, this))
- },
-
- //Helper Function for Caret positioning
- caret: function(begin, end) {
- if (this.$element.length === 0) return
- if (typeof begin == 'number') {
- end = (typeof end == 'number') ? end : begin
- return this.$element.each(function() {
- if (this.setSelectionRange) {
- this.setSelectionRange(begin, end)
- } else if (this.createTextRange) {
- var range = this.createTextRange()
- range.collapse(true)
- range.moveEnd('character', end)
- range.moveStart('character', begin)
- range.select()
- }
- })
- } else {
- if (this.$element[0].setSelectionRange) {
- begin = this.$element[0].selectionStart
- end = this.$element[0].selectionEnd
- } else if (document.selection && document.selection.createRange) {
- var range = document.selection.createRange()
- begin = 0 - range.duplicate().moveStart('character', -100000)
- end = begin + range.text.length
- }
- return {
- begin: begin,
- end: end
- }
- }
- },
-
- seekNext: function(pos) {
- var len = this.mask.length
- while (++pos <= len && !this.tests[pos]);
-
- return pos
- },
-
- seekPrev: function(pos) {
- while (--pos >= 0 && !this.tests[pos]);
-
- return pos
- },
-
- shiftL: function(begin,end) {
- var len = this.mask.length
-
- if(begin<0) return
-
- for (var i = begin,j = this.seekNext(end); i < len; i++) {
- if (this.tests[i]) {
- if (j < len && this.tests[i].test(this.buffer[j])) {
- this.buffer[i] = this.buffer[j]
- this.buffer[j] = this.options.placeholder
- } else
- break
- j = this.seekNext(j)
- }
- }
- this.writeBuffer()
- this.caret(Math.max(this.firstNonMaskPos, begin))
- },
-
- shiftR: function(pos) {
- var len = this.mask.length
-
- for (var i = pos, c = this.options.placeholder; i < len; i++) {
- if (this.tests[i]) {
- var j = this.seekNext(i)
- var t = this.buffer[i]
- this.buffer[i] = c
- if (j < len && this.tests[j].test(t))
- c = t
- else
- break
- }
- }
- },
-
- unmask: function() {
- this.$element
- .unbind(".mask")
- .removeData("inputmask")
- },
-
- focusEvent: function() {
- this.focusText = this.$element.val()
- var len = this.mask.length
- var pos = this.checkVal()
- this.writeBuffer()
-
- var that = this
- var moveCaret = function() {
- if (pos == len)
- that.caret(0, pos)
- else
- that.caret(pos)
- }
-
- if ($.browser.msie)
- moveCaret()
- else
- setTimeout(moveCaret, 0)
- },
-
- blurEvent: function() {
- this.checkVal()
- if (this.$element.val() != this.focusText)
- this.$element.trigger('change')
- },
-
- keydownEvent: function(e) {
- var k=e.which
-
- //backspace, delete, and escape get special treatment
- if (k == 8 || k == 46 || (isIphone && k == 127)) {
- var pos = this.caret(),
- begin = pos.begin,
- end = pos.end
-
- if (end-begin === 0) {
- begin = k!=46 ? this.seekPrev(begin) : (end=this.seekNext(begin-1))
- end = k==46 ? this.seekNext(end) : end
- }
- this.clearBuffer(begin, end)
- this.shiftL(begin,end-1)
-
- return false
- } else if (k == 27) {//escape
- this.$element.val(this.focusText)
- this.caret(0, this.checkVal())
- return false
- }
- },
-
- keypressEvent: function(e) {
- var len = this.mask.length
-
- var k = e.which,
- pos = this.caret()
-
- if (e.ctrlKey || e.altKey || e.metaKey || k<32) {//Ignore
- return true
- } else if (k) {
- if (pos.end - pos.begin !== 0) {
- this.clearBuffer(pos.begin, pos.end)
- this.shiftL(pos.begin, pos.end-1)
- }
-
- var p = this.seekNext(pos.begin - 1)
- if (p < len) {
- var c = String.fromCharCode(k)
- if (this.tests[p].test(c)) {
- this.shiftR(p)
- this.buffer[p] = c
- this.writeBuffer()
- var next = this.seekNext(p)
- this.caret(next)
- }
- }
- return false
- }
- },
-
- pasteEvent: function() {
- var that = this
-
- setTimeout(function() {
- that.caret(that.checkVal(true))
- }, 0)
- },
-
- clearBuffer: function(start, end) {
- var len = this.mask.length
-
- for (var i = start; i < end && i < len; i++) {
- if (this.tests[i])
- this.buffer[i] = this.options.placeholder
- }
- },
-
- writeBuffer: function() {
- return this.$element.val(this.buffer.join('')).val()
- },
-
- checkVal: function(allow) {
- var len = this.mask.length
- //try to place characters where they belong
- var test = this.$element.val()
- var lastMatch = -1
-
- for (var i = 0, pos = 0; i < len; i++) {
- if (this.tests[i]) {
- this.buffer[i] = this.options.placeholder
- while (pos++ < test.length) {
- var c = test.charAt(pos - 1)
- if (this.tests[i].test(c)) {
- this.buffer[i] = c
- lastMatch = i
- break
- }
- }
- if (pos > test.length)
- break
- } else if (this.buffer[i] == test.charAt(pos) && i != this.partialPosition) {
- pos++
- lastMatch = i
- }
- }
- if (!allow && lastMatch + 1 < this.partialPosition) {
- this.$element.val("")
- this.clearBuffer(0, len)
- } else if (allow || lastMatch + 1 >= this.partialPosition) {
- this.writeBuffer()
- if (!allow) this.$element.val(this.$element.val().substring(0, lastMatch + 1))
- }
- return (this.partialPosition ? i : this.firstNonMaskPos)
- }
- }
-
-
- /* INPUTMASK PLUGIN DEFINITION
- * =========================== */
-
- $.fn.inputmask = function (options) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('inputmask')
- if (!data) $this.data('inputmask', (data = new Inputmask(this, options)))
- })
- }
-
- $.fn.inputmask.defaults = {
- placeholder: "_"
- }
-
- $.fn.inputmask.Constructor = Inputmask
-
-
- /* INPUTMASK DATA-API
- * ================== */
-
- $(function () {
- $('body').on('focus.inputmask.data-api', '[data-mask]', function (e) {
- var $this = $(this)
- if ($this.data('inputmask')) return
- e.preventDefault()
- $this.inputmask($this.data())
- })
- })
-
-}(window.jQuery)
\ No newline at end of file
diff --git a/cdn/js/bootstrap-rowlink.js b/cdn/js/bootstrap-rowlink.js
deleted file mode 100755
index 7c8259f..0000000
--- a/cdn/js/bootstrap-rowlink.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/* ============================================================
- * bootstrap-rowlink.js j1
- * http://jasny.github.com/bootstrap/javascript.html#rowlink
- * ============================================================
- * Copyright 2012 Jasny BV, Netherlands.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-!function ($) {
-
- "use strict"; // jshint ;_;
-
- var Rowlink = function (element, options) {
- options = $.extend({}, $.fn.rowlink.defaults, options)
- var tr = element.nodeName == 'tr' ? $(element) : $(element).find('tr:has(td)')
-
- tr.each(function() {
- var link = $(this).find(options.target).first()
- if (!link.length) return
-
- var href = link.attr('href')
-
- $(this).find('td').not('.nolink').click(function() {
- window.location = href;
- })
-
- $(this).addClass('rowlink')
- link.replaceWith(link.html())
- })
- }
-
-
- /* ROWLINK PLUGIN DEFINITION
- * =========================== */
-
- $.fn.rowlink = function (options) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('rowlink')
- if (!data) $this.data('rowlink', (data = new Rowlink(this, options)))
- })
- }
-
- $.fn.rowlink.defaults = {
- target: "a"
- }
-
- $.fn.rowlink.Constructor = Rowlink
-
-
- /* ROWLINK DATA-API
- * ================== */
-
- $(function () {
- $('[data-provides="rowlink"]').each(function () {
- $(this).rowlink($(this).data())
- })
- })
-
-}(window.jQuery)
diff --git a/cdn/js/jasny-bootstrap.js b/cdn/js/jasny-bootstrap.js
deleted file mode 100755
index a54e621..0000000
--- a/cdn/js/jasny-bootstrap.js
+++ /dev/null
@@ -1,557 +0,0 @@
-/* ===========================================================
- * bootstrap-inputmask.js j1
- * http://twitter.github.com/bootstrap/javascript.html#tooltips
- * Based on Masked Input plugin by Josh Bush (digitalbush.com)
- * ===========================================================
- * Copyright 2012 Jasny BV, Netherlands.
- *
- * Licensed under the Apache License, Version 2.0 (the "License")
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-!function ($) {
-
- "use strict"; // jshint ;_;
-
- var isIphone = (window.orientation !== undefined),
- isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1
-
- $.mask = {
- //Predefined character definitions
- definitions: {
- '9': "[0-9]",
- 'a': "[A-Za-z]",
- '?': "[A-Za-z0-9]",
- '*': "."
- },
- dataName:"rawMaskFn"
- }
-
-
- /* INPUTMASK PUBLIC CLASS DEFINITION
- * ================================= */
-
- var Inputmask = function (element, options) {
- if (isAndroid) return // No support because caret positioning doesn't work on Android
-
- this.$element = $(element)
- this.mask = options.mask
- this.options = $.extend({}, $.fn.inputmask.defaults, options)
-
- this.init()
- this.listen()
-
- this.checkVal() //Perform initial check for existing values
- }
-
- Inputmask.prototype = {
-
- init: function() {
- var defs = $.mask.definitions
- var len = this.mask.length
-
- this.tests = []
- this.partialPosition = this.mask.length
- this.firstNonMaskPos = null
-
- $.each(this.mask.split(""), $.proxy(function(i, c) {
- if (c == '?') {
- len--
- this.partialPosition = i
- } else if (defs[c]) {
- this.tests.push(new RegExp(defs[c]))
- if(this.firstNonMaskPos === null)
- this.firstNonMaskPos = this.tests.length - 1
- } else {
- this.tests.push(null)
- }
- }, this))
-
- this.buffer = $.map(this.mask.split(""), $.proxy(function(c, i) {
- if (c != '?') return defs[c] ? this.options.placeholder : c
- }, this))
-
- this.focusText = this.$element.val()
-
- this.$element.data($.mask.dataName, $.proxy(function() {
- return $.map(this.buffer, function(c, i) {
- return this.tests[i] && c != this.options.placeholder ? c : null
- }).join('')
- }, this))
- },
-
- listen: function() {
- if (this.$element.attr("readonly")) return
-
- var pasteEventName = ($.browser.msie ? 'paste' : 'input') + ".mask"
-
- this.$element
- .on("unmask", $.proxy(this.unmask, this))
-
- .on("focus.mask", $.proxy(this.focusEvent, this))
- .on("blur.mask", $.proxy(this.blurEvent, this))
-
- .on("keydown.mask", $.proxy(this.keydownEvent, this))
- .on("keypress.mask", $.proxy(this.keypressEvent, this))
-
- .on(pasteEventName, $.proxy(this.pasteEvent, this))
- },
-
- //Helper Function for Caret positioning
- caret: function(begin, end) {
- if (this.$element.length === 0) return
- if (typeof begin == 'number') {
- end = (typeof end == 'number') ? end : begin
- return this.$element.each(function() {
- if (this.setSelectionRange) {
- this.setSelectionRange(begin, end)
- } else if (this.createTextRange) {
- var range = this.createTextRange()
- range.collapse(true)
- range.moveEnd('character', end)
- range.moveStart('character', begin)
- range.select()
- }
- })
- } else {
- if (this.$element[0].setSelectionRange) {
- begin = this.$element[0].selectionStart
- end = this.$element[0].selectionEnd
- } else if (document.selection && document.selection.createRange) {
- var range = document.selection.createRange()
- begin = 0 - range.duplicate().moveStart('character', -100000)
- end = begin + range.text.length
- }
- return {
- begin: begin,
- end: end
- }
- }
- },
-
- seekNext: function(pos) {
- var len = this.mask.length
- while (++pos <= len && !this.tests[pos]);
-
- return pos
- },
-
- seekPrev: function(pos) {
- while (--pos >= 0 && !this.tests[pos]);
-
- return pos
- },
-
- shiftL: function(begin,end) {
- var len = this.mask.length
-
- if(begin<0) return
-
- for (var i = begin,j = this.seekNext(end); i < len; i++) {
- if (this.tests[i]) {
- if (j < len && this.tests[i].test(this.buffer[j])) {
- this.buffer[i] = this.buffer[j]
- this.buffer[j] = this.options.placeholder
- } else
- break
- j = this.seekNext(j)
- }
- }
- this.writeBuffer()
- this.caret(Math.max(this.firstNonMaskPos, begin))
- },
-
- shiftR: function(pos) {
- var len = this.mask.length
-
- for (var i = pos, c = this.options.placeholder; i < len; i++) {
- if (this.tests[i]) {
- var j = this.seekNext(i)
- var t = this.buffer[i]
- this.buffer[i] = c
- if (j < len && this.tests[j].test(t))
- c = t
- else
- break
- }
- }
- },
-
- unmask: function() {
- this.$element
- .unbind(".mask")
- .removeData("inputmask")
- },
-
- focusEvent: function() {
- this.focusText = this.$element.val()
- var len = this.mask.length
- var pos = this.checkVal()
- this.writeBuffer()
-
- var that = this
- var moveCaret = function() {
- if (pos == len)
- that.caret(0, pos)
- else
- that.caret(pos)
- }
-
- if ($.browser.msie)
- moveCaret()
- else
- setTimeout(moveCaret, 0)
- },
-
- blurEvent: function() {
- this.checkVal()
- if (this.$element.val() != this.focusText)
- this.$element.trigger('change')
- },
-
- keydownEvent: function(e) {
- var k=e.which
-
- //backspace, delete, and escape get special treatment
- if (k == 8 || k == 46 || (isIphone && k == 127)) {
- var pos = this.caret(),
- begin = pos.begin,
- end = pos.end
-
- if (end-begin === 0) {
- begin = k!=46 ? this.seekPrev(begin) : (end=this.seekNext(begin-1))
- end = k==46 ? this.seekNext(end) : end
- }
- this.clearBuffer(begin, end)
- this.shiftL(begin,end-1)
-
- return false
- } else if (k == 27) {//escape
- this.$element.val(this.focusText)
- this.caret(0, this.checkVal())
- return false
- }
- },
-
- keypressEvent: function(e) {
- var len = this.mask.length
-
- var k = e.which,
- pos = this.caret()
-
- if (e.ctrlKey || e.altKey || e.metaKey || k<32) {//Ignore
- return true
- } else if (k) {
- if (pos.end - pos.begin !== 0) {
- this.clearBuffer(pos.begin, pos.end)
- this.shiftL(pos.begin, pos.end-1)
- }
-
- var p = this.seekNext(pos.begin - 1)
- if (p < len) {
- var c = String.fromCharCode(k)
- if (this.tests[p].test(c)) {
- this.shiftR(p)
- this.buffer[p] = c
- this.writeBuffer()
- var next = this.seekNext(p)
- this.caret(next)
- }
- }
- return false
- }
- },
-
- pasteEvent: function() {
- var that = this
-
- setTimeout(function() {
- that.caret(that.checkVal(true))
- }, 0)
- },
-
- clearBuffer: function(start, end) {
- var len = this.mask.length
-
- for (var i = start; i < end && i < len; i++) {
- if (this.tests[i])
- this.buffer[i] = this.options.placeholder
- }
- },
-
- writeBuffer: function() {
- return this.$element.val(this.buffer.join('')).val()
- },
-
- checkVal: function(allow) {
- var len = this.mask.length
- //try to place characters where they belong
- var test = this.$element.val()
- var lastMatch = -1
-
- for (var i = 0, pos = 0; i < len; i++) {
- if (this.tests[i]) {
- this.buffer[i] = this.options.placeholder
- while (pos++ < test.length) {
- var c = test.charAt(pos - 1)
- if (this.tests[i].test(c)) {
- this.buffer[i] = c
- lastMatch = i
- break
- }
- }
- if (pos > test.length)
- break
- } else if (this.buffer[i] == test.charAt(pos) && i != this.partialPosition) {
- pos++
- lastMatch = i
- }
- }
- if (!allow && lastMatch + 1 < this.partialPosition) {
- this.$element.val("")
- this.clearBuffer(0, len)
- } else if (allow || lastMatch + 1 >= this.partialPosition) {
- this.writeBuffer()
- if (!allow) this.$element.val(this.$element.val().substring(0, lastMatch + 1))
- }
- return (this.partialPosition ? i : this.firstNonMaskPos)
- }
- }
-
-
- /* INPUTMASK PLUGIN DEFINITION
- * =========================== */
-
- $.fn.inputmask = function (options) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('inputmask')
- if (!data) $this.data('inputmask', (data = new Inputmask(this, options)))
- })
- }
-
- $.fn.inputmask.defaults = {
- placeholder: "_"
- }
-
- $.fn.inputmask.Constructor = Inputmask
-
-
- /* INPUTMASK DATA-API
- * ================== */
-
- $(function () {
- $('body').on('focus.inputmask.data-api', '[data-mask]', function (e) {
- var $this = $(this)
- if ($this.data('inputmask')) return
- e.preventDefault()
- $this.inputmask($this.data())
- })
- })
-
-}(window.jQuery)/* ============================================================
- * bootstrap-rowlink.js j1
- * http://jasny.github.com/bootstrap/javascript.html#rowlink
- * ============================================================
- * Copyright 2012 Jasny BV, Netherlands.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-!function ($) {
-
- "use strict"; // jshint ;_;
-
- var Rowlink = function (element, options) {
- options = $.extend({}, $.fn.rowlink.defaults, options)
- var tr = element.nodeName == 'tr' ? $(element) : $(element).find('tr:has(td)')
-
- tr.each(function() {
- var link = $(this).find(options.target).first()
- if (!link.length) return
-
- var href = link.attr('href')
-
- $(this).find('td').not('.nolink').click(function() {
- window.location = href;
- })
-
- $(this).addClass('rowlink')
- link.replaceWith(link.html())
- })
- }
-
-
- /* ROWLINK PLUGIN DEFINITION
- * =========================== */
-
- $.fn.rowlink = function (options) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('rowlink')
- if (!data) $this.data('rowlink', (data = new Rowlink(this, options)))
- })
- }
-
- $.fn.rowlink.defaults = {
- target: "a"
- }
-
- $.fn.rowlink.Constructor = Rowlink
-
-
- /* ROWLINK DATA-API
- * ================== */
-
- $(function () {
- $('[data-provides="rowlink"]').each(function () {
- $(this).rowlink($(this).data())
- })
- })
-
-}(window.jQuery)
-/* ===========================================================
- * bootstrap-fileupload.js j1a
- * http://jasny.github.com/bootstrap/javascript.html#fileupload
- * ===========================================================
- * Copyright 2012 Jasny BV, Netherlands.
- *
- * Licensed under the Apache License, Version 2.0 (the "License")
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-!function ($) {
-
- "use strict"; // jshint ;_
-
- /* INPUTMASK PUBLIC CLASS DEFINITION
- * ================================= */
-
- var Fileupload = function (element, options) {
- this.$element = $(element)
- this.type = this.$element.data('uploadtype') || (this.$element.find('.thumbnail').length > 0 ? "image" : "file")
-
- this.$input = this.$element.find(':file')
- if (this.$input.length === 0) return
-
- this.name = this.$input.attr('name') || options.name
-
- this.$hidden = this.$element.find(':hidden[name="'+this.name+'"]')
- if (this.$hidden.length === 0) {
- this.$hidden = $('')
- this.$element.prepend(this.$hidden)
- }
-
- this.$preview = this.$element.find('.fileupload-preview')
- var height = this.$preview.css('height')
- if (this.$preview.css('display') != 'inline' && height != '0px' && height != 'none') this.$preview.css('line-height', height)
-
- this.$remove = this.$element.find('[data-dismiss="fileupload"]')
-
- this.listen()
- }
-
- Fileupload.prototype = {
-
- listen: function() {
- this.$input.on('change.fileupload', $.proxy(this.change, this))
- if (this.$remove) this.$remove.on('click.fileupload', $.proxy(this.clear, this))
- },
-
- change: function(e, invoked) {
- var file = e.target.files !== undefined ? e.target.files[0] : { name: e.target.value.replace(/^.+\\/, '') }
- if (!file || invoked === 'clear') return
-
- this.$hidden.val('')
- this.$hidden.attr('name', '')
- this.$input.attr('name', this.name)
-
- if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match('\\.(gif|png|jpe?g)$')) && typeof FileReader !== "undefined") {
- var reader = new FileReader()
- var preview = this.$preview
- var element = this.$element
-
- reader.onload = function(e) {
- preview.html('
')
- element.addClass('fileupload-exists').removeClass('fileupload-new')
- }
-
- reader.readAsDataURL(file)
- } else {
- this.$preview.text(file.name)
- this.$element.addClass('fileupload-exists').removeClass('fileupload-new')
- }
- },
-
- clear: function(e) {
- this.$hidden.val('')
- this.$hidden.attr('name', this.name)
- this.$input.attr('name', '')
-
- this.$preview.html('')
- this.$element.addClass('fileupload-new').removeClass('fileupload-exists')
-
- this.$input.trigger('change', [ 'clear' ])
-
- e.preventDefault()
- return false
- }
- }
-
-
- /* INPUTMASK PLUGIN DEFINITION
- * =========================== */
-
- $.fn.fileupload = function (options) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('fileupload')
- if (!data) $this.data('fileupload', (data = new Fileupload(this, options)))
- })
- }
-
- $.fn.fileupload.Constructor = Fileupload
-
-
- /* INPUTMASK DATA-API
- * ================== */
-
- $(function () {
- $('body').on('click.fileupload.data-api', '[data-provides="fileupload"]', function (e) {
- var $this = $(this)
- if ($this.data('fileupload')) return
- $this.fileupload($this.data())
-
- if ($(e.target).data('dismiss') == 'fileupload') $(e.target).trigger('click.fileupload')
- })
- })
-
-}(window.jQuery)
diff --git a/cdn/js/jasny-bootstrap.min.js b/cdn/js/jasny-bootstrap.min.js
index d5d873e..ea8def6 100755
--- a/cdn/js/jasny-bootstrap.min.js
+++ b/cdn/js/jasny-bootstrap.min.js
@@ -1,6 +1 @@
-/*!
-* Jasny-Bootstrap.js by @ArnoldDaniels
-* Copyright 2012 Jasny BV.
-* http://www.apache.org/licenses/LICENSE-2.0.txt
-*/
!function(e){"use strict";var t=window.orientation!==undefined,n=navigator.userAgent.toLowerCase().indexOf("android")>-1;e.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","?":"[A-Za-z0-9]","*":"."},dataName:"rawMaskFn"};var r=function(t,r){if(n)return;this.$element=e(t),this.mask=r.mask,this.options=e.extend({},e.fn.inputmask.defaults,r),this.init(),this.listen(),this.checkVal()};r.prototype={init:function(){var t=e.mask.definitions,n=this.mask.length;this.tests=[],this.partialPosition=this.mask.length,this.firstNonMaskPos=null,e.each(this.mask.split(""),e.proxy(function(e,r){r=="?"?(n--,this.partialPosition=e):t[r]?(this.tests.push(new RegExp(t[r])),this.firstNonMaskPos===null&&(this.firstNonMaskPos=this.tests.length-1)):this.tests.push(null)},this)),this.buffer=e.map(this.mask.split(""),e.proxy(function(e,n){if(e!="?")return t[e]?this.options.placeholder:e},this)),this.focusText=this.$element.val(),this.$element.data(e.mask.dataName,e.proxy(function(){return e.map(this.buffer,function(e,t){return this.tests[t]&&e!=this.options.placeholder?e:null}).join("")},this))},listen:function(){if(this.$element.attr("readonly"))return;var t=(e.browser.msie?"paste":"input")+".mask";this.$element.on("unmask",e.proxy(this.unmask,this)).on("focus.mask",e.proxy(this.focusEvent,this)).on("blur.mask",e.proxy(this.blurEvent,this)).on("keydown.mask",e.proxy(this.keydownEvent,this)).on("keypress.mask",e.proxy(this.keypressEvent,this)).on(t,e.proxy(this.pasteEvent,this))},caret:function(e,t){if(this.$element.length===0)return;if(typeof e=="number")return t=typeof t=="number"?t:e,this.$element.each(function(){if(this.setSelectionRange)this.setSelectionRange(e,t);else if(this.createTextRange){var n=this.createTextRange();n.collapse(!0),n.moveEnd("character",t),n.moveStart("character",e),n.select()}});if(this.$element[0].setSelectionRange)e=this.$element[0].selectionStart,t=this.$element[0].selectionEnd;else if(document.selection&&document.selection.createRange){var n=document.selection.createRange();e=0-n.duplicate().moveStart("character",-1e5),t=e+n.text.length}return{begin:e,end:t}},seekNext:function(e){var t=this.mask.length;while(++e<=t&&!this.tests[e]);return e},seekPrev:function(e){while(--e>=0&&!this.tests[e]);return e},shiftL:function(e,t){var n=this.mask.length;if(e<0)return;for(var r=e,i=this.seekNext(t);rn.length)break}else this.buffer[i]==n.charAt(s)&&i!=this.partialPosition&&(s++,r=i);if(!e&&r+1=this.partialPosition)this.writeBuffer(),e||this.$element.val(this.$element.val().substring(0,r+1));return this.partialPosition?i:this.firstNonMaskPos}},e.fn.inputmask=function(t){return this.each(function(){var n=e(this),i=n.data("inputmask");i||n.data("inputmask",i=new r(this,t))})},e.fn.inputmask.defaults={placeholder:"_"},e.fn.inputmask.Constructor=r,e(function(){e("body").on("focus.inputmask.data-api","[data-mask]",function(t){var n=e(this);if(n.data("inputmask"))return;t.preventDefault(),n.inputmask(n.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t,n){n=e.extend({},e.fn.rowlink.defaults,n);var r=t.nodeName=="tr"?e(t):e(t).find("tr:has(td)");r.each(function(){var t=e(this).find(n.target).first();if(!t.length)return;var r=t.attr("href");e(this).find("td").not(".nolink").click(function(){window.location=r}),e(this).addClass("rowlink"),t.replaceWith(t.html())})};e.fn.rowlink=function(n){return this.each(function(){var r=e(this),i=r.data("rowlink");i||r.data("rowlink",i=new t(this,n))})},e.fn.rowlink.defaults={target:"a"},e.fn.rowlink.Constructor=t,e(function(){e('[data-provides="rowlink"]').each(function(){e(this).rowlink(e(this).data())})})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.type=this.$element.data("uploadtype")||(this.$element.find(".thumbnail").length>0?"image":"file"),this.$input=this.$element.find(":file");if(this.$input.length===0)return;this.name=this.$input.attr("name")||n.name,this.$hidden=this.$element.find(':hidden[name="'+this.name+'"]'),this.$hidden.length===0&&(this.$hidden=e(''),this.$element.prepend(this.$hidden)),this.$preview=this.$element.find(".fileupload-preview");var r=this.$preview.css("height");this.$preview.css("display")!="inline"&&r!="0px"&&r!="none"&&this.$preview.css("line-height",r),this.$remove=this.$element.find('[data-dismiss="fileupload"]'),this.listen()};t.prototype={listen:function(){this.$input.on("change.fileupload",e.proxy(this.change,this)),this.$remove&&this.$remove.on("click.fileupload",e.proxy(this.clear,this))},change:function(e,t){var n=e.target.files!==undefined?e.target.files[0]:{name:e.target.value.replace(/^.+\\/,"")};if(!n||t==="clear")return;this.$hidden.val(""),this.$hidden.attr("name",""),this.$input.attr("name",this.name);if(this.type==="image"&&this.$preview.length>0&&(typeof n.type!="undefined"?n.type.match("image.*"):n.name.match("\\.(gif|png|jpe?g)$"))&&typeof FileReader!="undefined"){var r=new FileReader,i=this.$preview,s=this.$element;r.onload=function(e){i.html('
"),s.addClass("fileupload-exists").removeClass("fileupload-new")},r.readAsDataURL(n)}else this.$preview.text(n.name),this.$element.addClass("fileupload-exists").removeClass("fileupload-new")},clear:function(e){return this.$hidden.val(""),this.$hidden.attr("name",this.name),this.$input.attr("name",""),this.$preview.html(""),this.$element.addClass("fileupload-new").removeClass("fileupload-exists"),this.$input.trigger("change",["clear"]),e.preventDefault(),!1}},e.fn.fileupload=function(n){return this.each(function(){var r=e(this),i=r.data("fileupload");i||r.data("fileupload",i=new t(this,n))})},e.fn.fileupload.Constructor=t,e(function(){e("body").on("click.fileupload.data-api",'[data-provides="fileupload"]',function(t){var n=e(this);if(n.data("fileupload"))return;n.fileupload(n.data()),e(t.target).data("dismiss")=="fileupload"&&e(t.target).trigger("click.fileupload")})})}(window.jQuery);
\ No newline at end of file