1/**
2 * DokuWiki Plugin multiselect (JavaScript Component)
3 *
4 * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
5 * @author  lisps
6 */
7function multiselectdone(data) {
8	var ret = ajaxedit_parse(data);
9	ajaxedit_checkResponse(ret);
10}
11
12
13function multiselectclick(id) {
14    if(!(JSINFO && JSINFO['acl_write'] === '1')) return;
15    var id = multiselect_escapeStr(id);
16
17	var $myself = jQuery('#multiselect_'+id);
18	if ($myself) {
19		$myself.toggle();
20		$myself.offset({top:jQuery('#multismiley_'+id).offset().top-7,left:jQuery('#multismiley_'+id).offset().left-7});
21
22	}
23}
24
25function multiclickclick(pageid,id,count) {
26	//hide selector window
27    multiselectclick(id);
28
29    var id = multiselect_escapeStr(id);
30
31	//change smiley
32	var mysmiley=jQuery('#multismiley_'+id)[0];
33	var myselect=jQuery('#multiclick_'+id+"_"+count)[0];
34
35	if ( (mysmiley)&&(myselect) ) {
36		//send only changes
37		if (mysmiley.innerHTML != myselect.innerHTML) {
38			mysmiley.innerHTML=myselect.innerHTML;
39			var token;
40			if (myselect.firstChild.alt) {
41				token=myselect.firstChild.alt;
42			} else {
43				token=myselect.innerHTML;
44			}
45
46			var idx = null;
47			if(jQuery("#multiselect_"+id).parents('div.sortable').length != 0) { //sortable fix
48				idx = jQuery("#multiselect_"+id).data("plugin-multiselect-idx");
49			} else {
50				//because multiselect can be moved it is necessary to idx it on the fly;
51				idx= ajaxedit_getIdxByIdClass('multismiley_'+id,"multismiley_"+multiselect_escapeStr(pageid));
52			}
53			ajaxedit_send2(
54				'multiselect',
55				idx,
56				multiselectdone,
57				{
58                    pageid:pageid,
59					token:token,
60					count:ajaxedit_getIdxByIdClassNodeid('multiclick_'+id+'_'+count,'multiclicker','multiselect_'+id),
61				}
62			);
63
64		}
65		//change order so we are up to date
66		jQuery(jQuery('#multiselect_'+id).children(':first')).insertBefore('#multiclick_'+id+"_"+count);
67		jQuery('#multiselect_'+id).prepend(jQuery('#multiclick_'+id+"_"+count));
68	}
69
70}
71
72
73//close multiselector onclick expect multismiley itselfs
74jQuery(document).ready(function(){
75	jQuery(document).on('click',function(e) {
76		jQuery('.multiselector').hide();
77	});
78	jQuery(document).on('click','.multismiley',function(e) {
79		e.stopPropagation();
80		return false;
81	});
82});
83
84
85function multiselect_escapeStr(str)
86{
87    if (str)
88        return str.replace(/([ #;?%&,.+*~\':"!^$[\]()=>|\/@])/g,'\\$1');
89
90    return str;
91}
92