[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / spip-bonux / 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 jQuery(document).ready(function(){
13 var picked = jQuery('ul.item_picked');
14 if (picked.length) {
15 picked.find('>li').removeClass('last').find('li:last').addClass('last');
16 }
17 });
18
19 jQuery.fn.picker_toggle = function(){
20 var browser = jQuery(this).parents('.item_picker').find('.browser');
21 if (browser.is(':visible')){
22 if (jQuery.browser.msie)
23 browser.hide();
24 else
25 browser.slideUp();
26 jQuery('a.close',this).hide();
27 jQuery('a.edit',this).show();
28 }
29 else {
30 browser.show();
31 jQuery('a.close',this).show();
32 jQuery('a.edit',this).hide();
33 }
34 }
35
36 // stop animation du bloc cible pour faire patienter
37 jQuery.fn.stopAnimeajax = function(end) {
38 this.children().css('opacity', 1.0);
39 this.find('.image_loading').html('');
40 return this; // don't break the chain
41 }
42
43 jQuery.fn.item_pick = function(id_item,name,title,type){
44 var picker = this.parents('.item_picker');
45 var picked = picker.siblings('ul.item_picked');
46 if (!picked.length) {
47 picker.before("<ul class='item_picked'></ul>");
48 picked = picker.siblings('ul.item_picked');
49 }
50 var select = picked.is('.select');
51 if (select)
52 picked.html('');
53 else
54 jQuery('li.on',picked).removeClass('on');
55 var sel=jQuery('input[value="'+id_item+'"]',picked);
56 if (sel.length==0){
57 picked.addClass('changing').animeajax();
58 // simulons de la latence pour l'oeil de l'utilisateur
59 setTimeout(function(){
60 jQuery('li:last',picked).removeClass('last');
61 picked.append('<li class="last on '+type+'">'
62 +'<input type="hidden" name="'+name+'[]" value="'+id_item+'"/>'
63 + title
64 +(select?"":" <a href='#' onclick='jQuery(this).item_unpick();return false;'>"
65 +"<img src='"+img_unpick+"' /></a>"
66 )
67 +'<span class="sep">, </span></li>').removeClass('changing').stopAnimeajax();
68 // masquer le selecteur apres un pick
69 picker.find('.picker_bouton').picker_toggle();
70 },300);
71 }
72 else
73 sel.parent().addClass('on');
74 return this; // don't break the chain
75 }
76 jQuery.fn.item_unpick = function(){
77 var picked = this.parents('ul.item_picked');
78 var me = this.parent();
79 jQuery(me).fadeOut('fast');
80 setTimeout(function(){
81 me.remove();
82 picked.find('>li').removeClass('last').find('li:last').addClass('last');
83 },400);
84 }