--- a/integration/v2/13-detail_image.html Wed Jun 19 15:15:05 2013 +0200
+++ b/integration/v2/13-detail_image.html Thu Jun 20 15:03:13 2013 +0200
@@ -112,12 +112,31 @@
</tbody>
</table>
</div>
- <div class=" box-edition">
+ <div class="box-edition">
<h3>Mots clés :</h3>
- <ul class="list-key-search">
- <li><a href="#"></a></li>
+ <ul class="list-key-search clearfix">
+ <li><a class="box-shadow-2" href="#">hello</a></li>
+ <li><a class="box-shadow-2" href="#">hello word</a></li>
+ <li><a class="box-shadow-2" href="#">Delacroix</a></li>
+ <li><a class="box-shadow-2" href="#">Lorem ipsum dolor sit amet</a></li>
+ <li><a class="box-shadow-2" href="#">hello</a></li>
+ <li><a class="box-shadow-2" href="#">hello word</a></li>
+ <li><a class="box-shadow-2" href="#">Delacroix</a></li>
+ <li><a class="box-shadow-2" href="#">Lorem ipsum dolor sit amet</a></li>
+ <li><a class="box-shadow-2" href="#">hello</a></li>
+ <li><a class="box-shadow-2" href="#">hello word</a></li>
+ <li><a class="box-shadow-2" href="#">Delacroix</a></li>
+ <li><a class="box-shadow-2" href="#">Lorem ipsum dolor sit amet</a></li>
</ul>
</div>
+ <div class="box-edition">
+ <h3>Fragments de cette image :</h3>
+ <p class="null">Pas de fragment</p>
+ </div>
+ <div class="box-edition">
+ <h3>Collections liées à cette image :</h3>
+ <p class="null">Pas de collection</p>
+ </div>
</article>
</section>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/integration/v2/14-creation_fragment.html Thu Jun 20 15:03:13 2013 +0200
@@ -0,0 +1,190 @@
+<!DOCTYPE html>
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="description" content="eGonomy">
+ <title>eGonomy : Détail image</title>
+
+ <link rel="stylesheet" href="css/reset.css">
+ <link rel="stylesheet" href="css/fonts.css">
+ <link rel="stylesheet" href="css/style.css">
+ <link rel="stylesheet" href="css/slideshow.css">
+ <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/flick/jquery-ui.css">
+ <link href="lib/tag-it/css/jquery.tagit.css" rel="stylesheet">
+ <script src="js/vendor/modernizr-2.6.2.min.js"></script>
+</head>
+<body>
+
+ <div class="wrap">
+ <header class="clearfix">
+ <h1><a href="#">egonomy</a></h1>
+ <div class="col-right">
+ <ul class="head-login clearfix">
+ <li>
+ <form method="GET" action="/egonomy/allpictures/">
+ <p>
+ <input id="id_search" type="text" placeholder="Rechercher dans le site">
+ <select class="search-type">
+ <option selected="" value="/egonomy/allpictures/">Images</option>
+ <option value="/egonomy/allfragments/">Fragments</option>
+ </select>
+ </p>
+ <input type="hidden" name="field" value="all">
+ </form>
+ </li>
+ <li class="hello-user">Bonjour Anthony Ly</li>
+ <li><span class="dot-6"></span></li>
+ <li><a class="login" href="#">Déconnexion</a></li>
+ </ul>
+ <nav>
+ <ul class="nav clearfix">
+ <li><a href="#" title="home"><img src="img/icon-home.png" alt="home"></a></li>
+ <li><span class="dot-10"></span></li>
+ <li><a href="#">explorer</a></li>
+ <li><span class="dot-10"></span></li>
+ <li><a href="#">collectionner</a></li>
+ <li><span class="dot-10"></span></li>
+ <li><a href="#">créer</a></li>
+ <li><span class="dot-10"></span></li>
+ <li><a href="#">mon profil</a></li>
+ </ul>
+ </nav>
+ </div>
+ </header>
+ <section>
+ <div class="title-page">
+ <h2>MEDÉE <span class="fs-normal">/ Nouveau fragment</span></h2>
+ </div>
+ <div class="bar-tools clearfix">
+ <ul class="clearfix left">
+ <li><a class="go-to mosaic" href="#"></a></li>
+ <li><a class="go-to search" href="#"></a></li>
+ </ul>
+ <ul class="clearfix">
+ <li>
+ <a class="icon plus" href="#">Ajouter à ma collection</a>
+ </li>
+ <li>
+ <form action="#">
+ <p>
+ <input class="search-form" id="id_search" type="text" placeholder="Romantisme noir">
+ </p>
+ </form>
+ </li>
+ </ul>
+ </div>
+ <article class="edition">
+ <div class="slideshow box-edition">
+ <div class="image-wrap">
+ <img src="img/378x600.png" alt="">
+ </div>
+ <div class="arrow-wrap left-arrow">
+ <a class="arrow" href="#"></a>
+ </div>
+ <div class="arrow-wrap right-arrow">
+ <a class="arrow" href="#"></a>
+ </div>
+ <ul class="share">
+ <li><a title="Partager sur Twitter" href="#" class="tool twitter"></a></li>
+ <li><a title="Partager sur Facebook" href="#" class="tool facebook"></a></li>
+ </ul>
+ </div>
+ <div class="info box-edition">
+ <form action="#">
+ <table>
+ <tbody>
+ <tr>
+ <th>Auteur :</th>
+ <td><input type="text"></td>
+ </tr>
+ <tr>
+ <th>Image source :</th>
+ <td>Médée</td>
+ </tr>
+ <tr>
+ <th>Auteur :</th>
+ <td>Delacroix Eugène (1798-1863)</td>
+ </tr>
+ <tr>
+ <th>Période :</th>
+ <td>Période contemporaine de 1789 à 1914,19e siècle</td>
+ </tr>
+ <tr>
+ <th>Site de production :</th>
+ <td>-</td>
+ </tr>
+ <tr>
+ <th>Localisation :</th>
+ <td>Lille, Palais des Beaux-Arts</td>
+ </tr>
+ <tr>
+ <th class="va-top"><label for="">Description :</label></th>
+ <td><textarea name="" id=""></textarea></td>
+ </tr>
+ </tbody>
+ </table>
+ </form>
+ </div>
+ <div class="box-edition">
+ <form action="#" class="clearfix">
+ <table>
+ <tr>
+ <th class="va-top">Mots clés :</th>
+ <td><input class="tag-it" type="text"></td>
+ </tr>
+ <tr>
+ <th class="pt-6 va-top">Mots clés de l’image source :</th>
+ <td class="pt-6">
+ <ul class="list-key-add list-keywords no-before clearfix">
+ <li><a data-tag="hello" class="box-shadow-2" href="#">hello</a></li>
+ <li><a data-tag="calcul'it" class="box-shadow-2" href="#">calcul'it</a></li>
+ <li><a data-tag="festival Aix" class="box-shadow-2" href="#">festival Aix</a></li>
+ <li><a data-tag="eGonomy" class="box-shadow-2" href="#">eGonomy</a></li>
+ <li><a data-tag="Hashcut" class="box-shadow-2" href="#">Hashcut</a></li>
+ <li><a data-tag="vrai tag" class="box-shadow-2" href="#">faux tag</a></li>
+ <li><a data-tag="hello" class="box-shadow-2" href="#">hello</a></li>
+ <li><a data-tag="calcul'it" class="box-shadow-2" href="#">calcul'it</a></li>
+ <li><a data-tag="festival Aix" class="box-shadow-2" href="#">festival Aix</a></li>
+ <li><a data-tag="eGonomy" class="box-shadow-2" href="#">eGonomy</a></li>
+ <li><a data-tag="Hashcut" class="box-shadow-2" href="#">Hashcut</a></li>
+ <li><a data-tag="vrai tag" class="box-shadow-2" href="#">faux tag</a></li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+ <div class="buttons f-right">
+ <a href="#" class="btn">Annuler</a>
+ <input class="btn" type="submit" value="Valider">
+ </div>
+ </form>
+ </div>
+
+ <div class="box-edition">
+ <h3>Fragments de cette image :</h3>
+ <p class="null">Pas de fragment</p>
+ </div>
+ <div class="box-edition">
+ <h3>Collections liées à cette image :</h3>
+ <p class="null">Pas de collection</p>
+ </div>
+ </article>
+
+ </section>
+ <footer class="clearfix">
+ <h6>EGONOMY est un projet de l’IRI et de la réunion des Musées Nationaux</h6>
+ <p>Mai 2013</p>
+ </footer>
+ </div><!-- /.wrap -->
+
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+ <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.9.1.min.js"><\/script>')</script>
+ <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js" type="text/javascript" charset="utf-8"></script>
+ <script src="js/masonry.min.js"></script>
+ <script src="lib/tag-it/js/tag-it.min.js"></script>
+ <script src="js/main.js"></script>
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/integration/v2/15-detail_fragment.html Thu Jun 20 15:03:13 2013 +0200
@@ -0,0 +1,154 @@
+<!DOCTYPE html>
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="description" content="eGonomy">
+ <title>eGonomy : Détail image</title>
+
+ <link rel="stylesheet" href="css/reset.css">
+ <link rel="stylesheet" href="css/fonts.css">
+ <link rel="stylesheet" href="css/style.css">
+ <link rel="stylesheet" href="css/slideshow.css">
+ <script src="js/vendor/modernizr-2.6.2.min.js"></script>
+</head>
+<body>
+
+ <div class="wrap">
+ <header class="clearfix">
+ <h1><a href="#">egonomy</a></h1>
+ <div class="col-right">
+ <ul class="head-login clearfix">
+ <li>
+ <form method="GET" action="/egonomy/allpictures/">
+ <p>
+ <input id="id_search" type="text" placeholder="Rechercher dans le site">
+ <select class="search-type">
+ <option selected="" value="/egonomy/allpictures/">Images</option>
+ <option value="/egonomy/allfragments/">Fragments</option>
+ </select>
+ </p>
+ <input type="hidden" name="field" value="all">
+ </form>
+ </li>
+ <li class="hello-user">Bonjour Anthony Ly</li>
+ <li><span class="dot-6"></span></li>
+ <li><a class="login" href="#">Déconnexion</a></li>
+ </ul>
+ <nav>
+ <ul class="nav clearfix">
+ <li><a href="#" title="home"><img src="img/icon-home.png" alt="home"></a></li>
+ <li><span class="dot-10"></span></li>
+ <li><a href="#">explorer</a></li>
+ <li><span class="dot-10"></span></li>
+ <li><a href="#">collectionner</a></li>
+ <li><span class="dot-10"></span></li>
+ <li><a href="#">créer</a></li>
+ <li><span class="dot-10"></span></li>
+ <li><a href="#">mon profil</a></li>
+ </ul>
+ </nav>
+ </div>
+ </header>
+ <section>
+ <div class="title-page">
+ <h2>MEDÉE</h2>
+ </div>
+ <div class="bar-tools clearfix">
+ <ul class="clearfix left">
+ <li><a class="go-to mosaic" href="#"></a></li>
+ <li><a class="go-to search" href="#"></a></li>
+ </ul>
+ <ul class="clearfix">
+ <li>
+ <a class="icon cut" href="#">Créer un fragment</a>
+ </li>
+ <li>
+ <a class="icon plus" href="#">Ajouter à ma collection</a>
+ </li>
+ <li>
+ <form action="#">
+ <p>
+ <input class="search-form" id="id_search" type="text" placeholder="Romantisme noir">
+ </p>
+ </form>
+ </li>
+ </ul>
+ </div>
+ <article class="edition">
+ <div class="slideshow box-edition">
+ <div class="image-wrap">
+ <img src="img/378x600.png" alt="">
+ </div>
+ <div class="arrow-wrap left-arrow">
+ <a class="arrow" href="#"></a>
+ </div>
+ <div class="arrow-wrap right-arrow">
+ <a class="arrow" href="#"></a>
+ </div>
+ <ul class="share">
+ <li><a title="Partager sur Twitter" href="#" class="tool twitter"></a></li>
+ <li><a title="Partager sur Facebook" href="#" class="tool facebook"></a></li>
+ </ul>
+ </div>
+ <div class="info box-edition">
+ <table>
+ <tbody>
+ <tr>
+ <th>Auteur :</th>
+ <td>Delacroix Eugène (1798-1863)</td>
+ </tr>
+ <tr>
+ <th>Période :</th>
+ <td>Période contemporaine de 1789 à 1914,19e siècle,</td>
+ </tr>
+ <tr>
+ <th>Description :</th>
+ <td>Lorem ipsum dolor sit amet, consectetur adipisicing elit. In sapiente consectetur amet ipsam rem quae culpa voluptatem excepturi aperiam pariatur eaque explicabo. Voluptates natus nulla repellat dolorem animi ut voluptate.</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="box-edition">
+ <h3>Mots clés :</h3>
+ <ul class="list-key-search clearfix">
+ <li><a class="box-shadow-2" href="#">hello</a></li>
+ <li><a class="box-shadow-2" href="#">hello word</a></li>
+ <li><a class="box-shadow-2" href="#">Delacroix</a></li>
+ <li><a class="box-shadow-2" href="#">Lorem ipsum dolor sit amet</a></li>
+ <li><a class="box-shadow-2" href="#">hello</a></li>
+ <li><a class="box-shadow-2" href="#">hello word</a></li>
+ <li><a class="box-shadow-2" href="#">Delacroix</a></li>
+ <li><a class="box-shadow-2" href="#">Lorem ipsum dolor sit amet</a></li>
+ <li><a class="box-shadow-2" href="#">hello</a></li>
+ <li><a class="box-shadow-2" href="#">hello word</a></li>
+ <li><a class="box-shadow-2" href="#">Delacroix</a></li>
+ <li><a class="box-shadow-2" href="#">Lorem ipsum dolor sit amet</a></li>
+ </ul>
+ </div>
+ <div class="box-edition">
+ <h3>Fragments de cette image :</h3>
+ <p class="null">Pas de fragment</p>
+ </div>
+ <div class="box-edition">
+ <h3>Collections liées à cette image :</h3>
+ <p class="null">Pas de collection</p>
+ </div>
+ </article>
+
+ </section>
+ <footer class="clearfix">
+ <h6>EGONOMY est un projet de l’IRI et de la réunion des Musées Nationaux</h6>
+ <p>Mai 2013</p>
+ </footer>
+ </div><!-- /.wrap -->
+
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+ <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.9.1.min.js"><\/script>')</script>
+ <script src="js/masonry.min.js"></script>
+ <script src="js/main.js"></script>
+</body>
+</html>
--- a/integration/v2/css/fonts.css Wed Jun 19 15:15:05 2013 +0200
+++ b/integration/v2/css/fonts.css Thu Jun 20 15:03:13 2013 +0200
@@ -232,7 +232,7 @@
}
@font-face {
- font-family: 'LatoBold';
+ font-family: 'Lato';
src: url('fonts/lato/Lato-BolIta-webfont.eot');
src: url('fonts/lato/Lato-BolIta-webfont.eot?#iefix') format('embedded-opentype'),
url('fonts/lato/Lato-BolIta-webfont.woff') format('woff'),
--- a/integration/v2/css/style.css Wed Jun 19 15:15:05 2013 +0200
+++ b/integration/v2/css/style.css Thu Jun 20 15:03:13 2013 +0200
@@ -3,7 +3,7 @@
.wrap{width: 950px; margin: 0 auto; }
.uppercase{text-transform: uppercase;}
.fragment{width: 225px; height: 225px;}
-
+.va-top{vertical-align: top;}
header, footer{width:100%;background: url(../img/border-bottom-header.png) center bottom no-repeat;}
footer{margin-bottom: 60px;background-position: top center; padding-top: 20px;font-size: 15px; font-family: 'Lato'; font-weight: 300;}
footer h6{float: left;}
@@ -107,7 +107,8 @@
.list-projets-3 .project-title{position:relative; padding-left: 14px; font-size: 18px;height: 60px; border-bottom: 1px solid #CCC;}
.project-title h3{ font-family: 'Lato'; font-weight : bold; padding-top: 12px; margin-bottom: 4px; }
.project-title h4{ font-family: 'Lato'; font-weight: 300; font-style: italic;}
-.project-title a.edit{ position: absolute; top: 10px; right: 10px;}
+.project-title a.edit{ position: absolute; top: 10px; right: 10px; opacity: 0.7;}
+.project-title a.edit:hover{opacity: 1;}
.list-projets-3 .col-right p{max-height:200px; overflow: auto; padding: 10px 12px;font-size: 14px; font-family: 'Lato'; line-height: 18px;}
.list-projets-3>li:hover{-webkit-box-shadow: 1px 1px 5px rgba(50, 50, 50, 0.75);-moz-box-shadow: 1px 1px 5px rgba(50, 50, 50, 0.75);box-shadow: 1px 1px 5px rgba(50, 50, 50, 0.75);}
@@ -141,6 +142,7 @@
.tool.trash:hover{background-position: -140px 0;}
.box-shadow{ -webkit-box-shadow: 1px 1px 5px rgba(50, 50, 50, 0.75);-moz-box-shadow: 1px 1px 5px rgba(50, 50, 50, 0.75);box-shadow: 1px 1px 5px rgba(50, 50, 50, 0.75);}
+.box-shadow-2{ -webkit-box-shadow: 1px 1px 2px rgba(50, 50, 50, 0.75);-moz-box-shadow: 1px 1px 2px rgba(50, 50, 50, 0.75);box-shadow: 1px 1px 2px rgba(50, 50, 50, 0.75);}
.popin-wrap{width: 100%; height: 100%; position: fixed; z-index: 100; background-color:rgba(255,255,255,.7);}
.popin{width: 460px; background-color: #fff; top: 10%; position: absolute; left: 50%; margin-left: -230px;}
.popin h2{ font-size: 14px; font-family: 'Lato'; padding: 14px 0 10px 12px;}
@@ -165,10 +167,29 @@
.slideshow .share{position: absolute; bottom: 24px; right: 0;}
.slideshow .share li{float: left; margin-left: 8px;}
.image-wrap{display: inline-block;}
-.info{font-family: 'Lato'; font-size: 14px; text-align: left;}
-.info th{color: #777; min-width: 140px; }
-.info td{color: #000; line-height: 16px;}
-.info table{border-collapse:separate;border-spacing:0 5px;}
+.edition{font-family: 'Lato'; font-size: 14px; text-align: left;}
+
+.edition th{color: #777; min-width: 140px; }
+.edition td{width:100%;color: #000; line-height: 16px;}
+.edition table{width: 100%; border-collapse:separate;border-spacing:0 5px;}
.box-edition{padding: 16px 0; border-bottom: 1px solid #CCC;}
.box-edition h3{color: #777;font-family: 'Lato'; font-size: 14px; margin-bottom: 6px;}
-.list-key-search a{display: inline-block;}
\ No newline at end of file
+
+.list-key-search a{ background-image: url(../img/icon-search.png);}
+.list-key-add a{ background-image: url(../img/icon-plus-15.png);}
+
+.list-keywords li{display: inline-block; float: left; margin: 0 8px 8px 0;}
+.list-keywords a{color: #7F7F7F; font-family: 'Lato'; font-size: 12px; display: inline-block; height: 28px; line-height: 28px; padding: 0 30px 0 6px;
+background-position: right 4px center; background-repeat: no-repeat; background-color: #fff;}
+.list-keywords a:hover{-webkit-box-shadow: none;-moz-box-shadow: none;box-shadow: none;}
+
+.f-right{float: right;}
+.fs-normal{font-style: normal;}
+.pt-6{padding-top: 6px;}
+.null{font-weight: bold;font-style: italic; font-family: 'Lato'; color: #CCC; font-style: 18px; line-height: 50px; text-align: center;}
+.box-edition:last-child{border-bottom: none;}
+.edition input[type=text], .edition textarea{border: 1px solid #CACACA;}
+.edition textarea{width:100%; max-width: 754px;}
+.edition input[type=text]{height: 23px; line-height: 23px; padding: 0 6px;}
+.no-before:before{content:"" ; display: block;}
+.tagit{font-family: 'Lato' !important;}
--- a/integration/v2/js/main.js Wed Jun 19 15:15:05 2013 +0200
+++ b/integration/v2/js/main.js Thu Jun 20 15:03:13 2013 +0200
@@ -26,5 +26,15 @@
$('.popin').bind('click', function(e){
e.stopPropagation();
});
-
+//tag it
+ var keywordsTagIt = $('.tag-it').tagit({
+ allowSpaces : true
+ });
+ $('.list-key-add a').bind('click', function(e){
+ e.preventDefault();
+ var tag = $(this).attr('data-tag');
+ keywordsTagIt.tagit("createTag", tag);
+ });
+
+
});//ready
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/integration/v2/lib/tag-it/css/jquery.tagit.css Thu Jun 20 15:03:13 2013 +0200
@@ -0,0 +1,67 @@
+ul.tagit {
+ padding: 1px 5px;
+ overflow: auto;
+ margin-left: inherit; /* usually we don't want the regular ul margins. */
+ margin-right: inherit;
+}
+ul.tagit li {
+ display: block;
+ float: left;
+ margin: 2px 5px 2px 0;
+}
+ul.tagit li.tagit-choice {
+ position: relative;
+ line-height: inherit;
+}
+
+ul.tagit li.tagit-choice-read-only {
+ padding: .2em .5em .2em .5em;
+}
+
+ul.tagit li.tagit-choice-editable {
+ padding: .2em 18px .2em .5em;
+}
+
+ul.tagit li.tagit-new {
+ padding: .25em 4px .25em 0;
+}
+
+ul.tagit li.tagit-choice a.tagit-label {
+ cursor: pointer;
+ text-decoration: none;
+}
+ul.tagit li.tagit-choice .tagit-close {
+ cursor: pointer;
+ position: absolute;
+ right: .1em;
+ top: 50%;
+ margin-top: -8px;
+ line-height: 17px;
+}
+
+/* used for some custom themes that don't need image icons */
+ul.tagit li.tagit-choice .tagit-close .text-icon {
+ display: none;
+}
+
+ul.tagit li.tagit-choice input {
+ display: block;
+ float: left;
+ margin: 2px 5px 2px 0;
+}
+ul.tagit input[type="text"] {
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+
+ border: none;
+ margin: 0;
+ padding: 0;
+ width: inherit;
+ background-color: inherit;
+ outline: none;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/integration/v2/lib/tag-it/css/tagit.ui-zendesk.css Thu Jun 20 15:03:13 2013 +0200
@@ -0,0 +1,56 @@
+
+/* Optional scoped theme for tag-it which mimics the zendesk widget. */
+
+
+ul.tagit {
+ border-style: solid;
+ border-width: 1px;
+ border-color: #C6C6C6;
+ background: inherit;
+}
+ul.tagit li.tagit-choice {
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-border-radius: 6px;
+ border: 1px solid #CAD8F3;
+
+ background: none;
+ background-color: #DEE7F8;
+
+ font-weight: normal;
+}
+ul.tagit li.tagit-choice .tagit-label:not(a) {
+ color: #555;
+}
+ul.tagit li.tagit-choice a.tagit-close {
+ text-decoration: none;
+}
+ul.tagit li.tagit-choice .tagit-close {
+ right: .4em;
+}
+ul.tagit li.tagit-choice .ui-icon {
+ display: none;
+}
+ul.tagit li.tagit-choice .tagit-close .text-icon {
+ display: inline;
+ font-family: arial, sans-serif;
+ font-size: 16px;
+ line-height: 16px;
+ color: #777;
+}
+ul.tagit li.tagit-choice:hover, ul.tagit li.tagit-choice.remove {
+ background-color: #bbcef1;
+ border-color: #6d95e0;
+}
+ul.tagit li.tagit-choice a.tagLabel:hover,
+ul.tagit li.tagit-choice a.tagit-close .text-icon:hover {
+ color: #222;
+}
+ul.tagit input[type="text"] {
+ color: #333333;
+ background: none;
+}
+.ui-widget {
+ font-size: 1.1em;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/integration/v2/lib/tag-it/js/tag-it.js Thu Jun 20 15:03:13 2013 +0200
@@ -0,0 +1,541 @@
+/*
+* jQuery UI Tag-it!
+*
+* @version v2.0 (06/2011)
+*
+* Copyright 2011, Levy Carneiro Jr.
+* Released under the MIT license.
+* http://aehlke.github.com/tag-it/LICENSE
+*
+* Homepage:
+* http://aehlke.github.com/tag-it/
+*
+* Authors:
+* Levy Carneiro Jr.
+* Martin Rehfeld
+* Tobias Schmidt
+* Skylar Challand
+* Alex Ehlke
+*
+* Maintainer:
+* Alex Ehlke - Twitter: @aehlke
+*
+* Dependencies:
+* jQuery v1.4+
+* jQuery UI v1.8+
+*/
+(function($) {
+
+ $.widget('ui.tagit', {
+ options: {
+ allowDuplicates : false,
+ caseSensitive : true,
+ fieldName : 'tags',
+ placeholderText : null, // Sets `placeholder` attr on input field.
+ readOnly : false, // Disables editing.
+ removeConfirmation: false, // Require confirmation to remove tags.
+ tagLimit : null, // Max number of tags allowed (null for unlimited).
+
+ // Used for autocomplete, unless you override `autocomplete.source`.
+ availableTags : [],
+
+ // Use to override or add any options to the autocomplete widget.
+ //
+ // By default, autocomplete.source will map to availableTags,
+ // unless overridden.
+ autocomplete: {},
+
+ // Shows autocomplete before the user even types anything.
+ showAutocompleteOnFocus: false,
+
+ // When enabled, quotes are unneccesary for inputting multi-word tags.
+ allowSpaces: false,
+
+ // The below options are for using a single field instead of several
+ // for our form values.
+ //
+ // When enabled, will use a single hidden field for the form,
+ // rather than one per tag. It will delimit tags in the field
+ // with singleFieldDelimiter.
+ //
+ // The easiest way to use singleField is to just instantiate tag-it
+ // on an INPUT element, in which case singleField is automatically
+ // set to true, and singleFieldNode is set to that element. This
+ // way, you don't need to fiddle with these options.
+ singleField: false,
+
+ // This is just used when preloading data from the field, and for
+ // populating the field with delimited tags as the user adds them.
+ singleFieldDelimiter: ',',
+
+ // Set this to an input DOM node to use an existing form field.
+ // Any text in it will be erased on init. But it will be
+ // populated with the text of tags as they are created,
+ // delimited by singleFieldDelimiter.
+ //
+ // If this is not set, we create an input node for it,
+ // with the name given in settings.fieldName.
+ singleFieldNode: null,
+
+ // Whether to animate tag removals or not.
+ animate: true,
+
+ // Optionally set a tabindex attribute on the input that gets
+ // created for tag-it.
+ tabIndex: null,
+
+ // Event callbacks.
+ beforeTagAdded : null,
+ afterTagAdded : null,
+
+ beforeTagRemoved : null,
+ afterTagRemoved : null,
+
+ onTagClicked : null,
+ onTagLimitExceeded : null,
+
+
+ // DEPRECATED:
+ //
+ // /!\ These event callbacks are deprecated and WILL BE REMOVED at some
+ // point in the future. They're here for backwards-compatibility.
+ // Use the above before/after event callbacks instead.
+ onTagAdded : null,
+ onTagRemoved: null,
+ // `autocomplete.source` is the replacement for tagSource.
+ tagSource: null
+ // Do not use the above deprecated options.
+ },
+
+ _create: function() {
+ // for handling static scoping inside callbacks
+ var that = this;
+
+ // There are 2 kinds of DOM nodes this widget can be instantiated on:
+ // 1. UL, OL, or some element containing either of these.
+ // 2. INPUT, in which case 'singleField' is overridden to true,
+ // a UL is created and the INPUT is hidden.
+ if (this.element.is('input')) {
+ this.tagList = $('<ul></ul>').insertAfter(this.element);
+ this.options.singleField = true;
+ this.options.singleFieldNode = this.element;
+ this.element.css('display', 'none');
+ } else {
+ this.tagList = this.element.find('ul, ol').andSelf().last();
+ }
+
+ this.tagInput = $('<input type="text" />').addClass('ui-widget-content');
+
+ if (this.options.readOnly) this.tagInput.attr('disabled', 'disabled');
+
+ if (this.options.tabIndex) {
+ this.tagInput.attr('tabindex', this.options.tabIndex);
+ }
+
+ if (this.options.placeholderText) {
+ this.tagInput.attr('placeholder', this.options.placeholderText);
+ }
+
+ if (!this.options.autocomplete.source) {
+ this.options.autocomplete.source = function(search, showChoices) {
+ var filter = search.term.toLowerCase();
+ var choices = $.grep(this.options.availableTags, function(element) {
+ // Only match autocomplete options that begin with the search term.
+ // (Case insensitive.)
+ return (element.toLowerCase().indexOf(filter) === 0);
+ });
+ if (!this.options.allowDuplicates) {
+ choices = this._subtractArray(choices, this.assignedTags());
+ }
+ showChoices(choices);
+ };
+ }
+
+ if (this.options.showAutocompleteOnFocus) {
+ this.tagInput.focus(function(event, ui) {
+ that._showAutocomplete();
+ });
+
+ if (typeof this.options.autocomplete.minLength === 'undefined') {
+ this.options.autocomplete.minLength = 0;
+ }
+ }
+
+ // Bind autocomplete.source callback functions to this context.
+ if ($.isFunction(this.options.autocomplete.source)) {
+ this.options.autocomplete.source = $.proxy(this.options.autocomplete.source, this);
+ }
+
+ // DEPRECATED.
+ if ($.isFunction(this.options.tagSource)) {
+ this.options.tagSource = $.proxy(this.options.tagSource, this);
+ }
+
+ this.tagList
+ .addClass('tagit')
+ .addClass('ui-widget ui-widget-content ui-corner-all')
+ // Create the input field.
+ .append($('<li class="tagit-new"></li>').append(this.tagInput))
+ .click(function(e) {
+ var target = $(e.target);
+ if (target.hasClass('tagit-label')) {
+ var tag = target.closest('.tagit-choice');
+ if (!tag.hasClass('removed')) {
+ that._trigger('onTagClicked', e, {tag: tag, tagLabel: that.tagLabel(tag)});
+ }
+ } else {
+ // Sets the focus() to the input field, if the user
+ // clicks anywhere inside the UL. This is needed
+ // because the input field needs to be of a small size.
+ that.tagInput.focus();
+ }
+ });
+
+ // Single field support.
+ var addedExistingFromSingleFieldNode = false;
+ if (this.options.singleField) {
+ if (this.options.singleFieldNode) {
+ // Add existing tags from the input field.
+ var node = $(this.options.singleFieldNode);
+ var tags = node.val().split(this.options.singleFieldDelimiter);
+ node.val('');
+ $.each(tags, function(index, tag) {
+ that.createTag(tag, null, true);
+ addedExistingFromSingleFieldNode = true;
+ });
+ } else {
+ // Create our single field input after our list.
+ this.options.singleFieldNode = $('<input type="hidden" style="display:none;" value="" name="' + this.options.fieldName + '" />');
+ this.tagList.after(this.options.singleFieldNode);
+ }
+ }
+
+ // Add existing tags from the list, if any.
+ if (!addedExistingFromSingleFieldNode) {
+ this.tagList.children('li').each(function() {
+ if (!$(this).hasClass('tagit-new')) {
+ that.createTag($(this).text(), $(this).attr('class'), true);
+ $(this).remove();
+ }
+ });
+ }
+
+ // Events.
+ this.tagInput
+ .keydown(function(event) {
+ // Backspace is not detected within a keypress, so it must use keydown.
+ if (event.which == $.ui.keyCode.BACKSPACE && that.tagInput.val() === '') {
+ var tag = that._lastTag();
+ if (!that.options.removeConfirmation || tag.hasClass('remove')) {
+ // When backspace is pressed, the last tag is deleted.
+ that.removeTag(tag);
+ } else if (that.options.removeConfirmation) {
+ tag.addClass('remove ui-state-highlight');
+ }
+ } else if (that.options.removeConfirmation) {
+ that._lastTag().removeClass('remove ui-state-highlight');
+ }
+
+ // Comma/Space/Enter are all valid delimiters for new tags,
+ // except when there is an open quote or if setting allowSpaces = true.
+ // Tab will also create a tag, unless the tag input is empty,
+ // in which case it isn't caught.
+ if (
+ event.which === $.ui.keyCode.COMMA ||
+ event.which === $.ui.keyCode.ENTER ||
+ (
+ event.which == $.ui.keyCode.TAB &&
+ that.tagInput.val() !== ''
+ ) ||
+ (
+ event.which == $.ui.keyCode.SPACE &&
+ that.options.allowSpaces !== true &&
+ (
+ $.trim(that.tagInput.val()).replace( /^s*/, '' ).charAt(0) != '"' ||
+ (
+ $.trim(that.tagInput.val()).charAt(0) == '"' &&
+ $.trim(that.tagInput.val()).charAt($.trim(that.tagInput.val()).length - 1) == '"' &&
+ $.trim(that.tagInput.val()).length - 1 !== 0
+ )
+ )
+ )
+ ) {
+ // Enter submits the form if there's no text in the input.
+ if (!(event.which === $.ui.keyCode.ENTER && that.tagInput.val() === '')) {
+ event.preventDefault();
+ }
+
+ // Autocomplete will create its own tag from a selection and close automatically.
+ if (!that.tagInput.data('autocomplete-open')) {
+ that.createTag(that._cleanedInput());
+ }
+ }
+ }).blur(function(e){
+ // Create a tag when the element loses focus.
+ // If autocomplete is enabled and suggestion was clicked, don't add it.
+ if (!that.tagInput.data('autocomplete-open')) {
+ that.createTag(that._cleanedInput());
+ }
+ });
+
+ // Autocomplete.
+ if (this.options.availableTags || this.options.tagSource || this.options.autocomplete.source) {
+ var autocompleteOptions = {
+ select: function(event, ui) {
+ that.createTag(ui.item.value);
+ // Preventing the tag input to be updated with the chosen value.
+ return false;
+ }
+ };
+ $.extend(autocompleteOptions, this.options.autocomplete);
+
+ // tagSource is deprecated, but takes precedence here since autocomplete.source is set by default,
+ // while tagSource is left null by default.
+ autocompleteOptions.source = this.options.tagSource || autocompleteOptions.source;
+
+ this.tagInput.autocomplete(autocompleteOptions).bind('autocompleteopen', function(event, ui) {
+ that.tagInput.data('autocomplete-open', true);
+ }).bind('autocompleteclose', function(event, ui) {
+ that.tagInput.data('autocomplete-open', false)
+ });
+ }
+ },
+
+ _cleanedInput: function() {
+ // Returns the contents of the tag input, cleaned and ready to be passed to createTag
+ return $.trim(this.tagInput.val().replace(/^"(.*)"$/, '$1'));
+ },
+
+ _lastTag: function() {
+ return this.tagList.find('.tagit-choice:last:not(.removed)');
+ },
+
+ _tags: function() {
+ return this.tagList.find('.tagit-choice:not(.removed)');
+ },
+
+ assignedTags: function() {
+ // Returns an array of tag string values
+ var that = this;
+ var tags = [];
+ if (this.options.singleField) {
+ tags = $(this.options.singleFieldNode).val().split(this.options.singleFieldDelimiter);
+ if (tags[0] === '') {
+ tags = [];
+ }
+ } else {
+ this._tags().each(function() {
+ tags.push(that.tagLabel(this));
+ });
+ }
+ return tags;
+ },
+
+ _updateSingleTagsField: function(tags) {
+ // Takes a list of tag string values, updates this.options.singleFieldNode.val to the tags delimited by this.options.singleFieldDelimiter
+ $(this.options.singleFieldNode).val(tags.join(this.options.singleFieldDelimiter)).trigger('change');
+ },
+
+ _subtractArray: function(a1, a2) {
+ var result = [];
+ for (var i = 0; i < a1.length; i++) {
+ if ($.inArray(a1[i], a2) == -1) {
+ result.push(a1[i]);
+ }
+ }
+ return result;
+ },
+
+ tagLabel: function(tag) {
+ // Returns the tag's string label.
+ if (this.options.singleField) {
+ return $(tag).find('.tagit-label:first').text();
+ } else {
+ return $(tag).find('input:first').val();
+ }
+ },
+
+ _showAutocomplete: function() {
+ this.tagInput.autocomplete('search', '');
+ },
+
+ _findTagByLabel: function(name) {
+ var that = this;
+ var tag = null;
+ this._tags().each(function(i) {
+ if (that._formatStr(name) == that._formatStr(that.tagLabel(this))) {
+ tag = $(this);
+ return false;
+ }
+ });
+ return tag;
+ },
+
+ _isNew: function(name) {
+ return !this._findTagByLabel(name);
+ },
+
+ _formatStr: function(str) {
+ if (this.options.caseSensitive) {
+ return str;
+ }
+ return $.trim(str.toLowerCase());
+ },
+
+ _effectExists: function(name) {
+ return Boolean($.effects && ($.effects[name] || ($.effects.effect && $.effects.effect[name])));
+ },
+
+ createTag: function(value, additionalClass, duringInitialization) {
+ var that = this;
+
+ value = $.trim(value);
+
+ if(this.options.preprocessTag) {
+ value = this.options.preprocessTag(value);
+ }
+
+ if (value === '') {
+ return false;
+ }
+
+ if (!this.options.allowDuplicates && !this._isNew(value)) {
+ var existingTag = this._findTagByLabel(value);
+ if (this._trigger('onTagExists', null, {
+ existingTag: existingTag,
+ duringInitialization: duringInitialization
+ }) !== false) {
+ if (this._effectExists('highlight')) {
+ existingTag.effect('highlight');
+ }
+ }
+ return false;
+ }
+
+ if (this.options.tagLimit && this._tags().length >= this.options.tagLimit) {
+ this._trigger('onTagLimitExceeded', null, {duringInitialization: duringInitialization});
+ return false;
+ }
+
+ var label = $(this.options.onTagClicked ? '<a class="tagit-label"></a>' : '<span class="tagit-label"></span>').text(value);
+
+ // Create tag.
+ var tag = $('<li></li>')
+ .addClass('tagit-choice ui-widget-content ui-state-default ui-corner-all')
+ .addClass(additionalClass)
+ .append(label);
+
+ if (this.options.readOnly){
+ tag.addClass('tagit-choice-read-only');
+ } else {
+ tag.addClass('tagit-choice-editable');
+ // Button for removing the tag.
+ var removeTagIcon = $('<span></span>')
+ .addClass('ui-icon ui-icon-close');
+ var removeTag = $('<a><span class="text-icon">\xd7</span></a>') // \xd7 is an X
+ .addClass('tagit-close')
+ .append(removeTagIcon)
+ .click(function(e) {
+ // Removes a tag when the little 'x' is clicked.
+ that.removeTag(tag);
+ });
+ tag.append(removeTag);
+ }
+
+ // Unless options.singleField is set, each tag has a hidden input field inline.
+ if (!this.options.singleField) {
+ var escapedValue = label.html();
+ tag.append('<input type="hidden" style="display:none;" value="' + escapedValue + '" name="' + this.options.fieldName + '" />');
+ }
+
+ if (this._trigger('beforeTagAdded', null, {
+ tag: tag,
+ tagLabel: this.tagLabel(tag),
+ duringInitialization: duringInitialization
+ }) === false) {
+ return;
+ }
+
+ if (this.options.singleField) {
+ var tags = this.assignedTags();
+ tags.push(value);
+ this._updateSingleTagsField(tags);
+ }
+
+ // DEPRECATED.
+ this._trigger('onTagAdded', null, tag);
+
+ this.tagInput.val('');
+
+ // Insert tag.
+ this.tagInput.parent().before(tag);
+
+ this._trigger('afterTagAdded', null, {
+ tag: tag,
+ tagLabel: this.tagLabel(tag),
+ duringInitialization: duringInitialization
+ });
+
+ if (this.options.showAutocompleteOnFocus && !duringInitialization) {
+ setTimeout(function () { that._showAutocomplete(); }, 0);
+ }
+ },
+
+ removeTag: function(tag, animate) {
+ animate = typeof animate === 'undefined' ? this.options.animate : animate;
+
+ tag = $(tag);
+
+ // DEPRECATED.
+ this._trigger('onTagRemoved', null, tag);
+
+ if (this._trigger('beforeTagRemoved', null, {tag: tag, tagLabel: this.tagLabel(tag)}) === false) {
+ return;
+ }
+
+ if (this.options.singleField) {
+ var tags = this.assignedTags();
+ var removedTagLabel = this.tagLabel(tag);
+ tags = $.grep(tags, function(el){
+ return el != removedTagLabel;
+ });
+ this._updateSingleTagsField(tags);
+ }
+
+ if (animate) {
+ tag.addClass('removed'); // Excludes this tag from _tags.
+ var hide_args = this._effectExists('blind') ? ['blind', {direction: 'horizontal'}, 'fast'] : ['fast'];
+
+ var thisTag = this;
+ hide_args.push(function() {
+ tag.remove();
+ thisTag._trigger('afterTagRemoved', null, {tag: tag, tagLabel: thisTag.tagLabel(tag)});
+ });
+
+ tag.fadeOut('fast').hide.apply(tag, hide_args).dequeue();
+ } else {
+ tag.remove();
+ this._trigger('afterTagRemoved', null, {tag: tag, tagLabel: this.tagLabel(tag)});
+ }
+
+ },
+
+ removeTagByLabel: function(tagLabel, animate) {
+ var toRemove = this._findTagByLabel(tagLabel);
+ if (!toRemove) {
+ throw "No such tag exists with the name '" + tagLabel + "'";
+ }
+ this.removeTag(toRemove, animate);
+ },
+
+ removeAll: function() {
+ // Removes all tags.
+ var that = this;
+ this._tags().each(function(index, tag) {
+ that.removeTag(tag, false);
+ });
+ }
+
+ });
+})(jQuery);
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/integration/v2/lib/tag-it/js/tag-it.min.js Thu Jun 20 15:03:13 2013 +0200
@@ -0,0 +1,17 @@
+(function(b){b.widget("ui.tagit",{options:{allowDuplicates:!1,caseSensitive:!0,fieldName:"tags",placeholderText:null,readOnly:!1,removeConfirmation:!1,tagLimit:null,availableTags:[],autocomplete:{},showAutocompleteOnFocus:!1,allowSpaces:!1,singleField:!1,singleFieldDelimiter:",",singleFieldNode:null,animate:!0,tabIndex:null,beforeTagAdded:null,afterTagAdded:null,beforeTagRemoved:null,afterTagRemoved:null,onTagClicked:null,onTagLimitExceeded:null,onTagAdded:null,onTagRemoved:null,tagSource:null},_create:function(){var a=
+this;this.element.is("input")?(this.tagList=b("<ul></ul>").insertAfter(this.element),this.options.singleField=!0,this.options.singleFieldNode=this.element,this.element.css("display","none")):this.tagList=this.element.find("ul, ol").andSelf().last();this.tagInput=b('<input type="text" />').addClass("ui-widget-content");this.options.readOnly&&this.tagInput.attr("disabled","disabled");this.options.tabIndex&&this.tagInput.attr("tabindex",this.options.tabIndex);this.options.placeholderText&&this.tagInput.attr("placeholder",
+this.options.placeholderText);this.options.autocomplete.source||(this.options.autocomplete.source=function(a,c){var d=a.term.toLowerCase(),e=b.grep(this.options.availableTags,function(a){return 0===a.toLowerCase().indexOf(d)});this.options.allowDuplicates||(e=this._subtractArray(e,this.assignedTags()));c(e)});this.options.showAutocompleteOnFocus&&(this.tagInput.focus(function(){a._showAutocomplete()}),"undefined"===typeof this.options.autocomplete.minLength&&(this.options.autocomplete.minLength=0));
+b.isFunction(this.options.autocomplete.source)&&(this.options.autocomplete.source=b.proxy(this.options.autocomplete.source,this));b.isFunction(this.options.tagSource)&&(this.options.tagSource=b.proxy(this.options.tagSource,this));this.tagList.addClass("tagit").addClass("ui-widget ui-widget-content ui-corner-all").append(b('<li class="tagit-new"></li>').append(this.tagInput)).click(function(c){var d=b(c.target);d.hasClass("tagit-label")?(d=d.closest(".tagit-choice"),d.hasClass("removed")||a._trigger("onTagClicked",
+c,{tag:d,tagLabel:a.tagLabel(d)})):a.tagInput.focus()});var d=!1;if(this.options.singleField)if(this.options.singleFieldNode){var c=b(this.options.singleFieldNode),e=c.val().split(this.options.singleFieldDelimiter);c.val("");b.each(e,function(b,c){a.createTag(c,null,!0);d=!0})}else this.options.singleFieldNode=b('<input type="hidden" style="display:none;" value="" name="'+this.options.fieldName+'" />'),this.tagList.after(this.options.singleFieldNode);d||this.tagList.children("li").each(function(){b(this).hasClass("tagit-new")||
+(a.createTag(b(this).text(),b(this).attr("class"),!0),b(this).remove())});this.tagInput.keydown(function(c){if(c.which==b.ui.keyCode.BACKSPACE&&""===a.tagInput.val()){var d=a._lastTag();!a.options.removeConfirmation||d.hasClass("remove")?a.removeTag(d):a.options.removeConfirmation&&d.addClass("remove ui-state-highlight")}else a.options.removeConfirmation&&a._lastTag().removeClass("remove ui-state-highlight");if(c.which===b.ui.keyCode.COMMA||c.which===b.ui.keyCode.ENTER||c.which==b.ui.keyCode.TAB&&
+""!==a.tagInput.val()||c.which==b.ui.keyCode.SPACE&&!0!==a.options.allowSpaces&&('"'!=b.trim(a.tagInput.val()).replace(/^s*/,"").charAt(0)||'"'==b.trim(a.tagInput.val()).charAt(0)&&'"'==b.trim(a.tagInput.val()).charAt(b.trim(a.tagInput.val()).length-1)&&0!==b.trim(a.tagInput.val()).length-1))c.which===b.ui.keyCode.ENTER&&""===a.tagInput.val()||c.preventDefault(),a.tagInput.data("autocomplete-open")||a.createTag(a._cleanedInput())}).blur(function(){a.tagInput.data("autocomplete-open")||a.createTag(a._cleanedInput())});
+if(this.options.availableTags||this.options.tagSource||this.options.autocomplete.source)c={select:function(b,c){a.createTag(c.item.value);return!1}},b.extend(c,this.options.autocomplete),c.source=this.options.tagSource||c.source,this.tagInput.autocomplete(c).bind("autocompleteopen",function(){a.tagInput.data("autocomplete-open",!0)}).bind("autocompleteclose",function(){a.tagInput.data("autocomplete-open",!1)})},_cleanedInput:function(){return b.trim(this.tagInput.val().replace(/^"(.*)"$/,"$1"))},
+_lastTag:function(){return this.tagList.find(".tagit-choice:last:not(.removed)")},_tags:function(){return this.tagList.find(".tagit-choice:not(.removed)")},assignedTags:function(){var a=this,d=[];this.options.singleField?(d=b(this.options.singleFieldNode).val().split(this.options.singleFieldDelimiter),""===d[0]&&(d=[])):this._tags().each(function(){d.push(a.tagLabel(this))});return d},_updateSingleTagsField:function(a){b(this.options.singleFieldNode).val(a.join(this.options.singleFieldDelimiter)).trigger("change")},
+_subtractArray:function(a,d){for(var c=[],e=0;e<a.length;e++)-1==b.inArray(a[e],d)&&c.push(a[e]);return c},tagLabel:function(a){return this.options.singleField?b(a).find(".tagit-label:first").text():b(a).find("input:first").val()},_showAutocomplete:function(){this.tagInput.autocomplete("search","")},_findTagByLabel:function(a){var d=this,c=null;this._tags().each(function(){if(d._formatStr(a)==d._formatStr(d.tagLabel(this)))return c=b(this),!1});return c},_isNew:function(a){return!this._findTagByLabel(a)},
+_formatStr:function(a){return this.options.caseSensitive?a:b.trim(a.toLowerCase())},_effectExists:function(a){return Boolean(b.effects&&(b.effects[a]||b.effects.effect&&b.effects.effect[a]))},createTag:function(a,d,c){var e=this;a=b.trim(a);this.options.preprocessTag&&(a=this.options.preprocessTag(a));if(""===a)return!1;if(!this.options.allowDuplicates&&!this._isNew(a))return a=this._findTagByLabel(a),!1!==this._trigger("onTagExists",null,{existingTag:a,duringInitialization:c})&&this._effectExists("highlight")&&
+a.effect("highlight"),!1;if(this.options.tagLimit&&this._tags().length>=this.options.tagLimit)return this._trigger("onTagLimitExceeded",null,{duringInitialization:c}),!1;var g=b(this.options.onTagClicked?'<a class="tagit-label"></a>':'<span class="tagit-label"></span>').text(a),f=b("<li></li>").addClass("tagit-choice ui-widget-content ui-state-default ui-corner-all").addClass(d).append(g);this.options.readOnly?f.addClass("tagit-choice-read-only"):(f.addClass("tagit-choice-editable"),d=b("<span></span>").addClass("ui-icon ui-icon-close"),
+d=b('<a><span class="text-icon">\u00d7</span></a>').addClass("tagit-close").append(d).click(function(){e.removeTag(f)}),f.append(d));this.options.singleField||(g=g.html(),f.append('<input type="hidden" style="display:none;" value="'+g+'" name="'+this.options.fieldName+'" />'));!1!==this._trigger("beforeTagAdded",null,{tag:f,tagLabel:this.tagLabel(f),duringInitialization:c})&&(this.options.singleField&&(g=this.assignedTags(),g.push(a),this._updateSingleTagsField(g)),this._trigger("onTagAdded",null,
+f),this.tagInput.val(""),this.tagInput.parent().before(f),this._trigger("afterTagAdded",null,{tag:f,tagLabel:this.tagLabel(f),duringInitialization:c}),this.options.showAutocompleteOnFocus&&!c&&setTimeout(function(){e._showAutocomplete()},0))},removeTag:function(a,d){d="undefined"===typeof d?this.options.animate:d;a=b(a);this._trigger("onTagRemoved",null,a);if(!1!==this._trigger("beforeTagRemoved",null,{tag:a,tagLabel:this.tagLabel(a)})){if(this.options.singleField){var c=this.assignedTags(),e=this.tagLabel(a),
+c=b.grep(c,function(a){return a!=e});this._updateSingleTagsField(c)}if(d){a.addClass("removed");var c=this._effectExists("blind")?["blind",{direction:"horizontal"},"fast"]:["fast"],g=this;c.push(function(){a.remove();g._trigger("afterTagRemoved",null,{tag:a,tagLabel:g.tagLabel(a)})});a.fadeOut("fast").hide.apply(a,c).dequeue()}else a.remove(),this._trigger("afterTagRemoved",null,{tag:a,tagLabel:this.tagLabel(a)})}},removeTagByLabel:function(a,b){var c=this._findTagByLabel(a);if(!c)throw"No such tag exists with the name '"+
+a+"'";this.removeTag(c,b)},removeAll:function(){var a=this;this._tags().each(function(b,c){a.removeTag(c,!1)})}})})(jQuery);
+jQuery.curCSS = jQuery.css;
\ No newline at end of file