/* (NM: custom version) selectordie.js 0.1.8 - Copyright (c) Per Vestman - Dual licensed under the MIT and GPL licenses. */ (function(d){d.fn.selectOrDie=function(g){var C={customID:null,customClass:"",placeholder:null,placeholderOption:!1,prefix:null,cycle:!1,stripEmpty:!1,links:!1,linksExternal:!1,size:0,tabIndex:0,onOpen:d.noop,onClose:d.noop,onChange:d.noop},f={},n=!1,y,m,e={initSoD:function(a){f=d.extend({},C,a);return this.each(function(){if(d(this).parent().hasClass("sod_select"))console.log("Select or Die: It looks like the SoD already exists");else{var a=d(this),c=a.data("custom-id")?a.data("custom-id"):f.customID, h=a.data("custom-class")?a.data("custom-class"):f.customClass,u=a.data("prefix")?a.data("prefix"):f.prefix,r=a.data("placeholder")?a.data("placeholder"):f.placeholder,k=a.data("placeholder-option")?a.data("placeholder-option"):f.placeholderOption,l=a.data("cycle")?a.data("cycle"):f.cycle,D=a.data("links")?a.data("links"):f.links,q=a.data("links-external")?a.data("links-external"):f.linksExternal,g=parseInt(a.data("size"))?a.data("size"):f.size,n=parseInt(a.data("tabindex"))?a.data("tabindex"):f.tabIndex? f.tabIndex:a.attr("tabindex")?a.attr("tabindex"):f.tabIndex,m=a.data("strip-empty")?a.data("strip-empty"):f.stripEmpty,z=a.prop("title")?a.prop("title"):null,p=a.is(":disabled")?" disabled":"",x="",v="",w=0;u&&(x=''+u+" ");v=r&&!u?v+(''+r+""):v+(''+x+"");var t=d("",{id:c,"class":"sod_select "+h+p+" "+a.attr("id"),title:z,tabindex:n,html:v,"data-cycle":l,"data-links":D,"data-links-external":q, "data-placeholder":r,"data-placeholder-option":k,"data-prefix":u,"data-filter":""}).insertAfter(this);e.isTouch()&&t.addClass("touch");c=d("",{"class":"sod_list_wrapper"}).appendTo(t);var A=d("",{"class":"sod_list"}).appendTo(c);d("option, optgroup",a).each(function(a){var b=d(this);m&&!d.trim(b.text())?b.remove():0===a&&k&&!x?e.populateSoD(b,A,t,!0):e.populateSoD(b,A,t,!1)});g&&(c.show(),d(".sod_option:lt("+g+")",A).each(function(){w+=d(this).outerHeight()}),c.removeAttr("style"),A.css({"max-height":w})); a.appendTo(t);t.on("focusin",e.focusSod).on("click",e.triggerSod).on("click",".sod_option",e.optionClick).on("mousemove",".sod_option",e.optionHover).on("keydown",e.keyboardUse);a.on("change",e.selectChange);d(document).on("click","label[for='"+a.attr("id")+"']",function(a){a.preventDefault();t.focus()})}})},populateSoD:function(a,b,c,h){var e=c.data("placeholder"),f=c.data("placeholder-option"),k=c.data("prefix"),l=c.find(".sod_label"),g=a.parent(),q=a.text(),n=a.val(),m=a.data("custom-id")?a.data("custom-id"): null,y=a.data("custom-class")?a.data("custom-class"):"",z=a.is(":disabled")?" disabled ":"",p=a.is(":selected")?" selected active ":"",x=a.data("link")?" link ":"",v=a.data("link-external")?" linkexternal":"",w=a.prop("label");a.is("option")?(d("",{"class":"sod_option "+y+z+p+x+v,id:m,title:q,html:q,"data-value":n}).appendTo(b),h&&!k?(c.data("label",q),c.data("placeholder",q),a.prop("disabled",!0),b.find(".sod_option:last").addClass("is-placeholder disabled"),p&&l.addClass("sod_placeholder")): p&&e&&!f&&!k?c.data("label",e):p&&c.data("label",q),(p&&!e||p&&f||p&&k)&&l.append(q),g.is("optgroup")&&(b.find(".sod_option:last").addClass("groupchild"),g.is(":disabled")&&b.find(".sod_option:last").addClass("disabled"))):d("",{"class":"sod_option optgroup "+z,title:w,html:w,"data-label":w}).appendTo(b)},focusSod:function(){var a=d(this);a.hasClass("disabled")?e.blurSod(a):(e.blurSod(d(".sod_select.focus").not(a)),a.addClass("focus"),d("html").on("click.sodBlur",function(){e.blurSod(a)}))}, triggerSod:function(a){a.stopPropagation();a=d(this);var b=a.find(".sod_list"),c=a.data("placeholder"),h=a.find(".active"),u=a.find(".selected");a.hasClass("disabled")||a.hasClass("open")||a.hasClass("touch")?(f.onClose.call(this),clearTimeout(m),a.removeClass("open"),c&&(a.find(".sod_label").get(0).lastChild.nodeValue=h.text())):(f.onOpen.call(this),a.addClass("open"),c&&!a.data("prefix")&&a.find(".sod_label").addClass("sod_placeholder").html(c),e.listScroll(b,u),e.checkViewport(a,b))},keyboardUse:function(a){var b= d(this),c=b.find(".sod_list"),h=b.find(".sod_option"),f=b.find(".sod_label"),g=b.data("cycle"),k=h.filter(".active");if(36a.which){if(37===a.which||38===a.which){var l=k.prevAll(":not('.disabled, .optgroup')").first();var m=h.not(".disabled, .optgroup").last()}else if(39===a.which||40===a.which)l=k.nextAll(":not('.disabled, .optgroup')").first(),m=h.not(".disabled, .optgroup").first();!l.hasClass("sod_option")&&g&&(l=m);if(l.hasClass("sod_option")||g)k.removeClass("active"),l.addClass("active"), f.get(0).lastChild.nodeValue=l.text(),e.listScroll(c,l),b.hasClass("open")||(n=!0);return!1}13===a.which||32===a.which&&b.hasClass("open")&&(" "===b.data("filter")[0]||""===b.data("filter"))?(a.preventDefault(),k.click()):32!==a.which||b.hasClass("open")||" "!==b.data("filter")[0]&&""!==b.data("filter")?27===a.which&&e.blurSod(b):(a.preventDefault(),n=!1,b.click());0!==a.which&&(clearTimeout(y),b.data("filter",b.data("filter")+String.fromCharCode(a.which)),a=h.filter(function(){return 0===d(this).text().toLowerCase().indexOf(b.data("filter").toLowerCase())}).not(".disabled, .optgroup").first(), a.length&&(k.removeClass("active"),a.addClass("active"),e.listScroll(c,a),f.get(0).lastChild.nodeValue=a.text(),b.hasClass("open")||(n=!0)),y=setTimeout(function(){b.data("filter","")},500))},optionHover:function(){var a=d(this);a.hasClass("disabled")||a.hasClass("optgroup")||a.siblings().removeClass("active").end().addClass("active")},optionClick:function(a){a.stopPropagation();a=d(this);var b=a.closest(".sod_select"),c=a.hasClass("disabled"),h=a.hasClass("optgroup"),e=b.find(".sod_option:not('.optgroup')").index(this); b.hasClass("touch")||(c||h||(b.find(".selected, .sod_placeholder").removeClass("selected sod_placeholder"),a.addClass("selected"),b.find("select option")[e].selected=!0,b.find("select").change()),clearTimeout(m),f.onClose.call(this),b.removeClass("open"))},selectChange:function(){var a=d(this),b=a.find(":selected"),c=b.text(),a=a.closest(".sod_select");a.find(".sod_label").get(0).lastChild.nodeValue=c;a.data("label",c);f.onChange.call(this,a,b);!a.data("links")&&!b.data("link")||b.data("link-external")? (a.data("links-external")||b.data("link-external"))&&window.open(b.val(),"_blank"):window.location.href=b.val()},blurSod:function(a){if(d("body").find(a).length){var b=a.data("label"),c=a.data("placeholder"),e=a.find(".active"),g=a.find(".selected"),r=!1;clearTimeout(m);n&&!e.hasClass("selected")?(e.click(),r=!0):e.hasClass("selected")||(e.removeClass("active"),g.addClass("active"));!r&&c?a.find(".sod_label").get(0).lastChild.nodeValue=g.text():r||(a.find(".sod_label").get(0).lastChild.nodeValue= b);n=!1;f.onClose.call(a);a.removeClass("open focus");a.blur();d("html").off(".sodBlur")}},checkViewport:function(a,b){var c=a[0].getBoundingClientRect(),f=b.outerHeight();c.bottom+f+10>d(window).height()&&10d.top?a.scrollTop(a.scrollTop()-c.top+d.top):c.bottom