!function(e){"use strict";e.fn.selectOrDie=function(t){var a,s,o={customID:null,customClass:"",placeholder:null,placeholderOption:!1,prefix:null,cycle:!1,stripEmpty:!1,links:!1,linksExternal:!1,size:0,tabIndex:0,onChange:e.noop},l={},d=!1,i={initSoD:function(t){return l=e.extend({},o,t),this.each(function(){if(e(this).parent().hasClass("sod_select"))console.log("Select or Die: It looks like the SoD already exists");else{var t,a,s,o=e(this),d=o.data("custom-id")?o.data("custom-id"):l.customID,n=o.data("custom-class")?o.data("custom-class"):l.customClass,r=o.data("prefix")?o.data("prefix"):l.prefix,c=o.data("placeholder")?o.data("placeholder"):l.placeholder,p=o.data("placeholder-option")?o.data("placeholder-option"):l.placeholderOption,h=o.data("cycle")?o.data("cycle"):l.cycle,u=o.data("links")?o.data("links"):l.links,f=o.data("links-external")?o.data("links-external"):l.linksExternal,b=parseInt(o.data("size"))?o.data("size"):l.size,C=parseInt(o.data("tabindex"))?o.data("tabindex"):l.tabIndex?l.tabIndex:o.attr("tabindex")?o.attr("tabindex"):l.tabIndex,v=o.data("strip-empty")?o.data("strip-empty"):l.stripEmpty,g=o.prop("title")?o.prop("title"):null,m=o.is(":disabled")?" disabled":"",_="",x="",k=0;r&&(_=' '+r+" "),x+=c&&!r?' '+c+" ":' '+_+" ",t=e(" ",{id:d,"class":"sod_select "+n+m,title:g,tabindex:C,html:x,"data-cycle":h,"data-links":u,"data-links-external":f,"data-placeholder":c,"data-placeholder-option":p,"data-prefix":r,"data-filter":""}).insertAfter(this),i.isTouch()&&t.addClass("touch"),a=e(" ",{"class":"sod_list_wrapper"}).appendTo(t),s=e(" ",{"class":"sod_list"}).appendTo(a),e("option, optgroup",o).each(function(a){var o=e(this);v&&!e.trim(o.text())?o.remove():0===a&&p&&!_?i.populateSoD(o,s,t,!0):i.populateSoD(o,s,t,!1)}),b&&(a.show(),e(".sod_option:lt("+b+")",s).each(function(){k+=e(this).outerHeight()}),a.removeAttr("style"),s.css({"max-height":k})),o.appendTo(t),t.on("focusin",i.focusSod).on("click",i.triggerSod).on("click",".sod_option",i.optionClick).on("mousemove",".sod_option",i.optionHover).on("keydown",i.keyboardUse),o.on("change",i.selectChange),e(document).on("click","label[for='"+o.attr("id")+"']",function(e){e.preventDefault(),t.focus()})}})},populateSoD:function(t,a,s,o){var l=s.data("placeholder"),d=s.data("placeholder-option"),i=s.data("prefix"),n=s.find(".sod_label"),r=t.parent(),c=t.text(),p=t.val(),h=t.data("custom-id")?t.data("custom-id"):null,u=t.data("custom-class")?t.data("custom-class"):"",f=t.is(":disabled")?" disabled ":"",b=t.is(":selected")?" selected active ":"",C=t.data("link")?" link ":"",v=t.data("link-external")?" linkexternal":"",g=t.prop("label");t.is("option")?(e(" ",{"class":"sod_option "+u+f+b+C+v,id:h,title:c,html:c,"data-value":p}).appendTo(a),o&&!i?(s.data("label",c),s.data("placeholder",c),t.prop("disabled",!0),a.find(".sod_option:last").addClass("is-placeholder disabled"),b&&n.addClass("sod_placeholder")):b&&l&&!d&&!i?s.data("label",l):b&&s.data("label",c),(b&&!l||b&&d||b&&i)&&n.append(c),r.is("optgroup")&&(a.find(".sod_option:last").addClass("groupchild"),r.is(":disabled")&&a.find(".sod_option:last").addClass("disabled"))):e(" ",{"class":"sod_option optgroup "+f,title:g,html:g,"data-label":g}).appendTo(a)},focusSod:function(){var t=e(this);t.hasClass("disabled")?i.blurSod(t):(i.blurSod(e(".sod_select.focus").not(t)),t.addClass("focus"),e("html").on("click.sodBlur",function(){i.blurSod(t)}))},triggerSod:function(t){t.stopPropagation();var a=e(this),o=a.find(".sod_list"),l=a.data("placeholder"),d=a.find(".active"),n=a.find(".selected");a.hasClass("disabled")||a.hasClass("open")||a.hasClass("touch")?(clearTimeout(s),a.removeClass("open"),l&&(a.find(".sod_label").get(0).lastChild.nodeValue=d.text())):(a.addClass("open"),l&&!a.data("prefix")&&a.find(".sod_label").addClass("sod_placeholder").html(l),i.listScroll(o,n),i.checkViewport(a,o))},keyboardUse:function(t){var s,o,l,n=e(this),r=n.find(".sod_list"),c=n.find(".sod_option"),p=n.find(".sod_label"),h=n.data("cycle"),u=c.filter(".active");return t.which>36&&t.which<41?(37===t.which||38===t.which?(o=u.prevAll(":not('.disabled, .optgroup')").first(),l=c.not(".disabled, .optgroup").last()):(39===t.which||40===t.which)&&(o=u.nextAll(":not('.disabled, .optgroup')").first(),l=c.not(".disabled, .optgroup").first()),!o.hasClass("sod_option")&&h&&(o=l),(o.hasClass("sod_option")||h)&&(u.removeClass("active"),o.addClass("active"),p.get(0).lastChild.nodeValue=o.text(),i.listScroll(r,o),n.hasClass("open")||(d=!0)),!1):(13===t.which||32===t.which&&n.hasClass("open")&&(" "===n.data("filter")[0]||""===n.data("filter"))?(t.preventDefault(),u.click()):32!==t.which||n.hasClass("open")||" "!==n.data("filter")[0]&&""!==n.data("filter")?27===t.which&&i.blurSod(n):(t.preventDefault(),d=!1,n.click()),void(0!==t.which&&(clearTimeout(a),n.data("filter",n.data("filter")+String.fromCharCode(t.which)),s=c.filter(function(){return 0===e(this).text().toLowerCase().indexOf(n.data("filter").toLowerCase())}).not(".disabled, .optgroup").first(),s.length&&(u.removeClass("active"),s.addClass("active"),i.listScroll(r,s),p.get(0).lastChild.nodeValue=s.text(),n.hasClass("open")||(d=!0)),a=setTimeout(function(){n.data("filter","")},500))))},optionHover:function(){var t=e(this);t.hasClass("disabled")||t.hasClass("optgroup")||t.siblings().removeClass("active").end().addClass("active")},optionClick:function(t){t.stopPropagation();var a=e(this),o=a.closest(".sod_select"),l=a.hasClass("disabled"),d=a.hasClass("optgroup"),i=o.find(".sod_option:not('.optgroup')").index(this);o.hasClass("touch")||(l||d||(o.find(".selected, .sod_placeholder").removeClass("selected sod_placeholder"),a.addClass("selected"),o.find("select option")[i].selected=!0,o.find("select").change()),clearTimeout(s),o.removeClass("open"))},selectChange:function(){var t=e(this),a=t.find(":selected"),s=a.text(),o=t.closest(".sod_select");o.find(".sod_label").get(0).lastChild.nodeValue=s,o.data("label",s),l.onChange.call(this),!o.data("links")&&!a.data("link")||a.data("link-external")?(o.data("links-external")||a.data("link-external"))&&window.open(a.val(),"_blank"):window.location.href=/a.val()},blurSod:function(t){if(e("body").find(t).length){var a=t.data("label"),o=t.data("placeholder"),l=t.find(".active"),i=t.find(".selected"),n=!1;clearTimeout(s),d&&!l.hasClass("selected")?(l.click(),n=!0):l.hasClass("selected")||(l.removeClass("active"),i.addClass("active")),!n&&o?t.find(".sod_label").get(0).lastChild.nodeValue=i.text():n||(t.find(".sod_label").get(0).lastChild.nodeValue=a),d=!1,t.removeClass("open focus"),t.blur(),e("html").off(".sodBlur")}},checkViewport:function(t,a){var o=t[0].getBoundingClientRect(),l=a.outerHeight();o.bottom+l+10>e(window).height()&&o.top-l>10?t.addClass("above"):t.removeClass("above"),s=setTimeout(function(){i.checkViewport(t,a)},200)},listScroll:function(e,t){var a=e[0].getBoundingClientRect(),s=t[0].getBoundingClientRect();a.top>s.top?e.scrollTop(e.scrollTop()-a.top+s.top):a.bottom 0||navigator.msMaxTouchPoints>0}},n={destroy:function(){return this.each(function(){var t=e(this),a=t.parent();a.hasClass("sod_select")?(t.off("change"),a.find("span").remove(),t.unwrap()):console.log("Select or Die: There's no SoD to destroy")})},update:function(){return this.each(function(){var t=e(this),a=t.parent(),s=a.find(".sod_list:first");a.hasClass("sod_select")?(s.empty(),a.find(".sod_label").get(0).lastChild.nodeValue="",t.is(":disabled")&&a.addClass("disabled"),e("option, optgroup",t).each(function(){i.populateSoD(e(this),s,a)})):console.log("Select or Die: There's no SoD to update")})},disable:function(t){return this.each(function(){var a=e(this),s=a.parent();s.hasClass("sod_select")?"undefined"!=typeof t?(s.find(".sod_list:first .sod_option[data-value='"+t+"']").addClass("disabled"),s.find(".sod_list:first .sod_option[data-label='"+t+"']").nextUntil(":not(.groupchild)").addClass("disabled"),e("option[value='"+t+"'], optgroup[label='"+t+"']",this).prop("disabled",!0)):s.hasClass("sod_select")&&(s.addClass("disabled"),a.prop("disabled",!0)):console.log("Select or Die: There's no SoD to disable")})},enable:function(t){return this.each(function(){var a=e(this),s=a.parent();s.hasClass("sod_select")?"undefined"!=typeof t?(s.find(".sod_list:first .sod_option[data-value='"+t+"']").removeClass("disabled"),s.find(".sod_list:first .sod_option[data-label='"+t+"']").nextUntil(":not(.groupchild)").removeClass("disabled"),e("option[value='"+t+"'], optgroup[label='"+t+"']",this).prop("disabled",!1)):s.hasClass("sod_select")&&(s.removeClass("disabled"),a.prop("disabled",!1)):console.log("Select or Die: There's no SoD to enable")})}};return n[t]?n[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void e.error('Select or Die: Oh no! No such method "'+t+'" for the SoD instance'):i.initSoD.apply(this,arguments)}}(jQuery);