[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / prive / formulaires / selecteur / jquery.picker.js
1 /**
2 item_picked et picker doivent seulement etre voisins
3
4 <ul class='item_picked'>..</ul>
5 ...
6 ...
7 <xx class='item_picker'>
8 <div class='picker_bouton'>..</div>
9 </xx>
10 ...
11 **/
12 ;if (window.jQuery) {
13
14 jQuery(function($){
15 var picked = $('ul.item_picked');
16 if (picked.length) {
17 picked.find('>li').removeClass('last').find('li:last').addClass('last');
18 }
19 });
20
21 jQuery.fn.picker_toggle = function(){
22 var browser = jQuery(this).parents('.item_picker').find('.browser');
23 if (browser.is(':visible')){
24 if (jQuery.browser.msie)
25 browser.hide();
26 else
27 browser.slideUp();
28 jQuery('a.close',this).hide();
29 jQuery('a.edit',this).show();
30 }
31 else {
32 browser.show();
33 jQuery('a.close',this).show();
34 jQuery('a.edit',this).hide();
35 }
36 }
37
38 // stop animation du bloc cible pour faire patienter
39 jQuery.fn.stopAnimeajax = function(end) {
40 this.children().css('opacity', 1.0);
41 this.find('.image_loading').html('');
42 return this; // don't break the chain
43 }
44
45 jQuery.fn.item_pick = function(id_item,name,title,type){
46 var label_supprimer = (typeof selecteur_label_supprimer != 'undefined') ? selecteur_label_supprimer : 'del';
47 var picker = this.parents('.item_picker');
48 var picked = picker.siblings('ul.item_picked');
49 if (!picked.length) {
50 picker.before("<ul class='item_picked'></ul>");
51 picked = picker.siblings('ul.item_picked');
52 }
53 var select = picked.is('.select');
54 var obligatoire = picked.is('.obligatoire');
55 if (select)
56 picked.html('');
57 else
58 jQuery('li.on',picked).removeClass('on');
59 var sel=jQuery('input[value="'+id_item+'"]',picked);
60 if (sel.length==0){
61 picked.addClass('changing').animeajax();
62 // simulons de la latence pour l'oeil de l'utilisateur
63 setTimeout(function(){
64 jQuery('li:last',picked).removeClass('last');
65 picked.append('<li class="last on '+type+'">'
66 +'<input type="hidden" name="'+name+'[]" value="'+id_item+'"/>'
67 + title
68 +((select&&obligatoire)?"":" <a title='"+label_supprimer+"' href='#' onclick='jQuery(this).item_unpick();return false;'>"
69 +"<img alt='"+label_supprimer+"' src='"+img_unpick+"' /></a>"
70 )
71 +'<span class="sep">, </span></li>').removeClass('changing').stopAnimeajax();
72 // masquer le selecteur apres un pick
73 picker.find('.picker_bouton').picker_toggle();
74 },300);
75 }
76 else
77 sel.parent().addClass('on');
78 return this; // don't break the chain
79 }
80 jQuery.fn.item_unpick = function() {
81 var picked = this.parents('ul.item_picked');
82 var me = this.parent();
83 jQuery(me).fadeOut('fast');
84 setTimeout(function () {
85 me.remove();
86 picked.find('>li').removeClass('last').find('li:last').addClass('last');
87 }, 400);
88 }
89 };