OSDN Git Service

WordPressテンプレート使用ショップデモデータ追加。
[magic3/magic3.git] / templates / shop-isle / inc / customizer / customizer-repeater / js / iconpicker.js
1 (function(a, b) {
2     a.ui = a.ui || {};
3     var c, d = Math.max, e = Math.abs, f = Math.round, g = /left|center|right/, h = /top|center|bottom/, i = /[\+\-]\d+(\.[\d]+)?%?/, j = /^\w+/, k = /%$/, l = a.fn.pos;
4     function m(a, b, c) {
5         return [ parseFloat(a[0]) * (k.test(a[0]) ? b / 100 : 1), parseFloat(a[1]) * (k.test(a[1]) ? c / 100 : 1) ];
6     }
7     function n(b, c) {
8         return parseInt(a.css(b, c), 10) || 0;
9     }
10     function o(b) {
11         var c = b[0];
12         if (c.nodeType === 9) {
13             return {
14                 width: b.width(),
15                 height: b.height(),
16                 offset: {
17                     top: 0,
18                     left: 0
19                 }
20             };
21         }
22         if (a.isWindow(c)) {
23             return {
24                 width: b.width(),
25                 height: b.height(),
26                 offset: {
27                     top: b.scrollTop(),
28                     left: b.scrollLeft()
29                 }
30             };
31         }
32         if (c.preventDefault) {
33             return {
34                 width: 0,
35                 height: 0,
36                 offset: {
37                     top: c.pageY,
38                     left: c.pageX
39                 }
40             };
41         }
42         return {
43             width: b.outerWidth(),
44             height: b.outerHeight(),
45             offset: b.offset()
46         };
47     }
48     a.pos = {
49         scrollbarWidth: function() {
50             if (c !== b) {
51                 return c;
52             }
53             var d, e, f = a("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"), g = f.children()[0];
54             a("body").append(f);
55             d = g.offsetWidth;
56             f.css("overflow", "scroll");
57             e = g.offsetWidth;
58             if (d === e) {
59                 e = f[0].clientWidth;
60             }
61             f.remove();
62             return c = d - e;
63         },
64         getScrollInfo: function(b) {
65             var c = b.isWindow || b.isDocument ? "" : b.element.css("overflow-x"), d = b.isWindow || b.isDocument ? "" : b.element.css("overflow-y"), e = c === "scroll" || c === "auto" && b.width < b.element[0].scrollWidth, f = d === "scroll" || d === "auto" && b.height < b.element[0].scrollHeight;
66             return {
67                 width: f ? a.pos.scrollbarWidth() : 0,
68                 height: e ? a.pos.scrollbarWidth() : 0
69             };
70         },
71         getWithinInfo: function(b) {
72             var c = a(b || window), d = a.isWindow(c[0]), e = !!c[0] && c[0].nodeType === 9;
73             return {
74                 element: c,
75                 isWindow: d,
76                 isDocument: e,
77                 offset: c.offset() || {
78                     left: 0,
79                     top: 0
80                 },
81                 scrollLeft: c.scrollLeft(),
82                 scrollTop: c.scrollTop(),
83                 width: d ? c.width() : c.outerWidth(),
84                 height: d ? c.height() : c.outerHeight()
85             };
86         }
87     };
88     a.fn.pos = function(b) {
89         if (!b || !b.of) {
90             return l.apply(this, arguments);
91         }
92         b = a.extend({}, b);
93         var c, k, p, q, r, s, t = a(b.of), u = a.pos.getWithinInfo(b.within), v = a.pos.getScrollInfo(u), w = (b.collision || "flip").split(" "), x = {};
94         s = o(t);
95         if (t[0].preventDefault) {
96             b.at = "left top";
97         }
98         k = s.width;
99         p = s.height;
100         q = s.offset;
101         r = a.extend({}, q);
102         a.each([ "my", "at" ], function() {
103             var a = (b[this] || "").split(" "), c, d;
104             if (a.length === 1) {
105                 a = g.test(a[0]) ? a.concat([ "center" ]) : h.test(a[0]) ? [ "center" ].concat(a) : [ "center", "center" ];
106             }
107             a[0] = g.test(a[0]) ? a[0] : "center";
108             a[1] = h.test(a[1]) ? a[1] : "center";
109             c = i.exec(a[0]);
110             d = i.exec(a[1]);
111             x[this] = [ c ? c[0] : 0, d ? d[0] : 0 ];
112             b[this] = [ j.exec(a[0])[0], j.exec(a[1])[0] ];
113         });
114         if (w.length === 1) {
115             w[1] = w[0];
116         }
117         if (b.at[0] === "right") {
118             r.left += k;
119         } else if (b.at[0] === "center") {
120             r.left += k / 2;
121         }
122         if (b.at[1] === "bottom") {
123             r.top += p;
124         } else if (b.at[1] === "center") {
125             r.top += p / 2;
126         }
127         c = m(x.at, k, p);
128         r.left += c[0];
129         r.top += c[1];
130         return this.each(function() {
131             var g, h, i = a(this), j = i.outerWidth(), l = i.outerHeight(), o = n(this, "marginLeft"), s = n(this, "marginTop"), y = j + o + n(this, "marginRight") + v.width, z = l + s + n(this, "marginBottom") + v.height, A = a.extend({}, r), B = m(x.my, i.outerWidth(), i.outerHeight());
132             if (b.my[0] === "right") {
133                 A.left -= j;
134             } else if (b.my[0] === "center") {
135                 A.left -= j / 2;
136             }
137             if (b.my[1] === "bottom") {
138                 A.top -= l;
139             } else if (b.my[1] === "center") {
140                 A.top -= l / 2;
141             }
142             A.left += B[0];
143             A.top += B[1];
144             if (!a.support.offsetFractions) {
145                 A.left = f(A.left);
146                 A.top = f(A.top);
147             }
148             g = {
149                 marginLeft: o,
150                 marginTop: s
151             };
152             a.each([ "left", "top" ], function(d, e) {
153                 if (a.ui.pos[w[d]]) {
154                     a.ui.pos[w[d]][e](A, {
155                         targetWidth: k,
156                         targetHeight: p,
157                         elemWidth: j,
158                         elemHeight: l,
159                         collisionPosition: g,
160                         collisionWidth: y,
161                         collisionHeight: z,
162                         offset: [ c[0] + B[0], c[1] + B[1] ],
163                         my: b.my,
164                         at: b.at,
165                         within: u,
166                         elem: i
167                     });
168                 }
169             });
170             if (b.using) {
171                 h = function(a) {
172                     var c = q.left - A.left, f = c + k - j, g = q.top - A.top, h = g + p - l, m = {
173                         target: {
174                             element: t,
175                             left: q.left,
176                             top: q.top,
177                             width: k,
178                             height: p
179                         },
180                         element: {
181                             element: i,
182                             left: A.left,
183                             top: A.top,
184                             width: j,
185                             height: l
186                         },
187                         horizontal: f < 0 ? "left" : c > 0 ? "right" : "center",
188                         vertical: h < 0 ? "top" : g > 0 ? "bottom" : "middle"
189                     };
190                     if (k < j && e(c + f) < k) {
191                         m.horizontal = "center";
192                     }
193                     if (p < l && e(g + h) < p) {
194                         m.vertical = "middle";
195                     }
196                     if (d(e(c), e(f)) > d(e(g), e(h))) {
197                         m.important = "horizontal";
198                     } else {
199                         m.important = "vertical";
200                     }
201                     b.using.call(this, a, m);
202                 };
203             }
204             i.offset(a.extend(A, {
205                 using: h
206             }));
207         });
208     };
209     a.ui.pos = {
210         _trigger: function(a, b, c, d) {
211             if (b.elem) {
212                 b.elem.trigger({
213                     type: c,
214                     position: a,
215                     positionData: b,
216                     triggered: d
217                 });
218             }
219         },
220         fit: {
221             left: function(b, c) {
222                 a.ui.pos._trigger(b, c, "posCollide", "fitLeft");
223                 var e = c.within, f = e.isWindow ? e.scrollLeft : e.offset.left, g = e.width, h = b.left - c.collisionPosition.marginLeft, i = f - h, j = h + c.collisionWidth - g - f, k;
224                 if (c.collisionWidth > g) {
225                     if (i > 0 && j <= 0) {
226                         k = b.left + i + c.collisionWidth - g - f;
227                         b.left += i - k;
228                     } else if (j > 0 && i <= 0) {
229                         b.left = f;
230                     } else {
231                         if (i > j) {
232                             b.left = f + g - c.collisionWidth;
233                         } else {
234                             b.left = f;
235                         }
236                     }
237                 } else if (i > 0) {
238                     b.left += i;
239                 } else if (j > 0) {
240                     b.left -= j;
241                 } else {
242                     b.left = d(b.left - h, b.left);
243                 }
244                 a.ui.pos._trigger(b, c, "posCollided", "fitLeft");
245             },
246             top: function(b, c) {
247                 a.ui.pos._trigger(b, c, "posCollide", "fitTop");
248                 var e = c.within, f = e.isWindow ? e.scrollTop : e.offset.top, g = c.within.height, h = b.top - c.collisionPosition.marginTop, i = f - h, j = h + c.collisionHeight - g - f, k;
249                 if (c.collisionHeight > g) {
250                     if (i > 0 && j <= 0) {
251                         k = b.top + i + c.collisionHeight - g - f;
252                         b.top += i - k;
253                     } else if (j > 0 && i <= 0) {
254                         b.top = f;
255                     } else {
256                         if (i > j) {
257                             b.top = f + g - c.collisionHeight;
258                         } else {
259                             b.top = f;
260                         }
261                     }
262                 } else if (i > 0) {
263                     b.top += i;
264                 } else if (j > 0) {
265                     b.top -= j;
266                 } else {
267                     b.top = d(b.top - h, b.top);
268                 }
269                 a.ui.pos._trigger(b, c, "posCollided", "fitTop");
270             }
271         },
272         flip: {
273             left: function(b, c) {
274                 a.ui.pos._trigger(b, c, "posCollide", "flipLeft");
275                 var d = c.within, f = d.offset.left + d.scrollLeft, g = d.width, h = d.isWindow ? d.scrollLeft : d.offset.left, i = b.left - c.collisionPosition.marginLeft, j = i - h, k = i + c.collisionWidth - g - h, l = c.my[0] === "left" ? -c.elemWidth : c.my[0] === "right" ? c.elemWidth : 0, m = c.at[0] === "left" ? c.targetWidth : c.at[0] === "right" ? -c.targetWidth : 0, n = -2 * c.offset[0], o, p;
276                 if (j < 0) {
277                     o = b.left + l + m + n + c.collisionWidth - g - f;
278                     if (o < 0 || o < e(j)) {
279                         b.left += l + m + n;
280                     }
281                 } else if (k > 0) {
282                     p = b.left - c.collisionPosition.marginLeft + l + m + n - h;
283                     if (p > 0 || e(p) < k) {
284                         b.left += l + m + n;
285                     }
286                 }
287                 a.ui.pos._trigger(b, c, "posCollided", "flipLeft");
288             },
289             top: function(b, c) {
290                 a.ui.pos._trigger(b, c, "posCollide", "flipTop");
291                 var d = c.within, f = d.offset.top + d.scrollTop, g = d.height, h = d.isWindow ? d.scrollTop : d.offset.top, i = b.top - c.collisionPosition.marginTop, j = i - h, k = i + c.collisionHeight - g - h, l = c.my[1] === "top", m = l ? -c.elemHeight : c.my[1] === "bottom" ? c.elemHeight : 0, n = c.at[1] === "top" ? c.targetHeight : c.at[1] === "bottom" ? -c.targetHeight : 0, o = -2 * c.offset[1], p, q;
292                 if (j < 0) {
293                     q = b.top + m + n + o + c.collisionHeight - g - f;
294                     if (b.top + m + n + o > j && (q < 0 || q < e(j))) {
295                         b.top += m + n + o;
296                     }
297                 } else if (k > 0) {
298                     p = b.top - c.collisionPosition.marginTop + m + n + o - h;
299                     if (b.top + m + n + o > k && (p > 0 || e(p) < k)) {
300                         b.top += m + n + o;
301                     }
302                 }
303                 a.ui.pos._trigger(b, c, "posCollided", "flipTop");
304             }
305         },
306         flipfit: {
307             left: function() {
308                 a.ui.pos.flip.left.apply(this, arguments);
309                 a.ui.pos.fit.left.apply(this, arguments);
310             },
311             top: function() {
312                 a.ui.pos.flip.top.apply(this, arguments);
313                 a.ui.pos.fit.top.apply(this, arguments);
314             }
315         }
316     };
317     (function() {
318         var b, c, d, e, f, g = document.getElementsByTagName("body")[0], h = document.createElement("div");
319         b = document.createElement(g ? "div" : "body");
320         d = {
321             visibility: "hidden",
322             width: 0,
323             height: 0,
324             border: 0,
325             margin: 0,
326             background: "none"
327         };
328         if (g) {
329             a.extend(d, {
330                 position: "absolute",
331                 left: "-1000px",
332                 top: "-1000px"
333             });
334         }
335         for (f in d) {
336             b.style[f] = d[f];
337         }
338         b.appendChild(h);
339         c = g || document.documentElement;
340         c.insertBefore(b, c.firstChild);
341         h.style.cssText = "position: absolute; left: 10.7432222px;";
342         e = a(h).offset().left;
343         a.support.offsetFractions = e > 10 && e < 11;
344         b.innerHTML = "";
345         c.removeChild(b);
346     })();
347 })(jQuery);
348
349 (function(a) {
350     "use strict";
351     if (typeof define === "function" && define.amd) {
352         define([ "jquery" ], a);
353     } else if (window.jQuery && !window.jQuery.fn.iconpicker) {
354         a(window.jQuery);
355     }
356 })(function(a) {
357     "use strict";
358     var b = {
359         isEmpty: function(a) {
360             return a === false || a === "" || a === null || a === undefined;
361         },
362         isEmptyObject: function(a) {
363             return this.isEmpty(a) === true || a.length === 0;
364         },
365         isElement: function(b) {
366             return a(b).length > 0;
367         },
368         isString: function(a) {
369             return typeof a === "string" || a instanceof String;
370         },
371         isArray: function(b) {
372             return a.isArray(b);
373         },
374         inArray: function(b, c) {
375             return a.inArray(b, c) !== -1;
376         },
377         throwError: function(a) {
378             throw "Font Awesome Icon Picker Exception: " + a;
379         }
380     };
381     var c = function(d, e) {
382         this._id = c._idCounter++;
383         this.element = a(d).addClass("iconpicker-element");
384         this._trigger("iconpickerCreate");
385         this.options = a.extend({}, c.defaultOptions, this.element.data(), e);
386         this.options.templates = a.extend({}, c.defaultOptions.templates, this.options.templates);
387         this.options.originalPlacement = this.options.placement;
388         this.container = b.isElement(this.options.container) ? a(this.options.container) : false;
389         if (this.container === false) {
390             if (this.element.is(".dropdown-toggle")) {
391                 this.container = a("~ .dropdown-menu:first", this.element);
392             } else {
393                 this.container = this.element.is("input,textarea,button,.btn") ? this.element.parent() : this.element;
394             }
395         }
396         this.container.addClass("iconpicker-container");
397         if (this.isDropdownMenu()) {
398             this.options.templates.search = false;
399             this.options.templates.buttons = false;
400             this.options.placement = "inline";
401         }
402         this.input = this.element.is("input,textarea") ? this.element.addClass("iconpicker-input") : false;
403         if (this.input === false) {
404             this.input = this.container.find(this.options.input);
405             if (!this.input.is("input,textarea")) {
406                 this.input = false;
407             }
408         }
409         this.component = this.isDropdownMenu() ? this.container.parent().find(this.options.component) : this.container.find(this.options.component);
410         if (this.component.length === 0) {
411             this.component = false;
412         } else {
413             this.component.find("i").addClass("iconpicker-component");
414         }
415         this._createPopover();
416         this._createIconpicker();
417         if (this.getAcceptButton().length === 0) {
418             this.options.mustAccept = false;
419         }
420         if (this.isInputGroup()) {
421             this.container.parent().append(this.popover);
422         } else {
423             this.container.append(this.popover);
424         }
425         this._bindElementEvents();
426         this._bindWindowEvents();
427         this.update(this.options.selected);
428         if (this.isInline()) {
429             this.show();
430         }
431         this._trigger("iconpickerCreated");
432     };
433     c._idCounter = 0;
434     c.defaultOptions = {
435         title: false,
436         selected: false,
437         defaultValue: false,
438         placement: "bottom",
439         collision: "none",
440         animation: true,
441         hideOnSelect: false,
442         showFooter: false,
443         searchInFooter: false,
444         mustAccept: false,
445         selectedCustomClass: "bg-primary",
446         icons: [],
447         fullClassFormatter: function(a) {
448             return "fa " + a;
449         },
450         input: "input,.iconpicker-input",
451         inputSearch: false,
452         container: false,
453         component: ".input-group-addon,.iconpicker-component",
454         templates: {
455             popover: '<div class="iconpicker-popover popover"><div class="arrow"></div>' + '<div class="popover-title"></div><div class="popover-content"></div></div>',
456             footer: '<div class="popover-footer"></div>',
457             buttons: '<button class="iconpicker-btn iconpicker-btn-cancel btn btn-default btn-sm">Cancel</button>' + ' <button class="iconpicker-btn iconpicker-btn-accept btn btn-primary btn-sm">Accept</button>',
458             search: '<input type="search" class="form-control iconpicker-search" placeholder="Type to filter" />',
459             iconpicker: '<div class="iconpicker"><div class="iconpicker-items"></div></div>',
460             iconpickerItem: '<a role="button" href="#" class="iconpicker-item"><span></span></a>'
461         }
462     };
463     c.batch = function(b, c) {
464         var d = Array.prototype.slice.call(arguments, 2);
465         return a(b).each(function() {
466             var b = a(this).data("iconpicker");
467             if (!!b) {
468                 b[c].apply(b, d);
469             }
470         });
471     };
472     c.prototype = {
473         constructor: c,
474         options: {},
475         _id: 0,
476         _trigger: function(b, c) {
477             c = c || {};
478             this.element.trigger(a.extend({
479                 type: b,
480                 iconpickerInstance: this
481             }, c));
482         },
483         _createPopover: function() {
484             this.popover = a(this.options.templates.popover);
485             var c = this.popover.find(".popover-title");
486             if (!!this.options.title) {
487                 c.append(a('<div class="popover-title-text">' + this.options.title + "</div>"));
488             }
489             if (this.hasSeparatedSearchInput() && !this.options.searchInFooter) {
490                 c.append(this.options.templates.search);
491             } else if (!this.options.title) {
492                 c.remove();
493             }
494             if (this.options.showFooter && !b.isEmpty(this.options.templates.footer)) {
495                 var d = a(this.options.templates.footer);
496                 if (this.hasSeparatedSearchInput() && this.options.searchInFooter) {
497                     d.append(a(this.options.templates.search));
498                 }
499                 if (!b.isEmpty(this.options.templates.buttons)) {
500                     d.append(a(this.options.templates.buttons));
501                 }
502                 this.popover.append(d);
503             }
504             if (this.options.animation === true) {
505                 this.popover.addClass("fade");
506             }
507             return this.popover;
508         },
509         _createIconpicker: function() {
510             var b = this;
511             this.iconpicker = a(this.options.templates.iconpicker);
512             var c = function(c) {
513                 var d = a(this);
514                 if (d.is("span")) {
515                     d = d.parent();
516                 }
517                 b._trigger("iconpickerSelect", {
518                     iconpickerItem: d,
519                     iconpickerValue: b.iconpickerValue
520                 });
521                 if (b.options.mustAccept === false) {
522                     b.update(d.data("iconpickerValue"));
523                     b._trigger("iconpickerSelected", {
524                         iconpickerItem: this,
525                         iconpickerValue: b.iconpickerValue
526                     });
527                 } else {
528                     b.update(d.data("iconpickerValue"), true);
529                 }
530                 if (b.options.hideOnSelect && b.options.mustAccept === false) {
531                     b.hide();
532                 }
533                 c.preventDefault();
534                 return false;
535             };
536             for (var d in this.options.icons) {
537                 var e = a(this.options.templates.iconpickerItem);
538                 e.find("i").addClass(this.options.fullClassFormatter(this.options.icons[d]));
539                 e.data("iconpickerValue", this.options.icons[d]).on("click.iconpicker", c);
540                 this.iconpicker.find(".iconpicker-items").append(e.attr("title", "." + this.options.icons[d]));
541             }
542             this.popover.find(".popover-content").append(this.iconpicker);
543             return this.iconpicker;
544         },
545         _isEventInsideIconpicker: function(b) {
546             var c = a(b.target);
547             if ((!c.hasClass("iconpicker-element") || c.hasClass("iconpicker-element") && !c.is(this.element)) && c.parents(".iconpicker-popover").length === 0) {
548                 return false;
549             }
550             return true;
551         },
552         _bindElementEvents: function() {
553             var c = this;
554             this.getSearchInput().on("keyup.iconpicker", function() {
555                 c.filter(a(this).val().toLowerCase());
556             });
557             this.getAcceptButton().on("click.iconpicker", function() {
558                 var a = c.iconpicker.find(".iconpicker-selected").get(0);
559                 c.update(c.iconpickerValue);
560                 c._trigger("iconpickerSelected", {
561                     iconpickerItem: a,
562                     iconpickerValue: c.iconpickerValue
563                 });
564                 if (!c.isInline()) {
565                     c.hide();
566                 }
567             });
568             this.getCancelButton().on("click.iconpicker", function() {
569                 if (!c.isInline()) {
570                     c.hide();
571                 }
572             });
573             this.element.on("focus.iconpicker", function(a) {
574                 c.show();
575                 a.stopPropagation();
576             });
577             if (this.hasComponent()) {
578                 this.component.on("click.iconpicker", function() {
579                     c.toggle();
580                 });
581             }
582             if (this.hasInput()) {
583                 this.input.on("keyup.iconpicker", function(d) {
584                     if (!b.inArray(d.keyCode, [ 38, 40, 37, 39, 16, 17, 18, 9, 8, 91, 93, 20, 46, 186, 190, 46, 78, 188, 44, 86 ])) {
585                         c.update();
586                     } else {
587                         c._updateFormGroupStatus(c.getValid(this.value) !== false);
588                     }
589                     if (c.options.inputSearch === true) {
590                         c.filter(a(this).val().toLowerCase());
591                     }
592                 });
593             }
594         },
595         _bindWindowEvents: function() {
596             var b = a(window.document);
597             var c = this;
598             var d = ".iconpicker.inst" + this._id;
599             a(window).on("resize.iconpicker" + d + " orientationchange.iconpicker" + d, function(a) {
600                 if (c.popover.hasClass("in")) {
601                     c.updatePlacement();
602                 }
603             });
604             if (!c.isInline()) {
605                 b.on("mouseup" + d, function(a) {
606                     if (!c._isEventInsideIconpicker(a) && !c.isInline()) {
607                         c.hide();
608                     }
609                 });
610             }
611             return false;
612         },
613         _unbindElementEvents: function() {
614             this.popover.off(".iconpicker");
615             this.element.off(".iconpicker");
616             if (this.hasInput()) {
617                 this.input.off(".iconpicker");
618             }
619             if (this.hasComponent()) {
620                 this.component.off(".iconpicker");
621             }
622             if (this.hasContainer()) {
623                 this.container.off(".iconpicker");
624             }
625         },
626         _unbindWindowEvents: function() {
627             a(window).off(".iconpicker.inst" + this._id);
628             a(window.document).off(".iconpicker.inst" + this._id);
629         },
630         updatePlacement: function(b, c) {
631             b = b || this.options.placement;
632             this.options.placement = b;
633             c = c || this.options.collision;
634             c = c === true ? "flip" : c;
635             var d = {
636                 at: "right bottom",
637                 my: "right top",
638                 of: this.hasInput() && !this.isInputGroup() ? this.input : this.container,
639                 collision: c === true ? "flip" : c,
640                 within: window
641             };
642             this.popover.removeClass("inline topLeftCorner topLeft top topRight topRightCorner " + "rightTop right rightBottom bottomRight bottomRightCorner " + "bottom bottomLeft bottomLeftCorner leftBottom left leftTop");
643             if (typeof b === "object") {
644                 return this.popover.pos(a.extend({}, d, b));
645             }
646             switch (b) {
647                 case "inline":
648                 {
649                     d = false;
650                 }
651                     break;
652
653                 case "topLeftCorner":
654                 {
655                     d.my = "right bottom";
656                     d.at = "left top";
657                 }
658                     break;
659
660                 case "topLeft":
661                 {
662                     d.my = "left bottom";
663                     d.at = "left top";
664                 }
665                     break;
666
667                 case "top":
668                 {
669                     d.my = "center bottom";
670                     d.at = "center top";
671                 }
672                     break;
673
674                 case "topRight":
675                 {
676                     d.my = "right bottom";
677                     d.at = "right top";
678                 }
679                     break;
680
681                 case "topRightCorner":
682                 {
683                     d.my = "left bottom";
684                     d.at = "right top";
685                 }
686                     break;
687
688                 case "rightTop":
689                 {
690                     d.my = "left bottom";
691                     d.at = "right center";
692                 }
693                     break;
694
695                 case "right":
696                 {
697                     d.my = "left center";
698                     d.at = "right center";
699                 }
700                     break;
701
702                 case "rightBottom":
703                 {
704                     d.my = "left top";
705                     d.at = "right center";
706                 }
707                     break;
708
709                 case "bottomRightCorner":
710                 {
711                     d.my = "left top";
712                     d.at = "right bottom";
713                 }
714                     break;
715
716                 case "bottomRight":
717                 {
718                     d.my = "right top";
719                     d.at = "right bottom";
720                 }
721                     break;
722
723                 case "bottom":
724                 {
725                     d.my = "center top";
726                     d.at = "center bottom";
727                 }
728                     break;
729
730                 case "bottomLeft":
731                 {
732                     d.my = "left top";
733                     d.at = "left bottom";
734                 }
735                     break;
736
737                 case "bottomLeftCorner":
738                 {
739                     d.my = "right top";
740                     d.at = "left bottom";
741                 }
742                     break;
743
744                 case "leftBottom":
745                 {
746                     d.my = "right top";
747                     d.at = "left center";
748                 }
749                     break;
750
751                 case "left":
752                 {
753                     d.my = "right center";
754                     d.at = "left center";
755                 }
756                     break;
757
758                 case "leftTop":
759                 {
760                     d.my = "right bottom";
761                     d.at = "left center";
762                 }
763                     break;
764
765                 default:
766                 {
767                     return false;
768                 }
769                     break;
770             }
771             this.popover.css({
772                 display: this.options.placement === "inline" ? "" : "block"
773             });
774             if (d !== false) {
775                 this.popover.pos(d).css("maxWidth", a(window).width() - this.container.offset().left - 5);
776             } else {
777                 this.popover.css({
778                     top: "auto",
779                     right: "auto",
780                     bottom: "auto",
781                     left: "auto",
782                     maxWidth: "none"
783                 });
784             }
785             this.popover.addClass(this.options.placement);
786             return true;
787         },
788         _updateComponents: function() {
789             this.iconpicker.find(".iconpicker-item.iconpicker-selected").removeClass("iconpicker-selected " + this.options.selectedCustomClass);
790             if (this.iconpickerValue) {
791                 this.iconpicker.find("." + this.options.fullClassFormatter(this.iconpickerValue).replace(/ /g, ".")).parent().addClass("iconpicker-selected " + this.options.selectedCustomClass);
792             }
793             if (this.hasComponent()) {
794                 var a = this.component.find("i");
795                 if (a.length > 0) {
796                     a.attr("class", this.options.fullClassFormatter(this.iconpickerValue));
797                 } else {
798                     this.component.html(this.getHtml());
799                 }
800             }
801         },
802         _updateFormGroupStatus: function(a) {
803             if (this.hasInput()) {
804                 if (a !== false) {
805                     this.input.parents(".form-group:first").removeClass("has-error");
806                 } else {
807                     this.input.parents(".form-group:first").addClass("has-error");
808                 }
809                 return true;
810             }
811             return false;
812         },
813         getValid: function(c) {
814             if (!b.isString(c)) {
815                 c = "";
816             }
817             var d = c === "";
818             c = a.trim(c);
819             if (b.inArray(c, this.options.icons) || d) {
820                 return c;
821             }
822             return false;
823         },
824         setValue: function(a) {
825             var b = this.getValid(a);
826             if (b !== false) {
827                 this.iconpickerValue = b;
828                 this._trigger("iconpickerSetValue", {
829                     iconpickerValue: b
830                 });
831                 return this.iconpickerValue;
832             } else {
833                 this._trigger("iconpickerInvalid", {
834                     iconpickerValue: a
835                 });
836                 return false;
837             }
838         },
839         getHtml: function() {
840             return '<i class="' + this.options.fullClassFormatter(this.iconpickerValue) + '"></i>';
841         },
842         setSourceValue: function(a) {
843             a = this.setValue(a);
844             if (a !== false && a !== "") {
845                 if (this.hasInput()) {
846                     this.input.val(this.iconpickerValue);
847                 } else {
848                     this.element.data("iconpickerValue", this.iconpickerValue);
849                 }
850                 this._trigger("iconpickerSetSourceValue", {
851                     iconpickerValue: a
852                 });
853             }
854             return a;
855         },
856         getSourceValue: function(a) {
857             a = a || this.options.defaultValue;
858             var b = a;
859             if (this.hasInput()) {
860                 b = this.input.val();
861             } else {
862                 b = this.element.data("iconpickerValue");
863             }
864             if (b === undefined || b === "" || b === null || b === false) {
865                 b = a;
866             }
867             return b;
868         },
869         hasInput: function() {
870             return this.input !== false;
871         },
872         isInputSearch: function() {
873             return this.hasInput() && this.options.inputSearch === true;
874         },
875         isInputGroup: function() {
876             return this.container.is(".input-group");
877         },
878         isDropdownMenu: function() {
879             return this.container.is(".dropdown-menu");
880         },
881         hasSeparatedSearchInput: function() {
882             return this.options.templates.search !== false && !this.isInputSearch();
883         },
884         hasComponent: function() {
885             return this.component !== false;
886         },
887         hasContainer: function() {
888             return this.container !== false;
889         },
890         getAcceptButton: function() {
891             return this.popover.find(".iconpicker-btn-accept");
892         },
893         getCancelButton: function() {
894             return this.popover.find(".iconpicker-btn-cancel");
895         },
896         getSearchInput: function() {
897             return this.popover.find(".iconpicker-search");
898         },
899         filter: function(c) {
900             if (b.isEmpty(c)) {
901                 this.iconpicker.find(".iconpicker-item").show();
902                 return a(false);
903             } else {
904                 var d = [];
905                 this.iconpicker.find(".iconpicker-item").each(function() {
906                     var b = a(this);
907                     var e = b.attr("title").toLowerCase();
908                     var f = false;
909                     try {
910                         f = new RegExp(c, "g");
911                     } catch (a) {
912                         f = false;
913                     }
914                     if (f !== false && e.match(f)) {
915                         d.push(b);
916                         b.show();
917                     } else {
918                         b.hide();
919                     }
920                 });
921                 return d;
922             }
923         },
924         show: function() {
925             if (this.popover.hasClass("in")) {
926                 return false;
927             }
928             a.iconpicker.batch(a(".iconpicker-popover.in:not(.inline)").not(this.popover), "hide");
929             this._trigger("iconpickerShow");
930             this.updatePlacement();
931             this.popover.addClass("in");
932             setTimeout(a.proxy(function() {
933                 this.popover.css("display", this.isInline() ? "" : "block");
934                 this._trigger("iconpickerShown");
935             }, this), this.options.animation ? 300 : 1);
936         },
937         hide: function() {
938             if (!this.popover.hasClass("in")) {
939                 return false;
940             }
941             this._trigger("iconpickerHide");
942             this.popover.removeClass("in");
943             setTimeout(a.proxy(function() {
944                 this.popover.css("display", "none");
945                 this.getSearchInput().val("");
946                 this.filter("");
947                 this._trigger("iconpickerHidden");
948             }, this), this.options.animation ? 300 : 1);
949         },
950         toggle: function() {
951             if (this.popover.is(":visible")) {
952                 this.hide();
953             } else {
954                 this.show(true);
955             }
956         },
957         update: function(a, b) {
958             a = a ? a : this.getSourceValue(this.iconpickerValue);
959             this._trigger("iconpickerUpdate");
960             if (b === true) {
961                 a = this.setValue(a);
962             } else {
963                 a = this.setSourceValue(a);
964                 this._updateFormGroupStatus(a !== false);
965             }
966             if (a !== false) {
967                 this._updateComponents();
968             }
969             this._trigger("iconpickerUpdated");
970             return a;
971         },
972         destroy: function() {
973             this._trigger("iconpickerDestroy");
974             this.element.removeData("iconpicker").removeData("iconpickerValue").removeClass("iconpicker-element");
975             this._unbindElementEvents();
976             this._unbindWindowEvents();
977             a(this.popover).remove();
978             this._trigger("iconpickerDestroyed");
979         },
980         disable: function() {
981             if (this.hasInput()) {
982                 this.input.prop("disabled", true);
983                 return true;
984             }
985             return false;
986         },
987         enable: function() {
988             if (this.hasInput()) {
989                 this.input.prop("disabled", false);
990                 return true;
991             }
992             return false;
993         },
994         isDisabled: function() {
995             if (this.hasInput()) {
996                 return this.input.prop("disabled") === true;
997             }
998             return false;
999         },
1000         isInline: function() {
1001             return this.options.placement === "inline" || this.popover.hasClass("inline");
1002         }
1003     };
1004     a.iconpicker = c;
1005     a.fn.iconpicker = function(b) {
1006         return this.each(function() {
1007             var d = a(this);
1008             if (!d.data("iconpicker")) {
1009                 d.data("iconpicker", new c(this, typeof b === "object" ? b : {}));
1010             }
1011         });
1012     };
1013     c.defaultOptions.icons = [ 'No Icon','arrow_up', 'arrow_down', 'arrow_left', 'arrow_right', 'arrow_left-up', 'arrow_right-up', 'arrow_right-down', 'arrow_left-down', 'arrow-up-down', 'arrow_up-down_alt', 'arrow_left-right_alt', 'arrow_left-right', 'arrow_expand_alt2', 'arrow_expand_alt', 'arrow_condense', 'arrow_expand', 'arrow_move', 'arrow_carrot-up', 'arrow_carrot-down', 'arrow_carrot-left', 'arrow_carrot-right', 'arrow_carrot-2up', 'arrow_carrot-2down', 'arrow_carrot-2left', 'arrow_carrot-2right', 'arrow_carrot-up_alt2', 'arrow_carrot-down_alt2', 'arrow_carrot-left_alt2', 'arrow_carrot-right_alt2', 'arrow_carrot-2up_alt2', 'arrow_carrot-2down_alt2', 'arrow_carrot-2left_alt2', 'arrow_carrot-2right_alt2', 'arrow_triangle-up', 'arrow_triangle-down', 'arrow_triangle-left', 'arrow_triangle-right', 'arrow_triangle-up_alt2', 'arrow_triangle-down_alt2', 'arrow_triangle-left_alt2', 'arrow_triangle-right_alt2', 'arrow_back', 'icon_minus-06', 'icon_plus', 'icon_close', 'icon_check', 'icon_minus_alt2', 'icon_plus_alt2', 'icon_close_alt2', 'icon_check_alt2', 'icon_zoom-out_alt', 'icon_zoom-in_alt', 'icon_search', 'icon_box-empty', 'icon_box-selected', 'icon_minus-box', 'icon_plus-box', 'icon_box-checked', 'icon_circle-empty', 'icon_circle-slelected', 'icon_stop_alt2', 'icon_stop', 'icon_pause_alt2', 'icon_pause', 'icon_menu', 'icon_menu-square_alt2', 'icon_menu-circle_alt2', 'icon_ul', 'icon_ol', 'icon_adjust-horiz', 'icon_adjust-vert', 'icon_document_alt', 'icon_documents_alt', 'icon_pencil', 'icon_pencil-edit_alt', 'icon_pencil-edit', 'icon_folder-alt', 'icon_folder-open_alt', 'icon_folder-add_alt', 'icon_info_alt', 'icon_error-oct_alt', 'icon_error-circle_alt', 'icon_error-triangle_alt', 'icon_question_alt2', 'icon_question', 'icon_comment_alt', 'icon_chat_alt', 'icon_vol-mute_alt', 'icon_volume-low_alt', 'icon_volume-high_alt', 'icon_quotations', 'icon_quotations_alt2', 'icon_clock_alt', 'icon_lock_alt', 'icon_lock-open_alt', 'icon_key_alt', 'icon_cloud_alt', 'icon_cloud-upload_alt', 'icon_cloud-download_alt', 'icon_image', 'icon_images', 'icon_lightbulb_alt', 'icon_gift_alt', 'icon_house_alt', 'icon_genius', 'icon_mobile', 'icon_tablet', 'icon_laptop', 'icon_desktop', 'icon_camera_alt', 'icon_mail_alt', 'icon_cone_alt', 'icon_ribbon_alt', 'icon_bag_alt', 'icon_creditcard', 'icon_cart_alt', 'icon_paperclip', 'icon_tag_alt', 'icon_tags_alt', 'icon_trash_alt', 'icon_cursor_alt', 'icon_mic_alt', 'icon_compass_alt', 'icon_pin_alt', 'icon_pushpin_alt', 'icon_map_alt', 'icon_drawer_alt', 'icon_toolbox_alt', 'icon_book_alt', 'icon_calendar', 'icon_film', 'icon_table', 'icon_contacts_alt', 'icon_headphones', 'icon_lifesaver', 'icon_piechart', 'icon_refresh', 'icon_link_alt', 'icon_link', 'icon_loading', 'icon_blocked', 'icon_archive_alt', 'icon_heart_alt', 'icon_star_alt', 'icon_star-half_alt', 'icon_star', 'icon_star-half', 'icon_tools', 'icon_tool', 'icon_cog', 'icon_cogs', 'arrow_up_alt', 'arrow_down_alt', 'arrow_left_alt', 'arrow_right_alt', 'arrow_left-up_alt', 'arrow_right-up_alt', 'arrow_right-down_alt', 'arrow_left-down_alt', 'arrow_condense_alt', 'arrow_expand_alt3', 'arrow_carrot_up_alt', 'arrow_carrot-down_alt', 'arrow_carrot-left_alt', 'arrow_carrot-right_alt', 'arrow_carrot-2up_alt', 'arrow_carrot-2dwnn_alt', 'arrow_carrot-2left_alt', 'arrow_carrot-2right_alt', 'arrow_triangle-up_alt', 'arrow_triangle-down_alt', 'arrow_triangle-left_alt', 'arrow_triangle-right_alt', 'icon_minus_alt', 'icon_plus_alt', 'icon_close_alt', 'icon_check_alt', 'icon_zoom-out', 'icon_zoom-in', 'icon_stop_alt', 'icon_menu-square_alt', 'icon_menu-circle_alt', 'icon_document', 'icon_documents', 'icon_pencil_alt', 'icon_folder', 'icon_folder-open', 'icon_folder-add', 'icon_folder_upload', 'icon_folder_download', 'icon_info', 'icon_error-circle', 'icon_error-oct', 'icon_error-triangle', 'icon_question_alt', 'icon_comment', 'icon_chat', 'icon_vol-mute', 'icon_volume-low', 'icon_volume-high', 'icon_quotations_alt', 'icon_clock', 'icon_lock', 'icon_lock-open', 'icon_key', 'icon_cloud', 'icon_cloud-upload', 'icon_cloud-download', 'icon_lightbulb', 'icon_gift', 'icon_house', 'icon_camera', 'icon_mail', 'icon_cone', 'icon_ribbon', 'icon_bag', 'icon_cart', 'icon_tag', 'icon_tags', 'icon_trash', 'icon_cursor', 'icon_mic', 'icon_compass', 'icon_pin', 'icon_pushpin', 'icon_map', 'icon_drawer', 'icon_toolbox', 'icon_book', 'icon_contacts', 'icon_archive', 'icon_heart', 'icon_profile', 'icon_group', 'icon_grid-2x2', 'icon_grid-3x3', 'icon_music', 'icon_pause_alt', 'icon_phone', 'icon_upload', 'icon_download', 'social_facebook', 'social_twitter', 'social_pinterest', 'social_googleplus', 'social_tumblr', 'social_tumbleupon', 'social_wordpress', 'social_instagram', 'social_dribbble', 'social_vimeo', 'social_linkedin', 'social_rss', 'social_deviantart', 'social_share', 'social_myspace', 'social_skype', 'social_youtube', 'social_picassa', 'social_googledrive', 'social_flickr', 'social_blogger', 'social_spotify', 'social_delicious', 'social_facebook_circle', 'social_twitter_circle', 'social_pinterest_circle', 'social_googleplus_circle', 'social_tumblr_circle', 'social_stumbleupon_circle', 'social_wordpress_circle', 'social_instagram_circle', 'social_dribbble_circle', 'social_vimeo_circle', 'social_linkedin_circle', 'social_rss_circle', 'social_deviantart_circle', 'social_share_circle', 'social_myspace_circle', 'social_skype_circle', 'social_youtube_circle', 'social_picassa_circle', 'social_googledrive_alt2', 'social_flickr_circle', 'social_blogger_circle', 'social_spotify_circle', 'social_delicious_circle', 'social_facebook_square', 'social_twitter_square', 'social_pinterest_square', 'social_googleplus_square', 'social_tumblr_square', 'social_stumbleupon_square', 'social_wordpress_square', 'social_instagram_square', 'social_dribbble_square', 'social_vimeo_square', 'social_linkedin_square', 'social_rss_square', 'social_deviantart_square', 'social_share_square', 'social_myspace_square', 'social_skype_square', 'social_youtube_square', 'social_picassa_square', 'social_googledrive_square', 'social_flickr_square', 'social_blogger_square', 'social_spotify_square', 'social_delicious_square', 'icon_printer', 'icon_calulator', 'icon_building', 'icon_floppy', 'icon_drive', 'icon_search-2', 'icon_id', 'icon_id-2', 'icon_puzzle', 'icon_like', 'icon_dislike', 'icon_mug', 'icon_currency', 'icon_wallet', 'icon_pens', 'icon_easel', 'icon_flowchart', 'icon_datareport', 'icon_briefcase', 'icon_shield', 'icon_percent', 'icon_globe', 'icon_globe-2', 'icon_target', 'icon_hourglass', 'icon_balance', 'icon_rook', 'icon_printer-alt', 'icon_calculator_alt', 'icon_building_alt', 'icon_floppy_alt', 'icon_drive_alt', 'icon_search_alt', 'icon_id_alt', 'icon_id-2_alt', 'icon_puzzle_alt', 'icon_like_alt', 'icon_dislike_alt', 'icon_mug_alt', 'icon_currency_alt', 'icon_wallet_alt', 'icon_pens_alt', 'icon_easel_alt', 'icon_flowchart_alt', 'icon_datareport_alt', 'icon_briefcase_alt', 'icon_shield_alt', 'icon_percent_alt', 'icon_globe_alt', 'icon_clipboard' ];
1014 });