From f0e5774023f8fae457a16cfd575192ff9411860a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Maur=C3=ADcio?= Date: Mon, 5 May 2014 16:04:45 +0000 Subject: [PATCH] git-svn-id: https://svn.coded.pt/svn/SIPRP@1887 bb69d46d-e84e-40c8-a05a-06db0d633741 --- .../WebContent/static/html/GetViewsHtml.aspx | 1 - .../html/app/Documents/DocumentsController.js | 153 + .../html/app/Documents/DocumentsView.html | 86 + .../static/html/app/Form1/Form1Controller.js | 69 +- .../static/html/app/Form1/Form1View.html | 52 +- .../static/html/app/Form2/Form2Controller.js | 34 +- .../static/html/app/Form2/Form2View.html | 2 + .../static/html/app/Form3/Form3Controller.js | 38 +- .../static/html/app/Form3/Form3View.html | 193 +- .../static/html/app/Form4/Form4Controller.js | 36 +- .../static/html/app/Form4/Form4View.html | 169 +- .../static/html/app/Form5/Form5Controller.js | 152 + .../static/html/app/Form5/Form5View.html | 298 ++ .../static/html/app/Main/MainController.js | 4 +- .../html/app/SearchForm/SearchController.js | 54 +- .../html/app/SearchForm/SearchView.html | 33 +- .../html/app/directives/ModalWindow.html | 12 +- .../static/html/app/directives/customCombo.js | 10 +- .../static/html/app/directives/fileUpload.js | 133 + .../static/html/app/directives/modalWindow.js | 6 +- .../static/html/app/directives/typeahead.js | 76 - .../static/html/app/services/Plugins.js | 76 +- .../static/html/app/services/StaticData.js | 25 +- .../WebContent/static/html/css/theme.css | 44 +- .../WebContent/static/html/index.html | 20 +- .../Bootstrap-3-Typeahead.url | 5 - .../bootstrap3-typeahead.js | 397 -- .../js/jQuery-File-Upload/css/demo-ie8.css | 21 + .../html/js/jQuery-File-Upload/css/demo.css | 67 + .../css/jquery.fileupload-ui-noscript.css | 27 + .../css/jquery.fileupload-ui.css | 68 + .../html/js/jQuery-File-Upload/css/style.css | 15 + .../js/jQuery-File-Upload/img/loading.gif | Bin 0 -> 3897 bytes .../js/jQuery-File-Upload/img/progressbar.gif | Bin 0 -> 3323 bytes .../html/js/jQuery-File-Upload/js/app.js | 101 + .../js/cors/jquery.postmessage-transport.js | 118 + .../js/cors/jquery.xdr-transport.js | 87 + .../js/jquery.fileupload-angular.js | 401 ++ .../js/jquery.fileupload-audio.js | 106 + .../js/jquery.fileupload-image.js | 292 ++ .../js/jquery.fileupload-jquery-ui.js | 138 + .../js/jquery.fileupload-process.js | 164 + .../js/jquery.fileupload-ui.js | 647 ++++ .../js/jquery.fileupload-validate.js | 117 + .../js/jquery.fileupload-video.js | 106 + .../js/jquery.fileupload.js | 1333 +++++++ .../js/jquery.iframe-transport.js | 205 + .../html/js/jQuery-File-Upload/js/main.js | 76 + .../js/vendor/jquery.ui.widget.js | 530 +++ .../static/html/js/select2/.gitignore | 2 - .../WebContent/static/html/js/select2/LICENSE | 18 - .../static/html/js/select2/README.md | 84 - .../static/html/js/select2/bower.json | 8 - .../static/html/js/select2/component.json | 66 - .../static/html/js/select2/composer.json | 29 - .../static/html/js/select2/online-docs.url | 5 - .../static/html/js/select2/package.json | 20 - .../static/html/js/select2/release.sh | 79 - .../html/js/select2/select2-bootstrap.css | 87 - .../html/js/select2/select2-spinner.gif | Bin 1849 -> 0 bytes .../static/html/js/select2/select2.css | 646 ---- .../html/js/select2/select2.jquery.json | 36 - .../static/html/js/select2/select2.js | 3397 ----------------- .../static/html/js/select2/select2.min.js | 22 - .../static/html/js/select2/select2.png | Bin 613 -> 0 bytes .../html/js/select2/select2_locale_ar.js | 17 - .../html/js/select2/select2_locale_bg.js | 18 - .../html/js/select2/select2_locale_ca.js | 17 - .../html/js/select2/select2_locale_cs.js | 49 - .../html/js/select2/select2_locale_da.js | 17 - .../html/js/select2/select2_locale_de.js | 15 - .../html/js/select2/select2_locale_el.js | 17 - .../js/select2/select2_locale_en.js.template | 18 - .../html/js/select2/select2_locale_es.js | 15 - .../html/js/select2/select2_locale_et.js | 17 - .../html/js/select2/select2_locale_eu.js | 43 - .../html/js/select2/select2_locale_fa.js | 19 - .../html/js/select2/select2_locale_fi.js | 28 - .../html/js/select2/select2_locale_fr.js | 15 - .../html/js/select2/select2_locale_gl.js | 43 - .../html/js/select2/select2_locale_he.js | 17 - .../html/js/select2/select2_locale_hr.js | 22 - .../html/js/select2/select2_locale_hu.js | 15 - .../html/js/select2/select2_locale_id.js | 17 - .../html/js/select2/select2_locale_is.js | 15 - .../html/js/select2/select2_locale_it.js | 15 - .../html/js/select2/select2_locale_ja.js | 15 - .../html/js/select2/select2_locale_ka.js | 17 - .../html/js/select2/select2_locale_ko.js | 17 - .../html/js/select2/select2_locale_lt.js | 24 - .../html/js/select2/select2_locale_lv.js | 17 - .../html/js/select2/select2_locale_mk.js | 17 - .../html/js/select2/select2_locale_ms.js | 17 - .../html/js/select2/select2_locale_nl.js | 15 - .../html/js/select2/select2_locale_no.js | 18 - .../html/js/select2/select2_locale_pl.js | 22 - .../html/js/select2/select2_locale_pt-BR.js | 15 - .../html/js/select2/select2_locale_pt-PT.js | 15 - .../html/js/select2/select2_locale_ro.js | 15 - .../html/js/select2/select2_locale_rs.js | 17 - .../html/js/select2/select2_locale_ru.js | 21 - .../html/js/select2/select2_locale_sk.js | 48 - .../html/js/select2/select2_locale_sv.js | 17 - .../html/js/select2/select2_locale_th.js | 17 - .../html/js/select2/select2_locale_tr.js | 17 - .../html/js/select2/select2_locale_uk.js | 22 - .../html/js/select2/select2_locale_vi.js | 18 - .../html/js/select2/select2_locale_zh-CN.js | 14 - .../html/js/select2/select2_locale_zh-TW.js | 14 - .../static/html/js/select2/select2x2.png | Bin 845 -> 0 bytes .../WebContent/static/html/views-all.html | 2 +- 111 files changed, 5978 insertions(+), 6198 deletions(-) delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/GetViewsHtml.aspx create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Documents/DocumentsController.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Documents/DocumentsView.html create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form5/Form5Controller.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form5/Form5View.html create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/fileUpload.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/typeahead.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/bootstrap3-typeahead/Bootstrap-3-Typeahead.url delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/bootstrap3-typeahead/bootstrap3-typeahead.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/demo-ie8.css create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/demo.css create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/jquery.fileupload-ui-noscript.css create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/jquery.fileupload-ui.css create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/style.css create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/img/loading.gif create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/img/progressbar.gif create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/app.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/cors/jquery.postmessage-transport.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/cors/jquery.xdr-transport.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-angular.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-audio.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-image.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-jquery-ui.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-process.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-ui.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-validate.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-video.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.iframe-transport.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/main.js create mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/vendor/jquery.ui.widget.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/.gitignore delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/LICENSE delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/README.md delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/bower.json delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/component.json delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/composer.json delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/online-docs.url delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/package.json delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/release.sh delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2-bootstrap.css delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2-spinner.gif delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.css delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.jquery.json delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.min.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.png delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ar.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_bg.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ca.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_cs.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_da.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_de.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_el.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_en.js.template delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_es.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_et.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_eu.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_fa.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_fi.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_fr.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_gl.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_he.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_hr.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_hu.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_id.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_is.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_it.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ja.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ka.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ko.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_lt.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_lv.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_mk.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ms.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_nl.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_no.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_pl.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_pt-BR.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_pt-PT.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ro.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_rs.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ru.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_sk.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_sv.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_th.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_tr.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_uk.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_vi.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_zh-CN.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_zh-TW.js delete mode 100644 trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2x2.png diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/GetViewsHtml.aspx b/trunk/SiprpWebFichasClinicas/WebContent/static/html/GetViewsHtml.aspx deleted file mode 100644 index e1eda0b5..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/GetViewsHtml.aspx +++ /dev/null @@ -1 +0,0 @@ -<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GetViewsHtml.aspx.cs" Inherits="siprp.GetViewsHtml" %> \ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Documents/DocumentsController.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Documents/DocumentsController.js new file mode 100644 index 00000000..85bc29ad --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Documents/DocumentsController.js @@ -0,0 +1,153 @@ +evoapp.controller('DocumentsController', function($rootScope, $scope, $timeout, $compile, $injector, $filter, globals) +{ + $scope.globals = globals; + + $scope.globals = globals; + + $scope.showList = true; + $scope.showEdit = false; + + var documentos = [ + { + id: 1, + nome: 'documento 1' + }, + { + id: 2, + nome: 'documento 2' + }, + { + id: 3, + nome: 'documento 3' + }, + { + id: 4, + nome: 'documento 4' + }, + { + id: 5, + nome: 'documento 5' + }, + { + id: 6, + nome: 'documento 6' + } + ]; + + $scope.storeDocuments = new globals.dataService.store({ + model: null, + actions: { + //get: 'GetDisciplines', + //upsert: 'UpsertDiscipline', + //destroy: 'DeleteDiscipline' + } + }); + + $scope.list = function(){ + + //$scope.storeDocuments.get(function(response, status, headers, config, items){ + + //}); + }; + + $scope.add = function(){ + + $scope.editForm.$reset(); + + $scope.selected = {}; + + $scope.editing = { + nome: '' + }; + + $scope.showList = false; + $scope.showEdit = true; + }; + + $scope.edit = function(selected){ + + $scope.editForm.$reset(); + + $scope.selected = selected; + + $scope.editing = angular.copy(selected); + + $scope.showList = false; + $scope.showEdit = true; + + if($scope.fileInputDocument) + { + $scope.fileInputDocument.reset(); + } + }; + + $scope.save = function(){ + + var isValid = $scope.editForm.$isValid(); + + if(isValid) + { + //TODO: store upsert + + $scope.uploadDocument(); + } + }; + + $scope.destroy = function(){ + + globals.message.confirm({ + question: 'Tem a certeza que deseja continuar?', + answer: function(result){ + + if(result) + { + + } + } + }); + }; + + $scope.cancel = function(){ + + //if($scope.isNewRecord) + //{ + // $scope.isNewRecord = false; + + // $scope.list(); + //} + + $scope.showList = true; + $scope.showEdit = false; + }; + + $scope.download = function(item){ + + globals.message.alert({ + message: 'Abrir o documento: ' + item.nome, + callback: function(){ + + } + }); + }; + + $scope.uploadDocument = function(){ + + if($scope.fileInputDocument) + { + $scope.fileInputDocument.upload($scope.editing, function(result, textStatus, jqXHR){ + + var data = result.data[0]; + + //$scope.editing.Picture = data.Picture; + //$scope.selected.Picture = data.Picture; + + //$scope.userPicture.update($scope.editing); + }); + } + }; + + $scope.$on('afterrender', function(event, args){ + + $scope.storeDocuments.loadData(documentos); + }); +}); \ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Documents/DocumentsView.html b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Documents/DocumentsView.html new file mode 100644 index 00000000..96459765 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Documents/DocumentsView.html @@ -0,0 +1,86 @@ + +
+ + +
+ +
+ + + + + + + + + +
{{item.nome}} + + +
+ + + +
+ +
+
+ + + +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ + +
+ +
+ + + + +
+ +
+ + + +
+ +
+ +
+ +
+ +
\ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form1/Form1Controller.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form1/Form1Controller.js index c90ddf81..acfaa8cd 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form1/Form1Controller.js +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form1/Form1Controller.js @@ -2,7 +2,29 @@ { $scope.globals = globals; - //$scope.isNewRecord = false; + var scrollspyItems = $( + '
' + + ' ' + + '
' + ); $scope.descricao = null; @@ -19,7 +41,20 @@ $scope.add = function(selected){ - globals.plugins.buildFloatingSideMenu(); + globals.plugins.buildFloatingSideMenu({ + title: 'Ficha Clinica', + scrollspyItems: scrollspyItems, + afterrender: function(){ + + $('body').scrollspy({ + target: '#scrollspyItems' + }); + }, + documentclick: function(){ + + $scope.openModalDocumentos(); + } + }); $scope.editForm.$reset(); @@ -33,7 +68,20 @@ $scope.edit = function(selected){ - globals.plugins.buildFloatingSideMenu(); + globals.plugins.buildFloatingSideMenu({ + title: 'Ficha Clinica', + scrollspyItems: scrollspyItems, + afterrender: function(){ + + $('body').scrollspy({ + target: '#scrollspyItems' + }); + }, + documentclick: function(){ + + $scope.openModalDocumentos(); + } + }); $timeout(function () { @@ -97,7 +145,6 @@ angular.element(scope.comboTrabalhadores.domEl).triggerHandler('change'); }); } - }); } }; @@ -210,6 +257,20 @@ } }); }; + + $scope.openModalDocumentos = function(){ + + $scope.modalDocumentos.show({ + + }); + + $scope.modalDocumentos.viewController.list(); + + $scope.modalDocumentos.viewController.$on('onAfterEdit', function(event, args) { + + //$scope.modalDocumentos.hide(); + }); + }; $scope.$on('afterrender', function(event, args){ diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form1/Form1View.html b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form1/Form1View.html index d2954474..3d31d9b5 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form1/Form1View.html +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form1/Form1View.html @@ -12,7 +12,7 @@

Ficha Clínica

-
+
@@ -3705,55 +3705,7 @@

 

 

- - - + diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form2/Form2Controller.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form2/Form2Controller.js index 310b68b8..a393901b 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form2/Form2Controller.js +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form2/Form2Controller.js @@ -16,6 +16,14 @@ }); $scope.add = function(selected){ + + globals.plugins.buildFloatingSideMenu({ + title: 'Ficha Clinica', + documentclick: function(){ + + $scope.openModalDocumentos(); + } + }); $scope.editForm.$reset(); @@ -24,6 +32,14 @@ $scope.edit = function(selected){ + globals.plugins.buildFloatingSideMenu({ + title: 'Ficha Clinica', + documentclick: function(){ + + $scope.openModalDocumentos(); + } + }); + $timeout(function () { $scope.editForm.$reset(); @@ -90,6 +106,8 @@ className: 'btn-danger', callback: function() { + globals.plugins.hideFloatingSideMenu(); + $scope.$parent.loadModule({Controller: 'Search'}, function(className, scope, isNewModule){ angular.element(scope.comboTrabalhadores.domEl).triggerHandler('change'); @@ -102,7 +120,7 @@ callback: function() { $scope.save(false); - globals.plugins.hideSideMenu(); + globals.plugins.hideFloatingSideMenu(); $scope.$parent.loadModule({Controller: 'Search'}, function(className, scope, isNewModule){ @@ -114,6 +132,20 @@ }); }; + $scope.openModalDocumentos = function(){ + + $scope.modalDocumentos.show({ + + }); + + $scope.modalDocumentos.viewController.list(); + + $scope.modalDocumentos.viewController.$on('onAfterEdit', function(event, args) { + + //$scope.modalDocumentos.hide(); + }); + }; + $scope.$on('afterrender', function(event, args){ }); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form2/Form2View.html b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form2/Form2View.html index 06d32cd2..3663436a 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form2/Form2View.html +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form2/Form2View.html @@ -118,6 +118,8 @@

 

 

+ + diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form3/Form3Controller.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form3/Form3Controller.js index 1864923f..041d3e5a 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form3/Form3Controller.js +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form3/Form3Controller.js @@ -5,6 +5,14 @@ $scope.descricao = null; $scope.add = function(selected){ + + globals.plugins.buildFloatingSideMenu({ + title: 'Ficha Clinica', + documentclick: function(){ + + $scope.openModalDocumentos(); + } + }); $scope.editForm.$reset(); @@ -13,6 +21,14 @@ $scope.edit = function(selected){ + globals.plugins.buildFloatingSideMenu({ + title: 'Ficha Clinica', + documentclick: function(){ + + $scope.openModalDocumentos(); + } + }); + $timeout(function () { $scope.editForm.$reset(); @@ -36,8 +52,6 @@ { $scope.editing.ficha.data_conclusao = null; } - - } }; @@ -59,6 +73,8 @@ className: 'btn-danger', callback: function() { + globals.plugins.hideFloatingSideMenu(); + $scope.$parent.loadModule({Controller: 'Search'}, function(className, scope, isNewModule){ }); @@ -68,13 +84,29 @@ label: 'Gravar', className: 'btn-success', callback: function() { - $scope.save(false); + $scope.save(false); + + globals.plugins.hideFloatingSideMenu(); } } } }); }; + $scope.openModalDocumentos = function(){ + + $scope.modalDocumentos.show({ + + }); + + $scope.modalDocumentos.viewController.list(); + + $scope.modalDocumentos.viewController.$on('onAfterEdit', function(event, args) { + + //$scope.modalDocumentos.hide(); + }); + }; + $scope.$on('afterrender', function(event, args){ }); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form3/Form3View.html b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form3/Form3View.html index 1e4cbfa8..700f2539 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form3/Form3View.html +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form3/Form3View.html @@ -78,7 +78,6 @@
Motivo do Exame
-
@@ -88,25 +87,25 @@
@@ -115,19 +114,19 @@
@@ -135,17 +134,17 @@
-
+
- +
@@ -160,16 +159,15 @@
-
- +
-
Resumo
+
Resumo
@@ -178,11 +176,11 @@
- +
- +
@@ -195,11 +193,11 @@
- +
- +
@@ -211,116 +209,101 @@
- +
-
-
Parecer
+
+
Parecer
-
-
- -
- -
- -
-
- -
-
- -
-
- -
- -
- -
+ +
+ +
+
+ +
+
+
+
+ +
+
-
- -
-
-
Reavaliação
+
+
Reavaliação
-
-
- - -
- -
-
+ + +
+ +
+
+ +
+
+
+
+ + Outra Periodicidade
-
-
-
- +
+
+
+
-
-
-
- -
-
- -
-
+
+
-
-
-
- -
-
-
-
- -
-
+
+
+
+
+
+ +
+
+
+
+
-
+
@@ -353,6 +336,8 @@

 

 

+ + diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form4/Form4Controller.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form4/Form4Controller.js index 40757fe3..a4634dc0 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form4/Form4Controller.js +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form4/Form4Controller.js @@ -5,6 +5,14 @@ $scope.descricao = null; $scope.add = function(selected){ + + globals.plugins.buildFloatingSideMenu({ + title: 'Ficha Clinica', + documentclick: function(){ + + $scope.openModalDocumentos(); + } + }); $scope.editForm.$reset(); @@ -13,6 +21,14 @@ $scope.edit = function(selected){ + globals.plugins.buildFloatingSideMenu({ + title: 'Ficha Clinica', + documentclick: function(){ + + $scope.openModalDocumentos(); + } + }); + $timeout(function () { $scope.editForm.$reset(); @@ -59,6 +75,8 @@ className: 'btn-danger', callback: function() { + globals.plugins.hideFloatingSideMenu(); + $scope.$parent.loadModule({Controller: 'Search'}, function(className, scope, isNewModule){ }); @@ -68,13 +86,29 @@ label: 'Gravar', className: 'btn-success', callback: function() { - $scope.save(false); + $scope.save(false); + + globals.plugins.hideFloatingSideMenu(); } } } }); }; + $scope.openModalDocumentos = function(){ + + $scope.modalDocumentos.show({ + + }); + + $scope.modalDocumentos.viewController.list(); + + $scope.modalDocumentos.viewController.$on('onAfterEdit', function(event, args) { + + //$scope.modalDocumentos.hide(); + }); + }; + $scope.$on('afterrender', function(event, args){ }); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form4/Form4View.html b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form4/Form4View.html index d0c0fc49..a694540a 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form4/Form4View.html +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form4/Form4View.html @@ -1083,7 +1083,7 @@
-
Resumo
+
Resumo
@@ -1092,11 +1092,11 @@
- +
- +
@@ -1109,11 +1109,11 @@
- +
- +
@@ -1125,116 +1125,101 @@
- +
-
-
Parecer
+
+
Parecer
-
-
- -
- -
- -
-
- -
-
- -
-
- -
- -
- -
+ +
+
+
+ +
+
+ +
+
+ +
+
-
- -
-
-
Reavaliação
+
+
Reavaliação
-
-
- - -
- -
-
+ + +
+ +
+
+ +
+
+
+
+ + Outra Periodicidade
-
-
-
- +
+
+
+
-
-
-
- -
-
- -
-
+
+
-
-
-
- -
-
-
-
- -
-
+
+
+
+
+
+ +
+
+
+
+
-
+
@@ -1267,6 +1252,8 @@

 

 

+ + diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form5/Form5Controller.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form5/Form5Controller.js new file mode 100644 index 00000000..f91dbfe8 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form5/Form5Controller.js @@ -0,0 +1,152 @@ +evoapp.controller('Form5Controller', function($rootScope, $scope, $timeout, $compile, $injector, $filter, globals) +{ + $scope.globals = globals; + + $scope.descricao = null; + + $scope.calculatedAge = 0; + + $scope.storeFichasClinicas = new globals.dataService.store({ + model: null, + actions: { + //get: 'getFicha2', + //upsert: 'sendFicha2', + //destroy: '' + } + }); + + $scope.add = function(selected){ + + globals.plugins.buildFloatingSideMenu({ + title: 'Ficha de Aptidão', + documentclick: function(){ + + $scope.openModalDocumentos(); + } + }); + + $scope.editForm.$reset(); + + $scope.editing = angular.copy(selected); + }; + + $scope.edit = function(selected){ + + globals.plugins.buildFloatingSideMenu({ + title: 'Ficha de Aptidão', + documentclick: function(){ + + $scope.openModalDocumentos(); + } + }); + + $timeout(function () { + + $scope.editForm.$reset(); + + //$scope.storeFichasClinicas.extraParams = { + // fichaID: selected.id + //}; + + //$scope.storeFichasClinicas.get(function(response, status, headers, config, items){ + + // $scope.selected = items; + + // $scope.editing = angular.copy($scope.selected); + //}); + + }, 0); + }; + + $scope.save = function(complete){ + + var isValid = $scope.editForm.$isValid(); + + if(isValid) + { + //if(complete) + //{ + // $scope.editing.ficha.data_conclusao = new Date(); + //} + //else + //{ + // $scope.editing.ficha.data_conclusao = null; + //} + + //$scope.storeFichasClinicas.upsert($scope.selected, $scope.editing, function(response, selected, editing, isNewRecord){ + + // if(response.success && complete) + // { + // globals.plugins.hideSideMenu(); + + // $scope.$parent.loadModule({Controller: 'Search'}, function(className, scope, isNewModule){ + + // angular.element(scope.comboTrabalhadores.domEl).triggerHandler('change'); + // }); + // } + //}); + } + }; + + $scope.cancel = function(){ + + globals.message.custom({ + title: null, + message: 'Pretende anular as alterações à ficha ou gravar para edição posterior?', + buttons: { + cancelar: { + label: 'Cancelar', + className: 'btn-default', + callback: function() { + //cancelar diálogo + } + }, + anular: { + label: 'Anular', + className: 'btn-danger', + callback: function() { + + globals.plugins.hideFloatingSideMenu(); + + $scope.$parent.loadModule({Controller: 'Search'}, function(className, scope, isNewModule){ + + angular.element(scope.comboTrabalhadores.domEl).triggerHandler('change'); + }); + } + }, + gravar: { + label: 'Gravar', + className: 'btn-success', + callback: function() { + $scope.save(false); + + globals.plugins.hideFloatingSideMenu(); + + $scope.$parent.loadModule({Controller: 'Search'}, function(className, scope, isNewModule){ + + angular.element(scope.comboTrabalhadores.domEl).triggerHandler('change'); + }); + } + } + } + }); + }; + + $scope.openModalDocumentos = function(){ + + $scope.modalDocumentos.show({ + + }); + + $scope.modalDocumentos.viewController.list(); + + $scope.modalDocumentos.viewController.$on('onAfterEdit', function(event, args) { + + //$scope.modalDocumentos.hide(); + }); + }; + + $scope.$on('afterrender', function(event, args){ + + }); +}); \ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form5/Form5View.html b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form5/Form5View.html new file mode 100644 index 00000000..7a3b80d7 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Form5/Form5View.html @@ -0,0 +1,298 @@ + +
+ + + +
+ +
+
Empresa/Entidade
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+ +
+
Trabalhador
+
+ +
+ +
+ +
+ +
+
+ +
+
+
+ +
+ + +
+
+
+
+ +
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+ +
+
Observações
+
+
+ +
+
+
+ +
+
Exame Médico
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+ +
+ + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+
Outras Recomendações
+
+
+ +
+
+
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+ +
+ +

 

+

 

+

 

+ + + +
+ + + diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Main/MainController.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Main/MainController.js index 7e1af293..c4a39396 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Main/MainController.js +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/Main/MainController.js @@ -84,7 +84,7 @@ //set user session $rootScope.UserSession = { userName: args.response.data.username, - tiposFichas: globals.staticData.tiposFichas//TODO: this one needs to come from database + tiposFichas: globals.staticData.tiposFichas //TODO: this one needs to come from database }; // go to the default module and/or landing page @@ -347,7 +347,7 @@ if(!isInMainPanel) { //add current module to main-panel if not there yet - module.domEl.appendTo($scope.divMainPanel); + module.domEl.appendTo($scope.divMainPanel); } } diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/SearchForm/SearchController.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/SearchForm/SearchController.js index b8f06705..a5ddf9dd 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/SearchForm/SearchController.js +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/SearchForm/SearchController.js @@ -31,6 +31,7 @@ $scope.edit = function(selected){ + //TODO: this is temporary!!! var module = _.where($rootScope.UserSession.tiposFichas, {id: selected.tipo_id}); if(module.length > 0) @@ -39,6 +40,8 @@ $scope.$parent.loadModule({Controller: controller.Controller}, function(className, scope, isNewModule){ + scope.descricao = controller.descricao; + scope.edit(selected); }); } @@ -113,23 +116,50 @@ $scope.storeFichasTrabalhador.items = []; - $scope.storeResumoTrabalhador.extraParams = { - trabalhadorID: selectedRecord.id - }; + if(selectedRecord) + { + $scope.storeResumoTrabalhador.extraParams = { + trabalhadorID: selectedRecord.id + }; - $scope.storeResumoTrabalhador.get(function(response, status, headers, config, items){ + $scope.storeResumoTrabalhador.get(function(response, status, headers, config, items){ - if(response.data != null) - { - if(response.data.dadosTrabalhador) + if(response.data != null) { - $scope.dadosTrabalhador = response.data.dadosTrabalhador; + if(response.data.dadosTrabalhador) + { + $scope.dadosTrabalhador = response.data.dadosTrabalhador; + } + + var fichas = response.data.fichas; + $scope.storeFichasTrabalhador.loadData(fichas); } + }); + } + }; + + //TODO: this is temporary. This list must come from database. + $scope.filterFichasClinicas = function(ficha) { + return ficha.id < 200; + }; + + //TODO: this is temporary. This list must come from database. + $scope.filterFichasAptidao = function(ficha) { + return ficha.id >= 200; + }; + + $scope.openModalDocumentos = function(){ + + $scope.modalDocumentos.show({ - var fichas = response.data.fichas; - $scope.storeFichasTrabalhador.loadData(fichas); - } - }); + }); + + $scope.modalDocumentos.viewController.list(); + + $scope.modalDocumentos.viewController.$on('onAfterEdit', function(event, args) { + + //$scope.modalDocumentos.hide(); + }); }; $scope.$on('afterrender', function(event, args){ diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/SearchForm/SearchView.html b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/SearchForm/SearchView.html index a4377a30..30c1521d 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/SearchForm/SearchView.html +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/SearchForm/SearchView.html @@ -64,7 +64,8 @@ store-actions-get="getTrabalhadores" value-field="id" display-field="nome" - add-empty-option="true" + add-empty-option="true" + css-class="btn-default bold" on-change="onTrabalhadorChange(selectedValue, selectedRecord)">
@@ -75,7 +76,7 @@ -
@@ -122,16 +123,38 @@
- + +
+ + + +
+
+ +
+
-
+
+
 
+
+ + + +
+
+
@@ -139,6 +162,8 @@ + + diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/ModalWindow.html b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/ModalWindow.html index 3d419ab4..07fe8f3c 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/ModalWindow.html +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/ModalWindow.html @@ -4,21 +4,15 @@
diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/customCombo.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/customCombo.js index 717888c3..730ab857 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/customCombo.js +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/customCombo.js @@ -1,8 +1,5 @@ -//select2 documentation: http://ivaynberg.github.io/select2/index.html - -// angularui select2: https://github.com/angular-ui/ui-select2/blob/master/src/select2.js - -// http://silviomoreto.github.io/bootstrap-select/ + +//bootstrap-select: http://silviomoreto.github.io/bootstrap-select/ evoapp.directive('customCombo', function($timeout) { @@ -20,7 +17,7 @@ evoapp.directive('customCombo', function($timeout) { require: '^ngController', restrict: 'AE', template: - '' + '' + '' + '', @@ -158,6 +155,7 @@ evoapp.directive('customCombo', function($timeout) { }, link: function (scope, elem, attrs, controller) { + scope.cssClass = attrs.cssClass == undefined ? 'btn-default' : attrs.cssClass; scope.name = attrs.name == undefined ? scope.valueField : attrs.name; scope.elem = elem; scope.domEl = $(elem.find('select')[0]); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/fileUpload.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/fileUpload.js new file mode 100644 index 00000000..bee8658e --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/fileUpload.js @@ -0,0 +1,133 @@ +evoapp.directive('fileUpload', function($rootScope, $filter, globals, $timeout) { + + return { + restrict: 'AE', + template: + '' + + 'Seleccionar Ficheiro' + + '' + + '' + + '
' + , + scope: { + title: '@', + name: '@', + itemId: '@', + url: '@', + formData: '=' + }, + controller: function($rootScope, $scope, $filter, globals, $timeout) { + + $scope.files = []; + + $scope.$filter = $filter; + $scope.$rootScope = $rootScope; + + if($scope.$parent[$scope.itemId] == undefined) + { + $scope.$parent[$scope.itemId] = $scope; + } + else + { + throw Error('FileUpload ' + $scope.itemId + ' already exists!'); + } + }, + link: function (scope, elem, attrs) { + + var files = $($(elem[0]).find('#files')[0]); + + //pass specified values to specified function arguments + function callback(fn, args) { + var fnArgs = [].concat(args); + fnArgs.push.apply(fnArgs, arguments); + return fn.apply(this, fnArgs); + }; + + $(elem[0]).fileupload({ + url: scope.url, + dataType: 'json', + singleFileUploads: true, + autoUpload: false, + acceptFileTypes: /(\.|\/)(gif|jpe?g|png|pdf|doc|docx)$/i + }).on('fileuploadadd', function (e, data) { + + var file = data.files[0]; + + files.html('
' + file.name + '
'); + + }).on('fileuploadprocessalways', function (e, data) { + + + }).on('fileuploadprogressall', function (e, data) { + + }).on('fileuploaddone', function (e, data) { + + files.text(''); + + }).on('fileuploadfail', function (e, data) { + + files.text(''); + }); + + $(elem[0]).bind('change', function (e) { + + var f = e.target.files || [{name: this.value}]; + + scope.files = new Array(); + + var file = f[0]; + + if(file.error == undefined) + { + scope.files.push(f[0]); + } + else + { + globals.message.alert({ + message: 'Tipo de Ficheiro inválido!', + callback: function(){ + scope.reset(); + } + }); + } + }); + + scope.upload = function(formData){ + + if(scope.files.length > 0) + { + scope.$rootScope.$broadcast('loadingStatusActive'); + + var callbackFn = arguments[1]; + + $(elem[0]).fileupload('send', { + files: scope.files, + formData: formData + }) + .success(function (result, textStatus, jqXHR) { + + scope.$rootScope.$broadcast('loadingStatusInactive'); + + callback(callbackFn, [result, textStatus, jqXHR]); + }) + .error(function (jqXHR, textStatus, errorThrown) { + + scope.$rootScope.$broadcast('loadingStatusInactive'); + + //callback(callbackFn, [jqXHR, textStatus, errorThrown]); + }) + .complete(function (result, textStatus, jqXHR) { + + //callback(callbackFn, [result, textStatus, jqXHR]); + }); + } + }; + + scope.reset = function(){ + + scope.files = []; + files.empty(); + }; + } + } +}); \ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/modalWindow.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/modalWindow.js index 666d294e..a54da9c0 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/modalWindow.js +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/modalWindow.js @@ -119,13 +119,13 @@ evoapp.directive('modalWindow', function($rootScope) { scope.maximize = function(){ - if(scope.resizeIcon == 'icon-resize-full') + if(scope.resizeIcon == 'glyphicon glyphicon-resize-full') { - scope.resizeIcon = 'icon-resize-small'; + scope.resizeIcon = 'glyphicon glyphicon-resize-small'; } else { - scope.resizeIcon = 'icon-resize-full'; + scope.resizeIcon = 'glyphicon glyphicon-resize-full'; } modalDialog.toggleClass(attrs.width); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/typeahead.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/typeahead.js deleted file mode 100644 index 82807f9b..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/directives/typeahead.js +++ /dev/null @@ -1,76 +0,0 @@ - -evoapp.directive('typeahead', function($timeout, $filter, globals) { - - var options; - options = {}; - - return { - restrict: 'A', - require: '?ngModel', - link : function (scope, element, attrs, controller) { - - ////parse attributes - //var showTime = attrs.showTime != undefined ? scope.$eval(attrs.showTime) : false, - // timeOnly = attrs.timeOnly != undefined ? scope.$eval(attrs.timeOnly) : false; - - if (controller) { - - controller.$render = function () { - - var value = controller.$viewValue; - - $(element).datetimepicker('setDate', value); - - controller.$setViewValue(controller.$viewValue); - }; - }; - - $(element).typeahead('destroy'); - - $(element).typeahead({ - items: 'all', - source: [ - 'José Pedro de Freitas Maurício', - 'Patricia Sofia Cristõvão Gomes Santana Ribeiro', - 'Vicente Ribeiro Maurício', - 'Vicente António Maurício' - ] - }); - - $(element).change(function(el){ - - if (controller){ - - if(!scope.$$phase) - { - scope.$apply(function () { - - controller.$setViewValue(date); - - $(element).blur(); - }); - } - } - }); - - scope.domEl = $(element); - - if(attrs.itemId != undefined) - { - //add reference to this datepicker, in controller - if(scope.$parent[attrs.itemId] == undefined) - { - scope.$parent[attrs.itemId] = scope; - } - else - { - throw Error('typeahead ' + attrs.itemId + ' already exists!'); - } - } - - if (controller) { - controller.$render(); - } - } - } -}); \ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/services/Plugins.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/services/Plugins.js index 0ba72a77..30fa5586 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/services/Plugins.js +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/services/Plugins.js @@ -213,7 +213,9 @@ var wrapper = $('
'); - var h4 = $('

Ficha Clínica

'); + options.title = options.title ? options.title : ''; + + var h4 = $('

' + options.title + '

'); var cogs = $(''); cogs.click(function(e){ @@ -242,56 +244,48 @@ wrapper.append(innerWrapper); - var menuItems = $( - '' - ); - - var links = menuItems.find('a'); - links.each(function(index) { + //var links = menuItems.find('a'); + //links.each(function(index) { - $(links[index]).click(function(e){ + // $(links[index]).click(function(e){ - wrapper.animate({ - left: "-" + wrapper.width() + "px" - }, 300).removeClass("active"); + // wrapper.animate({ + // left: "-" + wrapper.width() + "px" + // }, 300).removeClass("active"); + // }); + //}); + + if(options.scrollspyItems) + { + wrapper.append(options.scrollspyItems); + } - //var hash = $(e.target).prop('hash'); - //var position = $(hash).position(); - //$timeout(function () { - // $('html, body').animate({ scrollTop: position.top - 60 }, 'fast'); - //}); + var btnOpenDocuments = $( + '
' + + ' ' + + '
' + ); + + if(options.documentclick) + { + $(btnOpenDocuments).click(function(e){ + + options.documentclick(); }); - }); + } - wrapper.append(menuItems); + wrapper.append(btnOpenDocuments); $('#main-panel').append(wrapper); $timeout(function () { - $('body').scrollspy({ target: '#scrollspy1'}); - - //$('body').scrollspy('refresh'); + if(angular.isFunction(options.afterrender)) + { + options.afterrender(); + } }); }; diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/services/StaticData.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/services/StaticData.js index 7b2c6ec9..506891cd 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/services/StaticData.js +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/app/services/StaticData.js @@ -38,7 +38,6 @@ Controller: 'Form3' }, - //Medicina Curativa e Enfermagem são iguais { id: 8, @@ -49,7 +48,31 @@ id: 9, descricao: 'Medicina Curativa', Controller: 'Form2' + }, + + //******************************************************** + //Fichas de Aptidão + { + id: 200, + descricao: 'Admissão', + Controller: 'Form5' + }, + { + id: 201, + descricao: 'Periódica Inicial', + Controller: 'Form5' + }, + { + id: 202, + descricao: 'Periódica', + Controller: 'Form5' + }, + { + id: 203, + descricao: 'Ocasional', + Controller: 'Form5' } + ]; return { diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/css/theme.css b/trunk/SiprpWebFichasClinicas/WebContent/static/html/css/theme.css index cbd73f15..c225cba1 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/css/theme.css +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/css/theme.css @@ -120,6 +120,11 @@ code { color:#000; } +.page-description +{ + height: 15px; +} + .section-title { text-transform:uppercase; @@ -148,6 +153,14 @@ code { /* custom margins */ +.m-5 +{ + margin:5px; +} +.m-10 +{ + margin:10px; +} .m-t-5 { margin-top:5px; @@ -286,7 +299,7 @@ body.modal-open { } /* form side menu */ -a.form-side-menu { +/*a.form-side-menu { -moz-border-radius: 0px; -moz-transition: all 0.3s; -o-transition: all 0.3s; @@ -320,7 +333,7 @@ a.form-side-menu:hover { a.form-side-menu.visible { filter: alpha(opacity=75); opacity: 0.75; -} +}*/ /* modal dialog */ @media (min-width: 400px) { @@ -418,3 +431,30 @@ div.floating-side-menu .nav li.active a text-decoration: none; background-color: #d5716e; } + +.floating-side-menu .buttons-area { + background-color: #444444; + padding: 10px; +} + +/* buttons */ +.btn-default.bold +{ + font-weight:bold; +} + +/* custom modal */ +.custom-modal-body +{ + padding:0px; +} + +.custom-modal-header +{ + padding:10px; +} + +.custom-modal-footer +{ + padding:10px; +} \ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/index.html b/trunk/SiprpWebFichasClinicas/WebContent/static/html/index.html index 0d63a7fc..5e620d28 100644 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/index.html +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/index.html @@ -1,4 +1,5 @@ - + + @@ -14,6 +15,8 @@ + + @@ -40,7 +43,11 @@ - + + + + + @@ -60,6 +67,7 @@ + @@ -67,7 +75,9 @@ + + @@ -113,10 +123,7 @@
-
- - -
+
- diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/bootstrap3-typeahead/Bootstrap-3-Typeahead.url b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/bootstrap3-typeahead/Bootstrap-3-Typeahead.url deleted file mode 100644 index 709e62c1..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/bootstrap3-typeahead/Bootstrap-3-Typeahead.url +++ /dev/null @@ -1,5 +0,0 @@ -[{000214A0-0000-0000-C000-000000000046}] -Prop3=19,11 -[InternetShortcut] -URL=https://github.com/bassjobsen/Bootstrap-3-Typeahead -IDList= diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/bootstrap3-typeahead/bootstrap3-typeahead.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/bootstrap3-typeahead/bootstrap3-typeahead.js deleted file mode 100644 index 7bfc985e..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/bootstrap3-typeahead/bootstrap3-typeahead.js +++ /dev/null @@ -1,397 +0,0 @@ -/* ============================================================= - * bootstrap3-typeahead.js v3.0.3 - * https://github.com/bassjobsen/Bootstrap-3-Typeahead - * ============================================================= - * Original written by @mdo and @fat - * ============================================================= - * Copyright 2014 Bass Jobsen @bassjobsen - * - * 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 laxcomma: true - - - /* TYPEAHEAD PUBLIC CLASS DEFINITION - * ================================= */ - - var Typeahead = function (element, options) { - this.$element = $(element); - this.options = $.extend({}, $.fn.typeahead.defaults, options); - this.matcher = this.options.matcher || this.matcher; - this.sorter = this.options.sorter || this.sorter; - this.select = this.options.select || this.select; - this.autoSelect = typeof this.options.autoSelect == 'boolean' ? this.options.autoSelect : true; - this.highlighter = this.options.highlighter || this.highlighter; - this.updater = this.options.updater || this.updater; - this.source = this.options.source; - this.delay = typeof this.options.delay == 'number' ? this.options.delay : 250; - this.$menu = $(this.options.menu); - this.shown = false; - this.listen(); - this.showHintOnFocus = typeof this.options.showHintOnFocus == 'boolean' ? this.options.showHintOnFocus : false; - }; - - Typeahead.prototype = { - - constructor: Typeahead - - , select: function () { - var val = this.$menu.find('.active').data('value'); - if(this.autoSelect || val) { - this.$element - .val(this.updater(val)) - .change(); - } - return this.hide(); - } - - , updater: function (item) { - return item; - } - - , setSource: function (source) { - this.source = source; - } - - , show: function () { - var pos = $.extend({}, this.$element.position(), { - height: this.$element[0].offsetHeight - }), scrollHeight; - - scrollHeight = typeof this.options.scrollHeight == 'function' ? - this.options.scrollHeight.call() : - this.options.scrollHeight; - - this.$menu - .insertAfter(this.$element) - .css({ - top: pos.top + pos.height + scrollHeight - , left: pos.left - }) - .show(); - - this.shown = true; - return this; - } - - , hide: function () { - this.$menu.hide(); - this.shown = false; - return this; - } - - , lookup: function (query) { - var items; - if (typeof(query) != 'undefined' && query !== null) { - this.query = query; - } else { - this.query = this.$element.val() || ''; - } - - if (this.query.length < this.options.minLength) { - return this.shown ? this.hide() : this; - } - - var worker = $.proxy(function() { - items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source; - if (items) { - this.process(items); - } - }, this) - - clearTimeout(this.lookupWorker) - this.lookupWorker = setTimeout(worker, this.delay) - } - - , process: function (items) { - var that = this; - - items = $.grep(items, function (item) { - return that.matcher(item); - }); - - items = this.sorter(items); - - if (!items.length) { - return this.shown ? this.hide() : this; - } - - if (this.options.items == 'all') { - return this.render(items).show(); - } else { - return this.render(items.slice(0, this.options.items)).show(); - } - } - - , matcher: function (item) { - return ~item.toLowerCase().indexOf(this.query.toLowerCase()); - } - - , sorter: function (items) { - var beginswith = [] - , caseSensitive = [] - , caseInsensitive = [] - , item; - - while ((item = items.shift())) { - if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item); - else if (~item.indexOf(this.query)) caseSensitive.push(item); - else caseInsensitive.push(item); - } - - return beginswith.concat(caseSensitive, caseInsensitive); - } - - , highlighter: function (item) { - var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&'); - return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) { - return '' + match + ''; - }); - } - - , render: function (items) { - var that = this; - - items = $(items).map(function (i, item) { - i = $(that.options.item).data('value', item); - i.find('a').html(that.highlighter(item)); - return i[0]; - }); - - if (this.autoSelect) { - items.first().addClass('active'); - } - this.$menu.html(items); - return this; - } - - , next: function (event) { - var active = this.$menu.find('.active').removeClass('active') - , next = active.next(); - - if (!next.length) { - next = $(this.$menu.find('li')[0]); - } - - next.addClass('active'); - } - - , prev: function (event) { - var active = this.$menu.find('.active').removeClass('active') - , prev = active.prev(); - - if (!prev.length) { - prev = this.$menu.find('li').last(); - } - - prev.addClass('active'); - } - - , listen: function () { - this.$element - .on('focus', $.proxy(this.focus, this)) - .on('blur', $.proxy(this.blur, this)) - .on('keypress', $.proxy(this.keypress, this)) - .on('keyup', $.proxy(this.keyup, this)); - - if (this.eventSupported('keydown')) { - this.$element.on('keydown', $.proxy(this.keydown, this)); - } - - this.$menu - .on('click', $.proxy(this.click, this)) - .on('mouseenter', 'li', $.proxy(this.mouseenter, this)) - .on('mouseleave', 'li', $.proxy(this.mouseleave, this)); - } - , destroy : function () { - this.$element.data('typeahead',null); - this.$element - .off('focus') - .off('blur') - .off('keypress') - .off('keyup'); - - if (this.eventSupported('keydown')) { - this.$element.off('keydown'); - } - - this.$menu.remove(); - } - , eventSupported: function(eventName) { - var isSupported = eventName in this.$element; - if (!isSupported) { - this.$element.setAttribute(eventName, 'return;'); - isSupported = typeof this.$element[eventName] === 'function'; - } - return isSupported; - } - - , move: function (e) { - if (!this.shown) return; - - switch(e.keyCode) { - case 9: // tab - case 13: // enter - case 27: // escape - e.preventDefault(); - break; - - case 38: // up arrow - e.preventDefault(); - this.prev(); - break; - - case 40: // down arrow - e.preventDefault(); - this.next(); - break; - } - - e.stopPropagation(); - } - - , keydown: function (e) { - this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27]); - if (!this.shown && e.keyCode == 40) { - this.lookup(""); - } else { - this.move(e); - } - } - - , keypress: function (e) { - if (this.suppressKeyPressRepeat) return; - this.move(e); - } - - , keyup: function (e) { - switch(e.keyCode) { - case 40: // down arrow - case 38: // up arrow - case 16: // shift - case 17: // ctrl - case 18: // alt - break; - - case 9: // tab - case 13: // enter - if (!this.shown) return; - this.select(); - break; - - case 27: // escape - if (!this.shown) return; - this.hide(); - break; - default: - this.lookup(); - } - - e.stopPropagation(); - e.preventDefault(); - } - - , focus: function (e) { - if (!this.focused) { - this.focused = true; - if (this.options.minLength === 0 && !this.$element.val() || this.options.showHintOnFocus) { - this.lookup(); - } - } - } - - , blur: function (e) { - this.focused = false; - if (!this.mousedover && this.shown) this.hide(); - } - - , click: function (e) { - e.stopPropagation(); - e.preventDefault(); - this.select(); - this.$element.focus(); - } - - , mouseenter: function (e) { - this.mousedover = true; - this.$menu.find('.active').removeClass('active'); - $(e.currentTarget).addClass('active'); - } - - , mouseleave: function (e) { - this.mousedover = false; - if (!this.focused && this.shown) this.hide(); - } - - }; - - - /* TYPEAHEAD PLUGIN DEFINITION - * =========================== */ - - var old = $.fn.typeahead; - - $.fn.typeahead = function (option) { - var arg = arguments; - return this.each(function () { - var $this = $(this) - , data = $this.data('typeahead') - , options = typeof option == 'object' && option; - if (!data) $this.data('typeahead', (data = new Typeahead(this, options))); - if (typeof option == 'string') { - if (arg.length > 1) { - data[option].apply(data, Array.prototype.slice.call(arg ,1)); - } else { - data[option](); - } - } - }); - }; - - $.fn.typeahead.defaults = { - source: [] - , items: 8 - , menu: '' - , item: '
  • ' - , minLength: 1 - , scrollHeight: 0 - , autoSelect: true - }; - - $.fn.typeahead.Constructor = Typeahead; - - - /* TYPEAHEAD NO CONFLICT - * =================== */ - - $.fn.typeahead.noConflict = function () { - $.fn.typeahead = old; - return this; - }; - - - /* TYPEAHEAD DATA-API - * ================== */ - - $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) { - var $this = $(this); - if ($this.data('typeahead')) return; - $this.typeahead($this.data()); - }); - -}(window.jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/demo-ie8.css b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/demo-ie8.css new file mode 100644 index 00000000..262493d0 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/demo-ie8.css @@ -0,0 +1,21 @@ +@charset "UTF-8"; +/* + * jQuery File Upload Demo CSS Fixes for IE<9 1.0.0 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +.navigation { + list-style: none; + padding: 0; + margin: 1em 0; +} +.navigation li { + display: inline; + margin-right: 10px; +} diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/demo.css b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/demo.css new file mode 100644 index 00000000..841f80d1 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/demo.css @@ -0,0 +1,67 @@ +@charset "UTF-8"; +/* + * jQuery File Upload Demo CSS 1.0.2 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +body { + max-width: 750px; + margin: 0 auto; + padding: 1em; + font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, sans-serif; + font-size: 1em; + line-height: 1.4em; + background: #222; + color: #fff; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +a { + color: orange; + text-decoration: none; +} +img { + border: 0; + vertical-align: middle; +} +h1 { + line-height: 1em; +} +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eee; +} +table { + width: 100%; + margin: 10px 0; +} + +.fileupload-progress { + margin: 10px 0; +} +.fileupload-progress .progress-extended { + margin-top: 5px; +} +.error { + color: red; +} + +@media (min-width: 481px) { + .navigation { + list-style: none; + padding: 0; + } + .navigation li { + display: inline-block; + } + .navigation li:not(:first-child):before { + content: '| '; + } +} diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/jquery.fileupload-ui-noscript.css b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/jquery.fileupload-ui-noscript.css new file mode 100644 index 00000000..c4504855 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/jquery.fileupload-ui-noscript.css @@ -0,0 +1,27 @@ +@charset "UTF-8"; +/* + * jQuery File Upload UI Plugin NoScript CSS 1.0 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2012, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +.fileinput-button input { + position: static; + opacity: 1; + filter: none; + transform: none; + font-size: inherit; + direction: inherit; +} + +.fileinput-button span, +.fileinput-button i, +.fileupload-buttonbar .delete, +.fileupload-buttonbar .toggle { + display: none; +} diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/jquery.fileupload-ui.css b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/jquery.fileupload-ui.css new file mode 100644 index 00000000..f81b34c7 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/jquery.fileupload-ui.css @@ -0,0 +1,68 @@ +@charset "UTF-8"; +/* + * jQuery File Upload UI Plugin CSS 8.8.1 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2010, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +.fileinput-button { + position: relative; + overflow: hidden; +} +.fileinput-button input { + position: absolute; + top: 0; + right: 0; + margin: 0; + opacity: 0; + filter: alpha(opacity=0); + transform: translate(-300px, 0) scale(4); + font-size: 23px; + direction: ltr; + cursor: pointer; +} +.fileupload-buttonbar .btn, +.fileupload-buttonbar .toggle { + margin-bottom: 5px; +} +.progress-animated .progress-bar, +.progress-animated .bar { + background: url(../img/progressbar.gif) !important; + filter: none; +} +.fileupload-loading { + float: right; + width: 32px; + height: 32px; + background: url(../img/loading.gif) center no-repeat; + background-size: contain; + display: none; +} +.fileupload-processing .fileupload-loading { + display: block; +} +.files audio, +.files video { + max-width: 300px; +} + +@media (max-width: 767px) { + .fileupload-buttonbar .toggle, + .files .toggle, + .files .btn span { + display: none; + } + .files .name { + width: 80px; + word-wrap: break-word; + } + .files audio, + .files video { + max-width: 80px; + } +} diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/style.css b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/style.css new file mode 100644 index 00000000..b2c60a6f --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/css/style.css @@ -0,0 +1,15 @@ +@charset "UTF-8"; +/* + * jQuery File Upload Plugin CSS Example 8.8.2 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +body { + padding-top: 60px; +} diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/img/loading.gif b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/img/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..90f28cbdbb390b095e0d619cbe8d91208798e58f GIT binary patch literal 3897 zcmZvfcR1T?8^ABwb_x$y{p1+>Yb$`dLr?0DW)y5y-57+?!PEJmyrlv?FQgU)K z^$+m(2RfoVbqYWS0G%+J=-j=drD>|8AS+KxL%o*)0)PM?>H*Mx2iHt~mnWZ=N>W+t zB|S>mk9=ZpYXc!T7UZI&`(-T$A=k$fH%{0DUBGwg!#nk?dE^E3gDApBHVTIQQFjd% z@8i*q&q?bJ^`q%$4G<}clybdVd-s{xsx+KupPg;W4bOvd7w*pJ;3oEg_PFlG;yL8+oShz**1=iDRZ*E(Q<#5R=A*XP5H_Y=1xJoCem%-&eKb6zV0ff z>legqW&{=3KP~Y8@#^3-+sNyevrSganP&X1J3*?KZrnP&@8z-DF>$5H-D+bme&k}k z=b(j;=N4)0R8Q6PZLj2pkrz)`V_M!E?dlE7mCX3opU@wz96Zurx4FmWL37=7TCuG9 z`GkMU?-=3W2u(X1pJ+1-D8$#M3IyxB%pDQB;2(M(eo?G5D~tz~6dTT3ItGfkWI&$< z&#Xo;(n_Kq+TlC@hpWm<{qK@(J8G++We#hbNi^se<6nV2;T4 zNDqriR!3dHvF711Txh1!vT{};LzV^uLH;6l)wR@$;KDJa`VOrZ+ccMJt-r043s&2t^bewdCj@xurE^v)WL95dQ z!~&h-7Yqg)+cJl7{=U2?_+E7^{JVv*AQbVh@R_RBt12dDs-#^ZEg=TA;LKR69HAv*?v1IO*LrVkl0@jm)`Yw>Ei;Cb<`Ge=JHj9g^C7+M?`w@g>lBl#q%UG z`}!%t5@M1z}?nB z*Tj60Y$FR82XGHd41y*mrUDeYh38hddS#Y*SGE@ZP#F{1I^fy8Y9@AY`0m};Z?t1t zvl@XaOzm2oTG^`5GXjVpu-2S*n4*kB%YDv4k&aM?8%y+(ZsV3)1mZz23da;)wH@7&`|Ado=<=+Ih>-Zw;?kA^kOQDkl*L3<;+? z<|M0rPu_-Pn1S;!V&9?Lji{M@0Mr#T9>Bk`lq`z3P)1&h>Ho;*au|vDvsVjp-qT0e z*UUfQ?Gpz$g9n2bA}a7zWNb7tHVzcwml}2{C{dOsk47z6B0pahT~Ju4TqIILBp68& zNmxrkQf(GrV^cF{Yg;>8XC;}Vr=*X4p!6N-twSOZPz$&PLr@%}eIZ zD~Lt1l{LgdQhk+JLo-cX3#q!jvb?Lbps#;m@ZHexhyq{?ko#d0H90e$K08CzSlrS) zWo6dl)B48d)b`HU-u~MD$9uai7`L)G>3*T{10aZCYqqL(n*#FQw0j@zj_M(+#c zyVt!MW{V+4vZ?)+0bac?NfTw2K79`dH+R{6nT57bfL{LIoi7Ag$(vz$+eju9d$7B zJG&Z{dzkyk1G(>p`qfHW#%#yxr>AUYK0KOvygWa*I`naEY4hR2MjvI{YUR`Z@fYi( z@9Pv+(V>39D#Fg`k5 zAvd8jHQhWpvV^33oSVP7D7mS*y)&b|zlvB`kzM|}?rCIuU=S7LEHVa$xY zK7bdtLDWL^SFw^20+{?ObjZr9KUx(0o0SBj_xZyoID`D^`r^?VSAjk}{spA|BzpP` z*n{4_ZGkmTM)r5(MRv|pCYSwXX2mHCy0;?C3wFJlI=Ud1imCcH_f;o6U;m-fmBwF| zxeaFV_F$)h(s28}mNsGy`ZELug@>6%MYAH2>|xIMd-hlX4DyCpx2_fIxR&9HR| zOo=QmRf1OdI|P;~oA(JKyL+Po2Z!q-^EdYxV{T>gIls8gp+tex@r9h|)?()zIoc!` z<-T`fILv04Ax z`;g5e;{OrXwNr!u98>p5O4V$kGW+Q$xy7wyq-@a{rvp{O^`YL+YM=2l%U^u_1752E zp+H?P>LBTO+=z(KcG8T2As`wFiAndgQX_?Fb7*g8g`&_orui5i9PU;=s2FX6FR#co zE~~Dn%@VI68P?So8?|?o7*sXav^B}J^pd-Y`tL^zz~d9Gy3^POy}9|$k4r+sE2(Oq zblxd%Y40fR?Z;>w9%bM7>MRCe0$W>a1Ua)1%pg!3Ef2a&@`nE+@wdq?gKL=1$&mG5 zc=xRumn_dNMN(4+^D|}e-AyHhgXp*ONwPc4Gw0}8JwtWo>9B=>)bspG45{b5-#-%j z#bmSnf0`_jYO*x%*xv*H2=qB?SKiue@ymKb_UgCALL`qak+Q!sG{OTY*|7f zF|)MHlBhu2NPE6kwyB8|f2F;hBma7LM{kKLHEAkujx^eiH``22TTe~S&x|jOJYJkz zURwXOva!82K-vG?eb}>euy=GkG2A=!`dKFQr>UIzv90~@YW71c)Ya_7S_1LJKEn=2 za9pc*k?HqfnAE_>s??ukJY)v<(7$cFuo!w*RiJ0d-5_)cb6+|EH)TS4n7hww64>2( zX`J7xEP2C2?VS3M{VJ)C5ViP4(Z`>SCWHnQ7<3K_6^4f~Mj(aUsSP$sAU+{HDVa|% zjWr{KUyB;EnHVu#ZXuo!TYQ1qV?~J(RTVWMwIb943uEgYoSL4Q{n!XxSX^4BEKja{T3;I9*k1pzv%fm_`3SgoyubBr<2{X$I3cSkh@M@_ zva>k51!i{|%nxvFY7J+Rb3l)ox#Z|V1(l_kR#-t@$lq>-DPeX*yA#-ro8yw)#5xk? z+50S$Vwd${7o-V=V1Vdg4meiIid>Ez$~Vn1NH?g!jTGE3bC@Dm6pR*Gx184p0Mz~i D^>?LD literal 0 HcmV?d00001 diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/img/progressbar.gif b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/img/progressbar.gif new file mode 100644 index 0000000000000000000000000000000000000000..fbcce6bc9abfcc7893e65ef20b3e77ee16ec37b1 GIT binary patch literal 3323 zcmcK7eNYp38VB%=tbvu|O{=v;j+Z$Bg`>zI2IVD3Ovp-%sA$2LilR;|zMv9BB_t%- zylmcIh`dQLinJh9P{0Ja6I28#3PquysCf3GB1bBEXgfV_qnx8-n07k#kNmNdnVrvm zpZz`0v#~Ih7`{0em<2RA0wa|vr`!U1uI~v zF&O+zyfdOBoHdq{xOf7$)mN>lwcHgLVd-HT}JxYe94Gv(X_H__aHV~b7Ud4Pvk@t?84W?#& z+#WmNc5cUNoapyda#-P`2+n z-sGAbb$_$TW887}6BiJKaV$E-69{23pNeG2=_;8-CM9c*OiHOp|F9Igl_JQHqf)Y3 zhR7s(mQBh5ER~A&6^|p|OQqmd+(8 zZCb1qD*K}>!|B|YVuCsS=V0!N=?-)po(^$x*kptYX9N)B^~VJ^d7-@(M1WK;9&Liw~wO?NN(E}be} z`e0?=)*y}@Xkgx6S$ZS(8d|ifzK_`x?=N$)pWk;s0Ve?`qDX{%L@X0)6guz8Adh+qh(mq90aE=iAZp(dGccGHgmlkOke19p-dfci z@1Ni#x_B;&@l8icy*4roEXN?9&vh-w;n!Fp3;~Dn4#aOVi22tbo-KY@B1*TAgMsta zMh~68EXdvgJe$<9yOgn~E8aiQNo1$l`FUCI52J)nHW8+@|McSTe{t30@NpO^cv#waY+68ew4oT={#AGoA?Je^k$f`&u}bW zOjoRA_$utq5rspZ;5HXZvqE1#D) z5*M}9jPoq=-V*<cQuuK%yr=$XZl2k``40P4ol60hjb({{!c5Rtn3Urk4?uRRFNQuFGPhZnTBMO zu{W&|u4t53w>M}v(wtDAV!oHP(QY&~_X0qupII*-&GksTPf#SZ#4eaOCrG~hUblo4 zya(R){3rfyxiH2%l{iN;xS(G)OWOx8>UV9u+Vm_iN98oT20F}U!8utl4(lm=E)S6) zN~xM^Q?U;_!Ku4seH{bquy+4OfwlV{0C?tW&XteqJmP<|V)6eK9ey(~1Sbd1rgF1{ zd@&*xkriY}MS><}4DI}o3>d2jm74@fNpg-Vf(zPY?8nj=O8o$gp_gzr3~{MEs({T( z5+EcMIErR!`wwLZHp{c_?{mEhe%dlbNH8E^nm+5|owEXTR;S2+hYWR^j zWB!qbQWumI=vg;ZQvO$8W9QeMX~YdqNb^K%y~T6@tCTOlSM-j*$OOSSZX6cRfzPb* zP-Q}8v|6Q&$hAFfGA(f5>_XzuqhFP@h(0x@%#tsExSB}v(zy6^qc>xW*XCVMBPKf` zF>gsuD~+eKuRP{tWLo#OoJ2?fR@_0f5Olf}}Khc$ZhB$$3I7S9&n z^G{G0pQnju2Md}?zmbr').prop('href', options.postMessage)[0], + target = loc.protocol + '//' + loc.host, + xhrUpload = options.xhr().upload; + return { + send: function (_, completeCallback) { + counter += 1; + var message = { + id: 'postmessage-transport-' + counter + }, + eventName = 'message.' + message.id; + iframe = $( + '' + ).bind('load', function () { + $.each(names, function (i, name) { + message[name] = options[name]; + }); + message.dataType = message.dataType.replace('postmessage ', ''); + $(window).bind(eventName, function (e) { + e = e.originalEvent; + var data = e.data, + ev; + if (e.origin === target && data.id === message.id) { + if (data.type === 'progress') { + ev = document.createEvent('Event'); + ev.initEvent(data.type, false, true); + $.extend(ev, data); + xhrUpload.dispatchEvent(ev); + } else { + completeCallback( + data.status, + data.statusText, + {postmessage: data.result}, + data.headers + ); + iframe.remove(); + $(window).unbind(eventName); + } + } + }); + iframe[0].contentWindow.postMessage( + message, + target + ); + }).appendTo(document.body); + }, + abort: function () { + if (iframe) { + iframe.remove(); + } + } + }; + } + }); + +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/cors/jquery.xdr-transport.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/cors/jquery.xdr-transport.js new file mode 100644 index 00000000..d769f452 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/cors/jquery.xdr-transport.js @@ -0,0 +1,87 @@ +/* + * jQuery XDomainRequest Transport Plugin 1.1.3 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + * + * Based on Julian Aubourg's ajaxHooks xdr.js: + * https://github.com/jaubourg/ajaxHooks/ + */ + +/*jslint unparam: true */ +/*global define, window, XDomainRequest */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define(['jquery'], factory); + } else { + // Browser globals: + factory(window.jQuery); + } +}(function ($) { + 'use strict'; + if (window.XDomainRequest && !$.support.cors) { + $.ajaxTransport(function (s) { + if (s.crossDomain && s.async) { + if (s.timeout) { + s.xdrTimeout = s.timeout; + delete s.timeout; + } + var xdr; + return { + send: function (headers, completeCallback) { + var addParamChar = /\?/.test(s.url) ? '&' : '?'; + function callback(status, statusText, responses, responseHeaders) { + xdr.onload = xdr.onerror = xdr.ontimeout = $.noop; + xdr = null; + completeCallback(status, statusText, responses, responseHeaders); + } + xdr = new XDomainRequest(); + // XDomainRequest only supports GET and POST: + if (s.type === 'DELETE') { + s.url = s.url + addParamChar + '_method=DELETE'; + s.type = 'POST'; + } else if (s.type === 'PUT') { + s.url = s.url + addParamChar + '_method=PUT'; + s.type = 'POST'; + } else if (s.type === 'PATCH') { + s.url = s.url + addParamChar + '_method=PATCH'; + s.type = 'POST'; + } + xdr.open(s.type, s.url); + xdr.onload = function () { + callback( + 200, + 'OK', + {text: xdr.responseText}, + 'Content-Type: ' + xdr.contentType + ); + }; + xdr.onerror = function () { + callback(404, 'Not Found'); + }; + if (s.xdrTimeout) { + xdr.ontimeout = function () { + callback(0, 'timeout'); + }; + xdr.timeout = s.xdrTimeout; + } + xdr.send((s.hasContent && s.data) || null); + }, + abort: function () { + if (xdr) { + xdr.onerror = $.noop(); + xdr.abort(); + } + } + }; + } + }); + } +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-angular.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-angular.js new file mode 100644 index 00000000..8f4abac1 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-angular.js @@ -0,0 +1,401 @@ +/* + * jQuery File Upload AngularJS Plugin 1.4.4 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, unparam: true */ +/*global define, angular */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define([ + 'jquery', + 'angular', + './jquery.fileupload-image', + './jquery.fileupload-audio', + './jquery.fileupload-video', + './jquery.fileupload-validate' + ], factory); + } else { + factory(); + } +}(function () { + 'use strict'; + + angular.module('blueimp.fileupload', []) + + // The fileUpload service provides configuration options + // for the fileUpload directive and default handlers for + // File Upload events: + .provider('fileUpload', function () { + var scopeApply = function () { + var scope = angular.element(this) + .fileupload('option', 'scope')(), + $timeout = angular.injector(['ng']) + .get('$timeout'); + // Safe apply, makes sure $apply is called + // asynchronously outside of the $digest cycle: + $timeout(function () { + scope.$apply(); + }); + }, + $config; + $config = this.defaults = { + handleResponse: function (e, data) { + var files = data.result && data.result.files; + if (files) { + data.scope().replace(data.files, files); + } else if (data.errorThrown || + data.textStatus === 'error') { + data.files[0].error = data.errorThrown || + data.textStatus; + } + }, + add: function (e, data) { + var scope = data.scope(); + data.process(function () { + return scope.process(data); + }).always( + function () { + var file = data.files[0], + submit = function () { + return data.submit(); + }; + angular.forEach(data.files, function (file, index) { + file._index = index; + file.$state = function () { + return data.state(); + }; + file.$progress = function () { + return data.progress(); + }; + file.$response = function () { + return data.response(); + }; + }); + file.$cancel = function () { + scope.clear(data.files); + return data.abort(); + }; + if (file.$state() === 'rejected') { + file._$submit = submit; + } else { + file.$submit = submit; + } + scope.$apply(function () { + var method = scope.option('prependFiles') ? + 'unshift' : 'push'; + Array.prototype[method].apply( + scope.queue, + data.files + ); + if (file.$submit && + (scope.option('autoUpload') || + data.autoUpload) && + data.autoUpload !== false) { + file.$submit(); + } + }); + } + ); + }, + progress: function (e, data) { + data.scope().$apply(); + }, + done: function (e, data) { + var that = this; + data.scope().$apply(function () { + data.handleResponse.call(that, e, data); + }); + }, + fail: function (e, data) { + var that = this; + if (data.errorThrown === 'abort') { + return; + } + if (data.dataType && + data.dataType.indexOf('json') === data.dataType.length - 4) { + try { + data.result = angular.fromJson(data.jqXHR.responseText); + } catch (ignore) {} + } + data.scope().$apply(function () { + data.handleResponse.call(that, e, data); + }); + }, + stop: scopeApply, + processstart: scopeApply, + processstop: scopeApply, + getNumberOfFiles: function () { + return this.scope().queue.length; + }, + dataType: 'json', + autoUpload: false + }; + this.$get = [ + function () { + return { + defaults: $config + }; + } + ]; + }) + + // Format byte numbers to readable presentations: + .provider('formatFileSizeFilter', function () { + var $config = { + // Byte units following the IEC format + // http://en.wikipedia.org/wiki/Kilobyte + units: [ + {size: 1000000000, suffix: ' GB'}, + {size: 1000000, suffix: ' MB'}, + {size: 1000, suffix: ' KB'} + ] + }; + this.defaults = $config; + this.$get = function () { + return function (bytes) { + if (!angular.isNumber(bytes)) { + return ''; + } + var unit = true, + i = 0, + prefix, + suffix; + while (unit) { + unit = $config.units[i]; + prefix = unit.prefix || ''; + suffix = unit.suffix || ''; + if (i === $config.units.length - 1 || bytes >= unit.size) { + return prefix + (bytes / unit.size).toFixed(2) + suffix; + } + i += 1; + } + }; + }; + }) + + // The FileUploadController initializes the fileupload widget and + // provides scope methods to control the File Upload functionality: + .controller('FileUploadController', [ + '$scope', '$element', '$attrs', '$window', 'fileUpload', + function ($scope, $element, $attrs, $window, fileUpload) { + var uploadMethods = { + progress: function () { + return $element.fileupload('progress'); + }, + active: function () { + return $element.fileupload('active'); + }, + option: function (option, data) { + return $element.fileupload('option', option, data); + }, + add: function (data) { + return $element.fileupload('add', data); + }, + send: function (data) { + return $element.fileupload('send', data); + }, + process: function (data) { + return $element.fileupload('process', data); + }, + processing: function (data) { + return $element.fileupload('processing', data); + } + }; + $scope.disabled = !$window.jQuery.support.fileInput; + $scope.queue = $scope.queue || []; + $scope.clear = function (files) { + var queue = this.queue, + i = queue.length, + file = files, + length = 1; + if (angular.isArray(files)) { + file = files[0]; + length = files.length; + } + while (i) { + i -= 1; + if (queue[i] === file) { + return queue.splice(i, length); + } + } + }; + $scope.replace = function (oldFiles, newFiles) { + var queue = this.queue, + file = oldFiles[0], + i, + j; + for (i = 0; i < queue.length; i += 1) { + if (queue[i] === file) { + for (j = 0; j < newFiles.length; j += 1) { + queue[i + j] = newFiles[j]; + } + return; + } + } + }; + $scope.applyOnQueue = function (method) { + var list = this.queue.slice(0), + i, + file; + for (i = 0; i < list.length; i += 1) { + file = list[i]; + if (file[method]) { + file[method](); + } + } + }; + $scope.submit = function () { + this.applyOnQueue('$submit'); + }; + $scope.cancel = function () { + this.applyOnQueue('$cancel'); + }; + // Add upload methods to the scope: + angular.extend($scope, uploadMethods); + // The fileupload widget will initialize with + // the options provided via "data-"-parameters, + // as well as those given via options object: + $element.fileupload(angular.extend( + {scope: function () { + return $scope; + }}, + fileUpload.defaults + )).on('fileuploadadd', function (e, data) { + data.scope = $scope.option('scope'); + }).on([ + 'fileuploadadd', + 'fileuploadsubmit', + 'fileuploadsend', + 'fileuploaddone', + 'fileuploadfail', + 'fileuploadalways', + 'fileuploadprogress', + 'fileuploadprogressall', + 'fileuploadstart', + 'fileuploadstop', + 'fileuploadchange', + 'fileuploadpaste', + 'fileuploaddrop', + 'fileuploaddragover', + 'fileuploadchunksend', + 'fileuploadchunkdone', + 'fileuploadchunkfail', + 'fileuploadchunkalways', + 'fileuploadprocessstart', + 'fileuploadprocess', + 'fileuploadprocessdone', + 'fileuploadprocessfail', + 'fileuploadprocessalways', + 'fileuploadprocessstop' + ].join(' '), function (e, data) { + if ($scope.$emit(e.type, data).defaultPrevented) { + e.preventDefault(); + } + }).on('remove', function () { + // Remove upload methods from the scope, + // when the widget is removed: + var method; + for (method in uploadMethods) { + if (uploadMethods.hasOwnProperty(method)) { + delete $scope[method]; + } + } + }); + // Observe option changes: + $scope.$watch( + $attrs.fileUpload, + function (newOptions) { + if (newOptions) { + $element.fileupload('option', newOptions); + } + } + ); + } + ]) + + // Provide File Upload progress feedback: + .controller('FileUploadProgressController', [ + '$scope', '$attrs', '$parse', + function ($scope, $attrs, $parse) { + var fn = $parse($attrs.fileUploadProgress), + update = function () { + var progress = fn($scope); + if (!progress || !progress.total) { + return; + } + $scope.num = Math.floor( + progress.loaded / progress.total * 100 + ); + }; + update(); + $scope.$watch( + $attrs.fileUploadProgress + '.loaded', + function (newValue, oldValue) { + if (newValue !== oldValue) { + update(); + } + } + ); + } + ]) + + // Display File Upload previews: + .controller('FileUploadPreviewController', [ + '$scope', '$element', '$attrs', '$parse', + function ($scope, $element, $attrs, $parse) { + var fn = $parse($attrs.fileUploadPreview), + file = fn($scope); + if (file.preview) { + $element.append(file.preview); + } + } + ]) + + .directive('fileUpload', function () { + return { + controller: 'FileUploadController' + }; + }) + + .directive('fileUploadProgress', function () { + return { + controller: 'FileUploadProgressController' + }; + }) + + .directive('fileUploadPreview', function () { + return { + controller: 'FileUploadPreviewController' + }; + }) + + // Enhance the HTML5 download attribute to + // allow drag&drop of files to the desktop: + .directive('download', function () { + return function (scope, elm) { + elm.on('dragstart', function (e) { + try { + e.originalEvent.dataTransfer.setData( + 'DownloadURL', + [ + 'application/octet-stream', + elm.prop('download'), + elm.prop('href') + ].join(':') + ); + } catch (ignore) {} + }); + }; + }); + +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-audio.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-audio.js new file mode 100644 index 00000000..f59c2fa5 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-audio.js @@ -0,0 +1,106 @@ +/* + * jQuery File Upload Audio Preview Plugin 1.0.3 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, unparam: true, regexp: true */ +/*global define, window, document */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define([ + 'jquery', + 'load-image', + './jquery.fileupload-process' + ], factory); + } else { + // Browser globals: + factory( + window.jQuery, + window.loadImage + ); + } +}(function ($, loadImage) { + 'use strict'; + + // Prepend to the default processQueue: + $.blueimp.fileupload.prototype.options.processQueue.unshift( + { + action: 'loadAudio', + // Use the action as prefix for the "@" options: + prefix: true, + fileTypes: '@', + maxFileSize: '@', + disabled: '@disableAudioPreview' + }, + { + action: 'setAudio', + name: '@audioPreviewName', + disabled: '@disableAudioPreview' + } + ); + + // The File Upload Audio Preview plugin extends the fileupload widget + // with audio preview functionality: + $.widget('blueimp.fileupload', $.blueimp.fileupload, { + + options: { + // The regular expression for the types of audio files to load, + // matched against the file type: + loadAudioFileTypes: /^audio\/.*$/ + }, + + _audioElement: document.createElement('audio'), + + processActions: { + + // Loads the audio file given via data.files and data.index + // as audio element if the browser supports playing it. + // Accepts the options fileTypes (regular expression) + // and maxFileSize (integer) to limit the files to load: + loadAudio: function (data, options) { + if (options.disabled) { + return data; + } + var file = data.files[data.index], + url, + audio; + if (this._audioElement.canPlayType && + this._audioElement.canPlayType(file.type) && + ($.type(options.maxFileSize) !== 'number' || + file.size <= options.maxFileSize) && + (!options.fileTypes || + options.fileTypes.test(file.type))) { + url = loadImage.createObjectURL(file); + if (url) { + audio = this._audioElement.cloneNode(false); + audio.src = url; + audio.controls = true; + data.audio = audio; + return data; + } + } + return data; + }, + + // Sets the audio element as a property of the file object: + setAudio: function (data, options) { + if (data.audio && !options.disabled) { + data.files[data.index][options.name || 'preview'] = data.audio; + } + return data; + } + + } + + }); + +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-image.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-image.js new file mode 100644 index 00000000..84474a7b --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-image.js @@ -0,0 +1,292 @@ +/* + * jQuery File Upload Image Preview & Resize Plugin 1.2.3 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, unparam: true, regexp: true */ +/*global define, window, document, DataView, Blob, Uint8Array */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define([ + 'jquery', + 'load-image', + 'load-image-meta', + 'load-image-exif', + 'load-image-ios', + 'canvas-to-blob', + './jquery.fileupload-process' + ], factory); + } else { + // Browser globals: + factory( + window.jQuery, + window.loadImage + ); + } +}(function ($, loadImage) { + 'use strict'; + + // Prepend to the default processQueue: + $.blueimp.fileupload.prototype.options.processQueue.unshift( + { + action: 'loadImageMetaData', + disableImageHead: '@', + disableExif: '@', + disableExifThumbnail: '@', + disableExifSub: '@', + disableExifGps: '@', + disabled: '@disableImageMetaDataLoad' + }, + { + action: 'loadImage', + // Use the action as prefix for the "@" options: + prefix: true, + fileTypes: '@', + maxFileSize: '@', + noRevoke: '@', + disabled: '@disableImageLoad' + }, + { + action: 'resizeImage', + // Use "image" as prefix for the "@" options: + prefix: 'image', + maxWidth: '@', + maxHeight: '@', + minWidth: '@', + minHeight: '@', + crop: '@', + disabled: '@disableImageResize' + }, + { + action: 'saveImage', + disabled: '@disableImageResize' + }, + { + action: 'saveImageMetaData', + disabled: '@disableImageMetaDataSave' + }, + { + action: 'resizeImage', + // Use "preview" as prefix for the "@" options: + prefix: 'preview', + maxWidth: '@', + maxHeight: '@', + minWidth: '@', + minHeight: '@', + crop: '@', + orientation: '@', + thumbnail: '@', + canvas: '@', + disabled: '@disableImagePreview' + }, + { + action: 'setImage', + name: '@imagePreviewName', + disabled: '@disableImagePreview' + } + ); + + // The File Upload Resize plugin extends the fileupload widget + // with image resize functionality: + $.widget('blueimp.fileupload', $.blueimp.fileupload, { + + options: { + // The regular expression for the types of images to load: + // matched against the file type: + loadImageFileTypes: /^image\/(gif|jpeg|png)$/, + // The maximum file size of images to load: + loadImageMaxFileSize: 10000000, // 10MB + // The maximum width of resized images: + imageMaxWidth: 1920, + // The maximum height of resized images: + imageMaxHeight: 1080, + // Define if resized images should be cropped or only scaled: + imageCrop: false, + // Disable the resize image functionality by default: + disableImageResize: true, + // The maximum width of the preview images: + previewMaxWidth: 80, + // The maximum height of the preview images: + previewMaxHeight: 80, + // Defines the preview orientation (1-8) or takes the orientation + // value from Exif data if set to true: + previewOrientation: true, + // Create the preview using the Exif data thumbnail: + previewThumbnail: true, + // Define if preview images should be cropped or only scaled: + previewCrop: false, + // Define if preview images should be resized as canvas elements: + previewCanvas: true + }, + + processActions: { + + // Loads the image given via data.files and data.index + // as img element if the browser supports canvas. + // Accepts the options fileTypes (regular expression) + // and maxFileSize (integer) to limit the files to load: + loadImage: function (data, options) { + if (options.disabled) { + return data; + } + var that = this, + file = data.files[data.index], + dfd = $.Deferred(); + if (($.type(options.maxFileSize) === 'number' && + file.size > options.maxFileSize) || + (options.fileTypes && + !options.fileTypes.test(file.type)) || + !loadImage( + file, + function (img) { + if (img.src) { + data.img = img; + } + dfd.resolveWith(that, [data]); + }, + options + )) { + return data; + } + return dfd.promise(); + }, + + // Resizes the image given as data.canvas or data.img + // and updates data.canvas or data.img with the resized image. + // Accepts the options maxWidth, maxHeight, minWidth, + // minHeight, canvas and crop: + resizeImage: function (data, options) { + if (options.disabled) { + return data; + } + var that = this, + dfd = $.Deferred(), + resolve = function (newImg) { + data[newImg.getContext ? 'canvas' : 'img'] = newImg; + dfd.resolveWith(that, [data]); + }, + thumbnail, + img, + newImg; + options = $.extend({canvas: true}, options); + if (data.exif) { + if (options.orientation === true) { + options.orientation = data.exif.get('Orientation'); + } + if (options.thumbnail) { + thumbnail = data.exif.get('Thumbnail'); + if (thumbnail) { + loadImage(thumbnail, resolve, options); + return dfd.promise(); + } + } + } + img = (options.canvas && data.canvas) || data.img; + if (img) { + newImg = loadImage.scale(img, options); + if (newImg.width !== img.width || + newImg.height !== img.height) { + resolve(newImg); + return dfd.promise(); + } + } + return data; + }, + + // Saves the processed image given as data.canvas + // inplace at data.index of data.files: + saveImage: function (data, options) { + if (!data.canvas || options.disabled) { + return data; + } + var that = this, + file = data.files[data.index], + name = file.name, + dfd = $.Deferred(), + callback = function (blob) { + if (!blob.name) { + if (file.type === blob.type) { + blob.name = file.name; + } else if (file.name) { + blob.name = file.name.replace( + /\..+$/, + '.' + blob.type.substr(6) + ); + } + } + // Store the created blob at the position + // of the original file in the files list: + data.files[data.index] = blob; + dfd.resolveWith(that, [data]); + }; + // Use canvas.mozGetAsFile directly, to retain the filename, as + // Gecko doesn't support the filename option for FormData.append: + if (data.canvas.mozGetAsFile) { + callback(data.canvas.mozGetAsFile( + (/^image\/(jpeg|png)$/.test(file.type) && name) || + ((name && name.replace(/\..+$/, '')) || + 'blob') + '.png', + file.type + )); + } else if (data.canvas.toBlob) { + data.canvas.toBlob(callback, file.type); + } else { + return data; + } + return dfd.promise(); + }, + + loadImageMetaData: function (data, options) { + if (options.disabled) { + return data; + } + var that = this, + dfd = $.Deferred(); + loadImage.parseMetaData(data.files[data.index], function (result) { + $.extend(data, result); + dfd.resolveWith(that, [data]); + }, options); + return dfd.promise(); + }, + + saveImageMetaData: function (data, options) { + if (!(data.imageHead && data.canvas && + data.canvas.toBlob && !options.disabled)) { + return data; + } + var file = data.files[data.index], + blob = new Blob([ + data.imageHead, + // Resized images always have a head size of 20 bytes, + // including the JPEG marker and a minimal JFIF header: + this._blobSlice.call(file, 20) + ], {type: file.type}); + blob.name = file.name; + data.files[data.index] = blob; + return data; + }, + + // Sets the resized version of the image as a property of the + // file object, must be called after "saveImage": + setImage: function (data, options) { + var img = data.canvas || data.img; + if (img && !options.disabled) { + data.files[data.index][options.name || 'preview'] = img; + } + return data; + } + + } + + }); + +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-jquery-ui.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-jquery-ui.js new file mode 100644 index 00000000..05dd7a61 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-jquery-ui.js @@ -0,0 +1,138 @@ +/* + * jQuery File Upload jQuery UI Plugin 8.7.0 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, unparam: true */ +/*global define, window */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define(['jquery', './jquery.fileupload-ui'], factory); + } else { + // Browser globals: + factory(window.jQuery); + } +}(function ($) { + 'use strict'; + + $.widget('blueimp.fileupload', $.blueimp.fileupload, { + + options: { + progress: function (e, data) { + if (data.context) { + data.context.find('.progress').progressbar( + 'option', + 'value', + parseInt(data.loaded / data.total * 100, 10) + ); + } + }, + progressall: function (e, data) { + var $this = $(this); + $this.find('.fileupload-progress') + .find('.progress').progressbar( + 'option', + 'value', + parseInt(data.loaded / data.total * 100, 10) + ).end() + .find('.progress-extended').each(function () { + $(this).html( + ($this.data('blueimp-fileupload') || + $this.data('fileupload')) + ._renderExtendedProgress(data) + ); + }); + } + }, + + _renderUpload: function (func, files) { + var node = this._super(func, files), + showIconText = $(window).width() > 480; + node.find('.progress').empty().progressbar(); + node.find('.start').button({ + icons: {primary: 'ui-icon-circle-arrow-e'}, + text: showIconText + }); + node.find('.cancel').button({ + icons: {primary: 'ui-icon-cancel'}, + text: showIconText + }); + return node; + }, + + _renderDownload: function (func, files) { + var node = this._super(func, files), + showIconText = $(window).width() > 480; + node.find('.delete').button({ + icons: {primary: 'ui-icon-trash'}, + text: showIconText + }); + return node; + }, + + _transition: function (node) { + var deferred = $.Deferred(); + if (node.hasClass('fade')) { + node.fadeToggle( + this.options.transitionDuration, + this.options.transitionEasing, + function () { + deferred.resolveWith(node); + } + ); + } else { + deferred.resolveWith(node); + } + return deferred; + }, + + _create: function () { + this._super(); + this.element + .find('.fileupload-buttonbar') + .find('.fileinput-button').each(function () { + var input = $(this).find('input:file').detach(); + $(this) + .button({icons: {primary: 'ui-icon-plusthick'}}) + .append(input); + }) + .end().find('.start') + .button({icons: {primary: 'ui-icon-circle-arrow-e'}}) + .end().find('.cancel') + .button({icons: {primary: 'ui-icon-cancel'}}) + .end().find('.delete') + .button({icons: {primary: 'ui-icon-trash'}}) + .end().find('.progress').progressbar(); + }, + + _destroy: function () { + this.element + .find('.fileupload-buttonbar') + .find('.fileinput-button').each(function () { + var input = $(this).find('input:file').detach(); + $(this) + .button('destroy') + .append(input); + }) + .end().find('.start') + .button('destroy') + .end().find('.cancel') + .button('destroy') + .end().find('.delete') + .button('destroy') + .end().find('.progress').progressbar('destroy'); + this._super(); + } + + }); + +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-process.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-process.js new file mode 100644 index 00000000..87042c3d --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-process.js @@ -0,0 +1,164 @@ +/* + * jQuery File Upload Processing Plugin 1.2.2 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2012, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, unparam: true */ +/*global define, window */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define([ + 'jquery', + './jquery.fileupload' + ], factory); + } else { + // Browser globals: + factory( + window.jQuery + ); + } +}(function ($) { + 'use strict'; + + var originalAdd = $.blueimp.fileupload.prototype.options.add; + + // The File Upload Processing plugin extends the fileupload widget + // with file processing functionality: + $.widget('blueimp.fileupload', $.blueimp.fileupload, { + + options: { + // The list of processing actions: + processQueue: [ + /* + { + action: 'log', + type: 'debug' + } + */ + ], + add: function (e, data) { + var $this = $(this); + data.process(function () { + return $this.fileupload('process', data); + }); + originalAdd.call(this, e, data); + } + }, + + processActions: { + /* + log: function (data, options) { + console[options.type]( + 'Processing "' + data.files[data.index].name + '"' + ); + } + */ + }, + + _processFile: function (data) { + var that = this, + dfd = $.Deferred().resolveWith(that, [data]), + chain = dfd.promise(); + this._trigger('process', null, data); + $.each(data.processQueue, function (i, settings) { + var func = function (data) { + return that.processActions[settings.action].call( + that, + data, + settings + ); + }; + chain = chain.pipe(func, settings.always && func); + }); + chain + .done(function () { + that._trigger('processdone', null, data); + that._trigger('processalways', null, data); + }) + .fail(function () { + that._trigger('processfail', null, data); + that._trigger('processalways', null, data); + }); + return chain; + }, + + // Replaces the settings of each processQueue item that + // are strings starting with an "@", using the remaining + // substring as key for the option map, + // e.g. "@autoUpload" is replaced with options.autoUpload: + _transformProcessQueue: function (options) { + var processQueue = []; + $.each(options.processQueue, function () { + var settings = {}, + action = this.action, + prefix = this.prefix === true ? action : this.prefix; + $.each(this, function (key, value) { + if ($.type(value) === 'string' && + value.charAt(0) === '@') { + settings[key] = options[ + value.slice(1) || (prefix ? prefix + + key.charAt(0).toUpperCase() + key.slice(1) : key) + ]; + } else { + settings[key] = value; + } + + }); + processQueue.push(settings); + }); + options.processQueue = processQueue; + }, + + // Returns the number of files currently in the processsing queue: + processing: function () { + return this._processing; + }, + + // Processes the files given as files property of the data parameter, + // returns a Promise object that allows to bind callbacks: + process: function (data) { + var that = this, + options = $.extend({}, this.options, data); + if (options.processQueue && options.processQueue.length) { + this._transformProcessQueue(options); + if (this._processing === 0) { + this._trigger('processstart'); + } + $.each(data.files, function (index) { + var opts = index ? $.extend({}, options) : options, + func = function () { + return that._processFile(opts); + }; + opts.index = index; + that._processing += 1; + that._processingQueue = that._processingQueue.pipe(func, func) + .always(function () { + that._processing -= 1; + if (that._processing === 0) { + that._trigger('processstop'); + } + }); + }); + } + return this._processingQueue; + }, + + _create: function () { + this._super(); + this._processing = 0; + this._processingQueue = $.Deferred().resolveWith(this) + .promise(); + } + + }); + +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-ui.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-ui.js new file mode 100644 index 00000000..4006a64b --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-ui.js @@ -0,0 +1,647 @@ +/* + * jQuery File Upload User Interface Plugin 8.8.5 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2010, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, unparam: true, regexp: true */ +/*global define, window, URL, webkitURL, FileReader */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define([ + 'jquery', + 'tmpl', + './jquery.fileupload-image', + './jquery.fileupload-audio', + './jquery.fileupload-video', + './jquery.fileupload-validate' + ], factory); + } else { + // Browser globals: + factory( + window.jQuery, + window.tmpl + ); + } +}(function ($, tmpl, loadImage) { + 'use strict'; + + $.blueimp.fileupload.prototype._specialOptions.push( + 'filesContainer', + 'uploadTemplateId', + 'downloadTemplateId' + ); + + // The UI version extends the file upload widget + // and adds complete user interface interaction: + $.widget('blueimp.fileupload', $.blueimp.fileupload, { + + options: { + // By default, files added to the widget are uploaded as soon + // as the user clicks on the start buttons. To enable automatic + // uploads, set the following option to true: + autoUpload: false, + // The ID of the upload template: + uploadTemplateId: 'template-upload', + // The ID of the download template: + downloadTemplateId: 'template-download', + // The container for the list of files. If undefined, it is set to + // an element with class "files" inside of the widget element: + filesContainer: undefined, + // By default, files are appended to the files container. + // Set the following option to true, to prepend files instead: + prependFiles: false, + // The expected data type of the upload response, sets the dataType + // option of the $.ajax upload requests: + dataType: 'json', + + // Function returning the current number of files, + // used by the maxNumberOfFiles validation: + getNumberOfFiles: function () { + return this.filesContainer.children().length; + }, + + // Callback to retrieve the list of files from the server response: + getFilesFromResponse: function (data) { + if (data.result && $.isArray(data.result.files)) { + return data.result.files; + } + return []; + }, + + // The add callback is invoked as soon as files are added to the fileupload + // widget (via file input selection, drag & drop or add API call). + // See the basic file upload widget for more information: + add: function (e, data) { + var $this = $(this), + that = $this.data('blueimp-fileupload') || + $this.data('fileupload'), + options = that.options, + files = data.files; + data.process(function () { + return $this.fileupload('process', data); + }).always(function () { + data.context = that._renderUpload(files).data('data', data); + that._renderPreviews(data); + options.filesContainer[ + options.prependFiles ? 'prepend' : 'append' + ](data.context); + that._forceReflow(data.context); + that._transition(data.context).done( + function () { + if ((that._trigger('added', e, data) !== false) && + (options.autoUpload || data.autoUpload) && + data.autoUpload !== false && !data.files.error) { + data.submit(); + } + } + ); + }); + }, + // Callback for the start of each file upload request: + send: function (e, data) { + var that = $(this).data('blueimp-fileupload') || + $(this).data('fileupload'); + if (data.context && data.dataType && + data.dataType.substr(0, 6) === 'iframe') { + // Iframe Transport does not support progress events. + // In lack of an indeterminate progress bar, we set + // the progress to 100%, showing the full animated bar: + data.context + .find('.progress').addClass( + !$.support.transition && 'progress-animated' + ) + .attr('aria-valuenow', 100) + .children().first().css( + 'width', + '100%' + ); + } + return that._trigger('sent', e, data); + }, + // Callback for successful uploads: + done: function (e, data) { + var that = $(this).data('blueimp-fileupload') || + $(this).data('fileupload'), + getFilesFromResponse = data.getFilesFromResponse || + that.options.getFilesFromResponse, + files = getFilesFromResponse(data), + template, + deferred; + if (data.context) { + data.context.each(function (index) { + var file = files[index] || + {error: 'Empty file upload result'}; + deferred = that._addFinishedDeferreds(); + that._transition($(this)).done( + function () { + var node = $(this); + template = that._renderDownload([file]) + .replaceAll(node); + that._forceReflow(template); + that._transition(template).done( + function () { + data.context = $(this); + that._trigger('completed', e, data); + that._trigger('finished', e, data); + deferred.resolve(); + } + ); + } + ); + }); + } else { + template = that._renderDownload(files)[ + that.options.prependFiles ? 'prependTo' : 'appendTo' + ](that.options.filesContainer); + that._forceReflow(template); + deferred = that._addFinishedDeferreds(); + that._transition(template).done( + function () { + data.context = $(this); + that._trigger('completed', e, data); + that._trigger('finished', e, data); + deferred.resolve(); + } + ); + } + }, + // Callback for failed (abort or error) uploads: + fail: function (e, data) { + var that = $(this).data('blueimp-fileupload') || + $(this).data('fileupload'), + template, + deferred; + if (data.context) { + data.context.each(function (index) { + if (data.errorThrown !== 'abort') { + var file = data.files[index]; + file.error = file.error || data.errorThrown || + true; + deferred = that._addFinishedDeferreds(); + that._transition($(this)).done( + function () { + var node = $(this); + template = that._renderDownload([file]) + .replaceAll(node); + that._forceReflow(template); + that._transition(template).done( + function () { + data.context = $(this); + that._trigger('failed', e, data); + that._trigger('finished', e, data); + deferred.resolve(); + } + ); + } + ); + } else { + deferred = that._addFinishedDeferreds(); + that._transition($(this)).done( + function () { + $(this).remove(); + that._trigger('failed', e, data); + that._trigger('finished', e, data); + deferred.resolve(); + } + ); + } + }); + } else if (data.errorThrown !== 'abort') { + data.context = that._renderUpload(data.files)[ + that.options.prependFiles ? 'prependTo' : 'appendTo' + ](that.options.filesContainer) + .data('data', data); + that._forceReflow(data.context); + deferred = that._addFinishedDeferreds(); + that._transition(data.context).done( + function () { + data.context = $(this); + that._trigger('failed', e, data); + that._trigger('finished', e, data); + deferred.resolve(); + } + ); + } else { + that._trigger('failed', e, data); + that._trigger('finished', e, data); + that._addFinishedDeferreds().resolve(); + } + }, + // Callback for upload progress events: + progress: function (e, data) { + var progress = Math.floor(data.loaded / data.total * 100); + if (data.context) { + data.context.each(function () { + $(this).find('.progress') + .attr('aria-valuenow', progress) + .children().first().css( + 'width', + progress + '%' + ); + }); + } + }, + // Callback for global upload progress events: + progressall: function (e, data) { + var $this = $(this), + progress = Math.floor(data.loaded / data.total * 100), + globalProgressNode = $this.find('.fileupload-progress'), + extendedProgressNode = globalProgressNode + .find('.progress-extended'); + if (extendedProgressNode.length) { + extendedProgressNode.html( + ($this.data('blueimp-fileupload') || $this.data('fileupload')) + ._renderExtendedProgress(data) + ); + } + globalProgressNode + .find('.progress') + .attr('aria-valuenow', progress) + .children().first().css( + 'width', + progress + '%' + ); + }, + // Callback for uploads start, equivalent to the global ajaxStart event: + start: function (e) { + var that = $(this).data('blueimp-fileupload') || + $(this).data('fileupload'); + that._resetFinishedDeferreds(); + that._transition($(this).find('.fileupload-progress')).done( + function () { + that._trigger('started', e); + } + ); + }, + // Callback for uploads stop, equivalent to the global ajaxStop event: + stop: function (e) { + var that = $(this).data('blueimp-fileupload') || + $(this).data('fileupload'), + deferred = that._addFinishedDeferreds(); + $.when.apply($, that._getFinishedDeferreds()) + .done(function () { + that._trigger('stopped', e); + }); + that._transition($(this).find('.fileupload-progress')).done( + function () { + $(this).find('.progress') + .attr('aria-valuenow', '0') + .children().first().css('width', '0%'); + $(this).find('.progress-extended').html(' '); + deferred.resolve(); + } + ); + }, + processstart: function () { + $(this).addClass('fileupload-processing'); + }, + processstop: function () { + $(this).removeClass('fileupload-processing'); + }, + // Callback for file deletion: + destroy: function (e, data) { + var that = $(this).data('blueimp-fileupload') || + $(this).data('fileupload'), + removeNode = function () { + that._transition(data.context).done( + function () { + $(this).remove(); + that._trigger('destroyed', e, data); + } + ); + }; + if (data.url) { + $.ajax(data).done(removeNode); + } else { + removeNode(); + } + } + }, + + _resetFinishedDeferreds: function () { + this._finishedUploads = []; + }, + + _addFinishedDeferreds: function (deferred) { + if (!deferred) { + deferred = $.Deferred(); + } + this._finishedUploads.push(deferred); + return deferred; + }, + + _getFinishedDeferreds: function () { + return this._finishedUploads; + }, + + // Link handler, that allows to download files + // by drag & drop of the links to the desktop: + _enableDragToDesktop: function () { + var link = $(this), + url = link.prop('href'), + name = link.prop('download'), + type = 'application/octet-stream'; + link.bind('dragstart', function (e) { + try { + e.originalEvent.dataTransfer.setData( + 'DownloadURL', + [type, name, url].join(':') + ); + } catch (ignore) {} + }); + }, + + _formatFileSize: function (bytes) { + if (typeof bytes !== 'number') { + return ''; + } + if (bytes >= 1000000000) { + return (bytes / 1000000000).toFixed(2) + ' GB'; + } + if (bytes >= 1000000) { + return (bytes / 1000000).toFixed(2) + ' MB'; + } + return (bytes / 1000).toFixed(2) + ' KB'; + }, + + _formatBitrate: function (bits) { + if (typeof bits !== 'number') { + return ''; + } + if (bits >= 1000000000) { + return (bits / 1000000000).toFixed(2) + ' Gbit/s'; + } + if (bits >= 1000000) { + return (bits / 1000000).toFixed(2) + ' Mbit/s'; + } + if (bits >= 1000) { + return (bits / 1000).toFixed(2) + ' kbit/s'; + } + return bits.toFixed(2) + ' bit/s'; + }, + + _formatTime: function (seconds) { + var date = new Date(seconds * 1000), + days = Math.floor(seconds / 86400); + days = days ? days + 'd ' : ''; + return days + + ('0' + date.getUTCHours()).slice(-2) + ':' + + ('0' + date.getUTCMinutes()).slice(-2) + ':' + + ('0' + date.getUTCSeconds()).slice(-2); + }, + + _formatPercentage: function (floatValue) { + return (floatValue * 100).toFixed(2) + ' %'; + }, + + _renderExtendedProgress: function (data) { + return this._formatBitrate(data.bitrate) + ' | ' + + this._formatTime( + (data.total - data.loaded) * 8 / data.bitrate + ) + ' | ' + + this._formatPercentage( + data.loaded / data.total + ) + ' | ' + + this._formatFileSize(data.loaded) + ' / ' + + this._formatFileSize(data.total); + }, + + _renderTemplate: function (func, files) { + if (!func) { + return $(); + } + var result = func({ + files: files, + formatFileSize: this._formatFileSize, + options: this.options + }); + if (result instanceof $) { + return result; + } + return $(this.options.templatesContainer).html(result).children(); + }, + + _renderPreviews: function (data) { + data.context.find('.preview').each(function (index, elm) { + $(elm).append(data.files[index].preview); + }); + }, + + _renderUpload: function (files) { + return this._renderTemplate( + this.options.uploadTemplate, + files + ); + }, + + _renderDownload: function (files) { + return this._renderTemplate( + this.options.downloadTemplate, + files + ).find('a[download]').each(this._enableDragToDesktop).end(); + }, + + _startHandler: function (e) { + e.preventDefault(); + var button = $(e.currentTarget), + template = button.closest('.template-upload'), + data = template.data('data'); + if (data && data.submit && !data.jqXHR && data.submit()) { + button.prop('disabled', true); + } + }, + + _cancelHandler: function (e) { + e.preventDefault(); + var template = $(e.currentTarget) + .closest('.template-upload,.template-download'), + data = template.data('data') || {}; + if (!data.jqXHR) { + data.context = data.context || template; + data.errorThrown = 'abort'; + this._trigger('fail', e, data); + } else { + data.jqXHR.abort(); + } + }, + + _deleteHandler: function (e) { + e.preventDefault(); + var button = $(e.currentTarget); + this._trigger('destroy', e, $.extend({ + context: button.closest('.template-download'), + type: 'DELETE' + }, button.data())); + }, + + _forceReflow: function (node) { + return $.support.transition && node.length && + node[0].offsetWidth; + }, + + _transition: function (node) { + var dfd = $.Deferred(); + if ($.support.transition && node.hasClass('fade') && node.is(':visible')) { + node.bind( + $.support.transition.end, + function (e) { + // Make sure we don't respond to other transitions events + // in the container element, e.g. from button elements: + if (e.target === node[0]) { + node.unbind($.support.transition.end); + dfd.resolveWith(node); + } + } + ).toggleClass('in'); + } else { + node.toggleClass('in'); + dfd.resolveWith(node); + } + return dfd; + }, + + _initButtonBarEventHandlers: function () { + var fileUploadButtonBar = this.element.find('.fileupload-buttonbar'), + filesList = this.options.filesContainer; + this._on(fileUploadButtonBar.find('.start'), { + click: function (e) { + e.preventDefault(); + filesList.find('.start').click(); + } + }); + this._on(fileUploadButtonBar.find('.cancel'), { + click: function (e) { + e.preventDefault(); + filesList.find('.cancel').click(); + } + }); + this._on(fileUploadButtonBar.find('.delete'), { + click: function (e) { + e.preventDefault(); + filesList.find('.toggle:checked') + .closest('.template-download') + .find('.delete').click(); + fileUploadButtonBar.find('.toggle') + .prop('checked', false); + } + }); + this._on(fileUploadButtonBar.find('.toggle'), { + change: function (e) { + filesList.find('.toggle').prop( + 'checked', + $(e.currentTarget).is(':checked') + ); + } + }); + }, + + _destroyButtonBarEventHandlers: function () { + this._off( + this.element.find('.fileupload-buttonbar') + .find('.start, .cancel, .delete'), + 'click' + ); + this._off( + this.element.find('.fileupload-buttonbar .toggle'), + 'change.' + ); + }, + + _initEventHandlers: function () { + this._super(); + this._on(this.options.filesContainer, { + 'click .start': this._startHandler, + 'click .cancel': this._cancelHandler, + 'click .delete': this._deleteHandler + }); + this._initButtonBarEventHandlers(); + }, + + _destroyEventHandlers: function () { + this._destroyButtonBarEventHandlers(); + this._off(this.options.filesContainer, 'click'); + this._super(); + }, + + _enableFileInputButton: function () { + this.element.find('.fileinput-button input') + .prop('disabled', false) + .parent().removeClass('disabled'); + }, + + _disableFileInputButton: function () { + this.element.find('.fileinput-button input') + .prop('disabled', true) + .parent().addClass('disabled'); + }, + + _initTemplates: function () { + var options = this.options; + options.templatesContainer = this.document[0].createElement( + options.filesContainer.prop('nodeName') + ); + if (tmpl) { + if (options.uploadTemplateId) { + options.uploadTemplate = tmpl(options.uploadTemplateId); + } + if (options.downloadTemplateId) { + options.downloadTemplate = tmpl(options.downloadTemplateId); + } + } + }, + + _initFilesContainer: function () { + var options = this.options; + if (options.filesContainer === undefined) { + options.filesContainer = this.element.find('.files'); + } else if (!(options.filesContainer instanceof $)) { + options.filesContainer = $(options.filesContainer); + } + }, + + _initSpecialOptions: function () { + this._super(); + this._initFilesContainer(); + this._initTemplates(); + }, + + _create: function () { + this._super(); + this._resetFinishedDeferreds(); + if (!$.support.fileInput) { + this._disableFileInputButton(); + } + }, + + enable: function () { + var wasDisabled = false; + if (this.options.disabled) { + wasDisabled = true; + } + this._super(); + if (wasDisabled) { + this.element.find('input, button').prop('disabled', false); + this._enableFileInputButton(); + } + }, + + disable: function () { + if (!this.options.disabled) { + this.element.find('input, button').prop('disabled', true); + this._disableFileInputButton(); + } + this._super(); + } + + }); + +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-validate.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-validate.js new file mode 100644 index 00000000..ee1c2f2e --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-validate.js @@ -0,0 +1,117 @@ +/* + * jQuery File Upload Validation Plugin 1.1.1 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, unparam: true, regexp: true */ +/*global define, window */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define([ + 'jquery', + './jquery.fileupload-process' + ], factory); + } else { + // Browser globals: + factory( + window.jQuery + ); + } +}(function ($) { + 'use strict'; + + // Append to the default processQueue: + $.blueimp.fileupload.prototype.options.processQueue.push( + { + action: 'validate', + // Always trigger this action, + // even if the previous action was rejected: + always: true, + // Options taken from the global options map: + acceptFileTypes: '@', + maxFileSize: '@', + minFileSize: '@', + maxNumberOfFiles: '@', + disabled: '@disableValidation' + } + ); + + // The File Upload Validation plugin extends the fileupload widget + // with file validation functionality: + $.widget('blueimp.fileupload', $.blueimp.fileupload, { + + options: { + /* + // The regular expression for allowed file types, matches + // against either file type or file name: + acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, + // The maximum allowed file size in bytes: + maxFileSize: 10000000, // 10 MB + // The minimum allowed file size in bytes: + minFileSize: undefined, // No minimal file size + // The limit of files to be uploaded: + maxNumberOfFiles: 10, + */ + + // Function returning the current number of files, + // has to be overriden for maxNumberOfFiles validation: + getNumberOfFiles: $.noop, + + // Error and info messages: + messages: { + maxNumberOfFiles: 'Maximum number of files exceeded', + acceptFileTypes: 'File type not allowed', + maxFileSize: 'File is too large', + minFileSize: 'File is too small' + } + }, + + processActions: { + + validate: function (data, options) { + if (options.disabled) { + return data; + } + var dfd = $.Deferred(), + settings = this.options, + file = data.files[data.index]; + if ($.type(options.maxNumberOfFiles) === 'number' && + (settings.getNumberOfFiles() || 0) + data.files.length > + options.maxNumberOfFiles) { + file.error = settings.i18n('maxNumberOfFiles'); + } else if (options.acceptFileTypes && + !(options.acceptFileTypes.test(file.type) || + options.acceptFileTypes.test(file.name))) { + file.error = settings.i18n('acceptFileTypes'); + } else if (options.maxFileSize && file.size > + options.maxFileSize) { + file.error = settings.i18n('maxFileSize'); + } else if ($.type(file.size) === 'number' && + file.size < options.minFileSize) { + file.error = settings.i18n('minFileSize'); + } else { + delete file.error; + } + if (file.error || data.files.error) { + data.files.error = true; + dfd.rejectWith(this, [data]); + } else { + dfd.resolveWith(this, [data]); + } + return dfd.promise(); + } + + } + + }); + +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-video.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-video.js new file mode 100644 index 00000000..c8b10193 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload-video.js @@ -0,0 +1,106 @@ +/* + * jQuery File Upload Video Preview Plugin 1.0.3 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, unparam: true, regexp: true */ +/*global define, window, document */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define([ + 'jquery', + 'load-image', + './jquery.fileupload-process' + ], factory); + } else { + // Browser globals: + factory( + window.jQuery, + window.loadImage + ); + } +}(function ($, loadImage) { + 'use strict'; + + // Prepend to the default processQueue: + $.blueimp.fileupload.prototype.options.processQueue.unshift( + { + action: 'loadVideo', + // Use the action as prefix for the "@" options: + prefix: true, + fileTypes: '@', + maxFileSize: '@', + disabled: '@disableVideoPreview' + }, + { + action: 'setVideo', + name: '@videoPreviewName', + disabled: '@disableVideoPreview' + } + ); + + // The File Upload Video Preview plugin extends the fileupload widget + // with video preview functionality: + $.widget('blueimp.fileupload', $.blueimp.fileupload, { + + options: { + // The regular expression for the types of video files to load, + // matched against the file type: + loadVideoFileTypes: /^video\/.*$/ + }, + + _videoElement: document.createElement('video'), + + processActions: { + + // Loads the video file given via data.files and data.index + // as video element if the browser supports playing it. + // Accepts the options fileTypes (regular expression) + // and maxFileSize (integer) to limit the files to load: + loadVideo: function (data, options) { + if (options.disabled) { + return data; + } + var file = data.files[data.index], + url, + video; + if (this._videoElement.canPlayType && + this._videoElement.canPlayType(file.type) && + ($.type(options.maxFileSize) !== 'number' || + file.size <= options.maxFileSize) && + (!options.fileTypes || + options.fileTypes.test(file.type))) { + url = loadImage.createObjectURL(file); + if (url) { + video = this._videoElement.cloneNode(false); + video.src = url; + video.controls = true; + data.video = video; + return data; + } + } + return data; + }, + + // Sets the video element as a property of the file object: + setVideo: function (data, options) { + if (data.video && !options.disabled) { + data.files[data.index][options.name || 'preview'] = data.video; + } + return data; + } + + } + + }); + +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload.js new file mode 100644 index 00000000..ddcfd42b --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.fileupload.js @@ -0,0 +1,1333 @@ +/* + * jQuery File Upload Plugin 5.32.3 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2010, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, unparam: true, regexp: true */ +/*global define, window, document, location, File, Blob, FormData */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define([ + 'jquery', + 'jquery.ui.widget' + ], factory); + } else { + // Browser globals: + factory(window.jQuery); + } +}(function ($) { + 'use strict'; + + // Detect file input support, based on + // http://viljamis.com/blog/2012/file-upload-support-on-mobile/ + $.support.fileInput = !(new RegExp( + // Handle devices which give false positives for the feature detection: + '(Android (1\\.[0156]|2\\.[01]))' + + '|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' + + '|(w(eb)?OSBrowser)|(webOS)' + + '|(Kindle/(1\\.0|2\\.[05]|3\\.0))' + ).test(window.navigator.userAgent) || + // Feature detection for all other devices: + $('').prop('disabled')); + + // The FileReader API is not actually used, but works as feature detection, + // as e.g. Safari supports XHR file uploads via the FormData API, + // but not non-multipart XHR file uploads: + $.support.xhrFileUpload = !!(window.XMLHttpRequestUpload && window.FileReader); + $.support.xhrFormDataFileUpload = !!window.FormData; + + // Detect support for Blob slicing (required for chunked uploads): + $.support.blobSlice = window.Blob && (Blob.prototype.slice || + Blob.prototype.webkitSlice || Blob.prototype.mozSlice); + + // The fileupload widget listens for change events on file input fields defined + // via fileInput setting and paste or drop events of the given dropZone. + // In addition to the default jQuery Widget methods, the fileupload widget + // exposes the "add" and "send" methods, to add or directly send files using + // the fileupload API. + // By default, files added via file input selection, paste, drag & drop or + // "add" method are uploaded immediately, but it is possible to override + // the "add" callback option to queue file uploads. + $.widget('blueimp.fileupload', { + + options: { + // The drop target element(s), by the default the complete document. + // Set to null to disable drag & drop support: + dropZone: $(document), + // The paste target element(s), by the default the complete document. + // Set to null to disable paste support: + pasteZone: $(document), + // The file input field(s), that are listened to for change events. + // If undefined, it is set to the file input fields inside + // of the widget element on plugin initialization. + // Set to null to disable the change listener. + fileInput: undefined, + // By default, the file input field is replaced with a clone after + // each input field change event. This is required for iframe transport + // queues and allows change events to be fired for the same file + // selection, but can be disabled by setting the following option to false: + replaceFileInput: true, + // The parameter name for the file form data (the request argument name). + // If undefined or empty, the name property of the file input field is + // used, or "files[]" if the file input name property is also empty, + // can be a string or an array of strings: + paramName: undefined, + // By default, each file of a selection is uploaded using an individual + // request for XHR type uploads. Set to false to upload file + // selections in one request each: + singleFileUploads: true, + // To limit the number of files uploaded with one XHR request, + // set the following option to an integer greater than 0: + limitMultiFileUploads: undefined, + // Set the following option to true to issue all file upload requests + // in a sequential order: + sequentialUploads: false, + // To limit the number of concurrent uploads, + // set the following option to an integer greater than 0: + limitConcurrentUploads: undefined, + // Set the following option to true to force iframe transport uploads: + forceIframeTransport: false, + // Set the following option to the location of a redirect url on the + // origin server, for cross-domain iframe transport uploads: + redirect: undefined, + // The parameter name for the redirect url, sent as part of the form + // data and set to 'redirect' if this option is empty: + redirectParamName: undefined, + // Set the following option to the location of a postMessage window, + // to enable postMessage transport uploads: + postMessage: undefined, + // By default, XHR file uploads are sent as multipart/form-data. + // The iframe transport is always using multipart/form-data. + // Set to false to enable non-multipart XHR uploads: + multipart: true, + // To upload large files in smaller chunks, set the following option + // to a preferred maximum chunk size. If set to 0, null or undefined, + // or the browser does not support the required Blob API, files will + // be uploaded as a whole. + maxChunkSize: undefined, + // When a non-multipart upload or a chunked multipart upload has been + // aborted, this option can be used to resume the upload by setting + // it to the size of the already uploaded bytes. This option is most + // useful when modifying the options object inside of the "add" or + // "send" callbacks, as the options are cloned for each file upload. + uploadedBytes: undefined, + // By default, failed (abort or error) file uploads are removed from the + // global progress calculation. Set the following option to false to + // prevent recalculating the global progress data: + recalculateProgress: true, + // Interval in milliseconds to calculate and trigger progress events: + progressInterval: 100, + // Interval in milliseconds to calculate progress bitrate: + bitrateInterval: 500, + // By default, uploads are started automatically when adding files: + autoUpload: true, + + // Error and info messages: + messages: { + uploadedBytes: 'Uploaded bytes exceed file size' + }, + + // Translation function, gets the message key to be translated + // and an object with context specific data as arguments: + i18n: function (message, context) { + message = this.messages[message] || message.toString(); + if (context) { + $.each(context, function (key, value) { + message = message.replace('{' + key + '}', value); + }); + } + return message; + }, + + // Additional form data to be sent along with the file uploads can be set + // using this option, which accepts an array of objects with name and + // value properties, a function returning such an array, a FormData + // object (for XHR file uploads), or a simple object. + // The form of the first fileInput is given as parameter to the function: + formData: function (form) { + return form.serializeArray(); + }, + + // The add callback is invoked as soon as files are added to the fileupload + // widget (via file input selection, drag & drop, paste or add API call). + // If the singleFileUploads option is enabled, this callback will be + // called once for each file in the selection for XHR file uploads, else + // once for each file selection. + // + // The upload starts when the submit method is invoked on the data parameter. + // The data object contains a files property holding the added files + // and allows you to override plugin options as well as define ajax settings. + // + // Listeners for this callback can also be bound the following way: + // .bind('fileuploadadd', func); + // + // data.submit() returns a Promise object and allows to attach additional + // handlers using jQuery's Deferred callbacks: + // data.submit().done(func).fail(func).always(func); + add: function (e, data) { + if (data.autoUpload || (data.autoUpload !== false && + $(this).fileupload('option', 'autoUpload'))) { + data.process().done(function () { + data.submit(); + }); + } + }, + + // Other callbacks: + + // Callback for the submit event of each file upload: + // submit: function (e, data) {}, // .bind('fileuploadsubmit', func); + + // Callback for the start of each file upload request: + // send: function (e, data) {}, // .bind('fileuploadsend', func); + + // Callback for successful uploads: + // done: function (e, data) {}, // .bind('fileuploaddone', func); + + // Callback for failed (abort or error) uploads: + // fail: function (e, data) {}, // .bind('fileuploadfail', func); + + // Callback for completed (success, abort or error) requests: + // always: function (e, data) {}, // .bind('fileuploadalways', func); + + // Callback for upload progress events: + // progress: function (e, data) {}, // .bind('fileuploadprogress', func); + + // Callback for global upload progress events: + // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func); + + // Callback for uploads start, equivalent to the global ajaxStart event: + // start: function (e) {}, // .bind('fileuploadstart', func); + + // Callback for uploads stop, equivalent to the global ajaxStop event: + // stop: function (e) {}, // .bind('fileuploadstop', func); + + // Callback for change events of the fileInput(s): + // change: function (e, data) {}, // .bind('fileuploadchange', func); + + // Callback for paste events to the pasteZone(s): + // paste: function (e, data) {}, // .bind('fileuploadpaste', func); + + // Callback for drop events of the dropZone(s): + // drop: function (e, data) {}, // .bind('fileuploaddrop', func); + + // Callback for dragover events of the dropZone(s): + // dragover: function (e) {}, // .bind('fileuploaddragover', func); + + // Callback for the start of each chunk upload request: + // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func); + + // Callback for successful chunk uploads: + // chunkdone: function (e, data) {}, // .bind('fileuploadchunkdone', func); + + // Callback for failed (abort or error) chunk uploads: + // chunkfail: function (e, data) {}, // .bind('fileuploadchunkfail', func); + + // Callback for completed (success, abort or error) chunk upload requests: + // chunkalways: function (e, data) {}, // .bind('fileuploadchunkalways', func); + + // The plugin options are used as settings object for the ajax calls. + // The following are jQuery ajax settings required for the file uploads: + processData: false, + contentType: false, + cache: false + }, + + // A list of options that require reinitializing event listeners and/or + // special initialization code: + _specialOptions: [ + 'fileInput', + 'dropZone', + 'pasteZone', + 'multipart', + 'forceIframeTransport' + ], + + _blobSlice: $.support.blobSlice && function () { + var slice = this.slice || this.webkitSlice || this.mozSlice; + return slice.apply(this, arguments); + }, + + _BitrateTimer: function () { + this.timestamp = ((Date.now) ? Date.now() : (new Date()).getTime()); + this.loaded = 0; + this.bitrate = 0; + this.getBitrate = function (now, loaded, interval) { + var timeDiff = now - this.timestamp; + if (!this.bitrate || !interval || timeDiff > interval) { + this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8; + this.loaded = loaded; + this.timestamp = now; + } + return this.bitrate; + }; + }, + + _isXHRUpload: function (options) { + return !options.forceIframeTransport && + ((!options.multipart && $.support.xhrFileUpload) || + $.support.xhrFormDataFileUpload); + }, + + _getFormData: function (options) { + var formData; + if (typeof options.formData === 'function') { + return options.formData(options.form); + } + if ($.isArray(options.formData)) { + return options.formData; + } + if ($.type(options.formData) === 'object') { + formData = []; + $.each(options.formData, function (name, value) { + formData.push({name: name, value: value}); + }); + return formData; + } + return []; + }, + + _getTotal: function (files) { + var total = 0; + $.each(files, function (index, file) { + total += file.size || 1; + }); + return total; + }, + + _initProgressObject: function (obj) { + var progress = { + loaded: 0, + total: 0, + bitrate: 0 + }; + if (obj._progress) { + $.extend(obj._progress, progress); + } else { + obj._progress = progress; + } + }, + + _initResponseObject: function (obj) { + var prop; + if (obj._response) { + for (prop in obj._response) { + if (obj._response.hasOwnProperty(prop)) { + delete obj._response[prop]; + } + } + } else { + obj._response = {}; + } + }, + + _onProgress: function (e, data) { + if (e.lengthComputable) { + var now = ((Date.now) ? Date.now() : (new Date()).getTime()), + loaded; + if (data._time && data.progressInterval && + (now - data._time < data.progressInterval) && + e.loaded !== e.total) { + return; + } + data._time = now; + loaded = Math.floor( + e.loaded / e.total * (data.chunkSize || data._progress.total) + ) + (data.uploadedBytes || 0); + // Add the difference from the previously loaded state + // to the global loaded counter: + this._progress.loaded += (loaded - data._progress.loaded); + this._progress.bitrate = this._bitrateTimer.getBitrate( + now, + this._progress.loaded, + data.bitrateInterval + ); + data._progress.loaded = data.loaded = loaded; + data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate( + now, + loaded, + data.bitrateInterval + ); + // Trigger a custom progress event with a total data property set + // to the file size(s) of the current upload and a loaded data + // property calculated accordingly: + this._trigger('progress', e, data); + // Trigger a global progress event for all current file uploads, + // including ajax calls queued for sequential file uploads: + this._trigger('progressall', e, this._progress); + } + }, + + _initProgressListener: function (options) { + var that = this, + xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); + // Accesss to the native XHR object is required to add event listeners + // for the upload progress event: + if (xhr.upload) { + $(xhr.upload).bind('progress', function (e) { + var oe = e.originalEvent; + // Make sure the progress event properties get copied over: + e.lengthComputable = oe.lengthComputable; + e.loaded = oe.loaded; + e.total = oe.total; + that._onProgress(e, options); + }); + options.xhr = function () { + return xhr; + }; + } + }, + + _isInstanceOf: function (type, obj) { + // Cross-frame instanceof check + return Object.prototype.toString.call(obj) === '[object ' + type + ']'; + }, + + _initXHRData: function (options) { + var that = this, + formData, + file = options.files[0], + // Ignore non-multipart setting if not supported: + multipart = options.multipart || !$.support.xhrFileUpload, + paramName = options.paramName[0]; + options.headers = $.extend({}, options.headers); + if (options.contentRange) { + options.headers['Content-Range'] = options.contentRange; + } + if (!multipart || options.blob || !this._isInstanceOf('File', file)) { + options.headers['Content-Disposition'] = 'attachment; filename="' + + encodeURI(file.name) + '"'; + } + if (!multipart) { + options.contentType = file.type; + options.data = options.blob || file; + } else if ($.support.xhrFormDataFileUpload) { + if (options.postMessage) { + // window.postMessage does not allow sending FormData + // objects, so we just add the File/Blob objects to + // the formData array and let the postMessage window + // create the FormData object out of this array: + formData = this._getFormData(options); + if (options.blob) { + formData.push({ + name: paramName, + value: options.blob + }); + } else { + $.each(options.files, function (index, file) { + formData.push({ + name: options.paramName[index] || paramName, + value: file + }); + }); + } + } else { + if (that._isInstanceOf('FormData', options.formData)) { + formData = options.formData; + } else { + formData = new FormData(); + $.each(this._getFormData(options), function (index, field) { + formData.append(field.name, field.value); + }); + } + if (options.blob) { + formData.append(paramName, options.blob, file.name); + } else { + $.each(options.files, function (index, file) { + // This check allows the tests to run with + // dummy objects: + if (that._isInstanceOf('File', file) || + that._isInstanceOf('Blob', file)) { + formData.append( + options.paramName[index] || paramName, + file, + file.name + ); + } + }); + } + } + options.data = formData; + } + // Blob reference is not needed anymore, free memory: + options.blob = null; + }, + + _initIframeSettings: function (options) { + var targetHost = $('').prop('href', options.url).prop('host'); + // Setting the dataType to iframe enables the iframe transport: + options.dataType = 'iframe ' + (options.dataType || ''); + // The iframe transport accepts a serialized array as form data: + options.formData = this._getFormData(options); + // Add redirect url to form data on cross-domain uploads: + if (options.redirect && targetHost && targetHost !== location.host) { + options.formData.push({ + name: options.redirectParamName || 'redirect', + value: options.redirect + }); + } + }, + + _initDataSettings: function (options) { + if (this._isXHRUpload(options)) { + if (!this._chunkedUpload(options, true)) { + if (!options.data) { + this._initXHRData(options); + } + this._initProgressListener(options); + } + if (options.postMessage) { + // Setting the dataType to postmessage enables the + // postMessage transport: + options.dataType = 'postmessage ' + (options.dataType || ''); + } + } else { + this._initIframeSettings(options); + } + }, + + _getParamName: function (options) { + var fileInput = $(options.fileInput), + paramName = options.paramName; + if (!paramName) { + paramName = []; + fileInput.each(function () { + var input = $(this), + name = input.prop('name') || 'files[]', + i = (input.prop('files') || [1]).length; + while (i) { + paramName.push(name); + i -= 1; + } + }); + if (!paramName.length) { + paramName = [fileInput.prop('name') || 'files[]']; + } + } else if (!$.isArray(paramName)) { + paramName = [paramName]; + } + return paramName; + }, + + _initFormSettings: function (options) { + // Retrieve missing options from the input field and the + // associated form, if available: + if (!options.form || !options.form.length) { + options.form = $(options.fileInput.prop('form')); + // If the given file input doesn't have an associated form, + // use the default widget file input's form: + if (!options.form.length) { + options.form = $(this.options.fileInput.prop('form')); + } + } + options.paramName = this._getParamName(options); + if (!options.url) { + options.url = options.form.prop('action') || location.href; + } + // The HTTP request method must be "POST" or "PUT": + options.type = (options.type || options.form.prop('method') || '') + .toUpperCase(); + if (options.type !== 'POST' && options.type !== 'PUT' && + options.type !== 'PATCH') { + options.type = 'POST'; + } + if (!options.formAcceptCharset) { + options.formAcceptCharset = options.form.attr('accept-charset'); + } + }, + + _getAJAXSettings: function (data) { + var options = $.extend({}, this.options, data); + this._initFormSettings(options); + this._initDataSettings(options); + return options; + }, + + // jQuery 1.6 doesn't provide .state(), + // while jQuery 1.8+ removed .isRejected() and .isResolved(): + _getDeferredState: function (deferred) { + if (deferred.state) { + return deferred.state(); + } + if (deferred.isResolved()) { + return 'resolved'; + } + if (deferred.isRejected()) { + return 'rejected'; + } + return 'pending'; + }, + + // Maps jqXHR callbacks to the equivalent + // methods of the given Promise object: + _enhancePromise: function (promise) { + promise.success = promise.done; + promise.error = promise.fail; + promise.complete = promise.always; + return promise; + }, + + // Creates and returns a Promise object enhanced with + // the jqXHR methods abort, success, error and complete: + _getXHRPromise: function (resolveOrReject, context, args) { + var dfd = $.Deferred(), + promise = dfd.promise(); + context = context || this.options.context || promise; + if (resolveOrReject === true) { + dfd.resolveWith(context, args); + } else if (resolveOrReject === false) { + dfd.rejectWith(context, args); + } + promise.abort = dfd.promise; + return this._enhancePromise(promise); + }, + + // Adds convenience methods to the data callback argument: + _addConvenienceMethods: function (e, data) { + var that = this, + getPromise = function (data) { + return $.Deferred().resolveWith(that, [data]).promise(); + }; + data.process = function (resolveFunc, rejectFunc) { + if (resolveFunc || rejectFunc) { + data._processQueue = this._processQueue = + (this._processQueue || getPromise(this)) + .pipe(resolveFunc, rejectFunc); + } + return this._processQueue || getPromise(this); + }; + data.submit = function () { + if (this.state() !== 'pending') { + data.jqXHR = this.jqXHR = + (that._trigger('submit', e, this) !== false) && + that._onSend(e, this); + } + return this.jqXHR || that._getXHRPromise(); + }; + data.abort = function () { + if (this.jqXHR) { + return this.jqXHR.abort(); + } + return that._getXHRPromise(); + }; + data.state = function () { + if (this.jqXHR) { + return that._getDeferredState(this.jqXHR); + } + if (this._processQueue) { + return that._getDeferredState(this._processQueue); + } + }; + data.progress = function () { + return this._progress; + }; + data.response = function () { + return this._response; + }; + }, + + // Parses the Range header from the server response + // and returns the uploaded bytes: + _getUploadedBytes: function (jqXHR) { + var range = jqXHR.getResponseHeader('Range'), + parts = range && range.split('-'), + upperBytesPos = parts && parts.length > 1 && + parseInt(parts[1], 10); + return upperBytesPos && upperBytesPos + 1; + }, + + // Uploads a file in multiple, sequential requests + // by splitting the file up in multiple blob chunks. + // If the second parameter is true, only tests if the file + // should be uploaded in chunks, but does not invoke any + // upload requests: + _chunkedUpload: function (options, testOnly) { + options.uploadedBytes = options.uploadedBytes || 0; + var that = this, + file = options.files[0], + fs = file.size, + ub = options.uploadedBytes, + mcs = options.maxChunkSize || fs, + slice = this._blobSlice, + dfd = $.Deferred(), + promise = dfd.promise(), + jqXHR, + upload; + if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) || + options.data) { + return false; + } + if (testOnly) { + return true; + } + if (ub >= fs) { + file.error = options.i18n('uploadedBytes'); + return this._getXHRPromise( + false, + options.context, + [null, 'error', file.error] + ); + } + // The chunk upload method: + upload = function () { + // Clone the options object for each chunk upload: + var o = $.extend({}, options), + currentLoaded = o._progress.loaded; + o.blob = slice.call( + file, + ub, + ub + mcs, + file.type + ); + // Store the current chunk size, as the blob itself + // will be dereferenced after data processing: + o.chunkSize = o.blob.size; + // Expose the chunk bytes position range: + o.contentRange = 'bytes ' + ub + '-' + + (ub + o.chunkSize - 1) + '/' + fs; + // Process the upload data (the blob and potential form data): + that._initXHRData(o); + // Add progress listeners for this chunk upload: + that._initProgressListener(o); + jqXHR = ((that._trigger('chunksend', null, o) !== false && $.ajax(o)) || + that._getXHRPromise(false, o.context)) + .done(function (result, textStatus, jqXHR) { + ub = that._getUploadedBytes(jqXHR) || + (ub + o.chunkSize); + // Create a progress event if no final progress event + // with loaded equaling total has been triggered + // for this chunk: + if (currentLoaded + o.chunkSize - o._progress.loaded) { + that._onProgress($.Event('progress', { + lengthComputable: true, + loaded: ub - o.uploadedBytes, + total: ub - o.uploadedBytes + }), o); + } + options.uploadedBytes = o.uploadedBytes = ub; + o.result = result; + o.textStatus = textStatus; + o.jqXHR = jqXHR; + that._trigger('chunkdone', null, o); + that._trigger('chunkalways', null, o); + if (ub < fs) { + // File upload not yet complete, + // continue with the next chunk: + upload(); + } else { + dfd.resolveWith( + o.context, + [result, textStatus, jqXHR] + ); + } + }) + .fail(function (jqXHR, textStatus, errorThrown) { + o.jqXHR = jqXHR; + o.textStatus = textStatus; + o.errorThrown = errorThrown; + that._trigger('chunkfail', null, o); + that._trigger('chunkalways', null, o); + dfd.rejectWith( + o.context, + [jqXHR, textStatus, errorThrown] + ); + }); + }; + this._enhancePromise(promise); + promise.abort = function () { + return jqXHR.abort(); + }; + upload(); + return promise; + }, + + _beforeSend: function (e, data) { + if (this._active === 0) { + // the start callback is triggered when an upload starts + // and no other uploads are currently running, + // equivalent to the global ajaxStart event: + this._trigger('start'); + // Set timer for global bitrate progress calculation: + this._bitrateTimer = new this._BitrateTimer(); + // Reset the global progress values: + this._progress.loaded = this._progress.total = 0; + this._progress.bitrate = 0; + } + // Make sure the container objects for the .response() and + // .progress() methods on the data object are available + // and reset to their initial state: + this._initResponseObject(data); + this._initProgressObject(data); + data._progress.loaded = data.loaded = data.uploadedBytes || 0; + data._progress.total = data.total = this._getTotal(data.files) || 1; + data._progress.bitrate = data.bitrate = 0; + this._active += 1; + // Initialize the global progress values: + this._progress.loaded += data.loaded; + this._progress.total += data.total; + }, + + _onDone: function (result, textStatus, jqXHR, options) { + var total = options._progress.total, + response = options._response; + if (options._progress.loaded < total) { + // Create a progress event if no final progress event + // with loaded equaling total has been triggered: + this._onProgress($.Event('progress', { + lengthComputable: true, + loaded: total, + total: total + }), options); + } + response.result = options.result = result; + response.textStatus = options.textStatus = textStatus; + response.jqXHR = options.jqXHR = jqXHR; + this._trigger('done', null, options); + }, + + _onFail: function (jqXHR, textStatus, errorThrown, options) { + var response = options._response; + if (options.recalculateProgress) { + // Remove the failed (error or abort) file upload from + // the global progress calculation: + this._progress.loaded -= options._progress.loaded; + this._progress.total -= options._progress.total; + } + response.jqXHR = options.jqXHR = jqXHR; + response.textStatus = options.textStatus = textStatus; + response.errorThrown = options.errorThrown = errorThrown; + this._trigger('fail', null, options); + }, + + _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) { + // jqXHRorResult, textStatus and jqXHRorError are added to the + // options object via done and fail callbacks + this._trigger('always', null, options); + }, + + _onSend: function (e, data) { + if (!data.submit) { + this._addConvenienceMethods(e, data); + } + var that = this, + jqXHR, + aborted, + slot, + pipe, + options = that._getAJAXSettings(data), + send = function () { + that._sending += 1; + // Set timer for bitrate progress calculation: + options._bitrateTimer = new that._BitrateTimer(); + jqXHR = jqXHR || ( + ((aborted || that._trigger('send', e, options) === false) && + that._getXHRPromise(false, options.context, aborted)) || + that._chunkedUpload(options) || $.ajax(options) + ).done(function (result, textStatus, jqXHR) { + that._onDone(result, textStatus, jqXHR, options); + }).fail(function (jqXHR, textStatus, errorThrown) { + that._onFail(jqXHR, textStatus, errorThrown, options); + }).always(function (jqXHRorResult, textStatus, jqXHRorError) { + that._onAlways( + jqXHRorResult, + textStatus, + jqXHRorError, + options + ); + that._sending -= 1; + that._active -= 1; + if (options.limitConcurrentUploads && + options.limitConcurrentUploads > that._sending) { + // Start the next queued upload, + // that has not been aborted: + var nextSlot = that._slots.shift(); + while (nextSlot) { + if (that._getDeferredState(nextSlot) === 'pending') { + nextSlot.resolve(); + break; + } + nextSlot = that._slots.shift(); + } + } + if (that._active === 0) { + // The stop callback is triggered when all uploads have + // been completed, equivalent to the global ajaxStop event: + that._trigger('stop'); + } + }); + return jqXHR; + }; + this._beforeSend(e, options); + if (this.options.sequentialUploads || + (this.options.limitConcurrentUploads && + this.options.limitConcurrentUploads <= this._sending)) { + if (this.options.limitConcurrentUploads > 1) { + slot = $.Deferred(); + this._slots.push(slot); + pipe = slot.pipe(send); + } else { + this._sequence = this._sequence.pipe(send, send); + pipe = this._sequence; + } + // Return the piped Promise object, enhanced with an abort method, + // which is delegated to the jqXHR object of the current upload, + // and jqXHR callbacks mapped to the equivalent Promise methods: + pipe.abort = function () { + aborted = [undefined, 'abort', 'abort']; + if (!jqXHR) { + if (slot) { + slot.rejectWith(options.context, aborted); + } + return send(); + } + return jqXHR.abort(); + }; + return this._enhancePromise(pipe); + } + return send(); + }, + + _onAdd: function (e, data) { + var that = this, + result = true, + options = $.extend({}, this.options, data), + limit = options.limitMultiFileUploads, + paramName = this._getParamName(options), + paramNameSet, + paramNameSlice, + fileSet, + i; + if (!(options.singleFileUploads || limit) || + !this._isXHRUpload(options)) { + fileSet = [data.files]; + paramNameSet = [paramName]; + } else if (!options.singleFileUploads && limit) { + fileSet = []; + paramNameSet = []; + for (i = 0; i < data.files.length; i += limit) { + fileSet.push(data.files.slice(i, i + limit)); + paramNameSlice = paramName.slice(i, i + limit); + if (!paramNameSlice.length) { + paramNameSlice = paramName; + } + paramNameSet.push(paramNameSlice); + } + } else { + paramNameSet = paramName; + } + data.originalFiles = data.files; + $.each(fileSet || data.files, function (index, element) { + var newData = $.extend({}, data); + newData.files = fileSet ? element : [element]; + newData.paramName = paramNameSet[index]; + that._initResponseObject(newData); + that._initProgressObject(newData); + that._addConvenienceMethods(e, newData); + result = that._trigger('add', e, newData); + return result; + }); + return result; + }, + + _replaceFileInput: function (input) { + var inputClone = input.clone(true); + $('
    ').append(inputClone)[0].reset(); + // Detaching allows to insert the fileInput on another form + // without loosing the file input value: + input.after(inputClone).detach(); + // Avoid memory leaks with the detached file input: + $.cleanData(input.unbind('remove')); + // Replace the original file input element in the fileInput + // elements set with the clone, which has been copied including + // event handlers: + this.options.fileInput = this.options.fileInput.map(function (i, el) { + if (el === input[0]) { + return inputClone[0]; + } + return el; + }); + // If the widget has been initialized on the file input itself, + // override this.element with the file input clone: + if (input[0] === this.element[0]) { + this.element = inputClone; + } + }, + + _handleFileTreeEntry: function (entry, path) { + var that = this, + dfd = $.Deferred(), + errorHandler = function (e) { + if (e && !e.entry) { + e.entry = entry; + } + // Since $.when returns immediately if one + // Deferred is rejected, we use resolve instead. + // This allows valid files and invalid items + // to be returned together in one set: + dfd.resolve([e]); + }, + dirReader; + path = path || ''; + if (entry.isFile) { + if (entry._file) { + // Workaround for Chrome bug #149735 + entry._file.relativePath = path; + dfd.resolve(entry._file); + } else { + entry.file(function (file) { + file.relativePath = path; + dfd.resolve(file); + }, errorHandler); + } + } else if (entry.isDirectory) { + dirReader = entry.createReader(); + dirReader.readEntries(function (entries) { + that._handleFileTreeEntries( + entries, + path + entry.name + '/' + ).done(function (files) { + dfd.resolve(files); + }).fail(errorHandler); + }, errorHandler); + } else { + // Return an empy list for file system items + // other than files or directories: + dfd.resolve([]); + } + return dfd.promise(); + }, + + _handleFileTreeEntries: function (entries, path) { + var that = this; + return $.when.apply( + $, + $.map(entries, function (entry) { + return that._handleFileTreeEntry(entry, path); + }) + ).pipe(function () { + return Array.prototype.concat.apply( + [], + arguments + ); + }); + }, + + _getDroppedFiles: function (dataTransfer) { + dataTransfer = dataTransfer || {}; + var items = dataTransfer.items; + if (items && items.length && (items[0].webkitGetAsEntry || + items[0].getAsEntry)) { + return this._handleFileTreeEntries( + $.map(items, function (item) { + var entry; + if (item.webkitGetAsEntry) { + entry = item.webkitGetAsEntry(); + if (entry) { + // Workaround for Chrome bug #149735: + entry._file = item.getAsFile(); + } + return entry; + } + return item.getAsEntry(); + }) + ); + } + return $.Deferred().resolve( + $.makeArray(dataTransfer.files) + ).promise(); + }, + + _getSingleFileInputFiles: function (fileInput) { + fileInput = $(fileInput); + var entries = fileInput.prop('webkitEntries') || + fileInput.prop('entries'), + files, + value; + if (entries && entries.length) { + return this._handleFileTreeEntries(entries); + } + files = $.makeArray(fileInput.prop('files')); + if (!files.length) { + value = fileInput.prop('value'); + if (!value) { + return $.Deferred().resolve([]).promise(); + } + // If the files property is not available, the browser does not + // support the File API and we add a pseudo File object with + // the input value as name with path information removed: + files = [{name: value.replace(/^.*\\/, '')}]; + } else if (files[0].name === undefined && files[0].fileName) { + // File normalization for Safari 4 and Firefox 3: + $.each(files, function (index, file) { + file.name = file.fileName; + file.size = file.fileSize; + }); + } + return $.Deferred().resolve(files).promise(); + }, + + _getFileInputFiles: function (fileInput) { + if (!(fileInput instanceof $) || fileInput.length === 1) { + return this._getSingleFileInputFiles(fileInput); + } + return $.when.apply( + $, + $.map(fileInput, this._getSingleFileInputFiles) + ).pipe(function () { + return Array.prototype.concat.apply( + [], + arguments + ); + }); + }, + + _onChange: function (e) { + var that = this, + data = { + fileInput: $(e.target), + form: $(e.target.form) + }; + this._getFileInputFiles(data.fileInput).always(function (files) { + data.files = files; + if (that.options.replaceFileInput) { + that._replaceFileInput(data.fileInput); + } + if (that._trigger('change', e, data) !== false) { + that._onAdd(e, data); + } + }); + }, + + _onPaste: function (e) { + var items = e.originalEvent && e.originalEvent.clipboardData && + e.originalEvent.clipboardData.items, + data = {files: []}; + if (items && items.length) { + $.each(items, function (index, item) { + var file = item.getAsFile && item.getAsFile(); + if (file) { + data.files.push(file); + } + }); + if (this._trigger('paste', e, data) === false || + this._onAdd(e, data) === false) { + return false; + } + } + }, + + _onDrop: function (e) { + e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; + var that = this, + dataTransfer = e.dataTransfer, + data = {}; + if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { + e.preventDefault(); + this._getDroppedFiles(dataTransfer).always(function (files) { + data.files = files; + if (that._trigger('drop', e, data) !== false) { + that._onAdd(e, data); + } + }); + } + }, + + _onDragOver: function (e) { + e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; + var dataTransfer = e.dataTransfer; + if (dataTransfer) { + if (this._trigger('dragover', e) === false) { + return false; + } + if ($.inArray('Files', dataTransfer.types) !== -1) { + dataTransfer.dropEffect = 'copy'; + e.preventDefault(); + } + } + }, + + _initEventHandlers: function () { + if (this._isXHRUpload(this.options)) { + this._on(this.options.dropZone, { + dragover: this._onDragOver, + drop: this._onDrop + }); + this._on(this.options.pasteZone, { + paste: this._onPaste + }); + } + if ($.support.fileInput) { + this._on(this.options.fileInput, { + change: this._onChange + }); + } + }, + + _destroyEventHandlers: function () { + this._off(this.options.dropZone, 'dragover drop'); + this._off(this.options.pasteZone, 'paste'); + this._off(this.options.fileInput, 'change'); + }, + + _setOption: function (key, value) { + var reinit = $.inArray(key, this._specialOptions) !== -1; + if (reinit) { + this._destroyEventHandlers(); + } + this._super(key, value); + if (reinit) { + this._initSpecialOptions(); + this._initEventHandlers(); + } + }, + + _initSpecialOptions: function () { + var options = this.options; + if (options.fileInput === undefined) { + options.fileInput = this.element.is('input[type="file"]') ? + this.element : this.element.find('input[type="file"]'); + } else if (!(options.fileInput instanceof $)) { + options.fileInput = $(options.fileInput); + } + if (!(options.dropZone instanceof $)) { + options.dropZone = $(options.dropZone); + } + if (!(options.pasteZone instanceof $)) { + options.pasteZone = $(options.pasteZone); + } + }, + + _getRegExp: function (str) { + var parts = str.split('/'), + modifiers = parts.pop(); + parts.shift(); + return new RegExp(parts.join('/'), modifiers); + }, + + _isRegExpOption: function (key, value) { + return key !== 'url' && $.type(value) === 'string' && + /^\/.*\/[igm]{0,3}$/.test(value); + }, + + _initDataAttributes: function () { + var that = this, + options = this.options; + // Initialize options set via HTML5 data-attributes: + $.each( + $(this.element[0].cloneNode(false)).data(), + function (key, value) { + if (that._isRegExpOption(key, value)) { + value = that._getRegExp(value); + } + options[key] = value; + } + ); + }, + + _create: function () { + this._initDataAttributes(); + this._initSpecialOptions(); + this._slots = []; + this._sequence = this._getXHRPromise(true); + this._sending = this._active = 0; + this._initProgressObject(this); + this._initEventHandlers(); + }, + + // This method is exposed to the widget API and allows to query + // the number of active uploads: + active: function () { + return this._active; + }, + + // This method is exposed to the widget API and allows to query + // the widget upload progress. + // It returns an object with loaded, total and bitrate properties + // for the running uploads: + progress: function () { + return this._progress; + }, + + // This method is exposed to the widget API and allows adding files + // using the fileupload API. The data parameter accepts an object which + // must have a files property and can contain additional options: + // .fileupload('add', {files: filesList}); + add: function (data) { + var that = this; + if (!data || this.options.disabled) { + return; + } + if (data.fileInput && !data.files) { + this._getFileInputFiles(data.fileInput).always(function (files) { + data.files = files; + that._onAdd(null, data); + }); + } else { + data.files = $.makeArray(data.files); + this._onAdd(null, data); + } + }, + + // This method is exposed to the widget API and allows sending files + // using the fileupload API. The data parameter accepts an object which + // must have a files or fileInput property and can contain additional options: + // .fileupload('send', {files: filesList}); + // The method returns a Promise object for the file upload call. + send: function (data) { + if (data && !this.options.disabled) { + if (data.fileInput && !data.files) { + var that = this, + dfd = $.Deferred(), + promise = dfd.promise(), + jqXHR, + aborted; + promise.abort = function () { + aborted = true; + if (jqXHR) { + return jqXHR.abort(); + } + dfd.reject(null, 'abort', 'abort'); + return promise; + }; + this._getFileInputFiles(data.fileInput).always( + function (files) { + if (aborted) { + return; + } + if (!files.length) { + dfd.reject(); + return; + } + data.files = files; + jqXHR = that._onSend(null, data).then( + function (result, textStatus, jqXHR) { + dfd.resolve(result, textStatus, jqXHR); + }, + function (jqXHR, textStatus, errorThrown) { + dfd.reject(jqXHR, textStatus, errorThrown); + } + ); + } + ); + return this._enhancePromise(promise); + } + data.files = $.makeArray(data.files); + if (data.files.length) { + return this._onSend(null, data); + } + } + return this._getXHRPromise(false, data && data.context); + } + + }); + +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.iframe-transport.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.iframe-transport.js new file mode 100644 index 00000000..073c5fbe --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/jquery.iframe-transport.js @@ -0,0 +1,205 @@ +/* + * jQuery Iframe Transport Plugin 1.7 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint unparam: true, nomen: true */ +/*global define, window, document */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define(['jquery'], factory); + } else { + // Browser globals: + factory(window.jQuery); + } +}(function ($) { + 'use strict'; + + // Helper variable to create unique names for the transport iframes: + var counter = 0; + + // The iframe transport accepts three additional options: + // options.fileInput: a jQuery collection of file input fields + // options.paramName: the parameter name for the file form data, + // overrides the name property of the file input field(s), + // can be a string or an array of strings. + // options.formData: an array of objects with name and value properties, + // equivalent to the return data of .serializeArray(), e.g.: + // [{name: 'a', value: 1}, {name: 'b', value: 2}] + $.ajaxTransport('iframe', function (options) { + if (options.async) { + var form, + iframe, + addParamChar; + return { + send: function (_, completeCallback) { + form = $('
    '); + form.attr('accept-charset', options.formAcceptCharset); + addParamChar = /\?/.test(options.url) ? '&' : '?'; + // XDomainRequest only supports GET and POST: + if (options.type === 'DELETE') { + options.url = options.url + addParamChar + '_method=DELETE'; + options.type = 'POST'; + } else if (options.type === 'PUT') { + options.url = options.url + addParamChar + '_method=PUT'; + options.type = 'POST'; + } else if (options.type === 'PATCH') { + options.url = options.url + addParamChar + '_method=PATCH'; + options.type = 'POST'; + } + // javascript:false as initial iframe src + // prevents warning popups on HTTPS in IE6. + // IE versions below IE8 cannot set the name property of + // elements that have already been added to the DOM, + // so we set the name along with the iframe HTML markup: + counter += 1; + iframe = $( + '' + ).bind('load', function () { + var fileInputClones, + paramNames = $.isArray(options.paramName) ? + options.paramName : [options.paramName]; + iframe + .unbind('load') + .bind('load', function () { + var response; + // Wrap in a try/catch block to catch exceptions thrown + // when trying to access cross-domain iframe contents: + try { + response = iframe.contents(); + // Google Chrome and Firefox do not throw an + // exception when calling iframe.contents() on + // cross-domain requests, so we unify the response: + if (!response.length || !response[0].firstChild) { + throw new Error(); + } + } catch (e) { + response = undefined; + } + // The complete callback returns the + // iframe content document as response object: + completeCallback( + 200, + 'success', + {'iframe': response} + ); + // Fix for IE endless progress bar activity bug + // (happens on form submits to iframe targets): + $('') + .appendTo(form); + window.setTimeout(function () { + // Removing the form in a setTimeout call + // allows Chrome's developer tools to display + // the response result + form.remove(); + }, 0); + }); + form + .prop('target', iframe.prop('name')) + .prop('action', options.url) + .prop('method', options.type); + if (options.formData) { + $.each(options.formData, function (index, field) { + $('') + .prop('name', field.name) + .val(field.value) + .appendTo(form); + }); + } + if (options.fileInput && options.fileInput.length && + options.type === 'POST') { + fileInputClones = options.fileInput.clone(); + // Insert a clone for each file input field: + options.fileInput.after(function (index) { + return fileInputClones[index]; + }); + if (options.paramName) { + options.fileInput.each(function (index) { + $(this).prop( + 'name', + paramNames[index] || options.paramName + ); + }); + } + // Appending the file input fields to the hidden form + // removes them from their original location: + form + .append(options.fileInput) + .prop('enctype', 'multipart/form-data') + // enctype must be set as encoding for IE: + .prop('encoding', 'multipart/form-data'); + } + form.submit(); + // Insert the file input fields at their original location + // by replacing the clones with the originals: + if (fileInputClones && fileInputClones.length) { + options.fileInput.each(function (index, input) { + var clone = $(fileInputClones[index]); + $(input).prop('name', clone.prop('name')); + clone.replaceWith(input); + }); + } + }); + form.append(iframe).appendTo(document.body); + }, + abort: function () { + if (iframe) { + // javascript:false as iframe src aborts the request + // and prevents warning popups on HTTPS in IE6. + // concat is used to avoid the "Script URL" JSLint error: + iframe + .unbind('load') + .prop('src', 'javascript'.concat(':false;')); + } + if (form) { + form.remove(); + } + } + }; + } + }); + + // The iframe transport returns the iframe content document as response. + // The following adds converters from iframe to text, json, html, xml + // and script. + // Please note that the Content-Type for JSON responses has to be text/plain + // or text/html, if the browser doesn't include application/json in the + // Accept header, else IE will show a download dialog. + // The Content-Type for XML responses on the other hand has to be always + // application/xml or text/xml, so IE properly parses the XML response. + // See also + // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation + $.ajaxSetup({ + converters: { + 'iframe text': function (iframe) { + return iframe && $(iframe[0].body).text(); + }, + 'iframe json': function (iframe) { + return iframe && $.parseJSON($(iframe[0].body).text()); + }, + 'iframe html': function (iframe) { + return iframe && $(iframe[0].body).html(); + }, + 'iframe xml': function (iframe) { + var xmlDoc = iframe && iframe[0]; + return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc : + $.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) || + $(xmlDoc.body).html()); + }, + 'iframe script': function (iframe) { + return iframe && $.globalEval($(iframe[0].body).text()); + } + } + }); + +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/main.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/main.js new file mode 100644 index 00000000..11b948a9 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/main.js @@ -0,0 +1,76 @@ +/* + * jQuery File Upload Plugin JS Example 8.8.2 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2010, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, regexp: true */ +/*global $, window, blueimp */ + +$(function () { + 'use strict'; + + // Initialize the jQuery File Upload widget: + $('#fileupload').fileupload({ + // Uncomment the following to send cross-domain cookies: + //xhrFields: {withCredentials: true}, + url: 'server/php/' + }); + + // Enable iframe cross-domain access via redirect option: + $('#fileupload').fileupload( + 'option', + 'redirect', + window.location.href.replace( + /\/[^\/]*$/, + '/cors/result.html?%s' + ) + ); + + if (window.location.hostname === 'blueimp.github.io') { + // Demo settings: + $('#fileupload').fileupload('option', { + url: '//jquery-file-upload.appspot.com/', + // Enable image resizing, except for Android and Opera, + // which actually support image resizing, but fail to + // send Blob objects via XHR requests: + disableImageResize: /Android(?!.*Chrome)|Opera/ + .test(window.navigator.userAgent), + maxFileSize: 5000000, + acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i + }); + // Upload server status check for browsers with CORS support: + if ($.support.cors) { + $.ajax({ + url: '//jquery-file-upload.appspot.com/', + type: 'HEAD' + }).fail(function () { + $('
    ') + .text('Upload server currently unavailable - ' + + new Date()) + .appendTo('#fileupload'); + }); + } + } else { + // Load existing files: + $('#fileupload').addClass('fileupload-processing'); + $.ajax({ + // Uncomment the following to send cross-domain cookies: + //xhrFields: {withCredentials: true}, + url: $('#fileupload').fileupload('option', 'url'), + dataType: 'json', + context: $('#fileupload')[0] + }).always(function () { + $(this).removeClass('fileupload-processing'); + }).done(function (result) { + $(this).fileupload('option', 'done') + .call(this, null, {result: result}); + }); + } + +}); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/vendor/jquery.ui.widget.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/vendor/jquery.ui.widget.js new file mode 100644 index 00000000..2d370893 --- /dev/null +++ b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/jQuery-File-Upload/js/vendor/jquery.ui.widget.js @@ -0,0 +1,530 @@ +/* + * jQuery UI Widget 1.10.3+amd + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/jQuery.widget/ + */ + +(function (factory) { + if (typeof define === "function" && define.amd) { + // Register as an anonymous AMD module: + define(["jquery"], factory); + } else { + // Browser globals: + factory(jQuery); + } +}(function( $, undefined ) { + +var uuid = 0, + slice = Array.prototype.slice, + _cleanData = $.cleanData; +$.cleanData = function( elems ) { + for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { + try { + $( elem ).triggerHandler( "remove" ); + // http://bugs.jquery.com/ticket/8235 + } catch( e ) {} + } + _cleanData( elems ); +}; + +$.widget = function( name, base, prototype ) { + var fullName, existingConstructor, constructor, basePrototype, + // proxiedPrototype allows the provided prototype to remain unmodified + // so that it can be used as a mixin for multiple widgets (#8876) + proxiedPrototype = {}, + namespace = name.split( "." )[ 0 ]; + + name = name.split( "." )[ 1 ]; + fullName = namespace + "-" + name; + + if ( !prototype ) { + prototype = base; + base = $.Widget; + } + + // create selector for plugin + $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { + return !!$.data( elem, fullName ); + }; + + $[ namespace ] = $[ namespace ] || {}; + existingConstructor = $[ namespace ][ name ]; + constructor = $[ namespace ][ name ] = function( options, element ) { + // allow instantiation without "new" keyword + if ( !this._createWidget ) { + return new constructor( options, element ); + } + + // allow instantiation without initializing for simple inheritance + // must use "new" keyword (the code above always passes args) + if ( arguments.length ) { + this._createWidget( options, element ); + } + }; + // extend with the existing constructor to carry over any static properties + $.extend( constructor, existingConstructor, { + version: prototype.version, + // copy the object used to create the prototype in case we need to + // redefine the widget later + _proto: $.extend( {}, prototype ), + // track widgets that inherit from this widget in case this widget is + // redefined after a widget inherits from it + _childConstructors: [] + }); + + basePrototype = new base(); + // we need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // inheriting from + basePrototype.options = $.widget.extend( {}, basePrototype.options ); + $.each( prototype, function( prop, value ) { + if ( !$.isFunction( value ) ) { + proxiedPrototype[ prop ] = value; + return; + } + proxiedPrototype[ prop ] = (function() { + var _super = function() { + return base.prototype[ prop ].apply( this, arguments ); + }, + _superApply = function( args ) { + return base.prototype[ prop ].apply( this, args ); + }; + return function() { + var __super = this._super, + __superApply = this._superApply, + returnValue; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply( this, arguments ); + + this._super = __super; + this._superApply = __superApply; + + return returnValue; + }; + })(); + }); + constructor.prototype = $.widget.extend( basePrototype, { + // TODO: remove support for widgetEventPrefix + // always use the name + a colon as the prefix, e.g., draggable:start + // don't prefix for widgets that aren't DOM-based + widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name + }, proxiedPrototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + widgetFullName: fullName + }); + + // If this widget is being redefined then we need to find all widgets that + // are inheriting from it and redefine all of them so that they inherit from + // the new version of this widget. We're essentially trying to replace one + // level in the prototype chain. + if ( existingConstructor ) { + $.each( existingConstructor._childConstructors, function( i, child ) { + var childPrototype = child.prototype; + + // redefine the child widget using the same prototype that was + // originally used, but inherit from the new version of the base + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); + }); + // remove the list of existing child constructors from the old constructor + // so the old child constructors can be garbage collected + delete existingConstructor._childConstructors; + } else { + base._childConstructors.push( constructor ); + } + + $.widget.bridge( name, constructor ); +}; + +$.widget.extend = function( target ) { + var input = slice.call( arguments, 1 ), + inputIndex = 0, + inputLength = input.length, + key, + value; + for ( ; inputIndex < inputLength; inputIndex++ ) { + for ( key in input[ inputIndex ] ) { + value = input[ inputIndex ][ key ]; + if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { + // Clone objects + if ( $.isPlainObject( value ) ) { + target[ key ] = $.isPlainObject( target[ key ] ) ? + $.widget.extend( {}, target[ key ], value ) : + // Don't extend strings, arrays, etc. with objects + $.widget.extend( {}, value ); + // Copy everything else by reference + } else { + target[ key ] = value; + } + } + } + } + return target; +}; + +$.widget.bridge = function( name, object ) { + var fullName = object.prototype.widgetFullName || name; + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string", + args = slice.call( arguments, 1 ), + returnValue = this; + + // allow multiple hashes to be passed on init + options = !isMethodCall && args.length ? + $.widget.extend.apply( null, [ options ].concat(args) ) : + options; + + if ( isMethodCall ) { + this.each(function() { + var methodValue, + instance = $.data( this, fullName ); + if ( !instance ) { + return $.error( "cannot call methods on " + name + " prior to initialization; " + + "attempted to call method '" + options + "'" ); + } + if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + " widget instance" ); + } + methodValue = instance[ options ].apply( instance, args ); + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; + return false; + } + }); + } else { + this.each(function() { + var instance = $.data( this, fullName ); + if ( instance ) { + instance.option( options || {} )._init(); + } else { + $.data( this, fullName, new object( options, this ) ); + } + }); + } + + return returnValue; + }; +}; + +$.Widget = function( /* options, element */ ) {}; +$.Widget._childConstructors = []; + +$.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "
    ", + options: { + disabled: false, + + // callbacks + create: null + }, + _createWidget: function( options, element ) { + element = $( element || this.defaultElement || this )[ 0 ]; + this.element = $( element ); + this.uuid = uuid++; + this.eventNamespace = "." + this.widgetName + this.uuid; + this.options = $.widget.extend( {}, + this.options, + this._getCreateOptions(), + options ); + + this.bindings = $(); + this.hoverable = $(); + this.focusable = $(); + + if ( element !== this ) { + $.data( element, this.widgetFullName, this ); + this._on( true, this.element, { + remove: function( event ) { + if ( event.target === element ) { + this.destroy(); + } + } + }); + this.document = $( element.style ? + // element within the document + element.ownerDocument : + // element is window or document + element.document || element ); + this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); + } + + this._create(); + this._trigger( "create", null, this._getCreateEventData() ); + this._init(); + }, + _getCreateOptions: $.noop, + _getCreateEventData: $.noop, + _create: $.noop, + _init: $.noop, + + destroy: function() { + this._destroy(); + // we can probably remove the unbind calls in 2.0 + // all event bindings should go through this._on() + this.element + .unbind( this.eventNamespace ) + // 1.9 BC for #7810 + // TODO remove dual storage + .removeData( this.widgetName ) + .removeData( this.widgetFullName ) + // support: jquery <1.6.3 + // http://bugs.jquery.com/ticket/9413 + .removeData( $.camelCase( this.widgetFullName ) ); + this.widget() + .unbind( this.eventNamespace ) + .removeAttr( "aria-disabled" ) + .removeClass( + this.widgetFullName + "-disabled " + + "ui-state-disabled" ); + + // clean up events and states + this.bindings.unbind( this.eventNamespace ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + }, + _destroy: $.noop, + + widget: function() { + return this.element; + }, + + option: function( key, value ) { + var options = key, + parts, + curOption, + i; + + if ( arguments.length === 0 ) { + // don't return a reference to the internal hash + return $.widget.extend( {}, this.options ); + } + + if ( typeof key === "string" ) { + // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + options = {}; + parts = key.split( "." ); + key = parts.shift(); + if ( parts.length ) { + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); + for ( i = 0; i < parts.length - 1; i++ ) { + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; + curOption = curOption[ parts[ i ] ]; + } + key = parts.pop(); + if ( value === undefined ) { + return curOption[ key ] === undefined ? null : curOption[ key ]; + } + curOption[ key ] = value; + } else { + if ( value === undefined ) { + return this.options[ key ] === undefined ? null : this.options[ key ]; + } + options[ key ] = value; + } + } + + this._setOptions( options ); + + return this; + }, + _setOptions: function( options ) { + var key; + + for ( key in options ) { + this._setOption( key, options[ key ] ); + } + + return this; + }, + _setOption: function( key, value ) { + this.options[ key ] = value; + + if ( key === "disabled" ) { + this.widget() + .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value ) + .attr( "aria-disabled", value ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + } + + return this; + }, + + enable: function() { + return this._setOption( "disabled", false ); + }, + disable: function() { + return this._setOption( "disabled", true ); + }, + + _on: function( suppressDisabledCheck, element, handlers ) { + var delegateElement, + instance = this; + + // no suppressDisabledCheck flag, shuffle arguments + if ( typeof suppressDisabledCheck !== "boolean" ) { + handlers = element; + element = suppressDisabledCheck; + suppressDisabledCheck = false; + } + + // no element argument, shuffle and use this.element + if ( !handlers ) { + handlers = element; + element = this.element; + delegateElement = this.widget(); + } else { + // accept selectors, DOM elements + element = delegateElement = $( element ); + this.bindings = this.bindings.add( element ); + } + + $.each( handlers, function( event, handler ) { + function handlerProxy() { + // allow widgets to customize the disabled handling + // - disabled as an array instead of boolean + // - disabled class as method for disabling individual parts + if ( !suppressDisabledCheck && + ( instance.options.disabled === true || + $( this ).hasClass( "ui-state-disabled" ) ) ) { + return; + } + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + + // copy the guid so direct unbinding works + if ( typeof handler !== "string" ) { + handlerProxy.guid = handler.guid = + handler.guid || handlerProxy.guid || $.guid++; + } + + var match = event.match( /^(\w+)\s*(.*)$/ ), + eventName = match[1] + instance.eventNamespace, + selector = match[2]; + if ( selector ) { + delegateElement.delegate( selector, eventName, handlerProxy ); + } else { + element.bind( eventName, handlerProxy ); + } + }); + }, + + _off: function( element, eventName ) { + eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; + element.unbind( eventName ).undelegate( eventName ); + }, + + _delay: function( handler, delay ) { + function handlerProxy() { + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + var instance = this; + return setTimeout( handlerProxy, delay || 0 ); + }, + + _hoverable: function( element ) { + this.hoverable = this.hoverable.add( element ); + this._on( element, { + mouseenter: function( event ) { + $( event.currentTarget ).addClass( "ui-state-hover" ); + }, + mouseleave: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-hover" ); + } + }); + }, + + _focusable: function( element ) { + this.focusable = this.focusable.add( element ); + this._on( element, { + focusin: function( event ) { + $( event.currentTarget ).addClass( "ui-state-focus" ); + }, + focusout: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-focus" ); + } + }); + }, + + _trigger: function( type, event, data ) { + var prop, orig, + callback = this.options[ type ]; + + data = data || {}; + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); + // the original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[ 0 ]; + + // copy original event properties over to the new event + orig = event.originalEvent; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; + } + } + } + + this.element.trigger( event, data ); + return !( $.isFunction( callback ) && + callback.apply( this.element[0], [ event ].concat( data ) ) === false || + event.isDefaultPrevented() ); + } +}; + +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + if ( typeof options === "string" ) { + options = { effect: options }; + } + var hasOptions, + effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + options = options || {}; + if ( typeof options === "number" ) { + options = { duration: options }; + } + hasOptions = !$.isEmptyObject( options ); + options.complete = callback; + if ( options.delay ) { + element.delay( options.delay ); + } + if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { + element[ method ]( options ); + } else if ( effectName !== method && element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); + } else { + element.queue(function( next ) { + $( this )[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); + } + next(); + }); + } + }; +}); + +})); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/.gitignore b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/.gitignore deleted file mode 100644 index c6ef2182..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.idea - diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/LICENSE b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/LICENSE deleted file mode 100644 index 0247cc76..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright 2014 Igor Vaynberg - -Version: @@ver@@ Timestamp: @@timestamp@@ - -This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU -General Public License version 2 (the "GPL License"). You may choose either license to govern your -use of this software only upon the condition that you accept all of the terms of either the Apache -License or the GPL License. - -You may obtain a copy of the Apache License and the GPL License at: - -http://www.apache.org/licenses/LICENSE-2.0 -http://www.gnu.org/licenses/gpl-2.0.html - -Unless required by applicable law or agreed to in writing, software distributed under the Apache License -or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -either express or implied. See the Apache License and the GPL License for the specific language governing -permissions and limitations under the Apache License and the GPL License. diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/README.md b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/README.md deleted file mode 100644 index 8784c865..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/README.md +++ /dev/null @@ -1,84 +0,0 @@ -Select2 -======= - -Select2 is a jQuery-based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results. - -To get started, checkout examples and documentation at http://ivaynberg.github.com/select2 - -Use cases ---------- - -* Enhancing native selects with search. -* Enhancing native selects with a better multi-select interface. -* Loading data from JavaScript: easily load items via ajax and have them searchable. -* Nesting optgroups: native selects only support one level of nested. Select2 does not have this restriction. -* Tagging: ability to add new items on the fly. -* Working with large, remote datasets: ability to partially load a dataset based on the search term. -* Paging of large datasets: easy support for loading more pages when the results are scrolled to the end. -* Templating: support for custom rendering of results and selections. - -Browser compatibility ---------------------- -* IE 8+ -* Chrome 8+ -* Firefox 10+ -* Safari 3+ -* Opera 10.6+ - -Integrations ------------- - -* [Wicket-Select2](https://github.com/ivaynberg/wicket-select2) (Java / [Apache Wicket](http://wicket.apache.org)) -* [select2-rails](https://github.com/argerim/select2-rails) (Ruby on Rails) -* [AngularUI](http://angular-ui.github.com/#directives-select2) ([AngularJS](angularjs.org)) -* [Django](https://github.com/applegrew/django-select2) -* [Symfony](https://github.com/19Gerhard85/sfSelect2WidgetsPlugin) -* [Symfony2](https://github.com/avocode/FormExtensions) -* [Bootstrap](https://github.com/t0m/select2-bootstrap-css) (CSS skin) -* [Yii](https://github.com/tonybolzan/yii-select2) - -Internationalization (i18n) ---------------------------- - -Select2 supports multiple languages by simply including the right -language JS file (`select2_locale_it.js`, `select2_locale_nl.js`, etc.). - -Missing a language? Just copy `select2_locale_en.js.template`, translate -it, and make a pull request back to Select2 here on GitHub. - -Bug tracker ------------ - -Have a bug? Please create an issue here on GitHub! - -https://github.com/ivaynberg/select2/issues - -Mailing list ------------- - -Have a question? Ask on our mailing list! - -select2@googlegroups.com - -https://groups.google.com/d/forum/select2 - - -Copyright and license ---------------------- - -Copyright 2012 Igor Vaynberg - -This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU -General Public License version 2 (the "GPL License"). You may choose either license to govern your -use of this software only upon the condition that you accept all of the terms of either the Apache -License or the GPL License. - -You may obtain a copy of the Apache License and the GPL License in the LICENSE file, or at: - -http://www.apache.org/licenses/LICENSE-2.0 -http://www.gnu.org/licenses/gpl-2.0.html - -Unless required by applicable law or agreed to in writing, software distributed under the Apache License -or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -either express or implied. See the Apache License and the GPL License for the specific language governing -permissions and limitations under the Apache License and the GPL License. diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/bower.json b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/bower.json deleted file mode 100644 index e8ea7808..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/bower.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "select2", - "version": "3.4.6", - "main": ["select2.js", "select2.css", "select2.png", "select2x2.png", "select2-spinner.gif"], - "dependencies": { - "jquery": ">= 1.7.1" - } -} diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/component.json b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/component.json deleted file mode 100644 index 4a747f27..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/component.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "select2", - "repo": "ivaynberg/select2", - "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", - "version": "3.4.6", - "demo": "http://ivaynberg.github.io/select2/", - "keywords": [ - "jquery" - ], - "main": "select2.js", - "styles": [ - "select2.css", - "select2-bootstrap.css" - ], - "scripts": [ - "select2.js", - "select2_locale_ar.js", - "select2_locale_bg.js", - "select2_locale_ca.js", - "select2_locale_cs.js", - "select2_locale_da.js", - "select2_locale_de.js", - "select2_locale_el.js", - "select2_locale_es.js", - "select2_locale_et.js", - "select2_locale_eu.js", - "select2_locale_fa.js", - "select2_locale_fi.js", - "select2_locale_fr.js", - "select2_locale_gl.js", - "select2_locale_he.js", - "select2_locale_hr.js", - "select2_locale_hu.js", - "select2_locale_id.js", - "select2_locale_is.js", - "select2_locale_it.js", - "select2_locale_ja.js", - "select2_locale_ka.js", - "select2_locale_ko.js", - "select2_locale_lt.js", - "select2_locale_lv.js", - "select2_locale_mk.js", - "select2_locale_ms.js", - "select2_locale_nl.js", - "select2_locale_no.js", - "select2_locale_pl.js", - "select2_locale_pt-BR.js", - "select2_locale_pt-PT.js", - "select2_locale_ro.js", - "select2_locale_ru.js", - "select2_locale_sk.js", - "select2_locale_sv.js", - "select2_locale_th.js", - "select2_locale_tr.js", - "select2_locale_uk.js", - "select2_locale_vi.js", - "select2_locale_zh-CN.js", - "select2_locale_zh-TW.js" - ], - "images": [ - "select2-spinner.gif", - "select2.png", - "select2x2.png" - ], - "license": "MIT" -} diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/composer.json b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/composer.json deleted file mode 100644 index ab2e2b72..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/composer.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": - "ivaynberg/select2", - "description": "Select2 is a jQuery based replacement for select boxes.", - "version": "3.4.6", - "type": "component", - "homepage": "http://ivaynberg.github.io/select2/", - "license": "Apache-2.0", - "require": { - "robloach/component-installer": "*", - "components/jquery": ">=1.7.1" - }, - "extra": { - "component": { - "scripts": [ - "select2.js" - ], - "files": [ - "select2.js", - "select2_locale_*.js", - "select2.css", - "select2-bootstrap.css", - "select2-spinner.gif", - "select2.png", - "select2x2.png" - ] - } - } -} diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/online-docs.url b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/online-docs.url deleted file mode 100644 index cabd0593..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/online-docs.url +++ /dev/null @@ -1,5 +0,0 @@ -[{000214A0-0000-0000-C000-000000000046}] -Prop3=19,2 -[InternetShortcut] -URL=http://ivaynberg.github.io/select2/index.html -IDList= diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/package.json b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/package.json deleted file mode 100644 index 065dbc9b..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name" : "Select2", - "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", - "homepage": "http://ivaynberg.github.io/select2", - "author": "Igor Vaynberg", - "repository": {"type": "git", "url": "git://github.com/ivaynberg/select2.git"}, - "main": "select2.js", - "version": "3.4.6", - "jspm": { - "main": "select2", - "files": ["select2.js", "select2.png", "select2.css", "select2-spinner.gif"], - "shim": { - "select2": { - "imports": ["jquery", "./select2.css!"], - "exports": "$" - } - }, - "buildConfig": { "uglify": true } - } -} diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/release.sh b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/release.sh deleted file mode 100644 index 0d2e279e..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/release.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash -set -e - -echo -n "Enter the version for this release: " - -read ver - -if [ ! $ver ]; then - echo "Invalid version." - exit -fi - -name="select2" -js="$name.js" -mini="$name.min.js" -css="$name.css" -release="$name-$ver" -tag="$ver" -branch="build-$ver" -curbranch=`git branch | grep "*" | sed "s/* //"` -timestamp=$(date) -tokens="s/@@ver@@/$ver/g;s/\@@timestamp@@/$timestamp/g" -remote="github" - -echo "Pulling from origin" - -git pull - -echo "Updating Version Identifiers" - -sed -E -e "s/\"version\": \"([0-9\.]+)\",/\"version\": \"$ver\",/g" -i -- bower.json select2.jquery.json component.json composer.json package.json - -git add bower.json -git add select2.jquery.json -git add component.json -git add composer.json -git add package.json - -git commit -m "modified version identifiers in descriptors for release $ver" -git push - -git branch "$branch" -git checkout "$branch" - -echo "Tokenizing..." - -find . -name "$js" | xargs -I{} sed -e "$tokens" -i -- {} -find . -name "$css" | xargs -I{} sed -e "$tokens" -i -- {} - -sed -e "s/latest/$ver/g" -i -- bower.json - -git add "$js" -git add "$css" - -echo "Minifying..." - -echo "/*" > "$mini" -cat LICENSE | sed "$tokens" >> "$mini" -echo "*/" >> "$mini" - -curl -s \ - --data-urlencode "js_code@$js" \ - http://marijnhaverbeke.nl/uglifyjs \ - >> "$mini" - -git add "$mini" - -git commit -m "release $ver" - -echo "Tagging..." -git tag -a "$tag" -m "tagged version $ver" -git push "$remote" --tags - -echo "Cleaning Up..." - -git checkout "$curbranch" -git branch -D "$branch" - -echo "Done" diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2-bootstrap.css b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2-bootstrap.css deleted file mode 100644 index 3b83f0a2..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2-bootstrap.css +++ /dev/null @@ -1,87 +0,0 @@ -.form-control .select2-choice { - border: 0; - border-radius: 2px; -} - -.form-control .select2-choice .select2-arrow { - border-radius: 0 2px 2px 0; -} - -.form-control.select2-container { - height: auto !important; - padding: 0; -} - -.form-control.select2-container.select2-dropdown-open { - border-color: #5897FB; - border-radius: 3px 3px 0 0; -} - -.form-control .select2-container.select2-dropdown-open .select2-choices { - border-radius: 3px 3px 0 0; -} - -.form-control.select2-container .select2-choices { - border: 0 !important; - border-radius: 3px; -} - -.control-group.warning .select2-container .select2-choice, -.control-group.warning .select2-container .select2-choices, -.control-group.warning .select2-container-active .select2-choice, -.control-group.warning .select2-container-active .select2-choices, -.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice, -.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices, -.control-group.warning .select2-container-multi.select2-container-active .select2-choices { - border: 1px solid #C09853 !important; -} - -.control-group.warning .select2-container .select2-choice div { - border-left: 1px solid #C09853 !important; - background: #FCF8E3 !important; -} - -.control-group.error .select2-container .select2-choice, -.control-group.error .select2-container .select2-choices, -.control-group.error .select2-container-active .select2-choice, -.control-group.error .select2-container-active .select2-choices, -.control-group.error .select2-dropdown-open.select2-drop-above .select2-choice, -.control-group.error .select2-dropdown-open.select2-drop-above .select2-choices, -.control-group.error .select2-container-multi.select2-container-active .select2-choices { - border: 1px solid #B94A48 !important; -} - -.control-group.error .select2-container .select2-choice div { - border-left: 1px solid #B94A48 !important; - background: #F2DEDE !important; -} - -.control-group.info .select2-container .select2-choice, -.control-group.info .select2-container .select2-choices, -.control-group.info .select2-container-active .select2-choice, -.control-group.info .select2-container-active .select2-choices, -.control-group.info .select2-dropdown-open.select2-drop-above .select2-choice, -.control-group.info .select2-dropdown-open.select2-drop-above .select2-choices, -.control-group.info .select2-container-multi.select2-container-active .select2-choices { - border: 1px solid #3A87AD !important; -} - -.control-group.info .select2-container .select2-choice div { - border-left: 1px solid #3A87AD !important; - background: #D9EDF7 !important; -} - -.control-group.success .select2-container .select2-choice, -.control-group.success .select2-container .select2-choices, -.control-group.success .select2-container-active .select2-choice, -.control-group.success .select2-container-active .select2-choices, -.control-group.success .select2-dropdown-open.select2-drop-above .select2-choice, -.control-group.success .select2-dropdown-open.select2-drop-above .select2-choices, -.control-group.success .select2-container-multi.select2-container-active .select2-choices { - border: 1px solid #468847 !important; -} - -.control-group.success .select2-container .select2-choice div { - border-left: 1px solid #468847 !important; - background: #DFF0D8 !important; -} diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2-spinner.gif b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2-spinner.gif deleted file mode 100644 index 5b33f7e54f4e55b6b8774d86d96895db9af044b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1849 zcma*odr(tX9tZI2z31lM+(&YVk%mZ}5P~KlG2s=WSbGzm0!x7^P##Mnh7t-jP!X0Q zk_SQ}Po-L1tlDK;6l?(>v)e5ZBQx4|Y-Q?nr@Px3?9h(3ZWr3^tj=`TP57gKr87N$ zp2wWee1GRRCwo_xahnw)5cxNPJbCg2L6DV|6`#+yw6v6!mDS$f9-JvFD^n;GQ&UrZ zzh5jCkByB101O60U0q#p_1BM>Cv-vP?&s4@g_((4_1L=L$(a91)0=J91Gas#R{McE znYG^9*0A5YZ>#;~+Wkn(W5B0^yELIYLP!K}mB~<)AM@1&nqekynuaEGqPrzoH|KodRXJy)%+w_fu3nE5>@Bd_b zqC$EQ;{c`T&?EsNO|igL9gC7Ygxv?aQUEXMq?~>wg{EyW;VcJ37CUF#HjrT=KQO_* zS>M9yydXk18D(+QDJ1>r);Lav_uYKp$T?4vr{Q$lTo&pKv^?(>L-)G2*lwH!Ah7k? z7oH<8h-(KTKt5V6$8gF)C7Io&P5=SjTh)=zV=E2EUhQZP##L8S{d%UK>>+y82>+FV+#^BzW7u3F)Bb>=lYQ%%j`F>ASe zo*cw@V#u6T`A2He;70mR(V&iV&-7{qP~=SRf&jm9-T{*ZeZ}$rd0#6c&fLG^xJcf5 z+p<`wJYgW+_s*V{uI$nMB;%8`S_3>PfGOj3Rq}@Cx^+j?rk92fANSFDBYnOqQ>Vdj z)(|$AhP4t&Lb=Gvo2#3Gl%9<=Gv`Mz?Po@P4iLF!x}GUWJICDlFk-hS^Whyh7x~VH z@0vD1>HYD4&e+~yzS*-sFR{9`{QEEZO1zg7>R&7cHts-6j!xHVdA8eI+ZlVzd%`es zJT@$#GX(gvCJ1oJN%yLBK}{V=V;seo;!w|Yte!W1%5qLNFWqvZW>h&IiH+oPT=b@E zPhGzv5=(Un*X>v`>%8h_nj^NdYcE6NHS_ifkCV$*D)Tqrbu`s;<=t<4 zAHNqNV?6(g<1PY-w@#I-WYFViz?9TrkMr)u0g`O`u|>T;k|2sV*YF^punvT;$SuTy{j3Gv)yqD!R_CF>yR)MzmmYS5v+~R zXAdD%ng9?df;wd8GxR#%3O+gz};Vo;)sK%Bj-q>Oq%R7JU-KD?vYu>#2UjaDo z&8$>5xW~?KPD_#XFToU1hIb*VOMidUr6iYiO0N|i-7s`T8!cFT`rN!^1Pt78J93i6 z5HI1wIM$94m{3SLDvISDe6$ZG1;eq_D9RTaaC>=cO{@Bs>$IlPCPJJ$h$)-3vzNUQ6OsN#_zWxey!_9%hxwH2_dEJi=yY|1c7nDm2_Lm!Cof8-R_+9UkS zcBE(o47yE)oMR(Q=dp1a2wTX5KvvGyLqlWTa7V&!A*|w|)ax~1_~aJ0=_Lilg*0iQk7#ZD EAHN$8j{pDw diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.css b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.css deleted file mode 100644 index 39c70c32..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.css +++ /dev/null @@ -1,646 +0,0 @@ -/* -Version: 3.4.6 Timestamp: Sat Mar 22 22:30:15 EDT 2014 -*/ -.select2-container { - margin: 0; - position: relative; - display: inline-block; - /* inline-block for ie7 */ - zoom: 1; - *display: inline; - vertical-align: middle; -} - -.select2-container, -.select2-drop, -.select2-search, -.select2-search input { - /* - Force border-box so that % widths fit the parent - container without overlap because of margin/padding. - More Info : http://www.quirksmode.org/css/box.html - */ - -webkit-box-sizing: border-box; /* webkit */ - -moz-box-sizing: border-box; /* firefox */ - box-sizing: border-box; /* css3 */ -} - -.select2-container .select2-choice { - display: block; - height: 26px; - padding: 0 0 0 8px; - overflow: hidden; - position: relative; - - border: 1px solid #aaa; - white-space: nowrap; - line-height: 26px; - color: #444; - text-decoration: none; - - border-radius: 4px; - - background-clip: padding-box; - - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - background-color: #fff; - /*background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff)); - background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%); - background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);*/ - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0); - /*background-image: linear-gradient(to top, #eee 0%, #fff 50%);*/ -} - -.select2-container.select2-drop-above .select2-choice { - border-bottom-color: #aaa; - - border-radius: 0 0 4px 4px; - - background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff)); - background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%); - background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); - background-image: linear-gradient(to bottom, #eee 0%, #fff 90%); -} - -.select2-container.select2-allowclear .select2-choice .select2-chosen { - margin-right: 42px; -} - -.select2-container .select2-choice > .select2-chosen { - margin-right: 26px; - display: block; - overflow: hidden; - - white-space: nowrap; - - text-overflow: ellipsis; - float: none; - width: auto; -} - -.select2-container .select2-choice abbr { - display: none; - width: 12px; - height: 12px; - position: absolute; - right: 24px; - top: 8px; - - font-size: 1px; - text-decoration: none; - - border: 0; - background: url('select2.png') right top no-repeat; - cursor: pointer; - outline: 0; -} - -.select2-container.select2-allowclear .select2-choice abbr { - display: inline-block; -} - -.select2-container .select2-choice abbr:hover { - background-position: right -11px; - cursor: pointer; -} - -.select2-drop-mask { - border: 0; - margin: 0; - padding: 0; - position: fixed; - left: 0; - top: 0; - min-height: 100%; - min-width: 100%; - height: auto; - width: auto; - opacity: 0; - z-index: 9998; - /* styles required for IE to work */ - background-color: #fff; - filter: alpha(opacity=0); -} - -.select2-drop { - width: 100%; - margin-top: -1px; - position: absolute; - z-index: 9999; - top: 100%; - - background: #fff; - color: #000; - border: 1px solid #aaa; - border-top: 0; - - border-radius: 0 0 4px 4px; - - -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15); - box-shadow: 0 4px 5px rgba(0, 0, 0, .15); -} - -.select2-drop.select2-drop-above { - margin-top: 1px; - border-top: 1px solid #aaa; - border-bottom: 0; - - border-radius: 4px 4px 0 0; - - -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); - box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); -} - -.select2-drop-active { - border: 1px solid #5897fb; - border-top: none; -} - -.select2-drop.select2-drop-above.select2-drop-active { - border-top: 1px solid #5897fb; -} - -.select2-drop-auto-width { - border-top: 1px solid #aaa; - width: auto; -} - -.select2-drop-auto-width .select2-search { - padding-top: 4px; -} - -.select2-container .select2-choice .select2-arrow { - display: inline-block; - width: 18px; - height: 100%; - position: absolute; - right: 0; - top: 0; - - border-left: 1px solid #aaa; - border-radius: 0 4px 4px 0; - - background-clip: padding-box; - - /*background: #ccc; - background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee)); - background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%); - background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0); - background-image: linear-gradient(to top, #ccc 0%, #eee 60%);*/ -} - -.select2-container .select2-choice .select2-arrow b { - display: block; - width: 100%; - height: 100%; - background: url('select2.png') no-repeat 0 1px; -} - -.select2-search { - display: inline-block; - width: 100%; - min-height: 26px; - margin: 0; - padding-left: 4px; - padding-right: 4px; - - position: relative; - z-index: 10000; - - white-space: nowrap; -} - -.select2-search input { - width: 100%; - height: auto !important; - min-height: 26px; - padding: 4px 20px 4px 5px; - margin: 0; - - outline: 0; - font-family: sans-serif; - font-size: 1em; - - border: 1px solid #aaa; - border-radius: 0; - - -webkit-box-shadow: none; - box-shadow: none; - - background: #fff url('select2.png') no-repeat 100% -22px; - background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); - background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); - background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); - background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; -} - -.select2-drop.select2-drop-above .select2-search input { - margin-top: 4px; -} - -.select2-search input.select2-active { - background: #fff url('select2-spinner.gif') no-repeat 100%; - background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); - background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); - background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); - background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; -} - -.select2-container-active .select2-choice, -.select2-container-active .select2-choices { - border: 1px solid #5897fb; - outline: none; - - -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); - box-shadow: 0 0 5px rgba(0, 0, 0, .3); -} - -.select2-dropdown-open .select2-choice { - border-bottom-color: transparent; - -webkit-box-shadow: 0 1px 0 #fff inset; - box-shadow: 0 1px 0 #fff inset; - - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - - background-color: #eee; - background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee)); - background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%); - background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); - background-image: linear-gradient(to top, #fff 0%, #eee 50%); -} - -.select2-dropdown-open.select2-drop-above .select2-choice, -.select2-dropdown-open.select2-drop-above .select2-choices { - border: 1px solid #5897fb; - border-top-color: transparent; - - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee)); - background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%); - background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); - background-image: linear-gradient(to bottom, #fff 0%, #eee 50%); -} - -.select2-dropdown-open .select2-choice .select2-arrow { - background: transparent; - border-left: none; - filter: none; -} -.select2-dropdown-open .select2-choice .select2-arrow b { - background-position: -18px 1px; -} - -.select2-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} - -/* results */ -.select2-results { - max-height: 200px; - padding: 0 0 0 4px; - margin: 4px 4px 4px 0; - position: relative; - overflow-x: hidden; - overflow-y: auto; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -.select2-results ul.select2-result-sub { - margin: 0; - padding-left: 0; -} - -.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px } -.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px } -.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px } -.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px } -.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px } -.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px } -.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px } - -.select2-results li { - list-style: none; - display: list-item; - background-image: none; -} - -.select2-results li.select2-result-with-children > .select2-result-label { - font-weight: bold; -} - -.select2-results .select2-result-label { - padding: 3px 7px 4px; - margin: 0; - cursor: pointer; - - min-height: 1em; - - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.select2-results .select2-highlighted { - background: #3875d7; - color: #fff; -} - -.select2-results li em { - background: #feffde; - font-style: normal; -} - -.select2-results .select2-highlighted em { - background: transparent; -} - -.select2-results .select2-highlighted ul { - background: #fff; - color: #000; -} - - -.select2-results .select2-no-results, -.select2-results .select2-searching, -.select2-results .select2-selection-limit { - background: #f4f4f4; - display: list-item; - padding-left: 5px; -} - -/* -disabled look for disabled choices in the results dropdown -*/ -.select2-results .select2-disabled.select2-highlighted { - color: #666; - background: #f4f4f4; - display: list-item; - cursor: default; -} -.select2-results .select2-disabled { - background: #f4f4f4; - display: list-item; - cursor: default; -} - -.select2-results .select2-selected { - display: none; -} - -.select2-more-results.select2-active { - background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%; -} - -.select2-more-results { - background: #f4f4f4; - display: list-item; -} - -/* disabled styles */ - -.select2-container.select2-container-disabled .select2-choice { - background-color: #f4f4f4; - background-image: none; - border: 1px solid #ddd; - cursor: default; -} - -.select2-container.select2-container-disabled .select2-choice .select2-arrow { - background-color: #f4f4f4; - background-image: none; - border-left: 0; -} - -.select2-container.select2-container-disabled .select2-choice abbr { - display: none; -} - - -/* multiselect */ - -.select2-container-multi .select2-choices { - height: auto !important; - height: 1%; - margin: 0; - padding: 0; - position: relative; - - border: 1px solid #aaa; - cursor: text; - overflow: hidden; - - background-color: #fff; - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff)); - background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%); - background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%); - background-image: linear-gradient(to bottom, #eee 1%, #fff 15%); -} - -.select2-locked { - padding: 3px 5px 3px 5px !important; -} - -.select2-container-multi .select2-choices { - min-height: 26px; -} - -.select2-container-multi.select2-container-active .select2-choices { - border: 1px solid #5897fb; - outline: none; - - -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); - box-shadow: 0 0 5px rgba(0, 0, 0, .3); -} -.select2-container-multi .select2-choices li { - float: left; - list-style: none; -} -html[dir="rtl"] .select2-container-multi .select2-choices li -{ - float: right; -} -.select2-container-multi .select2-choices .select2-search-field { - margin: 0; - padding: 0; - white-space: nowrap; -} - -.select2-container-multi .select2-choices .select2-search-field input { - padding: 5px; - margin: 1px 0; - - font-family: sans-serif; - font-size: 100%; - color: #666; - outline: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - background: transparent !important; -} - -.select2-container-multi .select2-choices .select2-search-field input.select2-active { - background: #fff url('select2-spinner.gif') no-repeat 100% !important; -} - -.select2-default { - color: #999 !important; -} - -.select2-container-multi .select2-choices .select2-search-choice { - padding: 3px 5px 3px 18px; - margin: 3px 0 3px 5px; - position: relative; - - line-height: 13px; - color: #333; - cursor: default; - border: 1px solid #aaaaaa; - - border-radius: 3px; - - -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); - box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); - - background-clip: padding-box; - - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - background-color: #e4e4e4; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee)); - background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); - background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); - background-image: linear-gradient(to top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); -} -html[dir="rtl"] .select2-container-multi .select2-choices .select2-search-choice -{ - margin-left: 0; - margin-right: 5px; -} -.select2-container-multi .select2-choices .select2-search-choice .select2-chosen { - cursor: default; -} -.select2-container-multi .select2-choices .select2-search-choice-focus { - background: #d4d4d4; -} - -.select2-search-choice-close { - display: block; - width: 12px; - height: 13px; - position: absolute; - right: 3px; - top: 4px; - - font-size: 1px; - outline: none; - background: url('select2.png') right top no-repeat; -} -html[dir="rtl"] .select2-search-choice-close { - right: auto; - left: 3px; -} - -.select2-container-multi .select2-search-choice-close { - left: 3px; -} - -.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover { - background-position: right -11px; -} -.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close { - background-position: right -11px; -} - -/* disabled styles */ -.select2-container-multi.select2-container-disabled .select2-choices { - background-color: #f4f4f4; - background-image: none; - border: 1px solid #ddd; - cursor: default; -} - -.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice { - padding: 3px 5px 3px 5px; - border: 1px solid #ddd; - background-image: none; - background-color: #f4f4f4; -} - -.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none; - background: none; -} -/* end multiselect */ - - -.select2-result-selectable .select2-match, -.select2-result-unselectable .select2-match { - text-decoration: underline; -} - -.select2-offscreen, .select2-offscreen:focus { - clip: rect(0 0 0 0) !important; - width: 1px !important; - height: 1px !important; - border: 0 !important; - margin: 0 !important; - padding: 0 !important; - overflow: hidden !important; - position: absolute !important; - outline: 0 !important; - left: 0px !important; - top: 0px !important; -} - -.select2-display-none { - display: none; -} - -.select2-measure-scrollbar { - position: absolute; - top: -10000px; - left: -10000px; - width: 100px; - height: 100px; - overflow: scroll; -} - -/* Retina-ize icons */ - -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) { - .select2-search input, - .select2-search-choice-close, - .select2-container .select2-choice abbr, - .select2-container .select2-choice .select2-arrow b { - background-image: url('select2x2.png') !important; - background-repeat: no-repeat !important; - background-size: 60px 40px !important; - } - - .select2-search input { - background-position: 100% -21px !important; - } -} diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.jquery.json b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.jquery.json deleted file mode 100644 index 1407f552..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.jquery.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "select2", - "title": "Select2", - "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", - "keywords": [ - "select", - "autocomplete", - "typeahead", - "dropdown", - "multiselect", - "tag", - "tagging" - ], - "version": "3.4.6", - "author": { - "name": "Igor Vaynberg", - "url": "https://github.com/ivaynberg" - }, - "licenses": [ - { - "type": "Apache", - "url": "http://www.apache.org/licenses/LICENSE-2.0" - }, - { - "type": "GPL v2", - "url": "http://www.gnu.org/licenses/gpl-2.0.html" - } - ], - "bugs": "https://github.com/ivaynberg/select2/issues", - "homepage": "http://ivaynberg.github.com/select2", - "docs": "http://ivaynberg.github.com/select2/", - "download": "https://github.com/ivaynberg/select2/tags", - "dependencies": { - "jquery": ">=1.7.1" - } -} diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.js deleted file mode 100644 index f2a75f3b..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.js +++ /dev/null @@ -1,3397 +0,0 @@ -/* -Copyright 2012 Igor Vaynberg - -Version: 3.4.6 Timestamp: Sat Mar 22 22:30:15 EDT 2014 - -This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU -General Public License version 2 (the "GPL License"). You may choose either license to govern your -use of this software only upon the condition that you accept all of the terms of either the Apache -License or the GPL License. - -You may obtain a copy of the Apache License and the GPL License at: - - http://www.apache.org/licenses/LICENSE-2.0 - http://www.gnu.org/licenses/gpl-2.0.html - -Unless required by applicable law or agreed to in writing, software distributed under the -Apache License or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -CONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for -the specific language governing permissions and limitations under the Apache License and the GPL License. -*/ -(function ($) { - if(typeof $.fn.each2 == "undefined") { - $.extend($.fn, { - /* - * 4-10 times faster .each replacement - * use it carefully, as it overrides jQuery context of element on each iteration - */ - each2 : function (c) { - var j = $([0]), i = -1, l = this.length; - while ( - ++i < l - && (j.context = j[0] = this[i]) - && c.call(j[0], i, j) !== false //"this"=DOM, i=index, j=jQuery object - ); - return this; - } - }); - } -})(jQuery); - -(function ($, undefined) { - "use strict"; - /*global document, window, jQuery, console */ - - if (window.Select2 !== undefined) { - return; - } - - var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer, - lastMousePosition={x:0,y:0}, $document, scrollBarDimensions, - - KEY = { - TAB: 9, - ENTER: 13, - ESC: 27, - SPACE: 32, - LEFT: 37, - UP: 38, - RIGHT: 39, - DOWN: 40, - SHIFT: 16, - CTRL: 17, - ALT: 18, - PAGE_UP: 33, - PAGE_DOWN: 34, - HOME: 36, - END: 35, - BACKSPACE: 8, - DELETE: 46, - isArrow: function (k) { - k = k.which ? k.which : k; - switch (k) { - case KEY.LEFT: - case KEY.RIGHT: - case KEY.UP: - case KEY.DOWN: - return true; - } - return false; - }, - isControl: function (e) { - var k = e.which; - switch (k) { - case KEY.SHIFT: - case KEY.CTRL: - case KEY.ALT: - return true; - } - - if (e.metaKey) return true; - - return false; - }, - isFunctionKey: function (k) { - k = k.which ? k.which : k; - return k >= 112 && k <= 123; - } - }, - MEASURE_SCROLLBAR_TEMPLATE = "
    ", - - DIACRITICS = {"\u24B6":"A","\uFF21":"A","\u00C0":"A","\u00C1":"A","\u00C2":"A","\u1EA6":"A","\u1EA4":"A","\u1EAA":"A","\u1EA8":"A","\u00C3":"A","\u0100":"A","\u0102":"A","\u1EB0":"A","\u1EAE":"A","\u1EB4":"A","\u1EB2":"A","\u0226":"A","\u01E0":"A","\u00C4":"A","\u01DE":"A","\u1EA2":"A","\u00C5":"A","\u01FA":"A","\u01CD":"A","\u0200":"A","\u0202":"A","\u1EA0":"A","\u1EAC":"A","\u1EB6":"A","\u1E00":"A","\u0104":"A","\u023A":"A","\u2C6F":"A","\uA732":"AA","\u00C6":"AE","\u01FC":"AE","\u01E2":"AE","\uA734":"AO","\uA736":"AU","\uA738":"AV","\uA73A":"AV","\uA73C":"AY","\u24B7":"B","\uFF22":"B","\u1E02":"B","\u1E04":"B","\u1E06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24B8":"C","\uFF23":"C","\u0106":"C","\u0108":"C","\u010A":"C","\u010C":"C","\u00C7":"C","\u1E08":"C","\u0187":"C","\u023B":"C","\uA73E":"C","\u24B9":"D","\uFF24":"D","\u1E0A":"D","\u010E":"D","\u1E0C":"D","\u1E10":"D","\u1E12":"D","\u1E0E":"D","\u0110":"D","\u018B":"D","\u018A":"D","\u0189":"D","\uA779":"D","\u01F1":"DZ","\u01C4":"DZ","\u01F2":"Dz","\u01C5":"Dz","\u24BA":"E","\uFF25":"E","\u00C8":"E","\u00C9":"E","\u00CA":"E","\u1EC0":"E","\u1EBE":"E","\u1EC4":"E","\u1EC2":"E","\u1EBC":"E","\u0112":"E","\u1E14":"E","\u1E16":"E","\u0114":"E","\u0116":"E","\u00CB":"E","\u1EBA":"E","\u011A":"E","\u0204":"E","\u0206":"E","\u1EB8":"E","\u1EC6":"E","\u0228":"E","\u1E1C":"E","\u0118":"E","\u1E18":"E","\u1E1A":"E","\u0190":"E","\u018E":"E","\u24BB":"F","\uFF26":"F","\u1E1E":"F","\u0191":"F","\uA77B":"F","\u24BC":"G","\uFF27":"G","\u01F4":"G","\u011C":"G","\u1E20":"G","\u011E":"G","\u0120":"G","\u01E6":"G","\u0122":"G","\u01E4":"G","\u0193":"G","\uA7A0":"G","\uA77D":"G","\uA77E":"G","\u24BD":"H","\uFF28":"H","\u0124":"H","\u1E22":"H","\u1E26":"H","\u021E":"H","\u1E24":"H","\u1E28":"H","\u1E2A":"H","\u0126":"H","\u2C67":"H","\u2C75":"H","\uA78D":"H","\u24BE":"I","\uFF29":"I","\u00CC":"I","\u00CD":"I","\u00CE":"I","\u0128":"I","\u012A":"I","\u012C":"I","\u0130":"I","\u00CF":"I","\u1E2E":"I","\u1EC8":"I","\u01CF":"I","\u0208":"I","\u020A":"I","\u1ECA":"I","\u012E":"I","\u1E2C":"I","\u0197":"I","\u24BF":"J","\uFF2A":"J","\u0134":"J","\u0248":"J","\u24C0":"K","\uFF2B":"K","\u1E30":"K","\u01E8":"K","\u1E32":"K","\u0136":"K","\u1E34":"K","\u0198":"K","\u2C69":"K","\uA740":"K","\uA742":"K","\uA744":"K","\uA7A2":"K","\u24C1":"L","\uFF2C":"L","\u013F":"L","\u0139":"L","\u013D":"L","\u1E36":"L","\u1E38":"L","\u013B":"L","\u1E3C":"L","\u1E3A":"L","\u0141":"L","\u023D":"L","\u2C62":"L","\u2C60":"L","\uA748":"L","\uA746":"L","\uA780":"L","\u01C7":"LJ","\u01C8":"Lj","\u24C2":"M","\uFF2D":"M","\u1E3E":"M","\u1E40":"M","\u1E42":"M","\u2C6E":"M","\u019C":"M","\u24C3":"N","\uFF2E":"N","\u01F8":"N","\u0143":"N","\u00D1":"N","\u1E44":"N","\u0147":"N","\u1E46":"N","\u0145":"N","\u1E4A":"N","\u1E48":"N","\u0220":"N","\u019D":"N","\uA790":"N","\uA7A4":"N","\u01CA":"NJ","\u01CB":"Nj","\u24C4":"O","\uFF2F":"O","\u00D2":"O","\u00D3":"O","\u00D4":"O","\u1ED2":"O","\u1ED0":"O","\u1ED6":"O","\u1ED4":"O","\u00D5":"O","\u1E4C":"O","\u022C":"O","\u1E4E":"O","\u014C":"O","\u1E50":"O","\u1E52":"O","\u014E":"O","\u022E":"O","\u0230":"O","\u00D6":"O","\u022A":"O","\u1ECE":"O","\u0150":"O","\u01D1":"O","\u020C":"O","\u020E":"O","\u01A0":"O","\u1EDC":"O","\u1EDA":"O","\u1EE0":"O","\u1EDE":"O","\u1EE2":"O","\u1ECC":"O","\u1ED8":"O","\u01EA":"O","\u01EC":"O","\u00D8":"O","\u01FE":"O","\u0186":"O","\u019F":"O","\uA74A":"O","\uA74C":"O","\u01A2":"OI","\uA74E":"OO","\u0222":"OU","\u24C5":"P","\uFF30":"P","\u1E54":"P","\u1E56":"P","\u01A4":"P","\u2C63":"P","\uA750":"P","\uA752":"P","\uA754":"P","\u24C6":"Q","\uFF31":"Q","\uA756":"Q","\uA758":"Q","\u024A":"Q","\u24C7":"R","\uFF32":"R","\u0154":"R","\u1E58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1E5A":"R","\u1E5C":"R","\u0156":"R","\u1E5E":"R","\u024C":"R","\u2C64":"R","\uA75A":"R","\uA7A6":"R","\uA782":"R","\u24C8":"S","\uFF33":"S","\u1E9E":"S","\u015A":"S","\u1E64":"S","\u015C":"S","\u1E60":"S","\u0160":"S","\u1E66":"S","\u1E62":"S","\u1E68":"S","\u0218":"S","\u015E":"S","\u2C7E":"S","\uA7A8":"S","\uA784":"S","\u24C9":"T","\uFF34":"T","\u1E6A":"T","\u0164":"T","\u1E6C":"T","\u021A":"T","\u0162":"T","\u1E70":"T","\u1E6E":"T","\u0166":"T","\u01AC":"T","\u01AE":"T","\u023E":"T","\uA786":"T","\uA728":"TZ","\u24CA":"U","\uFF35":"U","\u00D9":"U","\u00DA":"U","\u00DB":"U","\u0168":"U","\u1E78":"U","\u016A":"U","\u1E7A":"U","\u016C":"U","\u00DC":"U","\u01DB":"U","\u01D7":"U","\u01D5":"U","\u01D9":"U","\u1EE6":"U","\u016E":"U","\u0170":"U","\u01D3":"U","\u0214":"U","\u0216":"U","\u01AF":"U","\u1EEA":"U","\u1EE8":"U","\u1EEE":"U","\u1EEC":"U","\u1EF0":"U","\u1EE4":"U","\u1E72":"U","\u0172":"U","\u1E76":"U","\u1E74":"U","\u0244":"U","\u24CB":"V","\uFF36":"V","\u1E7C":"V","\u1E7E":"V","\u01B2":"V","\uA75E":"V","\u0245":"V","\uA760":"VY","\u24CC":"W","\uFF37":"W","\u1E80":"W","\u1E82":"W","\u0174":"W","\u1E86":"W","\u1E84":"W","\u1E88":"W","\u2C72":"W","\u24CD":"X","\uFF38":"X","\u1E8A":"X","\u1E8C":"X","\u24CE":"Y","\uFF39":"Y","\u1EF2":"Y","\u00DD":"Y","\u0176":"Y","\u1EF8":"Y","\u0232":"Y","\u1E8E":"Y","\u0178":"Y","\u1EF6":"Y","\u1EF4":"Y","\u01B3":"Y","\u024E":"Y","\u1EFE":"Y","\u24CF":"Z","\uFF3A":"Z","\u0179":"Z","\u1E90":"Z","\u017B":"Z","\u017D":"Z","\u1E92":"Z","\u1E94":"Z","\u01B5":"Z","\u0224":"Z","\u2C7F":"Z","\u2C6B":"Z","\uA762":"Z","\u24D0":"a","\uFF41":"a","\u1E9A":"a","\u00E0":"a","\u00E1":"a","\u00E2":"a","\u1EA7":"a","\u1EA5":"a","\u1EAB":"a","\u1EA9":"a","\u00E3":"a","\u0101":"a","\u0103":"a","\u1EB1":"a","\u1EAF":"a","\u1EB5":"a","\u1EB3":"a","\u0227":"a","\u01E1":"a","\u00E4":"a","\u01DF":"a","\u1EA3":"a","\u00E5":"a","\u01FB":"a","\u01CE":"a","\u0201":"a","\u0203":"a","\u1EA1":"a","\u1EAD":"a","\u1EB7":"a","\u1E01":"a","\u0105":"a","\u2C65":"a","\u0250":"a","\uA733":"aa","\u00E6":"ae","\u01FD":"ae","\u01E3":"ae","\uA735":"ao","\uA737":"au","\uA739":"av","\uA73B":"av","\uA73D":"ay","\u24D1":"b","\uFF42":"b","\u1E03":"b","\u1E05":"b","\u1E07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24D2":"c","\uFF43":"c","\u0107":"c","\u0109":"c","\u010B":"c","\u010D":"c","\u00E7":"c","\u1E09":"c","\u0188":"c","\u023C":"c","\uA73F":"c","\u2184":"c","\u24D3":"d","\uFF44":"d","\u1E0B":"d","\u010F":"d","\u1E0D":"d","\u1E11":"d","\u1E13":"d","\u1E0F":"d","\u0111":"d","\u018C":"d","\u0256":"d","\u0257":"d","\uA77A":"d","\u01F3":"dz","\u01C6":"dz","\u24D4":"e","\uFF45":"e","\u00E8":"e","\u00E9":"e","\u00EA":"e","\u1EC1":"e","\u1EBF":"e","\u1EC5":"e","\u1EC3":"e","\u1EBD":"e","\u0113":"e","\u1E15":"e","\u1E17":"e","\u0115":"e","\u0117":"e","\u00EB":"e","\u1EBB":"e","\u011B":"e","\u0205":"e","\u0207":"e","\u1EB9":"e","\u1EC7":"e","\u0229":"e","\u1E1D":"e","\u0119":"e","\u1E19":"e","\u1E1B":"e","\u0247":"e","\u025B":"e","\u01DD":"e","\u24D5":"f","\uFF46":"f","\u1E1F":"f","\u0192":"f","\uA77C":"f","\u24D6":"g","\uFF47":"g","\u01F5":"g","\u011D":"g","\u1E21":"g","\u011F":"g","\u0121":"g","\u01E7":"g","\u0123":"g","\u01E5":"g","\u0260":"g","\uA7A1":"g","\u1D79":"g","\uA77F":"g","\u24D7":"h","\uFF48":"h","\u0125":"h","\u1E23":"h","\u1E27":"h","\u021F":"h","\u1E25":"h","\u1E29":"h","\u1E2B":"h","\u1E96":"h","\u0127":"h","\u2C68":"h","\u2C76":"h","\u0265":"h","\u0195":"hv","\u24D8":"i","\uFF49":"i","\u00EC":"i","\u00ED":"i","\u00EE":"i","\u0129":"i","\u012B":"i","\u012D":"i","\u00EF":"i","\u1E2F":"i","\u1EC9":"i","\u01D0":"i","\u0209":"i","\u020B":"i","\u1ECB":"i","\u012F":"i","\u1E2D":"i","\u0268":"i","\u0131":"i","\u24D9":"j","\uFF4A":"j","\u0135":"j","\u01F0":"j","\u0249":"j","\u24DA":"k","\uFF4B":"k","\u1E31":"k","\u01E9":"k","\u1E33":"k","\u0137":"k","\u1E35":"k","\u0199":"k","\u2C6A":"k","\uA741":"k","\uA743":"k","\uA745":"k","\uA7A3":"k","\u24DB":"l","\uFF4C":"l","\u0140":"l","\u013A":"l","\u013E":"l","\u1E37":"l","\u1E39":"l","\u013C":"l","\u1E3D":"l","\u1E3B":"l","\u017F":"l","\u0142":"l","\u019A":"l","\u026B":"l","\u2C61":"l","\uA749":"l","\uA781":"l","\uA747":"l","\u01C9":"lj","\u24DC":"m","\uFF4D":"m","\u1E3F":"m","\u1E41":"m","\u1E43":"m","\u0271":"m","\u026F":"m","\u24DD":"n","\uFF4E":"n","\u01F9":"n","\u0144":"n","\u00F1":"n","\u1E45":"n","\u0148":"n","\u1E47":"n","\u0146":"n","\u1E4B":"n","\u1E49":"n","\u019E":"n","\u0272":"n","\u0149":"n","\uA791":"n","\uA7A5":"n","\u01CC":"nj","\u24DE":"o","\uFF4F":"o","\u00F2":"o","\u00F3":"o","\u00F4":"o","\u1ED3":"o","\u1ED1":"o","\u1ED7":"o","\u1ED5":"o","\u00F5":"o","\u1E4D":"o","\u022D":"o","\u1E4F":"o","\u014D":"o","\u1E51":"o","\u1E53":"o","\u014F":"o","\u022F":"o","\u0231":"o","\u00F6":"o","\u022B":"o","\u1ECF":"o","\u0151":"o","\u01D2":"o","\u020D":"o","\u020F":"o","\u01A1":"o","\u1EDD":"o","\u1EDB":"o","\u1EE1":"o","\u1EDF":"o","\u1EE3":"o","\u1ECD":"o","\u1ED9":"o","\u01EB":"o","\u01ED":"o","\u00F8":"o","\u01FF":"o","\u0254":"o","\uA74B":"o","\uA74D":"o","\u0275":"o","\u01A3":"oi","\u0223":"ou","\uA74F":"oo","\u24DF":"p","\uFF50":"p","\u1E55":"p","\u1E57":"p","\u01A5":"p","\u1D7D":"p","\uA751":"p","\uA753":"p","\uA755":"p","\u24E0":"q","\uFF51":"q","\u024B":"q","\uA757":"q","\uA759":"q","\u24E1":"r","\uFF52":"r","\u0155":"r","\u1E59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1E5B":"r","\u1E5D":"r","\u0157":"r","\u1E5F":"r","\u024D":"r","\u027D":"r","\uA75B":"r","\uA7A7":"r","\uA783":"r","\u24E2":"s","\uFF53":"s","\u00DF":"s","\u015B":"s","\u1E65":"s","\u015D":"s","\u1E61":"s","\u0161":"s","\u1E67":"s","\u1E63":"s","\u1E69":"s","\u0219":"s","\u015F":"s","\u023F":"s","\uA7A9":"s","\uA785":"s","\u1E9B":"s","\u24E3":"t","\uFF54":"t","\u1E6B":"t","\u1E97":"t","\u0165":"t","\u1E6D":"t","\u021B":"t","\u0163":"t","\u1E71":"t","\u1E6F":"t","\u0167":"t","\u01AD":"t","\u0288":"t","\u2C66":"t","\uA787":"t","\uA729":"tz","\u24E4":"u","\uFF55":"u","\u00F9":"u","\u00FA":"u","\u00FB":"u","\u0169":"u","\u1E79":"u","\u016B":"u","\u1E7B":"u","\u016D":"u","\u00FC":"u","\u01DC":"u","\u01D8":"u","\u01D6":"u","\u01DA":"u","\u1EE7":"u","\u016F":"u","\u0171":"u","\u01D4":"u","\u0215":"u","\u0217":"u","\u01B0":"u","\u1EEB":"u","\u1EE9":"u","\u1EEF":"u","\u1EED":"u","\u1EF1":"u","\u1EE5":"u","\u1E73":"u","\u0173":"u","\u1E77":"u","\u1E75":"u","\u0289":"u","\u24E5":"v","\uFF56":"v","\u1E7D":"v","\u1E7F":"v","\u028B":"v","\uA75F":"v","\u028C":"v","\uA761":"vy","\u24E6":"w","\uFF57":"w","\u1E81":"w","\u1E83":"w","\u0175":"w","\u1E87":"w","\u1E85":"w","\u1E98":"w","\u1E89":"w","\u2C73":"w","\u24E7":"x","\uFF58":"x","\u1E8B":"x","\u1E8D":"x","\u24E8":"y","\uFF59":"y","\u1EF3":"y","\u00FD":"y","\u0177":"y","\u1EF9":"y","\u0233":"y","\u1E8F":"y","\u00FF":"y","\u1EF7":"y","\u1E99":"y","\u1EF5":"y","\u01B4":"y","\u024F":"y","\u1EFF":"y","\u24E9":"z","\uFF5A":"z","\u017A":"z","\u1E91":"z","\u017C":"z","\u017E":"z","\u1E93":"z","\u1E95":"z","\u01B6":"z","\u0225":"z","\u0240":"z","\u2C6C":"z","\uA763":"z"}; - - $document = $(document); - - nextUid=(function() { var counter=1; return function() { return counter++; }; }()); - - - function reinsertElement(element) { - var placeholder = $(document.createTextNode('')); - - element.before(placeholder); - placeholder.before(element); - placeholder.remove(); - } - - function stripDiacritics(str) { - var ret, i, l, c; - - if (!str || str.length < 1) return str; - - ret = ""; - for (i = 0, l = str.length; i < l; i++) { - c = str.charAt(i); - ret += DIACRITICS[c] || c; - } - return ret; - } - - function indexOf(value, array) { - var i = 0, l = array.length; - for (; i < l; i = i + 1) { - if (equal(value, array[i])) return i; - } - return -1; - } - - function measureScrollbar () { - var $template = $( MEASURE_SCROLLBAR_TEMPLATE ); - $template.appendTo('body'); - - var dim = { - width: $template.width() - $template[0].clientWidth, - height: $template.height() - $template[0].clientHeight - }; - $template.remove(); - - return dim; - } - - /** - * Compares equality of a and b - * @param a - * @param b - */ - function equal(a, b) { - if (a === b) return true; - if (a === undefined || b === undefined) return false; - if (a === null || b === null) return false; - // Check whether 'a' or 'b' is a string (primitive or object). - // The concatenation of an empty string (+'') converts its argument to a string's primitive. - if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object - if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object - return false; - } - - /** - * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty - * strings - * @param string - * @param separator - */ - function splitVal(string, separator) { - var val, i, l; - if (string === null || string.length < 1) return []; - val = string.split(separator); - for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]); - return val; - } - - function getSideBorderPadding(element) { - return element.outerWidth(false) - element.width(); - } - - function installKeyUpChangeEvent(element) { - var key="keyup-change-value"; - element.on("keydown", function () { - if ($.data(element, key) === undefined) { - $.data(element, key, element.val()); - } - }); - element.on("keyup", function () { - var val= $.data(element, key); - if (val !== undefined && element.val() !== val) { - $.removeData(element, key); - element.trigger("keyup-change"); - } - }); - } - - $document.on("mousemove", function (e) { - lastMousePosition.x = e.pageX; - lastMousePosition.y = e.pageY; - }); - - /** - * filters mouse events so an event is fired only if the mouse moved. - * - * filters out mouse events that occur when mouse is stationary but - * the elements under the pointer are scrolled. - */ - function installFilteredMouseMove(element) { - element.on("mousemove", function (e) { - var lastpos = lastMousePosition; - if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) { - $(e.target).trigger("mousemove-filtered", e); - } - }); - } - - /** - * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made - * within the last quietMillis milliseconds. - * - * @param quietMillis number of milliseconds to wait before invoking fn - * @param fn function to be debounced - * @param ctx object to be used as this reference within fn - * @return debounced version of fn - */ - function debounce(quietMillis, fn, ctx) { - ctx = ctx || undefined; - var timeout; - return function () { - var args = arguments; - window.clearTimeout(timeout); - timeout = window.setTimeout(function() { - fn.apply(ctx, args); - }, quietMillis); - }; - } - - /** - * A simple implementation of a thunk - * @param formula function used to lazily initialize the thunk - * @return {Function} - */ - function thunk(formula) { - var evaluated = false, - value; - return function() { - if (evaluated === false) { value = formula(); evaluated = true; } - return value; - }; - }; - - function installDebouncedScroll(threshold, element) { - var notify = debounce(threshold, function (e) { element.trigger("scroll-debounced", e);}); - element.on("scroll", function (e) { - if (indexOf(e.target, element.get()) >= 0) notify(e); - }); - } - - function focus($el) { - if ($el[0] === document.activeElement) return; - - /* set the focus in a 0 timeout - that way the focus is set after the processing - of the current event has finished - which seems like the only reliable way - to set focus */ - window.setTimeout(function() { - var el=$el[0], pos=$el.val().length, range; - - $el.focus(); - - /* make sure el received focus so we do not error out when trying to manipulate the caret. - sometimes modals or others listeners may steal it after its set */ - var isVisible = (el.offsetWidth > 0 || el.offsetHeight > 0); - if (isVisible && el === document.activeElement) { - - /* after the focus is set move the caret to the end, necessary when we val() - just before setting focus */ - if(el.setSelectionRange) - { - el.setSelectionRange(pos, pos); - } - else if (el.createTextRange) { - range = el.createTextRange(); - range.collapse(false); - range.select(); - } - } - }, 0); - } - - function getCursorInfo(el) { - el = $(el)[0]; - var offset = 0; - var length = 0; - if ('selectionStart' in el) { - offset = el.selectionStart; - length = el.selectionEnd - offset; - } else if ('selection' in document) { - el.focus(); - var sel = document.selection.createRange(); - length = document.selection.createRange().text.length; - sel.moveStart('character', -el.value.length); - offset = sel.text.length - length; - } - return { offset: offset, length: length }; - } - - function killEvent(event) { - event.preventDefault(); - event.stopPropagation(); - } - function killEventImmediately(event) { - event.preventDefault(); - event.stopImmediatePropagation(); - } - - function measureTextWidth(e) { - if (!sizer){ - var style = e[0].currentStyle || window.getComputedStyle(e[0], null); - sizer = $(document.createElement("div")).css({ - position: "absolute", - left: "-10000px", - top: "-10000px", - display: "none", - fontSize: style.fontSize, - fontFamily: style.fontFamily, - fontStyle: style.fontStyle, - fontWeight: style.fontWeight, - letterSpacing: style.letterSpacing, - textTransform: style.textTransform, - whiteSpace: "nowrap" - }); - sizer.attr("class","select2-sizer"); - $("body").append(sizer); - } - sizer.text(e.val()); - return sizer.width(); - } - - function syncCssClasses(dest, src, adapter) { - var classes, replacements = [], adapted; - - classes = dest.attr("class"); - if (classes) { - classes = '' + classes; // for IE which returns object - $(classes.split(" ")).each2(function() { - if (this.indexOf("select2-") === 0) { - replacements.push(this); - } - }); - } - classes = src.attr("class"); - if (classes) { - classes = '' + classes; // for IE which returns object - $(classes.split(" ")).each2(function() { - if (this.indexOf("select2-") !== 0) { - adapted = adapter(this); - if (adapted) { - replacements.push(adapted); - } - } - }); - } - dest.attr("class", replacements.join(" ")); - } - - - function markMatch(text, term, markup, escapeMarkup) { - var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())), - tl=term.length; - - if (match<0) { - markup.push(escapeMarkup(text)); - return; - } - - markup.push(escapeMarkup(text.substring(0, match))); - markup.push(""); - markup.push(escapeMarkup(text.substring(match, match + tl))); - markup.push(""); - markup.push(escapeMarkup(text.substring(match + tl, text.length))); - } - - function defaultEscapeMarkup(markup) { - var replace_map = { - '\\': '\', - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - "/": '/' - }; - - return String(markup).replace(/[&<>"'\/\\]/g, function (match) { - return replace_map[match]; - }); - } - - /** - * Produces an ajax-based query function - * - * @param options object containing configuration parameters - * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax - * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax - * @param options.url url for the data - * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url. - * @param options.dataType request data type: ajax, jsonp, other datatypes supported by jQuery's $.ajax function or the transport function if specified - * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often - * @param options.results a function(remoteData, pageNumber) that converts data returned form the remote request to the format expected by Select2. - * The expected format is an object containing the following keys: - * results array of objects that will be used as choices - * more (optional) boolean indicating whether there are more results available - * Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true} - */ - function ajax(options) { - var timeout, // current scheduled but not yet executed request - handler = null, - quietMillis = options.quietMillis || 100, - ajaxUrl = options.url, - self = this; - - return function (query) { - window.clearTimeout(timeout); - timeout = window.setTimeout(function () { - var data = options.data, // ajax data function - url = ajaxUrl, // ajax url string or function - transport = options.transport || $.fn.select2.ajaxDefaults.transport, - // deprecated - to be removed in 4.0 - use params instead - deprecated = { - type: options.type || 'GET', // set type of request (GET or POST) - cache: options.cache || false, - jsonpCallback: options.jsonpCallback||undefined, - dataType: options.dataType||"json" - }, - params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated); - - data = data ? data.call(self, query.term, query.page, query.context) : null; - url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url; - - if (handler && typeof handler.abort === "function") { handler.abort(); } - - if (options.params) { - if ($.isFunction(options.params)) { - $.extend(params, options.params.call(self)); - } else { - $.extend(params, options.params); - } - } - - $.extend(params, { - url: url, - dataType: options.dataType, - data: data, - success: function (data) { - // TODO - replace query.page with query so users have access to term, page, etc. - var results = options.results(data, query.page); - query.callback(results); - } - }); - handler = transport.call(self, params); - }, quietMillis); - }; - } - - /** - * Produces a query function that works with a local array - * - * @param options object containing configuration parameters. The options parameter can either be an array or an - * object. - * - * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys. - * - * If the object form is used ti is assumed that it contains 'data' and 'text' keys. The 'data' key should contain - * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text' - * key can either be a String in which case it is expected that each element in the 'data' array has a key with the - * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract - * the text. - */ - function local(options) { - var data = options, // data elements - dataText, - tmp, - text = function (item) { return ""+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search - - if ($.isArray(data)) { - tmp = data; - data = { results: tmp }; - } - - if ($.isFunction(data) === false) { - tmp = data; - data = function() { return tmp; }; - } - - var dataItem = data(); - if (dataItem.text) { - text = dataItem.text; - // if text is not a function we assume it to be a key name - if (!$.isFunction(text)) { - dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available - text = function (item) { return item[dataText]; }; - } - } - - return function (query) { - var t = query.term, filtered = { results: [] }, process; - if (t === "") { - query.callback(data()); - return; - } - - process = function(datum, collection) { - var group, attr; - datum = datum[0]; - if (datum.children) { - group = {}; - for (attr in datum) { - if (datum.hasOwnProperty(attr)) group[attr]=datum[attr]; - } - group.children=[]; - $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); }); - if (group.children.length || query.matcher(t, text(group), datum)) { - collection.push(group); - } - } else { - if (query.matcher(t, text(datum), datum)) { - collection.push(datum); - } - } - }; - - $(data().results).each2(function(i, datum) { process(datum, filtered.results); }); - query.callback(filtered); - }; - } - - // TODO javadoc - function tags(data) { - var isFunc = $.isFunction(data); - return function (query) { - var t = query.term, filtered = {results: []}; - $(isFunc ? data() : data).each(function () { - var isObject = this.text !== undefined, - text = isObject ? this.text : this; - if (t === "" || query.matcher(t, text)) { - filtered.results.push(isObject ? this : {id: this, text: this}); - } - }); - query.callback(filtered); - }; - } - - /** - * Checks if the formatter function should be used. - * - * Throws an error if it is not a function. Returns true if it should be used, - * false if no formatting should be performed. - * - * @param formatter - */ - function checkFormatter(formatter, formatterName) { - if ($.isFunction(formatter)) return true; - if (!formatter) return false; - if (typeof(formatter) === 'string') return true; - throw new Error(formatterName +" must be a string, function, or falsy value"); - } - - function evaluate(val) { - if ($.isFunction(val)) { - var args = Array.prototype.slice.call(arguments, 1); - return val.apply(null, args); - } - return val; - } - - function countResults(results) { - var count = 0; - $.each(results, function(i, item) { - if (item.children) { - count += countResults(item.children); - } else { - count++; - } - }); - return count; - } - - /** - * Default tokenizer. This function uses breaks the input on substring match of any string from the - * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those - * two options have to be defined in order for the tokenizer to work. - * - * @param input text user has typed so far or pasted into the search field - * @param selection currently selected choices - * @param selectCallback function(choice) callback tho add the choice to selection - * @param opts select2's opts - * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value - */ - function defaultTokenizer(input, selection, selectCallback, opts) { - var original = input, // store the original so we can compare and know if we need to tell the search to update its text - dupe = false, // check for whether a token we extracted represents a duplicate selected choice - token, // token - index, // position at which the separator was found - i, l, // looping variables - separator; // the matched separator - - if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined; - - while (true) { - index = -1; - - for (i = 0, l = opts.tokenSeparators.length; i < l; i++) { - separator = opts.tokenSeparators[i]; - index = input.indexOf(separator); - if (index >= 0) break; - } - - if (index < 0) break; // did not find any token separator in the input string, bail - - token = input.substring(0, index); - input = input.substring(index + separator.length); - - if (token.length > 0) { - token = opts.createSearchChoice.call(this, token, selection); - if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) { - dupe = false; - for (i = 0, l = selection.length; i < l; i++) { - if (equal(opts.id(token), opts.id(selection[i]))) { - dupe = true; break; - } - } - - if (!dupe) selectCallback(token); - } - } - } - - if (original!==input) return input; - } - - /** - * Creates a new class - * - * @param superClass - * @param methods - */ - function clazz(SuperClass, methods) { - var constructor = function () {}; - constructor.prototype = new SuperClass; - constructor.prototype.constructor = constructor; - constructor.prototype.parent = SuperClass.prototype; - constructor.prototype = $.extend(constructor.prototype, methods); - return constructor; - } - - AbstractSelect2 = clazz(Object, { - - // abstract - bind: function (func) { - var self = this; - return function () { - func.apply(self, arguments); - }; - }, - - // abstract - init: function (opts) { - var results, search, resultsSelector = ".select2-results"; - - // prepare options - this.opts = opts = this.prepareOpts(opts); - - this.id=opts.id; - - // destroy if called on an existing component - if (opts.element.data("select2") !== undefined && - opts.element.data("select2") !== null) { - opts.element.data("select2").destroy(); - } - - this.container = this.createContainer(); - - this.liveRegion = $("", { - role: "status", - "aria-live": "polite" - }) - .addClass("select2-hidden-accessible") - .appendTo(document.body); - - this.containerId="s2id_"+(opts.element.attr("id") || "autogen"+nextUid()).replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1'); - this.containerSelector="#"+this.containerId; - this.container.attr("id", this.containerId); - - // cache the body so future lookups are cheap - this.body = thunk(function() { return opts.element.closest("body"); }); - - syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass); - - this.container.attr("style", opts.element.attr("style")); - this.container.css(evaluate(opts.containerCss)); - this.container.addClass(evaluate(opts.containerCssClass)); - - this.elementTabIndex = this.opts.element.attr("tabindex"); - - // swap container for the element - this.opts.element - .data("select2", this) - .attr("tabindex", "-1") - .before(this.container) - .on("click.select2", killEvent); // do not leak click events - - this.container.data("select2", this); - - this.dropdown = this.container.find(".select2-drop"); - - syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass); - - this.dropdown.addClass(evaluate(opts.dropdownCssClass)); - this.dropdown.data("select2", this); - this.dropdown.on("click", killEvent); - - this.results = results = this.container.find(resultsSelector); - this.search = search = this.container.find("input.select2-input"); - - this.queryCount = 0; - this.resultsPage = 0; - this.context = null; - - // initialize the container - this.initContainer(); - - this.container.on("click", killEvent); - - installFilteredMouseMove(this.results); - this.dropdown.on("mousemove-filtered touchstart touchmove touchend", resultsSelector, this.bind(this.highlightUnderEvent)); - this.dropdown.on("touchend", resultsSelector, this.bind(this.selectHighlighted)); - this.dropdown.on("touchmove", resultsSelector, this.bind(this.touchMoved)); - this.dropdown.on("touchstart touchend", resultsSelector, this.bind(this.clearTouchMoved)); - - installDebouncedScroll(80, this.results); - this.dropdown.on("scroll-debounced", resultsSelector, this.bind(this.loadMoreIfNeeded)); - - // do not propagate change event from the search field out of the component - $(this.container).on("change", ".select2-input", function(e) {e.stopPropagation();}); - $(this.dropdown).on("change", ".select2-input", function(e) {e.stopPropagation();}); - - // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel - if ($.fn.mousewheel) { - results.mousewheel(function (e, delta, deltaX, deltaY) { - var top = results.scrollTop(); - if (deltaY > 0 && top - deltaY <= 0) { - results.scrollTop(0); - killEvent(e); - } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) { - results.scrollTop(results.get(0).scrollHeight - results.height()); - killEvent(e); - } - }); - } - - installKeyUpChangeEvent(search); - search.on("keyup-change input paste", this.bind(this.updateResults)); - search.on("focus", function () { search.addClass("select2-focused"); }); - search.on("blur", function () { search.removeClass("select2-focused");}); - - this.dropdown.on("mouseup", resultsSelector, this.bind(function (e) { - if ($(e.target).closest(".select2-result-selectable").length > 0) { - this.highlightUnderEvent(e); - this.selectHighlighted(e); - } - })); - - // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening - // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's - // dom it will trigger the popup close, which is not what we want - // focusin can cause focus wars between modals and select2 since the dropdown is outside the modal. - this.dropdown.on("click mouseup mousedown focusin", function (e) { e.stopPropagation(); }); - - this.nextSearchTerm = undefined; - - if ($.isFunction(this.opts.initSelection)) { - // initialize selection based on the current value of the source element - this.initSelection(); - - // if the user has provided a function that can set selection based on the value of the source element - // we monitor the change event on the element and trigger it, allowing for two way synchronization - this.monitorSource(); - } - - if (opts.maximumInputLength !== null) { - this.search.attr("maxlength", opts.maximumInputLength); - } - - var disabled = opts.element.prop("disabled"); - if (disabled === undefined) disabled = false; - this.enable(!disabled); - - var readonly = opts.element.prop("readonly"); - if (readonly === undefined) readonly = false; - this.readonly(readonly); - - // Calculate size of scrollbar - scrollBarDimensions = scrollBarDimensions || measureScrollbar(); - - this.autofocus = opts.element.prop("autofocus"); - opts.element.prop("autofocus", false); - if (this.autofocus) this.focus(); - - this.search.attr("placeholder", opts.searchInputPlaceholder); - }, - - // abstract - destroy: function () { - var element=this.opts.element, select2 = element.data("select2"); - - this.close(); - - if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; } - - if (select2 !== undefined) { - select2.container.remove(); - select2.liveRegion.remove(); - select2.dropdown.remove(); - element - .removeClass("select2-offscreen") - .removeData("select2") - .off(".select2") - .prop("autofocus", this.autofocus || false); - if (this.elementTabIndex) { - element.attr({tabindex: this.elementTabIndex}); - } else { - element.removeAttr("tabindex"); - } - element.show(); - } - }, - - // abstract - optionToData: function(element) { - if (element.is("option")) { - return { - id:element.prop("value"), - text:element.text(), - element: element.get(), - css: element.attr("class"), - disabled: element.prop("disabled"), - locked: equal(element.attr("locked"), "locked") || equal(element.data("locked"), true) - }; - } else if (element.is("optgroup")) { - return { - text:element.attr("label"), - children:[], - element: element.get(), - css: element.attr("class") - }; - } - }, - - // abstract - prepareOpts: function (opts) { - var element, select, idKey, ajaxUrl, self = this; - - element = opts.element; - - if (element.get(0).tagName.toLowerCase() === "select") { - this.select = select = opts.element; - } - - if (select) { - // these options are not allowed when attached to a select because they are picked up off the element itself - $.each(["id", "multiple", "ajax", "query", "createSearchChoice", "initSelection", "data", "tags"], function () { - if (this in opts) { - throw new Error("Option '" + this + "' is not allowed for Select2 when attached to a ", - "
    ", - " ", - "
      ", - "
    ", - "
    "].join("")); - return container; - }, - - // single - enableInterface: function() { - if (this.parent.enableInterface.apply(this, arguments)) { - this.focusser.prop("disabled", !this.isInterfaceEnabled()); - } - }, - - // single - opening: function () { - var el, range, len; - - if (this.opts.minimumResultsForSearch >= 0) { - this.showSearch(true); - } - - this.parent.opening.apply(this, arguments); - - if (this.showSearchInput !== false) { - // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range - // all other browsers handle this just fine - - this.search.val(this.focusser.val()); - } - this.search.focus(); - // move the cursor to the end after focussing, otherwise it will be at the beginning and - // new text will appear *before* focusser.val() - el = this.search.get(0); - if (el.createTextRange) { - range = el.createTextRange(); - range.collapse(false); - range.select(); - } else if (el.setSelectionRange) { - len = this.search.val().length; - el.setSelectionRange(len, len); - } - - // initializes search's value with nextSearchTerm (if defined by user) - // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter - if(this.search.val() === "") { - if(this.nextSearchTerm != undefined){ - this.search.val(this.nextSearchTerm); - this.search.select(); - } - } - - this.focusser.prop("disabled", true).val(""); - this.updateResults(true); - this.opts.element.trigger($.Event("select2-open")); - }, - - // single - close: function () { - if (!this.opened()) return; - this.parent.close.apply(this, arguments); - - this.focusser.prop("disabled", false); - - if (this.opts.shouldFocusInput(this)) { - this.focusser.focus(); - } - }, - - // single - focus: function () { - if (this.opened()) { - this.close(); - } else { - this.focusser.prop("disabled", false); - if (this.opts.shouldFocusInput(this)) { - this.focusser.focus(); - } - } - }, - - // single - isFocused: function () { - return this.container.hasClass("select2-container-active"); - }, - - // single - cancel: function () { - this.parent.cancel.apply(this, arguments); - this.focusser.prop("disabled", false); - - if (this.opts.shouldFocusInput(this)) { - this.focusser.focus(); - } - }, - - // single - destroy: function() { - $("label[for='" + this.focusser.attr('id') + "']") - .attr('for', this.opts.element.attr("id")); - this.parent.destroy.apply(this, arguments); - }, - - // single - initContainer: function () { - - var selection, - container = this.container, - dropdown = this.dropdown, - idSuffix = nextUid(), - elementLabel; - - if (this.opts.minimumResultsForSearch < 0) { - this.showSearch(false); - } else { - this.showSearch(true); - } - - this.selection = selection = container.find(".select2-choice"); - - this.focusser = container.find(".select2-focusser"); - - // add aria associations - selection.find(".select2-chosen").attr("id", "select2-chosen-"+idSuffix); - this.focusser.attr("aria-labelledby", "select2-chosen-"+idSuffix); - this.results.attr("id", "select2-results-"+idSuffix); - this.search.attr("aria-owns", "select2-results-"+idSuffix); - - // rewrite labels from original element to focusser - this.focusser.attr("id", "s2id_autogen"+idSuffix); - - elementLabel = $("label[for='" + this.opts.element.attr("id") + "']"); - - this.focusser.prev() - .text(elementLabel.text()) - .attr('for', this.focusser.attr('id')); - - // Ensure the original element retains an accessible name - var originalTitle = this.opts.element.attr("title"); - this.opts.element.attr("title", (originalTitle || elementLabel.text())); - - this.focusser.attr("tabindex", this.elementTabIndex); - - // write label for search field using the label from the focusser element - this.search.attr("id", this.focusser.attr('id') + '_search'); - - this.search.prev() - .text($("label[for='" + this.focusser.attr('id') + "']").text()) - .attr('for', this.search.attr('id')); - - this.search.on("keydown", this.bind(function (e) { - if (!this.isInterfaceEnabled()) return; - - if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) { - // prevent the page from scrolling - killEvent(e); - return; - } - - switch (e.which) { - case KEY.UP: - case KEY.DOWN: - this.moveHighlight((e.which === KEY.UP) ? -1 : 1); - killEvent(e); - return; - case KEY.ENTER: - this.selectHighlighted(); - killEvent(e); - return; - case KEY.TAB: - this.selectHighlighted({noFocus: true}); - return; - case KEY.ESC: - this.cancel(e); - killEvent(e); - return; - } - })); - - this.search.on("blur", this.bind(function(e) { - // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown. - // without this the search field loses focus which is annoying - if (document.activeElement === this.body().get(0)) { - window.setTimeout(this.bind(function() { - if (this.opened()) { - this.search.focus(); - } - }), 0); - } - })); - - this.focusser.on("keydown", this.bind(function (e) { - if (!this.isInterfaceEnabled()) return; - - if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) { - return; - } - - if (this.opts.openOnEnter === false && e.which === KEY.ENTER) { - killEvent(e); - return; - } - - if (e.which == KEY.DOWN || e.which == KEY.UP - || (e.which == KEY.ENTER && this.opts.openOnEnter)) { - - if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return; - - this.open(); - killEvent(e); - return; - } - - if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) { - if (this.opts.allowClear) { - this.clear(); - } - killEvent(e); - return; - } - })); - - - installKeyUpChangeEvent(this.focusser); - this.focusser.on("keyup-change input", this.bind(function(e) { - if (this.opts.minimumResultsForSearch >= 0) { - e.stopPropagation(); - if (this.opened()) return; - this.open(); - } - })); - - selection.on("mousedown touchstart", "abbr", this.bind(function (e) { - if (!this.isInterfaceEnabled()) return; - this.clear(); - killEventImmediately(e); - this.close(); - this.selection.focus(); - })); - - selection.on("mousedown touchstart", this.bind(function (e) { - // Prevent IE from generating a click event on the body - reinsertElement(selection); - - if (!this.container.hasClass("select2-container-active")) { - this.opts.element.trigger($.Event("select2-focus")); - } - - if (this.opened()) { - this.close(); - } else if (this.isInterfaceEnabled()) { - this.open(); - } - - killEvent(e); - })); - - dropdown.on("mousedown touchstart", this.bind(function() { this.search.focus(); })); - - selection.on("focus", this.bind(function(e) { - killEvent(e); - })); - - this.focusser.on("focus", this.bind(function(){ - if (!this.container.hasClass("select2-container-active")) { - this.opts.element.trigger($.Event("select2-focus")); - } - this.container.addClass("select2-container-active"); - })).on("blur", this.bind(function() { - if (!this.opened()) { - this.container.removeClass("select2-container-active"); - this.opts.element.trigger($.Event("select2-blur")); - } - })); - this.search.on("focus", this.bind(function(){ - if (!this.container.hasClass("select2-container-active")) { - this.opts.element.trigger($.Event("select2-focus")); - } - this.container.addClass("select2-container-active"); - })); - - this.initContainerWidth(); - this.opts.element.addClass("select2-offscreen"); - this.setPlaceholder(); - - }, - - // single - clear: function(triggerChange) { - var data=this.selection.data("select2-data"); - if (data) { // guard against queued quick consecutive clicks - var evt = $.Event("select2-clearing"); - this.opts.element.trigger(evt); - if (evt.isDefaultPrevented()) { - return; - } - var placeholderOption = this.getPlaceholderOption(); - this.opts.element.val(placeholderOption ? placeholderOption.val() : ""); - this.selection.find(".select2-chosen").empty(); - this.selection.removeData("select2-data"); - this.setPlaceholder(); - - if (triggerChange !== false){ - this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data }); - this.triggerChange({removed:data}); - } - } - }, - - /** - * Sets selection based on source element's value - */ - // single - initSelection: function () { - var selected; - if (this.isPlaceholderOptionSelected()) { - this.updateSelection(null); - this.close(); - this.setPlaceholder(); - } else { - var self = this; - this.opts.initSelection.call(null, this.opts.element, function(selected){ - if (selected !== undefined && selected !== null) { - self.updateSelection(selected); - self.close(); - self.setPlaceholder(); - self.nextSearchTerm = self.opts.nextSearchTerm(selected, self.search.val()); - } - }); - } - }, - - isPlaceholderOptionSelected: function() { - var placeholderOption; - if (!this.getPlaceholder()) return false; // no placeholder specified so no option should be considered - return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop("selected")) - || (this.opts.element.val() === "") - || (this.opts.element.val() === undefined) - || (this.opts.element.val() === null); - }, - - // single - prepareOpts: function () { - var opts = this.parent.prepareOpts.apply(this, arguments), - self=this; - - if (opts.element.get(0).tagName.toLowerCase() === "select") { - // install the selection initializer - opts.initSelection = function (element, callback) { - var selected = element.find("option").filter(function() { return this.selected && !this.disabled }); - // a single select box always has a value, no need to null check 'selected' - callback(self.optionToData(selected)); - }; - } else if ("data" in opts) { - // install default initSelection when applied to hidden input and data is local - opts.initSelection = opts.initSelection || function (element, callback) { - var id = element.val(); - //search in data by id, storing the actual matching item - var match = null; - opts.query({ - matcher: function(term, text, el){ - var is_match = equal(id, opts.id(el)); - if (is_match) { - match = el; - } - return is_match; - }, - callback: !$.isFunction(callback) ? $.noop : function() { - callback(match); - } - }); - }; - } - - return opts; - }, - - // single - getPlaceholder: function() { - // if a placeholder is specified on a single select without a valid placeholder option ignore it - if (this.select) { - if (this.getPlaceholderOption() === undefined) { - return undefined; - } - } - - return this.parent.getPlaceholder.apply(this, arguments); - }, - - // single - setPlaceholder: function () { - var placeholder = this.getPlaceholder(); - - if (this.isPlaceholderOptionSelected() && placeholder !== undefined) { - - // check for a placeholder option if attached to a select - if (this.select && this.getPlaceholderOption() === undefined) return; - - this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(placeholder)); - - this.selection.addClass("select2-default"); - - this.container.removeClass("select2-allowclear"); - } - }, - - // single - postprocessResults: function (data, initial, noHighlightUpdate) { - var selected = 0, self = this, showSearchInput = true; - - // find the selected element in the result list - - this.findHighlightableChoices().each2(function (i, elm) { - if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) { - selected = i; - return false; - } - }); - - // and highlight it - if (noHighlightUpdate !== false) { - if (initial === true && selected >= 0) { - this.highlight(selected); - } else { - this.highlight(0); - } - } - - // hide the search box if this is the first we got the results and there are enough of them for search - - if (initial === true) { - var min = this.opts.minimumResultsForSearch; - if (min >= 0) { - this.showSearch(countResults(data.results) >= min); - } - } - }, - - // single - showSearch: function(showSearchInput) { - if (this.showSearchInput === showSearchInput) return; - - this.showSearchInput = showSearchInput; - - this.dropdown.find(".select2-search").toggleClass("select2-search-hidden", !showSearchInput); - this.dropdown.find(".select2-search").toggleClass("select2-offscreen", !showSearchInput); - //add "select2-with-searchbox" to the container if search box is shown - $(this.dropdown, this.container).toggleClass("select2-with-searchbox", showSearchInput); - }, - - // single - onSelect: function (data, options) { - - if (!this.triggerSelect(data)) { return; } - - var old = this.opts.element.val(), - oldData = this.data(); - - this.opts.element.val(this.id(data)); - this.updateSelection(data); - - this.opts.element.trigger({ type: "select2-selected", val: this.id(data), choice: data }); - - this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val()); - this.close(); - - if ((!options || !options.noFocus) && this.opts.shouldFocusInput(this)) { - this.focusser.focus(); - } - - if (!equal(old, this.id(data))) { - this.triggerChange({ added: data, removed: oldData }); - } - }, - - // single - updateSelection: function (data) { - - var container=this.selection.find(".select2-chosen"), formatted, cssClass; - - this.selection.data("select2-data", data); - - container.empty(); - if (data !== null) { - formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup); - } - if (formatted !== undefined) { - container.append(formatted); - } - cssClass=this.opts.formatSelectionCssClass(data, container); - if (cssClass !== undefined) { - container.addClass(cssClass); - } - - this.selection.removeClass("select2-default"); - - if (this.opts.allowClear && this.getPlaceholder() !== undefined) { - this.container.addClass("select2-allowclear"); - } - }, - - // single - val: function () { - var val, - triggerChange = false, - data = null, - self = this, - oldData = this.data(); - - if (arguments.length === 0) { - return this.opts.element.val(); - } - - val = arguments[0]; - - if (arguments.length > 1) { - triggerChange = arguments[1]; - } - - if (this.select) { - this.select - .val(val) - .find("option").filter(function() { return this.selected }).each2(function (i, elm) { - data = self.optionToData(elm); - return false; - }); - this.updateSelection(data); - this.setPlaceholder(); - if (triggerChange) { - this.triggerChange({added: data, removed:oldData}); - } - } else { - // val is an id. !val is true for [undefined,null,'',0] - 0 is legal - if (!val && val !== 0) { - this.clear(triggerChange); - return; - } - if (this.opts.initSelection === undefined) { - throw new Error("cannot call val() if initSelection() is not defined"); - } - this.opts.element.val(val); - this.opts.initSelection(this.opts.element, function(data){ - self.opts.element.val(!data ? "" : self.id(data)); - self.updateSelection(data); - self.setPlaceholder(); - if (triggerChange) { - self.triggerChange({added: data, removed:oldData}); - } - }); - } - }, - - // single - clearSearch: function () { - this.search.val(""); - this.focusser.val(""); - }, - - // single - data: function(value) { - var data, - triggerChange = false; - - if (arguments.length === 0) { - data = this.selection.data("select2-data"); - if (data == undefined) data = null; - return data; - } else { - if (arguments.length > 1) { - triggerChange = arguments[1]; - } - if (!value) { - this.clear(triggerChange); - } else { - data = this.data(); - this.opts.element.val(!value ? "" : this.id(value)); - this.updateSelection(value); - if (triggerChange) { - this.triggerChange({added: value, removed:data}); - } - } - } - } - }); - - MultiSelect2 = clazz(AbstractSelect2, { - - // multi - createContainer: function () { - var container = $(document.createElement("div")).attr({ - "class": "select2-container select2-container-multi" - }).html([ - "
      ", - "
    • ", - " ", - " ", - "
    • ", - "
    ", - "
    ", - "
      ", - "
    ", - "
    "].join("")); - return container; - }, - - // multi - prepareOpts: function () { - var opts = this.parent.prepareOpts.apply(this, arguments), - self=this; - - // TODO validate placeholder is a string if specified - - if (opts.element.get(0).tagName.toLowerCase() === "select") { - // install the selection initializer - opts.initSelection = function (element, callback) { - - var data = []; - - element.find("option").filter(function() { return this.selected && !this.disabled }).each2(function (i, elm) { - data.push(self.optionToData(elm)); - }); - callback(data); - }; - } else if ("data" in opts) { - // install default initSelection when applied to hidden input and data is local - opts.initSelection = opts.initSelection || function (element, callback) { - var ids = splitVal(element.val(), opts.separator); - //search in data by array of ids, storing matching items in a list - var matches = []; - opts.query({ - matcher: function(term, text, el){ - var is_match = $.grep(ids, function(id) { - return equal(id, opts.id(el)); - }).length; - if (is_match) { - matches.push(el); - } - return is_match; - }, - callback: !$.isFunction(callback) ? $.noop : function() { - // reorder matches based on the order they appear in the ids array because right now - // they are in the order in which they appear in data array - var ordered = []; - for (var i = 0; i < ids.length; i++) { - var id = ids[i]; - for (var j = 0; j < matches.length; j++) { - var match = matches[j]; - if (equal(id, opts.id(match))) { - ordered.push(match); - matches.splice(j, 1); - break; - } - } - } - callback(ordered); - } - }); - }; - } - - return opts; - }, - - // multi - selectChoice: function (choice) { - - var selected = this.container.find(".select2-search-choice-focus"); - if (selected.length && choice && choice[0] == selected[0]) { - - } else { - if (selected.length) { - this.opts.element.trigger("choice-deselected", selected); - } - selected.removeClass("select2-search-choice-focus"); - if (choice && choice.length) { - this.close(); - choice.addClass("select2-search-choice-focus"); - this.opts.element.trigger("choice-selected", choice); - } - } - }, - - // multi - destroy: function() { - $("label[for='" + this.search.attr('id') + "']") - .attr('for', this.opts.element.attr("id")); - this.parent.destroy.apply(this, arguments); - }, - - // multi - initContainer: function () { - - var selector = ".select2-choices", selection; - - this.searchContainer = this.container.find(".select2-search-field"); - this.selection = selection = this.container.find(selector); - - var _this = this; - this.selection.on("click", ".select2-search-choice:not(.select2-locked)", function (e) { - //killEvent(e); - _this.search[0].focus(); - _this.selectChoice($(this)); - }); - - // rewrite labels from original element to focusser - this.search.attr("id", "s2id_autogen"+nextUid()); - - this.search.prev() - .text($("label[for='" + this.opts.element.attr("id") + "']").text()) - .attr('for', this.search.attr('id')); - - this.search.on("input paste", this.bind(function() { - if (!this.isInterfaceEnabled()) return; - if (!this.opened()) { - this.open(); - } - })); - - this.search.attr("tabindex", this.elementTabIndex); - - this.keydowns = 0; - this.search.on("keydown", this.bind(function (e) { - if (!this.isInterfaceEnabled()) return; - - ++this.keydowns; - var selected = selection.find(".select2-search-choice-focus"); - var prev = selected.prev(".select2-search-choice:not(.select2-locked)"); - var next = selected.next(".select2-search-choice:not(.select2-locked)"); - var pos = getCursorInfo(this.search); - - if (selected.length && - (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) { - var selectedChoice = selected; - if (e.which == KEY.LEFT && prev.length) { - selectedChoice = prev; - } - else if (e.which == KEY.RIGHT) { - selectedChoice = next.length ? next : null; - } - else if (e.which === KEY.BACKSPACE) { - if (this.unselect(selected.first())) { - this.search.width(10); - selectedChoice = prev.length ? prev : next; - } - } else if (e.which == KEY.DELETE) { - if (this.unselect(selected.first())) { - this.search.width(10); - selectedChoice = next.length ? next : null; - } - } else if (e.which == KEY.ENTER) { - selectedChoice = null; - } - - this.selectChoice(selectedChoice); - killEvent(e); - if (!selectedChoice || !selectedChoice.length) { - this.open(); - } - return; - } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1) - || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) { - - this.selectChoice(selection.find(".select2-search-choice:not(.select2-locked)").last()); - killEvent(e); - return; - } else { - this.selectChoice(null); - } - - if (this.opened()) { - switch (e.which) { - case KEY.UP: - case KEY.DOWN: - this.moveHighlight((e.which === KEY.UP) ? -1 : 1); - killEvent(e); - return; - case KEY.ENTER: - this.selectHighlighted(); - killEvent(e); - return; - case KEY.TAB: - this.selectHighlighted({noFocus:true}); - this.close(); - return; - case KEY.ESC: - this.cancel(e); - killEvent(e); - return; - } - } - - if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) - || e.which === KEY.BACKSPACE || e.which === KEY.ESC) { - return; - } - - if (e.which === KEY.ENTER) { - if (this.opts.openOnEnter === false) { - return; - } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) { - return; - } - } - - this.open(); - - if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) { - // prevent the page from scrolling - killEvent(e); - } - - if (e.which === KEY.ENTER) { - // prevent form from being submitted - killEvent(e); - } - - })); - - this.search.on("keyup", this.bind(function (e) { - this.keydowns = 0; - this.resizeSearch(); - }) - ); - - this.search.on("blur", this.bind(function(e) { - this.container.removeClass("select2-container-active"); - this.search.removeClass("select2-focused"); - this.selectChoice(null); - if (!this.opened()) this.clearSearch(); - e.stopImmediatePropagation(); - this.opts.element.trigger($.Event("select2-blur")); - })); - - this.container.on("click", selector, this.bind(function (e) { - if (!this.isInterfaceEnabled()) return; - if ($(e.target).closest(".select2-search-choice").length > 0) { - // clicked inside a select2 search choice, do not open - return; - } - this.selectChoice(null); - this.clearPlaceholder(); - if (!this.container.hasClass("select2-container-active")) { - this.opts.element.trigger($.Event("select2-focus")); - } - this.open(); - this.focusSearch(); - e.preventDefault(); - })); - - this.container.on("focus", selector, this.bind(function () { - if (!this.isInterfaceEnabled()) return; - if (!this.container.hasClass("select2-container-active")) { - this.opts.element.trigger($.Event("select2-focus")); - } - this.container.addClass("select2-container-active"); - this.dropdown.addClass("select2-drop-active"); - this.clearPlaceholder(); - })); - - this.initContainerWidth(); - this.opts.element.addClass("select2-offscreen"); - - // set the placeholder if necessary - this.clearSearch(); - }, - - // multi - enableInterface: function() { - if (this.parent.enableInterface.apply(this, arguments)) { - this.search.prop("disabled", !this.isInterfaceEnabled()); - } - }, - - // multi - initSelection: function () { - var data; - if (this.opts.element.val() === "" && this.opts.element.text() === "") { - this.updateSelection([]); - this.close(); - // set the placeholder if necessary - this.clearSearch(); - } - if (this.select || this.opts.element.val() !== "") { - var self = this; - this.opts.initSelection.call(null, this.opts.element, function(data){ - if (data !== undefined && data !== null) { - self.updateSelection(data); - self.close(); - // set the placeholder if necessary - self.clearSearch(); - } - }); - } - }, - - // multi - clearSearch: function () { - var placeholder = this.getPlaceholder(), - maxWidth = this.getMaxSearchWidth(); - - if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass("select2-focused") === false) { - this.search.val(placeholder).addClass("select2-default"); - // stretch the search box to full width of the container so as much of the placeholder is visible as possible - // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944 - this.search.width(maxWidth > 0 ? maxWidth : this.container.css("width")); - } else { - this.search.val("").width(10); - } - }, - - // multi - clearPlaceholder: function () { - if (this.search.hasClass("select2-default")) { - this.search.val("").removeClass("select2-default"); - } - }, - - // multi - opening: function () { - this.clearPlaceholder(); // should be done before super so placeholder is not used to search - this.resizeSearch(); - - this.parent.opening.apply(this, arguments); - - this.focusSearch(); - - // initializes search's value with nextSearchTerm (if defined by user) - // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter - if(this.search.val() === "") { - if(this.nextSearchTerm != undefined){ - this.search.val(this.nextSearchTerm); - this.search.select(); - } - } - - this.updateResults(true); - this.search.focus(); - this.opts.element.trigger($.Event("select2-open")); - }, - - // multi - close: function () { - if (!this.opened()) return; - this.parent.close.apply(this, arguments); - }, - - // multi - focus: function () { - this.close(); - this.search.focus(); - }, - - // multi - isFocused: function () { - return this.search.hasClass("select2-focused"); - }, - - // multi - updateSelection: function (data) { - var ids = [], filtered = [], self = this; - - // filter out duplicates - $(data).each(function () { - if (indexOf(self.id(this), ids) < 0) { - ids.push(self.id(this)); - filtered.push(this); - } - }); - data = filtered; - - this.selection.find(".select2-search-choice").remove(); - $(data).each(function () { - self.addSelectedChoice(this); - }); - self.postprocessResults(); - }, - - // multi - tokenize: function() { - var input = this.search.val(); - input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts); - if (input != null && input != undefined) { - this.search.val(input); - if (input.length > 0) { - this.open(); - } - } - - }, - - // multi - onSelect: function (data, options) { - - if (!this.triggerSelect(data)) { return; } - - this.addSelectedChoice(data); - - this.opts.element.trigger({ type: "selected", val: this.id(data), choice: data }); - - // keep track of the search's value before it gets cleared - this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val()); - - this.clearSearch(); - this.updateResults(); - - if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true); - - if (this.opts.closeOnSelect) { - this.close(); - this.search.width(10); - } else { - if (this.countSelectableResults()>0) { - this.search.width(10); - this.resizeSearch(); - if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) { - // if we reached max selection size repaint the results so choices - // are replaced with the max selection reached message - this.updateResults(true); - } else { - // initializes search's value with nextSearchTerm and update search result - if(this.nextSearchTerm != undefined){ - this.search.val(this.nextSearchTerm); - this.updateResults(); - this.search.select(); - } - } - this.positionDropdown(); - } else { - // if nothing left to select close - this.close(); - this.search.width(10); - } - } - - // since its not possible to select an element that has already been - // added we do not need to check if this is a new element before firing change - this.triggerChange({ added: data }); - - if (!options || !options.noFocus) - this.focusSearch(); - }, - - // multi - cancel: function () { - this.close(); - this.focusSearch(); - }, - - addSelectedChoice: function (data) { - var enableChoice = !data.locked, - enabledItem = $( - "
  • " + - "
    " + - " " + - "
  • "), - disabledItem = $( - "
  • " + - "
    " + - "
  • "); - var choice = enableChoice ? enabledItem : disabledItem, - id = this.id(data), - val = this.getVal(), - formatted, - cssClass; - - formatted=this.opts.formatSelection(data, choice.find("div"), this.opts.escapeMarkup); - if (formatted != undefined) { - choice.find("div").replaceWith("
    "+formatted+"
    "); - } - cssClass=this.opts.formatSelectionCssClass(data, choice.find("div")); - if (cssClass != undefined) { - choice.addClass(cssClass); - } - - if(enableChoice){ - choice.find(".select2-search-choice-close") - .on("mousedown", killEvent) - .on("click dblclick", this.bind(function (e) { - if (!this.isInterfaceEnabled()) return; - - this.unselect($(e.target)); - this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"); - killEvent(e); - this.close(); - this.focusSearch(); - })).on("focus", this.bind(function () { - if (!this.isInterfaceEnabled()) return; - this.container.addClass("select2-container-active"); - this.dropdown.addClass("select2-drop-active"); - })); - } - - choice.data("select2-data", data); - choice.insertBefore(this.searchContainer); - - val.push(id); - this.setVal(val); - }, - - // multi - unselect: function (selected) { - var val = this.getVal(), - data, - index; - selected = selected.closest(".select2-search-choice"); - - if (selected.length === 0) { - throw "Invalid argument: " + selected + ". Must be .select2-search-choice"; - } - - data = selected.data("select2-data"); - - if (!data) { - // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued - // and invoked on an element already removed - return; - } - - var evt = $.Event("select2-removing"); - evt.val = this.id(data); - evt.choice = data; - this.opts.element.trigger(evt); - - if (evt.isDefaultPrevented()) { - return false; - } - - while((index = indexOf(this.id(data), val)) >= 0) { - val.splice(index, 1); - this.setVal(val); - if (this.select) this.postprocessResults(); - } - - selected.remove(); - - this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data }); - this.triggerChange({ removed: data }); - - return true; - }, - - // multi - postprocessResults: function (data, initial, noHighlightUpdate) { - var val = this.getVal(), - choices = this.results.find(".select2-result"), - compound = this.results.find(".select2-result-with-children"), - self = this; - - choices.each2(function (i, choice) { - var id = self.id(choice.data("select2-data")); - if (indexOf(id, val) >= 0) { - choice.addClass("select2-selected"); - // mark all children of the selected parent as selected - choice.find(".select2-result-selectable").addClass("select2-selected"); - } - }); - - compound.each2(function(i, choice) { - // hide an optgroup if it doesn't have any selectable children - if (!choice.is('.select2-result-selectable') - && choice.find(".select2-result-selectable:not(.select2-selected)").length === 0) { - choice.addClass("select2-selected"); - } - }); - - if (this.highlight() == -1 && noHighlightUpdate !== false){ - self.highlight(0); - } - - //If all results are chosen render formatNoMatches - if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){ - if(!data || data && !data.more && this.results.find(".select2-no-results").length === 0) { - if (checkFormatter(self.opts.formatNoMatches, "formatNoMatches")) { - this.results.append("
  • " + evaluate(self.opts.formatNoMatches, self.search.val()) + "
  • "); - } - } - } - - }, - - // multi - getMaxSearchWidth: function() { - return this.selection.width() - getSideBorderPadding(this.search); - }, - - // multi - resizeSearch: function () { - var minimumWidth, left, maxWidth, containerLeft, searchWidth, - sideBorderPadding = getSideBorderPadding(this.search); - - minimumWidth = measureTextWidth(this.search) + 10; - - left = this.search.offset().left; - - maxWidth = this.selection.width(); - containerLeft = this.selection.offset().left; - - searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding; - - if (searchWidth < minimumWidth) { - searchWidth = maxWidth - sideBorderPadding; - } - - if (searchWidth < 40) { - searchWidth = maxWidth - sideBorderPadding; - } - - if (searchWidth <= 0) { - searchWidth = minimumWidth; - } - - this.search.width(Math.floor(searchWidth)); - }, - - // multi - getVal: function () { - var val; - if (this.select) { - val = this.select.val(); - return val === null ? [] : val; - } else { - val = this.opts.element.val(); - return splitVal(val, this.opts.separator); - } - }, - - // multi - setVal: function (val) { - var unique; - if (this.select) { - this.select.val(val); - } else { - unique = []; - // filter out duplicates - $(val).each(function () { - if (indexOf(this, unique) < 0) unique.push(this); - }); - this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator)); - } - }, - - // multi - buildChangeDetails: function (old, current) { - var current = current.slice(0), - old = old.slice(0); - - // remove intersection from each array - for (var i = 0; i < current.length; i++) { - for (var j = 0; j < old.length; j++) { - if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) { - current.splice(i, 1); - if(i>0){ - i--; - } - old.splice(j, 1); - j--; - } - } - } - - return {added: current, removed: old}; - }, - - - // multi - val: function (val, triggerChange) { - var oldData, self=this; - - if (arguments.length === 0) { - return this.getVal(); - } - - oldData=this.data(); - if (!oldData.length) oldData=[]; - - // val is an id. !val is true for [undefined,null,'',0] - 0 is legal - if (!val && val !== 0) { - this.opts.element.val(""); - this.updateSelection([]); - this.clearSearch(); - if (triggerChange) { - this.triggerChange({added: this.data(), removed: oldData}); - } - return; - } - - // val is a list of ids - this.setVal(val); - - if (this.select) { - this.opts.initSelection(this.select, this.bind(this.updateSelection)); - if (triggerChange) { - this.triggerChange(this.buildChangeDetails(oldData, this.data())); - } - } else { - if (this.opts.initSelection === undefined) { - throw new Error("val() cannot be called if initSelection() is not defined"); - } - - this.opts.initSelection(this.opts.element, function(data){ - var ids=$.map(data, self.id); - self.setVal(ids); - self.updateSelection(data); - self.clearSearch(); - if (triggerChange) { - self.triggerChange(self.buildChangeDetails(oldData, self.data())); - } - }); - } - this.clearSearch(); - }, - - // multi - onSortStart: function() { - if (this.select) { - throw new Error("Sorting of elements is not supported when attached to instead."); - } - - // collapse search field into 0 width so its container can be collapsed as well - this.search.width(0); - // hide the container - this.searchContainer.hide(); - }, - - // multi - onSortEnd:function() { - - var val=[], self=this; - - // show search and move it to the end of the list - this.searchContainer.show(); - // make sure the search container is the last item in the list - this.searchContainer.appendTo(this.searchContainer.parent()); - // since we collapsed the width in dragStarted, we resize it here - this.resizeSearch(); - - // update selection - this.selection.find(".select2-search-choice").each(function() { - val.push(self.opts.id($(this).data("select2-data"))); - }); - this.setVal(val); - this.triggerChange(); - }, - - // multi - data: function(values, triggerChange) { - var self=this, ids, old; - if (arguments.length === 0) { - return this.selection - .children(".select2-search-choice") - .map(function() { return $(this).data("select2-data"); }) - .get(); - } else { - old = this.data(); - if (!values) { values = []; } - ids = $.map(values, function(e) { return self.opts.id(e); }); - this.setVal(ids); - this.updateSelection(values); - this.clearSearch(); - if (triggerChange) { - this.triggerChange(this.buildChangeDetails(old, this.data())); - } - } - } - }); - - $.fn.select2 = function () { - - var args = Array.prototype.slice.call(arguments, 0), - opts, - select2, - method, value, multiple, - allowedMethods = ["val", "destroy", "opened", "open", "close", "focus", "isFocused", "container", "dropdown", "onSortStart", "onSortEnd", "enable", "disable", "readonly", "positionDropdown", "data", "search"], - valueMethods = ["opened", "isFocused", "container", "dropdown"], - propertyMethods = ["val", "data"], - methodsMap = { search: "externalSearch" }; - - this.each(function () { - if (args.length === 0 || typeof(args[0]) === "object") { - opts = args.length === 0 ? {} : $.extend({}, args[0]); - opts.element = $(this); - - if (opts.element.get(0).tagName.toLowerCase() === "select") { - multiple = opts.element.prop("multiple"); - } else { - multiple = opts.multiple || false; - if ("tags" in opts) {opts.multiple = multiple = true;} - } - - select2 = multiple ? new window.Select2["class"].multi() : new window.Select2["class"].single(); - select2.init(opts); - } else if (typeof(args[0]) === "string") { - - if (indexOf(args[0], allowedMethods) < 0) { - throw "Unknown method: " + args[0]; - } - - value = undefined; - select2 = $(this).data("select2"); - if (select2 === undefined) return; - - method=args[0]; - - if (method === "container") { - value = select2.container; - } else if (method === "dropdown") { - value = select2.dropdown; - } else { - if (methodsMap[method]) method = methodsMap[method]; - - value = select2[method].apply(select2, args.slice(1)); - } - if (indexOf(args[0], valueMethods) >= 0 - || (indexOf(args[0], propertyMethods) && args.length == 1)) { - return false; // abort the iteration, ready to return first matched value - } - } else { - throw "Invalid arguments to select2 plugin: " + args; - } - }); - return (value === undefined) ? this : value; - }; - - // plugin defaults, accessible to users - $.fn.select2.defaults = { - width: "copy", - loadMorePadding: 0, - closeOnSelect: true, - openOnEnter: true, - containerCss: {}, - dropdownCss: {}, - containerCssClass: "", - dropdownCssClass: "", - formatResult: function(result, container, query, escapeMarkup) { - var markup=[]; - markMatch(result.text, query.term, markup, escapeMarkup); - return markup.join(""); - }, - formatSelection: function (data, container, escapeMarkup) { - return data ? escapeMarkup(data.text) : undefined; - }, - sortResults: function (results, container, query) { - return results; - }, - formatResultCssClass: function(data) {return data.css;}, - formatSelectionCssClass: function(data, container) {return undefined;}, - formatMatches: function (matches) { return matches + " results are available, use up and down arrow keys to navigate."; }, - formatNoMatches: function () { return "No matches found"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " or more character" + (n == 1? "" : "s"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1? "" : "s"); }, - formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Loading more results…"; }, - formatSearching: function () { return "Searching…"; }, - minimumResultsForSearch: 0, - minimumInputLength: 0, - maximumInputLength: null, - maximumSelectionSize: 0, - id: function (e) { return e == undefined ? null : e.id; }, - matcher: function(term, text) { - return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0; - }, - separator: ",", - tokenSeparators: [], - tokenizer: defaultTokenizer, - escapeMarkup: defaultEscapeMarkup, - blurOnChange: false, - selectOnBlur: false, - adaptContainerCssClass: function(c) { return c; }, - adaptDropdownCssClass: function(c) { return null; }, - nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; }, - searchInputPlaceholder: '', - createSearchChoicePosition: 'top', - shouldFocusInput: function (instance) { - // Never focus the input if search is disabled - if (instance.opts.minimumResultsForSearch < 0) { - return false; - } - - return true; - } - }; - - $.fn.select2.ajaxDefaults = { - transport: $.ajax, - params: { - type: "GET", - cache: false, - dataType: "json" - } - }; - - // exports - window.Select2 = { - query: { - ajax: ajax, - local: local, - tags: tags - }, util: { - debounce: debounce, - markMatch: markMatch, - escapeMarkup: defaultEscapeMarkup, - stripDiacritics: stripDiacritics - }, "class": { - "abstract": AbstractSelect2, - "single": SingleSelect2, - "multi": MultiSelect2 - } - }; - -}(jQuery)); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.min.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.min.js deleted file mode 100644 index 335c85e8..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.min.js +++ /dev/null @@ -1,22 +0,0 @@ -/* -Copyright 2014 Igor Vaynberg - -Version: 3.4.6 Timestamp: Sat Mar 22 22:30:15 EDT 2014 - -This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU -General Public License version 2 (the "GPL License"). You may choose either license to govern your -use of this software only upon the condition that you accept all of the terms of either the Apache -License or the GPL License. - -You may obtain a copy of the Apache License and the GPL License at: - -http://www.apache.org/licenses/LICENSE-2.0 -http://www.gnu.org/licenses/gpl-2.0.html - -Unless required by applicable law or agreed to in writing, software distributed under the Apache License -or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -either express or implied. See the Apache License and the GPL License for the specific language governing -permissions and limitations under the Apache License and the GPL License. -*/ -!function(a){"undefined"==typeof a.fn.each2&&a.extend(a.fn,{each2:function(b){for(var c=a([0]),d=-1,e=this.length;++dc;c++)e=a.charAt(c),b+=m[e]||e;return b}function p(a,b){for(var c=0,d=b.length;d>c;c+=1)if(r(a,b[c]))return c;return-1}function q(){var b=a(l);b.appendTo("body");var c={width:b.width()-b[0].clientWidth,height:b.height()-b[0].clientHeight};return b.remove(),c}function r(a,c){return a===c?!0:a===b||c===b?!1:null===a||null===c?!1:a.constructor===String?a+""==c+"":c.constructor===String?c+""==a+"":!1}function s(b,c){var d,e,f;if(null===b||b.length<1)return[];for(d=b.split(c),e=0,f=d.length;f>e;e+=1)d[e]=a.trim(d[e]);return d}function t(a){return a.outerWidth(!1)-a.width()}function u(c){var d="keyup-change-value";c.on("keydown",function(){a.data(c,d)===b&&a.data(c,d,c.val())}),c.on("keyup",function(){var e=a.data(c,d);e!==b&&c.val()!==e&&(a.removeData(c,d),c.trigger("keyup-change"))})}function v(c){c.on("mousemove",function(c){var d=i;(d===b||d.x!==c.pageX||d.y!==c.pageY)&&a(c.target).trigger("mousemove-filtered",c)})}function w(a,c,d){d=d||b;var e;return function(){var b=arguments;window.clearTimeout(e),e=window.setTimeout(function(){c.apply(d,b)},a)}}function x(a){var c,b=!1;return function(){return b===!1&&(c=a(),b=!0),c}}function y(a,b){var c=w(a,function(a){b.trigger("scroll-debounced",a)});b.on("scroll",function(a){p(a.target,b.get())>=0&&c(a)})}function z(a){a[0]!==document.activeElement&&window.setTimeout(function(){var d,b=a[0],c=a.val().length;a.focus();var e=b.offsetWidth>0||b.offsetHeight>0;e&&b===document.activeElement&&(b.setSelectionRange?b.setSelectionRange(c,c):b.createTextRange&&(d=b.createTextRange(),d.collapse(!1),d.select()))},0)}function A(b){b=a(b)[0];var c=0,d=0;if("selectionStart"in b)c=b.selectionStart,d=b.selectionEnd-c;else if("selection"in document){b.focus();var e=document.selection.createRange();d=document.selection.createRange().text.length,e.moveStart("character",-b.value.length),c=e.text.length-d}return{offset:c,length:d}}function B(a){a.preventDefault(),a.stopPropagation()}function C(a){a.preventDefault(),a.stopImmediatePropagation()}function D(b){if(!h){var c=b[0].currentStyle||window.getComputedStyle(b[0],null);h=a(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:c.fontSize,fontFamily:c.fontFamily,fontStyle:c.fontStyle,fontWeight:c.fontWeight,letterSpacing:c.letterSpacing,textTransform:c.textTransform,whiteSpace:"nowrap"}),h.attr("class","select2-sizer"),a("body").append(h)}return h.text(b.val()),h.width()}function E(b,c,d){var e,g,f=[];e=b.attr("class"),e&&(e=""+e,a(e.split(" ")).each2(function(){0===this.indexOf("select2-")&&f.push(this)})),e=c.attr("class"),e&&(e=""+e,a(e.split(" ")).each2(function(){0!==this.indexOf("select2-")&&(g=d(this),g&&f.push(g))})),b.attr("class",f.join(" "))}function F(a,b,c,d){var e=o(a.toUpperCase()).indexOf(o(b.toUpperCase())),f=b.length;return 0>e?(c.push(d(a)),void 0):(c.push(d(a.substring(0,e))),c.push(""),c.push(d(a.substring(e,e+f))),c.push(""),c.push(d(a.substring(e+f,a.length))),void 0)}function G(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})}function H(c){var d,e=null,f=c.quietMillis||100,g=c.url,h=this;return function(i){window.clearTimeout(d),d=window.setTimeout(function(){var d=c.data,f=g,j=c.transport||a.fn.select2.ajaxDefaults.transport,k={type:c.type||"GET",cache:c.cache||!1,jsonpCallback:c.jsonpCallback||b,dataType:c.dataType||"json"},l=a.extend({},a.fn.select2.ajaxDefaults.params,k);d=d?d.call(h,i.term,i.page,i.context):null,f="function"==typeof f?f.call(h,i.term,i.page,i.context):f,e&&"function"==typeof e.abort&&e.abort(),c.params&&(a.isFunction(c.params)?a.extend(l,c.params.call(h)):a.extend(l,c.params)),a.extend(l,{url:f,dataType:c.dataType,data:d,success:function(a){var b=c.results(a,i.page);i.callback(b)}}),e=j.call(h,l)},f)}}function I(b){var d,e,c=b,f=function(a){return""+a.text};a.isArray(c)&&(e=c,c={results:e}),a.isFunction(c)===!1&&(e=c,c=function(){return e});var g=c();return g.text&&(f=g.text,a.isFunction(f)||(d=g.text,f=function(a){return a[d]})),function(b){var g,d=b.term,e={results:[]};return""===d?(b.callback(c()),void 0):(g=function(c,e){var h,i;if(c=c[0],c.children){h={};for(i in c)c.hasOwnProperty(i)&&(h[i]=c[i]);h.children=[],a(c.children).each2(function(a,b){g(b,h.children)}),(h.children.length||b.matcher(d,f(h),c))&&e.push(h)}else b.matcher(d,f(c),c)&&e.push(c)},a(c().results).each2(function(a,b){g(b,e.results)}),b.callback(e),void 0)}}function J(c){var d=a.isFunction(c);return function(e){var f=e.term,g={results:[]};a(d?c():c).each(function(){var a=this.text!==b,c=a?this.text:this;(""===f||e.matcher(f,c))&&g.results.push(a?this:{id:this,text:this})}),e.callback(g)}}function K(b,c){if(a.isFunction(b))return!0;if(!b)return!1;if("string"==typeof b)return!0;throw new Error(c+" must be a string, function, or falsy value")}function L(b){if(a.isFunction(b)){var c=Array.prototype.slice.call(arguments,1);return b.apply(null,c)}return b}function M(b){var c=0;return a.each(b,function(a,b){b.children?c+=M(b.children):c++}),c}function N(a,c,d,e){var h,i,j,k,l,f=a,g=!1;if(!e.createSearchChoice||!e.tokenSeparators||e.tokenSeparators.length<1)return b;for(;;){for(i=-1,j=0,k=e.tokenSeparators.length;k>j&&(l=e.tokenSeparators[j],i=a.indexOf(l),!(i>=0));j++);if(0>i)break;if(h=a.substring(0,i),a=a.substring(i+l.length),h.length>0&&(h=e.createSearchChoice.call(this,h,c),h!==b&&null!==h&&e.id(h)!==b&&null!==e.id(h))){for(g=!1,j=0,k=c.length;k>j;j++)if(r(e.id(h),e.id(c[j]))){g=!0;break}g||d(h)}}return f!==a?a:void 0}function O(b,c){var d=function(){};return d.prototype=new b,d.prototype.constructor=d,d.prototype.parent=b.prototype,d.prototype=a.extend(d.prototype,c),d}if(window.Select2===b){var c,d,e,f,g,h,j,k,i={x:0,y:0},c={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,isArrow:function(a){switch(a=a.which?a.which:a){case c.LEFT:case c.RIGHT:case c.UP:case c.DOWN:return!0}return!1},isControl:function(a){var b=a.which;switch(b){case c.SHIFT:case c.CTRL:case c.ALT:return!0}return a.metaKey?!0:!1},isFunctionKey:function(a){return a=a.which?a.which:a,a>=112&&123>=a}},l="
    ",m={"\u24b6":"A","\uff21":"A","\xc0":"A","\xc1":"A","\xc2":"A","\u1ea6":"A","\u1ea4":"A","\u1eaa":"A","\u1ea8":"A","\xc3":"A","\u0100":"A","\u0102":"A","\u1eb0":"A","\u1eae":"A","\u1eb4":"A","\u1eb2":"A","\u0226":"A","\u01e0":"A","\xc4":"A","\u01de":"A","\u1ea2":"A","\xc5":"A","\u01fa":"A","\u01cd":"A","\u0200":"A","\u0202":"A","\u1ea0":"A","\u1eac":"A","\u1eb6":"A","\u1e00":"A","\u0104":"A","\u023a":"A","\u2c6f":"A","\ua732":"AA","\xc6":"AE","\u01fc":"AE","\u01e2":"AE","\ua734":"AO","\ua736":"AU","\ua738":"AV","\ua73a":"AV","\ua73c":"AY","\u24b7":"B","\uff22":"B","\u1e02":"B","\u1e04":"B","\u1e06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24b8":"C","\uff23":"C","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\xc7":"C","\u1e08":"C","\u0187":"C","\u023b":"C","\ua73e":"C","\u24b9":"D","\uff24":"D","\u1e0a":"D","\u010e":"D","\u1e0c":"D","\u1e10":"D","\u1e12":"D","\u1e0e":"D","\u0110":"D","\u018b":"D","\u018a":"D","\u0189":"D","\ua779":"D","\u01f1":"DZ","\u01c4":"DZ","\u01f2":"Dz","\u01c5":"Dz","\u24ba":"E","\uff25":"E","\xc8":"E","\xc9":"E","\xca":"E","\u1ec0":"E","\u1ebe":"E","\u1ec4":"E","\u1ec2":"E","\u1ebc":"E","\u0112":"E","\u1e14":"E","\u1e16":"E","\u0114":"E","\u0116":"E","\xcb":"E","\u1eba":"E","\u011a":"E","\u0204":"E","\u0206":"E","\u1eb8":"E","\u1ec6":"E","\u0228":"E","\u1e1c":"E","\u0118":"E","\u1e18":"E","\u1e1a":"E","\u0190":"E","\u018e":"E","\u24bb":"F","\uff26":"F","\u1e1e":"F","\u0191":"F","\ua77b":"F","\u24bc":"G","\uff27":"G","\u01f4":"G","\u011c":"G","\u1e20":"G","\u011e":"G","\u0120":"G","\u01e6":"G","\u0122":"G","\u01e4":"G","\u0193":"G","\ua7a0":"G","\ua77d":"G","\ua77e":"G","\u24bd":"H","\uff28":"H","\u0124":"H","\u1e22":"H","\u1e26":"H","\u021e":"H","\u1e24":"H","\u1e28":"H","\u1e2a":"H","\u0126":"H","\u2c67":"H","\u2c75":"H","\ua78d":"H","\u24be":"I","\uff29":"I","\xcc":"I","\xcd":"I","\xce":"I","\u0128":"I","\u012a":"I","\u012c":"I","\u0130":"I","\xcf":"I","\u1e2e":"I","\u1ec8":"I","\u01cf":"I","\u0208":"I","\u020a":"I","\u1eca":"I","\u012e":"I","\u1e2c":"I","\u0197":"I","\u24bf":"J","\uff2a":"J","\u0134":"J","\u0248":"J","\u24c0":"K","\uff2b":"K","\u1e30":"K","\u01e8":"K","\u1e32":"K","\u0136":"K","\u1e34":"K","\u0198":"K","\u2c69":"K","\ua740":"K","\ua742":"K","\ua744":"K","\ua7a2":"K","\u24c1":"L","\uff2c":"L","\u013f":"L","\u0139":"L","\u013d":"L","\u1e36":"L","\u1e38":"L","\u013b":"L","\u1e3c":"L","\u1e3a":"L","\u0141":"L","\u023d":"L","\u2c62":"L","\u2c60":"L","\ua748":"L","\ua746":"L","\ua780":"L","\u01c7":"LJ","\u01c8":"Lj","\u24c2":"M","\uff2d":"M","\u1e3e":"M","\u1e40":"M","\u1e42":"M","\u2c6e":"M","\u019c":"M","\u24c3":"N","\uff2e":"N","\u01f8":"N","\u0143":"N","\xd1":"N","\u1e44":"N","\u0147":"N","\u1e46":"N","\u0145":"N","\u1e4a":"N","\u1e48":"N","\u0220":"N","\u019d":"N","\ua790":"N","\ua7a4":"N","\u01ca":"NJ","\u01cb":"Nj","\u24c4":"O","\uff2f":"O","\xd2":"O","\xd3":"O","\xd4":"O","\u1ed2":"O","\u1ed0":"O","\u1ed6":"O","\u1ed4":"O","\xd5":"O","\u1e4c":"O","\u022c":"O","\u1e4e":"O","\u014c":"O","\u1e50":"O","\u1e52":"O","\u014e":"O","\u022e":"O","\u0230":"O","\xd6":"O","\u022a":"O","\u1ece":"O","\u0150":"O","\u01d1":"O","\u020c":"O","\u020e":"O","\u01a0":"O","\u1edc":"O","\u1eda":"O","\u1ee0":"O","\u1ede":"O","\u1ee2":"O","\u1ecc":"O","\u1ed8":"O","\u01ea":"O","\u01ec":"O","\xd8":"O","\u01fe":"O","\u0186":"O","\u019f":"O","\ua74a":"O","\ua74c":"O","\u01a2":"OI","\ua74e":"OO","\u0222":"OU","\u24c5":"P","\uff30":"P","\u1e54":"P","\u1e56":"P","\u01a4":"P","\u2c63":"P","\ua750":"P","\ua752":"P","\ua754":"P","\u24c6":"Q","\uff31":"Q","\ua756":"Q","\ua758":"Q","\u024a":"Q","\u24c7":"R","\uff32":"R","\u0154":"R","\u1e58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1e5a":"R","\u1e5c":"R","\u0156":"R","\u1e5e":"R","\u024c":"R","\u2c64":"R","\ua75a":"R","\ua7a6":"R","\ua782":"R","\u24c8":"S","\uff33":"S","\u1e9e":"S","\u015a":"S","\u1e64":"S","\u015c":"S","\u1e60":"S","\u0160":"S","\u1e66":"S","\u1e62":"S","\u1e68":"S","\u0218":"S","\u015e":"S","\u2c7e":"S","\ua7a8":"S","\ua784":"S","\u24c9":"T","\uff34":"T","\u1e6a":"T","\u0164":"T","\u1e6c":"T","\u021a":"T","\u0162":"T","\u1e70":"T","\u1e6e":"T","\u0166":"T","\u01ac":"T","\u01ae":"T","\u023e":"T","\ua786":"T","\ua728":"TZ","\u24ca":"U","\uff35":"U","\xd9":"U","\xda":"U","\xdb":"U","\u0168":"U","\u1e78":"U","\u016a":"U","\u1e7a":"U","\u016c":"U","\xdc":"U","\u01db":"U","\u01d7":"U","\u01d5":"U","\u01d9":"U","\u1ee6":"U","\u016e":"U","\u0170":"U","\u01d3":"U","\u0214":"U","\u0216":"U","\u01af":"U","\u1eea":"U","\u1ee8":"U","\u1eee":"U","\u1eec":"U","\u1ef0":"U","\u1ee4":"U","\u1e72":"U","\u0172":"U","\u1e76":"U","\u1e74":"U","\u0244":"U","\u24cb":"V","\uff36":"V","\u1e7c":"V","\u1e7e":"V","\u01b2":"V","\ua75e":"V","\u0245":"V","\ua760":"VY","\u24cc":"W","\uff37":"W","\u1e80":"W","\u1e82":"W","\u0174":"W","\u1e86":"W","\u1e84":"W","\u1e88":"W","\u2c72":"W","\u24cd":"X","\uff38":"X","\u1e8a":"X","\u1e8c":"X","\u24ce":"Y","\uff39":"Y","\u1ef2":"Y","\xdd":"Y","\u0176":"Y","\u1ef8":"Y","\u0232":"Y","\u1e8e":"Y","\u0178":"Y","\u1ef6":"Y","\u1ef4":"Y","\u01b3":"Y","\u024e":"Y","\u1efe":"Y","\u24cf":"Z","\uff3a":"Z","\u0179":"Z","\u1e90":"Z","\u017b":"Z","\u017d":"Z","\u1e92":"Z","\u1e94":"Z","\u01b5":"Z","\u0224":"Z","\u2c7f":"Z","\u2c6b":"Z","\ua762":"Z","\u24d0":"a","\uff41":"a","\u1e9a":"a","\xe0":"a","\xe1":"a","\xe2":"a","\u1ea7":"a","\u1ea5":"a","\u1eab":"a","\u1ea9":"a","\xe3":"a","\u0101":"a","\u0103":"a","\u1eb1":"a","\u1eaf":"a","\u1eb5":"a","\u1eb3":"a","\u0227":"a","\u01e1":"a","\xe4":"a","\u01df":"a","\u1ea3":"a","\xe5":"a","\u01fb":"a","\u01ce":"a","\u0201":"a","\u0203":"a","\u1ea1":"a","\u1ead":"a","\u1eb7":"a","\u1e01":"a","\u0105":"a","\u2c65":"a","\u0250":"a","\ua733":"aa","\xe6":"ae","\u01fd":"ae","\u01e3":"ae","\ua735":"ao","\ua737":"au","\ua739":"av","\ua73b":"av","\ua73d":"ay","\u24d1":"b","\uff42":"b","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24d2":"c","\uff43":"c","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\xe7":"c","\u1e09":"c","\u0188":"c","\u023c":"c","\ua73f":"c","\u2184":"c","\u24d3":"d","\uff44":"d","\u1e0b":"d","\u010f":"d","\u1e0d":"d","\u1e11":"d","\u1e13":"d","\u1e0f":"d","\u0111":"d","\u018c":"d","\u0256":"d","\u0257":"d","\ua77a":"d","\u01f3":"dz","\u01c6":"dz","\u24d4":"e","\uff45":"e","\xe8":"e","\xe9":"e","\xea":"e","\u1ec1":"e","\u1ebf":"e","\u1ec5":"e","\u1ec3":"e","\u1ebd":"e","\u0113":"e","\u1e15":"e","\u1e17":"e","\u0115":"e","\u0117":"e","\xeb":"e","\u1ebb":"e","\u011b":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u1e19":"e","\u1e1b":"e","\u0247":"e","\u025b":"e","\u01dd":"e","\u24d5":"f","\uff46":"f","\u1e1f":"f","\u0192":"f","\ua77c":"f","\u24d6":"g","\uff47":"g","\u01f5":"g","\u011d":"g","\u1e21":"g","\u011f":"g","\u0121":"g","\u01e7":"g","\u0123":"g","\u01e5":"g","\u0260":"g","\ua7a1":"g","\u1d79":"g","\ua77f":"g","\u24d7":"h","\uff48":"h","\u0125":"h","\u1e23":"h","\u1e27":"h","\u021f":"h","\u1e25":"h","\u1e29":"h","\u1e2b":"h","\u1e96":"h","\u0127":"h","\u2c68":"h","\u2c76":"h","\u0265":"h","\u0195":"hv","\u24d8":"i","\uff49":"i","\xec":"i","\xed":"i","\xee":"i","\u0129":"i","\u012b":"i","\u012d":"i","\xef":"i","\u1e2f":"i","\u1ec9":"i","\u01d0":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u012f":"i","\u1e2d":"i","\u0268":"i","\u0131":"i","\u24d9":"j","\uff4a":"j","\u0135":"j","\u01f0":"j","\u0249":"j","\u24da":"k","\uff4b":"k","\u1e31":"k","\u01e9":"k","\u1e33":"k","\u0137":"k","\u1e35":"k","\u0199":"k","\u2c6a":"k","\ua741":"k","\ua743":"k","\ua745":"k","\ua7a3":"k","\u24db":"l","\uff4c":"l","\u0140":"l","\u013a":"l","\u013e":"l","\u1e37":"l","\u1e39":"l","\u013c":"l","\u1e3d":"l","\u1e3b":"l","\u017f":"l","\u0142":"l","\u019a":"l","\u026b":"l","\u2c61":"l","\ua749":"l","\ua781":"l","\ua747":"l","\u01c9":"lj","\u24dc":"m","\uff4d":"m","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0271":"m","\u026f":"m","\u24dd":"n","\uff4e":"n","\u01f9":"n","\u0144":"n","\xf1":"n","\u1e45":"n","\u0148":"n","\u1e47":"n","\u0146":"n","\u1e4b":"n","\u1e49":"n","\u019e":"n","\u0272":"n","\u0149":"n","\ua791":"n","\ua7a5":"n","\u01cc":"nj","\u24de":"o","\uff4f":"o","\xf2":"o","\xf3":"o","\xf4":"o","\u1ed3":"o","\u1ed1":"o","\u1ed7":"o","\u1ed5":"o","\xf5":"o","\u1e4d":"o","\u022d":"o","\u1e4f":"o","\u014d":"o","\u1e51":"o","\u1e53":"o","\u014f":"o","\u022f":"o","\u0231":"o","\xf6":"o","\u022b":"o","\u1ecf":"o","\u0151":"o","\u01d2":"o","\u020d":"o","\u020f":"o","\u01a1":"o","\u1edd":"o","\u1edb":"o","\u1ee1":"o","\u1edf":"o","\u1ee3":"o","\u1ecd":"o","\u1ed9":"o","\u01eb":"o","\u01ed":"o","\xf8":"o","\u01ff":"o","\u0254":"o","\ua74b":"o","\ua74d":"o","\u0275":"o","\u01a3":"oi","\u0223":"ou","\ua74f":"oo","\u24df":"p","\uff50":"p","\u1e55":"p","\u1e57":"p","\u01a5":"p","\u1d7d":"p","\ua751":"p","\ua753":"p","\ua755":"p","\u24e0":"q","\uff51":"q","\u024b":"q","\ua757":"q","\ua759":"q","\u24e1":"r","\uff52":"r","\u0155":"r","\u1e59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1e5b":"r","\u1e5d":"r","\u0157":"r","\u1e5f":"r","\u024d":"r","\u027d":"r","\ua75b":"r","\ua7a7":"r","\ua783":"r","\u24e2":"s","\uff53":"s","\xdf":"s","\u015b":"s","\u1e65":"s","\u015d":"s","\u1e61":"s","\u0161":"s","\u1e67":"s","\u1e63":"s","\u1e69":"s","\u0219":"s","\u015f":"s","\u023f":"s","\ua7a9":"s","\ua785":"s","\u1e9b":"s","\u24e3":"t","\uff54":"t","\u1e6b":"t","\u1e97":"t","\u0165":"t","\u1e6d":"t","\u021b":"t","\u0163":"t","\u1e71":"t","\u1e6f":"t","\u0167":"t","\u01ad":"t","\u0288":"t","\u2c66":"t","\ua787":"t","\ua729":"tz","\u24e4":"u","\uff55":"u","\xf9":"u","\xfa":"u","\xfb":"u","\u0169":"u","\u1e79":"u","\u016b":"u","\u1e7b":"u","\u016d":"u","\xfc":"u","\u01dc":"u","\u01d8":"u","\u01d6":"u","\u01da":"u","\u1ee7":"u","\u016f":"u","\u0171":"u","\u01d4":"u","\u0215":"u","\u0217":"u","\u01b0":"u","\u1eeb":"u","\u1ee9":"u","\u1eef":"u","\u1eed":"u","\u1ef1":"u","\u1ee5":"u","\u1e73":"u","\u0173":"u","\u1e77":"u","\u1e75":"u","\u0289":"u","\u24e5":"v","\uff56":"v","\u1e7d":"v","\u1e7f":"v","\u028b":"v","\ua75f":"v","\u028c":"v","\ua761":"vy","\u24e6":"w","\uff57":"w","\u1e81":"w","\u1e83":"w","\u0175":"w","\u1e87":"w","\u1e85":"w","\u1e98":"w","\u1e89":"w","\u2c73":"w","\u24e7":"x","\uff58":"x","\u1e8b":"x","\u1e8d":"x","\u24e8":"y","\uff59":"y","\u1ef3":"y","\xfd":"y","\u0177":"y","\u1ef9":"y","\u0233":"y","\u1e8f":"y","\xff":"y","\u1ef7":"y","\u1e99":"y","\u1ef5":"y","\u01b4":"y","\u024f":"y","\u1eff":"y","\u24e9":"z","\uff5a":"z","\u017a":"z","\u1e91":"z","\u017c":"z","\u017e":"z","\u1e93":"z","\u1e95":"z","\u01b6":"z","\u0225":"z","\u0240":"z","\u2c6c":"z","\ua763":"z"};j=a(document),g=function(){var a=1;return function(){return a++}}(),j.on("mousemove",function(a){i.x=a.pageX,i.y=a.pageY}),d=O(Object,{bind:function(a){var b=this;return function(){a.apply(b,arguments)}},init:function(c){var d,e,f=".select2-results";this.opts=c=this.prepareOpts(c),this.id=c.id,c.element.data("select2")!==b&&null!==c.element.data("select2")&&c.element.data("select2").destroy(),this.container=this.createContainer(),this.liveRegion=a("",{role:"status","aria-live":"polite"}).addClass("select2-hidden-accessible").appendTo(document.body),this.containerId="s2id_"+(c.element.attr("id")||"autogen"+g()).replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.containerSelector="#"+this.containerId,this.container.attr("id",this.containerId),this.body=x(function(){return c.element.closest("body")}),E(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",c.element.attr("style")),this.container.css(L(c.containerCss)),this.container.addClass(L(c.containerCssClass)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",B),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),E(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(L(c.dropdownCssClass)),this.dropdown.data("select2",this),this.dropdown.on("click",B),this.results=d=this.container.find(f),this.search=e=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",B),v(this.results),this.dropdown.on("mousemove-filtered touchstart touchmove touchend",f,this.bind(this.highlightUnderEvent)),this.dropdown.on("touchend",f,this.bind(this.selectHighlighted)),this.dropdown.on("touchmove",f,this.bind(this.touchMoved)),this.dropdown.on("touchstart touchend",f,this.bind(this.clearTouchMoved)),y(80,this.results),this.dropdown.on("scroll-debounced",f,this.bind(this.loadMoreIfNeeded)),a(this.container).on("change",".select2-input",function(a){a.stopPropagation()}),a(this.dropdown).on("change",".select2-input",function(a){a.stopPropagation()}),a.fn.mousewheel&&d.mousewheel(function(a,b,c,e){var f=d.scrollTop();e>0&&0>=f-e?(d.scrollTop(0),B(a)):0>e&&d.get(0).scrollHeight-d.scrollTop()+e<=d.height()&&(d.scrollTop(d.get(0).scrollHeight-d.height()),B(a))}),u(e),e.on("keyup-change input paste",this.bind(this.updateResults)),e.on("focus",function(){e.addClass("select2-focused")}),e.on("blur",function(){e.removeClass("select2-focused")}),this.dropdown.on("mouseup",f,this.bind(function(b){a(b.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(b),this.selectHighlighted(b))})),this.dropdown.on("click mouseup mousedown focusin",function(a){a.stopPropagation()}),this.nextSearchTerm=b,a.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==c.maximumInputLength&&this.search.attr("maxlength",c.maximumInputLength);var h=c.element.prop("disabled");h===b&&(h=!1),this.enable(!h);var i=c.element.prop("readonly");i===b&&(i=!1),this.readonly(i),k=k||q(),this.autofocus=c.element.prop("autofocus"),c.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.search.attr("placeholder",c.searchInputPlaceholder)},destroy:function(){var a=this.opts.element,c=a.data("select2");this.close(),this.propertyObserver&&(delete this.propertyObserver,this.propertyObserver=null),c!==b&&(c.container.remove(),c.liveRegion.remove(),c.dropdown.remove(),a.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?a.attr({tabindex:this.elementTabIndex}):a.removeAttr("tabindex"),a.show())},optionToData:function(a){return a.is("option")?{id:a.prop("value"),text:a.text(),element:a.get(),css:a.attr("class"),disabled:a.prop("disabled"),locked:r(a.attr("locked"),"locked")||r(a.data("locked"),!0)}:a.is("optgroup")?{text:a.attr("label"),children:[],element:a.get(),css:a.attr("class")}:void 0},prepareOpts:function(c){var d,e,f,h,i=this;if(d=c.element,"select"===d.get(0).tagName.toLowerCase()&&(this.select=e=c.element),e&&a.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in c)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a ","
    "," ","
      ","
    ","
    "].join(""));return b},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var c,d,e;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),this.showSearchInput!==!1&&this.search.val(this.focusser.val()),this.search.focus(),c=this.search.get(0),c.createTextRange?(d=c.createTextRange(),d.collapse(!1),d.select()):c.setSelectionRange&&(e=this.search.val().length,c.setSelectionRange(e,e)),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&(this.parent.close.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus()},destroy:function(){a("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments)},initContainer:function(){var b,h,d=this.container,e=this.dropdown,f=g();this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0),this.selection=b=d.find(".select2-choice"),this.focusser=d.find(".select2-focusser"),b.find(".select2-chosen").attr("id","select2-chosen-"+f),this.focusser.attr("aria-labelledby","select2-chosen-"+f),this.results.attr("id","select2-results-"+f),this.search.attr("aria-owns","select2-results-"+f),this.focusser.attr("id","s2id_autogen"+f),h=a("label[for='"+this.opts.element.attr("id")+"']"),this.focusser.prev().text(h.text()).attr("for",this.focusser.attr("id"));var i=this.opts.element.attr("title");this.opts.element.attr("title",i||h.text()),this.focusser.attr("tabindex",this.elementTabIndex),this.search.attr("id",this.focusser.attr("id")+"_search"),this.search.prev().text(a("label[for='"+this.focusser.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()){if(a.which===c.PAGE_UP||a.which===c.PAGE_DOWN)return B(a),void 0;switch(a.which){case c.UP:case c.DOWN:return this.moveHighlight(a.which===c.UP?-1:1),B(a),void 0;case c.ENTER:return this.selectHighlighted(),B(a),void 0;case c.TAB:return this.selectHighlighted({noFocus:!0}),void 0;case c.ESC:return this.cancel(a),B(a),void 0}}})),this.search.on("blur",this.bind(function(){document.activeElement===this.body().get(0)&&window.setTimeout(this.bind(function(){this.opened()&&this.search.focus()}),0)})),this.focusser.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&a.which!==c.TAB&&!c.isControl(a)&&!c.isFunctionKey(a)&&a.which!==c.ESC){if(this.opts.openOnEnter===!1&&a.which===c.ENTER)return B(a),void 0;if(a.which==c.DOWN||a.which==c.UP||a.which==c.ENTER&&this.opts.openOnEnter){if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return;return this.open(),B(a),void 0}return a.which==c.DELETE||a.which==c.BACKSPACE?(this.opts.allowClear&&this.clear(),B(a),void 0):void 0}})),u(this.focusser),this.focusser.on("keyup-change input",this.bind(function(a){if(this.opts.minimumResultsForSearch>=0){if(a.stopPropagation(),this.opened())return;this.open()}})),b.on("mousedown touchstart","abbr",this.bind(function(a){this.isInterfaceEnabled()&&(this.clear(),C(a),this.close(),this.selection.focus())})),b.on("mousedown touchstart",this.bind(function(c){n(b),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),B(c)})),e.on("mousedown touchstart",this.bind(function(){this.search.focus()})),b.on("focus",this.bind(function(a){B(a)})),this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(a.Event("select2-blur")))})),this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.setPlaceholder()},clear:function(b){var c=this.selection.data("select2-data");if(c){var d=a.Event("select2-clearing");if(this.opts.element.trigger(d),d.isDefaultPrevented())return;var e=this.getPlaceholderOption();this.opts.element.val(e?e.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),b!==!1&&(this.opts.element.trigger({type:"select2-removed",val:this.id(c),choice:c}),this.triggerChange({removed:c}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.setPlaceholder(),c.nextSearchTerm=c.opts.nextSearchTerm(a,c.search.val()))})}},isPlaceholderOptionSelected:function(){var a;return this.getPlaceholder()?(a=this.getPlaceholderOption())!==b&&a.prop("selected")||""===this.opts.element.val()||this.opts.element.val()===b||null===this.opts.element.val():!1},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=a.find("option").filter(function(){return this.selected&&!this.disabled});b(c.optionToData(d))}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=c.val(),f=null;b.query({matcher:function(a,c,d){var g=r(e,b.id(d));return g&&(f=d),g},callback:a.isFunction(d)?function(){d(f)}:a.noop})}),b},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===b?b:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var a=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&a!==b){if(this.select&&this.getPlaceholderOption()===b)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(a)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(a,b,c){var d=0,e=this;if(this.findHighlightableChoices().each2(function(a,b){return r(e.id(b.data("select2-data")),e.opts.element.val())?(d=a,!1):void 0}),c!==!1&&(b===!0&&d>=0?this.highlight(d):this.highlight(0)),b===!0){var g=this.opts.minimumResultsForSearch;g>=0&&this.showSearch(M(a.results)>=g)}},showSearch:function(b){this.showSearchInput!==b&&(this.showSearchInput=b,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!b),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!b),a(this.dropdown,this.container).toggleClass("select2-with-searchbox",b))},onSelect:function(a,b){if(this.triggerSelect(a)){var c=this.opts.element.val(),d=this.data();this.opts.element.val(this.id(a)),this.updateSelection(a),this.opts.element.trigger({type:"select2-selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.close(),b&&b.noFocus||!this.opts.shouldFocusInput(this)||this.focusser.focus(),r(c,this.id(a))||this.triggerChange({added:a,removed:d})}},updateSelection:function(a){var d,e,c=this.selection.find(".select2-chosen");this.selection.data("select2-data",a),c.empty(),null!==a&&(d=this.opts.formatSelection(a,c,this.opts.escapeMarkup)),d!==b&&c.append(d),e=this.opts.formatSelectionCssClass(a,c),e!==b&&c.addClass(e),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==b&&this.container.addClass("select2-allowclear")},val:function(){var a,c=!1,d=null,e=this,f=this.data();if(0===arguments.length)return this.opts.element.val();if(a=arguments[0],arguments.length>1&&(c=arguments[1]),this.select)this.select.val(a).find("option").filter(function(){return this.selected}).each2(function(a,b){return d=e.optionToData(b),!1}),this.updateSelection(d),this.setPlaceholder(),c&&this.triggerChange({added:d,removed:f});else{if(!a&&0!==a)return this.clear(c),void 0;if(this.opts.initSelection===b)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(a),this.opts.initSelection(this.opts.element,function(a){e.opts.element.val(a?e.id(a):""),e.updateSelection(a),e.setPlaceholder(),c&&e.triggerChange({added:a,removed:f})})}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(a){var c,d=!1;return 0===arguments.length?(c=this.selection.data("select2-data"),c==b&&(c=null),c):(arguments.length>1&&(d=arguments[1]),a?(c=this.data(),this.opts.element.val(a?this.id(a):""),this.updateSelection(a),d&&this.triggerChange({added:a,removed:c})):this.clear(d),void 0)}}),f=O(d,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container select2-container-multi"}).html(["
      ","
    • "," "," ","
    • ","
    ","
    ","
      ","
    ","
    "].join(""));return b},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=[];a.find("option").filter(function(){return this.selected&&!this.disabled}).each2(function(a,b){d.push(c.optionToData(b))}),b(d)}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=s(c.val(),b.separator),f=[];b.query({matcher:function(c,d,g){var h=a.grep(e,function(a){return r(a,b.id(g))}).length;return h&&f.push(g),h},callback:a.isFunction(d)?function(){for(var a=[],c=0;c0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.open(),this.focusSearch(),b.preventDefault()))})),this.container.on("focus",b,this.bind(function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.clearSearch())})}},clearSearch:function(){var a=this.getPlaceholder(),c=this.getMaxSearchWidth();a!==b&&0===this.getVal().length&&this.search.hasClass("select2-focused")===!1?(this.search.val(a).addClass("select2-default"),this.search.width(c>0?c:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.updateResults(!0),this.search.focus(),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(b){var c=[],d=[],e=this;a(b).each(function(){p(e.id(this),c)<0&&(c.push(e.id(this)),d.push(this))}),b=d,this.selection.find(".select2-search-choice").remove(),a(b).each(function(){e.addSelectedChoice(this)}),e.postprocessResults()},tokenize:function(){var a=this.search.val();a=this.opts.tokenizer.call(this,a,this.data(),this.bind(this.onSelect),this.opts),null!=a&&a!=b&&(this.search.val(a),a.length>0&&this.open())},onSelect:function(a,c){this.triggerSelect(a)&&(this.addSelectedChoice(a),this.opts.element.trigger({type:"selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.clearSearch(),this.updateResults(),(this.select||!this.opts.closeOnSelect)&&this.postprocessResults(a,!1,this.opts.closeOnSelect===!0),this.opts.closeOnSelect?(this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()?this.updateResults(!0):this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.updateResults(),this.search.select()),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:a}),c&&c.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(c){var j,k,d=!c.locked,e=a("
  • "),f=a("
  • "),g=d?e:f,h=this.id(c),i=this.getVal();j=this.opts.formatSelection(c,g.find("div"),this.opts.escapeMarkup),j!=b&&g.find("div").replaceWith("
    "+j+"
    "),k=this.opts.formatSelectionCssClass(c,g.find("div")),k!=b&&g.addClass(k),d&&g.find(".select2-search-choice-close").on("mousedown",B).on("click dblclick",this.bind(function(b){this.isInterfaceEnabled()&&(this.unselect(a(b.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),B(b),this.close(),this.focusSearch())})).on("focus",this.bind(function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))})),g.data("select2-data",c),g.insertBefore(this.searchContainer),i.push(h),this.setVal(i)},unselect:function(b){var d,e,c=this.getVal();if(b=b.closest(".select2-search-choice"),0===b.length)throw"Invalid argument: "+b+". Must be .select2-search-choice";if(d=b.data("select2-data")){var f=a.Event("select2-removing");if(f.val=this.id(d),f.choice=d,this.opts.element.trigger(f),f.isDefaultPrevented())return!1;for(;(e=p(this.id(d),c))>=0;)c.splice(e,1),this.setVal(c),this.select&&this.postprocessResults();return b.remove(),this.opts.element.trigger({type:"select2-removed",val:this.id(d),choice:d}),this.triggerChange({removed:d}),!0}},postprocessResults:function(a,b,c){var d=this.getVal(),e=this.results.find(".select2-result"),f=this.results.find(".select2-result-with-children"),g=this;e.each2(function(a,b){var c=g.id(b.data("select2-data"));p(c,d)>=0&&(b.addClass("select2-selected"),b.find(".select2-result-selectable").addClass("select2-selected"))}),f.each2(function(a,b){b.is(".select2-result-selectable")||0!==b.find(".select2-result-selectable:not(.select2-selected)").length||b.addClass("select2-selected")}),-1==this.highlight()&&c!==!1&&g.highlight(0),!this.opts.createSearchChoice&&!e.filter(".select2-result:not(.select2-selected)").length>0&&(!a||a&&!a.more&&0===this.results.find(".select2-no-results").length)&&K(g.opts.formatNoMatches,"formatNoMatches")&&this.results.append("
  • "+L(g.opts.formatNoMatches,g.search.val())+"
  • ")},getMaxSearchWidth:function(){return this.selection.width()-t(this.search)},resizeSearch:function(){var a,b,c,d,e,f=t(this.search);a=D(this.search)+10,b=this.search.offset().left,c=this.selection.width(),d=this.selection.offset().left,e=c-(b-d)-f,a>e&&(e=c-f),40>e&&(e=c-f),0>=e&&(e=a),this.search.width(Math.floor(e))},getVal:function(){var a;return this.select?(a=this.select.val(),null===a?[]:a):(a=this.opts.element.val(),s(a,this.opts.separator))},setVal:function(b){var c;this.select?this.select.val(b):(c=[],a(b).each(function(){p(this,c)<0&&c.push(this)}),this.opts.element.val(0===c.length?"":c.join(this.opts.separator)))},buildChangeDetails:function(a,b){for(var b=b.slice(0),a=a.slice(0),c=0;c0&&c--,a.splice(d,1),d--);return{added:b,removed:a}},val:function(c,d){var e,f=this;if(0===arguments.length)return this.getVal();if(e=this.data(),e.length||(e=[]),!c&&0!==c)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),d&&this.triggerChange({added:this.data(),removed:e}),void 0;if(this.setVal(c),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),d&&this.triggerChange(this.buildChangeDetails(e,this.data()));else{if(this.opts.initSelection===b)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,function(b){var c=a.map(b,f.id);f.setVal(c),f.updateSelection(b),f.clearSearch(),d&&f.triggerChange(f.buildChangeDetails(e,f.data()))})}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var b=[],c=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each(function(){b.push(c.opts.id(a(this).data("select2-data")))}),this.setVal(b),this.triggerChange()},data:function(b,c){var e,f,d=this;return 0===arguments.length?this.selection.children(".select2-search-choice").map(function(){return a(this).data("select2-data")}).get():(f=this.data(),b||(b=[]),e=a.map(b,function(a){return d.opts.id(a)}),this.setVal(e),this.updateSelection(b),this.clearSearch(),c&&this.triggerChange(this.buildChangeDetails(f,this.data())),void 0)}}),a.fn.select2=function(){var d,e,f,g,h,c=Array.prototype.slice.call(arguments,0),i=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],j=["opened","isFocused","container","dropdown"],k=["val","data"],l={search:"externalSearch"};return this.each(function(){if(0===c.length||"object"==typeof c[0])d=0===c.length?{}:a.extend({},c[0]),d.element=a(this),"select"===d.element.get(0).tagName.toLowerCase()?h=d.element.prop("multiple"):(h=d.multiple||!1,"tags"in d&&(d.multiple=h=!0)),e=h?new window.Select2["class"].multi:new window.Select2["class"].single,e.init(d);else{if("string"!=typeof c[0])throw"Invalid arguments to select2 plugin: "+c;if(p(c[0],i)<0)throw"Unknown method: "+c[0];if(g=b,e=a(this).data("select2"),e===b)return;if(f=c[0],"container"===f?g=e.container:"dropdown"===f?g=e.dropdown:(l[f]&&(f=l[f]),g=e[f].apply(e,c.slice(1))),p(c[0],j)>=0||p(c[0],k)&&1==c.length)return!1}}),g===b?this:g},a.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(a,b,c,d){var e=[];return F(a.text,c.term,e,d),e.join("")},formatSelection:function(a,c,d){return a?d(a.text):b},sortResults:function(a){return a},formatResultCssClass:function(a){return a.css},formatSelectionCssClass:function(){return b},formatMatches:function(a){return a+" results are available, use up and down arrow keys to navigate."},formatNoMatches:function(){return"No matches found"},formatInputTooShort:function(a,b){var c=b-a.length;return"Please enter "+c+" or more character"+(1==c?"":"s")},formatInputTooLong:function(a,b){var c=a.length-b;return"Please delete "+c+" character"+(1==c?"":"s")},formatSelectionTooBig:function(a){return"You can only select "+a+" item"+(1==a?"":"s")},formatLoadMore:function(){return"Loading more results\u2026"},formatSearching:function(){return"Searching\u2026"},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(a){return a==b?null:a.id},matcher:function(a,b){return o(""+b).toUpperCase().indexOf(o(""+a).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:N,escapeMarkup:G,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(a){return a},adaptDropdownCssClass:function(){return null},nextSearchTerm:function(){return b},searchInputPlaceholder:"",createSearchChoicePosition:"top",shouldFocusInput:function(a){return a.opts.minimumResultsForSearch<0?!1:!0}},a.fn.select2.ajaxDefaults={transport:a.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:H,local:I,tags:J},util:{debounce:w,markMatch:F,escapeMarkup:G,stripDiacritics:o},"class":{"abstract":d,single:e,multi:f}}}}(jQuery); \ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.png b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2.png deleted file mode 100644 index 1d804ffb99699b9e030f1010314de0970b5a000d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmV-r0-F7aP)#WY!I$JQV$)A5aAS1BM||2XVJl=+L1^1S1H% zM-&lx?NZpUrHhn>fk<>POqf2sh40}xxGZfc+t+#Eb(qHy9_3*1(U%t9t)QDnI#YAL(|ACV(>)>6WD-t!8tutHkdb^#3`HzoJG3A2@T`% zA|K@o*b!`R#(7)PWrMFn2))Ca3MR4(zaT`Zr61*kZK5NPnZwQszxh$fyv3?&4c>$q z2m=+yc0dRXRAsPDxF6sD;@rK4JGdR_``1S~o6Xi@2&aR6hcSrEp9HVRzEqVDqBn<1%hR=D4e1f^ra^A|34Cjc=Gny{F(o#MrvPYgZuTJOz(n)-F<| zj()qR;C={)N<0RRvDZ^@6ND+W*}gh-Lip(MDt!(zMSO)!j2j+*hxgzC-e3$@(O2p* zu;+gddm(cZwXTCLx*Ky4THOa*^b^F`woveIeCK^0aR|TJ00000NkvXXu0mjfA#WC6 diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ar.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ar.js deleted file mode 100644 index 92d7e397..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ar.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Arabic translation. - * - * Author: Adel KEDJOUR - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "لم يتم العثور على مطابقات"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; if (n == 1){ return "الرجاء إدخال حرف واحد على الأكثر"; } return n == 2 ? "الرجاء إدخال حرفين على الأكثر" : "الجاء إدخال " + n + " على الأكثر"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; if (n == 1){ return "الرجاء إدخال حرف واحد على الأقل"; } return n == 2 ? "الرجاء إدخال حرفين على الأقل" : "الجاء إدخال " + n + " على الأقل "; }, - formatSelectionTooBig: function (limit) { if (n == 1){ return "يمكنك أن تختار إختيار واحد فقط"; } return n == 2 ? "يمكنك أن تختار إختيارين فقط" : "يمكنك أن تختار " + n + " إختيارات فقط"; }, - formatLoadMore: function (pageNumber) { return "تحميل المزيد من النتائج…"; }, - formatSearching: function () { return "البحث…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_bg.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_bg.js deleted file mode 100644 index 585d28a2..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_bg.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Select2 Bulgarian translation. - * - * @author Lubomir Vikev - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Няма намерени съвпадения"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Моля въведете още " + n + " символ" + (n > 1 ? "а" : ""); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Моля въведете с " + n + " по-малко символ" + (n > 1 ? "а" : ""); }, - formatSelectionTooBig: function (limit) { return "Можете да направите до " + limit + (limit > 1 ? " избора" : " избор"); }, - formatLoadMore: function (pageNumber) { return "Зареждат се още…"; }, - formatSearching: function () { return "Търсене…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ca.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ca.js deleted file mode 100644 index 7e19d3ce..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ca.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Catalan translation. - * - * Author: David Planella - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "No s'ha trobat cap coincidència"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduïu " + n + " caràcter" + (n == 1 ? "" : "s") + " més"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Introduïu " + n + " caràcter" + (n == 1? "" : "s") + "menys"; }, - formatSelectionTooBig: function (limit) { return "Només podeu seleccionar " + limit + " element" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "S'estan carregant més resultats…"; }, - formatSearching: function () { return "S'està cercant…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_cs.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_cs.js deleted file mode 100644 index 376b54a1..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_cs.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Select2 Czech translation. - * - * Author: Michal Marek - * Author - sklonovani: David Vallner - */ -(function ($) { - "use strict"; - // use text for the numbers 2 through 4 - var smallNumbers = { - 2: function(masc) { return (masc ? "dva" : "dvě"); }, - 3: function() { return "tři"; }, - 4: function() { return "čtyři"; } - } - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Nenalezeny žádné položky"; }, - formatInputTooShort: function (input, min) { - var n = min - input.length; - if (n == 1) { - return "Prosím zadejte ještě jeden znak"; - } else if (n <= 4) { - return "Prosím zadejte ještě další "+smallNumbers[n](true)+" znaky"; - } else { - return "Prosím zadejte ještě dalších "+n+" znaků"; - } - }, - formatInputTooLong: function (input, max) { - var n = input.length - max; - if (n == 1) { - return "Prosím zadejte o jeden znak méně"; - } else if (n <= 4) { - return "Prosím zadejte o "+smallNumbers[n](true)+" znaky méně"; - } else { - return "Prosím zadejte o "+n+" znaků méně"; - } - }, - formatSelectionTooBig: function (limit) { - if (limit == 1) { - return "Můžete zvolit jen jednu položku"; - } else if (limit <= 4) { - return "Můžete zvolit maximálně "+smallNumbers[limit](false)+" položky"; - } else { - return "Můžete zvolit maximálně "+limit+" položek"; - } - }, - formatLoadMore: function (pageNumber) { return "Načítají se další výsledky…"; }, - formatSearching: function () { return "Vyhledávání…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_da.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_da.js deleted file mode 100644 index dbce3e17..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_da.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Danish translation. - * - * Author: Anders Jenbo - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Ingen resultater fundet"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Angiv venligst " + n + " tegn mere"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Angiv venligst " + n + " tegn mindre"; }, - formatSelectionTooBig: function (limit) { return "Du kan kun vælge " + limit + " emne" + (limit === 1 ? "" : "r"); }, - formatLoadMore: function (pageNumber) { return "Indlæser flere resultater…"; }, - formatSearching: function () { return "Søger…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_de.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_de.js deleted file mode 100644 index 93b18e81..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_de.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Select2 German translation - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Keine Übereinstimmungen gefunden"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Bitte " + n + " Zeichen mehr eingeben"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Bitte " + n + " Zeichen weniger eingeben"; }, - formatSelectionTooBig: function (limit) { return "Sie können nur " + limit + " Eintr" + (limit === 1 ? "ag" : "äge") + " auswählen"; }, - formatLoadMore: function (pageNumber) { return "Lade mehr Ergebnisse…"; }, - formatSearching: function () { return "Suche…"; } - }); -})(jQuery); \ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_el.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_el.js deleted file mode 100644 index e94b02cb..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_el.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Greek translation. - * - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Δεν βρέθηκαν αποτελέσματα"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Παρακαλούμε εισάγετε " + n + " περισσότερο" + (n > 1 ? "υς" : "") + " χαρακτήρ" + (n > 1 ? "ες" : "α"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Παρακαλούμε διαγράψτε " + n + " χαρακτήρ" + (n > 1 ? "ες" : "α"); }, - formatSelectionTooBig: function (limit) { return "Μπορείτε να επιλέξετε μόνο " + limit + " αντικείμεν" + (limit > 1 ? "α" : "ο"); }, - formatLoadMore: function (pageNumber) { return "Φόρτωση περισσότερων…"; }, - formatSearching: function () { return "Αναζήτηση…"; } - }); -})(jQuery); \ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_en.js.template b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_en.js.template deleted file mode 100644 index f66bcc84..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_en.js.template +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Select2 translation. - * - * Author: Your Name - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatMatches: function (matches) { return matches + " results are available, use up and down arrow keys to navigate."; }, - formatNoMatches: function () { return "No matches found"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " more character" + (n == 1 ? "" : "s"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); }, - formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Loading more results…"; }, - formatSearching: function () { return "Searching…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_es.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_es.js deleted file mode 100644 index f2b58179..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_es.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Select2 Spanish translation - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "No se encontraron resultados"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Por favor, introduzca " + n + " car" + (n == 1? "ácter" : "acteres"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Por favor, elimine " + n + " car" + (n == 1? "ácter" : "acteres"); }, - formatSelectionTooBig: function (limit) { return "Sólo puede seleccionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Cargando más resultados…"; }, - formatSearching: function () { return "Buscando…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_et.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_et.js deleted file mode 100644 index a4045d22..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_et.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Estonian translation. - * - * Author: Kuldar Kalvik - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Tulemused puuduvad"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Sisesta " + n + " täht" + (n == 1 ? "" : "e") + " rohkem"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Sisesta " + n + " täht" + (n == 1? "" : "e") + " vähem"; }, - formatSelectionTooBig: function (limit) { return "Saad vaid " + limit + " tulemus" + (limit == 1 ? "e" : "t") + " valida"; }, - formatLoadMore: function (pageNumber) { return "Laen tulemusi.."; }, - formatSearching: function () { return "Otsin.."; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_eu.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_eu.js deleted file mode 100644 index 1da1a709..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_eu.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Select2 Basque translation. - * - * Author: Julen Ruiz Aizpuru - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { - return "Ez da bat datorrenik aurkitu"; - }, - formatInputTooShort: function (input, min) { - var n = min - input.length; - if (n === 1) { - return "Idatzi karaktere bat gehiago"; - } else { - return "Idatzi " + n + " karaktere gehiago"; - } - }, - formatInputTooLong: function (input, max) { - var n = input.length - max; - if (n === 1) { - return "Idatzi karaktere bat gutxiago"; - } else { - return "Idatzi " + n + " karaktere gutxiago"; - } - }, - formatSelectionTooBig: function (limit) { - if (limit === 1 ) { - return "Elementu bakarra hauta dezakezu"; - } else { - return limit + " elementu hauta ditzakezu soilik"; - } - }, - formatLoadMore: function (pageNumber) { - return "Emaitza gehiago kargatzen…"; - }, - formatSearching: function () { - return "Bilatzen…"; - } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_fa.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_fa.js deleted file mode 100644 index a9e95af4..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_fa.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Persian translation. - * - * Author: Ali Choopan - * Author: Ebrahim Byagowi - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatMatches: function (matches) { return matches + " نتیجه موجود است، کلیدهای جهت بالا و پایین را برای گشتن استفاده کنید."; }, - formatNoMatches: function () { return "نتیجه‌ای یافت نشد."; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "لطفاً " + n + " نویسه بیشتر وارد نمایید"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "لطفاً " + n + " نویسه را حذف کنید."; }, - formatSelectionTooBig: function (limit) { return "شما فقط می‌توانید " + limit + " مورد را انتخاب کنید"; }, - formatLoadMore: function (pageNumber) { return "در حال بارگیری موارد بیشتر…"; }, - formatSearching: function () { return "در حال جستجو…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_fi.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_fi.js deleted file mode 100644 index 9bed310f..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_fi.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Select2 Finnish translation - */ -(function ($) { - "use strict"; - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { - return "Ei tuloksia"; - }, - formatInputTooShort: function (input, min) { - var n = min - input.length; - return "Ole hyvä ja anna " + n + " merkkiä lisää"; - }, - formatInputTooLong: function (input, max) { - var n = input.length - max; - return "Ole hyvä ja anna " + n + " merkkiä vähemmän"; - }, - formatSelectionTooBig: function (limit) { - return "Voit valita ainoastaan " + limit + " kpl"; - }, - formatLoadMore: function (pageNumber) { - return "Ladataan lisää tuloksia…"; - }, - formatSearching: function () { - return "Etsitään…"; - } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_fr.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_fr.js deleted file mode 100644 index d8c87d4b..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_fr.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Select2 French translation - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Aucun résultat trouvé"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Merci de saisir " + n + " caractère" + (n == 1? "" : "s") + " de plus"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Merci de supprimer " + n + " caractère" + (n == 1? "" : "s"); }, - formatSelectionTooBig: function (limit) { return "Vous pouvez seulement sélectionner " + limit + " élément" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Chargement de résultats supplémentaires…"; }, - formatSearching: function () { return "Recherche en cours…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_gl.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_gl.js deleted file mode 100644 index 80326320..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_gl.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Select2 Galician translation - * - * Author: Leandro Regueiro - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { - return "Non se atoparon resultados"; - }, - formatInputTooShort: function (input, min) { - var n = min - input.length; - if (n === 1) { - return "Engada un carácter"; - } else { - return "Engada " + n + " caracteres"; - } - }, - formatInputTooLong: function (input, max) { - var n = input.length - max; - if (n === 1) { - return "Elimine un carácter"; - } else { - return "Elimine " + n + " caracteres"; - } - }, - formatSelectionTooBig: function (limit) { - if (limit === 1 ) { - return "Só pode seleccionar un elemento"; - } else { - return "Só pode seleccionar " + limit + " elementos"; - } - }, - formatLoadMore: function (pageNumber) { - return "Cargando máis resultados…"; - }, - formatSearching: function () { - return "Buscando…"; - } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_he.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_he.js deleted file mode 100644 index 00385410..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_he.js +++ /dev/null @@ -1,17 +0,0 @@ -/** -* Select2 Hebrew translation. -* -* Author: Yakir Sitbon -*/ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "לא נמצאו התאמות"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "נא להזין עוד " + n + " תווים נוספים"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "נא להזין פחות " + n + " תווים"; }, - formatSelectionTooBig: function (limit) { return "ניתן לבחור " + limit + " פריטים"; }, - formatLoadMore: function (pageNumber) { return "טוען תוצאות נוספות…"; }, - formatSearching: function () { return "מחפש…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_hr.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_hr.js deleted file mode 100644 index c2937252..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_hr.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Select2 Croatian translation. - * - * @author Edi Modrić - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Nema rezultata"; }, - formatInputTooShort: function (input, min) { return "Unesite još" + character(min - input.length); }, - formatInputTooLong: function (input, max) { return "Unesite" + character(input.length - max) + " manje"; }, - formatSelectionTooBig: function (limit) { return "Maksimalan broj odabranih stavki je " + limit; }, - formatLoadMore: function (pageNumber) { return "Učitavanje rezultata…"; }, - formatSearching: function () { return "Pretraga…"; } - }); - - function character (n) { - return " " + n + " znak" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? "a" : "" : "ova"); - } -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_hu.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_hu.js deleted file mode 100644 index a8c30881..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_hu.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Select2 Hungarian translation - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Nincs találat."; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Túl rövid. Még " + n + " karakter hiányzik."; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Túl hosszú. " + n + " karakterrel több, mint kellene."; }, - formatSelectionTooBig: function (limit) { return "Csak " + limit + " elemet lehet kiválasztani."; }, - formatLoadMore: function (pageNumber) { return "Töltés…"; }, - formatSearching: function () { return "Keresés…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_id.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_id.js deleted file mode 100644 index 54745407..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_id.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Indonesian translation. - * - * Author: Ibrahim Yusuf - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Tidak ada data yang sesuai"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Masukkan " + n + " huruf lagi" + (n == 1 ? "" : "s"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Hapus " + n + " huruf" + (n == 1 ? "" : "s"); }, - formatSelectionTooBig: function (limit) { return "Anda hanya dapat memilih " + limit + " pilihan" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Mengambil data…"; }, - formatSearching: function () { return "Mencari…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_is.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_is.js deleted file mode 100644 index aecc6cd7..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_is.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Select2 Icelandic translation. - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Ekkert fannst"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Vinsamlegast skrifið " + n + " staf" + (n > 1 ? "i" : "") + " í viðbót"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Vinsamlegast styttið texta um " + n + " staf" + (n > 1 ? "i" : ""); }, - formatSelectionTooBig: function (limit) { return "Þú getur aðeins valið " + limit + " atriði"; }, - formatLoadMore: function (pageNumber) { return "Sæki fleiri niðurstöður…"; }, - formatSearching: function () { return "Leita…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_it.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_it.js deleted file mode 100644 index d4e24de7..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_it.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Select2 Italian translation - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Nessuna corrispondenza trovata"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Inserisci ancora " + n + " caratter" + (n == 1? "e" : "i"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Inserisci " + n + " caratter" + (n == 1? "e" : "i") + " in meno"; }, - formatSelectionTooBig: function (limit) { return "Puoi selezionare solo " + limit + " element" + (limit == 1 ? "o" : "i"); }, - formatLoadMore: function (pageNumber) { return "Caricamento in corso…"; }, - formatSearching: function () { return "Ricerca…"; } - }); -})(jQuery); \ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ja.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ja.js deleted file mode 100644 index 81106e78..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ja.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Select2 Japanese translation. - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "該当なし"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "後" + n + "文字入れてください"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "検索文字列が" + n + "文字長すぎます"; }, - formatSelectionTooBig: function (limit) { return "最多で" + limit + "項目までしか選択できません"; }, - formatLoadMore: function (pageNumber) { return "読込中・・・"; }, - formatSearching: function () { return "検索中・・・"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ka.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ka.js deleted file mode 100644 index 366cc2d9..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ka.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Georgian (Kartuli) translation. - * - * Author: Dimitri Kurashvili dimakura@gmail.com - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "ვერ მოიძებნა"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "გთხოვთ შეიყვანოთ კიდევ " + n + " სიმბოლო"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "გთხოვთ წაშალოთ " + n + " სიმბოლო"; }, - formatSelectionTooBig: function (limit) { return "თქვენ შეგიძლიათ მხოლოდ " + limit + " ჩანაწერის მონიშვნა"; }, - formatLoadMore: function (pageNumber) { return "შედეგის ჩატვირთვა…"; }, - formatSearching: function () { return "ძებნა…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ko.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ko.js deleted file mode 100644 index 1a84d21e..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ko.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Korean translation. - * - * @author Swen Mun - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "결과 없음"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "너무 짧습니다. "+n+"글자 더 입력해주세요."; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "너무 깁니다. "+n+"글자 지워주세요."; }, - formatSelectionTooBig: function (limit) { return "최대 "+limit+"개까지만 선택하실 수 있습니다."; }, - formatLoadMore: function (pageNumber) { return "불러오는 중…"; }, - formatSearching: function () { return "검색 중…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_lt.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_lt.js deleted file mode 100644 index 2e2f950b..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_lt.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Select2 Lithuanian translation. - * - * @author CRONUS Karmalakas - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Atitikmenų nerasta"; }, - formatInputTooShort: function (input, min) { return "Įrašykite dar" + character(min - input.length); }, - formatInputTooLong: function (input, max) { return "Pašalinkite" + character(input.length - max); }, - formatSelectionTooBig: function (limit) { - return "Jūs galite pasirinkti tik " + limit + " element" + ((limit%100 > 9 && limit%100 < 21) || limit%10 == 0 ? "ų" : limit%10 > 1 ? "us" : "ą"); - }, - formatLoadMore: function (pageNumber) { return "Kraunama daugiau rezultatų…"; }, - formatSearching: function () { return "Ieškoma…"; } - }); - - function character (n) { - return " " + n + " simbol" + ((n%100 > 9 && n%100 < 21) || n%10 == 0 ? "ių" : n%10 > 1 ? "ius" : "į"); - } -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_lv.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_lv.js deleted file mode 100644 index b300ec77..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_lv.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Latvian translation. - * - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Sakritību nav"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Lūdzu ievadiet vēl " + n + " simbol" + (n == 11 ? "us" : n%10 == 1 ? "u" : "us"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Lūdzu ievadiet par " + n + " simbol" + (n == 11 ? "iem" : n%10 == 1 ? "u" : "iem") + " mazāk"; }, - formatSelectionTooBig: function (limit) { return "Jūs varat izvēlēties ne vairāk kā " + limit + " element" + (limit == 11 ? "us" : limit%10 == 1 ? "u" : "us"); }, - formatLoadMore: function (pageNumber) { return "Datu ielāde…"; }, - formatSearching: function () { return "Meklēšana…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_mk.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_mk.js deleted file mode 100644 index 513562c5..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_mk.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Macedonian translation. - * - * Author: Marko Aleksic - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Нема пронајдено совпаѓања"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Ве молиме внесете уште " + n + " карактер" + (n == 1 ? "" : "и"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Ве молиме внесете " + n + " помалку карактер" + (n == 1? "" : "и"); }, - formatSelectionTooBig: function (limit) { return "Можете да изберете само " + limit + " ставк" + (limit == 1 ? "а" : "и"); }, - formatLoadMore: function (pageNumber) { return "Вчитување резултати…"; }, - formatSearching: function () { return "Пребарување…"; } - }); -})(jQuery); \ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ms.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ms.js deleted file mode 100644 index 262042aa..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ms.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Malay translation. - * - * Author: Kepoweran - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Tiada padanan yang ditemui"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Sila masukkan " + n + " aksara lagi"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Sila hapuskan " + n + " aksara"; }, - formatSelectionTooBig: function (limit) { return "Anda hanya boleh memilih " + limit + " pilihan"; }, - formatLoadMore: function (pageNumber) { return "Sedang memuatkan keputusan…"; }, - formatSearching: function () { return "Mencari…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_nl.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_nl.js deleted file mode 100644 index 5b5c4156..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_nl.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Select2 Dutch translation - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Geen resultaten gevonden"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " meer in"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " minder in"; }, - formatSelectionTooBig: function (limit) { return "Maximaal " + limit + " item" + (limit == 1 ? "" : "s") + " toegestaan"; }, - formatLoadMore: function (pageNumber) { return "Meer resultaten laden…"; }, - formatSearching: function () { return "Zoeken…"; } - }); -})(jQuery); \ No newline at end of file diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_no.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_no.js deleted file mode 100644 index ab61c082..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_no.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Select2 Norwegian translation. - * - * Author: Torgeir Veimo - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Ingen treff"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Vennligst skriv inn " + n + (n>1 ? " flere tegn" : " tegn til"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Vennligst fjern " + n + " tegn"; }, - formatSelectionTooBig: function (limit) { return "Du kan velge maks " + limit + " elementer"; }, - formatLoadMore: function (pageNumber) { return "Laster flere resultater…"; }, - formatSearching: function () { return "Søker…"; } - }); -})(jQuery); - diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_pl.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_pl.js deleted file mode 100644 index 75054e76..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_pl.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Select2 Polish translation. - * - * @author Jan Kondratowicz - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Brak wyników"; }, - formatInputTooShort: function (input, min) { return "Wpisz jeszcze" + character(min - input.length, "znak", "i"); }, - formatInputTooLong: function (input, max) { return "Wpisana fraza jest za długa o" + character(input.length - max, "znak", "i"); }, - formatSelectionTooBig: function (limit) { return "Możesz zaznaczyć najwyżej" + character(limit, "element", "y"); }, - formatLoadMore: function (pageNumber) { return "Ładowanie wyników…"; }, - formatSearching: function () { return "Szukanie…"; } - }); - - function character (n, word, pluralSuffix) { - return " " + n + " " + word + (n == 1 ? "" : n%10 < 5 && n%10 > 1 && (n%100 < 5 || n%100 > 20) ? pluralSuffix : "ów"); - } -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_pt-BR.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_pt-BR.js deleted file mode 100644 index d60b1827..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_pt-BR.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Select2 Brazilian Portuguese translation - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Nenhum resultado encontrado"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Informe " + n + " caractere" + (n == 1? "" : "s"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caractere" + (n == 1? "" : "s"); }, - formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Carregando mais resultados…"; }, - formatSearching: function () { return "Buscando…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_pt-PT.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_pt-PT.js deleted file mode 100644 index cced7cf3..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_pt-PT.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Select2 Portuguese (Portugal) translation - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Nenhum resultado encontrado"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduza " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, - formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "A carregar mais resultados…"; }, - formatSearching: function () { return "A pesquisar…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ro.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ro.js deleted file mode 100644 index 87eca4cf..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ro.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Select2 Romanian translation. - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Nu a fost găsit nimic"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Vă rugăm să introduceți incă " + n + " caracter" + (n == 1 ? "" : "e"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Vă rugăm să introduceți mai puțin de " + n + " caracter" + (n == 1? "" : "e"); }, - formatSelectionTooBig: function (limit) { return "Aveți voie să selectați cel mult " + limit + " element" + (limit == 1 ? "" : "e"); }, - formatLoadMore: function (pageNumber) { return "Se încarcă…"; }, - formatSearching: function () { return "Căutare…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_rs.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_rs.js deleted file mode 100644 index 300c01bc..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_rs.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Serbian translation. - * - * @author Limon Monte - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Ništa nije pronađeno"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Ukucajte bar još " + n + " simbol" + (n % 10 == 1 && n % 100 != 11 ? "" : "a"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Obrišite " + n + " simbol" + (n % 10 == 1 && n % 100 != 11 ? "" : "a"); }, - formatSelectionTooBig: function (limit) { return "Možete izabrati samo " + limit + " stavk" + (limit % 10 == 1 && limit % 100 != 11 ? "u" : (limit % 10 >= 2 && limit % 10 <= 4 && (limit % 100 < 12 || limit % 100 > 14)? "e" : "i")); }, - formatLoadMore: function (pageNumber) { return "Preuzimanje još rezultata…"; }, - formatSearching: function () { return "Pretraga…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ru.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ru.js deleted file mode 100644 index 0f45ce0d..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_ru.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Select2 Russian translation. - * - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Совпадений не найдено"; }, - formatInputTooShort: function (input, min) { return "Пожалуйста, введите еще" + character(min - input.length); }, - formatInputTooLong: function (input, max) { return "Пожалуйста, введите на" + character(input.length - max) + " меньше"; }, - formatSelectionTooBig: function (limit) { return "Вы можете выбрать не более " + limit + " элемент" + (limit%10 == 1 && limit%100 != 11 ? "а" : "ов"); }, - formatLoadMore: function (pageNumber) { return "Загрузка данных…"; }, - formatSearching: function () { return "Поиск…"; } - }); - - function character (n) { - return " " + n + " символ" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 20) ? n%10 > 1 ? "a" : "" : "ов"); - } -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_sk.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_sk.js deleted file mode 100644 index 772f304a..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_sk.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Select2 Slovak translation. - * - * Author: David Vallner - */ -(function ($) { - "use strict"; - // use text for the numbers 2 through 4 - var smallNumbers = { - 2: function(masc) { return (masc ? "dva" : "dve"); }, - 3: function() { return "tri"; }, - 4: function() { return "štyri"; } - } - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Nenašli sa žiadne položky"; }, - formatInputTooShort: function (input, min) { - var n = min - input.length; - if (n == 1) { - return "Prosím zadajte ešte jeden znak"; - } else if (n <= 4) { - return "Prosím zadajte ešte ďalšie "+smallNumbers[n](true)+" znaky"; - } else { - return "Prosím zadajte ešte ďalších "+n+" znakov"; - } - }, - formatInputTooLong: function (input, max) { - var n = input.length - max; - if (n == 1) { - return "Prosím zadajte o jeden znak menej"; - } else if (n <= 4) { - return "Prosím zadajte o "+smallNumbers[n](true)+" znaky menej"; - } else { - return "Prosím zadajte o "+n+" znakov menej"; - } - }, - formatSelectionTooBig: function (limit) { - if (limit == 1) { - return "Môžete zvoliť len jednu položku"; - } else if (limit <= 4) { - return "Môžete zvoliť najviac "+smallNumbers[limit](false)+" položky"; - } else { - return "Môžete zvoliť najviac "+limit+" položiek"; - } - }, - formatLoadMore: function (pageNumber) { return "Načítavajú sa ďalšie výsledky…"; }, - formatSearching: function () { return "Vyhľadávanie…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_sv.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_sv.js deleted file mode 100644 index d611189a..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_sv.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Swedish translation. - * - * Author: Jens Rantil - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Inga träffar"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Var god skriv in " + n + (n>1 ? " till tecken" : " tecken till"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Var god sudda ut " + n + " tecken"; }, - formatSelectionTooBig: function (limit) { return "Du kan max välja " + limit + " element"; }, - formatLoadMore: function (pageNumber) { return "Laddar fler resultat…"; }, - formatSearching: function () { return "Söker…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_th.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_th.js deleted file mode 100644 index df59bdac..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_th.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Thai translation. - * - * Author: Atsawin Chaowanakritsanakul - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "ไม่พบข้อมูล"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "โปรดพิมพ์เพิ่มอีก " + n + " ตัวอักษร"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "โปรดลบออก " + n + " ตัวอักษร"; }, - formatSelectionTooBig: function (limit) { return "คุณสามารถเลือกได้ไม่เกิน " + limit + " รายการ"; }, - formatLoadMore: function (pageNumber) { return "กำลังค้นข้อมูลเพิ่ม…"; }, - formatSearching: function () { return "กำลังค้นข้อมูล…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_tr.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_tr.js deleted file mode 100644 index f834dad2..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_tr.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Turkish translation. - * - * Author: Salim KAYABAŞI - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Sonuç bulunamadı"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "En az " + n + " karakter daha girmelisiniz"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return n + " karakter azaltmalısınız"; }, - formatSelectionTooBig: function (limit) { return "Sadece " + limit + " seçim yapabilirsiniz"; }, - formatLoadMore: function (pageNumber) { return "Daha fazla…"; }, - formatSearching: function () { return "Aranıyor…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_uk.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_uk.js deleted file mode 100644 index 6b22e8f2..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_uk.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Select2 Ukrainian translation. - * - * @author bigmihail - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Нічого не знайдено"; }, - formatInputTooShort: function (input, min) { return "Введіть буль ласка ще" + character(min - input.length, "символ"); }, - formatInputTooLong: function (input, max) { return "Введіть буль ласка на" + character(input.length - max, "символ") + " менше"; }, - formatSelectionTooBig: function (limit) { return "Ви можете вибрати лише" + character(limit, "елемент"); }, - formatLoadMore: function (pageNumber) { return "Завантаження даних…"; }, - formatSearching: function () { return "Пошук…"; } - }); - - function character (n, word) { - return " " + n + " " + word + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? "и" : "" : "ів"); - } -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_vi.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_vi.js deleted file mode 100644 index 5dbc2753..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_vi.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Select2 Vietnamese translation. - * - * Author: Long Nguyen - */ -(function ($) { - "use strict"; - - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "Không tìm thấy kết quả"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Vui lòng nhập nhiều hơn " + n + " ký tự" + (n == 1 ? "" : "s"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Vui lòng nhập ít hơn " + n + " ký tự" + (n == 1? "" : "s"); }, - formatSelectionTooBig: function (limit) { return "Chỉ có thể chọn được " + limit + " tùy chọn" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Đang lấy thêm kết quả…"; }, - formatSearching: function () { return "Đang tìm…"; } - }); -})(jQuery); - diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_zh-CN.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_zh-CN.js deleted file mode 100644 index 6add3c52..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_zh-CN.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Select2 Chinese translation - */ -(function ($) { - "use strict"; - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "没有找到匹配项"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "请再输入" + n + "个字符";}, - formatInputTooLong: function (input, max) { var n = input.length - max; return "请删掉" + n + "个字符";}, - formatSelectionTooBig: function (limit) { return "你只能选择最多" + limit + "项"; }, - formatLoadMore: function (pageNumber) { return "加载结果中…"; }, - formatSearching: function () { return "搜索中…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_zh-TW.js b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_zh-TW.js deleted file mode 100644 index f072381f..00000000 --- a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2_locale_zh-TW.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Select2 Traditional Chinese translation - */ -(function ($) { - "use strict"; - $.extend($.fn.select2.defaults, { - formatNoMatches: function () { return "沒有找到相符的項目"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "請再輸入" + n + "個字元";}, - formatInputTooLong: function (input, max) { var n = input.length - max; return "請刪掉" + n + "個字元";}, - formatSelectionTooBig: function (limit) { return "你只能選擇最多" + limit + "項"; }, - formatLoadMore: function (pageNumber) { return "載入中…"; }, - formatSearching: function () { return "搜尋中…"; } - }); -})(jQuery); diff --git a/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2x2.png b/trunk/SiprpWebFichasClinicas/WebContent/static/html/js/select2/select2x2.png deleted file mode 100644 index 4bdd5c961d452c49dfa0789c2c7ffb82c238fc24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)upQ6WKflyv?C|ADVW!U!t`EpA+x zB)5#EjWk-_X77YJZtQo`E0SF)^1bZr%)B7Cd`*OK*r z5WG-7e-R9G9^69ksDt29&oyHqxPSt|-S>xi3%PTd+GjY+BGF|nWC(7D-sd(kxqd9~ zS@2YF5vB+>dP8+$l^{oO3-lEWiGA*QIU)Wds#9M6RZ9N zcQ4y4)xqQOxD=vwu%7cz1nY#$lT&y8HCmkWgpwQP#3dhnYj9|2aS_R}IUF_^6s#$= zTm%~>A#oM?KIg$kh=<`gJkeoHa2LrulVy$Yx+N_0R3$4I!R*0677f(FKqm`2_o4~W z0h}fQZ`lC^1A+m;fM7uI(R1`S0KtG@KrkQ}5DW+&@cTnDVIow56KciMk7a899t0bC zC1KI{TsMe5NAR%GD_5`B-@ad4k~K3SO%H z_M31|`HV?E6)u$E3c&*<*n20+V@mRCop>R5;DWuZCmjSo7p@R&OYl^@G

    1 - Identificação

    1.1 - Empresa
    1.2 - Utente

    2 - Actividade

    Condições de Trabalho
    Horário   Postura   Tarefas   Esforço  
    Normal Sentado Variadas Físico:  
    Contínuo Em Pé Criativas Cargas > 10 Kg
    Turnos Deslocações Monótonas Cargas < 10 Kg
    Nocturno Parado Repetitivas Visual
    Isenção Sentádo/Pé Minuciosas Mental

     

    Posto de Trabalho  
    Trabalho em Altura
    Condução de Veículos
    Trabalho com Máquinas
    Ar Condicionado
    Luz Artificial
    Alcatifas

    3 - Antecedentes Ocupacionais

    Actividades Anteriores Entidade Local de Trabalho Período de Tempo  
    Factores e Risco Actividade Tempo de Exposição
    Fisicos
    Químicos
    Biológicos
    Ergonómicos
    Psicossociais
    Acidente Data Lesão Corporal Incapacidade Resultante %  
    Suspeitas (código) Data Declaradas (código) Data  

    4 - Antecedentes Pessoais

    5 - Hábitos

    6 - Antecedentes Familiares

    Doença Pai Mãe Irmãos Avós Outros
    Infecciosas
    Neoplasias
    Dças. GI. Endocrinas, Nutrição, Metabolismo, Imunitárias
    Doeças Sangue e Orgãos Hemotopoieticos
    Transtornos Mentais
    Doenças SNC e Orgãos Sentidos
    Doenças Aparelho Circulatório
    Doenças Aparelho Respiratório
    Doenças Aparelho Digestivo
    Doenças Aparelho Génito - Urinário
    Complicações da Gravidez e Puerpério
    Doenças Pele e Tec. Celular Subcutâneo
    Doenças Sist. Osteomuscular e Tec. Conjuntivo
    Anomalias Congénitas
    Sintomas, Sinais e Afecções mal definidas
    Lesões, Acidentes e Envenenamentos

    7 - Exame Objectivo

    7.1 - Biometria
    (Kg)
    (mmHg)
    (cm)
    (bpm)
      Perto Longe
    Olho Esquerdo
    Olho Direito

    8 - Doenças Activas

    9 - Classificação Individual de Saúde

    10 - Absentismo

    11 - Esquema Vacinal

    12 - Conclusões/Resumo

    13 - Propostas de Solução

    14 - Observações

    15 - Parecer

    16 - Reavaliação

    17 - Data do Exame


     

     

     

    Observações


     

     

     

    Motivo do Exame
    Resumo
    Problemas
    Soluções
    Parecer
    Reavaliação
    Data do Exame

     

     

     

    Hábitos
    Exame Objectivo
    (Kg)
    (mmHg)
    (cm)
    (bpm)
      Perto Longe
    Olho Esquerdo
    Olho Direito
    Classificação Individual de Saúde
    Absentismo
    Esquema Vacinal
    Resumo
    Problemas
    Soluções
    Parecer
    Reavaliação
    Data do Exame

     

     

     

    Fichas

    Autor Estado  
    {{item.concluido ? 'Concluido' : 'Em Aberto'}}
    \ No newline at end of file +
    {{item.nome}}

    1 - Identificação

    1.1 - Empresa
    1.2 - Utente

    2 - Actividade

    Condições de Trabalho
    Horário   Postura   Tarefas   Esforço  
    Normal Sentado Variadas Físico:  
    Contínuo Em Pé Criativas Cargas > 10 Kg
    Turnos Deslocações Monótonas Cargas < 10 Kg
    Nocturno Parado Repetitivas Visual
    Isenção Sentádo/Pé Minuciosas Mental

     

    Posto de Trabalho  
    Trabalho em Altura
    Condução de Veículos
    Trabalho com Máquinas
    Ar Condicionado
    Luz Artificial
    Alcatifas

    3 - Antecedentes Ocupacionais

    Actividades Anteriores Entidade Local de Trabalho Período de Tempo  
    Factores e Risco Actividade Tempo de Exposição
    Fisicos
    Químicos
    Biológicos
    Ergonómicos
    Psicossociais
    Acidente Data Lesão Corporal Incapacidade Resultante %  
    Suspeitas (código) Data Declaradas (código) Data  

    4 - Antecedentes Pessoais

    5 - Hábitos

    6 - Antecedentes Familiares

    Doença Pai Mãe Irmãos Avós Outros
    Infecciosas
    Neoplasias
    Dças. GI. Endocrinas, Nutrição, Metabolismo, Imunitárias
    Doeças Sangue e Orgãos Hemotopoieticos
    Transtornos Mentais
    Doenças SNC e Orgãos Sentidos
    Doenças Aparelho Circulatório
    Doenças Aparelho Respiratório
    Doenças Aparelho Digestivo
    Doenças Aparelho Génito - Urinário
    Complicações da Gravidez e Puerpério
    Doenças Pele e Tec. Celular Subcutâneo
    Doenças Sist. Osteomuscular e Tec. Conjuntivo
    Anomalias Congénitas
    Sintomas, Sinais e Afecções mal definidas
    Lesões, Acidentes e Envenenamentos

    7 - Exame Objectivo

    7.1 - Biometria
    (Kg)
    (mmHg)
    (cm)
    (bpm)
      Perto Longe
    Olho Esquerdo
    Olho Direito

    8 - Doenças Activas

    9 - Classificação Individual de Saúde

    10 - Absentismo

    11 - Esquema Vacinal

    12 - Conclusões/Resumo

    13 - Propostas de Solução

    14 - Observações

    15 - Parecer

    16 - Reavaliação

    17 - Data do Exame


     

     

     

    Observações


     

     

     

    Motivo do Exame
    Resumo
    Problemas
    Soluções
    Parecer
    Reavaliação
    Data do Exame

     

     

     

    Hábitos
    Exame Objectivo
    (Kg)
    (mmHg)
    (cm)
    (bpm)
      Perto Longe
    Olho Esquerdo
    Olho Direito
    Classificação Individual de Saúde
    Absentismo
    Esquema Vacinal
    Resumo
    Problemas
    Soluções
    Parecer
    Reavaliação
    Data do Exame

     

     

     

    Empresa/Entidade
    Trabalhador
    Observações
    Exame Médico
    Outras Recomendações

     

     

     

    Fichas

    Autor Estado  
    {{item.concluido ? 'Concluido' : 'Em Aberto'}}
     
    \ No newline at end of file