
!function(n){"function"==typeof define&&define.amd?define(["jquery"],function(e){return n(e)}):"object"==typeof module&&"object"==typeof module.exports?exports=n(require("jquery")):n(jQuery)}(function(n){function e(n){var e=7.5625,t=2.75;return n<1/t?e*n*n:n<2/t?e*(n-=1.5/t)*n+.75:n<2.5/t?e*(n-=2.25/t)*n+.9375:e*(n-=2.625/t)*n+.984375}void 0!==n.easing&&(n.easing.jswing=n.easing.swing);var t=Math.pow,u=Math.sqrt,r=Math.sin,i=Math.cos,a=Math.PI,c=1.70158,o=1.525*c,s=2*a/3,f=2*a/4.5;n.extend(n.easing,{def:"easeOutQuad",swing:function(e){return n.easing[n.easing.def](e)},easeInQuad:function(n){return n*n},easeOutQuad:function(n){return 1-(1-n)*(1-n)},easeInOutQuad:function(n){return n<.5?2*n*n:1-t(-2*n+2,2)/2},easeInCubic:function(n){return n*n*n},easeOutCubic:function(n){return 1-t(1-n,3)},easeInOutCubic:function(n){return n<.5?4*n*n*n:1-t(-2*n+2,3)/2},easeInQuart:function(n){return n*n*n*n},easeOutQuart:function(n){return 1-t(1-n,4)},easeInOutQuart:function(n){return n<.5?8*n*n*n*n:1-t(-2*n+2,4)/2},easeInQuint:function(n){return n*n*n*n*n},easeOutQuint:function(n){return 1-t(1-n,5)},easeInOutQuint:function(n){return n<.5?16*n*n*n*n*n:1-t(-2*n+2,5)/2},easeInSine:function(n){return 1-i(n*a/2)},easeOutSine:function(n){return r(n*a/2)},easeInOutSine:function(n){return-(i(a*n)-1)/2},easeInExpo:function(n){return 0===n?0:t(2,10*n-10)},easeOutExpo:function(n){return 1===n?1:1-t(2,-10*n)},easeInOutExpo:function(n){return 0===n?0:1===n?1:n<.5?t(2,20*n-10)/2:(2-t(2,-20*n+10))/2},easeInCirc:function(n){return 1-u(1-t(n,2))},easeOutCirc:function(n){return u(1-t(n-1,2))},easeInOutCirc:function(n){return n<.5?(1-u(1-t(2*n,2)))/2:(u(1-t(-2*n+2,2))+1)/2},easeInElastic:function(n){return 0===n?0:1===n?1:-t(2,10*n-10)*r((10*n-10.75)*s)},easeOutElastic:function(n){return 0===n?0:1===n?1:t(2,-10*n)*r((10*n-.75)*s)+1},easeInOutElastic:function(n){return 0===n?0:1===n?1:n<.5?-(t(2,20*n-10)*r((20*n-11.125)*f))/2:t(2,-20*n+10)*r((20*n-11.125)*f)/2+1},easeInBack:function(n){return(c+1)*n*n*n-c*n*n},easeOutBack:function(n){return 1+(c+1)*t(n-1,3)+c*t(n-1,2)},easeInOutBack:function(n){return n<.5?t(2*n,2)*(7.189819*n-o)/2:(t(2*n-2,2)*((o+1)*(2*n-2)+o)+2)/2},easeInBounce:function(n){return 1-e(1-n)},easeOutBounce:e,easeInOutBounce:function(n){return n<.5?(1-e(1-2*n))/2:(1+e(2*n-1))/2}})});

!function(e){"use strict";var t={i18n:{ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeek:["Вск","Пн","Вт","Ср","Чт","Пт","Сб"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeek:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeek:["So","Mo","Di","Mi","Do","Fr","Sa"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeek:["zo","ma","di","wo","do","vr","za"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeek:["Paz","Pts","Sal","Çar","Per","Cum","Cts"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeek:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeek:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeek:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeek:["nd","pn","wt","śr","cz","pt","sb"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeek:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeek:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeek:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeek:["일","월","화","수","목","금","토"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeek:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"]},da:{months:["January","Februar","Marts","April","Maj","Juni","July","August","September","Oktober","November","December"],dayOfWeek:["Søn","Man","Tir","ons","Tor","Fre","lør"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["日","月","火","水","木","金","土"]},vi:{months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayOfWeek:["CN","T2","T3","T4","T5","T6","T7"]}},value:"",lang:"en",format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:!1,step:60,closeOnDateSelect:!1,closeOnWithoutClick:!0,timepicker:!0,datepicker:!0,minDate:!1,maxDate:!1,minTime:!1,maxTime:!1,allowTimes:[],opened:!1,initTime:!0,inline:!1,onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:!0,inverseButton:!1,hours12:!1,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,timeHeightInTimePicker:25,timepickerScrollbar:!0,todayButton:!0,defaultSelect:!0,scrollMonth:!0,scrollTime:!0,scrollInput:!0,lazyInit:!1,mask:!1,validateOnBlur:!0,allowBlank:!0,yearStart:1950,yearEnd:2050,style:"",id:"",roundTime:"round",className:"",weekends:[],yearOffset:0};Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){for(var n=t||0,a=this.length;n<a;n++)if(this[n]===e)return n;return-1}),e.fn.xdsoftScroller=function(t){return this.each(function(){var n=e(this);if(!e(this).hasClass("xdsoft_scroller_box")){var a=function(e){var t={x:0,y:0};if("touchstart"==e.type||"touchmove"==e.type||"touchend"==e.type||"touchcancel"==e.type){var n=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0];t.x=n.pageX,t.y=n.pageY}else"mousedown"!=e.type&&"mouseup"!=e.type&&"mousemove"!=e.type&&"mouseover"!=e.type&&"mouseout"!=e.type&&"mouseenter"!=e.type&&"mouseleave"!=e.type||(t.x=e.pageX,t.y=e.pageY);return t},r=0,o=n.children().eq(0),s=n[0].clientHeight,i=o[0].offsetHeight,d=e('<div class="xdsoft_scrollbar"></div>'),u=e('<div class="xdsoft_scroller"></div>'),c=100,l=!1;d.append(u),n.addClass("xdsoft_scroller_box").append(d),u.on("mousedown.xdsoft_scroller",function(a){s||n.trigger("resize_scroll.xdsoft_scroller",[t]);var o=a.pageY,i=parseInt(u.css("margin-top")),l=d[0].offsetHeight;e(document.body).addClass("xdsoft_noselect"),e([document.body,window]).on("mouseup.xdsoft_scroller",function f(){e([document.body,window]).off("mouseup.xdsoft_scroller",f).off("mousemove.xdsoft_scroller",r).removeClass("xdsoft_noselect")}),e(document.body).on("mousemove.xdsoft_scroller",r=function(e){var t=e.pageY-o+i;t<0&&(t=0),t+u[0].offsetHeight>l&&(t=l-u[0].offsetHeight),n.trigger("scroll_element.xdsoft_scroller",[c?t/c:0])})}),n.on("scroll_element.xdsoft_scroller",function(e,t){s||n.trigger("resize_scroll.xdsoft_scroller",[t,!0]),t=t>1?1:t<0||isNaN(t)?0:t,u.css("margin-top",c*t),o.css("marginTop",-parseInt((i-s)*t))}).on("resize_scroll.xdsoft_scroller",function(e,t,a){s=n[0].clientHeight,i=o[0].offsetHeight;var r=s/i,l=r*d[0].offsetHeight;r>1?u.hide():(u.show(),u.css("height",parseInt(l>10?l:10)),c=d[0].offsetHeight-u[0].offsetHeight,a!==!0&&n.trigger("scroll_element.xdsoft_scroller",[t?t:Math.abs(parseInt(o.css("marginTop")))/(i-s)]))}),n.mousewheel&&n.mousewheel(function(e,t,a,r){var d=Math.abs(parseInt(o.css("marginTop")));return n.trigger("scroll_element.xdsoft_scroller",[(d-20*t)/(i-s)]),e.stopPropagation(),!1}),n.on("touchstart",function(e){l=a(e)}),n.on("touchmove",function(e){if(l){var t=a(e),r=Math.abs(parseInt(o.css("marginTop")));n.trigger("scroll_element.xdsoft_scroller",[(r-(t.y-l.y))/(i-s)]),e.stopPropagation(),e.preventDefault()}}),n.on("touchend touchcancel",function(e){l=!1})}n.trigger("resize_scroll.xdsoft_scroller",[t])})},e.fn.datetimepicker=function(n){var a=48,r=57,o=96,s=105,i=17,d=46,u=13,c=27,l=8,f=37,m=38,h=39,g=40,p=9,x=116,v=65,y=67,D=86,T=90,w=89,b=!1,_=e.isPlainObject(n)||!n?e.extend(!0,{},t,n):e.extend({},t),M=0,k=function(e){e.on("open.xdsoft focusin.xdsoft mousedown.xdsoft",function t(n){e.is(":disabled")||e.is(":hidden")||!e.is(":visible")||e.data("xdsoft_datetimepicker")||(clearTimeout(M),M=setTimeout(function(){e.data("xdsoft_datetimepicker")||S(e),e.off("open.xdsoft focusin.xdsoft mousedown.xdsoft",t).trigger("open.xdsoft")},100))})},S=function(t){function n(){var e=_.value?_.value:t&&t.val&&t.val()?t.val():"";return e&&W.isValidDate(e=Date.parseDate(e,_.format))?M.data("changed",!0):e="",e||_.startDate===!1||(e=W.strToDateTime(_.startDate)),e?e:0}var M=e("<div "+(_.id?'id="'+_.id+'"':"")+" "+(_.style?'style="'+_.style+'"':"")+' class="xdsoft_datetimepicker xdsoft_noselect '+_.className+'"></div>'),k=e('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),S=e('<div class="xdsoft_datepicker active"></div>'),O=e('<div class="xdsoft_mounthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span></div><div class="xdsoft_label xdsoft_year"><span></span></div><button type="button" class="xdsoft_next"></button></div>'),F=e('<div class="xdsoft_calendar"></div>'),I=e('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),C=I.find(".xdsoft_time_box").eq(0),H=e('<div class="xdsoft_time_variant"></div>'),Y=e('<div class="xdsoft_scrollbar"></div>'),P=(e('<div class="xdsoft_scroller"></div>'),e('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>')),A=e('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>');O.find(".xdsoft_month span").after(P),O.find(".xdsoft_year span").after(A),O.find(".xdsoft_month,.xdsoft_year").on("mousedown.xdsoft",function(t){O.find(".xdsoft_select").hide();var n=e(this).find(".xdsoft_select").eq(0),a=0,r=0;W.currentTime&&(a=W.currentTime[e(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()),n.show();for(var o=n.find("div.xdsoft_option"),s=0;s<o.length&&o.eq(s).data("value")!=a;s++)r+=o[0].offsetHeight;return n.xdsoftScroller(r/(n.children()[0].offsetHeight-n[0].clientHeight)),t.stopPropagation(),!1}),O.find(".xdsoft_select").xdsoftScroller().on("mousedown.xdsoft",function(e){e.stopPropagation(),e.preventDefault()}).on("mousedown.xdsoft",".xdsoft_option",function(t){W&&W.currentTime&&W.currentTime[e(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](e(this).data("value")),e(this).parent().parent().hide(),M.trigger("xchange.xdsoft"),_.onChangeMonth&&_.onChangeMonth.call&&_.onChangeMonth.call(M,W.currentTime,M.data("input"))}),M.setOptions=function(n){if(_=e.extend(!0,{},_,n),n.allowTimes&&e.isArray(n.allowTimes)&&n.allowTimes.length&&(_.allowTimes=e.extend(!0,[],n.allowTimes)),n.weekends&&e.isArray(n.weekends)&&n.weekends.length&&(_.weekends=e.extend(!0,[],n.weekends)),!_.open&&!_.opened||_.inline||t.trigger("open.xdsoft"),_.inline&&(M.addClass("xdsoft_inline"),t.after(M).hide(),M.trigger("afterOpen.xdsoft")),_.inverseButton&&(_.next="xdsoft_prev",_.prev="xdsoft_next"),_.datepicker?S.addClass("active"):S.removeClass("active"),_.timepicker?I.addClass("active"):I.removeClass("active"),_.value&&(t&&t.val&&t.val(_.value),W.setCurrentTime(_.value)),isNaN(_.dayOfWeekStart)||parseInt(_.dayOfWeekStart)<0||parseInt(_.dayOfWeekStart)>6?_.dayOfWeekStart=0:_.dayOfWeekStart=parseInt(_.dayOfWeekStart),_.timepickerScrollbar||Y.hide(),_.minDate&&/^-(.*)$/.test(_.minDate)&&(_.minDate=W.strToDateTime(_.minDate).dateFormat(_.formatDate)),_.maxDate&&/^\+(.*)$/.test(_.maxDate)&&(_.maxDate=W.strToDateTime(_.maxDate).dateFormat(_.formatDate)),O.find(".xdsoft_today_button").css("visibility",_.todayButton?"visible":"hidden"),_.mask){var k=function(e){try{if(document.selection&&document.selection.createRange){var t=document.selection.createRange();return t.getBookmark().charCodeAt(2)-2}if(e.setSelectionRange)return e.selectionStart}catch(n){return 0}},F=function(e,t){var e="string"==typeof e||e instanceof String?document.getElementById(e):e;if(!e)return!1;if(e.createTextRange){var n=e.createTextRange();return n.collapse(!0),n.moveEnd(t),n.moveStart(t),n.select(),!0}return!!e.setSelectionRange&&(e.setSelectionRange(t,t),!0)},C=function(e,t){var n=e.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return RegExp(n).test(t)};switch(t.off("keydown.xdsoft"),!0){case _.mask===!0:_.mask=_.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59");case"string"==e.type(_.mask):C(_.mask,t.val())||t.val(_.mask.replace(/[0-9]/g,"_")),t.on("keydown.xdsoft",function(n){var M=this.value,S=n.which;switch(!0){case S>=a&&S<=r||S>=o&&S<=s||S==l||S==d:var O=k(this),I=S!=l&&S!=d?String.fromCharCode(o<=S&&S<=s?S-a:S):"_";for(S!=l&&S!=d||!O||(O--,I="_");/[^0-9_]/.test(_.mask.substr(O,1))&&O<_.mask.length&&O>0;)O+=S==l||S==d?-1:1;if(M=M.substr(0,O)+I+M.substr(O+1),""==e.trim(M))M=_.mask.replace(/[0-9]/g,"_");else if(O==_.mask.length)break;for(O+=S==l||S==d?0:1;/[^0-9_]/.test(_.mask.substr(O,1))&&O<_.mask.length&&O>0;)O+=S==l||S==d?-1:1;C(_.mask,M)?(this.value=M,F(this,O)):""==e.trim(M)?this.value=_.mask.replace(/[0-9]/g,"_"):t.trigger("error_input.xdsoft");break;case!!~[v,y,D,T,w].indexOf(S)&&b:case!!~[c,m,g,f,h,x,i,p,u].indexOf(S):return!0}return n.preventDefault(),!1})}}_.validateOnBlur&&t.off("blur.xdsoft").on("blur.xdsoft",function(){_.allowBlank&&!e.trim(e(this).val()).length?(e(this).val(null),M.data("xdsoft_datetime").empty()):Date.parseDate(e(this).val(),_.format)?M.data("xdsoft_datetime").setCurrentTime(e(this).val()):(e(this).val(W.now().dateFormat(_.format)),M.data("xdsoft_datetime").setCurrentTime(e(this).val())),M.trigger("changedatetime.xdsoft")}),_.dayOfWeekStartPrev=0==_.dayOfWeekStart?6:_.dayOfWeekStart-1,M.trigger("xchange.xdsoft")},M.data("options",_).on("mousedown.xdsoft",function(e){return e.stopPropagation(),e.preventDefault(),A.hide(),P.hide(),!1});var N=I.find(".xdsoft_time_box");N.append(H),N.xdsoftScroller(),M.on("afterOpen.xdsoft",function(){N.xdsoftScroller()}),M.append(S).append(I),_.withoutCopyright!==!0&&M.append(k),S.append(O).append(F),e("body").append(M);var W=new function(){var e=this;e.now=function(){var e=new Date;return _.yearOffset&&e.setFullYear(e.getFullYear()+_.yearOffset),e},e.currentTime=this.now(),e.isValidDate=function(e){return"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e.getTime())},e.setCurrentTime=function(t){e.currentTime="string"==typeof t?e.strToDateTime(t):e.isValidDate(t)?t:e.now(),M.trigger("xchange.xdsoft")},e.empty=function(){e.currentTime=null},e.getCurrentTime=function(t){return e.currentTime},e.nextMonth=function(){var t=e.currentTime.getMonth()+1;return 12==t&&(e.currentTime.setFullYear(e.currentTime.getFullYear()+1),t=0),e.currentTime.setDate(Math.min(Date.daysInMonth[t],e.currentTime.getDate())),e.currentTime.setMonth(t),_.onChangeMonth&&_.onChangeMonth.call&&_.onChangeMonth.call(M,W.currentTime,M.data("input")),M.trigger("xchange.xdsoft"),t},e.prevMonth=function(){var t=e.currentTime.getMonth()-1;return t==-1&&(e.currentTime.setFullYear(e.currentTime.getFullYear()-1),t=11),e.currentTime.setDate(Math.min(Date.daysInMonth[t],e.currentTime.getDate())),e.currentTime.setMonth(t),_.onChangeMonth&&_.onChangeMonth.call&&_.onChangeMonth.call(M,W.currentTime,M.data("input")),M.trigger("xchange.xdsoft"),t},e.strToDateTime=function(t){var n,a,r=[];return(r=/^(\+|\-)(.*)$/.exec(t))&&(r[2]=Date.parseDate(r[2],_.formatDate))?(n=r[2].getTime()-1*r[2].getTimezoneOffset()*6e4,a=new Date(W.now().getTime()+parseInt(r[1]+"1")*n)):a=t?Date.parseDate(t,_.format):e.now(),e.isValidDate(a)||(a=e.now()),a},e.strtodate=function(t){var n=t?Date.parseDate(t,_.formatDate):e.now();return e.isValidDate(n)||(n=e.now()),n},e.strtotime=function(t){var n=t?Date.parseDate(t,_.formatTime):e.now();return e.isValidDate(n)||(n=e.now()),n},e.str=function(){return e.currentTime.dateFormat(_.format)}};O.find(".xdsoft_today_button").on("mousedown.xdsoft",function(){M.data("changed",!0),W.setCurrentTime(0),M.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){t.val(W.str()),M.trigger("close.xdsoft")}),O.find(".xdsoft_prev,.xdsoft_next").on("mousedown.xdsoft",function(){var t=e(this),n=0,a=!1;!function r(e){W.currentTime.getMonth();t.hasClass(_.next)?W.nextMonth():t.hasClass(_.prev)&&W.prevMonth(),!a&&(n=setTimeout(r,e?e:100))}(500),e([document.body,window]).on("mouseup.xdsoft",function o(){clearTimeout(n),a=!0,e([document.body,window]).off("mouseup.xdsoft",o)})}),I.find(".xdsoft_prev,.xdsoft_next").on("mousedown.xdsoft",function(){var t=e(this),n=0,a=!1,r=110;!function o(e){var s=C[0].clientHeight,i=H[0].offsetHeight,d=Math.abs(parseInt(H.css("marginTop")));t.hasClass(_.next)&&i-s-_.timeHeightInTimePicker>=d?H.css("marginTop","-"+(d+_.timeHeightInTimePicker)+"px"):t.hasClass(_.prev)&&d-_.timeHeightInTimePicker>=0&&H.css("marginTop","-"+(d-_.timeHeightInTimePicker)+"px"),C.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(H.css("marginTop"))/(i-s))]),r=r>10?10:r-10,!a&&(n=setTimeout(o,e?e:r))}(500),e([document.body,window]).on("mouseup.xdsoft",function s(){clearTimeout(n),a=!0,e([document.body,window]).off("mouseup.xdsoft",s)})});var z=0;M.on("xchange.xdsoft",function(t){clearTimeout(z),z=setTimeout(function(){for(var t="",n=new Date(W.currentTime.getFullYear(),W.currentTime.getMonth(),1,12,0,0),a=0,r=W.now();n.getDay()!=_.dayOfWeekStart;)n.setDate(n.getDate()-1);t+="<table><thead><tr>";for(var o=0;o<7;o++)t+="<th>"+_.i18n[_.lang].dayOfWeek[o+_.dayOfWeekStart>6?0:o+_.dayOfWeekStart]+"</th>";t+="</tr></thead>",t+="<tbody><tr>";var s=!1,i=!1;_.maxDate!==!1&&(s=W.strtodate(_.maxDate),s=new Date(s.getFullYear(),s.getMonth(),s.getDate(),23,59,59,999)),_.minDate!==!1&&(i=W.strtodate(_.minDate),i=new Date(i.getFullYear(),i.getMonth(),i.getDate()));for(var d,u,c,l=[];a<W.currentTime.getDaysInMonth()||n.getDay()!=_.dayOfWeekStart||W.currentTime.getMonth()==n.getMonth();)l=[],a++,d=n.getDate(),u=n.getFullYear(),c=n.getMonth(),l.push("xdsoft_date"),(s!==!1&&n>s||i!==!1&&n<i)&&l.push("xdsoft_disabled"),W.currentTime.getMonth()!=c&&l.push("xdsoft_other_month"),(_.defaultSelect||M.data("changed"))&&W.currentTime.dateFormat("d.m.Y")==n.dateFormat("d.m.Y")&&l.push("xdsoft_current"),r.dateFormat("d.m.Y")==n.dateFormat("d.m.Y")&&l.push("xdsoft_today"),(0==n.getDay()||6==n.getDay()||~_.weekends.indexOf(n.dateFormat("d.m.Y")))&&l.push("xdsoft_weekend"),_.beforeShowDay&&"function"==typeof _.beforeShowDay&&l.push(_.beforeShowDay(n)),t+='<td data-date="'+d+'" data-month="'+c+'" data-year="'+u+'" class="xdsoft_date xdsoft_day_of_week'+n.getDay()+" "+l.join(" ")+'"><div>'+d+"</div></td>",n.getDay()==_.dayOfWeekStartPrev&&(t+="</tr>"),n.setDate(d+1);t+="</tbody></table>",F.html(t),O.find(".xdsoft_label span").eq(0).text(_.i18n[_.lang].months[W.currentTime.getMonth()]),O.find(".xdsoft_label span").eq(1).text(W.currentTime.getFullYear());var f="",m="",c="",h=function(e,t){var n=W.now();n.setHours(e),e=parseInt(n.getHours()),n.setMinutes(t),t=parseInt(n.getMinutes()),l=[],(_.maxTime!==!1&&W.strtotime(_.maxTime).getTime()<n.getTime()||_.minTime!==!1&&W.strtotime(_.minTime).getTime()>n.getTime())&&l.push("xdsoft_disabled"),(_.initTime||_.defaultSelect||M.data("changed"))&&parseInt(W.currentTime.getHours())==parseInt(e)&&(_.step>59||Math[_.roundTime](W.currentTime.getMinutes()/_.step)*_.step==parseInt(t))&&(_.defaultSelect||M.data("changed")?l.push("xdsoft_current"):_.initTime&&l.push("xdsoft_init_time")),parseInt(r.getHours())==parseInt(e)&&parseInt(r.getMinutes())==parseInt(t)&&l.push("xdsoft_today"),f+='<div class="xdsoft_time '+l.join(" ")+'" data-hour="'+e+'" data-minute="'+t+'">'+n.dateFormat(_.formatTime)+"</div>"};if(_.allowTimes&&e.isArray(_.allowTimes)&&_.allowTimes.length)for(var a=0;a<_.allowTimes.length;a++)m=W.strtotime(_.allowTimes[a]).getHours(),c=W.strtotime(_.allowTimes[a]).getMinutes(),h(m,c);else for(var a=0,o=0;a<(_.hours12?12:24);a++)for(o=0;o<60;o+=_.step)m=(a<10?"0":"")+a,c=(o<10?"0":"")+o,h(m,c);H.html(f);var g="",a=0;for(a=parseInt(_.yearStart,10)+_.yearOffset;a<=parseInt(_.yearEnd,10)+_.yearOffset;a++)g+='<div class="xdsoft_option '+(W.currentTime.getFullYear()==a?"xdsoft_current":"")+'" data-value="'+a+'">'+a+"</div>";for(A.children().eq(0).html(g),a=0,g="";a<=11;a++)g+='<div class="xdsoft_option '+(W.currentTime.getMonth()==a?"xdsoft_current":"")+'" data-value="'+a+'">'+_.i18n[_.lang].months[a]+"</div>";P.children().eq(0).html(g),e(this).trigger("generate.xdsoft")},10),t.stopPropagation()}).on("afterOpen.xdsoft",function(){if(_.timepicker){var e;if(H.find(".xdsoft_current").length?e=".xdsoft_current":H.find(".xdsoft_init_time").length&&(e=".xdsoft_init_time"),e){var t=C[0].clientHeight,n=H[0].offsetHeight,a=H.find(e).index()*_.timeHeightInTimePicker+1;n-t<a&&(a=n-t),H.css("marginTop","-"+parseInt(a)+"px"),C.trigger("scroll_element.xdsoft_scroller",[parseInt(a)/(n-t)])}}});var J=0;F.on("click.xdsoft","td",function(n){n.stopPropagation(),J++;var a=e(this),r=W.currentTime;return!a.hasClass("xdsoft_disabled")&&(r.setDate(a.data("date")),r.setMonth(a.data("month")),r.setFullYear(a.data("year")),M.trigger("select.xdsoft",[r]),t.val(W.str()),(J>1||_.closeOnDateSelect===!0||0===_.closeOnDateSelect&&!_.timepicker)&&!_.inline&&M.trigger("close.xdsoft"),_.onSelectDate&&_.onSelectDate.call&&_.onSelectDate.call(M,W.currentTime,M.data("input")),M.data("changed",!0),M.trigger("xchange.xdsoft"),M.trigger("changedatetime.xdsoft"),void setTimeout(function(){J=0},200))}),H.on("click.xdsoft","div",function(t){t.stopPropagation();var n=e(this),a=W.currentTime;return!n.hasClass("xdsoft_disabled")&&(a.setHours(n.data("hour")),a.setMinutes(n.data("minute")),M.trigger("select.xdsoft",[a]),M.data("input").val(W.str()),!_.inline&&M.trigger("close.xdsoft"),_.onSelectTime&&_.onSelectTime.call&&_.onSelectTime.call(M,W.currentTime,M.data("input")),M.data("changed",!0),M.trigger("xchange.xdsoft"),void M.trigger("changedatetime.xdsoft"))}),M.mousewheel&&S.mousewheel(function(e,t,n,a){return!_.scrollMonth||(t<0?W.nextMonth():W.prevMonth(),!1)}),M.mousewheel&&C.unmousewheel().mousewheel(function(e,t,n,a){if(!_.scrollTime)return!0;var r=C[0].clientHeight,o=H[0].offsetHeight,s=Math.abs(parseInt(H.css("marginTop"))),i=!0;return t<0&&o-r-_.timeHeightInTimePicker>=s?(H.css("marginTop","-"+(s+_.timeHeightInTimePicker)+"px"),i=!1):t>0&&s-_.timeHeightInTimePicker>=0&&(H.css("marginTop","-"+(s-_.timeHeightInTimePicker)+"px"),i=!1),C.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(H.css("marginTop"))/(o-r))]),e.stopPropagation(),i}),M.on("changedatetime.xdsoft",function(){if(_.onChangeDateTime&&_.onChangeDateTime.call){var e=M.data("input");_.onChangeDateTime.call(M,W.currentTime,e),e.trigger("change")}}).on("generate.xdsoft",function(){_.onGenerate&&_.onGenerate.call&&_.onGenerate.call(M,W.currentTime,M.data("input"))});var j=0;t.mousewheel&&t.mousewheel(function(e,n,a,r){return!_.scrollInput||(!_.datepicker&&_.timepicker?(j=H.find(".xdsoft_current").length?H.find(".xdsoft_current").eq(0).index():0,j+n>=0&&j+n<H.children().length&&(j+=n),H.children().eq(j).length&&H.children().eq(j).trigger("mousedown"),!1):_.datepicker&&!_.timepicker?(S.trigger(e,[n,a,r]),t.val&&t.val(W.str()),M.trigger("changedatetime.xdsoft"),!1):void 0)});var L=function(){var t=M.data("input").offset(),n=t.top+M.data("input")[0].offsetHeight-1,a=t.left;n+M[0].offsetHeight>e(window).height()+e(window).scrollTop()&&(n=t.top-M[0].offsetHeight+1),n<0&&(n=0),a+M[0].offsetWidth>e(window).width()&&(a=t.left-M[0].offsetWidth+M.data("input")[0].offsetWidth),M.css({left:a,top:n})};M.on("open.xdsoft",function(){var t=!0;_.onShow&&_.onShow.call&&(t=_.onShow.call(M,W.currentTime,M.data("input"))),t!==!1&&(M.show(),M.trigger("afterOpen.xdsoft"),L(),e(window).off("resize.xdsoft",L).on("resize.xdsoft",L),_.closeOnWithoutClick&&e([document.body,window]).on("mousedown.xdsoft",function n(){M.trigger("close.xdsoft"),e([document.body,window]).off("mousedown.xdsoft",n)}))}).on("close.xdsoft",function(e){var t=!0;_.onClose&&_.onClose.call&&(t=_.onClose.call(M,W.currentTime,M.data("input"))),t===!1||_.opened||_.inline||M.hide(),e.stopPropagation()}).data("input",t);var E=0;M.data("xdsoft_datetime",W),M.setOptions(_),W.setCurrentTime(n()),M.trigger("afterOpen.xdsoft"),t.data("xdsoft_datetimepicker",M).on("open.xdsoft focusin.xdsoft mousedown.xdsoft",function(e){t.is(":disabled")||t.is(":hidden")||!t.is(":visible")||(clearTimeout(E),E=setTimeout(function(){t.is(":disabled")||t.is(":hidden")||!t.is(":visible")||(W.setCurrentTime(n()),M.trigger("open.xdsoft"))},100))}).on("keydown.xdsoft",function(t){var n=(this.value,t.which);switch(!0){case!!~[u].indexOf(n):var a=e("input:visible,textarea:visible");return M.trigger("close.xdsoft"),a.eq(a.index(this)+1).focus(),!1;case!!~[p].indexOf(n):return M.trigger("close.xdsoft"),!0}})},O=function(t){var n=t.data("xdsoft_datetimepicker");n&&(n.data("xdsoft_datetime",null),n.remove(),t.data("xdsoft_datetimepicker",null).off("open.xdsoft focusin.xdsoft focusout.xdsoft mousedown.xdsoft blur.xdsoft keydown.xdsoft"),e(window).off("resize.xdsoft"),e([window,document.body]).off("mousedown.xdsoft"),t.unmousewheel&&t.unmousewheel())};return e(document).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(e){e.keyCode==i&&(b=!0)}).on("keyup.xdsoftctrl",function(e){e.keyCode==i&&(b=!1)}),this.each(function(){var t;if(t=e(this).data("xdsoft_datetimepicker")){if("string"===e.type(n))switch(n){case"show":e(this).select().focus(),t.trigger("open.xdsoft");break;case"hide":t.trigger("close.xdsoft");break;case"destroy":O(e(this));break;case"reset":this.value=this.defaultValue,this.value&&t.data("xdsoft_datetime").isValidDate(Date.parseDate(this.value,_.format))||t.data("changed",!1),t.data("xdsoft_datetime").setCurrentTime(this.value)}else t.setOptions(n);return 0}"string"!==e.type(n)&&(!_.lazyInit||_.open||_.inline?S(e(this)):k(e(this)))})}}(jQuery),Date.parseFunctions={count:0},Date.parseRegexes=[],Date.formatFunctions={count:0},Date.prototype.dateFormat=function(e){if("unixtime"==e)return parseInt(this.getTime()/1e3);null==Date.formatFunctions[e]&&Date.createNewFormat(e);var t=Date.formatFunctions[e];return this[t]()},Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;for(var code="Date.prototype."+funcName+" = function() {return ",special=!1,ch="",i=0;i<format.length;++i)ch=format.charAt(i),special||"\\"!=ch?special?(special=!1,code+="'"+String.escape(ch)+"' + "):code+=Date.getFormatCode(ch):special=!0;eval(code.substring(0,code.length-3)+";}")},Date.getFormatCode=function(e){switch(e){case"d":return"String.leftPad(this.getDate(), 2, '0') + ";case"D":return"Date.dayNames[this.getDay()].substring(0, 3) + ";case"j":return"this.getDate() + ";case"l":return"Date.dayNames[this.getDay()] + ";case"S":return"this.getSuffix() + ";case"w":return"this.getDay() + ";case"z":return"this.getDayOfYear() + ";case"W":return"this.getWeekOfYear() + ";case"F":return"Date.monthNames[this.getMonth()] + ";case"m":return"String.leftPad(this.getMonth() + 1, 2, '0') + ";case"M":return"Date.monthNames[this.getMonth()].substring(0, 3) + ";case"n":return"(this.getMonth() + 1) + ";case"t":return"this.getDaysInMonth() + ";case"L":return"(this.isLeapYear() ? 1 : 0) + ";case"Y":return"this.getFullYear() + ";case"y":return"('' + this.getFullYear()).substring(2, 4) + ";case"a":return"(this.getHours() < 12 ? 'am' : 'pm') + ";case"A":return"(this.getHours() < 12 ? 'AM' : 'PM') + ";case"g":return"((this.getHours() %12) ? this.getHours() % 12 : 12) + ";case"G":return"this.getHours() + ";case"h":return"String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";case"H":return"String.leftPad(this.getHours(), 2, '0') + ";case"i":return"String.leftPad(this.getMinutes(), 2, '0') + ";case"s":return"String.leftPad(this.getSeconds(), 2, '0') + ";case"O":return"this.getGMTOffset() + ";case"T":return"this.getTimezone() + ";case"Z":return"(this.getTimezoneOffset() * -60) + ";default:return"'"+String.escape(e)+"' + "}},Date.parseDate=function(e,t){if("unixtime"==t)return new Date(isNaN(parseInt(e))?0:1e3*parseInt(e));null==Date.parseFunctions[t]&&Date.createParser(t);var n=Date.parseFunctions[t];return Date[n](e)},Date.createParser=function(format){var funcName="parse"+Date.parseFunctions.count++,regexNum=Date.parseRegexes.length,currentGroup=1;Date.parseFunctions[format]=funcName;for(var code="Date."+funcName+" = function(input) {\nvar y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, z = -1;\nvar d = new Date();\ny = d.getFullYear();\nm = d.getMonth();\nd = d.getDate();\nvar results = input.match(Date.parseRegexes["+regexNum+"]);\nif (results && results.length > 0) {",regex="",special=!1,ch="",i=0;i<format.length;++i)ch=format.charAt(i),special||"\\"!=ch?special?(special=!1,regex+=String.escape(ch)):(obj=Date.formatCodeToRegex(ch,currentGroup),currentGroup+=obj.g,regex+=obj.s,obj.g&&obj.c&&(code+=obj.c)):special=!0;code+="if (y > 0 && z > 0){\nvar doyDate = new Date(y,0);\ndoyDate.setDate(z);\nm = doyDate.getMonth();\nd = doyDate.getDate();\n}",code+="if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n{return new Date(y, m, d, h, i, s);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n{return new Date(y, m, d, h, i);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0)\n{return new Date(y, m, d, h);}\nelse if (y > 0 && m >= 0 && d > 0)\n{return new Date(y, m, d);}\nelse if (y > 0 && m >= 0)\n{return new Date(y, m);}\nelse if (y > 0)\n{return new Date(y);}\n}return null;}",Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$"),eval(code)},Date.formatCodeToRegex=function(e,t){switch(e){case"D":return{g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case"j":case"d":return{g:1,c:"d = parseInt(results["+t+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"\\d"};case"z":return{g:1,c:"z = parseInt(results["+t+"], 10);\n",s:"(\\d{1,3})"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+t+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"};case"M":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+t+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case"n":case"m":return{g:1,c:"m = parseInt(results["+t+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"\\d{1,2}"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"Y":return{g:1,c:"y = parseInt(results["+t+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+t+"], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+t+"] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+t+"] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":case"h":case"H":return{g:1,c:"h = parseInt(results["+t+"], 10);\n",s:"(\\d{1,2})"};case"i":return{g:1,c:"i = parseInt(results["+t+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+t+"], 10);\n",s:"(\\d{2})"};case"O":return{g:0,c:null,s:"[+-]\\d{4}"};case"T":return{g:0,c:null,s:"[A-Z]{3}"};case"Z":return{g:0,c:null,s:"[+-]\\d{1,5}"};default:return{g:0,c:null,s:String.escape(e)}}},Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3")},Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+String.leftPad(Math.abs(this.getTimezoneOffset())%60,2,"0")},Date.prototype.getDayOfYear=function(){var e=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var t=0;t<this.getMonth();++t)e+=Date.daysInMonth[t];return e+this.getDate()},Date.prototype.getWeekOfYear=function(){var e=this.getDayOfYear()+(4-this.getDay()),t=new Date(this.getFullYear(),0,1),n=7-t.getDay()+4;return String.leftPad(Math.ceil((e-n)/7)+1,2,"0")},Date.prototype.isLeapYear=function(){var e=this.getFullYear();return 0==(3&e)&&(e%100||e%400==0&&e)},Date.prototype.getFirstDayOfMonth=function(){var e=(this.getDay()-(this.getDate()-1))%7;return e<0?e+7:e},Date.prototype.getLastDayOfMonth=function(){var e=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return e<0?e+7:e},Date.prototype.getDaysInMonth=function(){return Date.daysInMonth[1]=this.isLeapYear()?29:28,Date.daysInMonth[this.getMonth()]},Date.prototype.getSuffix=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}},String.escape=function(e){return e.replace(/('|\\)/g,"\\$1")},String.leftPad=function(e,t,n){var a=new String(e);for(null==n&&(n=" ");a.length<t;)a=n+a;return a},Date.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31],Date.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"],Date.dayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Date.y2kYear=50,Date.monthNumbers={Jan:0,Feb:1,Mar:2,
Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11},Date.patterns={ISO8601LongPattern:"Y-m-d H:i:s",ISO8601ShortPattern:"Y-m-d",ShortDatePattern:"n/j/Y",LongDatePattern:"l, F d, Y",FullDateTimePattern:"l, F d, Y g:i:s A",MonthDayPattern:"F d",ShortTimePattern:"g:i A",LongTimePattern:"g:i:s A",SortableDateTimePattern:"Y-m-d\\TH:i:s",UniversalSortableDateTimePattern:"Y-m-d H:i:sO",YearMonthPattern:"F, Y"},function(e){"function"==typeof define&&define.amd?define(["jquery.flot.min"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){function t(t){var r,o=t||window.event,s=[].slice.call(arguments,1),i=0,d=0,u=0,c=0,l=0;return t=e.event.fix(o),t.type="mousewheel",o.wheelDelta&&(i=o.wheelDelta),o.detail&&(i=o.detail*-1),o.deltaY&&(u=o.deltaY*-1,i=u),o.deltaX&&(d=o.deltaX,i=d*-1),void 0!==o.wheelDeltaY&&(u=o.wheelDeltaY),void 0!==o.wheelDeltaX&&(d=o.wheelDeltaX*-1),c=Math.abs(i),(!n||c<n)&&(n=c),l=Math.max(Math.abs(u),Math.abs(d)),(!a||l<a)&&(a=l),r=i>0?"floor":"ceil",i=Math[r](i/n),d=Math[r](d/a),u=Math[r](u/a),s.unshift(t,i,d,u),(e.event.dispatch||e.event.handle).apply(this,s)}var n,a,r=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],o="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"];if(e.event.fixHooks)for(var s=r.length;s;)e.event.fixHooks[r[--s]]=e.event.mouseHooks;e.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var e=o.length;e;)this.addEventListener(o[--e],t,!1);else this.onmousewheel=t},teardown:function(){if(this.removeEventListener)for(var e=o.length;e;)this.removeEventListener(o[--e],t,!1);else this.onmousewheel=null}},e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})});
function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,i=Array(e.length);t<e.length;t++)i[t]=e[t];return i}return Array.from(e)}var _slice=Array.prototype.slice,_slicedToArray=function(){function e(e,t){var i=[],n=!0,r=!1,s=void 0;try{for(var a,o=e[Symbol.iterator]();!(n=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);n=!0);}catch(l){r=!0,s=l}finally{try{!n&&o["return"]&&o["return"]()}finally{if(r)throw s}}return i}return function(t,i){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e};!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):e.parsley=t(e.jQuery)}(this,function(e){"use strict";function t(e,t){return e.parsleyAdaptedCallback||(e.parsleyAdaptedCallback=function(){var i=Array.prototype.slice.call(arguments,0);i.unshift(this),e.apply(t||T,i)}),e.parsleyAdaptedCallback}function i(e){return 0===e.lastIndexOf(D,0)?e.substr(D.length):e}function n(){var t=this,i=window||global;_extends(this,{isNativeEvent:function(e){return e.originalEvent&&e.originalEvent.isTrusted!==!1},fakeInputEvent:function(i){t.isNativeEvent(i)&&e(i.target).trigger("input")},misbehaves:function(i){t.isNativeEvent(i)&&(t.behavesOk(i),e(document).on("change.inputevent",i.data.selector,t.fakeInputEvent),t.fakeInputEvent(i))},behavesOk:function(i){t.isNativeEvent(i)&&e(document).off("input.inputevent",i.data.selector,t.behavesOk).off("change.inputevent",i.data.selector,t.misbehaves)},install:function(){if(!i.inputEventPatched){i.inputEventPatched="0.0.3";for(var n=["select",'input[type="checkbox"]','input[type="radio"]','input[type="file"]'],r=0;r<n.length;r++){var s=n[r];e(document).on("input.inputevent",s,{selector:s},t.behavesOk).on("change.inputevent",s,{selector:s},t.misbehaves)}}},uninstall:function(){delete i.inputEventPatched,e(document).off(".inputevent")}})}var r=1,s={},a={attr:function(e,t,i){var n,r,s,a=new RegExp("^"+t,"i");if("undefined"==typeof i)i={};else for(n in i)i.hasOwnProperty(n)&&delete i[n];if(!e)return i;for(s=e.attributes,n=s.length;n--;)r=s[n],r&&r.specified&&a.test(r.name)&&(i[this.camelize(r.name.slice(t.length))]=this.deserializeValue(r.value));return i},checkAttr:function(e,t,i){return e.hasAttribute(t+i)},setAttr:function(e,t,i,n){e.setAttribute(this.dasherize(t+i),String(n))},generateID:function(){return""+r++},deserializeValue:function(t){var i;try{return t?"true"==t||"false"!=t&&("null"==t?null:isNaN(i=Number(t))?/^[\[\{]/.test(t)?e.parseJSON(t):t:i):t}catch(n){return t}},camelize:function(e){return e.replace(/-+(.)?/g,function(e,t){return t?t.toUpperCase():""})},dasherize:function(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()},warn:function(){var e;window.console&&"function"==typeof window.console.warn&&(e=window.console).warn.apply(e,arguments)},warnOnce:function(e){s[e]||(s[e]=!0,this.warn.apply(this,arguments))},_resetWarnings:function(){s={}},trimString:function(e){return e.replace(/^\s+|\s+$/g,"")},parse:{date:function S(e){var t=e.match(/^(\d{4,})-(\d\d)-(\d\d)$/);if(!t)return null;var i=t.map(function(e){return parseInt(e,10)}),n=_slicedToArray(i,4),r=(n[0],n[1]),s=n[2],a=n[3],S=new Date(r,s-1,a);return S.getFullYear()!==r||S.getMonth()+1!==s||S.getDate()!==a?null:S},string:function(e){return e},integer:function(e){return isNaN(e)?null:parseInt(e,10)},number:function(e){if(isNaN(e))throw null;return parseFloat(e)},"boolean":function(e){return!/^\s*false\s*$/i.test(e)},object:function(e){return a.deserializeValue(e)},regexp:function(e){var t="";return/^\/.*\/(?:[gimy]*)$/.test(e)?(t=e.replace(/.*\/([gimy]*)$/,"$1"),e=e.replace(new RegExp("^/(.*?)/"+t+"$"),"$1")):e="^"+e+"$",new RegExp(e,t)}},parseRequirement:function(e,t){var i=this.parse[e||"string"];if(!i)throw'Unknown requirement specification: "'+e+'"';var n=i(t);if(null===n)throw"Requirement is not a "+e+': "'+t+'"';return n},namespaceEvents:function(t,i){return t=this.trimString(t||"").split(/\s+/),t[0]?e.map(t,function(e){return e+"."+i}).join(" "):""},difference:function(t,i){var n=[];return e.each(t,function(e,t){i.indexOf(t)==-1&&n.push(t)}),n},all:function(t){return e.when.apply(e,_toConsumableArray(t).concat([42,42]))},objectCreate:Object.create||function(){var e=function(){};return function(t){if(arguments.length>1)throw Error("Second argument not supported");if("object"!=typeof t)throw TypeError("Argument must be an object");e.prototype=t;var i=new e;return e.prototype=null,i}}(),_SubmitSelector:'input[type="submit"], button:submit'},o={namespace:"data-parsley-",inputs:"input, textarea, select",excluded:"input[type=button], input[type=submit], input[type=reset], input[type=hidden]",priorityEnabled:!0,multiple:null,group:null,uiEnabled:!0,validationThreshold:3,focus:"first",trigger:!1,triggerAfterFailure:"input",errorClass:"parsley-error",successClass:"parsley-success",classHandler:function(e){},errorsContainer:function(e){},errorsWrapper:'<ul class="parsley-errors-list"></ul>',errorTemplate:"<li></li>"},l=function(){this.__id__=a.generateID()};l.prototype={asyncSupport:!0,_pipeAccordingToValidationResult:function(){var t=this,i=function(){var i=e.Deferred();return!0!==t.validationResult&&i.reject(),i.resolve().promise()};return[i,i]},actualizeOptions:function(){return a.attr(this.element,this.options.namespace,this.domOptions),this.parent&&this.parent.actualizeOptions&&this.parent.actualizeOptions(),this},_resetOptions:function(e){this.domOptions=a.objectCreate(this.parent.options),this.options=a.objectCreate(this.domOptions);for(var t in e)e.hasOwnProperty(t)&&(this.options[t]=e[t]);this.actualizeOptions()},_listeners:null,on:function(e,t){this._listeners=this._listeners||{};var i=this._listeners[e]=this._listeners[e]||[];return i.push(t),this},subscribe:function(t,i){e.listenTo(this,t.toLowerCase(),i)},off:function(e,t){var i=this._listeners&&this._listeners[e];if(i)if(t)for(var n=i.length;n--;)i[n]===t&&i.splice(n,1);else delete this._listeners[e];return this},unsubscribe:function(t,i){e.unsubscribeTo(this,t.toLowerCase())},trigger:function(e,t,i){t=t||this;var n,r=this._listeners&&this._listeners[e];if(r)for(var s=r.length;s--;)if(n=r[s].call(t,t,i),n===!1)return n;return!this.parent||this.parent.trigger(e,t,i)},asyncIsValid:function(e,t){return a.warnOnce("asyncIsValid is deprecated; please use whenValid instead"),this.whenValid({group:e,force:t})},_findRelated:function(){return this.options.multiple?e(this.parent.element.querySelectorAll("["+this.options.namespace+'multiple="'+this.options.multiple+'"]')):this.$element}};var u=function(e,t){var i=e.match(/^\s*\[(.*)\]\s*$/);if(!i)throw'Requirement is not an array: "'+e+'"';var n=i[1].split(",").map(a.trimString);if(n.length!==t)throw"Requirement has "+n.length+" values when "+t+" are needed";return n},d=function(e,t,i){var n=null,r={};for(var s in e)if(s){var o=i(s);"string"==typeof o&&(o=a.parseRequirement(e[s],o)),r[s]=o}else n=a.parseRequirement(e[s],t);return[n,r]},h=function(t){e.extend(!0,this,t)};h.prototype={validate:function(e,t){if(this.fn)return arguments.length>3&&(t=[].slice.call(arguments,1,-1)),this.fn(e,t);if(Array.isArray(e)){if(!this.validateMultiple)throw"Validator `"+this.name+"` does not handle multiple values";return this.validateMultiple.apply(this,arguments)}var i=arguments[arguments.length-1];if(this.validateDate&&i._isDateInput())return arguments[0]=a.parse.date(arguments[0]),null!==arguments[0]&&this.validateDate.apply(this,arguments);if(this.validateNumber)return!isNaN(e)&&(arguments[0]=parseFloat(arguments[0]),this.validateNumber.apply(this,arguments));if(this.validateString)return this.validateString.apply(this,arguments);throw"Validator `"+this.name+"` only handles multiple values"},parseRequirements:function(t,i){if("string"!=typeof t)return Array.isArray(t)?t:[t];var n=this.requirementType;if(Array.isArray(n)){for(var r=u(t,n.length),s=0;s<r.length;s++)r[s]=a.parseRequirement(n[s],r[s]);return r}return e.isPlainObject(n)?d(n,t,i):[a.parseRequirement(n,t)]},requirementType:"string",priority:2};var p=function(e,t){this.__class__="ValidatorRegistry",this.locale="en",this.init(e||{},t||{})},c={email:/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,number:/^-?(\d*\.)?\d+(e[-+]?\d+)?$/i,integer:/^-?\d+$/,digits:/^\d+$/,alphanum:/^\w+$/i,date:{test:function(e){return null!==a.parse.date(e)}},url:new RegExp("^(?:(?:https?|ftp)://)?(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:/\\S*)?$","i")};c.range=c.number;var f=function(e){var t=(""+e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0},m=function(e,t){return t.map(a.parse[e])},g=function(e,t){return function(i){for(var n=arguments.length,r=Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];return r.pop(),t.apply(void 0,[i].concat(_toConsumableArray(m(e,r))))}},v=function(e){return{validateDate:g("date",e),validateNumber:g("number",e),requirementType:e.length<=2?"string":["string","string"],priority:30}};p.prototype={init:function(e,t){this.catalog=t,this.validators=_extends({},this.validators);for(var i in e)this.addValidator(i,e[i].fn,e[i].priority);window.Parsley.trigger("parsley:validator:init")},setLocale:function(e){if("undefined"==typeof this.catalog[e])throw new Error(e+" is not available in the catalog");return this.locale=e,this},addCatalog:function(e,t,i){return"object"==typeof t&&(this.catalog[e]=t),!0===i?this.setLocale(e):this},addMessage:function(e,t,i){return"undefined"==typeof this.catalog[e]&&(this.catalog[e]={}),this.catalog[e][t]=i,this},addMessages:function(e,t){for(var i in t)this.addMessage(e,i,t[i]);return this},addValidator:function(e,t,i){if(this.validators[e])a.warn('Validator "'+e+'" is already defined.');else if(o.hasOwnProperty(e))return void a.warn('"'+e+'" is a restricted keyword and is not a valid validator name.');return this._setValidator.apply(this,arguments)},updateValidator:function(e,t,i){return this.validators[e]?this._setValidator.apply(this,arguments):(a.warn('Validator "'+e+'" is not already defined.'),this.addValidator.apply(this,arguments))},removeValidator:function(e){return this.validators[e]||a.warn('Validator "'+e+'" is not defined.'),delete this.validators[e],this},_setValidator:function(e,t,i){"object"!=typeof t&&(t={fn:t,priority:i}),t.validate||(t=new h(t)),this.validators[e]=t;for(var n in t.messages||{})this.addMessage(n,e,t.messages[n]);return this},getErrorMessage:function(e){var t;if("type"===e.name){var i=this.catalog[this.locale][e.name]||{};t=i[e.requirements]}else t=this.formatMessage(this.catalog[this.locale][e.name],e.requirements);return t||this.catalog[this.locale].defaultMessage||this.catalog.en.defaultMessage},formatMessage:function(e,t){if("object"==typeof t){for(var i in t)e=this.formatMessage(e,t[i]);return e}return"string"==typeof e?e.replace(/%s/i,t):""},validators:{notblank:{validateString:function(e){return/\S/.test(e)},priority:2},required:{validateMultiple:function(e){return e.length>0},validateString:function(e){return/\S/.test(e)},priority:512},type:{validateString:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],n=i.step,r=void 0===n?"any":n,s=i.base,a=void 0===s?0:s,o=c[t];if(!o)throw new Error("validator type `"+t+"` is not supported");if(!o.test(e))return!1;if("number"===t&&!/^any$/i.test(r||"")){var l=Number(e),u=Math.max(f(r),f(a));if(f(l)>u)return!1;var d=function(e){return Math.round(e*Math.pow(10,u))};if((d(l)-d(a))%d(r)!=0)return!1}return!0},requirementType:{"":"string",step:"string",base:"number"},priority:256},pattern:{validateString:function(e,t){return t.test(e)},requirementType:"regexp",priority:64},minlength:{validateString:function(e,t){return e.length>=t},requirementType:"integer",priority:30},maxlength:{validateString:function(e,t){return e.length<=t},requirementType:"integer",priority:30},length:{validateString:function(e,t,i){return e.length>=t&&e.length<=i},requirementType:["integer","integer"],priority:30},mincheck:{validateMultiple:function(e,t){return e.length>=t},requirementType:"integer",priority:30},maxcheck:{validateMultiple:function(e,t){return e.length<=t},requirementType:"integer",priority:30},check:{validateMultiple:function(e,t,i){return e.length>=t&&e.length<=i},requirementType:["integer","integer"],priority:30},min:v(function(e,t){return e>=t}),max:v(function(e,t){return e<=t}),range:v(function(e,t,i){return e>=t&&e<=i}),equalto:{validateString:function(t,i){var n=e(i);return n.length?t===n.val():t===i},priority:256}}};var y={},_=function k(e,t,i){for(var n=[],r=[],s=0;s<e.length;s++){for(var a=!1,o=0;o<t.length;o++)if(e[s].assert.name===t[o].assert.name){a=!0;break}a?r.push(e[s]):n.push(e[s])}return{kept:r,added:n,removed:i?[]:k(t,e,!0).added}};y.Form={_actualizeTriggers:function(){var e=this;this.$element.on("submit.Parsley",function(t){e.onSubmitValidate(t)}),this.$element.on("click.Parsley",a._SubmitSelector,function(t){e.onSubmitButton(t)}),!1!==this.options.uiEnabled&&this.element.setAttribute("novalidate","")},focus:function(){if(this._focusedField=null,!0===this.validationResult||"none"===this.options.focus)return null;for(var e=0;e<this.fields.length;e++){var t=this.fields[e];if(!0!==t.validationResult&&t.validationResult.length>0&&"undefined"==typeof t.options.noFocus&&(this._focusedField=t.$element,"first"===this.options.focus))break}return null===this._focusedField?null:this._focusedField.focus()},_destroyUI:function(){this.$element.off(".Parsley")}},y.Field={_reflowUI:function(){if(this._buildUI(),this._ui){var e=_(this.validationResult,this._ui.lastValidationResult);this._ui.lastValidationResult=this.validationResult,this._manageStatusClass(),this._manageErrorsMessages(e),this._actualizeTriggers(),!e.kept.length&&!e.added.length||this._failedOnce||(this._failedOnce=!0,this._actualizeTriggers())}},getErrorsMessages:function(){if(!0===this.validationResult)return[];for(var e=[],t=0;t<this.validationResult.length;t++)e.push(this.validationResult[t].errorMessage||this._getErrorMessage(this.validationResult[t].assert));return e},addError:function(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=t.message,n=t.assert,r=t.updateClass,s=void 0===r||r;this._buildUI(),this._addError(e,{message:i,assert:n}),s&&this._errorClass()},updateError:function(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=t.message,n=t.assert,r=t.updateClass,s=void 0===r||r;this._buildUI(),this._updateError(e,{message:i,assert:n}),s&&this._errorClass()},removeError:function(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=t.updateClass,n=void 0===i||i;this._buildUI(),this._removeError(e),n&&this._manageStatusClass()},_manageStatusClass:function(){this.hasConstraints()&&this.needsValidation()&&!0===this.validationResult?this._successClass():this.validationResult.length>0?this._errorClass():this._resetClass()},_manageErrorsMessages:function(t){if("undefined"==typeof this.options.errorsMessagesDisabled){if("undefined"!=typeof this.options.errorMessage)return t.added.length||t.kept.length?(this._insertErrorWrapper(),0===this._ui.$errorsWrapper.find(".parsley-custom-error-message").length&&this._ui.$errorsWrapper.append(e(this.options.errorTemplate).addClass("parsley-custom-error-message")),this._ui.$errorsWrapper.addClass("filled").find(".parsley-custom-error-message").html(this.options.errorMessage)):this._ui.$errorsWrapper.removeClass("filled").find(".parsley-custom-error-message").remove();for(var i=0;i<t.removed.length;i++)this._removeError(t.removed[i].assert.name);for(i=0;i<t.added.length;i++)this._addError(t.added[i].assert.name,{message:t.added[i].errorMessage,assert:t.added[i].assert});for(i=0;i<t.kept.length;i++)this._updateError(t.kept[i].assert.name,{message:t.kept[i].errorMessage,assert:t.kept[i].assert})}},_addError:function(t,i){var n=i.message,r=i.assert;this._insertErrorWrapper(),this._ui.$errorsWrapper.addClass("filled").append(e(this.options.errorTemplate).addClass("parsley-"+t).html(n||this._getErrorMessage(r)))},_updateError:function(e,t){var i=t.message,n=t.assert;this._ui.$errorsWrapper.addClass("filled").find(".parsley-"+e).html(i||this._getErrorMessage(n))},_removeError:function(e){this._ui.$errorsWrapper.removeClass("filled").find(".parsley-"+e).remove()},_getErrorMessage:function(e){var t=e.name+"Message";return"undefined"!=typeof this.options[t]?window.Parsley.formatMessage(this.options[t],e.requirements):window.Parsley.getErrorMessage(e)},_buildUI:function(){if(!this._ui&&!1!==this.options.uiEnabled){var t={};this.element.setAttribute(this.options.namespace+"id",this.__id__),t.$errorClassHandler=this._manageClassHandler(),t.errorsWrapperId="parsley-id-"+(this.options.multiple?"multiple-"+this.options.multiple:this.__id__),t.$errorsWrapper=e(this.options.errorsWrapper).attr("id",t.errorsWrapperId),t.lastValidationResult=[],t.validationInformationVisible=!1,this._ui=t}},_manageClassHandler:function(){if("string"==typeof this.options.classHandler)return 0===e(this.options.classHandler).length&&ParsleyUtils.warn("No elements found that match the selector `"+this.options.classHandler+"` set in options.classHandler or data-parsley-class-handler"),e(this.options.classHandler);if("function"==typeof this.options.classHandler)var t=this.options.classHandler.call(this,this);return"undefined"!=typeof t&&t.length?t:this._inputHolder()},_inputHolder:function(){return this.options.multiple&&"SELECT"!==this.element.nodeName?this.$element.parent():this.$element},_insertErrorWrapper:function(){var t;if(0!==this._ui.$errorsWrapper.parent().length)return this._ui.$errorsWrapper.parent();if("string"==typeof this.options.errorsContainer){if(e(this.options.errorsContainer).length)return e(this.options.errorsContainer).append(this._ui.$errorsWrapper);a.warn("The errors container `"+this.options.errorsContainer+"` does not exist in DOM")}else"function"==typeof this.options.errorsContainer&&(t=this.options.errorsContainer.call(this,this));return"undefined"!=typeof t&&t.length?t.append(this._ui.$errorsWrapper):this._inputHolder().after(this._ui.$errorsWrapper)},_actualizeTriggers:function(){var e,t=this,i=this._findRelated();i.off(".Parsley"),this._failedOnce?i.on(a.namespaceEvents(this.options.triggerAfterFailure,"Parsley"),function(){t._validateIfNeeded()}):(e=a.namespaceEvents(this.options.trigger,"Parsley"))&&i.on(e,function(e){t._validateIfNeeded(e)})},_validateIfNeeded:function(e){var t=this;e&&/key|input/.test(e.type)&&(!this._ui||!this._ui.validationInformationVisible)&&this.getValue().length<=this.options.validationThreshold||(this.options.debounce?(window.clearTimeout(this._debounced),this._debounced=window.setTimeout(function(){return t.validate()},this.options.debounce)):this.validate())},_resetUI:function(){this._failedOnce=!1,this._actualizeTriggers(),"undefined"!=typeof this._ui&&(this._ui.$errorsWrapper.removeClass("filled").children().remove(),this._resetClass(),this._ui.lastValidationResult=[],this._ui.validationInformationVisible=!1)},_destroyUI:function(){this._resetUI(),"undefined"!=typeof this._ui&&this._ui.$errorsWrapper.remove(),delete this._ui},_successClass:function(){this._ui.validationInformationVisible=!0,this._ui.$errorClassHandler.removeClass(this.options.errorClass).addClass(this.options.successClass)},_errorClass:function(){this._ui.validationInformationVisible=!0,this._ui.$errorClassHandler.removeClass(this.options.successClass).addClass(this.options.errorClass)},_resetClass:function(){this._ui.$errorClassHandler.removeClass(this.options.successClass).removeClass(this.options.errorClass)}};var w=function(t,i,n){this.__class__="Form",this.element=t,this.$element=e(t),this.domOptions=i,this.options=n,this.parent=window.Parsley,this.fields=[],this.validationResult=null},b={pending:null,resolved:!0,rejected:!1};w.prototype={onSubmitValidate:function(e){var t=this;if(!0!==e.parsley){var i=this._submitSource||this.$element.find(a._SubmitSelector)[0];if(this._submitSource=null,this.$element.find(".parsley-synthetic-submit-button").prop("disabled",!0),!i||null===i.getAttribute("formnovalidate")){window.Parsley._remoteCache={};var n=this.whenValidate({event:e});"resolved"===n.state()&&!1!==this._trigger("submit")||(e.stopImmediatePropagation(),e.preventDefault(),"pending"===n.state()&&n.done(function(){t._submit(i)}))}}},onSubmitButton:function(e){this._submitSource=e.currentTarget},_submit:function(t){if(!1!==this._trigger("submit")){if(t){var i=this.$element.find(".parsley-synthetic-submit-button").prop("disabled",!1);0===i.length&&(i=e('<input class="parsley-synthetic-submit-button" type="hidden">').appendTo(this.$element)),i.attr({name:t.getAttribute("name"),value:t.getAttribute("value")})}this.$element.trigger(_extends(e.Event("submit"),{parsley:!0}))}},validate:function(t){if(arguments.length>=1&&!e.isPlainObject(t)){a.warnOnce("Calling validate on a parsley form without passing arguments as an object is deprecated.");var i=_slice.call(arguments),n=i[0],r=i[1],s=i[2];t={group:n,force:r,event:s}}return b[this.whenValidate(t).state()]},whenValidate:function(){var t,i=this,n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=n.group,s=n.force,o=n.event;this.submitEvent=o,o&&(this.submitEvent=_extends({},o,{preventDefault:function(){a.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`"),i.validationResult=!1}})),this.validationResult=!0,this._trigger("validate"),this._refreshFields();var l=this._withoutReactualizingFormOptions(function(){return e.map(i.fields,function(e){return e.whenValidate({force:s,group:r})})});return(t=a.all(l).done(function(){i._trigger("success")}).fail(function(){i.validationResult=!1,i.focus(),i._trigger("error")}).always(function(){i._trigger("validated")})).pipe.apply(t,_toConsumableArray(this._pipeAccordingToValidationResult()))},isValid:function(t){if(arguments.length>=1&&!e.isPlainObject(t)){a.warnOnce("Calling isValid on a parsley form without passing arguments as an object is deprecated.");var i=_slice.call(arguments),n=i[0],r=i[1];t={group:n,force:r}}return b[this.whenValid(t).state()]},whenValid:function(){var t=this,i=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=i.group,r=i.force;this._refreshFields();var s=this._withoutReactualizingFormOptions(function(){return e.map(t.fields,function(e){return e.whenValid({group:n,force:r})})});return a.all(s)},reset:function(){for(var e=0;e<this.fields.length;e++)this.fields[e].reset();this._trigger("reset")},destroy:function(){this._destroyUI();for(var e=0;e<this.fields.length;e++)this.fields[e].destroy();this.$element.removeData("Parsley"),this._trigger("destroy")},_refreshFields:function(){return this.actualizeOptions()._bindFields()},_bindFields:function(){var t=this,i=this.fields;return this.fields=[],this.fieldsMappedById={},this._withoutReactualizingFormOptions(function(){t.$element.find(t.options.inputs).not(t.options.excluded).each(function(e,i){var n=new window.Parsley.Factory(i,{},t);if(("Field"===n.__class__||"FieldMultiple"===n.__class__)&&!0!==n.options.excluded){var r=n.__class__+"-"+n.__id__;"undefined"==typeof t.fieldsMappedById[r]&&(t.fieldsMappedById[r]=n,t.fields.push(n))}}),e.each(a.difference(i,t.fields),function(e,t){t.reset()})}),this},_withoutReactualizingFormOptions:function(e){var t=this.actualizeOptions;this.actualizeOptions=function(){return this};var i=e();return this.actualizeOptions=t,i},_trigger:function(e){return this.trigger("form:"+e)}};var F=function(e,t,i,n,r){var s=window.Parsley._validatorRegistry.validators[t],a=new h(s);n=n||e.options[t+"Priority"]||a.priority,r=!0===r,_extends(this,{validator:a,name:t,requirements:i,priority:n,isDomConstraint:r}),this._parseRequirements(e.options)},C=function(e){var t=e[0].toUpperCase();return t+e.slice(1)};F.prototype={validate:function(e,t){var i;return(i=this.validator).validate.apply(i,[e].concat(_toConsumableArray(this.requirementList),[t]))},_parseRequirements:function(e){var t=this;this.requirementList=this.validator.parseRequirements(this.requirements,function(i){return e[t.name+C(i)]})}};var E=function(t,i,n,r){this.__class__="Field",this.element=t,this.$element=e(t),"undefined"!=typeof r&&(this.parent=r),this.options=n,this.domOptions=i,this.constraints=[],this.constraintsByName={},this.validationResult=!0,this._bindConstraints()},A={pending:null,resolved:!0,rejected:!1};E.prototype={validate:function(t){arguments.length>=1&&!e.isPlainObject(t)&&(a.warnOnce("Calling validate on a parsley field without passing arguments as an object is deprecated."),t={options:t});var i=this.whenValidate(t);if(!i)return!0;switch(i.state()){case"pending":return null;case"resolved":return!0;case"rejected":return this.validationResult}},whenValidate:function(){var e,t=this,i=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=i.force,r=i.group;if(this.refreshConstraints(),!r||this._isInGroup(r))return this.value=this.getValue(),this._trigger("validate"),(e=this.whenValid({force:n,value:this.value,_refreshed:!0}).always(function(){t._reflowUI()}).done(function(){t._trigger("success")}).fail(function(){t._trigger("error")}).always(function(){t._trigger("validated")})).pipe.apply(e,_toConsumableArray(this._pipeAccordingToValidationResult()))},hasConstraints:function(){return 0!==this.constraints.length},needsValidation:function(e){return"undefined"==typeof e&&(e=this.getValue()),!(!e.length&&!this._isRequired()&&"undefined"==typeof this.options.validateIfEmpty)},_isInGroup:function(t){return Array.isArray(this.options.group)?-1!==e.inArray(t,this.options.group):this.options.group===t},isValid:function(t){if(arguments.length>=1&&!e.isPlainObject(t)){a.warnOnce("Calling isValid on a parsley field without passing arguments as an object is deprecated.");var i=_slice.call(arguments),n=i[0],r=i[1];t={force:n,value:r}}var s=this.whenValid(t);return!s||A[s.state()]},whenValid:function(){var t=this,i=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=i.force,r=void 0!==n&&n,s=i.value,o=i.group,l=i._refreshed;if(l||this.refreshConstraints(),!o||this._isInGroup(o)){if(this.validationResult=!0,!this.hasConstraints())return e.when();if("undefined"!=typeof s&&null!==s||(s=this.getValue()),!this.needsValidation(s)&&!0!==r)return e.when();var u=this._getGroupedConstraints(),d=[];return e.each(u,function(i,n){var r=a.all(e.map(n,function(e){return t._validateConstraint(s,e)}));if(d.push(r),"rejected"===r.state())return!1}),a.all(d)}},_validateConstraint:function(t,i){var n=this,r=i.validate(t,this);return!1===r&&(r=e.Deferred().reject()),a.all([r]).fail(function(e){n.validationResult instanceof Array||(n.validationResult=[]),n.validationResult.push({assert:i,errorMessage:"string"==typeof e&&e})})},getValue:function(){var e;return e="function"==typeof this.options.value?this.options.value(this):"undefined"!=typeof this.options.value?this.options.value:this.$element.val(),"undefined"==typeof e||null===e?"":this._handleWhitespace(e)},reset:function(){return this._resetUI(),this._trigger("reset")},destroy:function(){this._destroyUI(),this.$element.removeData("Parsley"),this.$element.removeData("FieldMultiple"),this._trigger("destroy")},refreshConstraints:function(){return this.actualizeOptions()._bindConstraints()},addConstraint:function(e,t,i,n){if(window.Parsley._validatorRegistry.validators[e]){var r=new F(this,e,t,i,n);"undefined"!==this.constraintsByName[r.name]&&this.removeConstraint(r.name),this.constraints.push(r),this.constraintsByName[r.name]=r}return this},removeConstraint:function(e){for(var t=0;t<this.constraints.length;t++)if(e===this.constraints[t].name){this.constraints.splice(t,1);break}return delete this.constraintsByName[e],this},updateConstraint:function(e,t,i){return this.removeConstraint(e).addConstraint(e,t,i)},_bindConstraints:function(){for(var e=[],t={},i=0;i<this.constraints.length;i++)!1===this.constraints[i].isDomConstraint&&(e.push(this.constraints[i]),t[this.constraints[i].name]=this.constraints[i]);this.constraints=e,this.constraintsByName=t;for(var n in this.options)this.addConstraint(n,this.options[n],void 0,!0);return this._bindHtml5Constraints()},_bindHtml5Constraints:function(){null!==this.element.getAttribute("required")&&this.addConstraint("required",!0,void 0,!0),null!==this.element.getAttribute("pattern")&&this.addConstraint("pattern",this.element.getAttribute("pattern"),void 0,!0);var e=this.element.getAttribute("min"),t=this.element.getAttribute("max");null!==e&&null!==t?this.addConstraint("range",[e,t],void 0,!0):null!==e?this.addConstraint("min",e,void 0,!0):null!==t&&this.addConstraint("max",t,void 0,!0),null!==this.element.getAttribute("minlength")&&null!==this.element.getAttribute("maxlength")?this.addConstraint("length",[this.element.getAttribute("minlength"),this.element.getAttribute("maxlength")],void 0,!0):null!==this.element.getAttribute("minlength")?this.addConstraint("minlength",this.element.getAttribute("minlength"),void 0,!0):null!==this.element.getAttribute("maxlength")&&this.addConstraint("maxlength",this.element.getAttribute("maxlength"),void 0,!0);var i=this.element.type;return"number"===i?this.addConstraint("type",["number",{step:this.element.getAttribute("step")||"1",base:e||this.element.getAttribute("value")}],void 0,!0):/^(email|url|range|date)$/i.test(i)?this.addConstraint("type",i,void 0,!0):this},_isRequired:function(){return"undefined"!=typeof this.constraintsByName.required&&!1!==this.constraintsByName.required.requirements},_trigger:function(e){return this.trigger("field:"+e)},_handleWhitespace:function(e){return!0===this.options.trimValue&&a.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"'),"squish"===this.options.whitespace&&(e=e.replace(/\s{2,}/g," ")),"trim"!==this.options.whitespace&&"squish"!==this.options.whitespace&&!0!==this.options.trimValue||(e=a.trimString(e)),e},_isDateInput:function(){var e=this.constraintsByName.type;return e&&"date"===e.requirements},_getGroupedConstraints:function(){if(!1===this.options.priorityEnabled)return[this.constraints];for(var e=[],t={},i=0;i<this.constraints.length;i++){var n=this.constraints[i].priority;t[n]||e.push(t[n]=[]),t[n].push(this.constraints[i])}return e.sort(function(e,t){return t[0].priority-e[0].priority}),e}};var x=E,$=function(){this.__class__="FieldMultiple"};$.prototype={addElement:function(e){return this.$elements.push(e),this},refreshConstraints:function(){var t;if(this.constraints=[],"SELECT"===this.element.nodeName)return this.actualizeOptions()._bindConstraints(),
this;for(var i=0;i<this.$elements.length;i++)if(e("html").has(this.$elements[i]).length){t=this.$elements[i].data("FieldMultiple").refreshConstraints().constraints;for(var n=0;n<t.length;n++)this.addConstraint(t[n].name,t[n].requirements,t[n].priority,t[n].isDomConstraint)}else this.$elements.splice(i,1);return this},getValue:function(){if("function"==typeof this.options.value)return this.options.value(this);if("undefined"!=typeof this.options.value)return this.options.value;if("INPUT"===this.element.nodeName){if("radio"===this.element.type)return this._findRelated().filter(":checked").val()||"";if("checkbox"===this.element.type){var t=[];return this._findRelated().filter(":checked").each(function(){t.push(e(this).val())}),t}}return"SELECT"===this.element.nodeName&&null===this.$element.val()?[]:this.$element.val()},_init:function(){return this.$elements=[this.$element],this}};var P=function(t,i,n){this.element=t,this.$element=e(t);var r=this.$element.data("Parsley");if(r)return"undefined"!=typeof n&&r.parent===window.Parsley&&(r.parent=n,r._resetOptions(r.options)),"object"==typeof i&&_extends(r.options,i),r;if(!this.$element.length)throw new Error("You must bind Parsley on an existing element.");if("undefined"!=typeof n&&"Form"!==n.__class__)throw new Error("Parent instance must be a Form instance");return this.parent=n||window.Parsley,this.init(i)};P.prototype={init:function(e){return this.__class__="Parsley",this.__version__="2.7.2",this.__id__=a.generateID(),this._resetOptions(e),"FORM"===this.element.nodeName||a.checkAttr(this.element,this.options.namespace,"validate")&&!this.$element.is(this.options.inputs)?this.bind("parsleyForm"):this.isMultiple()?this.handleMultiple():this.bind("parsleyField")},isMultiple:function(){return"radio"===this.element.type||"checkbox"===this.element.type||"SELECT"===this.element.nodeName&&null!==this.element.getAttribute("multiple")},handleMultiple:function(){var t,i,n=this;if(this.options.multiple=this.options.multiple||(t=this.element.getAttribute("name"))||this.element.getAttribute("id"),"SELECT"===this.element.nodeName&&null!==this.element.getAttribute("multiple"))return this.options.multiple=this.options.multiple||this.__id__,this.bind("parsleyFieldMultiple");if(!this.options.multiple)return a.warn("To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.",this.$element),this;this.options.multiple=this.options.multiple.replace(/(:|\.|\[|\]|\{|\}|\$)/g,""),t&&e('input[name="'+t+'"]').each(function(e,t){"radio"!==t.type&&"checkbox"!==t.type||t.setAttribute(n.options.namespace+"multiple",n.options.multiple)});for(var r=this._findRelated(),s=0;s<r.length;s++)if(i=e(r.get(s)).data("Parsley"),"undefined"!=typeof i){this.$element.data("FieldMultiple")||i.addElement(this.$element);break}return this.bind("parsleyField",!0),i||this.bind("parsleyFieldMultiple")},bind:function(t,i){var n;switch(t){case"parsleyForm":n=e.extend(new w(this.element,this.domOptions,this.options),new l,window.ParsleyExtend)._bindFields();break;case"parsleyField":n=e.extend(new x(this.element,this.domOptions,this.options,this.parent),new l,window.ParsleyExtend);break;case"parsleyFieldMultiple":n=e.extend(new x(this.element,this.domOptions,this.options,this.parent),new $,new l,window.ParsleyExtend)._init();break;default:throw new Error(t+"is not a supported Parsley type")}return this.options.multiple&&a.setAttr(this.element,this.options.namespace,"multiple",this.options.multiple),"undefined"!=typeof i?(this.$element.data("FieldMultiple",n),n):(this.$element.data("Parsley",n),n._actualizeTriggers(),n._trigger("init"),n)}};var V=e.fn.jquery.split(".");if(parseInt(V[0])<=1&&parseInt(V[1])<8)throw"The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";V.forEach||a.warn("Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim");var O=_extends(new l,{element:document,$element:e(document),actualizeOptions:null,_resetOptions:null,Factory:P,version:"2.7.2"});_extends(x.prototype,y.Field,l.prototype),_extends(w.prototype,y.Form,l.prototype),_extends(P.prototype,l.prototype),e.fn.parsley=e.fn.psly=function(t){if(this.length>1){var i=[];return this.each(function(){i.push(e(this).parsley(t))}),i}return e(this).length?new P(this[0],t):void a.warn("You must bind Parsley on an existing element.")},"undefined"==typeof window.ParsleyExtend&&(window.ParsleyExtend={}),O.options=_extends(a.objectCreate(o),window.ParsleyConfig),window.ParsleyConfig=O.options,window.Parsley=window.psly=O,O.Utils=a,window.ParsleyUtils={},e.each(a,function(e,t){"function"==typeof t&&(window.ParsleyUtils[e]=function(){return a.warnOnce("Accessing `window.ParsleyUtils` is deprecated. Use `window.Parsley.Utils` instead."),a[e].apply(a,arguments)})});var M=window.Parsley._validatorRegistry=new p(window.ParsleyConfig.validators,window.ParsleyConfig.i18n);window.ParsleyValidator={},e.each("setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator".split(" "),function(e,t){window.Parsley[t]=function(){return M[t].apply(M,arguments)},window.ParsleyValidator[t]=function(){var e;return a.warnOnce("Accessing the method '"+t+"' through Validator is deprecated. Simply call 'window.Parsley."+t+"(...)'"),(e=window.Parsley)[t].apply(e,arguments)}}),window.Parsley.UI=y,window.ParsleyUI={removeError:function(e,t,i){var n=!0!==i;return a.warnOnce("Accessing UI is deprecated. Call 'removeError' on the instance directly. Please comment in issue 1073 as to your need to call this method."),e.removeError(t,{updateClass:n})},getErrorsMessages:function(e){return a.warnOnce("Accessing UI is deprecated. Call 'getErrorsMessages' on the instance directly."),e.getErrorsMessages()}},e.each("addError updateError".split(" "),function(e,t){window.ParsleyUI[t]=function(e,i,n,r,s){var o=!0!==s;return a.warnOnce("Accessing UI is deprecated. Call '"+t+"' on the instance directly. Please comment in issue 1073 as to your need to call this method."),e[t](i,{message:n,assert:r,updateClass:o})}}),!1!==window.ParsleyConfig.autoBind&&e(function(){e("[data-parsley-validate]").length&&e("[data-parsley-validate]").parsley()});var T=e({}),R=function(){a.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley")},D="parsley:";e.listen=function(e,n){var r;if(R(),"object"==typeof arguments[1]&&"function"==typeof arguments[2]&&(r=arguments[1],n=arguments[2]),"function"!=typeof n)throw new Error("Wrong parameters");window.Parsley.on(i(e),t(n,r))},e.listenTo=function(e,n,r){if(R(),!(e instanceof x||e instanceof w))throw new Error("Must give Parsley instance");if("string"!=typeof n||"function"!=typeof r)throw new Error("Wrong parameters");e.on(i(n),t(r))},e.unsubscribe=function(e,t){if(R(),"string"!=typeof e||"function"!=typeof t)throw new Error("Wrong arguments");window.Parsley.off(i(e),t.parsleyAdaptedCallback)},e.unsubscribeTo=function(e,t){if(R(),!(e instanceof x||e instanceof w))throw new Error("Must give Parsley instance");e.off(i(t))},e.unsubscribeAll=function(t){R(),window.Parsley.off(i(t)),e("form,input,textarea,select").each(function(){var n=e(this).data("Parsley");n&&n.off(i(t))})},e.emit=function(e,t){var n;R();var r=t instanceof x||t instanceof w,s=Array.prototype.slice.call(arguments,r?2:1);s.unshift(i(e)),r||(t=window.Parsley),(n=t).trigger.apply(n,_toConsumableArray(s))};e.extend(!0,O,{asyncValidators:{"default":{fn:function(e){return e.status>=200&&e.status<300},url:!1},reverse:{fn:function(e){return e.status<200||e.status>=300},url:!1}},addAsyncValidator:function(e,t,i,n){return O.asyncValidators[e]={fn:t,url:i||!1,options:n||{}},this}}),O.addValidator("remote",{requirementType:{"":"string",validator:"string",reverse:"boolean",options:"object"},validateString:function(t,i,n,r){var s,a,o={},l=n.validator||(!0===n.reverse?"reverse":"default");if("undefined"==typeof O.asyncValidators[l])throw new Error("Calling an undefined async validator: `"+l+"`");i=O.asyncValidators[l].url||i,i.indexOf("{value}")>-1?i=i.replace("{value}",encodeURIComponent(t)):o[r.element.getAttribute("name")||r.element.getAttribute("id")]=t;var u=e.extend(!0,n.options||{},O.asyncValidators[l].options);s=e.extend(!0,{},{url:i,data:o,type:"GET"},u),r.trigger("field:ajaxoptions",r,s),a=e.param(s),"undefined"==typeof O._remoteCache&&(O._remoteCache={});var d=O._remoteCache[a]=O._remoteCache[a]||e.ajax(s),h=function(){var t=O.asyncValidators[l].fn.call(r,d,i,n);return t||(t=e.Deferred().reject()),e.when(t)};return d.then(h,h)},priority:-1}),O.on("form:submit",function(){O._remoteCache={}}),l.prototype.addAsyncValidator=function(){return a.warnOnce("Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`"),O.addAsyncValidator.apply(O,arguments)},O.addMessages("en",{defaultMessage:"This value seems to be invalid.",type:{email:"This value should be a valid email.",url:"This value should be a valid url.",number:"This value should be a valid number.",integer:"This value should be a valid integer.",digits:"This value should be digits.",alphanum:"This value should be alphanumeric."},notblank:"This value should not be blank.",required:"This value is required.",pattern:"This value seems to be invalid.",min:"This value should be greater than or equal to %s.",max:"This value should be lower than or equal to %s.",range:"This value should be between %s and %s.",minlength:"This value is too short. It should have %s characters or more.",maxlength:"This value is too long. It should have %s characters or fewer.",length:"This value length is invalid. It should be between %s and %s characters long.",mincheck:"You must select at least %s choices.",maxcheck:"You must select %s choices or fewer.",check:"You must select between %s and %s choices.",equalto:"This value should be the same."}),O.setLocale("en");var I=new n;I.install();var q=O;return q});
jQuery(document).ready(function(e){function a(e,a){l(e,a),e.find(a.container).first().show()}function n(a,n){if(n.tabs){var t=e("<div />",{"class":n.tabMenuClassName}).insertBefore(a.children(n.container).filter(":first"));a.children(n.container).each(function(i,r){var l=e("<button/>").html(e(this).children(n.header).html()).addClass(0==i?n.tabMenuItemActiveClassName:"").addClass("item"+i).addClass("btn btn-default").prop("type","button").on("click keypress",{container:a.children(n.container),fieldset:e(r)},function(){var t=e(this),i=t.parent().children().index(t);s(a,n,t,i)});n.tabIndex&&l.prop("tabindex",i),t.append(l)})}}function t(a,n){n.navigation&&a.children(n.container).each(function(t){var i=e("<div />").addClass("powermail_fieldwrap").addClass("powermail_tab_navigation").appendTo(e(this));t>0&&i.append(c(a,n)),t<a.children(n.container).length-1&&i.append(o(a,n))})}function i(a,n){e.fn.parsley&&"data-parsley-validate"===a.data("parsley-validate")&&a.parsley().subscribe("parsley:field:validated",function(){v(a,n),C(a,n)})}function r(a,n){n.openTabOnError&&e.fn.parsley&&e.listen("parsley:field:error",function(){setTimeout(function(){a.find("."+n.tabMenuClassName+" > ."+n.tabMenuItemErrorClassName+":first").click()},50)})}function s(a,n,t,i){$activeTab=b(a,n),$activeTab.removeClass(n.tabMenuItemActiveClassName),t.addClass(n.tabMenuItemActiveClassName),l(a,n),e(".powermail_fieldset",a).slice(i,i+1).show()}function l(e,a){e.children(a.container).hide()}function c(a,n){return e("<a />").prop("href","#").addClass("btn btn-warning").html("<").click(function(e){e.preventDefault(),u(a,n)})}function o(a,n){return e("<a />").prop("href","#").addClass("btn btn-primary pull-right").html(">").click(function(e){e.preventDefault(),d(a,n)})}function d(e,a){var n=m(e,a);$activeTab=b(e,a),$activeTab.removeClass(a.tabMenuItemActiveClassName).next().addClass(a.tabMenuItemActiveClassName),f(e,a,n+1)}function u(e,a){var n=m(e,a);$activeTab=b(e,a),$activeTab.removeClass(a.tabMenuItemActiveClassName).prev().addClass(a.tabMenuItemActiveClassName),f(e,a,n-1)}function f(e,a,n){l(e,a),e.find(".powermail_fieldset").slice(n,n+1).show()}function m(e,a){var n=p(e,a),t=n.index(b(e,a));return parseInt(t)}function p(e,a){return e.find("."+a.tabMenuClassName).children()}function b(e,a){var n=p(e,a);return n.filter("."+a.tabMenuItemActiveClassName)}function v(e,a){var n=p(e,a);n.removeClass(a.tabMenuItemErrorClassName)}function C(a,n){a.parsley().isValid()||a.find(".parsley-error").each(function(){var t=a.find(".powermail_fieldset").index(e(this).closest(".powermail_fieldset")),i=p(a,n),r=i.slice(t,t+1);r.addClass(n.tabMenuItemErrorClassName)})}e.fn.powermailTabs=function(e){"use strict";var s=jQuery(this);e=jQuery.extend({container:"fieldset",header:"legend",tabs:!0,navigation:!0,openTabOnError:!0,tabIndex:!0,tabMenuClassName:"btn-group",tabMenuItemActiveClassName:"btn-primary",tabMenuItemErrorClassName:"btn-danger"},e),a(s,e),n(s,e),t(s,e),i(s,e),r(s,e)}});
function PowermailForm(e){"use strict";this.initialize=function(){t(),a(),i(),r(),o(),n(),f(),l()};var t=function(){e.fn.powermailTabs&&e(".powermail_morestep").each(function(){e(this).powermailTabs()})},a=function(){e("form[data-powermail-ajax]").length&&p()},i=function(){if(e('*[data-powermail-location="prefill"]').length&&navigator.geolocation){e(this);navigator.geolocation.getCurrentPosition(function(t){var a=t.coords.latitude,i=t.coords.longitude,r=C()+"/index.php?eID=powermailEidGetLocation";jQuery.ajax({url:r,data:"lat="+a+"&lng="+i,cache:!1,success:function(t){t&&e('*[data-powermail-location="prefill"]').val(t)}})})}},r=function(){e.fn.datetimepicker&&e(".powermail_date").each(function(){var t=e(this);if("date"===t.prop("type")||"datetime-local"===t.prop("type")||"time"===t.prop("type")){if(!t.data("datepicker-force")){if(e(this).data("date-value")){var a=g(e(this).data("date-value"),e(this).data("datepicker-format"),t.prop("type"));null!==a&&e(this).val(a)}return}t.prop("type","text"),t.val(e(this).data("date-value"))}var i=!0,r=!0;"date"===t.data("datepicker-settings")?r=!1:"time"===t.data("datepicker-settings")&&(i=!1),t.datetimepicker({format:t.data("datepicker-format"),timepicker:r,datepicker:i,lang:"en",i18n:{en:{months:t.data("datepicker-months").split(","),dayOfWeek:t.data("datepicker-days").split(",")}}})})},o=function(){e(".powermail_all_type_password.powermail_all_value").html("********")},n=function(){e.fn.parsley&&e(".powermail_reset").on("click","",function(){e('form[data-parsley-validate="data-parsley-validate"]').parsley().reset()})},l=function(){window.Parsley&&(x(),b())},p=function(){var t,a=!1;e(document).on("submit","form[data-powermail-ajax]",function(i){var r=e(this),o=r.closest(".tx-powermail");r.data("powermail-ajax-uri")&&(t=r.data("powermail-ajax-uri"));var n=r.data("powermail-form");a||(e.ajax({type:"POST",url:r.prop("action"),data:new FormData(r.get(0)),contentType:!1,processData:!1,beforeSend:function(){s(r)},complete:function(){d(r),f(),c(o)},success:function(i){var o=e('*[data-powermail-form="'+n+'"]:first',i);o.length?(e('*[data-powermail-form="'+n+'"]:first').closest(".tx-powermail").html(o),e.fn.powermailTabs&&e(".powermail_morestep").powermailTabs(),e.fn.parsley&&e('form[data-parsley-validate="data-parsley-validate"]').parsley(),w()):(t?D(t):r.submit(),a=!0)}}),i.preventDefault())})},s=function(t){d(t),e(".powermail_submit",t).length?e(".powermail_submit",t).parent().append(y()):t.closest(".tx-powermail").append(y())},d=function(e){e.closest(".tx-powermail").find(".powermail_progressbar").remove()},c=function(t){var a=e.Event("submitted.powermail.form");t.trigger(a)},f=function(){e(".powermail_fieldwrap_file").find(".deleteAllFiles").each(function(){u(e(this).closest(".powermail_fieldwrap_file").find('input[type="file"]'))}),e(".deleteAllFiles").click(function(){m(e(this).closest(".powermail_fieldwrap_file").find('input[type="hidden"]')),e(this).closest("ul").fadeOut(function(){e(this).remove()})})},u=function(e){e.prop("disabled","disabled").addClass("hide").prop("type","hidden")},m=function(e){e.prop("disabled",!1).removeClass("hide").prop("type","file")},w=function(){e("img.powermail_captchaimage").each(function(){var t=h(e(this).prop("src"));e(this).prop("src",t+"?hash="+v(5))})},h=function(e){var t=e.split("?");return t[0]},v=function(e){for(var t="",a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",i=0;i<e;i++)t+=a.charAt(Math.floor(Math.random()*a.length));return t},g=function(e,t,a){var i=Date.parseDate(e,t);if(null===i)return null;var r=new Date(i),o=r.getFullYear()+"-";o+=("0"+(r.getMonth()+1)).slice(-2)+"-",o+=("0"+r.getDate()).slice(-2);var n=("0"+r.getHours()).slice(-2)+":"+("0"+r.getMinutes()).slice(-2),l=o+"T"+n;return"date"===a?o:"datetime-local"===a?l:"time"===a?n:null},y=function(){return e("<div />").addClass("powermail_progressbar").html(e("<div />").addClass("powermail_progress").html(e("<div />").addClass("powermail_progress_inner")))},_=function(e){for(var t=e.get(0),a=0,i=0;i<t.files.length;i++){var r=t.files[i];r.size>a&&(a=r.size)}return parseInt(a)},x=function(){window.Parsley.addValidator("powermailfilesize",function(t,a){if(a.indexOf(",")!==-1){var i=a.split(","),r=parseInt(i[0]),o=e('*[name="tx_powermail_pi1[field]['+i[1]+'][]"]');if(o.length&&_(o)>r)return!1}return!0},32).addMessage("en","powermailfilesize","Error")},b=function(){window.Parsley.addValidator("powermailfileextensions",function(t,a){var i=e('*[name="tx_powermail_pi1[field]['+a+'][]"]');return!i.length||k(j(t),i.prop("accept"))},32).addMessage("en","powermailfileextensions","Error")},k=function(e,t){return t.indexOf("."+e)!==-1},j=function(e){return e.split(".").pop().toLowerCase()},D=function(e){e.indexOf("http")!==-1?window.location=e:window.location.pathname=e},C=function(){var t;return t=e("base").length>0?jQuery("base").prop("href"):"https:"!=window.location.protocol?"http://"+window.location.hostname:"https://"+window.location.hostname}}jQuery(document).ready(function(e){"use strict";var t=new window.PowermailForm(e);t.initialize()});
/*!
 * baguetteBox.js
 * @author  feimosi
 * @version 1.11.0
 * @url https://github.com/feimosi/baguetteBox.js
 */
!function(e,t){"use strict";"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.baguetteBox=t()}(this,function(){"use strict";var s,l,u,c,d,f='<svg width="44" height="60"><polyline points="30 10 10 30 30 50" stroke="rgba(255,255,255,0.5)" stroke-width="4"stroke-linecap="butt" fill="none" stroke-linejoin="round"/></svg>',g='<svg width="44" height="60"><polyline points="14 10 34 30 14 50" stroke="rgba(255,255,255,0.5)" stroke-width="4"stroke-linecap="butt" fill="none" stroke-linejoin="round"/></svg>',p='<svg width="30" height="30"><g stroke="rgb(160,160,160)" stroke-width="4"><line x1="5" y1="5" x2="25" y2="25"/><line x1="5" y1="25" x2="25" y2="5"/></g></svg>',b={},m={captions:!0,buttons:"auto",fullScreen:!1,noScrollbars:!1,bodyClass:"baguetteBox-open",titleTag:!1,async:!1,preload:2,animation:"slideIn",afterShow:null,afterHide:null,onChange:null,overlayBackgroundColor:"rgba(0,0,0,.8)"},v={},h=[],o=0,n=!1,i={},a=!1,y=/.+\.(gif|jpe?g|png|webp)/i,w={},k=[],r=null,x=function(e){-1!==e.target.id.indexOf("baguette-img")&&j()},C=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,D()},E=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,X()},B=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,j()},T=function(e){i.count++,1<i.count&&(i.multitouch=!0),i.startX=e.changedTouches[0].pageX,i.startY=e.changedTouches[0].pageY},N=function(e){if(!a&&!i.multitouch){e.preventDefault?e.preventDefault():e.returnValue=!1;var t=e.touches[0]||e.changedTouches[0];40<t.pageX-i.startX?(a=!0,D()):t.pageX-i.startX<-40?(a=!0,X()):100<i.startY-t.pageY&&j()}},L=function(){i.count--,i.count<=0&&(i.multitouch=!1),a=!1},A=function(){L()},P=function(e){"block"===s.style.display&&s.contains&&!s.contains(e.target)&&(e.stopPropagation(),Y())};function S(e){if(w.hasOwnProperty(e)){var t=w[e].galleries;[].forEach.call(t,function(e){[].forEach.call(e,function(e){W(e.imageElement,"click",e.eventHandler)}),h===e&&(h=[])}),delete w[e]}}function F(e){switch(e.keyCode){case 37:D();break;case 39:X();break;case 27:j();break;case 36:!function t(e){e&&e.preventDefault();return M(0)}(e);break;case 35:!function n(e){e&&e.preventDefault();return M(h.length-1)}(e)}}function H(e,t){if(h!==e){for(h=e,function r(e){e||(e={});for(var t in m)b[t]=m[t],"undefined"!=typeof e[t]&&(b[t]=e[t]);l.style.transition=l.style.webkitTransition="fadeIn"===b.animation?"opacity .4s ease":"slideIn"===b.animation?"":"none","auto"===b.buttons&&("ontouchstart"in window||1===h.length)&&(b.buttons=!1);u.style.display=c.style.display=b.buttons?"":"none";try{s.style.backgroundColor=b.overlayBackgroundColor}catch(n){}}(t);l.firstChild;)l.removeChild(l.firstChild);for(var n,o=[],i=[],a=k.length=0;a<e.length;a++)(n=J("div")).className="full-image",n.id="baguette-img-"+a,k.push(n),o.push("baguetteBox-figure-"+a),i.push("baguetteBox-figcaption-"+a),l.appendChild(k[a]);s.setAttribute("aria-labelledby",o.join(" ")),s.setAttribute("aria-describedby",i.join(" "))}}function I(e){b.noScrollbars&&(document.documentElement.style.overflowY="hidden",document.body.style.overflowY="scroll"),"block"!==s.style.display&&(U(document,"keydown",F),i={count:0,startX:null,startY:null},q(o=e,function(){z(o),V(o)}),R(),s.style.display="block",b.fullScreen&&function t(){s.requestFullscreen?s.requestFullscreen():s.webkitRequestFullscreen?s.webkitRequestFullscreen():s.mozRequestFullScreen&&s.mozRequestFullScreen()}(),setTimeout(function(){s.className="visible",b.bodyClass&&document.body.classList&&document.body.classList.add(b.bodyClass),b.afterShow&&b.afterShow()},50),b.onChange&&b.onChange(o,k.length),r=document.activeElement,Y(),n=!0)}function Y(){b.buttons?u.focus():d.focus()}function j(){b.noScrollbars&&(document.documentElement.style.overflowY="auto",document.body.style.overflowY="auto"),"none"!==s.style.display&&(W(document,"keydown",F),s.className="",setTimeout(function(){s.style.display="none",document.fullscreen&&function e(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()}(),b.bodyClass&&document.body.classList&&document.body.classList.remove(b.bodyClass),b.afterHide&&b.afterHide(),r&&r.focus(),n=!1},500))}function q(t,n){var e=k[t],o=h[t];if(void 0!==e&&void 0!==o)if(e.getElementsByTagName("img")[0])n&&n();else{var i=o.imageElement,a=i.getElementsByTagName("img")[0],r="function"==typeof b.captions?b.captions.call(h,i):i.getAttribute("data-caption")||i.title,s=function d(e){var t=e.href;if(e.dataset){var n=[];for(var o in e.dataset)"at-"!==o.substring(0,3)||isNaN(o.substring(3))||(n[o.replace("at-","")]=e.dataset[o]);for(var i=Object.keys(n).sort(function(e,t){return parseInt(e,10)<parseInt(t,10)?-1:1}),a=window.innerWidth*window.devicePixelRatio,r=0;r<i.length-1&&i[r]<a;)r++;t=n[i[r]]||t}return t}(i),l=J("figure");if(l.id="baguetteBox-figure-"+t,l.innerHTML='<div class="baguetteBox-spinner"><div class="baguetteBox-double-bounce1"></div><div class="baguetteBox-double-bounce2"></div></div>',b.captions&&r){var u=J("figcaption");u.id="baguetteBox-figcaption-"+t,u.innerHTML=r,l.appendChild(u)}e.appendChild(l);var c=J("img");c.onload=function(){var e=document.querySelector("#baguette-img-"+t+" .baguetteBox-spinner");l.removeChild(e),!b.async&&n&&n()},c.setAttribute("src",s),c.alt=a&&a.alt||"",b.titleTag&&r&&(c.title=r),l.appendChild(c),b.async&&n&&n()}}function X(){return M(o+1)}function D(){return M(o-1)}function M(e,t){return!n&&0<=e&&e<t.length?(H(t,b),I(e),!0):e<0?(b.animation&&O("left"),!1):e>=k.length?(b.animation&&O("right"),!1):(q(o=e,function(){z(o),V(o)}),R(),b.onChange&&b.onChange(o,k.length),!0)}function O(e){l.className="bounce-from-"+e,setTimeout(function(){l.className=""},400)}function R(){var e=100*-o+"%";"fadeIn"===b.animation?(l.style.opacity=0,setTimeout(function(){v.transforms?l.style.transform=l.style.webkitTransform="translate3d("+e+",0,0)":l.style.left=e,l.style.opacity=1},400)):v.transforms?l.style.transform=l.style.webkitTransform="translate3d("+e+",0,0)":l.style.left=e}function z(e){e-o>=b.preload||q(e+1,function(){z(e+1)})}function V(e){o-e>=b.preload||q(e-1,function(){V(e-1)})}function U(e,t,n,o){e.addEventListener?e.addEventListener(t,n,o):e.attachEvent("on"+t,function(e){(e=e||window.event).target=e.target||e.srcElement,n(e)})}function W(e,t,n,o){e.removeEventListener?e.removeEventListener(t,n,o):e.detachEvent("on"+t,n)}function G(e){return document.getElementById(e)}function J(e){return document.createElement(e)}return[].forEach||(Array.prototype.forEach=function(e,t){for(var n=0;n<this.length;n++)e.call(t,this[n],n,this)}),[].filter||(Array.prototype.filter=function(e,t,n,o,i){for(n=this,o=[],i=0;i<n.length;i++)e.call(t,n[i],i,n)&&o.push(n[i]);return o}),{run:function K(e,t){return v.transforms=function n(){var e=J("div");return"undefined"!=typeof e.style.perspective||"undefined"!=typeof e.style.webkitPerspective}(),v.svg=function o(){var e=J("div");return e.innerHTML="<svg/>","http://www.w3.org/2000/svg"===(e.firstChild&&e.firstChild.namespaceURI)}(),v.passiveEvents=function i(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",null,t)}catch(n){}return e}(),function a(){if(s=G("baguetteBox-overlay"))return l=G("baguetteBox-slider"),u=G("previous-button"),c=G("next-button"),void(d=G("close-button"));(s=J("div")).setAttribute("role","dialog"),s.id="baguetteBox-overlay",document.getElementsByTagName("body")[0].appendChild(s),(l=J("div")).id="baguetteBox-slider",s.appendChild(l),(u=J("button")).setAttribute("type","button"),u.id="previous-button",u.setAttribute("aria-label","Previous"),u.innerHTML=v.svg?f:"&lt;",s.appendChild(u),(c=J("button")).setAttribute("type","button"),c.id="next-button",c.setAttribute("aria-label","Next"),c.innerHTML=v.svg?g:"&gt;",s.appendChild(c),(d=J("button")).setAttribute("type","button"),d.id="close-button",d.setAttribute("aria-label","Close"),d.innerHTML=v.svg?p:"&times;",s.appendChild(d),u.className=c.className=d.className="baguetteBox-button",function t(){var e=v.passiveEvents?{passive:!0}:null;U(s,"click",x),U(u,"click",C),U(c,"click",E),U(d,"click",B),U(l,"contextmenu",A),U(s,"touchstart",T,e),U(s,"touchmove",N,e),U(s,"touchend",L),U(document,"focus",P,!0)}()}(),S(e),function r(e,a){var t=document.querySelectorAll(e),n={galleries:[],nodeList:t};return w[e]=n,[].forEach.call(t,function(e){a&&a.filter&&(y=a.filter);var t=[];if(t="A"===e.tagName?[e]:e.getElementsByTagName("a"),0!==(t=[].filter.call(t,function(e){if(-1===e.className.indexOf(a&&a.ignoreClass))return y.test(e.href)})).length){var i=[];[].forEach.call(t,function(e,t){var n=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1,H(i,a),I(t)},o={eventHandler:n,imageElement:e};U(e,"click",n),i.push(o)}),n.galleries.push(i)}}),n.galleries}(e,t)},show:M,showNext:X,showPrevious:D,hide:j,destroy:function e(){!function t(){var e=v.passiveEvents?{passive:!0}:null;W(s,"click",x),W(u,"click",C),W(c,"click",E),W(d,"click",B),W(l,"contextmenu",A),W(s,"touchstart",T,e),W(s,"touchmove",N,e),W(s,"touchend",L),W(document,"focus",P,!0)}(),function n(){for(var e in w)w.hasOwnProperty(e)&&S(e)}(),W(document,"keydown",F),document.getElementsByTagName("body")[0].removeChild(document.getElementById("baguetteBox-overlay")),w={},h=[],o=0}}});
var Events2 = {
    selectorPlugin: ".tx-events2",
    selectorCreatePlugin: ".tx-events2-create",
    selectorSearchPlugin: ".tx-events2-search",
    selectorPluginVariables: "#events2DataElement",
    selectorCshDialog: "#dialogHint",
    selectorCshButton: "span.csh",
    selectorRemainingCharsTextarea: ".addRemainingCharsCheck",
    selectorAutoCompleteLocation: "#autoCompleteLocation",
    selectorAutoCompleteLocationHelper: "#autoCompleteLocationHelper",
    selectorSearchMainCategory: "#searchMainCategory",

    dateFormat: "dd.mm.yy"
};

Events2.initialize = function() {
    // initializing jQuery elements
    Events2.$events2Plugins = jQuery(Events2.selectorPlugin);
    Events2.$events2CreatePlugins = jQuery(Events2.selectorCreatePlugin);
    Events2.$events2SearchPlugins = jQuery(Events2.selectorSearchPlugin);
    Events2.$cshDialog = Events2.$events2CreatePlugins.find(Events2.selectorCshDialog);
    Events2.$cshButtons = Events2.$events2CreatePlugins.find(Events2.selectorCshButton);
    Events2.$textareasWithRemainingChars = jQuery(Events2.selectorRemainingCharsTextarea);
    Events2.$autoCompleteLocation = jQuery(Events2.selectorAutoCompleteLocation);
    Events2.$autoCompleteLocationHelper = jQuery(Events2.selectorAutoCompleteLocationHelper);
    Events2.$searchMainCategory = jQuery(Events2.selectorSearchMainCategory);

    // initializing variables
    Events2.pluginVariables = jQuery(Events2.selectorPluginVariables).data("variables");

    // initializing features
    Events2.initializeDialogBoxForContextSensitiveHelp();
    Events2.initializeRemainingLetters();
    Events2.initializeDatePicker();
    Events2.initializeAutoCompleteForLocation();
    Events2.initializeSubCategoriesForSearch();
};

/**
 * Test, if there are events2 plugins defined in DOM
 *
 * @returns {boolean}
 */
Events2.hasEvents2Plugins = function() {
    return !!Events2.$events2Plugins.length;
};

/**
 * Test, if there are events2 create plugins defined in DOM
 *
 * @returns {boolean}
 */
Events2.hasEvents2CreatePlugins = function() {
    return !!Events2.$events2CreatePlugins.length;
};

/**
 * Test, if there are events2 search plugins defined in DOM
 *
 * @returns {boolean}
 */
Events2.hasEvents2SearchPlugins = function() {
    return !!Events2.$events2SearchPlugins.length;
};

/**
 * Test, if there are some textareas in form with remaining chars feature
 *
 * @returns {boolean}
 */
Events2.hasRemainingCharsTextareas = function() {
    return !!Events2.$textareasWithRemainingChars.length;
};

/**
 * Test, if there is an AutoComplete for location available in template
 *
 * @returns {boolean}
 */
Events2.hasAutoCompleteLocation = function() {
    return !!Events2.$autoCompleteLocation.length;
};

/**
 * Test, if localization of pluginVariables is initialized
 *
 * @returns {boolean}
 */
Events2.isLocalizationInitialized = function() {
    return Events2.pluginVariables.hasOwnProperty("localization");
};

/**
 * Test, if settings of pluginVariables are initialized
 *
 * @returns {boolean}
 */
Events2.isSettingsInitialized = function() {
    return Events2.pluginVariables.hasOwnProperty("settings");
};

/**
 * Test, if main category is available in search template
 *
 * @returns {boolean}
 */
Events2.hasSearchMainCategory = function() {
    return !!Events2.$searchMainCategory.length;
};

/**
 * Test, if all CSH related elements are defined in DOM
 *
 * @returns {boolean}
 */
Events2.hasCshElements = function() {
    if (Events2.hasEvents2CreatePlugins()) {
        if (!!Events2.$cshDialog.length && !!Events2.$cshButtons.length) {
            return true;
        } else {
            console.log("We are on the create form, but we can not find any CSH buttons or dialogs. Feature deactivated.");
            return false;
        }
    } else {
        return false;
    }
};

/**
 * Initialize dialog box for CSH
 * Currently used in create form for new events
 */
Events2.initializeDialogBoxForContextSensitiveHelp = function() {
    if (!Events2.hasCshElements()) {
        return;
    }

    Events2.$cshDialog.dialog({
        autoOpen: false,
        height: 150,
        width: 300,
        modal: true
    });
    Events2.$cshButtons.css("cursor", "pointer").on("click", Events2.attachClickEventToCsh);
};

/**
 * Initialize DatePicker for elements with class: addDatePicker
 */
Events2.initializeDatePicker = function() {
    if (Events2.hasEvents2CreatePlugins() || Events2.hasEvents2SearchPlugins()) {
        jQuery(".addDatePicker").datepicker({
            dateFormat: Events2.dateFormat
        });
    }
};

/**
 * Initialize remaining letters for teaser in create form
 */
Events2.initializeRemainingLetters = function() {
    if (Events2.hasRemainingCharsTextareas()) {
        if (!Events2.isLocalizationInitialized()) {
            console.log("Variable localization of pluginVariables is not available. Please check your templates");
        } else if (!Events2.isSettingsInitialized()) {
            console.log("Variable settings of pluginVariables is not available. Please check your templates");
        } else {
            $remainingCharsContainer = jQuery("<div />")
                .text(Events2.pluginVariables.localization.remainingText + ": " + Events2.pluginVariables.settings.remainingLetters)
                .attr("class", "remainingChars");

            Events2.$textareasWithRemainingChars.each(function() {
                var $textarea = jQuery(this);
                $textarea.after($remainingCharsContainer);

                $textarea.on("keyup", function() {
                    var value = $(this).val();
                    var len = value.length;
                    var maxLength = Events2.pluginVariables.settings.remainingLetters;

                    $(this).val(value.substring(0, maxLength));
                    $textarea.siblings(".remainingChars").eq(0).text(
                        Events2.pluginVariables.localization.remainingText + ": " + (maxLength - len)
                    );
                });
            });
        }
    }
};

/**
 * Initialize AutoComplete for location
 */
Events2.initializeAutoCompleteForLocation = function() {
    if (Events2.hasEvents2CreatePlugins() && Events2.hasAutoCompleteLocation()) {
        $locationStatus = jQuery("<span />").attr("class", "locationStatus");
        Events2.$autoCompleteLocation.after($locationStatus);

        Events2.$autoCompleteLocation.autocomplete({
            source: function(request, response) {
                var siteUrl = location.protocol + "//" + location.hostname + (location.port ? ":" + location.port : "");
                $.ajax({
                    url: siteUrl + "?eID=events2findLocations",
                    dataType: "json",
                    data: {
                        tx_events2_events: {
                            arguments: {
                                locationPart: request.term
                            }
                        }
                    },
                    success: function (data) {
                        response(data);
                    }
                });
            }, minLength: 2, response: function (event, ui) {
                if (ui.content.length === 0) {
                    Events2.$autoCompleteLocation
                        .siblings(".locationStatus")
                        .eq(0)
                        .text(Events2.pluginVariables.localization.locationFail)
                        .removeClass("locationOk locationFail")
                        .addClass("locationFail");
                }
            }, select: function (event, ui) {
                if (ui.item) {
                    Events2.$autoCompleteLocation
                        .siblings(".locationStatus")
                        .eq(0)
                        .text("")
                        .removeClass("locationOk locationFail")
                        .addClass("locationOk");
                    Events2.$autoCompleteLocationHelper.val(ui.item.uid);
                }
            }
        }).focusout(function () {
            if (Events2.$autoCompleteLocation.val() === "") {
                Events2.$autoCompleteLocation
                    .sibilings(".locationStatus")
                    .eq(0)
                    .text("")
                    .removeClass("locationOk locationFail");
                Events2.$autoCompleteLocationHelper.val("");
            }
        });
    }
};

/**
 * Attach click event to CSH buttons
 * It updates the text of the dialog box before it pops up.
 */
Events2.attachClickEventToCsh = function(event) {
    var property = jQuery(event.target).data("property");
    Events2.$cshDialog.find("p").text(jQuery("#hidden_" + property).text());
    Events2.$cshDialog.dialog("open");
};

/**
 * Initialize sub-categories of search plugin
 */
Events2.initializeSubCategoriesForSearch = function() {
    if (Events2.hasEvents2SearchPlugins() && Events2.hasSearchMainCategory()) {
        Events2.$searchMainCategory.on("change", function () {
            Events2.renderSubCategory();
        });
        Events2.renderSubCategory();
    }
};

/**
 * Search for sub-categories, if a main category was selected
 */
Events2.renderSubCategory = function() {
    jQuery("#searchSubCategory").empty().attr("disabled", "disabled");

    if (Events2.$searchMainCategory.val() !== "0") {
        var siteUrl = location.protocol + "//" + location.hostname + (location.port ? ":" + location.port : "");
        jQuery.ajax({
            type: 'GET',
            url: siteUrl,
            dataType: 'json',
            data: {
                id: Events2.pluginVariables.data.pid,
                type: 1372255350,
                tx_events2_events: {
                    objectName: 'FindSubCategories',
                    arguments: {
                        category: Events2.$searchMainCategory.val()
                    }
                }
            }, success: function (categories) {
                Events2.fillSubCategories(categories);
            }, error: function (xhr, error) {
                if (error === "parsererror") {
                    console.log("It seems that you have activated Debugging mode in TYPO3. Please deactivate it to remove ParseTime from request");
                } else {
                    console.log(error);
                }
            }
        });
    }
};

/**
 * Use categories to fill selector for sub-categories
 *
 * @param categories
 */
Events2.fillSubCategories = function(categories) {
    var count = 0;
    var selected = "";
    var $searchSubCategory = jQuery("#searchSubCategory");
    $searchSubCategory.append("<option value=\"0\"></option>");
    for (var property in categories) {
        if (categories.hasOwnProperty(property)) {
            count++;
            if (Events2.pluginVariables.search.subCategory !== null && Events2.pluginVariables.search.subCategory.uid === parseInt(property)) {
                selected = "selected=\"selected\"";
            } else {
                selected = "";
            }
            $searchSubCategory.append("<option " + selected + " value=\"" + property + "\">" + categories[property] + "</option>");
        }
    }
    if (count) {
        $searchSubCategory.removeAttr("disabled");
    }
};

Events2.initialize();

/**
 * Initialize Events2 Calendar
 *
 * @param $element
 * @param environment contains settings, current PageId, extConf and current tt_content record
 * @constructor
 */
function Events2Calendar($element, environment) {
  // 2016-10-24 will be 23.10.2016T22:00:00Z. getDate() returns: 24
  this.currentDate = new Date(environment.year + "-" + environment.month + "-" + environment.day + "T00:00:00");
  this.environment = environment;

  // getMonth (0-11)
  var days = this.getDaysForMonth(
    this.currentDate.getMonth() + 1,
    this.currentDate.getFullYear(),
    environment.storagePids,
    environment.settings.categories,
    environment.pidOfListPage
  );

  this.activateDatePicker($element, days);
}

Events2Calendar.prototype.activateDatePicker = function($element, days) {
  var environment = this.environment;
  var getDaysForMonth = this.getDaysForMonth;
  var getProperty = this.getProperty;

  if (environment.settings.includeDeTranslationForCalendar) {
    jQuery.datepicker.setDefaults(jQuery.datepicker.regional["de"]);
  }

  $element.datepicker({
    dateFormat: "dd.mm.yy",
    defaultDate: environment.day + "." + environment.month + "." + environment.year,
    beforeShowDay: function(date) {
      if (days === null) {
        return [false, "", ""];
      }
      if (days.hasOwnProperty(date.getDate())) {
        var title = getProperty(days, date, "title");
        var className = getProperty(days, date, "class");
        if (title) {
          return [true, className, title];
        } else {
          return [false, className, ""];
        }
      } else {
        return [false, "", ""];
      }
    },
    onSelect: function(dateText, inst) {
      if (days !== null && days.hasOwnProperty(inst.currentDay)) {
        window.location.href = days[inst.currentDay][0]["uri"];
      }
    },
    onChangeMonthYear: function(year, month, inst) {
      // month (1-12)
      days = getDaysForMonth(
        month,
        year,
        environment.storagePids,
        environment.settings.categories,
        environment.pidOfListPage
      );
    }
  });
};

/**
 * Get property of event record of a given date
 *
 * @param days
 * @param date
 * @param property
 *
 * @return string
 */
Events2Calendar.prototype.getProperty = function(days, date, property) {
  var value = '';
  for (var i = 0; i < days[date.getDate()].length; i++) {
    if (days[date.getDate()][i].hasOwnProperty(property)) {
      value = days[date.getDate()][i][property];
      break;
    }
  }
  return value;
};

/**
 * get days for month
 * this starts an ajax call to the server and make them globally available
 *
 * @param month
 * @param year
 * @param storagePids
 * @param categories
 * @param pidOfListPage
 * @return array
 */
Events2Calendar.prototype.getDaysForMonth = function(month, year, storagePids, categories, pidOfListPage) {
  var days = null;

  jQuery.ajax({
    type: 'GET',
    url: window.location.href,
    async: false,
    dataType: 'json',
    data: {
      eID: 'events2findDaysForMonth',
      tx_events2_events: {
        arguments: {
          categories: categories,
          month: month,
          year: year,
          storagePids: storagePids,
          pidOfListPage: pidOfListPage
        }
      }
    },
    success: function(json) {
      days = json;
    },
    error: function(xhr, error) {
      console.log(error);
    }
  });

  return days;
};

var $element;
var environment;
jQuery("div.events2calendar").each(function() {
  $element = jQuery(this);
  var environment = $element.data("environment");
  new Events2Calendar($element, environment);
});

// initialize global fitlerCollection variable
var filterCollection;
// set searchLogikCombined global and default to true
var searchLogikCombined = true;
// resultlist container
var resultListContainer;
// filter item class name
var resultItemClassName;

jQuery( document ).ready(function($) {
    $('#memberTextFilter').on('input',function(e){
        if($(this).val() == ''){
            $('.listEntry').each(function (){
                $(this).show();
            })
		} else {
            $('.listEntry').each(function () {
                if ($(this).data('title').toLowerCase().indexOf($('#memberTextFilter').val().toLowerCase()) < 0 &&
                    $(this).data('standort').toLowerCase().indexOf($('#memberTextFilter').val().toLowerCase()) < 0 &&
                    $(this).data('region').toLowerCase().indexOf($('#memberTextFilter').val().toLowerCase()) < 0 &&
                    $(this).data('branche').toLowerCase().indexOf($('#memberTextFilter').val().toLowerCase()) < 0) {
                    $(this).hide();
                } else {
                    $(this).show();
				}
            })
        }
    });

	console.log('Filter ready!');
	
	// create a Filter Colletion
	filterCollection = $('.nwiFilter');
	
	// initialize parent container
	resultListContainer = '.' + 'listContainer';
	
	// initialize item class name
	resultItemClassName = '.' + 'listEntry';
	
	// run only when there is a filter
	if (filterCollection.length > 0) {
		
		// init Text Filters
		// $.each($('.nwiTextFilter'), function(key, value) {
		// 	// bind change for each element
		// 	$(this).bind('input', function() {
		// 		runCompleteFilter($(this));
		// 	});
		// });
		
		// init Select Filters
		$.each($('.nwiSelectFilter'), function(key, value) {
			// bind change for each element
			$(this).change(function() {
				runCompleteFilter($(this));
			});
		});
		
		// init Select Data Filters
		$.each($('.nwiSelectDataFilter'), function(key, value) {
			// bind change for each element
			$(this).change(function() {
				runCompleteFilter($(this));
			});
		});
		
		// init Checkbox  Filters
		$.each($('.nwiCheckboxFilter'), function(key, value) {
			// bind change for each element
			$(this).change(function() {
				runCompleteFilter($(this));
			});
		});
	}
	
	/*
	* run all filter one by one
	*/ 
	function runCompleteFilter(filterItem) {
		
		// first reset
		resetFilter();
		
		console.log('running complete filter begin');
		console.log('Filter: ' + filterItem.attr('id') + ' // ' + filterItem.val());
		
		if (filterCollection.length > 0 && $(resultListContainer).length > 0) {
			
			console.log('C');
			
			$.each(filterCollection, function (key, currentFilterItem) {
				
				// needs to be run first!
				if ($(currentFilterItem).hasClass('nwiCheckboxFilter')) {
					runCheckboxFilter(currentFilterItem);
				}
				// if ($(currentFilterItem).hasClass('nwiTextFilter')) {
				// 	runTextFilter(currentFilterItem);
				// }
				if ($(currentFilterItem).hasClass('nwiSelectFilter')) {
					runSelectFilter(currentFilterItem);
				}
				if ($(currentFilterItem).hasClass('nwiSelectDataFilter')) {
					runSelectDataFilter(currentFilterItem);
				}
			
			});
			
		} else {
			console.log('No filter Items available');
		}
		
		console.log('running complete filter end');

        oddTable();
		
		if ($(resultListContainer).find(resultItemClassName + ':visible').length == 0) {
			$('.noFilterMatches').show();
		} 
		
	}
	
	/* 
	* handle filter interactions
	*/
	function runTextFilter(pointer) {
		
		console.log('Text-filterTriggered');
		
		var filterValue = $(pointer).val();
		
		if (filterValue != '') {
			
			$(resultListContainer).find(resultItemClassName + ' .textFilterLookup:not(:contains("' + filterValue + '"))').closest(resultItemClassName).hide();
			
		}
	};
	
	/* 
	* handle filter interactions
	*/
	function runCheckboxFilter(pointer) {
		
		console.log('Checkbox-filterTriggered');
		
		var filterValue = $(pointer).val();
		
		if (filterValue != '') {
			
			console.log('matches: ' + $('.' + filterValue).length);
			
			if ($(pointer).prop('checked')) {
				
				console.log('checked');
				
				$.each($(resultListContainer).find(resultItemClassName), function(key, value) {
					if ($(this).hasClass(filterValue)) { 
						// $(this).show();
					} else {
						$(this).hide();
					}
				});
			
			} else {
				console.log('not checked');
			}
		}
	};
	
	/* 
	* handle filter interactions
	*/
	function runSelectFilter(pointer) {
		
		console.log('Select-filterTriggered');
		
		var filterValue = $(pointer).val();
		
		if (filterValue != '') {
			
			console.log('matches: ' + $('.' + filterValue).length);
			
			$.each($(resultListContainer).find(resultItemClassName), function(key, value) {
				if ($(this).hasClass(filterValue)) {
					// $(this).show();
				} else {
					$(this).hide();
				}
			});
			
		}
	};
	
	/* 
	* handle filter interactions
	*/
	function runSelectDataFilter(pointer) {
		
		var filterDataAttribute = $(pointer).attr('data-match');
		var filterValue = $(pointer).val();
		
		console.log('SelectData-filterTriggered');
		console.log(filterValue);
		console.log(filterDataAttribute);

		if (filterValue != '' && filterDataAttribute && filterDataAttribute != '' && filterDataAttribute != 'NaN') {
			
			console.log('matches: ' + $(resultListContainer).find(resultItemClassName + '[' + filterDataAttribute + '="' + filterValue + '"]').length);

//			$(resultListContainer).find(resultItemClassName + ':not([' + filterDataAttribute + '="' + filterValue + '"])').hide();
			$(resultListContainer).find(resultItemClassName).each(function() {
			    if ($(this).data((filterDataAttribute.split('-')[1])).search(filterValue) === -1) {
			        $(this).hide();
                }
            });
		}
	};
	
	/*
	* reset filter and show all result elements
	*/ 
	function resetFilter() {
		
		console.log('resetting filter'); 
		
		// hiding noFilterMatches
		$('.noFilterMatches').hide();
		
		// show all list entries
		$(resultItemClassName).show();
		
	};

	function oddTable() {
        $('.memberTable tr').each(function () {
			$(this).removeClass('odd');
            $('.memberTable tr:visible:even').addClass('even');
            $('.memberTable tr:visible:odd').addClass('odd');
        });
    }
	
});

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
	return function( elem ) {
		return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
	};
});
// add the Polygon to go_maps_ext-Map
$(document).ready(function() {
	
	if ($('#gme-1').length > 0) {
		
		// get map instance
		var mapInstance = $('#gme-1');
		var mapMarkers = new Array();
		
		// handler dealer search form
		if ($('#dealer-form').length > 0) {
			$('.category-tree-children li').click(function(event){
				countryFilter(mapInstance, this);
			});	 
		}
		
		// use gelocation if available
		if (!!navigator.geolocation) {
			
			navigator.geolocation.getCurrentPosition(
				function(position) {
					var mapInstance = $('#gme-1');
					mapInstance.data("map").panTo({lng: position.coords.longitude, lat: position.coords.latitude});
				},
				function(result) {
					// $('.main-content').append("error" + result + '//' + result.message + '//' + result.code);
					var mapInstance = $('#gme-1');
					recenterMapByGeocode(mapInstance);
				}
			);
		} else {
			recenterMapByGeocode(mapInstance);
			$('.main-content').append('gelocation not working...');
		}
		
		// add markers
		addMapMarkers();
		
	} 
	
	if ($('#dealer-form').length > 0) {
		
		$('#dealer-form').submit(function( event ) {
			
			recenterMapByGeocode(mapInstance); 
			event.preventDefault();
			
		});
		
		$('#c1').append('<div class="addressOverlayContainer"><div class="addressOverlay">Address goes here</div><span class="addressOverlayClose"><img src="/fileadmin/templates/img/close.png" alt="close" /></span></div>');
		
		// close map overlay (bind touch events)
		$('.addressOverlayClose').bind('touchstart click', function(e) {
			console.log('click...');
			e.preventDefault();
			$('.addressOverlayContainer').hide();
		});
		
	}
	
});

/*
 * Add own google maps marker
 */
function addMapMarkers() {
	var marker = new google.maps.Marker(
	{	position: new google.maps.LatLng(52.5162731, 13.3777642),
		map: map,
		title: 'Ein Marker'
	});
}

/* 
* geocode search string and center the map to the new coordinates
*/
function recenterMapByGeocode(mapInstance) {
	
    var geocoder = new google.maps.Geocoder();
    // Get LatLng information by name
    geocoder.geocode({
        "address": getSelectedCountry() + ', ' + getRequestedCity()
	}, function(results, status){
		if (results[0]) {
			$('#dealer-form-zip').removeClass('error');
			mapInstance.data("map").panTo(results[0].geometry.location);
			if (results[0].geometry.viewport) {
				mapInstance.data("map").fitBounds(results[0].geometry.viewport);
			} 
			
		// show information if nothing could be found..
		} else {
			$('#dealer-form-zip').addClass('error');
			alert('no match found!');
		}
   });
	
}

/* 
* geocode search string and center the map to the new coordinates
*/
function geocodeThese() {
	
	var addresses = [
	];
	
	$('.tx-go-maps-ext').append('<div class="geocodes"></div>');
	
	var geocoder = new google.maps.Geocoder();
	
	$.each(addresses, function(addressKey, addressValue){
		
		setTimeout(function(){
		
			// Get LatLng information by name
			geocoder.geocode({
				"address": addressValue
			}, function(results, status){
				
				if (results != null && results[0]) {
					
					$('.geocodes').append('<span>address: ' + addressValue + '</span><span>' + results[0].geometry.location.lat() + '//' + results[0].geometry.location.lng() + '</span><br />' );
					
				// show information if nothing could be found..
				} else {
					$('.geocodes').append('<span>address: ' + addressValue + '</span><span>NOT FOUND<span><br />' );
				}
		   });

		}, 1000);
		
	});
	
}

/* 
* geocode search string and zoom to destination
*/
function countryFilter(mapInstance, elementInstance) {
	
	// mark element as active
	$('#dealer-form-country li').removeClass('active');
	$(elementInstance).addClass('active');
	$('#dealer-form-country-container button span').html($(elementInstance).text());
	
	recenterMapByGeocode(mapInstance);
	
}

/*
* get selected country from form
*/ 
function getSelectedCountry() {
	
	countryAsString='USA';
	
	if ($('html').attr('lang') == 'fr') {
		countryAsString='France';
	} else if ($('html').attr('lang') == 'de') {
		countryAsString='Deutschland';
	}
	
	if ($('#dealer-form-country .active').length > 0) {
		countryAsString = $('#dealer-form-country .active').text();
	}
	
	return countryAsString;
	
}

/*
* get requested city from form
*/ 
function getRequestedCity() {
	
	cityAsString='';
	
	if ($('#dealer-form-zip').length > 0) {
		cityAsString = $('#dealer-form-zip').val();
	}
	
	return cityAsString;
	
}
$( document ).ready(function() {
	
	// magic for the timeline
	if ($('.timeline-list-view-container').length > 0) {
		
		// first initialize timeline
		initializeTimeline();
		
		// add click and touch events to timeline titles
		$('.desktop-timeline .timeline-element-additional-title').on('click touchstart', function() {
			openTimelineElement($(this).parent().parent());
		});
		
		// add click and touch events to timeline years
		$('.desktop-timeline .timeline-element-year').on('click touchstart', function() {
			openTimelineElement($(this).parent());
		});
	
		// remove attr 
		if ($('.mobile-timeline').length > 0) {
			$('.mobile-timeline .timeline-element-link-container').removeAttr('style');
		}
		
	}
	
});

/*
 * function to initialize timeline 
 * p.e. open first element by default
 */
 function initializeTimeline() {
	
	// duplicate element for sm + md styling
	duplicateTimelineForSmallDevices();
	
	// build IndexList
	buildTimelineIndexList();
	
	// add prev next navigation
	addPrevNextNavigation();
	
	// initialize timeline
	$('.timeline-index-list-container li:first-child').addClass('active');
	$('.desktop-timeline .timeline-element-container:first-child').addClass('current-active'); 
	
	currentActiveIsFirst();
	
	// first remove stage content
	removeStageContent();
	
	// load first element 
	loadStageContent($('.desktop-timeline .timeline-element-container:first-child'));
	
};

/*
 * load stage Content into stage
 */
function removeStageContent() {
	
	// first remove all child nodes
	$('.timeline-list-preview-container > .row').empty();
	
}

/*
 * load stage Content into stage
 */
function loadStageContent(pointer) {
	
	// first remove all child nodes
	$('.timeline-list-preview-container > .row').empty();
	
	// now add content
	$(pointer).find('.stageContent').clone().appendTo('.timeline-list-preview-container > .row');
	
	$('.stageContent > div').fadeIn(800);
	
}

/*
 * function to open and close elements
 */
 function openTimelineElement(elementPointer) {
	
	// if more then one element has current-active state
	if ($('.timeline-element-container.current-active').length > 0) {
		$('.timeline-element-container.current-active').removeClass('current-active');
	}
	
	if (elementPointer.length > 0) {
		
		if ($(elementPointer).hasClass('current-active')) {
			
		} else {
			
			// first remove stage content
			removeStageContent();
			
			// close all open elements
			$('.desktop-timeline .timeline-element-content *').stop();
			$('.desktop-timeline .timeline-element-content').stop().removeAttr('style');
			$('.desktop-timeline .timeline-element-content .timeline-element-picture-container').hide().removeAttr('style');
			$('.desktop-timeline .timeline-element-content .timeline-element-text-container').removeAttr('style');
			
			// move slider to position
			currentOffset = $(elementPointer).offset();
			// $(elementPointer).parent().parent().animate({scrollLeft : (currentOffset.left - 280)});
			$(elementPointer).parent().parent().animate(
				{scrollLeft : (currentOffset.left - $(elementPointer).parent().position().left - $('.desktop-timeline .timeline-list-view-container').offset().left)}
				,400
				,function() {
					// Animation complete - NOW - load desired element
					loadStageContent($(elementPointer));
				}
			);
			$(elementPointer).addClass('current-active');
			
			// toggle inactive / active
			$('.desktop-timeline .timeline-element-container.current-active').removeClass('inactiveElement');
			$('.desktop-timeline .timeline-element-container.current-active').prevAll().addClass('inactiveElement');
			
			currentActiveIsFirst();
			
			// mark element in list as active
			$('.timeline-index-list-container li').removeClass('active');
			$('.timeline-index-list-container li[data-id="' + $(elementPointer).attr('id') + '"]').addClass('active');
		
		}
		
	}
	
}

/*
 * function to duplicate view for small devices
 */
 function duplicateTimelineForSmallDevices() {
	
	if ($('.timeline-list-view-container').length > 0) {
		
		parentId = $('.timeline-list-view-container').parent().parent().attr('id');
		$('.timeline-list-view-container').parent().clone().addClass('mobile-timeline').addClass('hidden-lg').addClass('hidden-md').appendTo('#' + parentId );
		$('.timeline-container:not(".mobile-timeline")').addClass('hidden-xs').addClass('hidden-sm').addClass('desktop-timeline');
		
		// change markup and classes to mobile timeline
		$('.mobile-timeline .timeline-element-year').addClass('col-xs-offset-1 col-xs-2');
		$('.mobile-timeline .timeline-element-content').addClass('col-xs-9'); 
		
		// change markup and classes to desktop timeline
		$('<div class="timeline-list-preview-container col-sm-offset-2 col-sm-9"><div class="row"></div></div>').insertBefore('.desktop-timeline .timeline-list-view-container');
		$('.desktop-timeline .timeline-list-view-container').addClass('col-sm-offset-2 col-sm-9');
		$('.desktop-timeline .timeline-element-container .timeline-element-picture-container').addClass('col-xs-4'); 
		$('.desktop-timeline .timeline-element-container .timeline-element-text-container').addClass('col-xs-5'); 
		$('.desktop-timeline .timeline-element-container .timeline-element-link-container').addClass('col-xs-3'); 
		
	}
	
	// add function to mobile timeline
	if ($('.mobile-timeline').length > 0) {
		$('.mobile-timeline .timeline-element-link-container').removeAttr('style');
		$('.mobile-timeline .timeline-element-title').click(function() {
			// console.log($(this));
			$('.mobile-timeline .timeline-element-container').removeClass('active'); 
			$(this).closest('.timeline-element-container').toggleClass('active'); 
		});
	}
	
}

/*
 * function to generate clickable index list
 */
 function buildTimelineIndexList() {
	
	if ($('.desktop-timeline .timeline-element-container').length > 0) {
		
		indexListString = '<div class="timeline-index-list-container clearfix col-md-12 hidden-xs"><ul>'; 
		$('.desktop-timeline .timeline-element-container').each(function(key, value){
			indexListString += '<li data-id="' + $(this).attr('id') + '"><span class="timeline-list-year">' + $(this).find('.timeline-element-year').first().text() + '</span><span class="timeline-list-text">' + $(this).find('h2').text() + '</span></li>';
		});
		indexListString +=  '</ul></div>';
		$('.desktop-timeline .timeline-list-view').parent().parent().parent().append(indexListString);
		$('.desktop-timeline .timeline-list-view').parent().parent().parent().addClass('clearfix')
		$('.desktop-timeline .timeline-list-view').parent().parent().parent().find('.news').addClass('clearfix');
		
		// now add the click event
		$('.timeline-index-list-container li').on('click touchstart', function() {
			openTimelineElement($('#' + $(this).attr('data-id')));
		});
		
	}
	
}

/*
 * add pre next for timeline
 */
 function addPrevNextNavigation() {
	
	if ($('.desktop-timeline .timeline-element-container').length > 0) {
		
		$('.desktop-timeline').append('<div class="timeline-nav"><div class="timeline-prev timeline-stepper" style=""></div><div class="timeline-next timeline-stepper" style=""></div></div>');
		$('.timeline-prev').on('click touchstart', function() {
			// console.log('goto-prev');
			if ($('.timeline-index-list-container .active').length > 0) {
				// get attr data-id of current active element 
				currentActiveElement = $('.timeline-index-list-container .active').prev().attr('data-id');
				if (typeof currentActiveElement != "undefined") {
					openTimelineElement($('#' + currentActiveElement));
				}
			}
		});
		$('.timeline-next').on('click touchstart', function() {
			// console.log('goto next'); 
			if ($('.timeline-index-list-container .active').length > 0) {
				// get attr data-id of current active element 
				currentActiveElement = $('.timeline-index-list-container .active').next().attr('data-id');
				if (typeof currentActiveElement != "undefined") {
					openTimelineElement($('#' + currentActiveElement));
				}
			}
		});
		
	}
	
}

/* 
 * set class when current-active is first
 */
function currentActiveIsFirst() {
	if ($('.desktop-timeline .timeline-list-view .timeline-element-container').first().hasClass('current-active')) {
		$('.desktop-timeline').addClass('firstElementActive');
	} else {
		$('.desktop-timeline').removeClass('firstElementActive'); 
	}
}
/**
 * Poll
 *
 * Thomas Deuling <typo3@Coding.ms>
 * 2017-01-14 - Muenster/Germany
 */
var Poll = {

	/**
	 * Initialize poll
	 */
	initialize: function() {
		// Deactivate form submit button on first click
		var saveButton = jQuery('.poll-button .poll-save');
		if(saveButton.length>0) {
			saveButton.click(function() {
				jQuery(this).attr('disabled', 'disabled');
				jQuery('<input />')
					.attr('type', 'hidden')
					.attr('name', jQuery(this).attr('name'))
					.attr('value', jQuery(this).attr('value'))
					.appendTo(jQuery(this).closest('form'));
				jQuery(this).closest('form').submit();
				return false;
			});
		}
		// Deactivate form submit button on first click
		var finishButton = jQuery('.poll-button .poll-finish');
		if(finishButton.length>0) {
			finishButton.click(function() {
				jQuery(this).attr('disabled', 'disabled');
				jQuery('<input />')
					.attr('type', 'hidden')
					.attr('name', jQuery(this).attr('name'))
					.attr('value', jQuery(this).attr('value'))
					.appendTo(jQuery(this).closest('form'));
				jQuery(this).closest('form').submit();
				return false;
			});
		}
		// Radiobuttons with user answers
		var radiobuttonWithUserAnswer = jQuery('.poll-radiobutton-user-answer input');
		if(radiobuttonWithUserAnswer.length>0) {
			jQuery.each(radiobuttonWithUserAnswer, function() {
				var userInput = jQuery(this);
				var pollAnswer = userInput.closest('.poll-answer');
				var pollQuestionAnswer = userInput.closest('.poll-question-answers');
				var radiobutton = jQuery('input[type=\'radio\']', pollAnswer);
				var radiobuttons = jQuery('input[type=\'radio\']', pollQuestionAnswer);
				if(!radiobutton.is(':checked')) {
					userInput.attr('disabled', 'disabled');
				}
				// Deactivate and clear user field on radiobutton
				radiobuttons.change(function() {
					var thisPollAnswer = jQuery(this).closest('.poll-answer');
					var allPollAnswer = jQuery('.poll-answer', jQuery(this).closest('.poll-question-answers'));
					jQuery.each(allPollAnswer, function() {
						var currentPollAnswer = jQuery(this);
						if(currentPollAnswer.attr('id') === thisPollAnswer.attr('id')) {
							jQuery('.poll-radiobutton-user-answer input', currentPollAnswer).removeAttr('disabled');
						}
						else {
							var userAnswer = jQuery('.poll-radiobutton-user-answer input', currentPollAnswer);
							if(userAnswer.length>0) {
								userAnswer.attr('disabled', 'disabled').val('');
							}
						}
					});
				});
			});
		}
		// Checkbox with user answers
		var checkboxWithUserAnswer = jQuery('.poll-checkbox-user-answer input');
		if(checkboxWithUserAnswer.length>0) {
			jQuery.each(checkboxWithUserAnswer, function() {
				var userInput = jQuery(this);
				var pollAnswer = userInput.closest('.poll-answer');
				var checkbox = jQuery('input[type=\'checkbox\']', pollAnswer);
				if(!checkbox.is(':checked')) {
					userInput.attr('disabled', 'disabled');
				}
				checkbox.change(function() {
					if(jQuery(this).is(':checked')) {
						jQuery('.poll-checkbox-user-answer input', pollAnswer).removeAttr('disabled');
					}
					else {
						jQuery('.poll-checkbox-user-answer input', pollAnswer)
							.attr('disabled', 'disabled')
							.val('');
					}
				});
			});
		}

	}/*,

	multipleUserAnswerBlur: function(answerNo) {
		this.multipleUserAnswerHandle(answerNo);
	},

	multipleUserAnswerKeyup: function(answerNo) {
		this.multipleUserAnswerHandle(answerNo);
	},

	multipleUserAnswerHandle: function(answerNo) {

		// Nur wenn Feld auch befuellt
		if(answerNo.getValue()!='') {

			//console.log(answerNo, answerNo.getValue(), answerNo.id);

			var id = answerNo.id;
			var idParts = id.split('_');
			// console.log(idParts);

			if(typeof(idParts[3])!='undefined' && idParts[3]!=null) {

				var nextId = parseInt(idParts[3])+1;
				// console.log(idParts[3], nextId);

				var nextRow = dojo.query('.poll-answer-'+nextId)[0];
				if(typeof(nextRow)!='undefined' && nextRow!=null) {
					dojo.style(nextRow, 'display', 'block');
				}

			}
		}

	}*/

};
$(document).ready(function () {
	Poll.initialize();
});
jQuery( document ).ready(function($) {
    console.log( "ready!" );

    setBodyPadding();
    $('.nav-wrapper').css('height', parseInt($('#main-navbar').css('height')));
    $('.jumbotron').css('height', 'calc(100vh - ' + parseInt($('#main-navbar').css('height')) + 'px)');

    $(window).on('resize', function () {
        setBodyPadding();
        $('.nav-wrapper').css('height', parseInt($('#main-navbar').css('height')));
        $('.jumbotron').css('height', 'calc(100vh - ' + parseInt($('#main-navbar').css('height')) + 'px)');
    });

    $('#main-navbar').addClass('fixed');

    $(window).scroll(function() {
    });

	// trasnform link with text 'Mehr erfahren' in aside into arrow based link
	if ($('aside a').length > 0) {
		
		$.each($('aside a'), function (index, value ) {
			if ($(this).text() == 'Mehr erfahren') {
				$(this).addClass('arrow-styled-link');
				$(this).parent().append('<span class="more-link-arrow"><a href="' + $(this).attr('href') + '" data-original-title="' + 'Mehr erfahren' +'" title="' + 'Mehr erfahren' +'"> </a></span>');
			}
		});
		
	}
	
	// remove attr. content 
	if ($('.news-list-view').length > 0 ) {
		if ($('#c165').length < 1) {
			$('.news-list-view').append('<div class="all-news-link"><p><a href="/neuigkeiten/news" data-original-title="Alle Nachrichten" title="Alle Nachrichten">Alle Nachrichten</a></p></div>');
			// $('.news-list-view').append('<div class="all-news-link"><p><a href="/news/" data-original-title="Alle Nachrichten" title="Alle Nachrichten">Alle Nachrichten</a></p><span class="more-link-arrow"><a href="/news/" data-original-title="Alle Nachrichten" title="Alle Nachrichten">&nbsp;</a></span></div>');
		}
	}
	
	// remove attr. content 
	if ($('.internal-link').length > 0 ) {
		$('.internal-link').removeAttr('data-original-title').removeAttr('title'); 
	}
	
	// assign classes and color to home page 
	if ($('.page-1').length > 0) {
		
		//add some classes for layout issues
		$('#c10').addClass('startpage-special special_double_height special_lightgray special_about');
		$('#c9').addClass('startpage-special special_double_height special_red special_materials');
		$('#c8').addClass('startpage-special special_double_height special_black special_news');
		$('#c12').addClass('startpage-special special_red special_brainstorming');
		$('#c13').addClass('startpage-special special_black special_contact');
		$('#c14').addClass('startpage-special special_double_height special_lightgray special_domnstrators');
		$('#c15').addClass('startpage-special special_double_height special_gray special_projects');
		$('#c11').addClass('startpage-special special_gray special_categories'); 
		
		// now append arrow links
		$.each($('.page-1 .main-content a'), function (index, value ) {
			if ($(this).parent().is('h2')) {
				$(this).parent().append('<span class="more-link-arrow"><a href="' + $(this).attr('href') + '" data-original-title="' + 'Mehr erfahren' +'" title="' + 'Mehr erfahren' +'"> </a></span>');
			}
		});
		
	}
    baguetteBox.run('.thumbnail');
	
});

setBodyPadding = function () {
    if ( $("#page-footer").hasClass("footer-sticky") ) {
        $("body").css("padding-bottom", parseInt($('#page-footer').css('height')));
    }
};
jQuery( document ).ready(function($) {

	// predefined data
	var vorlaufdatenMaterialTyp = {
		'':"",
		1:"FGL (aktorisch)",
		2:"FGL (superelastisch)",
		3:"Dielektrische Elastomere",
		4:"Piezokeramik" 
	}
	var vorlaufdatenInput = {
		'':"",
		1:"",
		2:"Elektrische Energie",
		3:"Mechanische Energie",
		4:"Thermische Energie"
	}
	var vorlaufdatenEffekt = {
		'':"",
		1:"",
		2:"Elektrisches Signal",
		3:"Kraft",
		4:"Verformung/Schwingung"
	}
	var vorlaufdatenVerwendung = {
		'':"",
		0:"",
		1:"",
		2:"Aktor",
		3:"Generator",
		4:"Schallwandler",
		5:"Sensor"
	}
	var vorlaufdatenDynamik = {
		'':"",
		1:"",
		2:"Langsam (Hz)",
		3:"Schnell (Hunderte Hz)",
		4:"Sehr Schnell (kHz)",
		5:"Schnell (Hz)"
	}
	
	/* 
	function to handle the whole 
	*/
	if ($('.materialsearch_container').length > 0) {
		
		// professional search
		if ($('#page-34').length > 0) {
			
			console.log('running professional search..');
			
			// hide default search + listings
			$('#materialsearch_form_filter_container').hide();
			$('#materialsearch_listing_header').hide();
			$('#materialsearch_listing_elements').hide();
			$('#materialsearch_form_headline_container').hide();
			$('#materialsearch_form_container').hide();
			$('#materialsearch_categoryFilter .close_icon').hide();
			$('#materialsearch_categoryFilter_close_container').hide();
			
			// show element listings 
			$('.professionalSearch').hide();
			
			// enabel category filter
			enableCategoryFilter();
			
		// basic search
		} else {
	
			console.log('materialsearch found.. - initializing logic');
			
			// initialize form
			$('#materialsearch_form_filter_container').hide();
			$('#materialsearch_categoryFilter_container').hide();
			$('.materialsearch_single_element').addClass('valid');
			$('#materialsearch_form_headline_modify').hide();
			handleFormFilterOptionVisibility();
			
			// bind and deny submit
			$('.materialsearch_container form').submit(function(event) {
				event.preventDefault();
				findMatchesToMaterialSearchForm();
				handleFormFilterOptionVisibility();
				$('.materialsearch_overlay_container').hide();
			});
			
			// add close logik to close icons
			$('.close_icon').click(function (event) {
				$(this).closest('.parentToClose').hide();
			});
			
			// fill list from data-container 
			addSmartMaterials();
			
			// fill form select field from list
			createAllSelectOptions();
			
			// add logik for reset button
			$('#materialsearch_form_reset_container button').click(function (event) {
				resetMaterialSearchForm();
			});
			
			// toggle search form fields
			$('.materialsearch_form_headline').click(function(event) {
				$('#materialsearch_form_filter_container').toggle(); 
				handleFormFilterOptionVisibility();
			});
			// hide search form fields by close button (under the form)
			$('#materialsearch_form_close').click(function(event) {
				$('#materialsearch_form_filter_container').hide();
				handleSearchFormHeadline();
				handleFormFilterOptionVisibility();
			});
			// hide search form fields by close button (top right of the form)
			$('#materialsearch_form .close_icon').click(function(event) {
				$('#materialsearch_form_filter_container').hide();
				handleSearchFormHeadline();
				handleFormFilterOptionVisibility();
			});
			
			// hide search category fields by close button
			$('#materialsearch_categoryFilter_close').click(function(event) {
				$('#materialsearch_categoryFilter_container').hide(); 
			});
			
			// toggle visibility for additional category filter 
			$('#materialsearch_form_enhanced_search').click(function(event) {
				$('#materialsearch_categoryFilter_container').toggle();
				$('#materialsearch_form_filter_container').toggle();
			});
			$('#materialsearch_form_default_search').click(function(event) {
				$('#materialsearch_categoryFilter_container').toggle();
				$('#materialsearch_form_filter_container').toggle();
			});
			
			// check search dependencies
			$('#materialsearch_form select').change(function() {
				console.log('changed: ' + $(this).attr('id'));
				resolveSearchDependencies($(this));
			});
			
			// toggle open/close logik for result list
			$('.materialsearch_single_element').click(function (event) {
				if ($(this).hasClass('active')) {
					$(this).removeClass('active'); 
				} else {
					$('.materialsearch_single_element').removeClass('active');
					$(this).addClass('active');
				}
			});
		}
	}
	
	function handleCategorySelectOptionChange() {
		
		var selectValue = $('#materialsearch_categoryFilter_type').val();
		
		console.log('selected: ' + selectValue);
		
		// hide all sections 
		$('.materialsearch_categoryFilter_section_container').hide();
		$('.professionalSearch').hide();
		$('.professionalSearch .single_data_container').removeClass('valid');
		$('#materialsearch_categoryFilter_select').show();
		
		if (selectValue == 'Formgedächtnislegierung (aktorisch)') {
			$('#materialsearch_categoryFilter_fglAktorisch').show();
			$('#materialsearch_categoryFilter_fglAktorisch2').show();
			$('#fglAktorisch_data_container').show();
			$('#fglAktorisch_data_container .single_data_container').addClass('valid');
			// handle additional filters 
			resetFglAktorischFilters();
			handleFglAktorischListingNoMatches();
		}
		if (selectValue == 'Formgedächtnislegierung (superelastisch)') {
			$('#materialsearch_categoryFilter_fglSuperelastisch').show();
			$('#fglSuperelastisch_data_container').show();
			$('#fglSuperelastisch_data_container .single_data_container').addClass('valid');
		}
		if (selectValue == 'Dielektrische Elastomere') {
			$('#materialsearch_categoryFilter_dielektrischeElastomere').show();
			$('#dielektrischeElastomere_data_container').show();
			$('#dielektrischeElastomere_data_container .single_data_container').addClass('valid');
		}
		if (selectValue == 'Piezokeramik') {
			$('#materialsearch_categoryFilter_piezokeramik').show();
			$('#materialsearch_categoryFilter_piezokeramik2').show();
			$('#piezokeramik_data_container').show();
			$('#piezokeramik_data_container .single_data_container').addClass('valid');
			// handle additional filters
			resetPiezokeramikFilters();
			handlePiezokeramikListingNoMatches();
		}
	}
	
	/* bring category filter to life and add filter logik */
	function enableCategoryFilter() {
		
		// react on statechange for #materialsearch_categoryFilter_type
		$('#materialsearch_categoryFilter_type').change(function (event) {
			
			handleCategorySelectOptionChange();
			
		});
		
		handlePiezokeramikListingNoMatches();
		handleFglAktorischListingNoMatches(); 
		
		// bind fgl aktorisch professional search
		$('#materialsearch_categoryFilter_fglAktorisch input').change(function (event) {
			handleFglAktorischSelections();
		});
		$('#materialsearch_categoryFilter_fglAktorisch2 input').keyup(function (event) { 
			handleFglAktorischSelections();
		});
		$('#materialsearch_categoryFilter_fglAktorisch2 input').change(function (event) { 
			checkTemperaturDependency();
		});
		
		// bind piezokeramik professional search
		$('#materialsearch_categoryFilter_piezokeramik input').change(function (event) {
			handlePiezokeramikSelections();
		});
		$('#materialsearch_categoryFilter_piezokeramik2 input').keyup(function (event) {
			handlePiezokeramikSelections(); 
		});
		
		// toggle aktorkomponenten change
		$('#piezo_aktorkomponenten').change(function (event) {
			if ($('#piezo_aktorkomponenten').is(':checked')) {
				$('#piezo_aktorkomponenten_multilayer').prop( "checked", true );
				$('#piezo_aktorkomponenten_bender').prop( "checked", true );
				$('#piezo_aktorkomponenten_stapel').prop( "checked", true );
				$('#piezo_aktorkomponenten_flaechenwandler').prop( "checked", true );
			} else {
				$('#piezo_aktorkomponenten_multilayer').prop( "checked", false );
				$('#piezo_aktorkomponenten_bender').prop( "checked", false );
				$('#piezo_aktorkomponenten_stapel').prop( "checked", false );
				$('#piezo_aktorkomponenten_flaechenwandler').prop( "checked", false );
			}
		});
		
		// initialize and make Piezokeramik default selection 
		$('#materialsearch_categoryFilter_type option[value="Piezokeramik"]').attr('selected', 'selected');
		$('.materialsearch_categoryFilter_section_container').hide();
		$('#materialsearch_categoryFilter_select').show();
		$('#materialsearch_categoryFilter_piezokeramik').show();
		$('#materialsearch_categoryFilter_piezokeramik2').show();
		$('#piezokeramik_data_container').show(); // show all piezokeramik listings
		$('#piezokeramik_data_container .single_data_container').addClass('valid'); // show all piezokeramik listings
		// show message if no matches 
		handlePiezokeramikListingNoMatches();
		
		// switch mode depending on url parameter
		var filterValue = getUrlParameter('filter');
		if ( filterValue != 'piezokeramik' ) {
			if (filterValue == 'aktorisch') {
				$("#materialsearch_categoryFilter_type").val('Formgedächtnislegierung (aktorisch)').change();
			}
			if (filterValue == 'superelastisch') {
				$("#materialsearch_categoryFilter_type").val('Formgedächtnislegierung (superelastisch)').change();
			}
			if (filterValue == 'dielektrisch') {
				$("#materialsearch_categoryFilter_type").val('Dielektrische Elastomere').change();
			}
		} 
		
		// prevent submit
		$('.materialsearch_container form').submit(function(event) {
			event.preventDefault();
			// findMatchesToCategoryFilterForm();
			if ($('#materialsearch_categoryFilter_type').val() == 'Piezokeramik') {
				handlePiezokeramikSelections();
			} 
			if ($('#materialsearch_categoryFilter_type').val() == 'Formgedächtnislegierung (aktorisch)') {
				handleFglAktorischSelections();
			}
		});
		
		// piezokeramik auswahl eingrenzen
		var filterSubValue = getUrlParameter('piezokeramik');
		if ( filterValue == 'piezokeramik' && filterSubValue ) {
			if (filterSubValue == 'multilayer') {
				$("#piezo_aktorkomponenten_multilayer").prop( "checked", true );
			}
			if (filterSubValue == 'bender') {
				$("#piezo_aktorkomponenten_bender").prop( "checked", true );
			}
			if (filterSubValue == 'stapel') {
				$("#piezo_aktorkomponenten_stapel").prop( "checked", true );
			}
			if (filterSubValue == 'flaechenwandler') {
				$("#piezo_aktorkomponenten_flaechenwandler").prop( "checked", true );
			}
			if (filterSubValue == 'schallwandler') {
				$("#piezo_aktorkomponenten_schallwandler").prop( "checked", true );
			}
			$('.materialsearch_container form').trigger('submit');
		} 
		
	};
	
	// function to set the height of the content depending on the opened overlay 
	function setContentHeightByOverlayHeight() {
		
		$('.materialsearch_overlay_container:visible').first().outerHeight();
		
	}
	
	// function to reset the category filter form 
	$('#materialsearch_categoryFilter_reset_container button').click(function (event) {
		event.preventDefault;
		// reset filter values
		$('#materialsearch_categoryFilter input').val('');
		$('#materialsearch_categoryFilter checkbox').prop( "checked", false );
		$("#materialsearch_categoryFilter_type").change();
		// make alle entries valid again
		$('.professionalSearch .single_data_container').removeClass('valid').removeClass('invalid').addClass('valid')
		// reset empty lists
		handleFglAktorischListingNoMatches();
		handlePiezokeramikListingNoMatches();
		// remove mark
		$('#fgl_aktorisch_schalttemperatur').removeClass('error');
		$('#fgl_aktorisch_einsatztemperatur').removeClass('error');
		
	});
	
	
	// show message if no matches 
	function handleFglAktorischListingNoMatches() {
		console.log('fglaktorisch Matches: ' + $('.fglAktorisch_data.single_data_container.valid').not('.invalid').length);
		if ($('.fglAktorisch_data.single_data_container.valid').not('.invalid').length > 0) {
			$('#fglaktorisch_listing_noMatches').hide();
		} else {
			$('#fglaktorisch_listing_noMatches').show();
		}
	}
	
	// show message if no matches 
	function handlePiezokeramikListingNoMatches() {
		console.log('piezokeramik Matches: ' + $('#piezokeramik_data_container > .valid').not('.invalid').length);
		if ($('#piezokeramik_data_container > .valid').not('.invalid').length > 0) {
			$('#piezokeramik_listing_noMatches').hide();
		} else {
			$('#piezokeramik_listing_noMatches').show();
		}
	}
	
	// function to reset all fgl aktorisch filters
	function resetFglAktorischFilters() {
		$('#materialsearch_categoryFilter_fglAktorisch input').prop( "checked", false );
		$('#materialsearch_categoryFilter_fglAktorisch2 input').val('');
	}
	
	// function to handle piezokeramik section
	function handleFglAktorischSelections() {
		
		//reset resultlist
		$('.fglAktorisch_data.single_data_container').removeClass('valid').removeClass('invalid');
		
		// handle checkboxes
		$.each($('#materialsearch_categoryFilter_fglAktorisch input[type="checkbox"]'), function(key, value) {
			if ($(this).is(':checked') && $(this).attr('id')=='fgl_aktorisch_blech') {
				$('.fglAktorisch_data.single_data_container[data-bauform_blech="1"]').addClass('valid');
			}
			if ($(this).is(':checked') && $(this).attr('id')=='fgl_aktorisch_draht') {
				$('.fglAktorisch_data.single_data_container[data-bauform_draht="1"]').addClass('valid');
			}
			if ($(this).is(':checked') && $(this).attr('id')=='fgl_aktorisch_stab') {
				$('.fglAktorisch_data.single_data_container[data-bauform_stab="1"]').addClass('valid');
			}
			if ($(this).is(':checked') && $(this).attr('id')=='fgl_aktorisch_feder') {
				$('.fglAktorisch_data.single_data_container[data-bauform_feder="1"]').addClass('valid');
			}
			if ($(this).is(':checked') && $(this).attr('id')=='fgl_aktorisch_rohr') {
				$('.fglAktorisch_data.single_data_container[data-bauform_rohr="1"]').addClass('valid');
			}
		});
		
		// handle inputfields
		if ($('#fgl_aktorisch_einsatztemperatur').val() != '') {
			temperaturValue = ' ' + $('#fgl_aktorisch_einsatztemperatur').val();
			temperaturValue = parseInt(temperaturValue);
			$.each($('.fglAktorisch_data.single_data_container'), function(key, value) {
				if (parseInt($(this).attr('data-maximale_einsatztemperatur')) <= temperaturValue) {
					$(this).addClass('valid');
				} else {
					$(this).addClass('invalid');
				}
			});
		}
		if ($('#fgl_aktorisch_schalttemperatur').val() != '') {
			schalttemperaturValue = ' ' + $('#fgl_aktorisch_schalttemperatur').val();
			schalttemperaturValue = parseInt(schalttemperaturValue);
			$.each($('.fglAktorisch_data.single_data_container'), function(key, value) {
				if (
					(parseInt($(this).attr('data-schalttemperatur')) <= (schalttemperaturValue + 10))
					&& (parseInt($(this).attr('data-schalttemperatur')) >= (schalttemperaturValue - 10))
				) {
					$(this).addClass('valid');
				} else {
					$(this).addClass('invalid');
				}
			});
		}
		if ($('#fgl_aktorisch_aktorkraft').val() != '') {
			aktorkraftValue = ' ' + $('#fgl_aktorisch_aktorkraft').val();
			aktorkraftValue = parseInt(aktorkraftValue);
			$.each($('.fglAktorisch_data.single_data_container'), function(key, value) {
				if (parseInt($(this).attr('data-aktorkraft')) >= aktorkraftValue) {
					$(this).addClass('valid');
				} else {
					$(this).addClass('invalid'); 
				}
				console.log(parseInt($(this).attr('data-aktorkraft')) + '>=' + aktorkraftValue);
			});
		}
		
		// if nothing is checked and nothing is set
		if (
			($('#materialsearch_categoryFilter_fglAktorisch input[type="checkbox"]:checked').length < 1)
			&& ($('#fgl_aktorisch_einsatztemperatur').val() == '')
			&& ($('#fgl_aktorisch_schalttemperatur').val() == '')
			&& ($('#fgl_aktorisch_aktorkraft').val() == '')
		) {
			console.log('alle empty');
			$('.fglAktorisch_data.single_data_container').addClass('valid');
		} else {
			console.log('something not empty');
		}
		
		// show message if no matches 
		handleFglAktorischListingNoMatches(); 
	}
	
	// function to reset all piezokeramik filters
	function resetPiezokeramikFilters() {
		$('#materialsearch_categoryFilter_piezokeramik input').prop( "checked", false );
		$('#materialsearch_categoryFilter_piezokeramik2 input').val('');
	}
	
	// function to handle piezokeramik section
	function handlePiezokeramikSelections() {
		
		//reset resultlist
		$('.piezokeramik_data.single_data_container').removeClass('valid').removeClass('invalid');
		
		// handle checkboxes
		$.each($('#materialsearch_categoryFilter_piezokeramik input[type="checkbox"]'), function(key, value) {
			if ($(this).is(':checked') && $(this).attr('id')=='piezo_aktorkomponenten_multilayer') {
				$('.piezokeramik_data.single_data_container[data-untertyp="3"]').addClass('valid');
			}
			if ($(this).is(':checked') && $(this).attr('id')=='piezo_aktorkomponenten_stapel') {
				$('.piezokeramik_data.single_data_container[data-untertyp="4"]').addClass('valid');
			}
			if ($(this).is(':checked') && $(this).attr('id')=='piezo_aktorkomponenten_flaechenwandler') {
				$('.piezokeramik_data.single_data_container[data-untertyp="5"]').addClass('valid');
			}
			if ($(this).is(':checked') && $(this).attr('id')=='piezo_aktorkomponenten_bender') {
				$('.piezokeramik_data.single_data_container[data-untertyp="2"]').addClass('valid');
			}
			if ($(this).is(':checked') && $(this).attr('id')=='piezo_aktorkomponenten_schallwandler') {
				$('.piezokeramik_data.single_data_container[data-untertyp="6"]').addClass('valid');
			}
		});
		
		// handle input fields
		if ($('#piezo_temperatur').val() != '') {
			temperaturValue = ' ' + $('#piezo_temperatur').val(); 
			temperaturValue = parseInt(temperaturValue);
			if (temperaturValue < 20) {
				$.each($('.piezokeramik_data.single_data_container'), function(key, value) {
					if (parseInt($(this).attr('data-einsatztemperatur_minimum')) >= temperaturValue) {
						$(this).addClass('valid');
					} else {
						$(this).addClass('invalid');
					}
				});
			} else {
				$.each($('.piezokeramik_data.single_data_container'), function(key, value) {
					if (parseInt($(this).attr('data-einsatztemperatur_maximum')) <= temperaturValue) {
						$(this).addClass('valid');
					} else {
						$(this).addClass('invalid');
					}
				});
			}
		}
		if ($('#piezo_stellweg').val() != '') {
			stellwegValue = ' ' + $('#piezo_stellweg').val();
			stellwegValue = parseInt(stellwegValue);
			$.each($('.piezokeramik_data.single_data_container'), function(key, value) {
				if (parseInt($(this).attr('data-maximaler_stellweg')) <= stellwegValue) {
					$(this).addClass('valid');
				} else {
					$(this).addClass('invalid');
				}
			});
		}
		if ($('#piezo_aktorkraft').val() != '') {
			aktorkraftValue = ' ' + $('#piezo_aktorkraft').val();
			aktorkraftValue = parseInt(aktorkraftValue);
			$.each($('.fglAktorisch_data.single_data_container'), function(key, value) {
				if (parseInt($(this).attr('data-aktorkraft')) <= aktorkraftValue) {
					$(this).addClass('valid');
				} else {
					$(this).addClass('invalid');
				}
			});
		}
		
		// if nothing is checked and nothing is entered
		if (
			($('#materialsearch_categoryFilter_piezokeramik input[type="checkbox"]:checked').length < 1)
			&& ($('#piezo_temperatur').val() == '')
			&& ($('#piezo_stellweg').val() == '')
			&& ($('#piezo_aktorkraft').val() == '')
		)  {
			$('.piezokeramik_data.single_data_container').addClass('valid');
		}
		
		// show message if no matches 
		handlePiezokeramikListingNoMatches();
		
	}
	
	// function to reset the form
	function resetMaterialSearchForm() {
		
		// remove all previously selected category filters
		$('#materialsearch_form_display_input .formFilterOption').remove();
		$('#materialsearch_form_display_effekt .formFilterOption').remove();
		$('#materialsearch_form_display_effektmodus .formFilterOption').remove();
		$('#materialsearch_form_display_verwendung .formFilterOption').remove();
		$('#materialsearch_form_display_material .formFilterOption').remove();
		
		// make all entries valid again
		$('.materialsearch_single_element').addClass('valid').removeClass('invalid');
		
		// hide search form display container
		$('#materialsearch_form_display_container').hide();
		
		// eanble all options in select fields
		$('#materialsearch_form select option').removeAttr('disabled');
		
		// handle visible headline above search form
		handleSearchFormHeadline();
		
		// handle empty result
		handleEmptyResultsDisplay();
		
	}
	
	// function to find all matches to current selected options in material search form
	function findMatchesToMaterialSearchForm() {
		
		// first hide all results
		$('.materialsearch_single_element').removeClass('valid').removeClass('invalid');
		
		// remove all previously selected category filters
		$('#materialsearch_form_display_input .formFilterOption').remove();
		$('#materialsearch_form_display_effekt .formFilterOption').remove();
		$('#materialsearch_form_display_effektmodus .formFilterOption').remove();
		$('#materialsearch_form_display_verwendung .formFilterOption').remove();
		$('#materialsearch_form_display_material .formFilterOption').remove();
		
		// show matches and add category filter
		$.each($('#materialsearch_form select'), function(key, value) {
			
			// only not empty values
			if ($(this).val()) {
				
				console.log('Value: ' + $(this).val()); 
				console.log('attr: ' + $(this).attr('name')); 
				
				if ($(this).attr('name') == 'materialsearch_input_input') {
					// show only valid matches
					$('.materialsearch_single_element[data-input_string="' + $(this).val() + '"]').addClass('valid');
					$('.materialsearch_single_element[data-input_string!="' + $(this).val() + '"]').addClass('invalid');
					// add remove option button to materialsearch_form_display_container
					$('#materialsearch_form_display_input').append('<div class="formFilterOption">' + $(this).val() + '<span class="removeformFilterOption" data-parent="materialsearch_input_input">x</span></div>');
				}
				if ($(this).attr('name') == 'materialsearch_input_effekt') {
					// show only valid matches
					$('.materialsearch_single_element[data-effekt_string="' + $(this).val() + '"]').addClass('valid');
					$('.materialsearch_single_element[data-effekt_string!="' + $(this).val() + '"]').addClass('invalid');
					// add remove option button to materialsearch_form_display_container
					$('#materialsearch_form_display_effekt').append('<div class="formFilterOption">' + $(this).val() + '<span class="removeformFilterOption" data-parent="materialsearch_input_effekt">x</span></div>');
				}
				// treat different effektmodus options
				if ($(this).attr('name') == 'materialsearch_input_effektmodus') {
					// store for jquery each
					searchValue = $(this).val()
					// show only valid matches
					$.each($('.materialsearch_single_element'), function (key, value) {
						if ($(this).attr('data-effektmodus_string').indexOf(searchValue) > -1) {
							$(this).addClass('valid');
						} else {
							$(this).addClass('invalid');
						}
					}); 
					// add remove option button to materialsearch_form_display_container
					$('#materialsearch_form_display_effektmodus').append('<div class="formFilterOption">' + $(this).val() + '<span class="removeformFilterOption" data-parent="materialsearch_input_effektmodus">x</span></div>');
				}
				if ($(this).attr('name') == 'materialsearch_input_verwendung') {
					// show only valid matches
					$('.materialsearch_single_element[data-verwendung_string="' + $(this).val() + '"]').addClass('valid');
					$('.materialsearch_single_element[data-verwendung_string!="' + $(this).val() + '"]').addClass('invalid');
					// add remove option button to materialsearch_form_display_container
					$('#materialsearch_form_display_verwendung').append('<div class="formFilterOption">' + $(this).val() + '<span class="removeformFilterOption" data-parent="materialsearch_input_verwendung">x</span></div>');
				}
				if ($(this).attr('name') == 'materialsearch_input_material') { 
					// show only valid matches
					$('.materialsearch_single_element[data-material_typ_string="' + $(this).val() + '"]').addClass('valid');
					$('.materialsearch_single_element[data-material_typ_string!="' + $(this).val() + '"]').addClass('invalid');
					// add remove option button to materialsearch_form_display_container
					$('#materialsearch_form_display_material').append('<div class="formFilterOption">' + $(this).val() + '<span class="removeformFilterOption" data-parent="materialsearch_input_material">x</span></div>');
				}
			}
			
			// now bind delete event to removeformFilterOption
			handleSingleCategoryFilterReset();
			
			// now handle headline above search form
			handleSearchFormHeadline();
			
		});
		
		// show all elements if no filter is set
		if (checkWhetherSomeValueIsSet()) {
			$('.materialsearch_single_element').addClass('valid');
			handleFormFilterOptionVisibility();
		}
		
		// show filters are set if true
		handleFormFilterOptionVisibility();
		
		// handle visible headline above search form
		handleSearchFormHeadline();
		
		// handle empty result
		handleEmptyResultsDisplay();
		
	}
	
	function handleFormFilterOptionVisibility() {
		if ($('.formFilterOption').length > 0) {
			console.log('show mat search headline container');
			$('#materialsearch_form_display_container').show();
		} else {
			console.log('hide mat search headline container');
			$('#materialsearch_form_display_container').hide();
		}
	}
	
	// function to check if at least one value is set in search form 
	function checkWhetherSomeValueIsSet () {
		
		// initialize variable
		var allValues = '';
		var isEmpty = false;
		
		// go through each element
		$.each($('.materialsearch_select_element'), function (key, value) {
			
			allValues += $(this).val();
			
		});
		
		if (allValues == '') {
			isEmpty = true;
		}
		
		return isEmpty;
		
	}
	
	// checks and sets the filter values available for common search
	function resolveSearchDependencies(changedSelectField) {
		
		// get selected value
		selectedValue = changedSelectField.find('option:selected').val();
		
		if (selectedValue == '') {
			
			// reset all options of this field
			changedSelectField.find('options').removeAttr('disabled');
			
		} else {
			
			// first disable all found elements
			findMatchesToMaterialSearchForm();
			
			// first disable all not selected options in select elements but the current one
			$.each($('#materialsearch_form select').not('#' + changedSelectField.attr('id')), function(key, value) {
				$(this).find('option:not(:selected)').prop('disabled', 'disabled');
			});
			
			// now disbale remaining options everywhere but in this select
			console.log('found matches: ' + $('.materialsearch_single_element:visible').length);
			if ($('.materialsearch_single_element:visible').length > 0) {
				// re enable all matching selects
				$.each($('.materialsearch_single_element:visible'), function(key, value) {
					
					// handle input
					if ($(this).attr('data-input_string') != '') {
						$('#materialsearch_input_input option[value="' + $(this).attr('data-input_string') + '"]').removeAttr('disabled');
					}
					
					// handle effekt
					if ($(this).attr('data-effekt_string') != '') {
						$('#materialsearch_input_effekt option[value="' + $(this).attr('data-effekt_string') + '"]').removeAttr('disabled');
					}
					
					// handle effektmodus
					if ($(this).attr('data-effektmodus_zug') != '') {
						$('#materialsearch_input_effektmodus option[value="Zug"]').removeAttr('disabled');
					}
					if ($(this).attr('data-effektmodus_druck') != '') {
						$('#materialsearch_input_effektmodus option[value="Druck"]').removeAttr('disabled');
					}
					if ($(this).attr('data-effektmodus_biegung') != '') {
						$('#materialsearch_input_effektmodus option[value="Biegung"]').removeAttr('disabled');
					}
					if ($(this).attr('data-effektmodus_stromerzeugung') != '') {
						$('#materialsearch_input_effektmodus option[value="Stromerzeugung"]').removeAttr('disabled');
					}
					if ($(this).attr('data-effektmodus_widerstand') != '') {
						$('#materialsearch_input_effektmodus option[value="Änderung Widerstand"]').removeAttr('disabled');
					}
					if ($(this).attr('data-effektmodus_schwingung') != '') {
						$('#materialsearch_input_effektmodus option[value="Schwingung"]').removeAttr('disabled');
					}
					if ($(this).attr('data-effektmodus_spannung') != '') {
						$('#materialsearch_input_effektmodus option[value="Änderung Spannung"]').removeAttr('disabled');
					}
					if ($(this).attr('data-effektmodus_kapazitaet') != '') {
						$('#materialsearch_input_effektmodus option[value="Änderung Kapazität"]').removeAttr('disabled');
					}
					
					// handle verwendung
					if ($(this).attr('data-verwendung_string') != '') {
						$('#materialsearch_input_verwendung option[value="' + $(this).attr('data-verwendung_string') + '"]').removeAttr('disabled');
					}
					
					// handle material
					if ($(this).attr('data-material_typ_string') != '') {
						$('#materialsearch_input_material option[value="' + $(this).attr('data-material_typ_string') + '"]').removeAttr('disabled');
					}
					
				});
			}
		}
		
		// reset if only select element has a selection 
		if ($('#materialsearch_form')) {
			
			// reenable first select option
			$('#materialsearch_form select option').first().removeAttr('disabled'); 
			
			selectCounter = 0;
			selectId = '';
			
			$.each($('#materialsearch_form select'), function(key, value) {
				if ($(this).find('option:selected').val() != '') {
					console.log('sel-value: ' + $(this).find('option:selected').val());
					selectCounter = selectCounter +1;
					selectId = $(this).attr('id');
				}
			});
			
			if(selectCounter == 1) {
				// reenable all options in this select
				$('#' + selectId).find('option').removeAttr('disabled');
			}
			
			if(selectCounter == 0) {
				// reenable all options in all selects
				$('#materialsearch_form select').find('option').removeAttr('disabled');
			}
			
			console.log('selected: ' + selectCounter + ' // ' + selectId);
			
		}
	}
	
	// 
	
	// reset filter values
	function resetFilterValues() {
		// removes all disabled options from values
		$('#materialsearch_form option').removeAttr('disabled');
	}
	
	// function to handle the reset of the single category filter
	function handleSearchFormHeadline() {
		
		if ($('.formFilterOption').length == 0) {
			$('#materialsearch_form_headline_modify').hide();
			$('#materialsearch_form_headline_start').show();
		} else {
			$('#materialsearch_form_headline_start').hide();
			$('#materialsearch_form_headline_modify').show();
		}
		
	}
	
	// function to handle the reset of the single category filter
	function handleSingleCategoryFilterReset() {
		
		// first reset the desired select
		$('.removeformFilterOption').click(function(event) {
			
			$('#' + $(this).attr('data-parent') + ' option').removeAttr('selected');
			$('#' + $(this).attr('data-parent') + ' option').first().attr('selected', 'selected');
		
			// remove the element itself
			$(this).parent().remove();
			
			// now run filter again
			findMatchesToMaterialSearchForm();
			
		});
	}
	
	// function to create all select options 
	function createAllSelectOptions() {
		
		// initialize value storages
		var effekt = [];
		var effektmodus = [];
		var input = [];
		var verwendung = [];
		var material = [];
		
		// gather data from list
		$.each($('.materialsearch_single_element'), function(key, value) { 
			
			// check for empty values and avoid duplicate entries in value storages
			if ($(this).attr('data-effekt') && effekt.indexOf(vorlaufdatenEffekt[$(this).attr('data-effekt')]) < 0) {
				effekt.push(vorlaufdatenEffekt[$(this).attr('data-effekt')]);
			}
			if ($(this).attr('data-input') && input.indexOf(vorlaufdatenInput[$(this).attr('data-input')]) < 0) {
				input.push(vorlaufdatenInput[$(this).attr('data-input')]);
			}
			if ($(this).attr('data-verwendung') && verwendung.indexOf(vorlaufdatenVerwendung[$(this).attr('data-verwendung')]) < 0) {
				verwendung.push(vorlaufdatenVerwendung[$(this).attr('data-verwendung')]);
			}
			if ($(this).attr('data-material_typ') && material.indexOf(vorlaufdatenMaterialTyp[$(this).attr('data-material_typ')]) < 0) {
				material.push(vorlaufdatenMaterialTyp[$(this).attr('data-material_typ')]); 
			}
			// all options for effektmodus
			if ($(this).attr('data-effektmodus_zug') == 1 && effektmodus.indexOf('Zug') < 0) {
				effektmodus.push('Zug'); 
			}
			if ($(this).attr('data-effektmodus_druck') == 1 && effektmodus.indexOf('Druck') < 0) {
				effektmodus.push('Druck'); 
			}
			if ($(this).attr('data-effektmodus_biegung') == 1 && effektmodus.indexOf('Biegung') < 0) {
				effektmodus.push('Biegung'); 
			}
			if ($(this).attr('data-effektmodus_stromerzeugung') == 1 && effektmodus.indexOf('Stromerzeugung') < 0) {
				effektmodus.push('Stromerzeugung'); 
			}
			if ($(this).attr('data-effektmodus_kapazitaet') == 1 && effektmodus.indexOf('Änderung Kapazität') < 0) {
				effektmodus.push('Änderung Kapazität'); 
			}
			if ($(this).attr('data-effektmodus_widerstand') == 1 && effektmodus.indexOf('Änderung Widerstand') < 0) {
				effektmodus.push('Änderung Widerstand'); 
			}
			if ($(this).attr('data-effektmodus_spannung') == 1 && effektmodus.indexOf('Änderung Spannung') < 0) {
				effektmodus.push('Änderung Spannung'); 
			}
			if ($(this).attr('data-effektmodus_schwingung') == 1 && effektmodus.indexOf('Schwingung') < 0) {
				effektmodus.push('Schwingung'); 
			}
			
		});
		
		// sort all value storages
		effekt.sort();
		effektmodus.sort();
		input.sort();
		verwendung.sort();
	    material.sort();
		
		// assign as new options
		processValueStorage('materialsearch_input_effekt', effekt);
		processValueStorage('materialsearch_input_effektmodus', effektmodus);
		processValueStorage('materialsearch_input_input', input);
		processValueStorage('materialsearch_input_verwendung', verwendung);
		processValueStorage('materialsearch_input_material', material);
		
	}
	
	// function to process all value storages 
	function processValueStorage(elementId, valueStorage) {
		
		if (valueStorage.length > 0) {
			
			$.each(valueStorage, function(key, newValue) {
				
				toAddOptionsToSelectList(elementId, newValue);
				
			});
			
		}
		
	}
	
	// function to add a new option to a select element
	function toAddOptionsToSelectList(elementId, newValue) {
		
		if (($('#' + elementId).length == 1) && (newValue)) {
			$('#' + elementId).append($('<option>', {value:newValue, text:newValue}));
		}
		
	}
	
	// function to add all smart materials to the list groups
	function addSmartMaterials () {
		
		if ($('#materialsearch_data_container .materialsearch_data').length > 0) {
			
			$.each($('#materialsearch_data_container .materialsearch_data'), function (key, value) {
				
				// clone Element
				clonedElement = $('#materialsearch_listing_element_dummy > div').first().clone();
				
				// create temporary elements + reset for each cycle
				tempMaterialTyp = tempMaterialUntertyp = tempMaterialVerwendung = tempMaterialInput = tempMaterialEffekt = tempMaterialDynamik = tempMaterialEffektgroesse = tempMaterialEffektmodus = '';
				tempMaterialBauweiseCombined = new Array();
				tempMaterialEffektmodusCombined = new Array();
				tempMaterialTyp = parseInt($(this).attr('data-material_typ'));
				tempMaterialVerwendung = parseInt($(this).attr('data-verwendung'));
				tempMaterialInput = parseInt($(this).attr('data-input'));
				tempMaterialEffekt = parseInt($(this).attr('data-effekt'));
				tempMaterialDynamik = parseInt($(this).attr('data-dynamik'));
				tempMaterialEffektgroesse = $(this).attr('data-effektgroesse');
			
				/* handle all bauform options */
				if (parseInt($(this).attr('data-bauform_blech')) > 0) {
					tempMaterialBauweiseCombined.push('Blech');
				}
				if (parseInt($(this).attr('data-bauform_draht')) > 0) {
					tempMaterialBauweiseCombined.push('Draht');
				}
				if (parseInt($(this).attr('data-bauform_feder')) > 0) {
					tempMaterialBauweiseCombined.push('Feder');
				}
				if (parseInt($(this).attr('data-bauform_rohr')) > 0) {
					tempMaterialBauweiseCombined.push('Rohr');
				}
				if (parseInt($(this).attr('data-bauform_stab')) > 0) {
					tempMaterialBauweiseCombined.push('Stab');
				}
				if (parseInt($(this).attr('data-bauform_folie')) > 0) {
					tempMaterialBauweiseCombined.push('Folie');
				}
				if (parseInt($(this).attr('data-bauform_bender')) > 0) {
					tempMaterialBauweiseCombined.push('Bender');
				}
				if (parseInt($(this).attr('data-bauform_flaechenwandler')) > 0) {
					tempMaterialBauweiseCombined.push('Flächenwandler');
				}
				if (parseInt($(this).attr('data-bauform_multilayer')) > 0) {
					tempMaterialBauweiseCombined.push('Multilayer');
				}
				if (parseInt($(this).attr('data-bauform_stapel')) > 0) {
					tempMaterialBauweiseCombined.push('Stapel');
				}
				if (parseInt($(this).attr('data-bauform_schallwandler')) > 0) {
					tempMaterialBauweiseCombined.push('Patch/Schallwandler');
				}
				
				/* handle all effektmodus options */
				if (parseInt($(this).attr('data-effektmodus_zug')) > 0) {
					tempMaterialEffektmodusCombined.push('Zug');
				}
				if (parseInt($(this).attr('data-effektmodus_druck')) > 0) {
					tempMaterialEffektmodusCombined.push('Druck');
				}
				if (parseInt($(this).attr('data-effektmodus_biegung')) > 0) {
					tempMaterialEffektmodusCombined.push('Biegung');
				}
				if (parseInt($(this).attr('data-effektmodus_')) > 0) {
					tempMaterialEffektmodusCombined.push('stromerzeugung');
				}
				if (parseInt($(this).attr('data-effektmodus_stromerzeugung')) > 0) {
					tempMaterialEffektmodusCombined.push('Stromerzeugung');
				}
				if (parseInt($(this).attr('data-effektmodus_kapazitaet')) > 0) {
					tempMaterialEffektmodusCombined.push('Änderung Kapazität');
				}
				if (parseInt($(this).attr('data-effektmodus_widerstand')) > 0) {
					tempMaterialEffektmodusCombined.push('Änderung Widerstand');
				}
				if (parseInt($(this).attr('data-effektmodus_spannung')) > 0) {
					tempMaterialEffektmodusCombined.push('Änderung Spannung');
				}
				if (parseInt($(this).attr('data-effektmodus_schwingung')) > 0) {
					tempMaterialEffektmodusCombined.push('Schwingung');
				}
				
				// handle links
				if ($(this).attr('data-detail_url') == '') {
					clonedElement.find('.materialsearch_link').remove();
					clonedElement.find('.materialsearch_link_button').remove();
				} else {
					// add parameter for filter
					filterParam = '?filter=';
					additionalParam = '';
					if ($(this).attr('data-material_typ') == "1") {
						filterParam += 'aktorisch';
					}
					if ($(this).attr('data-material_typ') == "2") {
						filterParam += 'superelastisch';
					}
					if ($(this).attr('data-material_typ') == "3") {
						filterParam += 'dielektrisch';
					}
					if ($(this).attr('data-material_typ') == "4") {
						filterParam += 'piezokeramik';
					}
					
					// add piezokeramik filter value
					if (tempMaterialUntertyp == 2) {
						additionalParam = '&piezokeramik=bender';
					}
					if (tempMaterialUntertyp == 3) {
						additionalParam = '&piezokeramik=multilayer';
					}
					if (tempMaterialUntertyp == 4) {
						additionalParam = '&piezokeramik=stapel';
					}
					if (tempMaterialUntertyp == 5) {
						additionalParam = '&piezokeramik=flaechenwandler';
					}
					if (tempMaterialUntertyp == 6) {
						additionalParam = '&piezokeramik=schallwandler';
					}
					
					// assign new data in new element
					clonedElement.find('.materialsearch_link a').attr('href', $(this).attr('data-detail_url') + filterParam + additionalParam);
					clonedElement.find('.materialsearch_moreLink a').attr('href', $(this).attr('data-detail_url') + filterParam + additionalParam); 
					clonedElement.find('.materialsearch_link_button a').attr('href', $(this).attr('data-detail_url') + filterParam + additionalParam); 
				}
				
				clonedElement.find('.materialsearch_descriptionTitle').html($(this).find('.materialsearch_data_titel').html());
				clonedElement.find('.materialsearch_description').html($(this).find('.materialsearch_data_description').html());
				clonedElement.find('.materialsearch_images').html($(this).find('.materialsearch_data_image').html());
				
				clonedElement.find('.materialsearch_material_column .materialsearch_element_value').html( vorlaufdatenMaterialTyp[tempMaterialTyp] + '&nbsp;');
				clonedElement.find('.materialsearch_bauweise_column .materialsearch_element_value').html( tempMaterialBauweiseCombined.join() + '&nbsp;');
				clonedElement.find('.materialsearch_verwendung_column .materialsearch_element_value').html( vorlaufdatenVerwendung[tempMaterialVerwendung] + '&nbsp;');
				clonedElement.find('.materialsearch_input_column .materialsearch_element_value').html( vorlaufdatenInput[tempMaterialInput] + '&nbsp;');
				clonedElement.find('.materialsearch_effekt_column .materialsearch_element_value').html( vorlaufdatenEffekt[tempMaterialEffekt] + '&nbsp;');
				clonedElement.find('.materialsearch_effektmodus_column .materialsearch_element_value').html( tempMaterialEffektmodusCombined.join() + '&nbsp;');
				clonedElement.find('.materialsearch_dynamik_column .materialsearch_element_value').html( vorlaufdatenDynamik[tempMaterialDynamik] + '&nbsp;');
				clonedElement.find('.materialsearch_effektgroesse_column .materialsearch_element_value').html( tempMaterialEffektgroesse + '&nbsp;');
				
				clonedElement.attr('data-material_typ', $(this).attr('data-material_typ'));
				clonedElement.attr('data-material_typ_string', vorlaufdatenMaterialTyp[$(this).attr('data-material_typ')]);
				clonedElement.attr('data-material_untertyp', $(this).attr('data-material_untertyp'));
				clonedElement.attr('data-verwendung', $(this).attr('data-verwendung'));
				clonedElement.attr('data-verwendung_string', vorlaufdatenVerwendung[$(this).attr('data-verwendung')]);
				clonedElement.attr('data-input', $(this).attr('data-input'));
				clonedElement.attr('data-input_string', vorlaufdatenInput[$(this).attr('data-input')]);
				clonedElement.attr('data-bauform_draht', $(this).attr('data-bauform_draht'));
				clonedElement.attr('data-bauform_blech', $(this).attr('data-bauform_blech'));
				clonedElement.attr('data-bauform_feder', $(this).attr('data-bauform_feder'));
				clonedElement.attr('data-bauform_rohr', $(this).attr('data-bauform_rohr'));
				clonedElement.attr('data-bauform_stab', $(this).attr('data-bauform_stab'));
				clonedElement.attr('data-bauform_folie', $(this).attr('data-bauform_folie'));
				clonedElement.attr('data-bauform_stapel', $(this).attr('data-bauform_stapel'));
				clonedElement.attr('data-bauform_bender', $(this).attr('data-bauform_bender'));
				clonedElement.attr('data-bauform_flaechenwandler', $(this).attr('data-bauform_flaechenwandler'));
				clonedElement.attr('data-bauform_multilayer', $(this).attr('data-bauform_multilayer'));
				clonedElement.attr('data-bauform_schallwandler', $(this).attr('data-bauform_schallwandler'));
				clonedElement.attr('data-bauweise_string', tempMaterialBauweiseCombined.join());
				clonedElement.attr('data-effekt', $(this).attr('data-effekt'));
				clonedElement.attr('data-effekt_string', vorlaufdatenEffekt[$(this).attr('data-effekt')]);
				clonedElement.attr('data-effektmodus_zug', $(this).attr('data-effektmodus_zug'));
				clonedElement.attr('data-effektmodus_druck', $(this).attr('data-effektmodus_druck'));
				clonedElement.attr('data-effektmodus_biegung', $(this).attr('data-effektmodus_biegung'));
				clonedElement.attr('data-effektmodus_stromerzeugung', $(this).attr('data-effektmodus_stromerzeugung'));
				clonedElement.attr('data-effektmodus_kapazitaet', $(this).attr('data-effektmodus_kapazitaet'));
				clonedElement.attr('data-effektmodus_widerstand', $(this).attr('data-effektmodus_widerstand'));
				clonedElement.attr('data-effektmodus_spannung', $(this).attr('data-effektmodus_spannung'));
				clonedElement.attr('data-effektmodus_schwingung', $(this).attr('data-effektmodus_schwingung'));
				clonedElement.attr('data-effektmodus_string', tempMaterialEffektmodusCombined.join());
				clonedElement.attr('data-effektgroesse', $(this).attr('data-effektgroesse'));
				clonedElement.attr('data-dynamik', $(this).attr('data-dynamik'));
				clonedElement.attr('data-dynamik_string', vorlaufdatenDynamik[$(this).attr('data-dynamik')]);
				
				// add default class
				clonedElement.addClass('materialsearch_single_element');
				
				// append prefilled element to list
				clonedElement.appendTo('#materialsearch_listing_elements');
				
			});
			
		}
		
		// now mark all as valid 
		$('#materialsearch_listing_elements .materialsearch_single_element').addClass('valid');
		
		handleEmptyResultsDisplay();
		
	}
	
	// function to handle visibility of noMatches alert element
	function handleEmptyResultsDisplay() {
		
		if ($('#materialsearch_listing_elements .valid').not('.invalid').length > 0) {
			$('#materialsearch_listing_noMatches').hide();
		} else {
			$('#materialsearch_listing_noMatches').show();
		}
		
	}
	
	// function to check whether one value is higher than another
	function checkTemperaturDependency() {
		
		// only if both fields are filled
		if ($('#fgl_aktorisch_einsatztemperatur').val() != '' 
			&& $('#fgl_aktorisch_schalttemperatur').val() != '') 
		{
		
			checkEinsatztemperaturValue = parseInt($('#fgl_aktorisch_einsatztemperatur').val());
			checkSchalttemperaturValue = parseInt($('#fgl_aktorisch_schalttemperatur').val());
			
			if (checkEinsatztemperaturValue < checkSchalttemperaturValue) {
				// remove mark
				$('#fgl_aktorisch_schalttemperatur').removeClass('error');
				$('#fgl_aktorisch_einsatztemperatur').removeClass('error');
			} else {
				// set mark
				$('#fgl_aktorisch_schalttemperatur').addClass('error');
				$('#fgl_aktorisch_einsatztemperatur').addClass('error');
				alert('Die Einsatztemperatur muss oberhalb der Schalttemperatur liegen. Bitte korrigieren Sie Ihre Eingabe.')
			}
		
		} else {
			// remove mark
			$('#fgl_aktorisch_schalttemperatur').removeClass('error');
			$('#fgl_aktorisch_einsatztemperatur').removeClass('error');
		}
	} 
	
	/* build filter logic */
	function findMatchesToCategoryFilterForm() {
		
		var selectValue = $('#materialsearch_categoryFilter_type').val();
		console.log('selected: ' + selectValue);
		
		// hide all results 
		$('.professionalSearch .single_data_container').removeClass('valid');
		$('.professionalSearch .single_data_container').removeClass('invalid');
		
		/* 
		now enable all matching results
		*/
		
		// filter logic for fgl aktorisch
		if (selectValue == 'Formgedächtnislegierung (aktorisch)') {
			if ($('#fgl_aktorisch_blech').is(':checked')) {
				$('.fglAktorisch_data[data-bauform_blech="1"]').addClass('valid');
			}
			if ($('#fgl_aktorisch_draht').is(':checked')) {
				$('.fglAktorisch_data[data-bauform_draht="1"]').addClass('valid');
			}
		}
		// filter logic for fgl superelastisch
		if (selectValue == 'Formgedächtnislegierung (superelastisch)') {
			if ($('#fgl_superelastisch_blech').is(':checked')) {
				$('.fglSuperelastisch_data[data-bauform_blech="1"]').addClass('valid');
			}
			if ($('#fgl_superelastisch_draht').is(':checked')) {
				$('.fglSuperelastisch_data[data-bauform_draht="1"]').addClass('valid');
			}
		}
		// filter logic for piezokeramik
		if (selectValue == 'Piezokeramik') {
			
			/* checkboxes */
			if ($('#piezo_aktorkomponenten_bender').is(':checked')) {
				$('.piezokeramik_data[data-untertyp="2"]').addClass('valid');
			}
			if ($('#piezo_aktorkomponenten_multilayer').is(':checked')) {
				$('.piezokeramik_data[data-untertyp="3"]').addClass('valid');
			}
			if ($('#piezo_aktorkomponenten_stapel').is(':checked')) {
				$('.piezokeramik_data[data-untertyp="4"]').addClass('valid');
			}
			if ($('#piezo_aktorkomponenten_flaechenwandler').is(':checked')) {
				$('.piezokeramik_data[data-untertyp="5"]').addClass('valid');
			}
			if ($('#piezo_aktorkomponenten_schallwandler').is(':checked')) {
				$('.piezokeramik_data[data-untertyp="6"]').addClass('valid');
			}
			
			/* input fields */
			einsatztemperaturValue = getIntegerValue($('#piezo_temperatur').val());
			stellwegValue = getIntegerValue($('#piezo_stellweg').val());
			aktorkraftValue = getIntegerValue($('#piezo_aktorkraft').val());
			
			if (einsatztemperaturValue) {
				console.log('einsatztemperaturValue: ' + einsatztemperaturValue);
				$.each($('.piezokeramik_data'), function(key, value) {
					minimumTemperatur = getIntegerValue($(this).attr('data-einsatztemperatur_minimum'));
					maximumTemperatur = getIntegerValue($(this).attr('data-einsatztemperatur_maximum'));
					if ((einsatztemperaturValue >= minimumTemperatur) && (einsatztemperaturValue <= maximumTemperatur)) {
						$(this).addClass('valid');
					} else {
						$(this).addClass('invalid');
					}
				});
			}
			
			if (stellwegValue) {
				console.log('stellwegValue: ' + stellwegValue);
				$.each($('.piezokeramik_data'), function(key, value) {
					maximumStellweg = getIntegerValue($(this).attr('data-maximaler_stellweg'));
					if (maximumStellweg && (stellwegValue <= maximumStellweg)) {
						$(this).addClass('valid');
					} else {
						$(this).addClass('invalid');
					}
				});
			}
			
			if (aktorkraftValue) {
				console.log('aktorkraftValue: ' + aktorkraftValue);
				$.each($('.piezokeramik_data'), function(key, value) {
					maximumAktorkraft = getIntegerValue($(this).attr('data-aktorkraft'));
					if (maximumAktorkraft && (aktorkraftValue <= maximumAktorkraft)) {
						$(this).addClass('valid');
					} else {
						$(this).addClass('invalid');
					}
				});
			}
			
		}
		
		
	}
	
	// function to read a value from an element
	function getIntegerValue(valueString) {
		
		returnValue = false;
		
		if (valueString && valueString.length > 0) {
			returnValue = parseInt(valueString);
		}
		
		return returnValue;
	}
	
	// function to read parameter from url
	function getUrlParameter(sParam) {
		var sPageURL = decodeURIComponent(window.location.search.substring(1)),
			sURLVariables = sPageURL.split('&'),
			sParameterName,
			i;

		for (i = 0; i < sURLVariables.length; i++) {
			sParameterName = sURLVariables[i].split('=');

			if (sParameterName[0] === sParam) {
				return sParameterName[1] === undefined ? true : sParameterName[1];
			}
		}
	};

});
(function($){"use strict";
	var isHover = false;


	// collapse - page.jsFooterInline.5.2
	var collapse = $( ".collapse.show" );
	if ( collapse.length && window.location.hash ) {
		collapse.removeClass("show");
		var hashArr = window.location.hash.split('c'),
			coll = $('#collapse-'+hashArr[1]);
		if (coll.length) {
			$('#collapse-'+hashArr[1]).addClass('show');
			var offsetSize = 30;
			if ( $("#main-navbar").hasClass("fixed-top") || $("#main-navbar").hasClass("sticky-top") ) {
				offsetSize = $(".navbar").innerHeight()+30;
			}
			var collAnchor = '#collapse-'+hashArr[1];
			$("html, body").stop().animate({
				scrollTop: $(collAnchor).offset().top-offsetSize
			}, 1500, "easeInOutExpo");
		}
	}
	// collapsible active scroll. to top
	$('.collapse').on('shown.bs.collapse', function(e) {
	  var $card = $(this).closest('.card');
	  $('html,body').animate({
	    scrollTop: $card.offset().top-100
	  }, 500);
	});


	// news - improved back links - page.jsFooterInline.5.3
	if ($(".news-backlink-wrap a").length > 0) {
		if(document.referrer.indexOf(window.location.hostname) != -1) {
			var buttontext = $(".news-backlink-wrap a").text();
			$(".news-backlink-wrap a").attr("href","javascript:history.back();").text(buttontext);
		}
	}


	// lightbox - page.jsFooterInline.5.5
	baguetteBox.run(".gallery, .image-gallery");


	// dropdown menu - page.jsFooterInline.5.6
	$(".dropdown-menu a.dropdown-toggle").on("click", function() {
		if (!$(this).next().hasClass("show")) {
			$(this).parents(".dropdown-menu").first().find(".show").removeClass("show");
		}
		var $subMenu = $(this).next(".dropdown-menu");
		$subMenu.toggleClass("show");

		$(this).parents("li.nav-item.dropdown.show").on("hidden.bs.dropdown", function() {
			$(".dropdown-submenu .show").removeClass("show");
		});

		return false;
	});


	// sticky footer - page.jsFooterInline.5.9
	var footerHeight = $("#page-footer").outerHeight()-8,
		footerExtraHeight = 0;

	if ( footerExtraHeight > 0 ) {
		footerHeight += footerExtraHeight;
	}

	if ( $("#page-footer").hasClass("footer-sticky") ) {
		$("body").css("padding-bottom", footerHeight+"px");
	}


	// carousel - page.jsFooterInline.5.10
	var carousel = $( ".carousel .carousel-inner .carousel-item:first-child" );
	if ( carousel.length ) {
		carousel.addClass( "active" );
	}

	var cardSlider = $( ".carousel.card-slider" );
	if ( cardSlider.length ) {
		$(".carousel.card-slider").on("slide.bs.carousel", function(e) {
			var $e = $(e.relatedTarget);
			var idx = $e.index();
			var itemsPerSlide = 3;
			var totalItems = $(".carousel-item").length;
			if (idx >= totalItems - (itemsPerSlide - 1)) {
				var it = itemsPerSlide - (totalItems - idx);
				for (var i = 0; i < it; i++) {
					if (e.direction == "left") {
						$(".carousel-item")
						.eq(i)
						.appendTo(".carousel-inner");
					} else {
						$(".carousel-item")
						.eq(0)
						.appendTo(".carousel-inner");
					}
				}
			}
		});
	}


	// nav tab - page.jsFooterInline.5.12
	var tab = $( ".tab-content .tab-pane:first-child" );
	if ( tab.length ) {
		if ( window.location.hash ) {
			var tabHashArr = window.location.hash.split('c');
			$('.nav[role="tablist"] a[href="#tab-content-'+tabHashArr[1]+'"]').tab('show');
			var tabOffsetSize = 30;
			if ( $("#main-navbar").hasClass("fixed-top") || $("#main-navbar").hasClass("sticky-top") ) {
				tabOffsetSize = $(".navbar").innerHeight()+30;
			}
			var tabAnchor = '#tab-'+tabHashArr[1];
			$("html, body").stop().animate({
				scrollTop: $(tabAnchor).offset().top-tabOffsetSize
			}, 1500, "easeInOutExpo");
		} else {
			tab.addClass( "show active" );
		}
	}


	// Navbar hover - page.jsFooterInline.5.50
	function navbarHover() {
		isHover = true;
		$("ul.navbar-nav .dropdown, ul.navbar-nav .dropdown-submenu").hover(function() {
			$(this).find(" > .dropdown-menu").stop(true, true).delay(200).fadeIn();
			$(this).addClass("show");
			$(this).next(".dropdown-menu").addClass("show");
			$(this).next("a").attr("aria-expanded","true");
		}, function() {
			$(this).find(" > .dropdown-menu").stop(true, true).delay(200).fadeOut();
			$(this).removeClass("show");
			$(this).next(".dropdown-menu").removeClass("show");
			$(this).next("a").attr("aria-expanded","false");
		});
	}


	// Navbar hover - page.jsFooterInline.5.52 - md
	if ( $(window).width() > 768-1 ) {
		navbarHover();

	}

	// Clickable parent from dropdown menu - page.jsFooterInline.5.60
	$(".nav-item.dropdown a.nav-link.dropdown-toggle").on("click",function(e){
		if ($(this).next(".dropdown-menu").is(":visible")) {
			window.location = $(this).attr("href");
		}
	});

	$(".dropdown-submenu a.dropdown-item.dropdown-toggle").on("click", function() {
		if ($(this).next(".dropdown-menu").is(":hidden") || isHover) {
			window.location = $(this).attr("href");
		}
	});

	$("#submenu a.nav-link").on("click", function(e) {
		if ($(this).hasClass("active")) {
			e.preventDefault();
		} else {
			if ($(this).next(".collapse").is(":visible")) {
				$('#submenu').on('hide.bs.collapse', function (e) {
					e.preventDefault();
				});
				window.location = $(this).attr("href");
			}
		}
	});


})(jQuery);