(function(b){b.widget("ui.dropdownchecklist",{_appendDropContainer:function(){var d=b("<div/>");d.addClass("ui-dropdownchecklist-dropcontainer-wrapper");d.css({position:"absolute",left:"-3300",top:"-3300px",width:"3000px",height:"3000px"});var a=b("<div/>");a.addClass("ui-dropdownchecklist-dropcontainer").css("overflow-y","auto");d.append(a);b(document.body).append(d);d.drop=false;return d},_appendControl:function(){var l=this,a=this.options,k=this.sourceSelect;var h=b("<span/>");h.addClass("ui-dropdownchecklist-wrapper");h.css({display:"inline-block",cursor:"default"});var i=b("<span/>");i.addClass("ui-dropdownchecklist");i.css({display:"inline-block"});h.append(i);var j=b("<span/>");j.addClass("ui-dropdownchecklist-text");j.css({display:"inline-block",overflow:"hidden"});i.append(j);h.hover(function(){if(!l.disabled){i.toggleClass("ui-dropdownchecklist-hover")}},function(){if(!l.disabled){i.toggleClass("ui-dropdownchecklist-hover")}});h.click(function(c){if(!l.disabled){c.stopPropagation();l._toggleDropContainer()}});h.insertAfter(k);return h},_createDropItem:function(v,t,r,s,n){var p=this;var q=b("<div/>");q.addClass("ui-dropdownchecklist-item");q.css({whiteSpace:"nowrap"});q.css({backgroundImage:"url(http://"+getCDNSubdomain(t)+".wklcdn.com/wikiloc/images/pictograms/ge/"+t+".png)"});var o=s?' checked="checked"':"";var a;if(p.initialMultiple){a=b('<input type="checkbox"'+o+"/>").attr("index",v).val(t);q.append(a)}else{a=b('<input type="radio" name="'+p.sourceSelect.attr("id")+'"'+o+"/>").attr("index",v).val(t);q.append(a)}var u=b("<span/>");u.addClass("ui-dropdownchecklist-text").css({cursor:"default",width:"100%"}).text(r);if(n){q.addClass("ui-dropdownchecklist-indent")}q.append(u);q.hover(function(){q.addClass("ui-dropdownchecklist-item-hover")},function(){q.removeClass("ui-dropdownchecklist-item-hover")});a.click(function(c){c.stopPropagation();p._syncSelected(b(this));p.sourceSelect.trigger("change")});var m=function(c){c.stopPropagation();var d=a.attr("checked");a.attr("checked",!d);p._syncSelected(a);p.sourceSelect.trigger("change")};u.click(m);q.click(m);return q},_createGroupItem:function(f){var a=this;var g=b("<div />");g.addClass("ui-dropdownchecklist-group");g.css({whiteSpace:"nowrap"});var h=b("<span/>");h.addClass("ui-dropdownchecklist-text").css({cursor:"default",width:"100%"}).text(f);g.append(h);return g},_appendItems:function(){var a=this,j=this.sourceSelect,l=this.controlWrapper,k=this.dropWrapper;var m=k.find(".ui-dropdownchecklist-dropcontainer");m.css({"float":"left"});j.children().each(function(f){var e=b(this);if(e.is("option")){a._appendOption(e,m,f,false)}else{var c=e.attr("label");var d=a._createGroupItem(c);m.append(d);a._appendOptions(e,m,f,true)}});var i=m.outerWidth();var n=m.outerHeight();m.css({"float":""});return{width:i,height:n}},_appendOptions:function(g,j,h,a){var i=this;g.children("option").each(function(e){var d=b(this);var c=(h+"."+e);i._appendOption(d,j,c,a)})},_appendOption:function(o,r,n,q){var a=this;var l=o.text();var m=o.val();var p=o.attr("selected");var k=a._createDropItem(n,m,l,p,q);r.append(k)},_syncSelected:function(p){var o=this,m=this.options,a=this.sourceSelect,q=this.controlWrapper,t=this.dropWrapper;var r=t.find("input");if(m.firstItemChecksAll){if(p.attr("index")==0){r.attr("checked",p.attr("checked"))}else{var s;s=true;r.each(function(d){if(d>0){var c=b(this).attr("checked");if(!c){s=false}}});var n=r.filter(":first");n.attr("checked",false);if(s){n.attr("checked",true)}}}var l=a.get(0).options;r.each(function(c){b(l[c]).attr("selected",b(this).attr("checked"))});o._updateControlText()},_updateControlText:function(){var o=this,l=this.sourceSelect,n=this.options,r=this.controlWrapper,t=this.dropWrapper;var m=l.find("option:first");var q=null!=m&&m.attr("selected");var a=l.find("option");var p=o._formatText(a,n.firstItemChecksAll,q);var s=r.find(".ui-dropdownchecklist-text");s.text(p);s.attr("title",p)},_formatText:function(h,g,a){var f;if(g&&a){f=h.filter(":first").text()}else{f="";h.each(function(){if(b(this).attr("selected")){f+=b(this).text()+", "}});if(f.length>0){f=f.substring(0,f.length-2)}}return f},_toggleDropContainer:function(){var j=this,g=this.dropWrapper,h=this.controlWrapper;var i=function(){var c=b.ui.dropdownchecklist.drop;if(null!=c){c.dropWrapper.css({top:"-3300px",left:"-3300px"});c.controlWrapper.find(".ui-dropdownchecklist").toggleClass("ui-dropdownchecklist-active");c.dropWrapper.drop=false;b.ui.dropdownchecklist.drop=null;b(document).unbind("click",i);j.sourceSelect.trigger("blur")}};var a=function(c){if(null!=b.ui.dropdownchecklist.drop){i()}c.dropWrapper.css({top:c.controlWrapper.offset().top+c.controlWrapper.outerHeight()+"px",left:c.controlWrapper.offset().left+"px"});c.controlWrapper.find(".ui-dropdownchecklist").toggleClass("ui-dropdownchecklist-active");c.dropWrapper.drop=true;b.ui.dropdownchecklist.drop=c;b(document).bind("click",i);j.sourceSelect.trigger("focus")};if(g.drop){i(j)}else{a(j)}},_setSize:function(r){var a=this.options,o=this.dropWrapper,l=this.controlWrapper;var m;if(a.width){m=parseInt(a.width)}else{m=r.width;var q=a.minWidth;if(m<q){m=q}}l.find(".ui-dropdownchecklist-text").css({width:m+"px"});var k=l.outerWidth();var n=a.maxDropHeight?parseInt(a.maxDropHeight):r.height;var p=r.width<k?k:r.width;b(o).css({width:p+"px",height:n+"px"});o.find(".ui-dropdownchecklist-dropcontainer").css({height:n+"px"})},_init:function(){var l=this,k=this.options;var h=l.element;l.initialDisplay=h.css("display");h.css("display","none");l.initialMultiple=h.attr("multiple");h.attr("multiple","multiple");l.sourceSelect=h;var i=l._appendDropContainer();l.dropWrapper=i;var a=l._appendItems();var j=l._appendControl();l.controlWrapper=j;l._updateControlText(j,i,h);l._setSize(a);if(k.bgiframe&&typeof l.dropWrapper.bgiframe=="function"){l.dropWrapper.bgiframe()}},enable:function(){this.controlWrapper.find(".ui-dropdownchecklist").removeClass("ui-dropdownchecklist-disabled");this.disabled=false},disable:function(){this.controlWrapper.find(".ui-dropdownchecklist").addClass("ui-dropdownchecklist-disabled");this.disabled=true},destroy:function(){b.widget.prototype.destroy.apply(this,arguments);this.sourceSelect.css("display",this.initialDisplay);this.sourceSelect.attr("multiple",this.initialMultiple);this.controlWrapper.unbind().remove();this.dropWrapper.remove()}});b.extend(b.ui.dropdownchecklist,{defaults:{width:null,maxDropHeight:null,firstItemChecksAll:false,minWidth:50,bgiframe:false}})})(jQuery);
