/* Minification failed. Returning unminified contents.
(4578,491-498): run-time error JS1019: Can't have 'break' outside of loop: break n
(4578,252-259): run-time error JS1019: Can't have 'break' outside of loop: break n
(4563,46-53): run-time error JS1019: Can't have 'break' outside of loop: break n
 */
Array.prototype.remove=function(a,b){this.splice(a,!b||1+b-a+(!(b<0^a>=0)&&(b<0||-1)*this.length));return this.length;};String.prototype.toSentenceCase=function(){return this.substring(0,1).toUpperCase()+this.substring(1);};String.prototype.format=function(){if(arguments.length==0){return this;}var a,b=this;if(arguments.length>1){a=$.makeArray(arguments);}else{a=arguments;}$.each(a,function(c,d){b=b.replace(new RegExp("\\{"+c+"\\}","g"),d);});return b;};String.prototype.isNullOrEmpty=function(){if(this==null||this=="undefined"||$.trim(this).length==0){return true;}return false;};String.prototype.toBoolean=function(){if(this.toString()==="true"||this.toString()==="True"){return true;}return false;};String.prototype.toPrettyPrice=function(){var a=Number(this.replace(/,/gi,""));if(isNaN(a)){return this;}a=a.toFixed(2),x=a.toString().split("."),x1=x[0],x2=x.length>1?"."+x[1]:"",rgx=/(\d+)(\d{3})/;while(rgx.test(x1)){x1=x1.replace(rgx,"$1,$2");}return x1+x2;};String.prototype.toNormalNumber=function(){return this.replace(/,/gi,"");};String.prototype.toPrettyNumber=function(){var a=Number(this.toString().replace(/,/gi,""));if(isNaN(a)){return this;}var c=a.toString().split("."),d=c[0],e=c.length>1?"."+c[1]:"",b=/(\d+)(\d{3})/;while(b.test(d)){d=d.replace(b,"$1,$2");}return d+e;};function _debug(b,a,c){if(_mdebug){if(window.console){c=="e"?window.console.error(a,b):window.console.info("%c "+a,"background: #222; color: #bada55",b);}}}(function(a){a.props={width:0,height:0,$window:a(window),$body:a(document.body),doctitle:document.title,isFixed:false};if(!a.Res){a.Res={};}$body=a(document.body);a.setContentWidth=function(){a.props.width=a(window).width();a.props.height=a(window).height();};a(window).ready(function(){a.props.$body=a(document.body);jQuery.support.placeholder=(function(){var b=document.createElement("input");return"placeholder" in b;})();jQuery.support.touch=(function(){return"ontouchstart" in window||navigator.msMaxTouchPoints;})();a.setContentWidth();if(!a.props.isFixed){a(window).resize(a.setContentWidth);}});})(jQuery);(function(a){if(!a.Sh){a.Sh={};}a.Sh.toJson=function(g){if(g===""||g==null){return{};}var d=g.split("&"),h={};for(var e=0;e<d.length;e++){var c=d[e].split("="),f=c[0],k=c[1];if(h[f]!=null){if(!(h[f] instanceof Array)){var j=h[f];h[f]=[];h[f].push(j);}h[f].push(k);}else{h[f]=k;}}return h;};a.Sh.Ajax=function(d){var e=this.data("src")||this.attr("href");var f=this.data("style")||(this.attr("data-params")?"qs":"o");var c={url:e,style:f,type:this.data("method"),data:this.data("params"),dataType:this.data("datatype"),contentType:this.data("contentype"),onload:a.getFunction(this,"onload"),onloading:a.getFunction(this,"onloading"),onprepost:a.getFunction(this,"onprepost"),onprogress:a.getFunction(this,"onprogress"),onfinish:a.getFunction(this,"onfinish"),onfinally:a.getFunction(this,"onfinally"),onpost:a.getFunction(this,"onpost"),loadingcss:this.data("loadingcss"),trigger:this.data("trigger"),silent:this.data("silent")};this.ShAjax(a.extend(c,d));return this.data("sh.ajax");};a.Sh.Ajax.defaults={style:"o",type:"POST",dataType:"json",data:{},onload:null,onloading:function(c,d){c?this.addClass(a.Sh.Ajax.defaults.loadingcss):this.removeClass(a.Sh.Ajax.defaults.loadingcss);},onprepost:null,onprogress:null,onfinish:null,onfinally:null,onpost:function(c){_debug(c,"xhr");},loadingcss:"loadings",silent:false};var b=function(c,d){this.options=a.extend({},a.Sh.Ajax.defaults,d);this.element=c;this._IsLoading=false;this.init();};b.prototype={init:function(){var c=this;if(c.options.onload){c.options.onload.call(c.element);}if(c.options.style=="qs"){c.options.data=a.Sh.toJson(c.options.data);}else{if(c.options.style=="array"){c.options.data=a.Sh.toJson(a.param(c.options.data));}}if(!c.options.silent){if(c.options.trigger){c.element.on("click",c.options.trigger,function(d){return c._click(this,d);});}else{c.element.on("click",function(d){return c._click(this,d);});}}return c;},_click:function(g,f){var d=this;if(f.isDefaultPrevented()||d._IsLoading){return false;}var c=a(g);f.preventDefault();return d.ajax(c);},addparams:function(c,d){switch(d){case"qs":c=a.Sh.toJson(c);break;case"array":c=a.Sh.toJson(a.param(c));break;}this.options.data=a.extend({},this.options.data,c);},addtrigger:function(d){var c=this;d.on("click",function(f){return c._click(this,f);});},ajax:function(e){if(!e){e=this.element;}var d=this;if(d.options.onprepost){if(!d.options.onprepost.call(d,e)){return false;}}d.options.onloading.call(d.element,true,e);_debug(d.options.data,"data sent");_debug(d.options.url,"source");d._IsLoading=true;var c={success:function(g,h){if(d.options.dataType!="html"){_debug(g,"data received");}else{_debug({content:g},"content received");}if(d.options.onfinish){d.options.onfinish.call(d.element,g,e);}},error:function(g,h){if(!h){_debug(g.responseJSON||g.responseText,"error");if(d.options.onfinish){d.options.onfinish.call(d.element,d.options.dataType=="json"?g.responseJSON:g.responseText,e);}}},xhr:function(){myXhr=a.ajaxSettings.xhr();if(myXhr.upload){myXhr.upload.addEventListener("progress",d.options.onprogress,false,e);}return myXhr;},complete:function(h,g){d.options.onloading.call(d.element,false,e);d._IsLoading=false;if(d.options.onfinally){d.options.onfinally.call(d.element,d.options.dataType=="json"?h.responseJSON:h.responseText,g,e);}}};var f=a.ajax(a.extend(c,d.options));d.options.onpost.call(d,f);return d;}};a.fn.ShAjax=function(c){return this.each(function(){if(!a(this).data("sh.ajax")){a(this).data("sh.ajax",new b(a(this),c));}});};})(jQuery);(function(a){if(!a.Sh){a.Sh={};}a.Sh.Submit=function(e){var d={successcode:this.data("success-code"),trigger:this.data("trigger"),onprepost:a.getFunction(this,"onprepost")};this.ShSubmit(a.extend(d,e));return this.data("sh.submit");};a.Sh.Submit.defaults={successcode:"DONE"};var c=function(d,e){this.options=a.extend({},a.Sh.Submit.defaults,e);this.element=d;this.Ajax=null;this.init();};c.prototype={init:function(){var d=this;this.Ajax=a.Sh.Ajax.call(this.element,{trigger:d.options.trigger,onprepost:function(g){a.BodyLabel("hide");var e=this.options.style=="array"?d.element.formToArray(true):d.element.formToJson();this.addparams(e,this.options.style);return(d.options.onprepost)?d.options.onprepost.call(d,g):true;},onloading:function(e){if(e){a.BodyLabel("hide");this.addClass("loadings");}else{this.removeClass("loadings");}},onfinish:function(e){if(e.result){a.BodyLabel(d.options.successcode,{css:"gbodybox"});}else{a.BodyLabel(e.errorCode,{css:"gerrorbox",sticky:true});}}});return this;}};a.fn.ShSubmit=function(d){return this.each(function(){if(!a(this).data("sh.submit")){a(this).data("sh.submit",new c(a(this),d));}});};a.Sh.Delete=function(e){var d={successcode:this.data("success-code"),onafterremove:a.getFunction(this,"onafterremove"),which:this.data("which")};this.ShDelete(a.extend(d,e));return this.data("sh.delete");};a.Sh.Delete.defaults={successcode:"DELETED",which:"li"};var b=function(d,e){this.element=d;this.Ajax=null;this.init(e);};b.prototype={init:function(e){this.options=a.extend({},a.Sh.Delete.defaults,e);var d=this;this.Ajax=a.Sh.Ajax.call(this.element,{onloading:function(f){if(f){a.BodyLabel("hide");this.addClass("loadings");}else{this.removeClass("loadings");}},onfinish:function(f){if(f.result){setTimeout(function(){d.element.closest(d.options.which).fadeOut(500,function(){a(this).remove();a.BodyLabel(d.options.successcode,{css:"gbodybox"});if(d.options.onafterremove){d.options.onafterremove.call(d,f);}});},10);}else{a.BodyLabel(f.errorCode,{css:"gerrorbox",sticky:true});}}});return this;}};a.fn.ShDelete=function(d){return this.each(function(){if(!a(this).data("sh.delete")){a(this).data("sh.delete",new b(a(this),d));}});};})(jQuery);(function(a){if(!a.Sh){a.Sh={};}a.Sh.Autocomplete=function(d){var c={source:this.data("source"),method:this.data("method"),target:this.data("target"),context:this.data("context"),isInline:this.data("inline"),minLength:this.data("min-chars"),noCache:this.data("nocache"),onchange:a.getFunction(this,"onchange"),onresponse:a.getFunction(this,"onresponse"),onselect:a.getFunction(this,"onselect"),onblur:a.getFunction(this,"onblur")};this.ShAutocomplete(a.extend(c,d));return a(this).data("sh.autocomplete");};a.Sh.Autocomplete.defaults={minLength:0,context:a.props.$body,method:"GET"};var b=function(c,d){this.options=a.extend({},a.Sh.Autocomplete.defaults,d);this.element=c;this.target=a(this.options.target,this.options.context);this.cache={};this.init();};b.prototype={init:function(){var d=this,e;if(d.options.isInline){e=this.options.source;}else{var c=a.Sh.Ajax.call(d.element,{method:d.options.method,silent:true,url:d.options.source});e=function(f,g){if(!d.options.noCache&&f.term in d.cache){g(d.cache[f.term]);return;}c.addparams({kw:f.term});c.options.onfinish=function(h){d.cache[f.term]=h.d;g(h.d);};c.ajax();};}this.element.autocomplete({source:e,minLength:d.options.minLength,select:function(f,g){_debug(g.item,"item");if(g.item){d.element.val(g.item.value);d.target.ShVal(g.item.dbid);if(d.options.onselect){d.options.onselect.call(d.element,g.item);}return false;}},change:function(f,g){if(g.item==null){g.item={currentValue:d.element.val()};d.element.val("");d.target.ShVal(null);}if(d.options.onchange){d.options.onchange.call(d.element,g.item);}},response:function(f,g){if(d.options.onresponse){d.options.onresponse.call(d.element,g.content);}}}).blur(function(){if(d.element.ShTrim()==""){d.target.ShVal(null);}if(d.options.onblur){d.options.onblur.call(d.element);}});this.element.one("input",function(g){var f=a(this);var h=f.val();f.val("");setTimeout(function(){f.val(h);},500);});this.element.trigger("input");return this;},changeTarget:function(d,c){this.options.target=d;if(c){this.options.context=c;}this.target=a(d,this.options.context);}};a.fn.ShAutocomplete=function(c){return this.each(function(){if(!a(this).data("sh.autocomplete")){a(this).data("sh.autocomplete",new b(a(this),c));}});};})(jQuery);(function(a){a.fn.autogrow=function(f){function e(h){var k=a(this),g=k.innerHeight(),l=k.prop("scrollHeight"),j=k.data("autogrow-start-height")||0,m;if(g<l){this.scrollTop=0;f.animate?k.stop().animate({height:l},f.speed):k.innerHeight(l);}else{if(!h||h.which==8||h.which==46||h.ctrlKey&&h.which==88){if(g>j){m=k.clone().addClass(f.cloneClass).css({position:"absolute",zIndex:-10}).val(k.val());k.after(m);do{l=m[0].scrollHeight-1;m.innerHeight(l);}while(l===m[0].scrollHeight);l++;m.remove();l<j&&(l=j);g>l&&f.animate?k.stop().animate({height:l},f.speed):k.innerHeight(l);}else{k.innerHeight(j);}}}}var c=a(this).css({overflow:"hidden",resize:"none"}),d=c.selector,b={context:a(document),animate:true,speed:200,fixMinHeight:true,cloneClass:"autogrowclone",onInitialize:false};f=a.isPlainObject(f)?f:{context:f?f:a(document)};f=a.extend({},b,f);c.each(function(h,k){var g,j;k=a(k);if(k.is(":visible")||parseInt(k.css("height"),10)>0){g=parseInt(k.css("height"),10)||k.innerHeight();}else{j=k.clone().addClass(f.cloneClass).val(k.val()).css({position:"absolute",visibility:"hidden",display:"block"});a("body").append(j);g=j.innerHeight();j.remove();}if(f.fixMinHeight){k.data("autogrow-start-height",g);}k.css("height",g);if(f.onInitialize){e.call(k);}});f.context.on("keyup paste",d,e);};})(jQuery);(function(a){if(!a.Sh){a.Sh={};}a.Sh.AutoGrow=function(){var c=this.data("fixed-minimum")||false,b=this.data("animate")||false,d=this.data("init")||false;this.autogrow({fixMinHeight:c,context:this,animate:b,onInitialize:d});};})(jQuery);(function(a){a.props._BehaviorsReady=false;var b=function(d){try{if(a.Sh[d]&&typeof(a.Sh[d])=="function"){return a.Sh[d];}else{if(window[d]&&typeof(window[d])=="function"){return window[d];}}_debug(d,"Behavior is missing","e");return null;}catch(c){_debug(d,"Behavior","e");_debug(c,"Error","e");return null;}};a.getFunction=function(c,d){var d=c.data(d);if(!d||d==null){return undefined;}if(a.UiSh[d]&&typeof(a.UiSh[d])=="function"){return a.UiSh[d];}return d;};a.popbasket=[];a.Behaviors=function(d,e){var c;if(d==null){c=a("[data-behavior]");}else{c=e?a("[data-behavior]",d):jQuery.merge(d.filter("[data-behavior]"),a("[data-behavior]",d));}a.each(c,function(h,j){var f=a(this);var g=f.attr("data-behavior").split(",");a.each(g,function(l,m){var k=b(m);k?k.call(f):null;});});a.props.$body.trigger("BehaviorsReady",[d]);};a.fn.ApplyBehavior=function(d){var e=d.split(",");var c=a(this);a.each(e,function(g,h){var f=b(h);f?f.call(c):null;});return this;};a.ShRewire=function(c,d){a.Behaviors(c,d);if(a.Sh.Modals){a.Sh.Modals.rewire(c);}if(a.rewireload!=null&&typeof a.rewireload=="function"){a.rewireload(c);}};a.OnDocumentClick=function(c,d){c.data("ondocumentclick",d);a.popbasket.push(c);};a(function(){a.Behaviors();a.props._BehaviorsReady=true;a(window.document).on("click",function(c){a.each(a.popbasket,function(e,f){var d=a.getFunction(f,"ondocumentclick");d&&d.call(f,c);});});});})(jQuery);(function(){var a,e,f,g,d,c={}.hasOwnProperty,b=function(h,k){for(var j in k){if(c.call(k,j)){h[j]=k[j];}}function i(){this.constructor=h;}i.prototype=k.prototype;h.prototype=new i();h.__super__=k.prototype;return h;};g=(function(){function h(){this.options_index=0;this.parsed=[];}h.prototype.add_node=function(i){if(i.nodeName.toUpperCase()==="OPTGROUP"){return this.add_group(i);}else{return this.add_option(i);}};h.prototype.add_group=function(m){var n,o,i,j,k,l;n=this.parsed.length;this.parsed.push({array_index:n,group:true,label:this.escapeExpression(m.label),children:0,disabled:m.disabled});k=m.childNodes;l=[];for(i=0,j=k.length;i<j;i++){o=k[i];l.push(this.add_option(o,n,m.disabled));}return l;};h.prototype.add_option=function(k,j,i){if(k.nodeName.toUpperCase()==="OPTION"){if(k.text!==""){if(j!=null){this.parsed[j].children+=1;}this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:k.value,text:k.text,html:k.innerHTML,selected:k.selected,disabled:i===true?i:k.disabled,group_array_index:j,classes:k.className,style:k.style.cssText});}else{this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:true});}return this.options_index+=1;}};h.prototype.escapeExpression=function(j){var i,k;if((j==null)||j===false){return"";}if(!/[\&\<\>\"\'\`]/.test(j)){return j;}i={"<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"};k=/&(?!\w+;)|[\<\>\"\'\`]/g;return j.replace(k,function(l){return i[l]||"&amp;";});};return h;})();g.select_to_array=function(m){var k,l,h,i,j;l=new g();j=m.childNodes;for(h=0,i=j.length;h<i;h++){k=j[h];l.add_node(k);}return l.parsed;};e=(function(){function h(i,j){this.form_field=i;this.options=j!=null?j:{};if(!h.browser_is_supported()){return;}this.is_multiple=this.form_field.multiple;this.set_default_text();this.set_default_values();this.setup();this.set_up_html();this.register_observers();}h.prototype.set_default_values=function(){var i=this;this.click_test_action=function(j){return i.test_active_click(j);};this.activate_action=function(j){return i.activate_field(j);};this.active_field=false;this.mouse_on_container=false;this.results_showing=false;this.result_highlighted=null;this.allow_single_deselect=(this.options.allow_single_deselect!=null)&&(this.form_field.options[0]!=null)&&this.form_field.options[0].text===""?this.options.allow_single_deselect:false;this.disable_search_threshold=this.options.disable_search_threshold||0;this.disable_search=this.options.disable_search||false;this.enable_split_word_search=this.options.enable_split_word_search!=null?this.options.enable_split_word_search:true;this.group_search=this.options.group_search!=null?this.options.group_search:true;this.search_contains=this.options.search_contains||false;this.single_backstroke_delete=this.options.single_backstroke_delete!=null?this.options.single_backstroke_delete:true;this.max_selected_options=this.options.max_selected_options||Infinity;this.inherit_select_classes=this.options.inherit_select_classes||false;this.display_selected_options=this.options.display_selected_options!=null?this.options.display_selected_options:true;return this.display_disabled_options=this.options.display_disabled_options!=null?this.options.display_disabled_options:true;};h.prototype.set_default_text=function(){if(this.form_field.getAttribute("data-placeholder")){this.default_text=this.form_field.getAttribute("data-placeholder");}else{if(this.is_multiple){this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||h.default_multiple_text;}else{this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||h.default_single_text;}}return this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||h.default_no_result_text;};h.prototype.mouse_enter=function(){return this.mouse_on_container=true;};h.prototype.mouse_leave=function(){return this.mouse_on_container=false;};h.prototype.input_focus=function(j){var i=this;if(this.is_multiple){if(!this.active_field){return setTimeout((function(){return i.container_mousedown();}),50);}}else{if(!this.active_field){return this.activate_field();}}};h.prototype.input_blur=function(j){var i=this;if(!this.mouse_on_container){this.active_field=false;return setTimeout((function(){return i.blur_test();}),100);}};h.prototype.results_option_build=function(n){var l,m,i,j,k;l="";k=this.results_data;for(i=0,j=k.length;i<j;i++){m=k[i];if(m.group){l+=this.result_add_group(m);}else{l+=this.result_add_option(m);}if(n!=null?n.first:void 0){if(m.selected&&this.is_multiple){this.choice_build(m);}else{if(m.selected&&!this.is_multiple){this.single_set_selected_text(m.text);}}}}return l;};h.prototype.result_add_option=function(j){var i,k;if(!j.search_match){return"";}if(!this.include_option_in_results(j)){return"";}i=[];if(!j.disabled&&!(j.selected&&this.is_multiple)){i.push("active-result");}if(j.disabled&&!(j.selected&&this.is_multiple)){i.push("disabled-result");}if(j.selected){i.push("result-selected");}if(j.group_array_index!=null){i.push("group-option");}if(j.classes!==""){i.push(j.classes);}k=document.createElement("li");k.className=i.join(" ");k.style.cssText=j.style;k.setAttribute("data-option-array-index",j.array_index);k.innerHTML=j.search_text;return this.outerHTML(k);};h.prototype.result_add_group=function(i){var j;if(!(i.search_match||i.group_match)){return"";}if(!(i.active_options>0)){return"";}j=document.createElement("li");j.className="group-result";j.innerHTML=i.search_text;return this.outerHTML(j);};h.prototype.results_update_field=function(){this.set_default_text();if(!this.is_multiple){this.results_reset_cleanup();}this.result_clear_highlight();this.results_build();if(this.results_showing){return this.winnow_results();}};h.prototype.reset_single_select_options=function(){var m,i,j,k,l;k=this.results_data;l=[];for(i=0,j=k.length;i<j;i++){m=k[i];if(m.selected){l.push(m.selected=false);}else{l.push(void 0);}}return l;};h.prototype.results_toggle=function(){if(this.results_showing){return this.results_hide();}else{return this.results_show();}};h.prototype.results_search=function(i){if(this.results_showing){return this.winnow_results();}else{return this.results_show();}};h.prototype.winnow_results=function(){var l,m,n,o,p,q,r,s,t,u,i,j,k;this.no_results_clear();p=0;r=this.get_search_text();l=r.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");o=this.search_contains?"":"^";n=new RegExp(o+l,"i");u=new RegExp(l,"i");k=this.results_data;for(i=0,j=k.length;i<j;i++){m=k[i];m.search_match=false;q=null;if(this.include_option_in_results(m)){if(m.group){m.group_match=false;m.active_options=0;}if((m.group_array_index!=null)&&this.results_data[m.group_array_index]){q=this.results_data[m.group_array_index];if(q.active_options===0&&q.search_match){p+=1;}q.active_options+=1;}if(!(m.group&&!this.group_search)){m.search_text=m.group?m.label:m.html;m.search_match=this.search_string_match(m.search_text,n);if(m.search_match&&!m.group){p+=1;}if(m.search_match){if(r.length){s=m.search_text.search(u);t=m.search_text.substr(0,s+r.length)+"</em>"+m.search_text.substr(s+r.length);m.search_text=t.substr(0,s)+"<em>"+t.substr(s);}if(q!=null){q.group_match=true;}}else{if((m.group_array_index!=null)&&this.results_data[m.group_array_index].search_match){m.search_match=true;}}}}}this.result_clear_highlight();if(p<1&&r.length){this.update_results_content("");return this.no_results(r);}else{this.update_results_content(this.results_option_build());return this.winnow_results_set_highlight();}};h.prototype.search_string_match=function(n,m){var k,l,i,j;if(m.test(n)){return true;}else{if(this.enable_split_word_search&&(n.indexOf(" ")>=0||n.indexOf("[")===0)){l=n.replace(/\[|\]/g,"").split(" ");if(l.length){for(i=0,j=l.length;i<j;i++){k=l[i];if(m.test(k)){return true;}}}}}};h.prototype.choices_count=function(){var l,i,j,k;if(this.selected_option_count!=null){return this.selected_option_count;}this.selected_option_count=0;k=this.form_field.options;for(i=0,j=k.length;i<j;i++){l=k[i];if(l.selected){this.selected_option_count+=1;}}return this.selected_option_count;};h.prototype.choices_click=function(i){i.preventDefault();if(!(this.results_showing||this.is_disabled)){return this.results_show();}};h.prototype.keyup_checker=function(j){var k,i;k=(i=j.which)!=null?i:j.keyCode;this.search_field_scale();switch(k){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0){return this.keydown_backstroke();}else{if(!this.pending_backstroke){this.result_clear_highlight();return this.results_search();}}break;case 13:j.preventDefault();if(this.results_showing){return this.result_select(j);}break;case 27:if(this.results_showing){this.results_hide();}return true;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search();}};h.prototype.clipboard_event_checker=function(j){var i=this;return setTimeout((function(){return i.results_search();}),50);};h.prototype.container_width=function(){if(this.options.width!=null){return this.options.width;}else{return""+a(this.form_field).outerWidth()+"px";}};h.prototype.include_option_in_results=function(i){if(this.is_multiple&&(!this.display_selected_options&&i.selected)){return false;}if(!this.display_disabled_options&&i.disabled){return false;}if(i.empty){return false;}return true;};h.prototype.search_results_touchstart=function(i){this.touch_started=true;return this.search_results_mouseover(i);};h.prototype.search_results_touchmove=function(i){this.touch_started=false;return this.search_results_mouseout(i);};h.prototype.search_results_touchend=function(i){if(this.touch_started){return this.search_results_mouseup(i);}};h.prototype.outerHTML=function(i){var j;if(i.outerHTML){return i.outerHTML;}j=document.createElement("div");j.appendChild(i);return j.innerHTML;};h.browser_is_supported=function(){if(window.navigator.appName==="Microsoft Internet Explorer"){return document.documentMode>=8;}if(/iP(od|hone)/i.test(window.navigator.userAgent)){return false;}if(/Android/i.test(window.navigator.userAgent)){if(/Mobile/i.test(window.navigator.userAgent)){return false;}}return true;};h.default_multiple_text="Select Some Options";h.default_single_text="Select an Option";h.default_no_result_text="No results match";return h;})();a=jQuery;a.fn.extend({chosen:function(h){if(!e.browser_is_supported()){return this;}return this.each(function(k){var i,j;i=a(this);j=i.data("chosen");if(h==="destroy"&&j){j.destroy();}else{if(!j){i.data("chosen",new f(this,h));}}});}});f=(function(h){b(i,h);function i(){d=i.__super__.constructor.apply(this,arguments);return d;}i.prototype.setup=function(){this.form_field_jq=a(this.form_field);this.current_selectedIndex=this.form_field.selectedIndex;return this.is_rtl=this.form_field_jq.hasClass("chosen-rtl");};i.prototype.set_up_html=function(){var j,k;j=["chosen-container"];j.push("chosen-container-"+(this.is_multiple?"multi":"single"));if(this.inherit_select_classes&&this.form_field.className){j.push(this.form_field.className);}if(this.is_rtl){j.push("chosen-rtl");}k={"class":j.join(" "),style:"width: "+(this.container_width())+";",title:this.form_field.title};if(this.form_field.id.length){k.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen";}this.container=a("<div />",k);if(this.is_multiple){this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="'+this.default_text+'" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>');}else{this.container.html('<a class="chosen-single chosen-default" tabindex="-1"><span>'+this.default_text+'</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>');}this.form_field_jq.hide().after(this.container);this.dropdown=this.container.find("div.chosen-drop").first();this.search_field=this.container.find("input").first();this.search_results=this.container.find("ul.chosen-results").first();this.search_field_scale();this.search_no_results=this.container.find("li.no-results").first();if(this.is_multiple){this.search_choices=this.container.find("ul.chosen-choices").first();this.search_container=this.container.find("li.search-field").first();}else{this.search_container=this.container.find("div.chosen-search").first();this.selected_item=this.container.find(".chosen-single").first();}this.results_build();this.set_tab_index();this.set_label_behavior();return this.form_field_jq.trigger("chosen:ready",{chosen:this});};i.prototype.register_observers=function(){var j=this;this.container.bind("mousedown.chosen",function(k){j.container_mousedown(k);});this.container.bind("mouseup.chosen",function(k){j.container_mouseup(k);});this.container.bind("mouseenter.chosen",function(k){j.mouse_enter(k);});this.container.bind("mouseleave.chosen",function(k){j.mouse_leave(k);});this.search_results.bind("mouseup.chosen",function(k){j.search_results_mouseup(k);});this.search_results.bind("mouseover.chosen",function(k){j.search_results_mouseover(k);});this.search_results.bind("mouseout.chosen",function(k){j.search_results_mouseout(k);});this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(k){j.search_results_mousewheel(k);});this.search_results.bind("touchstart.chosen",function(k){j.search_results_touchstart(k);});this.search_results.bind("touchmove.chosen",function(k){j.search_results_touchmove(k);});this.search_results.bind("touchend.chosen",function(k){j.search_results_touchend(k);});this.form_field_jq.bind("chosen:updated.chosen",function(k){j.results_update_field(k);});this.form_field_jq.bind("chosen:activate.chosen",function(k){j.activate_field(k);});this.form_field_jq.bind("chosen:open.chosen",function(k){j.container_mousedown(k);});this.form_field_jq.bind("chosen:close.chosen",function(k){j.input_blur(k);});this.search_field.bind("blur.chosen",function(k){j.input_blur(k);});this.search_field.bind("keyup.chosen",function(k){j.keyup_checker(k);});this.search_field.bind("keydown.chosen",function(k){j.keydown_checker(k);});this.search_field.bind("focus.chosen",function(k){j.input_focus(k);});this.search_field.bind("cut.chosen",function(k){j.clipboard_event_checker(k);});this.search_field.bind("paste.chosen",function(k){j.clipboard_event_checker(k);});if(this.is_multiple){return this.search_choices.bind("click.chosen",function(k){j.choices_click(k);});}else{return this.container.bind("click.chosen",function(k){k.preventDefault();});}};i.prototype.destroy=function(){a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action);if(this.search_field[0].tabIndex){this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex;}this.container.remove();this.form_field_jq.removeData("chosen");return this.form_field_jq.show();};i.prototype.search_field_disabled=function(){this.is_disabled=this.form_field_jq[0].disabled;if(this.is_disabled){this.container.addClass("chosen-disabled");this.search_field[0].disabled=true;if(!this.is_multiple){this.selected_item.unbind("focus.chosen",this.activate_action);}return this.close_field();}else{this.container.removeClass("chosen-disabled");this.search_field[0].disabled=false;if(!this.is_multiple){return this.selected_item.bind("focus.chosen",this.activate_action);}}};i.prototype.container_mousedown=function(j){if(!this.is_disabled){if(j&&j.type==="mousedown"&&!this.results_showing){j.preventDefault();}if(!((j!=null)&&(a(j.target)).hasClass("search-choice-close"))){if(!this.active_field){if(this.is_multiple){this.search_field.val("");}a(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action);this.results_show();}else{if(!this.is_multiple&&j&&((a(j.target)[0]===this.selected_item[0])||a(j.target).parents("a.chosen-single").length)){j.preventDefault();this.results_toggle();}}return this.activate_field();}}};i.prototype.container_mouseup=function(j){if(j.target.nodeName==="ABBR"&&!this.is_disabled){return this.results_reset(j);}};i.prototype.search_results_mousewheel=function(k){var j;if(k.originalEvent){j=-k.originalEvent.wheelDelta||k.originalEvent.detail;}if(j!=null){k.preventDefault();if(k.type==="DOMMouseScroll"){j=j*40;}return this.search_results.scrollTop(j+this.search_results.scrollTop());}};i.prototype.blur_test=function(j){if(!this.active_field&&this.container.hasClass("chosen-container-active")){return this.close_field();}};i.prototype.close_field=function(){a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action);this.active_field=false;this.results_hide();this.container.removeClass("chosen-container-active");this.clear_backstroke();this.show_search_field_default();return this.search_field_scale();};i.prototype.activate_field=function(){this.container.addClass("chosen-container-active");this.active_field=true;this.search_field.val(this.search_field.val());return this.search_field.focus();};i.prototype.test_active_click=function(k){var j;j=a(k.target).closest(".chosen-container");if(j.length&&this.container[0]===j[0]){return this.active_field=true;}else{return this.close_field();}};i.prototype.results_build=function(){this.parsing=true;this.selected_option_count=null;this.results_data=g.select_to_array(this.form_field);if(this.is_multiple){this.search_choices.find("li.search-choice").remove();}else{if(!this.is_multiple){this.single_set_selected_text();if(this.disable_search||this.form_field.options.length<=this.disable_search_threshold){this.search_field[0].readOnly=true;this.container.addClass("chosen-container-single-nosearch");}else{this.search_field[0].readOnly=false;this.container.removeClass("chosen-container-single-nosearch");}}}this.update_results_content(this.results_option_build({first:true}));this.search_field_disabled();this.show_search_field_default();this.search_field_scale();return this.parsing=false;};i.prototype.result_do_highlight=function(j){var k,l,m,n,o;if(j.length){this.result_clear_highlight();this.result_highlight=j;this.result_highlight.addClass("highlighted");m=parseInt(this.search_results.css("maxHeight"),10);o=this.search_results.scrollTop();n=m+o;l=this.result_highlight.position().top+this.search_results.scrollTop();k=l+this.result_highlight.outerHeight();if(k>=n){return this.search_results.scrollTop((k-m)>0?k-m:0);}else{if(l<o){return this.search_results.scrollTop(l);}}}};i.prototype.result_clear_highlight=function(){if(this.result_highlight){this.result_highlight.removeClass("highlighted");}return this.result_highlight=null;};i.prototype.results_show=function(){if(this.is_multiple&&this.max_selected_options<=this.choices_count()){this.form_field_jq.trigger("chosen:maxselected",{chosen:this});return false;}this.container.addClass("chosen-with-drop");this.results_showing=true;this.search_field.focus();this.search_field.val(this.search_field.val());this.winnow_results();return this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this});};i.prototype.update_results_content=function(j){return this.search_results.html(j);};i.prototype.results_hide=function(){if(this.results_showing){this.result_clear_highlight();this.container.removeClass("chosen-with-drop");this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this});}return this.results_showing=false;};i.prototype.set_tab_index=function(j){var k;if(this.form_field.tabIndex){k=this.form_field.tabIndex;this.form_field.tabIndex=-1;return this.search_field[0].tabIndex=k;}};i.prototype.set_label_behavior=function(){var j=this;this.form_field_label=this.form_field_jq.parents("label");if(!this.form_field_label.length&&this.form_field.id.length){this.form_field_label=a("label[for='"+this.form_field.id+"']");}if(this.form_field_label.length>0){return this.form_field_label.bind("click.chosen",function(k){if(j.is_multiple){return j.container_mousedown(k);}else{return j.activate_field();}});}};i.prototype.show_search_field_default=function(){if(this.is_multiple&&this.choices_count()<1&&!this.active_field){this.search_field.val(this.default_text);return this.search_field.addClass("default");}else{this.search_field.val("");return this.search_field.removeClass("default");}};i.prototype.search_results_mouseup=function(j){var k;k=a(j.target).hasClass("active-result")?a(j.target):a(j.target).parents(".active-result").first();if(k.length){this.result_highlight=k;this.result_select(j);return this.search_field.focus();}};i.prototype.search_results_mouseover=function(j){var k;k=a(j.target).hasClass("active-result")?a(j.target):a(j.target).parents(".active-result").first();if(k){return this.result_do_highlight(k);}};i.prototype.search_results_mouseout=function(j){if(a(j.target).hasClass("active-result"||a(j.target).parents(".active-result").first())){return this.result_clear_highlight();}};i.prototype.choice_build=function(m){var k,l,j=this;k=a("<li />",{"class":"search-choice"}).html("<span>"+m.html+"</span>");if(m.disabled){k.addClass("search-choice-disabled");}else{l=a("<a />",{"class":"search-choice-close","data-option-array-index":m.array_index});l.bind("click.chosen",function(n){return j.choice_destroy_link_click(n);});k.append(l);}return this.search_container.before(k);};i.prototype.choice_destroy_link_click=function(j){j.preventDefault();j.stopPropagation();if(!this.is_disabled){return this.choice_destroy(a(j.target));}};i.prototype.choice_destroy=function(j){if(this.result_deselect(j[0].getAttribute("data-option-array-index"))){this.show_search_field_default();if(this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1){this.results_hide();}j.parents("li").first().remove();return this.search_field_scale();}};i.prototype.results_reset=function(){this.reset_single_select_options();this.form_field.options[0].selected=true;this.single_set_selected_text();this.show_search_field_default();this.results_reset_cleanup();this.form_field_jq.trigger("change");if(this.active_field){return this.results_hide();}};i.prototype.results_reset_cleanup=function(){this.current_selectedIndex=this.form_field.selectedIndex;return this.selected_item.find("abbr").remove();};i.prototype.result_select=function(j){var k,l;if(this.result_highlight){k=this.result_highlight;this.result_clear_highlight();if(this.is_multiple&&this.max_selected_options<=this.choices_count()){this.form_field_jq.trigger("chosen:maxselected",{chosen:this});return false;}if(this.is_multiple){k.removeClass("active-result");}else{this.reset_single_select_options();}l=this.results_data[k[0].getAttribute("data-option-array-index")];l.selected=true;this.form_field.options[l.options_index].selected=true;this.selected_option_count=null;if(this.is_multiple){this.choice_build(l);}else{this.single_set_selected_text(l.text);}if(!((j.metaKey||j.ctrlKey)&&this.is_multiple)){this.results_hide();}this.search_field.val("");if(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex){this.form_field_jq.trigger("change",{selected:this.form_field.options[l.options_index].value});}this.current_selectedIndex=this.form_field.selectedIndex;return this.search_field_scale();}};i.prototype.single_set_selected_text=function(j){if(j==null){j=this.default_text;}if(j===this.default_text){this.selected_item.addClass("chosen-default");}else{this.single_deselect_control_build();this.selected_item.removeClass("chosen-default");}return this.selected_item.find("span").text(j);};i.prototype.result_deselect=function(j){var k;k=this.results_data[j];if(!this.form_field.options[k.options_index].disabled){k.selected=false;this.form_field.options[k.options_index].selected=false;this.selected_option_count=null;this.result_clear_highlight();if(this.results_showing){this.winnow_results();}this.form_field_jq.trigger("change",{deselected:this.form_field.options[k.options_index].value});this.search_field_scale();return true;}else{return false;}};i.prototype.single_deselect_control_build=function(){if(!this.allow_single_deselect){return;}if(!this.selected_item.find("abbr").length){this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>');}return this.selected_item.addClass("chosen-single-with-deselect");};i.prototype.get_search_text=function(){if(this.search_field.val()===this.default_text){return"";}else{return a("<div/>").text(a.trim(this.search_field.val())).html();}};i.prototype.winnow_results_set_highlight=function(){var j,k;k=!this.is_multiple?this.search_results.find(".result-selected.active-result"):[];j=k.length?k.first():this.search_results.find(".active-result").first();if(j!=null){return this.result_do_highlight(j);}};i.prototype.no_results=function(k){var j;j=a('<li class="no-results">'+this.results_none_found+' "<span></span>"</li>');j.find("span").first().html(k);this.search_results.append(j);return this.form_field_jq.trigger("chosen:no_results",{chosen:this});};i.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove();};i.prototype.keydown_arrow=function(){var j;if(this.results_showing&&this.result_highlight){j=this.result_highlight.nextAll("li.active-result").first();if(j){return this.result_do_highlight(j);}}else{return this.results_show();}};i.prototype.keyup_arrow=function(){var j;if(!this.results_showing&&!this.is_multiple){return this.results_show();}else{if(this.result_highlight){j=this.result_highlight.prevAll("li.active-result");if(j.length){return this.result_do_highlight(j.first());}else{if(this.choices_count()>0){this.results_hide();}return this.result_clear_highlight();}}}};i.prototype.keydown_backstroke=function(){var j;if(this.pending_backstroke){this.choice_destroy(this.pending_backstroke.find("a").first());return this.clear_backstroke();}else{j=this.search_container.siblings("li.search-choice").last();if(j.length&&!j.hasClass("search-choice-disabled")){this.pending_backstroke=j;if(this.single_backstroke_delete){return this.keydown_backstroke();}else{return this.pending_backstroke.addClass("search-choice-focus");}}}};i.prototype.clear_backstroke=function(){if(this.pending_backstroke){this.pending_backstroke.removeClass("search-choice-focus");}return this.pending_backstroke=null;};i.prototype.keydown_checker=function(k){var l,j;l=(j=k.which)!=null?j:k.keyCode;this.search_field_scale();if(l!==8&&this.pending_backstroke){this.clear_backstroke();}switch(l){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:if(this.results_showing&&!this.is_multiple){this.result_select(k);}this.mouse_on_container=false;break;case 13:k.preventDefault();break;case 38:k.preventDefault();this.keyup_arrow();break;case 40:k.preventDefault();this.keydown_arrow();break;}};i.prototype.search_field_scale=function(){var l,m,n,o,p,q,r,j,k;if(this.is_multiple){n=0;r=0;p="position:absolute; left: -1000px; top: -1000px; display:none;";q=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"];for(j=0,k=q.length;j<k;j++){o=q[j];p+=o+":"+this.search_field.css(o)+";";}l=a("<div />",{style:p});l.text(this.search_field.val());a("body").append(l);r=l.width()+25;l.remove();m=this.container.outerWidth();if(r>m-10){r=m-10;}return this.search_field.css({width:r+"px"});}};return i;})(e);}).call(this);(function(a){if(!a.Sh){a.Sh={};}if(!a.Res){a.Res={};}a.Sh.Chosen=function(d){var c={dselect:this.data("deselect"),nosearh:this.data("nosearch"),threshold:this.data("threshold"),noresults:this.data("noresults"),width:this.data("width")};this.ShChosen(a.extend(c,d));};a.Sh.Chosen.defaults={threshold:1,noresults:a.Res.NoResults};var b=function(d,e){this.element=d;this.options=a.extend({},a.Sh.Chosen.defaults,e);if(this.options.dselect){var c=a("<option></option>").prependTo(this.element);if(!this.element.find("option[selected]").length){this.element.get(0).selectedIndex=0;}}this.element.chosen({allow_single_deselect:this.options.dselect,disable_search:this.options.nosearch,disable_search_threshold:this.options.threshold,no_results_text:this.options.noresults,width:this.options.width});};a.fn.ShChosen=function(c){return this.each(function(){if(!a(this).data("sh.chosen")){a(this).data("sh.chosen",new b(a(this),c));}});};})(jQuery);(function(a){if(!a.Sh){a.Sh={};}a.Sh.Expands=function(f){var e={onInit:a.getFunction(this,"oninit"),onShow:a.getFunction(this,"onshow"),onHide:a.getFunction(this,"onhide"),onToggle:a.getFunction(this,"ontoggle"),onBeforeShow:a.getFunction(this,"onbeforeshow"),onBeforeHide:a.getFunction(this,"onbeforehide"),guts:this.data("guts"),src:this.data("hsrc"),state:this.data("state"),active:this.data("active"),effect:this.data("effect"),togglecss:this.data("toggle-css"),hidesrc:this.data("hide-src"),showsrc:this.data("show-src")};this.ShExpands(a.extend(e,f));return this.data("sh.expands");};a.Sh.Expands.defaults={guts:">.guts",src:">.h",active:true,effect:"slide",togglecss:"toggle"};var b=function(e,f){this.element=e;this.options=a.extend({},a.Sh.Expands.defaults,f);this.srcElement=e.find(this.options.src);this.gutsElement=e.find(this.options.guts);this.init();};b.prototype={init:function(){var e=this;this.srcElement.length&&this.element.on("click",e.options.src,function(f){e._click(f);});this.options.hidesrc&&this.element.on("click",e.options.hidesrc,function(f){e._click(f,"hide");});this.options.showsrc&&this.element.on("click",e.options.showsrc,function(f){e._click(f,"show");});e.options.onInit&&e.options.onInit.call(this);if(e.options.state=="show"){e.show();}else{e.hide();}return this;},addtrigger:function(f,g){var e=this;f.on("click",function(h){e._click(h,g);});},addguts:function(e){this.gutsElement.add(e);},_click:function(g,h){var f=this;g.preventDefault();if(!f.options.active){return;}if(h=="hide"){f.hide();return;}if(h=="show"){f.show();return;}f.toggle();},show:function(){if(!this.options.active){return;}if(this.options.onBeforeShow&&!this.options.onBeforeShow.call(this)){return this.element;}if(!this.gutsElement.is(":visible")){this.options.onToggle&&this.options.onToggle.call(this);switch(this.options.effect){case"slide":this.gutsElement.slideDown("fast");break;case"fade":this.gutsElement.fadeIn();break;case"none":this.gutsElement.show();break;}}this.options.state="show";this.element.addClass(this.options.togglecss);this.options.onShow&&this.options.onShow.call(this);return this.element;},toggle:function(){if(!this.options.active){return;}if(this.gutsElement.is(":visible")){this.hide();}else{this.show();}return this.element;},hide:function(){if(!this.options.active){return;}if(this.options.onBeforeHide&&!this.options.onBeforeHide.call(this)){return this;}if(this.gutsElement.is(":visible")){this.options.onToggle&&this.options.onToggle.call(this);switch(this.options.effect){case"slide":this.gutsElement.slideUp("fast");break;case"fade":this.gutsElement.fadeOut();break;case"none":this.gutsElement.hide();break;}}this.options.state=null;this.element.removeClass(this.options.togglecss);this.options.onHide&&this.options.onHide.call(this);return this.element;},setActive:function(e){this.options.active=e;}};a.fn.ShExpands=function(e){return this.each(function(){if(!a(this).data("sh.expands")){a(this).data("sh.expands",new b(a(this),e));}});};a.Sh.AltExpands=function(){a.Sh.Expands.call(this,{onShow:function(){this.srcElement.hide();},onHide:function(){this.srcElement.show();}});};a.Sh.ExpandOnce=function(){a.Sh.Expands.call(this,{effect:"none",onShow:function(){this.srcElement.remove();}});};a.Sh.PopList=function(g){var e={onShow:function(){this.gutsElement.position({of:this.srcElement,my:"center top",at:"center bottom",collision:"fit fit"});}};var f=a.Sh.Expands.call(this,a.extend(e,g));this.data("ondocumentclick",function(h){if(!jQuery.contains(this.get(0),h.target)){f.hide();}});a.popbasket.push(this);return f;};a.Sh.ExpandLabel=function(i){var j,g;var f={mono:this.data("mono"),listsize:this.data("list-size"),gutscss:this.data("guts-css"),selector:this.data("selector"),slabel:this.data("show-label"),hlabel:this.data("hide-label")};f=a.extend({},a.Sh.ExpandLabel.defaults,f,i);if(f.mono){this.find(f.selector+":gt("+(f.listsize-1)+")").addClass(f.gutscss);}var e={onInit:function(){(this.options.state=="show")?this.srcElement.html(f.hlabel):this.srcElement.html(f.slabel);if(this.gutsElement.length==0){this.srcElement.hide();}},onShow:function(){this.srcElement.html(f.hlabel);},onHide:function(){this.srcElement.html(f.slabel);}};var h=a.Sh.Expands.call(this,a.extend(e,i));return h;};a.Sh.ExpandLabel.defaults={mono:false,gutscss:"guts",listsize:3,selector:"li",slabel:a.Res.More,hlabel:a.Res.Less};a.Sh.FilterList=function(g){var f=a.Sh.PopList.call(this,g);var e={itemselector:this.data("itemselector"),selected:this.data("selected"),selectedValue:this.data("selected-value"),css:this.data("css"),onchange:this.data("onchange"),html:this.data("html"),expands:f};this.ShFilterList(a.extend(e,g));};a.Sh.FilterList.defaults={itemselector:"li",css:"selected",html:false};var c=function(e,f){this.options=a.extend({},a.Sh.FilterList.defaults,f);this.element=e;this.expands=this.options.expands;this.items=this.expands.gutsElement.find(this.options.itemselector);if(!this.options.selected){this.options.selected=this.options.selectedValue?this.items.filter("[data-value='{0}']".format(this.options.selectedValue)):this.items.filter("."+this.options.css).first();if(!this.options.selected.length){this.options.selected=this.items.first();}}this.init(f);};c.prototype={init:function(f){var e=this;this.expands.gutsElement.on("click",this.options.itemselector,function(g){e._click(g,a(this));});this.select(this.options.selected);},_click:function(f,g){if(!this.options.selected.is(g)){this.items.removeClass(this.options.css);this.select(g);this.options.onchange&&this.options.onchange.call(this,g);}this.expands.hide();},additem:function(e){a.merge(this.options.items,e);},select:function(e){e.addClass(this.options.css);this.options.html?this.expands.srcElement.html(e.html()):this.expands.srcElement.text(e.text());this.options.selected=e;}};a.fn.ShFilterList=function(e){return this.each(function(){if(!a(this).data("sh.filterlist")){a(this).data("sh.filterlist",new c(a(this),e));}});};a.Sh.Tabs=function(f){var e={onSelect:a.getFunction(this,"onselect"),onLoad:a.getFunction(this,"onload"),toggle:this.data("toggle"),effect:this.data("effect"),tabSelector:this.data("tabs"),selectcss:this.data("selected-css")};this.ShTabs(a.extend(e,f));return a(this).data("sh.tabs");};a.Sh.Tabs.defaults={delay:false,toggle:false,effect:"slide",selectcss:"selected"};var d=function(e,f){this.element=e;this.options=a.extend({},a.Sh.Tabs.defaults,f);this.collection=[];this.group=this.element.find(this.options.tabSelector);this.init();};d.prototype={init:function(){var e=this;a.each(e.group,function(h,j){var g=a.Sh.Expands.call(a(j),{effect:e.options.effect});g.gutsElement=a(a(j).data("guts"));e.collection.push(g);});var f=e.group.filter("."+e.options.selectcss);e.selected=f.length?f.data("sh.expands"):e.group.first().data("sh.expands");e.group.on("click",function(g){g.preventDefault();e.select(a(this).data("sh.expands"));});e.options.onLoad&&e.options.onLoad.call(e);e.selected&&e.select(e.selected);return this;},select:function(f){var e=this;if(f.options.state=="show"&&!e.options.toggle){return;}a.each(e.collection,function(g,h){h.hide();h.element.removeClass(e.options.selectcss);});f.show();f.element.addClass(e.options.selectcss);e.selected=f;e.options.onSelect&&e.options.onSelect.call(e);}};a.fn.ShTabs=function(e){return this.each(function(){if(!a(this).data("sh.tabs")){a(this).data("sh.tabs",new d(a(this),e));}});};})(jQuery);(function(a){if(!a.Sh){a.Sh={};}a.Sh.Fieldset=function(d){var c={trigger:this.data("trigger"),remove:this.data("remove"),template:this.data("template"),collectionId:this.data("collection"),identifier:this.data("identifier"),isGreedy:this.data("greedy"),hookSelector:this.data("hook-selector"),addOnLoad:this.data("addonload"),altText:this.data("alt-text"),target:this.data("target"),onLoad:a.getFunction(this,"onload"),onAdd:a.getFunction(this,"onadd"),onRemove:a.getFunction(this,"onremove"),onBeforeAdd:a.getFunction(this,"onbeforeadd")};this.ShFieldset(a.extend(c,d));return a(this).data("sh.fieldset");};a.Sh.Fieldset.defaults={trigger:".addfs",remove:".remfs",template:".tmplfs",collectionId:".itemfs",isGreedy:false,addOnLoad:false,altText:a.Res.AddAnother,onBeforeAdd:function(c){return true;}};var b=function(c,d){this.options=a.extend({},a.Sh.Fieldset.defaults,d);this.element=c;this.template=a(this.options.template);this.trigger=(this.options.trigger instanceof jQuery)?this.options.trigger:this.element.find(this.options.trigger);if(!d.altText&&this.trigger.data("alt-text")){this.options.altText=this.trigger.data("alt-text");}this.target=this.element.find(this.options.target);this.options.originalText=this.trigger.text();this.init();};b.prototype={init:function(){var c=this;c.template.mustacheparse();c.element.on("click",c.options.remove,function(d){if(!a(this).is(c.options.remove)){return false;}d.preventDefault();c.remove(a(this).closest(c.options.collectionId));return false;});c.trigger.click(function(d){if(c.options.onBeforeAdd&&c.options.onBeforeAdd.call(c)){d.preventDefault();c.addNew(true);}});c._updateCollection();c.options.UniqueRowIndex=c.collection.length;c._updateAltText();if(c.options.addOnLoad&&!c.collection.length){c.addNew(false);}(c.options.onLoad)?c.options.onLoad.call(this):null;},addNew:function(d){var c=this;var e=a(c.template.mustache({RowIndex:c.collection.length,Identifier:c.options.identifier,UniqueRowIndex:c.options.UniqueRowIndex})).insertBefore(c.target).ShApplyHiLight();var g=c.getElementValue(e);var f={index:c.collection.length,item:e,value:g,UniqueRowIndex:c.options.UniqueRowIndex};e.data("row",f);c.collection.push(f);c._updateAltText(this);if(d){e.find(":text,textarea,select").first().focus();}if(!c.options.isGreedy){if(f.value==0){c.showTrigger(false);}}a.ShRewire(e);c.options.UniqueRowIndex++;_debug(c.collection,"collection");(c.options.onAdd)?c.options.onAdd.call(this,e):null;return this;},remove:function(e){var c=this;var d=e.data("row");c.collection.remove(c.indexOf(d));e.remove();c._updateAltText();if(!c.options.isGreedy){c.showTrigger(!c.isOneEmpty());}(c.options.onRemove)?c.options.onRemove.call(this,e):null;return d;},indexOf:function(f){var c=this;var e=-1;for(var d=0;d<c.collection.length;d++){if(c.collection[d].UniqueRowIndex==f.UniqueRowIndex){e=d;break;}}return e;},_updateCollection:function(){var d=[],e=0,c=this;a.each(c.element.find(c.options.collectionId),function(g,h){var f=a(this);var k=0;a.each(f.find(c.options.hookSelector),function(){var i=a.trim(a(this).val());if(i!=""&&i!="-1"){k++;}});var j={index:g,item:f,value:k,UniqueRowIndex:e++};f.data("row",j);d.push(j);});if(!c.options.isGreedy){c.element.on("keyup",c.options.hookSelector,function(f){c._AutoUpdateTrigger(a(this).closest(c.options.collectionId));});}c.collection=d;},setValue:function(d,e){var c=d.data("row");c.value=e;},getValue:function(c){return c.data("row").value;},getElementValue:function(d){var c=this;var e=0;a.each(d.find(c.options.hookSelector),function(){var f=a.trim(a(this).val());if(f!=""&&f!="-1"){e++;}});return e;},isOneEmpty:function(){var c=this;for(var d=0;d<c.collection.length;d++){if(c.collection[d].value==0){return true;}}return false;},showTrigger:function(d){var c=this;d?c.trigger.show():c.trigger.hide();},_updateAltText:function(){var c=this;(c.collection.length)?c.trigger.text(c.options.altText):c.trigger.text(c.options.originalText);return c.collection.length;},_AutoUpdateTrigger:function(d){var c=this;var e=c.getElementValue(d);c.setValue(d,e);c.showTrigger(!c.isOneEmpty());}};a.fn.ShFieldset=function(c){return this.each(function(){if(!a(this).data("sh.fieldset")){a(this).data("sh.fieldset",new b(a(this),c));}});};})(jQuery);(function(a){a.fn.fieldValue=function(e){for(var g=[],c=0,d=this.length;c<d;c++){var b=this[c];var f=a.fieldValue(b,e);if(f===null||typeof f=="undefined"||(f.constructor==Array&&!f.length)){continue;}if(f.constructor==Array){a.merge(g,f);}else{g.push(f);}}return g;};a.fieldValue=function(c,l){var g=c.name,m=c.type,o=c.tagName.toLowerCase();if(l===undefined){l=true;}if(l&&(!g||c.disabled||m=="reset"||m=="button"||(m=="checkbox"||m=="radio")&&!c.checked||(m=="submit"||m=="image")&&c.form&&c.form.clk!=c||o=="select"&&c.selectedIndex==-1)){return null;}if(o=="select"){var e=c.selectedIndex;if(e<0){return null;}var b=[],k=c.options;var h=(m=="select-one");var f=(h?e+1:k.length);for(var d=(h?e:0);d<f;d++){var j=k[d];if(j.selected){var p=j.value;if(!p){p=(j.attributes&&j.attributes.value&&!(j.attributes.value.specified))?j.text:j.value;}if(h){return p;}b.push(p);}}return b;}return a(c).val();};a.fn.formToArray=function(o,d){var b=[];if(this.length===0){return b;}var f=this[0];var e=o?f.getElementsByTagName("*"):f.elements;if(!e){return b;}var g,h,m,p,c,l,k;for(g=0,l=e.length;g<l;g++){c=e[g];m=c.name;if(!m){continue;}p=a.fieldValue(c,true);if(p&&p.constructor==Array){if(d){d.push(c);}for(h=0,k=p.length;h<k;h++){b.push({name:m,value:p[h],type:c.type});}}else{if(p!==null&&typeof p!="undefined"){if(d){d.push(c);}b.push({name:m,value:p,type:c.type});}}}return b;};a.fn.clearForm=function(b){return this.each(function(){a("input,select,textarea",this).clearFields(b);});};a.fn.clearFields=a.fn.clearInputs=function(b){var c=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function(){var d=this.type,e=this.tagName.toLowerCase();if(c.test(d)||e=="textarea"){this.value="";}else{if(d=="checkbox"||d=="radio"){this.checked=false;}else{if(e=="select"){this.selectedIndex=null;}else{if(d=="file"){if(/MSIE/.test(navigator.userAgent)){a(this).replaceWith(a(this).clone());}else{a(this).val("");}}else{if(b){if((b===true&&/hidden/.test(d))||(typeof b=="string"&&a(this).is(b))){this.value="";}}}}}}});};a.fn.resetForm=function(){return this.each(function(){a("input,select,textarea",this).resetFields();});};a.fn.resetFields=function(){var b=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week|hidden)$/i;return this.each(function(){var d=this.type,e=this.tagName.toLowerCase();if(b.test(d)||e=="textarea"){this.value=this.defaultValue;}else{if(d=="checkbox"||d=="radio"){this.checked=this.defaultChecked;}else{if(e=="select"){for(var c=0;c<this.options;c++){this.options[c].selected=defaultSelected;}}}}});};a.fn.formToJson=function(){var b=this.formToArray(true);_debug(b,"input array");var c={};a.each(b,function(){if(c[this.name]!=null){if(!(c[this.name] instanceof Array)){var d=c[this.name];c[this.name]=[];c[this.name].push(d);}c[this.name].push(this.value);}else{c[this.name]=this.value;}});return c;};})(jQuery);(function(a){if(!a.Sh){a.Sh={};}a.Sh.Label=function(d){var c={text:this.data("label-text"),sticky:this.data("sticky"),css:this.data("label-css"),closecss:this.data("close-css"),closetext:this.data("close-text"),showCloseBtn:this.data("show-close"),location:this.data("label-location"),which:this.data("which"),showOnLoad:this.data("show-onload"),onShow:a.getFunction(this,"onshow"),onLoad:a.getFunction(this,"onload"),onHide:a.getFunction(this,"onhide"),};this.ShLabel(a.extend(c,d));return this.data("sh.label");};a.Sh.Label.defaults={text:a.Res.Error,sticky:false,css:"",closecss:"closelabel",closetext:a.Res.Dismiss,showCloseBtn:true,location:"afterEnd",showOnLoad:false,};var b=function(c,d){this.options=a.extend({},a.Sh.Label.defaults,d);this.element=c;this.$label=a("<span></span>").addClass(this.options.css).html(this.options.text);this.$closebtn=a("<span />").text(this.options.closetext).addClass(this.options.closecss);this.init(this.options);};b.prototype={init:function(c){a.extend(this.options,c);if(this.options.showOnLoad){this.show(this.options.text);}(this.options.onLoad)?this.options.onLoad.call(this.element):null;return this;},show:function(e){var d=this;var f=a.extend({},this.options,e);if(!this.options.locked){this.options.locked=true;this.$label.removeClass(this.options.newCss);this.$label.addClass(f.css);this.$label.css("opacity",1);this.$label.html(f.text);this.options.newCss=f.css;var c=f.which?this.element.closest(f.which):this.element;switch(f.location){case"beforeStart":this.$label.insertBefore(c);break;case"afterStart":this.$label.prependTo(c);break;case"beforeEnd":this.$label.appendTo(c);break;case"afterEnd":default:this.$label.insertAfter(c);break;}if(!f.sticky){d.$label.delay(3000).animate({opacity:0},"slow",function(){d.$label.remove();d.options.locked=false;(d.options.onHide)?d.options.onHide.call(d.element):null;});}else{if(f.showCloseBtn){this.$label.append(this.$closebtn);}this.$closebtn.on("click",function(){d.hide();});}(this.options.onShow)?this.options.onShow.call(this.element):null;}return this.element;},hide:function(){this.$label.remove();this.options.locked=false;(this.options.onHide)?this.options.onHide.call(this.element):null;return this.element;}};a.fn.ShLabel=function(c){return this.each(function(){if(!a(this).data("sh.label")){a(this).data("sh.label",new b(a(this),c));}});};})(jQuery);(function(a){a.fn.jqm=function(n){return this.each(function(){var p=a(this),q=p.data("jqm")||a.extend({ID:h++},a.jqm.params),r=a.extend(q,n);p.data("jqm",r).addClass("jqm-init")[0]._jqmID=r.ID;r.trigger&&p.jqmAddTrigger(r.trigger);});};a.fn.jqmAddTrigger=function(n){return this.each(function(){if(!c(a(this),"jqmShow",n)){e("jqmAddTrigger must be called on initialized modals");}});};a.fn.jqmAddClose=function(n){return this.each(function(){if(!c(a(this),"jqmHide",n)){e("jqmAddClose must be called on initialized modals");}});};a.fn.jqmShow=function(n){return this.each(function(){!this._jqmShown&&l(a(this),n);});};a.fn.jqmHide=function(n){return this.each(function(){this._jqmShown&&g(a(this),n);});};var e=function(n){if(window.console&&window.console.error){window.console.error(n);}},l=function(n,r){var q=n.data("jqm"),r=r||window.event,y=(parseInt(n.css("z-index"))),y=(y>0)?y:3000,w=a("<div></div>").addClass(q.overlayClass).css({height:"100%",width:"100%",position:"fixed",left:0,top:0,"z-index":y-1,opacity:q.overlay/100}),p={w:n,c:q,o:w,t:r};n.css("z-index",y);if(q.ajax){var s=q.target||n,u=q.ajax;s=(typeof s=="string")?a(s,n):a(s);if(u.substr(0,1)=="@"){u=a(r).attr(u.substring(1));}s.load(u,function(){q.onLoad&&q.onLoad.call(this,p);});if(q.ajaxText){s.html(q.ajaxText);}k(p);}else{k(p);}},g=function(n,r){var q=n.data("jqm"),r=r||window.event,p={w:n,c:q,o:n.data("jqmv"),t:r};d(p);},j=function(n){if(n.c.overlay>0){n.o.prependTo("body");}n.w.show();a.jqm.focusFunc(n.w,true);return true;},i=function(n){n.w.hide()&&n.o&&n.o.remove();return true;},c=function(p,o,q){var n=p.data("jqm");if(n){return a(q).each(function(){this[o]=this[o]||[];if(a.inArray(n.ID,this[o])<0){this[o].push(n.ID);a(this).click(function(r){if(!r.isDefaultPrevented()){p[o](this);}return false;});}});}},k=function(p){var n=p.w,r=p.o,q=p.c;if(q.onShow(p)!==false){n[0]._jqmShown=true;if(q.modal){!b[0]&&f("bind");b.push(n[0]);}else{n.jqmAddClose(r);}q.closeClass&&n.jqmAddClose(a("."+q.closeClass,n));q.toTop&&r&&n.before('<span id="jqmP'+q.ID+'"></span>').insertAfter(r);n.data("jqmv",r);n.unbind("keydown",a.jqm.closeOnEscFunc);if(q.closeOnEsc){n.attr("tabindex",0).bind("keydown",a.jqm.closeOnEscFunc).focus();}}},d=function(p){var n=p.w,r=p.o,q=p.c;if(q.onHide(p)!==false){n[0]._jqmShown=false;if(q.modal){b.pop();!b[0]&&f("unbind");}q.toTop&&r&&a("#jqmP"+q.ID).after(n).remove();}},f=function(n){a(document)[n]("keypress keydown mousedown",m);},m=function(o){var p=a(o.target).data("jqm")||a(o.target).parents(".jqm-init:first").data("jqm");var n=b[b.length-1];return(p&&p.ID==n._jqmID)?true:a.jqm.focusFunc(n,o);},h=0,b=[];a.jqm={params:{overlay:50,overlayClass:"jqmOverlay",closeClass:"jqmClose",closeOnEsc:false,trigger:".jqModal",ajax:false,target:false,ajaxText:"",modal:false,toTop:false,onShow:j,onHide:i,onLoad:false},focusFunc:function(n,o){if(o){a(":input:visible:first",n).focus();}return false;},closeOnEscFunc:function(n){if(n.keyCode==27){a(this).jqmHide();return false;}}};})(jQuery);(function(a){if(!a.Sh){a.Sh={};}a.Sh.Modal=function(d){var c={overlayClass:this.data("olcss"),closeClass:this.data("closecss"),trigger:this.data("trigger"),ajax:this.data("ajax"),target:this.data("target"),ajaxText:String('<div class="loading">{0}</div>').format(this.data("loading-text")||""),modal:this.data("ismodal"),onShow:a.getFunction(this,"onshow"),onHide:a.getFunction(this,"onhide"),onLoad:a.getFunction(this,"onload"),mode:this.data("mode")};this.ShModal(a.extend(c,d));return a(this).data("sh.modal");};a.fn.ShModal=function(c){return this.each(function(){if(!a(this).data("sh.modal")){a(this).data("sh.modal",new b(a(this),c));}});};a.Sh.Modal.defaults={overlay:100,overlayClass:"jqmOverlay",closeClass:"jqmClose",closeOnEsc:true,ajax:false,target:"#jqmContent",ajaxText:'<div class="loading"></div>',modal:false,toTop:false,mode:"ajax"};a.extend(a.jqm.params,a.Sh.Modal.defaults);var b=function(c,d){this.options=a.extend({},a.jqm.params,d);c.jqm({overlay:this.options.overlay,overlayClass:this.options.overlayClass,closeClass:this.options.closeClass,closeOnEsc:this.options.closeOnEsc,trigger:this.options.trigger,ajax:this.options.ajax,target:this.options.target,ajaxText:this.options.ajaxText,modal:this.options.modal,toTop:this.options.toTop,onShow:this.options.onShow,onHide:this.options.onHide,onLoad:this.options.onLoad,mode:this.options.mode});};a.Sh.Modals={defaults:{ajaxDialog:"#ajaxDialog",frameDialog:"#frameDialog",contentDialog:"#contentDialog",loadingcss:".loading",modal:true},rewire:function(e){if(a.Sh.Modals.Ready){var d=(e)?e.find("[data-modal=iframe]"):"[data-modal=iframe]";var f=(e)?e.find("[data-modal=ajax]"):"[data-modal=ajax]";a.Sh.Modals.frameDialog.jqmAddTrigger(d);a.Sh.Modals.ajaxDialog.jqmAddTrigger(f);a.Sh.Modals.bindContent(e);a.props.$body.trigger("ModalsReady",[e]);}},hideAll:function(){try{a.Sh.Modals.ajaxDialog.jqmHide();a.Sh.Modals.frameDialog.jqmHide();a("[data-modal=inpage]").jqmHide();}catch(c){if(window.top&&window.top.$.Sh.Modals.frameDialog){window.top.$.Sh.Modals.frameDialog.jqmHide();}}},show:function(c){switch(c){case"ajax":a.Sh.Modals.ajaxDialog.jqmShow();break;case"iframe":a.Sh.Modals.frameDialog.jqmShow();break;case"inpage":break;}},bindContent:function(c){if(a.Sh.Modals.contentDialog.length>0){var d=a.Sh.Modals.contentDialog.html();c=c||a.props.$body;a.each(c.find("[data-modal=inpage]"),function(f,g){var g=a(g);var e=g.data("modal-trigger")||g.data("modaltrigger");g.wrapInner('<div id="jqmContent"></div>');g.prepend(d);a.Sh.Modal.call(g,{mode:"inpage",modal:true,trigger:e,ajax:false,onShow:a.Sh.Modals.onShow,onHide:a.Sh.Modals.onHide});});}},windows:[],Ready:false,onShow:function(h){var i=a.getFunction(a(h.t),"onbeforeshow");if(i&&!i.call(h)){return false;}h.o.prependTo("body");var e=a(h.t);h.c.modal=e.data("ismodal");h.c.original=e;h.w.width("").height("").css("top","").css("left","");var g=e.data("style"),f=e.data("span");if(h.c.added!=true){a.Sh.Modals.windows.push(h);h.c.added=true;}h.w.addClass(g);a("h3",h.w).text(e.attr("data-title")||e.attr("title")||"");h.w.css("left",(a.props.width-h.w.width())/2);if(f=="fill"){h.w.css("top",a.props.height*0.05).height(a.props.height*0.9);}var d;if(h.c.mode=="iframe"){d=a("iframe",h.w);d.on("load",function(j){h.w.find(a.Sh.Modals.defaults.loadingcss).hide();d.show();a(this.contentWindow).on("beforeunload",function(k){d.hide();h.w.find(a.Sh.Modals.defaults.loadingcss).show();});}).html("").attr("src",e.attr("href"));}var c=h.w.find("."+h.c.closeClass);e.data("noclose")?c.hide():c.show();h.w.show();if(h.c.mode=="iframe"){d.height(h.w.height()-a("h3",h.w).outerHeight(true));}return true;},onHide:function(c){var d=a.getFunction(c.c.original,"onbeforehide");if(d&&!d.call(c)){return false;}c.w.removeClass(c.c.original.data("style")).hide();c.o.remove();if(c.c.mode=="iframe"){a("iframe",c.w).unbind("load").attr("src","");c.w.find(a.Sh.Modals.defaults.loadingcss).hide();}if(c.c.mode=="ajax"){c.w.find(c.c.target).empty();}return true;},onLoad:function(c){if(c.c.mode=="ajax"){a.ShRewire(c.w);}var d=a.getFunction(a(c.t),"onafterload");d&&d.call(c);}};a(function(){a.Sh.Modals.ajaxDialog=a(a.Sh.Modals.defaults.ajaxDialog);a.Sh.Modals.frameDialog=a(a.Sh.Modals.defaults.frameDialog);a.Sh.Modals.contentDialog=a(a.Sh.Modals.defaults.contentDialog);a.Sh.Modal.call(a.Sh.Modals.ajaxDialog,{mode:"ajax",modal:true,trigger:"[data-modal=ajax]",ajax:"@href",onShow:a.Sh.Modals.onShow,onLoad:a.Sh.Modals.onLoad,onHide:a.Sh.Modals.onHide});a.Sh.Modal.call(a.Sh.Modals.frameDialog,{mode:"iframe",modal:true,trigger:"[data-modal=iframe]",onShow:a.Sh.Modals.onShow,onLoad:a.Sh.Modals.onLoad,onHide:a.Sh.Modals.onHide});a.Sh.Modals.bindContent();a.props.$window.on("resize",function(){a.each(a.Sh.Modals.windows,function(d,e){e.w.css("left",(a.props.width-e.w.width())/2);if(a(e.t).data("span")=="fill"){e.w.css("top",a.props.height*0.05).height(a.props.height*0.9);}if(e.c.mode=="iframe"){var c=a("iframe",e.w);c.height(e.w.height()-a("h3",e.w).outerHeight(true));}});});a.props.$body.trigger("ModalsReady");a.Sh.Modals.Ready=true;});})(jQuery);(function(a){if(!a.Sh){a.Sh={};}a.Sh.Pager=function(d){var c={tmpl:(this.data("tmpl-id"))?a("#"+this.data("tmpl-id")):undefined,target:a(this.data("target")),pagesize:this.data("page-size"),childselector:this.data("childselector"),trigger:this.data("trigger"),dir:this.data("dir"),onpage:a.getFunction(this,"onpage"),method:this.data("method"),legacy:this.data("legacy")};this.ShPager(a.extend(c,d));return this.data("sh.pager");};a.Sh.Pager.defaults={tmpl:a("#tmpl_paged_array"),pagesize:a.Res.PageSize||25,childselector:"li",trigger:".amore",dir:"+",method:"GET",legacy:true};var b=function(c,d){this.options=a.extend({},a.Sh.Pager.defaults,d);this.element=c;this.template=this.options.tmpl.length?this.options.tmpl:null;this.triggerElement=this.element.find(this.options.trigger);this.Ajax=null;if(!this.options.method){this.options.method="GET";}this.init();};b.prototype={init:function(){var c=this;this.Ajax=a.Sh.Ajax.call(c.element,{method:c.options.method,trigger:c.options.trigger,onfinish:function(e,f){if(e.result){var d=(c.template)?a(c.template.mustache(e.d)):a(a.parseHTML(e.d));c.options.dir=="+"?d.appendTo(c.options.target):d.prependTo(c.options.target);a.ShRewire(d);if(e.d.IsLastPage||d.filter(c.options.childselector).length<c.options.pagesize){if(c.options.legacy){c.triggerElement.hide();}else{this.hide();}}this.data("sh.ajax").addparams(e.pageparams);if(c.options.onpage){c.options.onpage.call(c,d.filter(c.options.childselector));}}else{a.BodyLabel(e.errorCode,{css:"gerrorbox",sticky:true});}}});return this;}};a.fn.ShPager=function(c){return this.each(function(){if(!a(this).data("sh.pager")){a(this).data("sh.pager",new b(a(this),c));}});};})(jQuery);(function(a){if(!a.Sh){a.Sh={};}if(!a.UiSh){a.UiSh={};}a.Sh.FormatRules={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,url:/^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([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])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,integer:/^[0-9]*$/,number:/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/,digits:/^-?(?:\d*)?(?:\.\d+)?$/,phone:/^[\d\s]*$/,date:""};a.Sh.Validate=function(e){var f="required";if(this.attr("data-format")){f="format";}else{if(this.attr("data-min")||this.attr("data-max")){f="range";}else{if(this.attr("data-min-length")||this.attr("data-max-length")){f="rangelength";}else{if(this.attr("data-required")){f="required";}else{if(this.attr("data-custom")){f="custom";}}}}}var d={required:this.data("required"),onshow:a.getFunction(this,"onshow"),onload:a.getFunction(this,"onload"),onhide:a.getFunction(this,"onhide"),onvalidate:a.getFunction(this,"onvalidate"),inputcss:this.data("inputcss"),reqcss:this.data("reqcss"),errlabelcss:this.data("errcss"),customlabelcss:this.data("customcss"),errlocation:this.data("err-location"),errmsg:this.data("err-message"),reqmsg:this.data("required-message"),showonload:this.data("showonload"),valid:this.data("valid"),type:f,format:this.data("format"),min:this.data("min"),max:this.data("max"),minLength:this.data("min-length"),maxLength:this.data("max-length"),skip:this.data("skip"),asyncvalid:this.data("async-valid")};this.ShValidate(a.extend(d,e));return this.data("sh.validate");};a.Sh.Validate.defaults={required:false,inputcss:"error",reqcss:"req",reqmsg:a.Res.Required,errlabelcss:"errlabel",customlabelcss:"cerrlabel",errlocation:"afterEnd",showonload:false,valid:null,skip:false,asyncvalid:true};var b=function(d,e){this.options=a.extend({},a.Sh.Validate.defaults,e);this.element=d;this.reqstar=a("<span></span>").addClass(this.options.reqcss);this.label=null;this.code=null;if(this.options.type=="custom"){this.custom();}else{this.init();}};b.prototype={init:function(){var d=this,e=this.element;if(d.options.required){e.wrap(String('<div class="wrapvld {0}"></div>').format(d.options.reqcss)).after(d.reqstar);}else{e.wrap('<div class="wrapvld"></div>');}d.label=a.Sh.Label.call(e,{text:d.options.errmsg,sticky:true,showCloseBtn:false,css:d.options.errlabelcss+(d.options.required?"":" unlabel"),location:d.options.errlocation,showOnLoad:d.options.showonload,onShow:function(){e.addClass(d.options.inputcss);if(d.options.onshow){d.options.onshow.call(this);}},onLoad:d.options.onload,onHide:function(){e.removeClass(d.options.inputcss);if(d.options.onhide){d.options.onhide.call(this);}}});e.on("focus keydown",function(){d.label.hide();});return this;},methods:{required:function(f,d,e){if(f===""){d.show({text:e});this.options.valid=false;}return this.options.valid;},format:function(k,h){var g=this.options.format,i=this.options.errmsg||a.Res.Tiny.INVALID_FORMAT;var j=a.Sh.FormatRules[g]||new RegExp(g,"i");if(g in a.Sh.FormatRules){i=this.options.errmsg||a.Res.Tiny["INVALID_"+g+"_FORMAT"];}if(g=="date"){try{a.datepicker.parseDate(a.Res.Localization.DateFormat,k);}catch(d){this.options.valid=false;}}else{if(j.test(k)==false){this.options.valid=false;}}if(!this.options.valid){h.show({text:i});}return this.options.valid;},range:function(h,d){h=Number(h);var f=parseInt(this.options.min),e=parseInt(this.options.max),g=this.options.errmsg||a.Res.Tiny.INVALID_VALUE;if(isNaN(h)){this.options.valid=false;d.show({text:g});return false;}if((f!=null&&f>h)||(e!=null&&e<h)){this.options.valid=false;d.show({text:g});return false;}return true;},rangelength:function(h,e){var g=parseInt(this.options.minLength),f=parseInt(this.options.maxLength);var d=h.length;if(!isNaN(g)&&g>d){this.options.valid=false;e.show({text:this.options.errmsg||a.Res.Tiny.TOO_SHORT});}else{if(!isNaN(f)&&f<d){this.options.valid=false;e.show({text:this.options.errmsg||a.Res.Tiny.TOO_LONG});}}return this.options.valid;}},validate:function(){var d=this,e=this.element,f=this.label;d.options.valid=true;d.code=d.options.type;if(d.options.type=="custom"){if(d.options.onvalidate){return d.options.onvalidate.call(d,f);}_debug(e,"custom validation not implemented");return false;}var h=e.ShTrim();if(d.options.required){var g=d.options.type=="required"?d.options.errmsg||d.options.reqmsg:d.options.reqmsg;if(!d.methods.required.call(d,h,f,g)){return false;}}if(d.options.type!="required"&&h!==""&&!d.methods[d.options.type].call(d,h,f)){return false;}if(d.options.onvalidate){return d.options.onvalidate.call(d,h,f);}return true;},custom:function(){var d=this;this.label=a.Sh.Label.call(this.element,{text:d.options.errmsg,sticky:true,showCloseBtn:false,css:d.options.customlabelcss,location:d.options.errlocation,showOnLoad:d.options.showonload,onShow:d.options.onshow,onLoad:d.options.onload,onHide:d.options.onhide});return this;},toggleReqstar:function(d){d?this.reqstar.show():this.reqstar.hide();return this;},option:function(d,e){this.options[d]=e;if(d=="required"){this.toggleReqstar(e);this.label.hide();}return this;}};a.fn.ShValidate=function(d){return this.each(function(){if(!a(this).data("sh.validate")){a(this).data("sh.validate",new b(a(this),d));}});};a.Sh.ValidateForm=function(e){var d={fields:null,context:this.data("context"),trigger:this.data("trigger")?this.find(this.data("trigger")):this,offset:this.data("offset"),selector:this.data("validate-selector")||this.data("validateselector"),bDoValidate:this.data("dovalidate"),silent:this.data("silent"),onvalidate:a.getFunction(this,"onvalidate")};this.ShValidateForm(a.extend(d,e));return this.data("sh.validateform");};a.Sh.ValidateForm.defaults={fields:null,silent:false,trigger:null,selector:".validate",offset:0,bDoValidate:true};var c=function(d,e){this.element=d;this.options=a.extend({},a.Sh.ValidateForm.defaults,e);if(!this.options.fields){this.options.fields=a(this.options.selector,this.options.context||a.props.$body);}this.context=this.options.context||window;this.init(this.options);};c.prototype={init:function(e){a.extend(this.options,e);var d=this;if(!this.options.silent){if(this.options.trigger.is("form")){this.options.trigger.on("submit",function(f){if(!f.isDefaultPrevented()&&!d.validate()){return false;}});}else{this.options.trigger.on("click",function(f){if(!f.isDefaultPrevented()&&!d.validate()){return false;}});}}},validate:function(){var d=this,f=this.element,h=true,g=0,e=false;a.each(this.options.fields,function(l,m){var k=a(this),n=k.data("sh.validate");n.label.hide();if(!jQuery.support.placeholder){if(k.hasClass("placeholder")&&k.val()==k.attr("placeholder")){k.val("");}}if(d.options.bDoValidate){if(!n.options.skip&&(!n.options.asyncvalid||!n.validate())){if(!n.options.asyncvalid){k.trigger("shAsync");}h=false;if(!e){var j=k.is(":visible")?k:k.parent();if(d.context==window){g=j.offset().top-d.options.offset;}else{if(d.context&&d.context.length){g=j.ShPosition(d.context).top-d.options.offset;}}e=true;}}}});if(!h){if(d.context==window){if(a.props.$window.scrollTop()>g){a("html, body").animate({scrollTop:g},"fast","swing");}}else{if(d.context&&d.context.length){if(d.context.scrollTop()>g){d.context.animate({scrollTop:g},"fast","swing");}}}d.options.onvalidate?d.optionns.onvalidate.call(d,false):null;return false;}return d.options.onvalidate?d.optionns.onvalidate.call(d,true):true;},addField:function(d){this.options.fields.add(d);}};a.fn.ShValidateForm=function(d){return this.each(function(){if(!a(this).data("sh.validateform")){a(this).data("sh.validateform",new c(a(this),d));}});};a.UiSh.Size=function(h,f){var g=parseInt(this.element.data("size")||500);if(isNaN(g)){g=500;}this.code="size";g=g*1000;if(!window.FileReader){return true;}var d=this.element.get(0);if(d.files&&d.files[0]){var e=parseInt(d.files[0].size);_debug(e,"file size");if(e<=g){return true;}f.show({text:a.Res.Tiny.FILE_LARGE});return false;}return true;};a.UiSh.Options=function(h,d){var g=this.element.find(":selected");var f=this.element.data("options-min");var e=this.element.data("options-max");this.code="options";_debug({min:f,max:e,options:g});if((f!=null&&f>g.length)||(e!=null&&e<g.length)){d.show({text:this.options.errmsg||a.Res.Tiny.INVALID_OPTIONS});return false;}return true;};})(jQuery);(function(a){if(!a.Sh){a.Sh={};}if(!a.UiSh){a.UiSh={};}var b;a(function(){if(jQuery.support.touch){a.props.$body.addClass("touch");}else{a.props.$body.addClass("notouch");}b=a.Sh.Label.call(a.props.$body,{text:"",css:"",location:"beforeEnd",sticky:false});});a.BodyLabel=function(f,g){if(!b){return;}b.hide();if(f!="hide"){if(!g.sticky){g.showCloseBtn=false;}b.show(a.extend({text:a.ErrMessage(f,null,g.ns?g.ns:"Detailed")},g));return b;}};a.ErrMessage=function(f,h,i){if(!i){i="Tiny";}var f=f||"Unknown",g=h||a.Res[i]["Unknown"];if(f!=0){f=a.Res[i][f];if(f){g=f;}}return g;};a.fn.mustacheparse=function(){return a(this).map(function(g,f){var j=a.trim(a(f).html());var h=Mustache.parse(j);return a(h).get();});};a.mustache=function(g,h,f){return Mustache.render(g,h,f);};a.fn.mustache=function(g,f){return a(this).map(function(j,h){var l=a.trim(a(h).html());var k=a.mustache(l,g,f);return a(k).get();});};a.fn.ShPosition=function(f){var h=this.offset(),g=f.offset();return{top:h.top+f.scrollTop()-g.top,left:h.left-g.left};};a.fn.ShApplyHiLight=function(){if(this.effect){return this.effect("highlight",{},1000);}else{return this;}};a.fn.ShBadge=function(h,g,f){this.ShLabel({text:h||a.Res.SomeError,css:f||"redbox block",location:g||"beforeStart",sticky:true,showCloseBtn:false});return this;};a.fn.ShTrim=function(f){if(!this.is(":file")){f?this.val(a.trim(f)):this.val(a.trim(this.val()));}return this.val();};a.fn.ShVal=function(f){return this.val(f).trigger("change");};a.UiSh.removeParent=function(g,h){if(g.result){var f=this;setTimeout(function(){f.closest(f.data("which")||"li").fadeOut(500,function(){a(this).remove();if(h&&typeof(h)=="function"){h.call(f,g);}});},10);}else{this.ShLabel({which:this.data("which"),text:a.ErrMessage(g.errorCode,this.data("error-message")),css:this.data("errorcss"),location:this.data("error-location")||"beforeEnd",sticky:true});this.data("sh.label").show();}};a.Sh.PrettyPrice=function(){this.text(this.text().toPrettyPrice());};a.Sh.WizardList=function(){this.ShWizardList();};var e=function(g){var f=false;a.each(g.find(">li"),function(){var h=a(this);if(h.hasClass("selected")||f){f=true;h.addClass("inactive").find("a").contents().unwrap();}});return this;};a.fn.ShWizardList=function(){return this.each(function(){if(!a(this).data("sh.wizardlist")){a(this).data("sh.wizardlist",new e(a(this)));}});};a.Sh.Confirm=function(g){var f={message:this.data("message")};this.ShConfirm(a.extend(f,g));};var c=function(g,h){this.options=h;var f=this;g.click(function(j){var i=a(this);if(j.isDefaultPrevented()){return false;}if(!window.confirm(f.options.message.replace(/\\n/gim,"\n"))){j.stopPropagation();j.preventDefault();return false;}});return this;};a.fn.ShConfirm=function(f){return this.each(function(){if(!a(this).data("sh.confirm")){a(this).data("sh.confirm",new c(a(this),f));}});};a.Sh.Tip=function(g){var f={_my:this.data("my"),_at:this.data("at"),_extra:this.data("addclass")};f=a.extend(f,g);this.ShTip(f);};a.Sh.Tip.defaults={_my:"center-2 bottom-15",_at:"center top",_extra:""};var d=function(g,h){this.options=h;var f=this;this.options=a.extend({},a.Sh.Tip.defaults,h);if(jQuery.support.touch){return this;}g.tooltip({show:false,hide:false,position:{my:f.options._my,at:f.options._at,using:function(k,j){var i=a(this).css(k).addClass(j.vertical).addClass(f.options._extra);if(j.element.width<50){i.addClass("tight");}else{if(j.element.width>100){i.addClass("wide");}}}}});g.attr("data-title",g.attr("title"));return this;};a.fn.ShTip=function(f){return this.each(function(){if(!a(this).data("sh.tip")){a(this).data("sh.tip",new d(a(this),f));}});};})(jQuery);;
/**************OBSOLETE*****************/
//function IfPasswords() {
//	var $pwold = this.find(".pwold"),
//		$pwnew = this.find(".pwnew");

//	// if pwold and new exist, fire validation on new only
//	if (!$pwold.val().isNullOrEmpty() || !$pwnew.val().isNullOrEmpty()) {
//		return $pwnew.ShError("validate");
//	}

//	return true;
//};
(function ($) {
	if (!$.Sh) $.Sh = {};


	// for inline in page pager
	$.Sh.AbjjadPager = function () {
		//var noneClass = this.data("none-class");
		var noneClass = this.data("none-class");

		var pager = $.Sh.Pager.call(this,
		{
			pagesize: this.data("pagesize") || $.Res.PageSize,
			method: "POST",
			target: this.find(this.data("target")),
			onpage: function (resultset) {

				$.each(resultset, function () {
					$(this).ShApplyHiLight();
				});
				// save resultset
				this.resultset = resultset;
			}
		});
		if (pager.options.target.children(pager.options.childselector).length < pager.options.pagesize) {
			pager.triggerElement.hide();
		}
		if (pager.options.target.children(pager.options.childselector).length <= 0) {
			// none found
			pager.element.addClass(noneClass);
		} else {
			pager.element.removeClass(noneClass);
		}

		pager.Ajax.options.onfinally = $.getFunction(this, "onfinally");

		pager.Ajax.options.onloading = function (bloading) {
			(bloading) ? pager.triggerElement.addClass("loadings") : pager.triggerElement.removeClass("loadings");
		};

		return;
		// post then load partial view in target
		//var $target = this.find(this.data("target")),
		//	page_size = this.data("pagesize") || $body.data("Settings.PageSize"),
		//	$tmpl = $("#" + this.data("tmpl-id")),
		//	noneClass = this.data("none-class"),
		//	$trigger = this.find(this.data("trigger"));


		//// reset max height
		//$target.css("max-height", "inherit");


		//// set inplaceajax attributes
		//this.data("onfinish", function (data) {
		//	var childselector = this.data("childselector") || "li";

		//	// assign mustache template
		//	var $resultset = $($tmpl.mustache(data.d)).appendTo($target);
		//	$.ShRewire($resultset);

		//	$.each($resultset.filter(childselector), function () {
		//		$(this).ShApplyHiLight(); // notice this: this might be overwhelming, remove if problematic
		//	});

		//	// check page size, if result set is less than pagesize, hide link

		//	if ($resultset.filter(childselector).length < page_size) {
		//		$trigger.hide();
		//		// reset size of target
		//	}

		//	data["resultset"] = $resultset;
		//	// assign to element data anything that needs to be reposted
		//	this.data("dparams", data.pageparams);
		//});



		//if (this.data("pagesize") > $target.children().length) {
		//	$trigger.hide();
		//}
		//if (!$target.children().length) {
		//	this.addClass(noneClass);
		//} else {
		//	this.removeClass(noneClass);
		//}

		//this.data("onloading", function (bloading) {
		//	if (bloading) {
		//		$trigger.addClass("loadings");
		//	} else {
		//		$trigger.removeClass("loadings");

		//	}
		//})
		//InplaceAjax.call(this);

	};
})(jQuery);;


(function ($) {
	if (!$.Sh) $.Sh = {};



	$.Sh.AgreeBtn = function () {

		var $trigger = this.find(this.data("trigger") || ".agree"),
			$target = this.find(this.data("target") || ".totalagreed"),
			total = parseInt($target.text()),
			$targetcontainer = this.find(".agreed"),
            paramName = $trigger.data("param-name"),
            shareFacebookUrl = this.data("share-facebook-url"),
            facebookAppId = this.data("facebook-app-id"),
            facebookRedirectUri = this.data("facebook-redirect-uri");

		var status = $trigger.data("status") || false;
		var css = $trigger.data("class") || "toggle";


		$trigger.text(status ? $.Res.DontAgree : $.Res.Agree);
		status ? $trigger.addClass(css) : $trigger.removeClass(css);

		if (total <= 0) $targetcontainer.hide();

        $.Sh.Ajax.call($trigger, {
            shareFacebookUrl,
            facebookAppId,
            facebookRedirectUri,
			onloading: function (bloading) {
				if (bloading) {
					// make this unavailable

					$.BodyError("hide");

					this.text('').addClass("loadings");

				} else {
					this.removeClass("loadings");
				}
			},
            onprepost: function () {
                if (window.DoCheckFb && !status && this.options.shareFacebookUrl) {
                    fbRequestAgreeBtn(function (data) {

                    }, this.options.shareFacebookUrl, this.options.facebookAppId, this.options.facebookRedirectUri);
				}
				var dparams = {};
				dparams[paramName] = this.element.data("status");

				//this.data("dparams", dparams);
				this.addparams(dparams);
				return true;
			},
			onfinish: function (data) {
				if (data.result) {
					if (data.d) {
						data.d.status = data.d[paramName];
						this.data("status", data.d.status);

						this.text(data.d.status ? $.Res.DontAgree : $.Res.Agree);
						data.d.status ? this.addClass(css).effect("bounce") : this.removeClass(css);
						// add effect here

						// update target
						data.d.status ? $target.text(++total) : $target.text(--total);
						(total <= 0) ? $targetcontainer.hide() : $targetcontainer.show();
					}
				} else {

					$.BodyLabel(data.errorCode, { css: "gerrorbox", sticky: true });

				}
			}
		});
		

		//$trigger.ApplyBehavior("InplaceAjax");
	}


})(jQuery);
;
/// <reference path="jquery-1.5.1-vsdoc.js" />

// allow submission of content fields, or target fields


(function ($) {
	if (!$.Sh) $.Sh = {};


	$.Sh.AjaxAdd = function (options) {
	
		var _options = {
			dir: this.data("location"),
			context: this.data("targetcontext"),
			onaftersuccess: $.getFunction(this, "onaftersuccess"),
			target: this.data("target"),
			preparse: this.data("preparse"),
			templateid: this.data("tmpl-id"),
			trigger: this.data("trigger")
		};


		this.ShAjaxAdd($.extend(_options, options));
		return this.data("sh.ajaxadd");
	};

	// expose default options
	$.Sh.AjaxAdd.defaults = {
		dir: "bottom",
		context: $.props.$body,
		preparse: false
	};
	// constructor, not exposed
	var AjaxAdd = function (el, options) {

		// extend options
		this.options = $.extend({}, $.Sh.AjaxAdd.defaults, options);

		this.element = el;
		// initialize
		this.Ajax = null;
		
		this.init(options);
	};

	AjaxAdd.prototype = {

		init: function (options) {
			
			var $target = $(this.options.target, this.options.context);
			var $tmpl = $("#" + this.options.templateid);

			if (this.options.preparse) $tmpl.mustacheparse();



			var base = this;

			// on click remove context 
			// call ajax with set properties
			this.Ajax = $.Sh.Ajax.call(this.element, {
				trigger: base.options.trigger,
				onprepost: function (trigger) {
					$.BodyLabel("hide")

					var f = this.options.style == "array" ? base.element.formToArray(true) : base.element.formToJson();
					this.addparams(f, this.options.style);
					return (base.options.onprepost) ? base.options.onprepost.call(base, trigger) : true;


				},
				onloading: function (bloading) {
					if (bloading) {
						$.BodyLabel("hide");
						this.addClass("loadings");
						//this.Loading(bloading);

						var topLocation = this.offset().top;

						if ($.props.$window.scrollTop() > topLocation) $('html, body').animate({ scrollTop: topLocation }, 'fast', 'swing');

					} else {
						this.removeClass("loadings");
					}

				},
				onfinish: function (data) {
					if (data.result) {

						var row = $($tmpl.mustache(data.d));

						(base.options.dir == "bottom") ? row.appendTo($target).ShApplyHiLight() : row.prependTo($target).ShApplyHiLight();
						$.ShRewire(row);

						// empty original form!!!
						this.find(":text,textarea").val("");

						if (base.options.onaftersuccess) base.options.onaftersuccess.call(this, data);
					} else {
						$.BodyLabel(data.errorCode, { css: "gerrorbox", sticky: true });
					}

					
				}
			});

		}

	};

	// plugin
	$.fn.ShAjaxAdd = function (options) {

		return this.each(function () {
			if (!$(this).data("sh.ajaxadd")) {
				$(this).data("sh.ajaxadd", new AjaxAdd($(this), options));
			}

		});
	};


	$.Sh.AjaxEdit= function (options) {

		var _options = {
			dir: this.data("location"),
			context: this.data("targetcontext"),
			onaftersuccess: $.getFunction(this, "onaftersuccess"),
			target: this.data("target"),
			trigger: this.data("trigger"),
			successcode: this.data("success-code")
		};


		this.ShAjaxEdit($.extend(_options, options));
		return this.data("sh.ajaxedit");
	};

	// expose default options
	$.Sh.AjaxEdit.defaults = {
		dir: "bottom",
		context: $.props.$body,
		successcode: "SAVED"
	};
	// constructor, not exposed
	var AjaxEdit = function (el, options) {

		// extend options
		this.options = $.extend({}, $.Sh.AjaxEdit.defaults, options);

		this.element = el;
		// initialize
		this.Ajax = null;

		this.init(options);
	};

	AjaxEdit.prototype = {

		init: function (options) {

			var $target = $(this.options.target, this.options.context);
			var base = this;

			// on click remove context 
			// call ajax with set properties
			this.Ajax = $.Sh.Ajax.call(this.element, {
				trigger: base.options.trigger,
				onprepost: function (trigger) {
					$.BodyLabel("hide")

					var f = this.options.style == "array" ? base.element.formToArray(true) : base.element.formToJson();
					this.addparams(f, this.options.style);
					return (base.options.onprepost) ? base.options.onprepost.call(base, trigger) : true;


				},
				onloading: function (bloading) {
					if (bloading) {
						$.BodyLabel("hide");
						this.addClass("loadings");
						//this.Loading(bloading);

						var topLocation = this.offset().top;

						if ($.props.$window.scrollTop() > topLocation) $('html, body').animate({ scrollTop: topLocation }, 'fast', 'swing');

					} else {
						this.removeClass("loadings");
					}

				},
				onfinish: function (data) {
					if (data.result) {
						$.BodyLabel(base.options.successcode, { css: "gbodybox" });

						var $next = $(data.d).insertAfter($target).ShApplyHiLight();
						$target.remove();

						$.ShRewire($next);

						// empty original form!!!
						this.find(":text,textarea").val("");

						if (base.options.onaftersuccess) base.options.onaftersuccess.call(this, data);
					} else {
						$.BodyLabel(data.errorCode, { css: "gerrorbox", sticky: true });
					}


				}
			});

		}

	};

	// plugin
	$.fn.ShAjaxEdit = function (options) {

		return this.each(function () {
			if (!$(this).data("sh.ajaxedit")) {
				$(this).data("sh.ajaxedit", new AjaxEdit($(this), options));
			}

		});
	};

})(jQuery);

;


(function ($) {
	if (!$.Sh) $.Sh = {};
	if (!$.UiSh) $.UiSh = {};



	$.Sh.Author = function () {

		var $author = this.find(".authorname"),
			$authorid = this.find(".authorid"),
			$roles = this.find(".roles"),
			$newfields = this.find(".newauthor").hide(),
			$fields = $newfields.find("input:text,textarea");

		$author.data("target", $authorid);
		// shit! IE oninput fires after js insersion, find herehttps://connect.microsoft.com/IE/feedback/details/816137/ie-10-11-input-elements-with-unicode-entity-character-values-cause-oninput-events-to-be-fired-on-page-load

		//$author.on("input", function (e) {
		//if (!$author.data("latched")){
		//	var val = $author.val();
		//	$author.val("");
		//	setTimeout(function () {
		//		$author.val(val);
		//	}, 1000);
		//	$author.data("latched", true);
		//}
		//});
		//$author.trigger("input"); // to catch chrome as well



		$.Sh.Autocomplete.call($author, {
			onresponse: function (content) {
				$authorid.val(null);
				$newfields.hide();
				// also empty fields not to validate
				$fields.val("");
			},
			onchange: function (item) {
				if (item.currentValue) {
					// this means null item
					this.val(item.currentValue).ShTrim();
					// show other fields
					$newfields.show();
				} else {
					$newfields.hide();
					$fields.val("");
				}
			},
			method: "POST"
		});

		// if roles exist attach chosen
		if ($roles.length) {

			if ($roles.data("selected")) {
				// make option selected then attach chosen
				$roles.val($roles.data("selected"));

			}
			//$roles.data("nosearch", true);
			//Chosen.call($roles);

		}

	};

	$.Sh.Authors = function() {
		// first, autofill using tempalate, then add fieldset, then go thru authors to fix uniqueindex

		//this.data("inline", true);
		//this.data("location", "top");
		//this.data("target", this);
		//this.data("onfinish", function (data) {

		//	// change template text
		//	var $tmpl = $("#" + this.data("tmpl-id"));
		//	$tmpl.html(String($tmpl.html()).format(''));
		//});
		//////////////////
		var $tmpl = $("#" + this.data("tmpl-id"));
		//dir = this.data("location") || "bottom",
		//$this = this;

		//var context = this.data("targetcontext") || $body,
		//	$target = $(this.data("target"), context);

		var data = this.data("src"); // authors object
		if (data.result) {
			for (var i = 0; i < data.d.length; i++) {
				var row = $($tmpl.mustache(data.d[i]));
				row.prependTo(this);

				$.ShRewire(row);
			}
			// change template text
			//var $tmpl = $("#" + this.data("tmpl-id"));
			$tmpl.html(String($tmpl.html()).format(''));
		}

		//AutoFill.call(this);
		////////////////////


		this.data("addonload", true);
		//this.data("auto-keyup", true);
		this.data("greedy", false);
		this.data("trigger", ".addbtn");
		//this.data("untrigger", ".rmvbtn");
		this.data("target", ".addli");

		// translation
		this.data("template", "#" + this.data("tmpl-id"));
		this.data("remove", ".rmvbtn");
		var _d = this.find(".addbtn");
		_d.data("alt-text", _d.data("alt"));

		//this.data("onload", function () {

		//});
		//this.data("onadd", function (row) {

		//	Author.call(row);
		//});
		$.Sh.Fieldset.call(this, {
			onAdd: function (row) {

				$.Sh.Author.call(row);
			},
			onLoad: function () {
				// replace each recprd

				//$.each(this.data('sh.fieldset').collection, function () {
				//	this.item.html(String(this.item.html()).format(this.UniqueRowIndex));
				//	//attach behavior
				//	Author.call(this.item.children());
				//});
				//this.data("onload", null);
				$.each(this.collection, function () {
					this.item.html(String(this.item.html()).format(this.UniqueRowIndex));
					//attach behavior
					$.Sh.Author.call(this.item.children());
				});
				this.element.data("onload", null);
			}
		});

		// validation

		this.data("err-location", "afterEnd");
		// translation
		this.data("err-message", this.data("errormessage"));
		this.data("errcss", this.data("errorcss"));
		

		$.Sh.Validate.call(this, {
			onvalidate: function (label) {
				// check at least one hidden input id is available
				var ret = false;
				$.each(this.element.data('sh.fieldset').collection, function () {
					// TODO: if requested, prevent duplicates

					if (this.value) ret = true;

				});
				if (!ret) label.show();
				return ret;
			},
			type: "custom",
			skip: !this.data("dovalidate")
		});



	}



	$.Sh.AuthorEdit = function() {
		var $profileeditbadge = $(".profileeditbadge"),
			$aboutauthor = $(".aboutauthor"),
			$servertabs = $(".servertabs"),
			$target = $(this.data("target"));

		this.data("onaftersuccess", function (data) {
			if (data.result) {

				$.Sh.Modals.hideAll();


				// now update with data.d stuff in opener
				if (data.CurrentAuthor) {
					$aboutauthor.data("sh.expandlist", null);
					$aboutauthor.html(data.d).ShApplyHiLight();
					$.ShRewire($aboutauthor);


				}
				// reused for author details, if profileditbadge exists, update it instead
				if ($profileeditbadge.length) {

					$profileeditbadge.html(data.d);
					$.ShRewire($profileeditbadge);
				}

			}
				//$.BodyLabel("SAVED", { css: "gbodybox" });
			//} else {
			//	$.BodyLabel(data.errorCode, { css: "gerrorbox", sticky: true });
			//}


		});
		this.data("context", this.closest(".directionwrapper"));
		$.Sh.ValidateForm.call(this);

		this.data("target", String("[data-id={0}]").format(this.data("id")));
		$.Sh.AjaxEdit.call(this);

		//InplaceEdit.call(this);




	}

	$.UiSh.updateAuthorBadge = function (data) {
		if (data.result) {
			// update author in opener
			// find data-id 

			var $imgcontainer = $(".authorphoto"), // rethink this
				$link = $imgcontainer.find("a"),
				$img = $imgcontainer.find("img");
			// find a link, change attribute, then find or append img, change src	
			if ($link.length) $link.attr("href", data.d.original);
			if (!$img.length) $img = $("<img />").appendTo($link.length ? $link : $imgcontainer);
			$img.attr("src", data.d.src);


			var target = String("[data-id={0}]").format(this.data("id"));

			$.imageBadge(target, this.data("targetcontext"), data.d.src);

			// also if CurrentAuthor i need to update another phtot, bummer
			$.imageBadge(target, ".aboutauthor", data.d.src);

		}
	};


	$.UiSh.updateProfileBadge = function (data) {
		if (data.result) {
			// update author in opener
			// find data-id 

			var $imgcontainer = $(".profilephoto"),
				$link = $imgcontainer.find("a"),
				$img = $imgcontainer.find("img");
			// find a link, change attribute, then find or append img, change src	
			if ($link.length) $link.attr("href", data.d.original);
			if (!$img.length) $img = $("<img />").appendTo($link.length ? $link : $imgcontainer);
			$img.attr("src", data.d.src);



		}
	};

})(jQuery);

;


(function ($) {
	if (!$.Sh) $.Sh = {};
	if (!$.UiSh) $.UiSh = {};




	$.Sh.StarRating = function() {
		var value = this.data("rating") || parseFloat($.trim(this.text())),
			show = this.data("show-number") || false;

		var str = "";
		if (show) {
			var $value = this.html(); // as is, insert rest
			str = $value;
		}
		// accorind to value do something with five stars?
		var star = '<span class="star" />';

		for (var i = 0; i < 5; i++) {
			var s = $(star);

			if (i < value) {
				s.addClass("full");
			}
			if (i < value && i + 1 > value) {
				s.addClass("half");
			}
			str += s.get(0).outerHTML;

		}
		this.html(str);
	};



	$.Sh.StarRate = function() {
		// on  hover change style, on click submit
		var $this = this,
			param_name = this.data("param-name"),
			value = this.data("rating"),
            doPropagate = String(this.attr("href")).isNullOrEmpty() ? false : true,
            shareFacebookUrl = this.data("share-facebook-url"),
            facebookAppId = this.data("facebook-app-id"),
            facebookRedirectUri = this.data("facebook-redirect-uri");


		$.Sh.StarRating.call(this);
		// a second click removes rating

		var dparams = {};
		dparams[param_name] = 0;
        var index = 0,
        rateScale = 5;

		var $stars = this.find(".star");

		var updateStars = function (rate) {
			$.each($stars, function (i, o) {
				var $t = $(this).removeClass("full");
				if (i < rate) $t.addClass("full");
			});
		}


        $.Sh.Ajax.call(this, {
            shareFacebookUrl,
            facebookAppId,
            facebookRedirectUri,
            rateScale,
			trigger: ".star",
			onprepost: function (trigger) {
                index = trigger.index() + 1;
                _debug(index, "rating");
                if (window.DoCheckFb && !doPropagate && this.options.shareFacebookUrl) {
                    fbRequestRateBook(function (data) {

                    }, index, this.options.rateScale, this.options.shareFacebookUrl, this.options.facebookAppId, this.options.facebookRedirectUri);
                }

				if (value == index) {
					index = 0;
					// remove rating
				}

				dparams[param_name] = index;
				_debug(dparams, "dparams");
				//this.data("dparams", dparams);
				this.addparams(dparams);
				return true;
			},
			onfinish: function (data) {
				if (data.result) {

					// update value
					value = index;
					$this.data("rating", index);
					updateStars(value);
					// progpate
					if (doPropagate) this.click();


				} else {
					$.BodyError(data.errorCode, { css: "gerrorbox" });
				}
			}
		});


		$stars.hover(function () {
			updateStars($(this).index() + 1);
		}, function () {
			updateStars(value);
		});


		//InplaceAjax.call(this);
	};



	$.Sh.ReadStatus = function () {
		// multiple states, the current state defines what appears
		var $beads = this.find(".bead"),
            currentValue = this.data("current-value"),
            ShareFacebookUrl = this.data("share-facebook-url"),
            facebookAppId = this.data("facebook-app-id"),
            facebookRedirectUri = this.data("facebook-redirect-uri");

		// set initial
		if (currentValue !== -1) {
			$.each($beads, function () {
				var $t = $(this);
				$t.data("param-value") == currentValue ? $t.addClass("major") : $t.addClass("minor");

			});
		}

		// for every .h click, make major, and minor others
		// when yes is clicked, click second bead
		this.find(".yes").on("click", function () {
			$beads.eq($(this).data("bead")).find(".h").click();
		});

        $.Sh.Ajax.call(this, {
            ShareFacebookUrl,
            facebookAppId,
            facebookRedirectUri,
			onloading: function (bloading) {

				if (bloading) {
					$.BodyLabel("hide");
					this.addClass("loadings");

				} else {
					this.removeClass("loadings");
				}

			},
			onfinish: function (data, trigger) {
				if (data.result) {
					// hide show according to new status

					$beads.removeClass("major collapsed").addClass("minor");

					$bead = trigger.closest(".bead");

					currentValue = $bead.removeClass("minor").addClass("major").data("param-value");
					// progpate
					if (!String($bead.attr("href")).isNullOrEmpty()) $bead.click();
				} else {
					// show error inplace
					$.BodyLabel(data.errorCode, { css: "gerrorbox", sticky: true });

				}

			},
			onprepost: function (trigger) {
				// if clicking on same bead, just toggle guts
				var $bead = trigger.closest(".bead");
				if ($bead.data("param-value") == currentValue) {
					$bead.toggleClass("collapsed");
					return false;
                } else {
                    if (window.DoCheckFb && String($bead.attr("href")).isNullOrEmpty() && this.options.ShareFacebookUrl) {
                        fbRequestReadStatus(function (data) {

                        }, $bead.data("param-value"), this.options.ShareFacebookUrl, this.options.facebookAppId, this.options.facebookRedirectUri);
					}

					var dparams = {};
					dparams[this.element.data("param-name")] = $bead.data("param-value");
					this.addparams(dparams);
					//this.data("dparams", dparams);
					return true;
				}
			}
		});



		var $t = this;

		$.OnDocumentClick(this, function (e) {
			if (!(jQuery.contains($t.get(0), e.target) || $(e.target).is($t))) {
				$beads.addClass("collapsed");
			}

		});

		//InplaceAjax.call(this);
	};
	

	$.Sh.RemoveSingle = function () {
		// find single-id, remove closest li
		var single_id = this.data("single-id");
		if (single_id) {
			this.find("[data-id=" + single_id + "]").closest("li").remove();
			// stop here//TODO: remove on paging update as well, and expand by default
			this.data("onfinally", function (data) {
				if (data.result) {
					// remove duplicate again
					//data.resultset.find("[data-id=" + single_id + "]").closest("li").remove();
					this.data("sh.pager").resultset.find("[data-id=" + single_id + "]").closest("li").remove();
				}
			});
		}

	};

	$.UiSh.updateBookPhoto = function (data) {
		if (data.result) {
			// update book in opener

			if (data.CurrentEdition) {
				var $imgcontainer = $(".editionphoto"),
				$link = $imgcontainer.find("a"),
				$img = $imgcontainer.find("img");
				// find a link, change attribute, then find or append img, change src	
				if ($link.length) $link.attr("href", data.d.original);
				if (!$img.length) $img = $("<img />").appendTo($link.length ? $link : $imgcontainer);
				$img.attr("src", data.d.src);
			}


			var target = String("[data-id={0}]").format(this.data("id"));
			// also update data-id matches
			$.imageBadge(target, this.data("targetcontext"), data.d.src);
		}
	};



	$.Sh.ReadingSlider = function () {
		// setup all links with the right behaviors
		var $havepages = this.find(".havepages"),//mm what is this?
			$nopages = this.find(".nopages"),
			pageCount = this.data("page-count"),
			pageProgress = this.data("progress"),
			$tmpl_reading_slider = this.find("#tmpl_reading_slider");

		var buildSlider = function () {
			var $slider = this.find(".slider"),
				isRTL = SiteDirection == "rtl" ? true : false,
				$value = this.find(".value"),
				$total = this.find(".total"),
				$sprogress = this.find(".sprogress"),
				$toggleArea = this.find(".togglearea").hide(),
				$this = this;


			// setup slider
			pageCount = parseInt($total.text());
			var progress = parseInt(pageProgress / pageCount * 100);

			$value.val(pageProgress);


			// if rtl do it different
			$slider.slider({
				range: isRTL ? "max" : "min",
				value: isRTL ? -1 * progress : progress,
				min: isRTL ? -100 : 0,
				max: isRTL ? 0 : 100,
				slide: function (event, ui) {
					$value.val(parseInt(Math.abs(ui.value) * pageCount / 100));
				},
				change: function (event, ui) {
					$toggleArea.fadeIn("fast");
				}
			});

			$value.on("blur", function () {

				if (this.value > pageCount) this.value = pageCount;
				$slider.slider("option", "value", parseInt((isRTL ? -1 * this.value : this.value) / pageCount * 100));


			});
			var validator = $.Sh.Validate.call($value);

			$.Sh.Ajax.call($sprogress, {
				onloading: function (bloading) {
					if (bloading) {
						$.BodyError("hide");
						$this.addClass("loadings");
					} else {
						$this.removeClass("loadings");
					}
				},
				onfinish: function (data) {
					// nothing really, just a message
					if (data.result) {
						$.BodyError("SAVED", { css: "gbodybox" });
						//also if 100% reached trigger a READ status
						$toggleArea.hide();
					} else {
						$.BodyError(data.errorCode, { css: "gerrorbox", sticky: true });
					}
				},
				onprepost: function () {
					if (!validator.validate()) {
						return false;
					}
					//var dparams = {};
					//dparams[this.data("param-name")] = $.trim($value.val());
					//this.data("dparams", dparams);
					// TODO: add other fields via toArray
					var arr = $this.formToJson();
					_debug(arr, "input array");
					this.addparams(arr);

					return true;
				}
			});

			
			//InplaceAjax.call($sprogress);
		};
		if (!pageCount) {

			var $spages = $nopages.find(".spages"),
				$tpages = $nopages.find(".tpages"),
				paramName = $spages.data("param-name"),
					$t = this;

			var tvalidator = $.Sh.Validate.call($tpages);

			$.Sh.Ajax.call($spages, {
				onprepost: function () {
					if (!tvalidator.validate()) {
						return false;
					}
					var dparams = {};
					dparams[paramName] = $.trim($tpages.val());
					this.addparams(dparams);
					return true;
				},
				onfinish: function (data) {
					if (data.result) {
						// show and hide after update, id rather use template and bind
						$t.html(($tmpl_reading_slider.mustache(data.d)));
						$.Behaviors($t.find(".actionarea"));
						buildSlider.call($t);
					} else {
						// show error inplace
						$.BodyError(data.errorCode, { css: "gerrorbox", sticky: true });

					}
				}
			});
			
			//InplaceAjax.call($spages);
		} else {
			// insert template and bhind

			this.html(($tmpl_reading_slider.mustache({ PageCount: pageCount })));
			$.Behaviors(this.find(".actionarea"));
			buildSlider.call(this);
		}
	};



	$.Sh.BookEdit = function () {
		var $bookeditbadge = $(".bookeditbadge"),
			$aboutedition = $(".aboutedition"),
			//$bookcats = $(".bookcategories"),
			$servertabs = $(".servertabs");
		
		//this.data("context", );
		$.Sh.ValidateForm.call(this, {
			context: this.closest(".directionwrapper")
		});


		var shsubmit = $.Sh.Submit.call(this);
		shsubmit.Ajax.options.onfinish = function (data) {
			if (data.result) {


				//if (data.loginUrl) {
				//	window.location.href = data.loginUrl;
				//} else {
				//	jqmDialogHide();
				//}
				$.Sh.Modals.hideAll();
				//TODO: what if author(s) are new
				// now update with data.d stuff in opener
				if (data.CurrentEdition) {
					$bookeditbadge.html(data.d.BookEditBadge);
					$.ShRewire($bookeditbadge);

					$aboutedition.html(data.d.AboutEdition);
					$.ShRewire($aboutedition);


				}
				// unlatch tabs
				if (window.Tabs) {
					window.Tabs["Editions"].data("latched", false);
					window.Tabs["Authors"].data("latched", false);


					if ($.inArray(window.Tabs.Selected.data("subid"), ["Editions", "Authors"]) > -1) {
						window.Tabs.Selected.trigger("click");
					}
				}
				
				$.BodyError("SAVED", { css: "gbodybox" });
			} else {
				$.BodyError(data.errorCode, { css: "gerrorbox", sticky: true });
			}


		};

		
		//InplaceSubmit.call(this);

	};


	$.Sh.BookTools = function() {
		// load once on click of h, and toggle class
		this.data("scope", "self");
		this.data("trigger", ">.h");
		this.data("target", ">.guts");
		var $trigger = this.find(">.h"),
			$t = this;

		$trigger.on("click", function () {
			$t.toggleClass("toggle");
		});

		$.Sh.LoadOnce.call(this);
	}
	// roll to rate
	// OBSOLETE
	//$.Sh.BookRate = function () {
	//	var $guts = this.find(">.guts"),
	//		$beads = $guts.find(">li"),
	//		$m = this.find(".m"),
	//		i = 0,
	//		$starrate = this.find(".starrate");

	//	$starrate.data("onfinally", function (data) {
	//		// sow message, and in a while remove bead
	//		$m.show();
	//		setTimeout(function () {
	//			$m.hide();
	//			$beads.eq(i++).fadeOut("fast", function () {
	//				if (i < $beads.length) {
	//					$beads.eq(i).fadeIn();


	//				} else {
	//					// show thank you message
	//					$m.text($.Res.ThankYouForContent).show();

	//				}

	//			});

	//		}, 1000);

	//	});

	//	$beads.first().show();
	//}


	// roll of recommended books
	$.Sh.BookRecommended = function () {
		// on h click, get new item and slide out of view
		var $guts = this.find(">.guts"),
			$beads = $guts.find(">li"),
			$h = this.find(">.h"),
			$this = this;

		// add sherroo label and onfinish of internal show label
		var label = $.Sh.Label.call(this, {
			text: $.Res.Excellent,
			css: "breclabel",
			location: "afterEnd",
			sticky: false,
			showCloseBtn: false
		});

		var i = 0;
		$h.on("click", function () {
			// go thru list and fade in and out
			label.hide();
			$h.data("canceled", true);
			$beads.eq(i++).fadeOut("fast", function () {
				if (i == $beads.length) {

					i = 0;
				}
				$beads.eq(i).fadeIn();
			});

		});
		$beads.first().show();

	}


	// cant find it, obsolete
	//$.Sh.UpdateReadingPane = function (data) {
	//	if (data.result) {
	//		var $input = this.closest(".input");
	//		$input.html(data.d);
	//		$.ShRewire($input);
	//	} else {
	//		$.BodyError(this.data("error") || data.errorCode, { css: "gerrorbox", sticky: false });
	//	}
	//}

	//function GetBid() {
	//	var $bid = $(".bid");
	//	if ($bid.val() && $bid.val() != -1) {
	//		this.data("params", { bid: $bid.val() });
	//		return true;
	//	}
	//	return false;
	//}

	$.imageBadge = function(target, context, src) {


		var $imgcontainer = $(target, context);

		if ($imgcontainer.length) {
			$link = $imgcontainer.find("a.img"),
			$img = $link.find("img");

			// find a link, change attribute, then find or append img, change src	
			if (!$img.length) $img = $("<img />").appendTo($link);
			$img.attr("src", src);
		}

	}


	$.UiSh.Bravo = function (data) {
		// do a bravo message
		if (data.result) {

			var $rec = this.closest('.recommended'),
				$h = $rec.find(">.h");
			$rec.data("sh.label").show();
			// after it fades out, swipe
			$h.data("canceled", false);

			setTimeout(function () {
				if (!$h.data("canceled")) {
					$h.click();
				}

			}, 3000);


		}
	};

    $.Sh.UploadEpub = function () {
        // on  hover change style, on click submit
        var $this = this;
        var form = $($this).closest('form');
        var formData = new FormData();

        $.Sh.Ajax.call(this, {
            type: "POST",
            url: form.attr('action'),
            data: formData,
            processData: false,
            contentType: false,
            onprepost: function (trigger) {
                this.options.data.append("Price", parseFloat(form.find("#Price").val()));
                this.options.data.append("archive", form.find("#archive")[0].files[0]);
                return true;
            },
            onfinish: function (data) {
            }
        });
	}


	$.Sh.UploadZipBook = function () {
		// on  hover change style, on click submit
		var $this = this;
		var form = $($this).closest('form');

		$.Sh.Ajax.call(this, {
			type: "POST",
			url: "/uploadtokenandurl",
			processData: false,
			contentType: false,

			onloading: function (bloading) {
				if (bloading) {
					$.BodyLabel("hide");
					this.addClass("loadings");
					//this.Loading(bloading);

					var topLocation = this.offset().top;

					if ($.props.$window.scrollTop() > topLocation) $('html, body').animate({ scrollTop: topLocation }, 'fast', 'swing');

				} else {
					//this.removeClass("loadings");
				}

			},

			onfinish: function (data) {
				$(this).addClass("loadings");
				var button = this;

				// If one file has been selected in the HTML file input element
				var file = form.find("#archive")[0].files[0];

				if (file != undefined) {
					var blobService = AzureStorage.Blob.createBlobServiceWithSas(data.Url, data.Sas);

					var customBlockSize = file.size > 1024 * 1024 * 32 ? 1024 * 1024 * 4 : 1024 * 512;
					blobService.singleBlobPutThresholdInBytes = customBlockSize;


					$(this).addClass("loadings");

					blobService.createBlockBlobFromBrowserFile('temoarchiveupload', data.Name, file, { blockSize: customBlockSize }, function (error, result, response) {
						finishedOrError = true;
						if (error) {
							alert("There's a problem uploading the file to azure storage");
						} else {
							var formx = $($this).closest('form');
							$.post(formx.attr('action'), { Price: formx.find("#Price").val(), ArchiveName: data.Name, FileName: file.name }, function (result) {
								$(button).removeClass("loadings");
							});
						}
					});
				}
				else {
					$(button).removeClass("loadings");
                }
			}
		});
	}

})(jQuery);
;

function BookEdit() {
	var $bookeditbadge = $(".bookeditbadge");

	this.data("onfinish", this.data("onfinish") || function (data) {
		if (data.result) {
			$.BodyError("SAVED", { css: "gbodybox" });
			
			if (data.d.loginUrl) {
				window.location.href = data.d.loginUrl;
			} else {
				jqmDialogHide();
			}
			// now update with data.d stuff in opener
			$bookeditbadge.html(data.d.BookEditBadge);
			ShRewire($bookeditbadge);


		} else {
			$.BodyError(data.errorCode, { css: "gerrorbox", sticky: true });
		}


	});
	
	InplaceSubmit.call(this);
	
};
;
;
(function ($) {
	if (!$.Sh) $.Sh = {};
	// this will never be a plugin!
	$.Sh.FollowButton = function () {

		// decide current state, onhover and click call with other state
		var events = { onsuggest: $.getFunction(this, "onsuggest") };
		//attachEvents.call(this, events);


		var $t = this,
			currentState = this.attr("data-state") == "true" ? true : false,
            paramName = this.data("param-name"),
            shareFacebookUrl = this.data("share-facebook-url"),
            facebookAppId = this.data("facebook-app-id"),
            facebookRedirectUri = this.data("facebook-redirect-uri");

		var _initW = this.is(".single") ? $t.css("width") : "auto";

		var makeState = function (state) {
			currentState = state;
			if (state) {
				// label = active, hoverlabel = Deactivate, add "on" css
				$t.addClass("on");

				$t.text($.Res.Following).attr("title", $.Res.Unfollow);
				$t.data("verb", $.Res.Unfollow);
				$t.data("label", $.Res.Following);
			} else {
				$t.removeClass("on");
				$t.text($.Res.NotFollowing).attr("title", $.Res.Follow);
				$t.data("verb", $.Res.Follow);
				$t.data("label", $.Res.NotFollowing);
			}


		};
		makeState(currentState);

        $.Sh.Ajax.call(this, {
            shareFacebookUrl,
            facebookAppId,
            facebookRedirectUri,
			onloading: function (bloading) {
				if (bloading) {
					// make this unavailable
					var _w = this.width();
					$.BodyLabel("hide");
					 
					this.text('').addClass("loadings").width(_w);

				} else {
					this.removeClass("loadings").width(_initW);

				}
			},
			onfinish: function (data) {
				if (data.result) {
					if (data.d) makeState(data.d[paramName]);
					//if (data.d[paramName]) $t.effect("bounce");
				} else {
					// pop a quick error an ignore
					$.BodyLabel(this.data("error") || data.errorCode, { css: "gerrorbox", sticky: true });
				}
			},
			onprepost: function () {
                if (window.DoCheckFb && !currentState && this.options.shareFacebookUrl) {
                    fbRequestFollow(function (data) {

                    }, this.options.shareFacebookUrl, this.options.facebookAppId, this.options.facebookRedirectUri);
				}

				var dParams = {};
				dParams[paramName] = currentState;

				if (events.onsuggest) $.extend(dParams, events.onsuggest.call(this.element));
				//this.data("dparams", dParams);
				this.addparams(dParams);

				return true;
			}
		});
		//this.data("onloading", function (bloading) {



		//});

		//this.data("onfinish", function (data) {

		//});
		//this.data("onprepost", function () {

		//});
		// hover 
		this.hover(function () {
			// show verb, and toggle on
			if ($t.is(".loadings")) return;
			$t.text($t.data("verb"));
			//(currentState) ? $t.removeClass("on") : $t.addClass("on");

		}, function () {
			// show label and toggle on
			if ($t.is(".loadings")) return;
			$t.text($t.data("label"));
			//(currentState) ? $t.addClass("on") : $t.removeClass("on");
		});

		//InplaceAjax.call(this);

	};


	
	$.Sh.FollowSuggest = function() {
		// does what follow button does,except that on finish, load next
		var $btnfollow = this.find(".btnfollow"), // are you sure?
			$this = this,
			$parent = this.parent(),
			$container = this.closest("section"),
			$list = this.closest("ul.listing"),
			$rem = this.find(".rem");

		var events = { onload: $.getFunction(this, "onload"), onsuggest: $.getFunction(this, "onsuggest") };
		//attachEvents.call(this, events);

		if (events.onload) events.onload.call($this);



		var onfinit = function (data) {
			if (data.result) {
				// get data.d and replace
				if (data.d && data.d != "") {
					$this.fadeOut(500, function () {
						$this.replaceWith(data.d);
						$.ShRewire($parent);
					});


				} else {
					setTimeout(function () {
						$parent.fadeOut(500, function () {
							$(this).remove();
							// do empty

							if (!$list.children().length) {
								$container.hide();
							}
						});
					}, 10);
				}
				// extned outside with returne data here, to push the new id to window.suggestionArray
			}
		};
		// eywww
		$btnfollow.data("onfinally", onfinit);
		$btnfollow.data("onsuggest", events.onsuggest);

		$.Sh.FollowButton.call($btnfollow);

		// attach same behavior to x
		$.Sh.Ajax.call($rem, {
			onfinish: onfinit,
			onprepost: function () {
				//if (events.onsuggest) this.data("dparams", events.onsuggest.call($this));
				if (events.onsuggest) this.addparams(events.onsuggest.call($this));
				return true;
			}
		});
		//$rem.data("onprepost", function () {
		
		//});
		//$rem.data("onfinish", onfinit);
		//InplaceAjax.call($rem);
	}
})(jQuery);
;
(function ($) {
	if (!$.Sh) $.Sh = {};
	if (!$.UiSh) $.UiSh = {};



	$.Sh.LazyLoad = function () {
		
		if (this.data("latched")) {
			return;
		}

		var ajax = $.Sh.Ajax.call(this, {
			onprepost: function(){
				if (this.element.data("latched")) {
					return false;
				}
				return true;
			},
			onloading: function(bloading) {
				if (bloading) {
					this.addClass("loadings");
				} else {
					this.removeClass("loadings");
				}
			},
			onfinish:function (data) {
				// place data inside content

				if (data.result == null) {
					if (this.data("greedy")) {
						var $new = this.parent();
						this.replaceWith(data);
						// bind
						$.ShRewire($new);
					} else {
						this.html(data);
						this.data("latched", true);
						$.ShRewire(this);
					}
				} else {
					// fail 

				}

			},
			silent: true,
			type: "GET",
			dataType: "html"
		})
		
		var _delay = this.data("delay") || 0;
		setTimeout(function () {
			ajax.ajax();
		}, _delay);

		//InplaceContent.call(this);
	};

	$.UiSh.clearOut = function (data) {
		// remove section if it is still empty
		if (data.result == null) {
			if ($.trim(this.text()) == "") {
				this.remove();
			}
		}
	};

})(jQuery);

;

(function ($) {
	if (!$.Sh) $.Sh = {};

	$.Sh.LoadOnce = function () {

		// this is a wrapper of InplaceAjax, simple, latch click and return false on prepost, load in target
		// this also must play well with ajax pager and mustache;

		var scope = this.data("scope") || "self";


		var $target = this.find(this.data("target") || ".guts"); // think again
		if (scope != "self") {
			$target = $(this.data("target"));
		}
		$.Sh.Ajax.call(this, {
			onloading: function (bloading) {
				if (bloading) {
					$.BodyLabel("hide");
					$target.addClass("loading");
				} else {
					$target.removeClass("loading");
				}
			}
			, onfinish: function (data) {
				if (data.result) {
					// replace target

					$target.html(data.d);
					$.ShRewire($target);
					// bind data.d.elements to mustache
					this.data("latched", true);

				} else {
					// error
					$.BodyLabel(data.errorCode, { css: "gerrorbox", sticky: true });
				}

			}
			, onprepost: function () {
				// if this is latched, just pop 
				if (this.element.data("latched")) {
					return false;
				} else {
					return true;
				}
			}
		});

		// if data-state = toggle, click
		if (this.data("state") == "toggle") {
			var _trigger = this.find(this.data("trigger"));
			setTimeout(function () {
				_trigger.click();
			}, 100);
			//simulateClick(this.find(this.data("trigger")).get(0));
		}

	}
})(jQuery);



;
(function ($) {
	if (!$.Sh) $.Sh = {};
	if (!$.UiSh) $.UiSh = {};

	window.document_title = $.props.doctitle;

	$.Sh.Poplist = function () {
		$.Sh.PopList.call(this);
	};

	$.Sh.ExpandList = function () {
		$.Sh.Expands.call(this, {
			togglecss: this.data("toggleclass") || "toggle"
		});
	};

	$.Sh.AutoComplete = function () {
		this.data("method", "POST");
		$.Sh.Autocomplete.call(this);
	};

	// ValidOptions becoms a behavior that sets an onvalidate only
	$.Sh.ValidOptions = function () {

		$.Sh.Validate.call(this, {
			required: true,
			errmsg: $.Res.Unselected,
			onvalidate: $.UiSh.Options
		});
	};

	$.Sh.ConfirmLink = function () {
		$.Sh.Confirm.call(this);
	};

	$.Sh.ValidCustom = function () {
		// this is similar to validate with type custome
		$.Sh.Validate.call(this, {
			type: "custom"
		});
	};
	
	
	// modal dialogs mapping
	$.props.$body.on("ModalsReady", function (e, context) {
		$.each($("[data-modal]", context || $.props.$body), function () {
			var $t = $(this);
			$t.data("style", $t.data("dialogstyle"));
			$t.data("span", $t.data("dialogspan"));
			var _d = $t.data("modaltrigger");

			if (_d) {
				//$t.data("modal-trigger", _d);
				$(_d).data("style", $(_d).data("dialogstyle"));
			}
		});

		$.props.$body.delegate(".modalhide", "click", function (e) {
			$.Sh.Modals.hideAll();
		});
	});

	$.UiSh.StoryOnFinally = function (data) {
		//StoryOnFinally(data);
		// nothing to call
	};



	$.Sh.InplaceAjax = function () {

		//*
		var $t = this;
		var onprepost = $.getFunction(this, "onprepost");

		var _ajax = $.Sh.Ajax.call(this, {
			onprepost: function (srcelement) {
				// call and change context
				var _r = true;

				if (onprepost) _r = onprepost.call(this.element, srcelement);
				if (this.element.data("dparams")) this.addparams(this.element.data("dparams"));
				return _r;
			}
		});

		if (this.data("dparams")) _ajax.addparams(this.data("dparams"));

		return;
	};
	
	
})(jQuery);




// Upload plugin
jQuery.extend({


	createUploadIframe: function (id, uri) {
		//create frame
		var frameId = 'jUploadFrame' + id;
		var iframeHtml = '<iframe id="' + frameId + '" name="' + frameId + '" style="position:absolute; top:-9999px; left:-9999px"';
		if (window.ActiveXObject) {
			if (typeof uri == 'boolean') {
				iframeHtml += ' src="' + 'javascript:false' + '"';

			}
			else if (typeof uri == 'string') {
				iframeHtml += ' src="' + uri + '"';

			}
		}
		iframeHtml += ' />';
		jQuery(iframeHtml).appendTo(document.body);

		return jQuery('#' + frameId).get(0);
	},
	createUploadForm: function (id, fileElementId, data) {
		//create form	
		var formId = 'jUploadForm' + id;
		var fileId = 'jUploadFile' + id;
		var form = jQuery('<form  action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
		if (data) {
			for (var i in data) {
				jQuery('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form);
			}
		}
		var oldElement = jQuery('#' + fileElementId);
		var newElement = jQuery(oldElement).clone();
		jQuery(oldElement).attr('id', fileId);
		jQuery(oldElement).before(newElement);
		jQuery(oldElement).appendTo(form);



		//set attributes
		jQuery(form).css('position', 'absolute');
		jQuery(form).css('top', '-1200px');
		jQuery(form).css('left', '-1200px');
		jQuery(form).appendTo('body');
		return form;
	},

	ajaxFileUpload: function (s) {
		// TODO introduce global settings, allowing the client to modify them for all requests, not only timeout		
		s = jQuery.extend({}, jQuery.ajaxSettings, s);
		var id = new Date().getTime()
		var form = jQuery.createUploadForm(id, s.fileElementId, (typeof (s.data) == 'undefined' ? false : s.data));
		var io = jQuery.createUploadIframe(id, s.secureuri);
		var frameId = 'jUploadFrame' + id;
		var formId = 'jUploadForm' + id;
		// Watch for a new set of requests
		if (s.global && !jQuery.active++) {
			jQuery.event.trigger("ajaxStart");
		}
		var requestDone = false;
		// Create the request object
		var xml = {}
		if (s.global)
			jQuery.event.trigger("ajaxSend", [xml, s]);
		// Wait for a response to come back
		var uploadCallback = function (isTimeout) {
			var io = document.getElementById(frameId);
			try {
				if (io.contentWindow) {
					xml.responseText = io.contentWindow.document.body ? io.contentWindow.document.body.innerHTML : null;
					xml.responseXML = io.contentWindow.document.XMLDocument ? io.contentWindow.document.XMLDocument : io.contentWindow.document;

				} else if (io.contentDocument) {
					xml.responseText = io.contentDocument.document.body ? io.contentDocument.document.body.innerHTML : null;
					xml.responseXML = io.contentDocument.document.XMLDocument ? io.contentDocument.document.XMLDocument : io.contentDocument.document;
				}
			} catch (e) {
				if (console) console.log(e);
			}
			if (xml || isTimeout == "timeout") {
				requestDone = true;
				var status;
				try {
					status = isTimeout != "timeout" ? "success" : "error";
					// Make sure that the request was successful or notmodified
					if (status != "error") {
						// process the data (runs the xml through httpData regardless of callback)
						var data = jQuery.uploadHttpData(xml, s.dataType);
						// If a local callback was specified, fire it and pass it the data
						if (s.success)
							s.success(data, status);

						// Fire the global callback
						if (s.global)
							jQuery.event.trigger("ajaxSuccess", [xml, s]);
					} else
						if (console) console.log(xml);
				} catch (e) {
					status = "error";
					if (console) console.log(e);
				}

				// The request was completed
				if (s.global)
					jQuery.event.trigger("ajaxComplete", [xml, s]);

				// Handle the global AJAX counter
				if (s.global && ! --jQuery.active)
					jQuery.event.trigger("ajaxStop");

				// Process result
				if (s.complete)
					s.complete(xml, status);

				jQuery(io).unbind()

				setTimeout(function () {
					try {
						jQuery(io).remove();
						jQuery(form).remove();

					} catch (e) {
						// jQuery.handleError(s, xml, null, e);
						if (console) console.log(e);
					}

				}, 100)

				xml = null

			}
		}
		// Timeout checker
		if (s.timeout > 0) {
			setTimeout(function () {
				// Check to see if the request is still happening
				if (!requestDone) uploadCallback("timeout");
			}, s.timeout);
		}
		try {

			var form = jQuery('#' + formId);
			jQuery(form).attr('action', s.url);
			jQuery(form).attr('method', 'POST');
			jQuery(form).attr('target', frameId);
			if (form.encoding) {
				jQuery(form).attr('encoding', 'multipart/form-data');
			}
			else {
				jQuery(form).attr('enctype', 'multipart/form-data');
			}
			jQuery(form).submit();

		} catch (e) {
			if (console) console.log(e);
		}

		jQuery('#' + frameId).load(uploadCallback);
		return { abort: function () { } };

	},

	uploadHttpData: function (r, type) {
		var data = !type;
		data = type == "xml" || data ? r.responseXML : r.responseText;
		// If the type is "script", eval it in global context

		if (type == "script")
			jQuery.globalEval(data);
		// Get the JavaScript object, if JSON is used.
		if (type == "json")
			eval("data = " + data);
		// evaluate scripts within html
		if (type == "html")
			jQuery("<div>").html(data).evalScripts();

		return data;
	}
});

;

(function ($) {

	if (!$.Sh) $.Sh = {};


	$.Sh.Mix = function () {
		// mix results with home sections
		var $list = this.find(".storylist"),
			len = $list.find(">li").length;
		var $boxes = $(".hbox");


		// insert a box after every 3 items in list, until its run out
		$.each($boxes, function (i, o) {
			if (len > i * 3) {
				$(o).insertAfter($list.children().eq(i * 4)).wrap("<li class='special' />");
			}
		});
	};

})(jQuery);
;
(function ($) {
	if (!$.Sh) $.Sh = {};
	$.Sh.HomeStories = function() {
		// hit source, get 20 results and oldest date, loop thru them, then after x time, get new 20 and replace
		// assumptions: stories are not quite frequent, and page user isnt going to spend a lot of time here
		var $tmpl = $("#tmpl_paged_array"),
			$target = this.find("ul:first"),
			_loop = parseInt(this.data("loop")),
			_initial = null,
			_wrapper = this.find(".wraps"),
			$resultset = "",
			_speed = parseInt(this.data("speed")),
			_interval = parseInt(this.data("interval")),
			_h = 0;

		var _ajax = $.Sh.Ajax.call(this, {
			onfinish: function (data) {
				if (data.result) {
					// 3abbi el ul using template
					window.clearInterval(_initial);

					// append mustache template
					$resultset = $($tmpl.mustache(data.d)).appendTo($target);

					// assign to element data anything that needs to be reposted
					//this.data("dparams", data.pageparams);
					_ajax.addparams(data.pageparams);

					if ($resultset.length) {
						// height
						_h = $resultset.filter("li:first").outerHeight(true);

						// wrap
						_wrapper.height(_h * 4); // TODO: customize
					}

					// now scroll thru them 
					_initial = window.setInterval(Loop, _interval);


				}
			},
			silent: true
		});
		
		//this.data("onfinish", function (data) {
		
		//});

		var Loop = function () {
			// animate margin top to - _height
			$target.animate({ marginTop: -1 * _h }, _speed, function () {
				// cut first element, move it to last, change margintop to  0
				$target.find("li:first").appendTo($target);
				$target.css({ marginTop: 0 });

			});



		};
		//var $t = $("<span class='hidden trigger' />").appendTo(this);

		//this.data("trigger", $t);

		//InplaceAjax.call(this);

		_ajax.ajax();
		//$t.click();

		// after _loop, click again to get fresh 20s
		window.setInterval(function () {
			//$t.click();
			_ajax.ajax();
		}, _loop);
	}
})(jQuery);

//OBSOLETE
//function RollMessage() {
//	// in few seconds, fade out the current background into the new one
//	// also change message, and bull selected

//	var $t = this.find(".target"),
//		$beads = this.find(".beads").find("li"),
//		$bg = this.closest(this.data("bg")),
//		$current = $beads.filter(".current");
//	if (!$current.length) {
//		$current = $beads.first().addClass("current");
//	}
//	$.each($beads, function () {
//		var $this = $(this);
//		$this.data("message", $this.text());
//		$this.text('');
//		$this.on("click", function () {
//			// roll
//			window.clearInterval(_int);
//			$beads.removeClass("current");
//			$this.addClass("current");
//			$current = $this;
//			Roll();
//			// restart interval
//			Start();
//		});

//	});


//	var Roll = function () {
//		$t.text($current.data("message"));
//		$bg.css({ "background-image": "url(" + $current.data("img") + ")" });

//	};

//	var Start = function () {
//		_int = window.setInterval(function () {
//			// click next
//			$current = $current.next();
//			if (!$current.length) $current = $beads.first();
//			$current.click();

//		}, 5000);
//	};

//	Roll();
//	this.show();

//	// interval
//	var _int = null;
//	Start();
//}

;


(function ($) {
	if (!$.Sh) $.Sh = {};


	$.Sh.Review = function () {


		this.data("context", this.closest(".directionwrapper"));
		$.Sh.ValidateForm.call(this);

		var ToAdd = false,
			TabSubId = this.data("subid"),
			$targetcontext = $(this.data("targetcontext")),
			fnOnsuccess = function (data) {
				// update new div
				if (ToAdd) {
					$targetcontext.removeClass($targetcontext.data("none-class"));
					// if dataid -1 i need to update em tag in Reviews tab

				}
				// select review or quote tab! shit!
				if (window.Tabs) {
					window.Tabs[TabSubId].trigger("click");
				}


				// close dialog, unless commanded to travel to antoher url
				if (data.result) {
					$.Sh.Modals.hideAll();

				}
			};

		if (this.data("id") == -1) {
			ToAdd = true;

			$.Sh.AjaxAdd.call(this, {
				onaftersuccess: fnOnsuccess,
				target: $targetcontext.data("target"),
				dir: "top"
			});


		} else {
			// change target for edit field

			//var $targetElement = $target.find();

			this.data("target", String("[data-id={0}]").format(this.data("id")));
			$.Sh.AjaxEdit.call(this, {
				onaftersuccess: fnOnsuccess
			});
			//InplaceEdit.call(this);
		}
	};

	$.Sh.Quote = function () {
		$.Sh.Review.call(this);
	};


	$.Sh.Share = function () {
		var _submit = $.Sh.Submit.call(this);
		_submit.Ajax.options.onfinish = function (data) {
			if (data.result) {
				$.Sh.Modals.hideAll();
				$.BodyError("SAVED", { css: "gbodybox" });


			} else {
				$.BodyError(data.errorCode, { css: "gerrorbox", sticky: true });
			}

		};


		//InplaceSubmit.call(this);
	}
})(jQuery);
;
(function ($) {
	if (!$.Sh) $.Sh = {};

	$.Sh.SearchPane = function () {

		// basic features:
		// keyword, filters and paged segment, do not add behaviors here
		// grab all data-params into every call, according to element call, reload segments (or maybe check returend data for segment)


		// target
		var $kw = $(this.data("kw")),
			kw_param_name = $kw.data("param-name"),
			$categories = this.find(".categories"),
			$resultlist = this.find(".resultslist"),
			$resultcount = this.find(".resultcount"),
			$lists = this.find(".slist"); // there could be multiple

		
		var shlabel = $resultlist.ShBadge(null, null, "inlisterrorbox").data("sh.label");

		// update booklist
		var updateList = function (data) {
			// put results in booklist
			if (data.result) {

				$resultlist.html(data.ResultList);

				$.ShRewire($resultlist);
			} else {
				$.BodyLabel(data.errorCode, { css: "gerrorbox" });
				shlabel.show({ text: $.Res.Tiny[data.errorCode] });
				//$resultlist.ShError("show", $body.data("Errors.Tiny")[data.errorCode]);
			}
		};

		// update catgoires
		var updateCats = function (data) {

			// reload cats
			if (data.result) {
				$categories.html(data.Categories);
				Categories.call($categories);
				$.ShRewire($categories);

				$resultcount.text(data.ResultCount);
				$resultlist.html(data.ResultList);
				$.ShRewire($resultlist);
			} else {
				$.BodyLabel(data.errorCode, { css: "gerrorbox" });
				shlabel.show({ text: $.Res.Tiny[data.errorCode] });
				//$resultlist.ShError("show", $body.data("Errors.Tiny")[data.errorCode]);
			}
		};

		var onLoading = function (bloading) {
			if (bloading) {
				//$resultlist.ShError("hide");
				shlabel.hide();
				$resultlist.html("");
				$resultlist.addClass("loading");

			} else {
				$resultlist.removeClass("loading");
			}
		};

		var prePost = function () {
			var dparams = {};
			var _this = this;
			if ($kw.length) {
				var _val = $kw.ShTrim();
				dparams[kw_param_name] = _val;
			}
			this.addparams(dparams);

			this.addparams($categories.data("params"), "qs");
			//$.extend(dparams, toJson($categories.data("params")));
			$.each($lists, function () {
				//var _list = $(this);
				//$.extend(dparams, toJson(_list.data("selected").data("params")));
				_this.addparams($(this).data("sh.filterlist").options.selected.data("params"), "qs");
			});



			//this.data("dparams", dparams);
			return true;

		};
		// on data list change, and on category change subtrig 
		// rewire categories
		$categories.data("onloading", function (bloading) {
			// empty book list
			onLoading(bloading);
		});
		$categories.data("onprepost", function (trigger) {

			this.element.data("params", trigger.data("params"));
			//this.addparams(trigger.data("params"), "qs");
			return prePost.call(this);

		});
		$categories.data("onfinish", function (data) {
			// receive data and place in target
			// update subtrig with data-params selected
			updateCats(data);
		});
		var Categories = function () {
			$.each(this.find("section"), function () {
				// fix for new Expands
				if ($(this).find(".guts").is(":visible")) $(this).data("state", "show");
			});
			this.data("trigger", ".btrig");
			this.ApplyBehavior("Ajax");

		};

		Categories.call($categories);


		// every list has its own set of behavior elemetns
		$lists.each(function () {
			var _this = $(this);

			// add hidden hyper link
			var $trigger = $("<a class='hidden' />").appendTo(_this);
			_this.data("trigger", "a.hidden");

			_this.data("onchange", function (selected) {
				// trigger
				$trigger.trigger("click");

			});
			_this.data("onloading", function (bloading) {
				// add loading effect to target
				onLoading(bloading);
			});

			_this.data("onfinish", function (data) {
				// load data into target or show error
				updateList(data);

			});

			_this.data("onprepost", function () {
				return prePost.call(this);

			});


			_this.ApplyBehavior("Ajax");
		});



	};



	$.Sh.SearchBox = function () {

		var $text = this.find(".stxt").addClass("clearoff"),
			paramName = $text.data("param-name"),
			$trigger = $('<span class="searchbtn"></span>').insertAfter($text);
		//this.data("trigger", ".searchkw");

		this.data("trigger", ".searchbtn");


		var $pageElement = $(this.data("pagelement"));


		//if (this.data("min-chars") == null) this.data("min-chars", 2);
		// add onloading and onfinish 
		var $target = $(this.data("target"));

		var tlabel = $target.ShBadge(null, null, "inlisterrorbox").data("sh.label");

		$.Sh.Ajax.call(this, {
			onprepost: function () {
				// append kw
				var p = {};
				p[paramName] = $text.val();
				//this.data("dparams", {});
				//this.data("dparams")[paramName] = $text.val();
				this.addparams(p);

				return true;
			},
			onfinish: function (data) {
				//$target.ShError("hide");
				tlabel.hide();
				$target.html("");
				if (data.result) {
					if (!String(data.d).isNullOrEmpty()) {
						$target.html(data.d);
						$target.scrollTop(0);
						$.ShRewire($target);
					} else {
						tlabel.show({ text: $.Res.Detailed["NO_RESULTS"] });
						//$target.ShError("show", $body.data("Errors.Detailed")["NO_RESULTS"]);
					}
					// really? cant find this one
					if ($pageElement.length) {
						$pageElement.data("dparams", data.pageparams);
						$.Behaviors($pageElement);
					}

				}
				else {
					$.BodyLabel(data.errorCode, { css: "gerrorbox" });
					tlabel.show({ text: $.Res.Tiny[data.errorCode] });
					//$target.ShError("show", $body.data("Errors.Tiny")[data.errorCode]);
				}
				$("#search-term").text($text.val());
				if ($text.val()) {
					$('#search-term-div').removeClass('hidden');
				}
				var searchTerm = $text.val();
				var url = window.location.href;
				var newurl = url.replace(/(kw=)[^\&]+/, '$1' + searchTerm);
				if (url == newurl && searchTerm != null && searchTerm != '') {
					url = url.split("?")[0];
					newurl = url + '?kw=' + searchTerm;
				}
				window.history.pushState("", "", newurl);

			},
			onloading: function (bload) {
				if (bload) {
					this.find(".stxt").addClass("loadings");
					$target.html("").addClass("loading");
				} else {
					this.find(".stxt").removeClass("loadings");
					$target.removeClass("loading");
				}
			}
		});

		$text.on("keypress", function (e) {
			if (e.which == 13 && !e.shiftKey) {
				e.preventDefault();
				// if it is visible and not disabled, click
				//if ($link.data("pass")) simulateClick(link);
				$trigger.click();
			}
		});
		//$trigger.data("pass", true);
		//this.data("link", $trigger);
		//this.data("input", "input:text");
		//EnterClick.call(this);

	};


})(jQuery);;
(function ($) {
	if (!$.Sh) $.Sh = {};

	$.Sh.ServerTabs = function () {

		var jumps = 0;
		var selectedTab = this.data("selected").toLowerCase(),
			menu = this.data("menu-selector") || ".sectionmenu",
			mmenu = this.data("mmenu-class") || "msectionmenu",
			$bar = $("<div class=selectedbar />").insertAfter(this),
			$this = this;

		if (!window.Tabs) {
			window.Tabs = {};
		}

		/******************TODO: EXTEND to include auto clickers, scrollers and incrementers****************************/
		this.data("onload", function (o) {
			// then for every element apply loadonce
			$.each(o.items, function () {
				// add target
				var $t = $(this);
				$t.data("target", "#" + $t.data("subid"));
				$t.data("scope", "body");
				// also find selected in this
				$t.find("a").on("click", function (e) {
					// deactivate seo link
					e.preventDefault();
					$t.click();
					return false;
				});
				if ($t.data("subid").toLowerCase() == selectedTab) {

					o.selectedItem = $t;
					window.Tabs.Selected = $t;
					$bar.width($t.width()); // once is enough
					jumps = $t.outerWidth(true);
				}
				$.Sh.LoadOnce.call($t);

				if ($t.data("assoc")) {
					// i dont like the delegation attachment

					$.props.$body.on("click", $t.data("assoc"), function () {
						$t.click();
					});
				}
				window.Tabs[$t.data("subid")] = $t;

			});

		});
		this.data("onselect", function (tabs, selected) {
			// scroll up only if needed, my god this is a mess
			var _offsetParent = this.target.closest(menu),
				_subtract = _offsetParent.position().top + _offsetParent.outerHeight(true),
				fTop = selected.offset().top - ((_offsetParent.css("position") == "fixed") ? _subtract : 0),
				_url = this.selectedItem.data("url") || this.selectedItem.data("src"),
				_subid = this.subid;

			if (window.Tabs) {
				window.Tabs.Selected = this.selectedItem;
			}
			// if mobile do something different
			if ($.props.$body.is("." + mmenu)) {

				this.target.closest(menu).removeClass("mobilecontainer");
				$.props.$body.removeClass(mmenu);
				$.props.$window.scrollTop(selected.offset().top - $("header").height());


			} else {
				if ($.props.$window.scrollTop() > fTop) $('html, body').animate({ scrollTop: fTop }, 'fast', 'swing');
				SiteDirection == "rtl" ? $bar.css("right", this.selectedItem.index() * jumps) : $bar.css("left", this.selectedItem.index() * jumps);

				//_debug(this.target.closest(".sectionmenu").position().top, "true offset")
			}
			if (window.history.pushState && _url != undefined) {

				var queryString = '';

				var urlParams = new URLSearchParams(window.location.search);
				if (urlParams.get('utm_source')) {
					queryString += "utm_source=" + urlParams.get('utm_source') + "&";
				}
				if (urlParams.get('utm_medium')) {
					queryString += "utm_medium=" + urlParams.get('utm_medium') + "&";
				}
				if (urlParams.get('utm_campaign')) {
					queryString += "utm_campaign=" + urlParams.get('utm_campaign') + "&";
				}
				if (urlParams.get('utm_term')) {
					queryString += "utm_term=" + urlParams.get('utm_term') + "&";
				}
				if (urlParams.get('utm_content')) {
					queryString += "utm_content=" + urlParams.get('utm_content');
				}

				if (queryString != "") {
					_url += "?" + queryString;
                }


				//TODO:AYYASH REMEMBER TO BRING BACK 
				if (_url != undefined) {
					window.history.pushState({ SubId: _subid }, _subid, _url);
                }
				
				//document.title = selected.data("title") + " | " + $.props.doctitle;
			}
		});

		$.Sh.ClientTabs.call(this);

	};

	window.onpopstate = function (e) {
		// get state and click tab to mimic a servertab click
		if (e.state && e.state.SubId && window.Tabs) {
			// click tab of subid, TODO back
			if (window.Tabs[e.state.SubId]) {
				window.Tabs[e.state.SubId].trigger("click");
			}
		}
	};

	// Unused
	//function ServerTabClick() {
	//	// in server tabs, find the one that matches the subid and click
	//	var $t = this;
	//	this.on("click", function () {
	//		var $tabs = $($t.data("target"));
	//		if ($tabs.length) {
	//			$tabs.find(String("[data-subid='{0}']").format($t.data("subid"))).click();

	//		}
	//	});
	//}


	// LEGACY
	$.fn.ShClientTabs = function (method) {
		var settings = {
			onSelect: false,
			onLoad: false,
			delay: null,
			toggle: false
		};

		var methods = {
			init: function (options) {

				if (options) {
					$.extend(settings, options);
				}


				return this.each(function () {

					var $this = $(this),
					 data = $this.data('sh.clienttabs');

					// If the plugin hasn't been initialized yet
					if (!data) {

						// gather all tabs, and bind click to add remove tab selected class, then fire associated onselect, pass the current tab

						var $items = $this.find("li"),
							$selectedItem = $items.filter(".selected");

						$items.click(function (e) {
							//e.preventDefault();
							var $t = $(this);

							methods.select.call($this, $t); // global select function if exists

						});

						$this.data('sh.clienttabs', {
							target: $this,
							items: $items,
							selectedItem: $selectedItem,
							onSelect: settings.onSelect,
							onLoad: settings.onLoad,
							toggle: settings.toggle
						});

						// fire onload
						(settings.onLoad) ? settings.onLoad($this.data('sh.clienttabs')) : null;
						// click selected item (delay)
						if (settings.delay === "true") {
							setTimeout(function () { $this.data('sh.clienttabs').selectedItem.click(); }, 1000);
						} else {
							$this.data('sh.clienttabs').selectedItem.click();
						}

					}
				});


			},
			select: function (src) {

				// set src to be seelctedd, and reset "this" to non selected
				var s = this.data('sh.clienttabs');
				$.extend(s, { srcElement: src });

				s.items.removeClass("selected");
				if (!s.toggle || !src.is(s.selectedItem)) {
					// new, if toggling and currnetly selected, dont show it, else show it
					src.addClass("selected");
					s.selectedItem = src;
				} else {
					s.selectedItem = null;
				}
				// fire onselect, broadcast the data info which contains the src

				(s.onSelect) ? s.onSelect(s) : null;
				return this;
			}

		};

		if (methods[method]) {
			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
		} else if (typeof method === 'object' || !method) {
			return methods.init.apply(this, arguments);
		} else {
			$.error('Method ' + method + ' does not exist');
		}



	};
	// LEGACY
	$.Sh.ClientTabs = function () {

		var $subclienttabs = $(this.data("subselector")).hide(),
			long_threshold = this.data("longlist") || 8,
			med_threshold = this.data("medlist") || 4,
			delay = this.data("delay") || false,
			toggle = this.data("toggle") || false,
			$canclers = $subclienttabs.find(".canceltab"),
			$this = this,
			selectedTarget = null;

		var events = { onselect: $.getFunction(this, "onselect"), onload: $.getFunction(this, "onload") };
		//attachEvents.call(this, events);


		this.ShClientTabs({
			delay: delay,
			toggle: toggle,
			onLoad: function (o) {

				events.onload ? events.onload.call($this, o) : null;

			},
			onSelect: function (o) {
				$subclienttabs.hide();
				// check selectedelement
				if (o.selectedItem) {
					o.subid = $(o.srcElement).data("subid"); // # data("guts")
					selectedTarget = $("#" + o.subid).show();

				}
				// TODO change to pass o and call on $this
				events.onselect ? events.onselect.call(this, $subclienttabs, selectedTarget) : null;

			}
		});
		var clienttabs = this.data("sh.clienttabs");
		$canclers.click(function (e) {
			e.preventDefault();
			// close the selected tab
			clienttabs.selectedItem.click();
		});
		var items = clienttabs.items.length;

		// if client tabs more than long add long, if more than medium add med, then add short
		if (items > parseInt(long_threshold)) {
			$subclienttabs.addClass("long");
			this.addClass("long");
		} else if (items > parseInt(med_threshold)) {
			$subclienttabs.addClass("med");
			this.addClass("med");
		} else {
			$subclienttabs.addClass("short");
			this.addClass("short");
		}

	};


})(jQuery);


;
(function ($) {
	if (!$.Sh) $.Sh = {};



	/// for mobile

	$.Sh.PrepareHeader = function () {
		// move things around when behaviors are ready
		var $profile = this.find(".profilelist").clone(false).removeClass().addClass("mprofile");

		$("nav.main").prepend($profile);
		// as it scrolls down, remove header
		var $this = this;
		if (this.hasClass("public")) {
			$.props.$window.on("scroll", function () {
				if ($.props.$window.scrollTop() > 500) {
					$this.removeClass("public");
				} else {
					$this.addClass("public");
				}
			});
		}
	};


	$.Sh.ExpandMenu = function () {
		// find menus and on click show hide, when hidden, go back to original state

		this.on("click", function (e) {
			// add special class to whole body
			$("header").toggleClass("mobilecontainer");
			setTimeout(function () {
				$.props.$body.toggleClass("mobilemenu");
			}, 10);

		});
	};

	$.Sh.ExpandSectionMenu = function () {
		this.on("click", function (e) {
			// add special class to whole body
			$(this).closest(".sectionmenu").toggleClass("mobilecontainer");
			setTimeout(function () {
				$.props.$body.toggleClass("msectionmenu");
			}, 10);

		});
	};

	$.Sh.SubHeroMenu = function () {
	// this is so hard coded because its temp
		// make a layer of two sections, expand and collapse second section timely
		var $sbs = this.appendTo($(".sbstrgt")).show();
		

		$sbs.ShExpands({
			src: "h6",
			effect: "none",
			hidesrc: ".hs",
			onInit: function () {
				
				// wait for 60 seconds and force show
				var _this = this;
				setTimeout(function () {
					_this.show();
					
					
				}, 60000);
			}
		});

	};


	var _menuOs = [];
	$.Sh.Sticky = function () {
		// find measuring element, find height and location, on scroll up, insert an empty box with height same as height, keep hidden

		var _menuHeight = this.outerHeight(true),
			_height = (this.data("edge") == "bottom") ? _menuHeight : 0,
			_offset = this.offset().top + _height,
			$t = this,
			_subtract = $("header").outerHeight(true);
		var $mobilelist = $(".msectionlist");
		var _Enabled = !$mobilelist.is(":visible");

		_menuOs.push(this);
		// add inner container
		this.wrapInner("<div class='inner' />");
		var $cushion = $("<div class='cushion' />").insertAfter(this).height(_menuHeight).hide();

		$.props.$body.on("BehaviorsReady", function (e, context) {

			if (!context) {

				_menuHeight = $t.outerHeight(true);
				_height = ($t.data("edge") == "bottom") ? _menuHeight : 0;
				_offset = $t.offset().top + _height;

				$cushion.height($t.outerHeight(true));
				_subtract = $("header").outerHeight(true);

			}
		});


		// measure current offsets to stick
		$.props.$window.on("scroll", function () {

			if (!_Enabled) return;
			var _scrollTop = $.props.$window.scrollTop();

			if (_scrollTop + _subtract >= _offset) {
				$t.addClass("fixed");
				$cushion.show();

			} else {
				$t.removeClass("fixed");
				$cushion.hide();

			}
		});

		// add onresize

		$.props.$window.on("resize", function () {
			// recalculate numbers
			$t.removeClass("fixed");
			_menuHeight = $t.outerHeight(true),
			_height = ($t.data("edge") == "bottom") ? _menuHeight : 0,
			_offset = $t.offset().top + _height;
			$cushion.height(_menuHeight);
			if (!$mobilelist.is(":visible")) {
				_Enabled = true;
				$.props.$window.trigger("scroll");
			} else {
				_Enabled = false;
				$t.removeClass("fixded");
				$cushion.hide();
			}



		});

		// find expandsingle
		this.find(".expandsingle,.exdesc .h").on("click", function () {


			$t.removeClass("single");
			setTimeout(function () {
				$.props.$window.trigger("resize");
			}, 100);

		});

	};
	$.Sh.ActionMenu = function () {
		// when certain level reached, change top position animated
		// also add a class
		var $t = this,
			_addOffset = this.offset().top,
			_height = this.height(),
			_plug = false;

		var $mobilelist = $(".mactionlist");

		$mobilelist.on("click", function (e) {
			// add special class to whole body
			$t.toggleClass("mobilecontainer");
			setTimeout(function () {
				$.props.$body.toggleClass("mactionmenu");
			}, 10);

			$mobilelist.toggleClass("clicked");

		});

		$mobilelist.addClass('loadedpage');

		$('body').prepend($mobilelist);

		// on click of elements inside remove mobile menu
		this.find(".btnquote,.btnreview, .read, .starrate, .btnread").on("click", function () {
			// remove mobile menu
			if ($.props.$body.is(".mactionmenu")) {
				$t.removeClass("mobilecontainer");
				$.props.$body.removeClass("mactionmenu");
			}
		});

		$.props.$window.on("scroll", function () {
			if (!_plug) {
				_plug = true;
				setTimeout(function () {
					if ($mobilelist.is(":visible")) {
						$t.removeClass("tight");

						_plug = false;
						return;
					}
					var _scrollTop = $.props.$window.scrollTop();
					// find menus position if fixed and add offset
					var _menusOffset = 0;
					$.each(_menuOs, function (i, o) {
						if (o.hasClass("fixed")) {
							_menusOffset += parseInt(o.css("top"));

						}
					});
					$t.offset({ top: _scrollTop + _addOffset + _menusOffset });
					if (_height < _scrollTop) {
						$t.addClass("tight");

					} else {
						$t.removeClass("tight");

					}
					_plug = false;
				}, 1000);
			}


		});


	};


})(jQuery);



;

(function ($) {
	if (!$.Sh) $.Sh = {};

	$.Sh.Story = function () {
		// add story to target


		$.Sh.ValidateForm.call(this);
		var $targetcontext = $(this.data("targetcontext"));

		var _addajax = $.Sh.AjaxAdd.call(this, {
			onaftersuccess: function (data) {
				// close dialog, unless commanded to travel to antoher url
				if (data.result) {
					
					$targetcontext.removeClass($targetcontext.data("none-class"));
					var e = jQuery.Event("keyup");
					e.which = 46;
					e.keyCode = 46;

					this.find("textarea").trigger(e);

					$.Sh.Modals.hideAll();
				}
			},
			target: $targetcontext.data("target"),
			dir: "top"
		});

		this.find(":text").on("keypress", function (e) {
			if (e.which == 13 && !e.shiftKey) {
				e.preventDefault();

				_addajax.options.trigger.click();
			}
		});

		//this.data("onaftersuccess", function (data) {
		//});


		//this.data("location", "top");

		//this.data("target", $targetcontext.data("target"));


		//InplaceAdd.call(this);
	};



	$.Sh.onBoardingStory = function () {
		//ValidateForm.call(this);
		$.Sh.ValidateForm.call(this);

		var $post = this.find(".post"),
			$done = this.find(".donestory");

		var _submit = $.Sh.Submit.call(this);
		_submit.Ajax.options.onfinish = function (data) {
			if (data.result) {
				// remove current and show success message
				$done.fadeIn();
			} else {
				// append error
				$.BodyError(data.errorCode, { css: "gerrorbox" });
			}
		};


		//InplaceSubmit.call(this);
	};

	$.Sh.Comment = function () {
		// the context is not unique, ekhs
		this.data("targetcontext", this.closest(this.data("targetcontext")));

		// define context
		this.data("context", this);

		$.Sh.ValidateForm.call(this);
		var _addajax = $.Sh.AjaxAdd.call(this);
		//InplaceAdd.call(this);
	};
})(jQuery);
;


(function ($) {

	if (!$.Sh) $.Sh = {};


	$.Sh.UploadPhoto = function () {

		var $imgcontainer = this.find(".img"),
			uploadsrc = this.attr("data-uploadsrc"),
			$img = $imgcontainer.find("img"),
			$this = this;
		if (!$img.length) $img = $("<img />").appendTo($imgcontainer);

		if ($img.attr("src") == null) $img.hide();

		var events = { onfinish: $.getFunction(this, "onfinish") };
		//attachEvents.call(this, events);


		this.delegate(".cfile", "change", function (e) {

			// find file again because ajax uploader clones and replaces
			var $cfile = $(this);
			$cfile.data("onvalidate", "Size");
			var validator = $.Sh.Validate.call($cfile);

			// validate first
			if (!validator.validate()) {
				validator.label.hide();
				var code = "FILE_LARGE";
				if (validator.code == "format") {
					code = "INVALID_photo_FORMAT";
				}
				$.BodyLabel(code, { css: "gerrorbox", sticky: true });
				return false;
			}
			//if (!validator.validate()) {
			//	validator.label.hide();
			//	$.BodyError("INVALID_photo_FORMAT", { css: "gerrorbox", sticky: true });
			//	return false;
			//} else if ($cfile.data("size") && (!validateSize.call($cfile))) {

			//	$cfile.ShError("hide");
			//	$.BodyError("FILE_LARGE", { css: "gerrorbox", sticky: true });
			//	return false;

			//}

			//$cfile.ShError("hide");
			validator.label.hide();
			$.BodyLabel("hide");
			//window.$stickylabel.ShError("hide");

			$this.addClass("processing");

			_debug(uploadsrc, "source");
			$.ajaxFileUpload
			(
				{
					url: uploadsrc,
					secureuri: false,
					fileElementId: $cfile.attr("name"),
					dataType: 'xml',
					success: function (data, status) {

						$this.removeClass("processing");

						// data is an xml string, parse it and reduce it to text
						data = $(data).text();

						// then json it
						data = jQuery.parseJSON(data);
						_debug(data, "returned");
						if (data.result) {
							// change image 
							// if $img does not exist create it here
							$.BodyLabel("SAVED", { css: "gbodybox" });
							$img.attr("src", data.d.src).show();
						} else {
							_debug(data.error, "error");
							$.BodyLabel(data.errorCode, { css: "gerrorbox" });
						}
						// on finish
						(events.onfinish) ? events.onfinish.call($this, data) : null;
					},
					error: function (data, status, e) {
						$this.removeClass("processing");
						$.BodyLabel(data.errorCode, { css: "gerrorbox" });
						_debug(data.error, "error");
					}
				}
			)


		});

	}


	$.Sh.GetPhoto = function () {
		// on change of cfile field, get local photo to display in photo badge after validation

		if (!window.FileReader) {
			// make field visible and return
			this.addClass("nofr");
			return;

		}
		var $imgcontainer = this.find(".img"),
			$img = $imgcontainer.find("img"),
			$cfile = this.find(".cfile"),
			$this = this;
		if (!$img.length) $img = $("<img />").appendTo($imgcontainer);

		if ($img.attr("src") == null) $img.hide();
		$cfile.data("onvalidate", "Size");

		$cfile.on("change", function (e) {
			// where is the change coming from



			$img.attr("src", "").show();
			$cfile.data("onvalidate", "Size");
			var validator = $cfile.data("sh.validate");

			//$cfile.ShError("hide");
			validator.label.hide();

			// validate first
			//if (!$cfile.ShError("validate")) {

			//	$.BodyLabel("INVALID_photo_FORMAT", { css: "gerrorbox", sticky: true });
			//	this.value = ""; // ie fires another change event!

			//	return false;
			//} else if ($cfile.data("size") && (!validateSize.call($cfile))) {


			//	$.BodyLabel("FILE_LARGE", { css: "gerrorbox", sticky: true });
			//	this.value = ""; // ie fires another change event!

			//	return false;

			//}

			if (!validator.validate()) {
				validator.label.hide();
				var code = "FILE_LARGE";
				if (validator.code == "format") {
					code = "INVALID_photo_FORMAT";
				}

				$.BodyLabel(code, { css: "gerrorbox", sticky: true });
				return false;
			}
			else if ($cfile.val() != "") {

				// get file and load, if browser does not support it?!
				//window.$stickylabel.ShError("hide");
				$.BodyLabel("hide");

				if (this.files && this.files[0]) {

					var reader = new FileReader();
					reader.onload = function (e) {
						$img.attr("src", e.target.result);
					};
					reader.readAsDataURL(this.files[0]);

				}
			}
		});

	}

})(jQuery);
;


(function ($) {
	if (!$.Sh) $.Sh = {};
	if (!$.UiSh) $.UiSh = {};

	$.Sh.AbValidateForm = function () {
		// set offset to header then propagate
		this.data("offset", $("header").height());
		// also make onclick once
		var $btns = this.find(this.data("trigger"));
		this.on("submit", function (e) {
			// deactivate save btn for good
			$btns.off("click");
			$btns.attr("disabled", true);
			$btns.addClass("disabled");

		})
		$.Sh.ValidateForm.call(this);
	};


	$.Sh.CheckValidEmail = function () {

		var $t = this,
			$tick = $("<span class='gtick'></span>").insertAfter($t).hide(),
			//params = this.data("params"),
			email_param_name = this.data("param-name") || "sEmail",
			$assoc = $(this.data("assoc")),
			validator = $t.data("sh.validate"),
			src = this.attr("data-src");

		//if (params) {
		//	params = toJson(params);
		//}


		this.on("shAsync", function () {
			// call again just in case
			if (!validator.options.asyncvalid) {

				validator.label.show({ text: $.Res.Tiny["EMAIL_EXISTS"] });
				//$(this).ShError("show", $body.data("Errors.Tiny")["EMAIL_EXISTS"]);
			}
		});

		var _ajax = $.Sh.Ajax.call(this, {
			silent: true,
			onprepost: function () {
				$tick.hide().removeClass("visible");
				$assoc.hide();
				if (validator.validate()) {
					// im sending sEmail as the email to check for
					var o = {};
					o[email_param_name] = $t.ShTrim();
					//if (params) {
					//	$.extend(o, params);
					//}
					// silent ajax
					//postService.call($t, src, o, function (data) {

					//});

					this.addparams(o);
					return true;
				}
				return false;
			},
			onfinish: function (data) {
				//this.removeClass("loadings");
				if (data.result) {
					//$t.ShError("show", $body.data("Errors.Tiny")["EMAIL_EXISTS"]);
					validator.label.show({ text: $.Res.Tiny["EMAIL_EXISTS"] });
					validator.options.asyncvalid = false;
					//$t.data("async-valid", false);
					// if data.content appears not null, go ahead and show assoc
					if (data.d) {
						$assoc.html(data.d).slideDown();

					}
				} else {
					// append a "tick" next o textbox
					$tick.show().addClass("visible");
					//$t.data("async-valid", true);
					validator.options.asyncvalid = true;
				}
			}
		});

		this.on("change", function (e) {
			//$tick.hide().removeClass("visible");
			//$assoc.hide();

			//if (validator.validate()) {
			//	// im sending sEmail as the email to check for
			//	var o = {};
			//	o[email_param_name] = $t.ShTrim();
			//	//if (params) {
			//	//	$.extend(o, params);
			//	//}
			//	// silent ajax

			//	$t.addClass("loadings");
			//	postService.call($t, src, o, function (data) {
					
			//	});
			//}

			_ajax.ajax();
		});


	};


	$.UiSh.IfPasswords = function () {
		var $pwold = this.element.find(".pwold"),
			$pwnew = this.element.find(".pwnew");

		// if pwold and new exist, fire validation on new only
		if (!$pwold.val().isNullOrEmpty() || !$pwnew.val().isNullOrEmpty()) {
			//return $pwnew.ShError("validate");
			return $pwnew.data("sh.validate").validate();
			
		}

		return true;
	};


	// this is a show password field, but not a validator
	$.Sh.Masked = function () {
		// append a checkbox next to it, check onchange
		var $this = this;
		setTimeout(function () {
			var $chk = $this.find(".smask"),
			$mask = $this.find(".mask"),
			$input = $("<input type='text' />");

			// inser a similar text input
			$input.addClass($mask.attr("class"))
				.attr("placeholder", $mask.attr("placeholder"))
				.insertBefore($mask)
				.hide();

			var $masks = $this.find(".mask");

			$masks.on("change", function () {
				$masks.not(this).val(this.value);
			});

			$chk.removeAttr("checked");
			$chk.on("change", function () {
				// toggle fields
				if (this.checked) {
					$mask.hide();
					$input.show();

				} else {
					$input.hide();
					$mask.show();
				}
			});

			//$this.data("onvalidate", function () {
			//	// change to showing only password field then validate it
			//	$chk.removeAttr("checked");
			//	$input.hide();
			//	$mask.show();
			//	return $mask.ShError("validate");

			//});
			$.Sh.Validate.call($this, {
				custome: true,
				onvalidate: function (label) {
					$chk.removeAttr("checked");
					$input.hide();
					$mask.show();
					return $mask.data("sh.validate").validate();
				}
			});
			//$this.ApplyBehavior("ValidCustom");
		}, 100);



	};


})(jQuery);




;

(function ($) {
	if (!$.Sh) $.Sh = {};
	if (!$.UiSh) $.UiSh = {};

	// keep this, add whatever behaviors need to be rewired after ajax placement
	$.rewireload = function (context) {
		// rewire load with context, if null, rewire all body
		//Placeholders();

		

		// reestablish google links if available
		if (window.DataGA) {
			DataGA(context);
		}

	};
	$.Sh.FocusDefault = function (context) {

		// focusme by default here
		setTimeout(function () {
			if (context.find(".focusme").length == 1) {
				context.find(".focusme").focus();
			}
		}, 10);
	};

	
	$.Sh.LoadMessage = function () {
		// onload pop message
		var $this = this;
		$(function () {
			var _options = $this.data("options");

			$.BodyLabel("", $.extend({ text: $.Res.Done, css: "gbodybox", sticky: true }, _options));

		});
	};

	$.UiSh.jqmDialogHide = function () {
		$.Sh.Modals.hideAll();
	};

	// Not in use
	//$.UiSh.popBasket = function () {
	//	var $t = this;
	//	$.OnDocumentClick(this, function (e) {
	//		if (!jQuery.contains($t.get(0), e.target)) {
	//			$t.data("sh.expands").hide();
	//			//$t.ShExpandList("hide");
	//		}
	//	})


	//};

	$.props.$body.on("BehaviorsReady", function (e, context) {
		$.Sh.FocusDefault(context || $.props.$body);
		!$.props._BehaviorsReady || $.Sh.fixFooter();
	});
	$(function () {
		// track errors
		window.errors = 0;
		$.rewireload();

		$.ThrowOut();

	});
	// migration
	$.BodyError = function (key, options) {
		$.BodyLabel(key, options);
	};

	// dp this for homepage image
	$.Sh.HomeBG = function () {
		// add few effects to background?
		var isrc = this.data("bg"),
			$this = this;

		$('<img/>').attr('src', isrc).load(function () {
			$(this).remove();
			$this.css("background-image", "url({0})".format(isrc));
		});
	};

	$.Sh.fixFooter = function () {
		if ($.props.$body.find(".contentwrapper").length) {
			var _contentwrapper = $.props.$body.find(".contentwrapper"),
				_footer = $("footer"),
				_contentInnerWrapper = $.props.$body.find(".contentwrapper .wrapper")
				_gap = _contentwrapper.offset().top - -_footer.outerHeight(true),
				_minheight = $.props.height - _gap;

			_contentwrapper.css("min-height", _minheight);
			_contentInnerWrapper.removeClass('min-height-auto');

			$(window).on("resize", function () {
				_minheight = $.props.height - _gap;
				_contentwrapper.css("min-height", _minheight);
				_contentInnerWrapper.removeClass('min-height-auto');
			});
		}
	};


	$.Sh.PrettyNumber = function () {
		if ($.trim(this.text()) === "") return;
		this.text(String(this.text()).toPrettyNumber());
	};


	$.Sh.PrettyPrice = function () {
		this.text(String(this.text()).toPrettyPrice());
	};


	$.UiSh.openExpandList = function () {
		if (this.closest(".expandfs").length) {
			this.closest(".expandfs").data("sh.expands").show();
		}
	};


	$.Sh.TextContentExpander = function () {
		// add guts to depth
		// find 75 words

		var depth = this.data("depth") || 50;
		var tolerance = this.data("tolerance") || 7;
		var gutDepth = this.data("gut-depth"); // to allow longer text to be truncated

		var element = this.find(".content"),
			$h = this.find(".h"),
			extension = this.find(".contentextension");
		this.data("show-label", $h.data("show-label"));
		this.data("hide-label", $h.data("hide-label"));

		// remove br elements

		var text = element.text().replace(/(\n)+/gim, "xNLx").split(" ");

		if (text.length < depth + tolerance) {
			// add guts to extension only
			extension.addClass("guts");
			$.Sh.ExpandLabel.call(this, {
				guts: ".guts"
			});

		} else {
			var str = "";
			for (var i = 0; i < depth; i++) {

				str += text[i] + " ";

			}
			var gutLength = gutDepth && gutDepth > 0 && gutDepth < (text.length - depth) ? gutDepth + depth : text.length;

			str += "<span class=guts>"; // this is cheaper than creating element
			for (i; i < gutLength; i++) {
				str += text[i] + " ";
			}
			str += "</span>";

			element.html(str.replace(/xNLx/gim, "<br />"));
			// now append extesion as it is to element guts
			element.find(".guts").append(extension);

			$.Sh.ExpandLabel.call(this, {
				guts: ".guts"
			});
			
		}


	};


	// added march 20
	$.Sh.ClassToggler = function () {
		var $src = this.find(this.data("src") || ".h"),
			clss = this.data("toggle") || "toggle",
			duration = this.data("duration") || 0,
			$this = this;
		//if (!$target.length) $target = this;
		$src.on("click", function () {
			$this.toggleClass(clss, duration);
		});
	};


	$.Sh.CurtainBox = function () {
		// find out original height

		var $src = this.find(".h"),
				isDisabled = this.data("disabled"),
				clss = this.data("toggle") || "toggle",
				$guts = this.find(">.guts"),
				end_height = 0,
				init_height = $guts.height(),
				state = this.data("state"),
				$this = this;

		$guts.contents().each(function () {

			if (this.nodeType === 1) {
				end_height += $(this).outerHeight(true);
				if (this.nodeName == "BR") {
					// wait before applying hack
					$(this).remove();
				}
			}
			if (this.nodeType === 3) {
				if ($.trim(this.nodeValue) != "") {
					var x = $(this).wrap("<p></p>");
					end_height += x.parent().outerHeight(true);
				}
			}
		});
		// if total height less than inintial height, remove behavior
		//_debug({ endh: end_height, inig: init_height },"height")
		if (end_height <= init_height) {

			$src.remove();
			$guts.height("auto");
		} else {

			if (!isDisabled) {
				$src.on("click", function () {

					($this.is("." + clss)) ? $guts.height(init_height) : $guts.height(end_height);
					$this.toggleClass(clss);
				});
				if (state == "toggle") {

					$src.click();
				}
			} else {
				$src.addClass("idle");
			}
		}
	};



	$.UiSh.deleteParent = function (data) {
		// remove which parent after done

		if (data.result) {
			var $t = this;

			setTimeout(function () {
				$t.closest($t.data("which") || "li").fadeOut(500, function () {

					$(this).remove();

				});
			}, 10);
		} else {

			$.BodyError(this.data("error") || data.errorCode, { css: "gerrorbox", sticky: true });
		}
	};


	$.Sh.ListDisplay = function () {
		// toggle class of target according to selected
		var $target = $(this.data("target")),
			$span = this.find("span"),
			classes = $span.map(function () { return $(this).data("css"); }).get().join(" ");
		$initial = $span.filter(this.data("initial"));



		$target.addClass($initial.data("css"));
		$initial.addClass("selected");

		$span.on("click", function () {
			// remove classes and add selected class
			$target.removeClass(classes);
			$target.addClass($(this).data("css"));
			$span.removeClass("selected");
			$(this).addClass("selected");
		});
	};


	$.Sh.ProgressBar = function () {
		this.progressbar({ max: this.data("max"), value: this.data("value") });
	};


	$.Sh.HomePopStories = function() {

		var t = this;

		setTimeout(function () {
			t.trigger("click");
			
		}, 2500);
	};



	$.Sh.CheckProfile = function () {

		var paramName = this.data("param-name"),
			$chk = this.find(":checkbox"),
			curr = $chk.is(":checked");

		this.data("onprepost", function () {

			curr = !curr;
			var props = {};
			props[paramName] = curr;
			setTimeout(function () {
				if (!curr) {
					$chk.get(0).checked = false;
				} else {
					$chk.get(0).checked = true;
				}
			}, 100);
			//this.data("params", props);
			this.addparams(props);

			return true;
		});
		this.data("onfinish", function () {
			// silence

		});
		$.Sh.Ajax.call(this);
	}


	$.ThrowOut = function () {
		$(document).ajaxSuccess(function (event, xhr, settings, data) {

			if (data.result && data.loginUrl) {
				window.location.href = data.loginUrl;
			}
		});
	};


})(jQuery);

;
function FacebookMoneky(setWritePermissionUrl, disableFacebookBuggingUrl) {

    this._setWritePermissionUrl = setWritePermissionUrl;
    this._disableFacebookBuggingUrl = disableFacebookBuggingUrl;
}

FacebookMoneky.prototype = {

    syncFacebookInfo: function (cb) {

        var self = this;

        $.post(self._setWritePermissionUrl, {}, function (result) {
            cb(); //callback
        });
    },

    dismissFacbeookBugging: function () {

        var self = this;

        $.post(self._disableFacebookBuggingUrl, {}, function (result) {
            //do nothing
        });
    }
};


;
function FbAccess() {
    // read state and decide whether to popup or not... after popup call another function to close popup and update state

    var $this = this;

    this.on("change", function (e) {
        var _state = e.target.checked;

        // if data-check is true then do check lenno user has not given access
        if ($this.data("check") && _state) {

            FB.login(function (response) {

                if (typeof (response.authResponse) === "undefined") {

                    $this.find("input").prop("checked", false);

                    return;
                }

                var scopes = response.authResponse.grantedScopes;

                if (scopes) {

                    //if (scopes.indexOf('publish_actions') != -1) {

                        fbInfo.onLoginSuccess(function () {

                            $this.data("check", false); // dont chagne again

                            window.DoCheckFb = false;

                            $this.find("input").prop("checked", true);
                        });
                    //}
                    //else {

                    //    fbInfo.onLoginDismiss();

                    //    window.DoCheckFb = false;
                    //    // on any response change the state of checkbox according to permissions (true for permission granted, false for not)
                    //    $this.find("input").prop("checked", false);
                    //}
                }

            }, {
                scope: '',
                auth_type: 'rerequest',
                return_scopes: true
            });
        }
    });
}

function fbRequest(fnOnContinue) {

    _debug("fbrequest");

    var self = this;

    if (typeof (FB) !== "undefined") {

        FB.login(function (response) {

            var scopes = response.authResponse.grantedScopes;

            if (scopes) {

                //if (scopes.indexOf('publish_actions') != -1) {

                    fbInfo.onLoginSuccess(function () {

                        window.DoCheckFb = false;

                        fnOnContinue.call(self, { result: true });
                    });
               /* }
                else {
                    fbInfo.onLoginDismiss();

                    window.DoCheckFb = false;
                    fnOnContinue.call(self, { result: true });
                }*/
            }
        }, {
            scope: '',
            auth_type: 'rerequest',
            return_scopes: true
        });
    }
    else {
        window.DoCheckFb = false;
        fnOnContinue.call(self, { result: true });
    }

}
function fbShowShareDialog(object) {
    var str = "";
    for (var key in object) {
        if (str != "") {
            str += "&";
        }
        str += key + "=" + encodeURIComponent(object[key]);
    }
    str = "https://www.facebook.com/dialog/share?" + str;
    $("#facebookShareDialog").attr('src', str);
    $(".facebook-loading-dialog").trigger("click");
    $('#facebookShareDialog').load(function () {
        var locationHref;
        if ($("#facebookShareDialog").contents().get(0)) {
            locationHref = $("#facebookShareDialog").contents().get(0).location.href;
        }
        if (locationHref && locationHref !== $("#facebookShareDialog").attr('src')) {
            $.Sh.Modals.hideAll();
        }
        else {
            $.Sh.Modals.hideAll();
            $(".facebook-share-dialog").trigger("click");
        }
    });
}

function fbOpenGraphShareDialog(object) {
    if (FB.getAuthResponse()) {
        object.access_token = FB.getAuthResponse()['accessToken'];
        fbShowShareDialog(object)
    }
    else {
        FB.login(function (response) {
            if (response.authResponse) {
                var access_token = FB.getAuthResponse()['accessToken'];
                object.access_token = access_token;
                fbShowShareDialog(object)
            }
        }, { scope: '' });
    }
}

$.Sh.checkFacebookDialogRedirect = function () {
    var urlParams = new URLSearchParams(window.location.search);
    if (urlParams.has('facebook-dialog-redirect')){
        window.parent.$.Sh.Modals.hideAll();
    }
};
$.Sh.closeFacebookDialog = function () {
    $(".fb-dialog-close").on("click", function () { 
        $.Sh.Modals.hideAll();
    });
};
function fbRequestAgreeBtn(fnOnContinue, shareFacebookUrl, facebookAppId, facebookRedirectUri) {
    
    _debug("fbrequest");
    var self = this;
    if (typeof (FB) !== "undefined") {
        var object = {
            app_id: facebookAppId,
            method: 'share',
            action_type: 'og.likes',
            action_properties: JSON.stringify({
                "object": shareFacebookUrl,
            }),
            display: 'iframe',
            redirect_uri: facebookRedirectUri,
            auth_type: 'rerequest',
            return_scopes: true
        };
        fbOpenGraphShareDialog(object);
        //FB.login(function (response) {

        //    fbInfo.onLoginSuccess(function () {
                 
        //        window.DoCheckFb = false;

        //        fnOnContinue.call(self, { result: true });
        //    });
            
        //}, {
        //        method:'share',
        //        action_type: 'og.likes',
        //        action_properties: JSON.stringify({
        //            "object": shareFacebookUrl,
        //        }),
        //        display: 'iframe',
        //        auth_type: 'rerequest',
        //        return_scopes: true
        //    });
    }
    else {
        window.DoCheckFb = false;
        fnOnContinue.call(self, { result: true });
    }

}

function fbRequestRateBook(fnOnContinue, rateValue, rateScale, shareFacebookUrl, facebookAppId, facebookRedirectUri) {

    _debug("fbrequest");
    var self = this;
    if (typeof (FB) !== "undefined") {
        var object = {
            app_id: facebookAppId,
            method: 'share',
            display: 'iframe',
            redirect_uri: facebookRedirectUri,
            action_type: 'books.rates',
            action_properties: JSON.stringify({
                "rating:value": rateValue,
                "rating:scale": rateScale,
                "book": shareFacebookUrl,
            }),
            auth_type: 'rerequest',
            return_scopes: true
        };
        fbOpenGraphShareDialog(object);
        //FB.login(function (response) {

        //    var scopes = response.authResponse.grantedScopes;

        //    if (scopes) {

        //        fbInfo.onLoginSuccess(function () {

        //            window.DoCheckFb = false;

        //            fnOnContinue.call(self, { result: true });
        //        });
        //    }
        //}, {
        //        method: 'share_open_graph',
        //        action_type: 'books.rates',
        //        action_properties: JSON.stringify({
        //            "rating:value": rateValue,
        //            "rating:scale": rateScale,
        //            "book": shareFacebookUrl,
        //        }),
        //        auth_type: 'rerequest',
        //        return_scopes: true
        //    });
    }
    else {
        window.DoCheckFb = false;
        fnOnContinue.call(self, { result: true });
    }

}


function fbRequestReadStatus(fnOnContinue, readValue, shareFacebookUrl, facebookAppId, facebookRedirectUri) {

    _debug("fbrequest");
    var self = this;
    var readprop = { "book": shareFacebookUrl},
        readType = "books.reads";
    if (readValue == 0) {
        readType = "books.wants_to_read";
    }
    else if (readValue == 2) {
        readprop["progress:percent_complete"] = 100;
        readprop["progress:timestamp"] = new Date().getTime();
    }

    if (typeof (FB) !== "undefined") {
        var object = {
            app_id: facebookAppId,
            method: 'share',
            display: 'iframe',
            redirect_uri: facebookRedirectUri,
            action_type: readType,
            action_properties: JSON.stringify(readprop),
            auth_type: 'rerequest',
            return_scopes: true
        };
        fbOpenGraphShareDialog(object);
        //FB.login(function (response) {

        //    var scopes = response.authResponse.grantedScopes;

        //    if (scopes) {

        //        fbInfo.onLoginSuccess(function () {

        //            window.DoCheckFb = false;

        //            fnOnContinue.call(self, { result: true });
        //        });
        //    }
        //}, {
        //        method: 'share_open_graph',
        //        action_type: readType,
        //        action_properties: JSON.stringify(readprop),
        //        auth_type: 'rerequest',
        //        return_scopes: true
        //    });
    }
    else {
        window.DoCheckFb = false;
        fnOnContinue.call(self, { result: true });
    }

}


function fbRequestFollow(fnOnContinue, shareFacebookUrl, facebookAppId, facebookRedirectUri) {

    _debug("fbrequest");
    var self = this;
    if (typeof (FB) !== "undefined") {
        var object = {
            app_id: facebookAppId,
            method: 'share',
            display: 'iframe',
            redirect_uri: facebookRedirectUri,
            action_type: 'og.follows',
            action_properties: JSON.stringify({
                "profile": shareFacebookUrl,
            }),
            auth_type: 'rerequest',
            return_scopes: true
        };
        fbOpenGraphShareDialog(object);
        //FB.login(function (response) {

        //    var scopes = response.authResponse.grantedScopes;

        //    if (scopes) {

        //        fbInfo.onLoginSuccess(function () {

        //            window.DoCheckFb = false;

        //            fnOnContinue.call(self, { result: true });
        //        });
        //    }
        //}, {
        //        method: 'share_open_graph',
        //        action_type: 'og.follows',
        //        action_properties: JSON.stringify({
        //            "profile": shareFacebookUrl,
        //        }),
        //        auth_type: 'rerequest',
        //        return_scopes: true
        //    });
    }
    else {
        window.DoCheckFb = false;
        fnOnContinue.call(self, { result: true });
    }

}
;
/*!
 * jQuery Smart Banner
 * Copyright (c) 2012 Arnold Daniels <arnold@jasny.net>
 * Based on 'jQuery Smart Web App Banner' by Kurt Zenisek @ kzeni.com
 */
!function ($) {
    var SmartBanner = function (options) {
        this.origHtmlMargin = parseFloat($('html').css('margin-top')) // Get the original margin-top of the HTML element so we can take that into account
        this.options = $.extend({}, $.smartbanner.defaults, options)

        var standalone = navigator.standalone // Check if it's already a standalone web app or running within a webui view of an app (not mobile safari)
          , UA = navigator.userAgent

        // Detect banner type (iOS or Android)
        if (this.options.force) {
            this.type = this.options.force
        } else if (UA.match(/Windows Phone 8/i) != null && UA.match(/Touch/i) !== null) {
            this.type = 'windows'
        } else if (UA.match(/iPhone|iPod/i) != null || (UA.match(/iPad/) && this.options.iOSUniversalApp)) {
            if (UA.match(/Safari/i) != null &&
               (UA.match(/CriOS/i) != null ||
               window.Number(UA.substr(UA.indexOf('OS ') + 3, 3).replace('_', '.')) < 6)) this.type = 'ios' // Check webview and native smart banner support (iOS 6+)
        } else if (UA.match(/\bSilk\/(.*\bMobile Safari\b)?/) || UA.match(/\bKF\w/) || UA.match('Kindle Fire')) {
            this.type = 'kindle'
        } else if (UA.match(/Android/i) != null) {
            this.type = 'android'
        }

        // Don't show banner if device isn't iOS or Android, website is loaded in app or user dismissed banner
        if (!this.type || standalone || this.getCookie('sb-closed') || this.getCookie('sb-installed')) {
            return
        }

        // Calculate scale
        this.scale = this.options.scale == 'auto' ? $(window).width() / window.screen.width : this.options.scale
        if (this.scale < 1) this.scale = 1

        // Get info from meta data
        var meta = $(this.type == 'android' ? 'meta[name="google-play-app"]' :
            this.type == 'ios' ? 'meta[name="apple-itunes-app"]' :
            this.type == 'kindle' ? 'meta[name="kindle-fire-app"]' : 'meta[name="msApplication-ID"]');
        if (meta.length == 0) return

        // For Windows Store apps, get the PackageFamilyName for protocol launch
        if (this.type == 'windows') {
            this.appId = $('meta[name="msApplication-PackageFamilyName"]').attr('content');
        } else {
            // Try to pull the appId out of the meta tag and store the result
            var parsedMetaContent = /app-id=([^\s,]+)/.exec(meta.attr('content'));

            if(parsedMetaContent) {
              this.appId = parsedMetaContent[1];
            } else {
              return;
            }
        }

        this.title = this.options.title ? this.options.title : meta.data('title') || $('title').text().replace(/\s*[|\-·].*$/, '')
        this.author = this.options.author ? this.options.author : meta.data('author') || ($('meta[name="author"]').length ? $('meta[name="author"]').attr('content') : window.location.hostname)
        this.iconUrl = meta.data('icon-url');
        this.price = meta.data('price');

        // Set default onInstall callback if not set in options
        if (typeof this.options.onInstall === 'function') {
            this.options.onInstall = this.options.onInstall;
        } else {
            this.options.onInstall = function() {};
        }

        // Set default onClose callback if not set in options
        if (typeof this.options.onClose === 'function') {
            this.options.onClose = this.options.onClose;
        } else {
            this.options.onClose = function() {};
        }

        // Create banner
        this.create()
        this.show()
        this.listen()
    }

    SmartBanner.prototype = {

        constructor: SmartBanner

      , create: function() {
            var iconURL
              , link=(this.options.url ? this.options.url : (this.type == 'windows' ? 'ms-windows-store:navigate?appid=' : (this.type == 'android' ? 'market://details?id=' : (this.type == 'kindle' ? 'amzn://apps/android?asin=' : 'https://itunes.apple.com/' + this.options.appStoreLanguage + '/app/id'))) + this.appId)
              , price = this.price || this.options.price
              , inStore=price ? price + ' - ' + (this.type == 'android' ? this.options.inGooglePlay : this.type == 'kindle' ? this.options.inAmazonAppStore : this.type == 'ios' ? this.options.inAppStore : this.options.inWindowsStore) : ''
              , gloss=this.options.iconGloss === null ? (this.type=='ios') : this.options.iconGloss

            if (this.type == 'android' && this.options.GooglePlayParams) {
              link = link + '&referrer=' + this.options.GooglePlayParams;
            }

            var banner = '<div id="smartbanner" class="'+this.type+'"><div class="sb-container"><a href="#" class="sb-close">&times;</a><span class="sb-icon"></span><div class="sb-info"><strong>'+this.title+'</strong><span>'+this.author+'</span><span>'+inStore+'</span></div><a href="'+link+'" class="sb-button"><span>'+this.options.button+'</span></a></div></div>';
            (this.options.layer) ? $(this.options.appendToSelector).append(banner) : $(this.options.appendToSelector).prepend(banner);

            if (this.options.icon) {
                iconURL = this.options.icon
            } else if(this.iconUrl) {
                iconURL = this.iconUrl;
            } else if ($('link[rel="apple-touch-icon-precomposed"]').length > 0) {
                iconURL = $('link[rel="apple-touch-icon-precomposed"]').attr('href')
                if (this.options.iconGloss === null) gloss = false
            } else if ($('link[rel="apple-touch-icon"]').length > 0) {
                iconURL = $('link[rel="apple-touch-icon"]').attr('href')
            } else if ($('meta[name="msApplication-TileImage"]').length > 0) {
              iconURL = $('meta[name="msApplication-TileImage"]').attr('content')
            } else if ($('meta[name="msapplication-TileImage"]').length > 0) { /* redundant because ms docs show two case usages */
              iconURL = $('meta[name="msapplication-TileImage"]').attr('content')
            }

            if (iconURL) {
                $('#smartbanner .sb-icon').css('background-image','url('+iconURL+')')
                if (gloss) $('#smartbanner .sb-icon').addClass('gloss')
            } else{
                $('#smartbanner').addClass('no-icon')
            }

            this.bannerHeight = $('#smartbanner').outerHeight() + 2

            if (this.scale > 1) {
                $('#smartbanner')
                    .css('top', parseFloat($('#smartbanner').css('top')) * this.scale)
                    .css('height', parseFloat($('#smartbanner').css('height')) * this.scale)
                    .hide()
                $('#smartbanner .sb-container')
                    .css('-webkit-transform', 'scale('+this.scale+')')
                    .css('-msie-transform', 'scale('+this.scale+')')
                    .css('-moz-transform', 'scale('+this.scale+')')
                    .css('width', $(window).width() / this.scale)
            }
            $('#smartbanner').css('position', (this.options.layer) ? 'absolute' : 'fixed')
        }

      , listen: function () {
            $('#smartbanner .sb-close').on('click',$.proxy(this.close, this))
            $('#smartbanner .sb-button').on('click',$.proxy(this.install, this))
        }

      , show: function(callback) {
            var banner = $('#smartbanner');
            banner.stop();

            if (this.options.layer) {
                banner.animate({top: 0, display: 'block'}, this.options.speedIn).addClass('shown').show();
                $(this.pushSelector).animate({paddingTop: this.origHtmlMargin + (this.bannerHeight * this.scale)}, this.options.speedIn, 'swing', callback);
            } else {
                if ($.support.transition) {
                    banner.animate({top:0},this.options.speedIn).addClass('shown');
                    var transitionCallback = function() {
                        $('html').removeClass('sb-animation');
                        if (callback) {
                            callback();
                        }
                    };
                    $(this.pushSelector).addClass('sb-animation').one($.support.transition.end, transitionCallback).emulateTransitionEnd(this.options.speedIn).css('margin-top', this.origHtmlMargin+(this.bannerHeight*this.scale));
                } else {
                    banner.slideDown(this.options.speedIn).addClass('shown');
                }
            }
        }

      , hide: function(callback) {
            var banner = $('#smartbanner');
            banner.stop();

            if (this.options.layer) {
                banner.animate({top: -1 * this.bannerHeight * this.scale, display: 'block'}, this.options.speedIn).removeClass('shown');
                $(this.pushSelector).animate({paddingTop: this.origHtmlMargin}, this.options.speedIn, 'swing', callback);
            } else {
                if ($.support.transition) {
                    if ( this.type !== 'android' )
                      banner.css('top', -1*this.bannerHeight*this.scale).removeClass('shown');
                    else
                      banner.css({display:'none'}).removeClass('shown');
                    var transitionCallback = function() {
                        $('html').removeClass('sb-animation');
                        if (callback) {
                            callback();
                        }
                    };
                    $(this.pushSelector).addClass('sb-animation').one($.support.transition.end, transitionCallback).emulateTransitionEnd(this.options.speedOut).css('margin-top', this.origHtmlMargin);
                } else {
                    banner.slideUp(this.options.speedOut).removeClass('shown');
                }
            }
        }

      , close: function(e) {
            e.preventDefault()
            this.hide()
            this.setCookie('sb-closed','true',this.options.daysHidden);
            this.options.onClose(e);
        }

      , install: function(e) {
			if (this.options.hideOnInstall) {
				this.hide()
			}
            this.setCookie('sb-installed','true',this.options.daysReminder)
            this.options.onInstall(e);
        }

      , setCookie: function(name, value, exdays) {
            var exdate = new Date()
            exdate.setDate(exdate.getDate()+exdays)
            value=encodeURI(value)+((exdays==null)?'':'; expires='+exdate.toUTCString())
            document.cookie=name+'='+value+'; path=/;'
        }

      , getCookie: function(name) {
            var i,x,y,ARRcookies = document.cookie.split(";")
            for(i=0;i<ARRcookies.length;i++) {
                x = ARRcookies[i].substr(0,ARRcookies[i].indexOf("="))
                y = ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1)
                x = x.replace(/^\s+|\s+$/g,"")
                if (x==name) {
                    return decodeURI(y)
                }
            }
            return null
        }

      // Demo only
      , switchType: function() {
          var that = this

          this.hide(function () {
              that.type = that.type == 'android' ? 'ios' : 'android'
              var meta = $(that.type == 'android' ? 'meta[name="google-play-app"]' : 'meta[name="apple-itunes-app"]').attr('content')
              that.appId = /app-id=([^\s,]+)/.exec(meta)[1]

              $('#smartbanner').detach()
              that.create()
              that.show()
          })
      }
    }

    $.smartbanner = function (option) {
        var $window = $(window)
        , data = $window.data('smartbanner')
        , options = typeof option == 'object' && option
        if (!data) $window.data('smartbanner', (data = new SmartBanner(options)))
        if (typeof option == 'string') data[option]()
    }

    // override these globally if you like (they are all optional)
    $.smartbanner.defaults = {
        title: null, // What the title of the app should be in the banner (defaults to <title>)
        author: null, // What the author of the app should be in the banner (defaults to <meta name="author"> or hostname)
        price: 'FREE', // Price of the app
        appStoreLanguage: 'us', // Language code for App Store
        inAppStore: 'On the App Store', // Text of price for iOS
        inGooglePlay: 'In Google Play', // Text of price for Android
        inAmazonAppStore: 'In the Amazon Appstore',
        inWindowsStore: 'In the Windows Store', //Text of price for Windows
        GooglePlayParams: null, // Aditional parameters for the market
        icon: null, // The URL of the icon (defaults to <meta name="apple-touch-icon">)
        iconGloss: null, // Force gloss effect for iOS even for precomposed
        button: 'VIEW', // Text for the install button
        url: null, // The URL for the button. Keep null if you want the button to link to the app store.
        scale: 'auto', // Scale based on viewport size (set to 1 to disable)
        speedIn: 300, // Show animation speed of the banner
        speedOut: 400, // Close animation speed of the banner
        daysHidden: 15, // Duration to hide the banner after being closed (0 = always show banner)
        daysReminder: 90, // Duration to hide the banner after "VIEW" is clicked *separate from when the close button is clicked* (0 = always show banner)
        force: null, // Choose 'ios', 'android' or 'windows'. Don't do a browser check, just always show this banner
        hideOnInstall: true, // Hide the banner after "VIEW" is clicked.
        layer: false, // Display as overlay layer or slide down the page
        iOSUniversalApp: true, // If the iOS App is a universal app for both iPad and iPhone, display Smart Banner to iPad users, too.
        appendToSelector: 'body', //Append the banner to a specific selector
		pushSelector: 'html' // What element is going to push the site content down; this is where the banner append animation will start.
    }

    $.smartbanner.Constructor = SmartBanner;


    // ============================================================
    // Bootstrap transition
    // Copyright 2011-2014 Twitter, Inc.
    // Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)

    function transitionEnd() {
        var el = document.createElement('smartbanner')

        var transEndEventNames = {
            WebkitTransition: 'webkitTransitionEnd',
            MozTransition: 'transitionend',
            OTransition: 'oTransitionEnd otransitionend',
            transition: 'transitionend'
        }

        for (var name in transEndEventNames) {
            if (el.style[name] !== undefined) {
                return {end: transEndEventNames[name]}
            }
        }

        return false // explicit for ie8 (  ._.)
    }

    if ($.support.transition !== undefined)
        return  // Prevent conflict with Twitter Bootstrap

    // http://blog.alexmaccaw.com/css-transitions
    $.fn.emulateTransitionEnd = function(duration) {
        var called = false, $el = this
        $(this).one($.support.transition.end, function() {
            called = true
        })
        var callback = function() {
            if (!called) $($el).trigger($.support.transition.end)
        }
        setTimeout(callback, duration)
        return this
    }

    $(function() {
        $.support.transition = transitionEnd()
    })
    // ============================================================

}(window.jQuery);
;
/**
 * @license
 * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
 */
;(function(){function n(n,t){return n.set(t[0],t[1]),n}function t(n,t){return n.add(t),n}function r(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function e(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&false!==t(n[r],r,n););return n}function i(n,t){for(var r=null==n?0:n.length;r--&&false!==t(n[r],r,n););
return n}function o(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function f(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function c(n,t){return!(null==n||!n.length)&&-1<d(n,t,0)}function a(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return true;return false}function l(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function s(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];
return n}function h(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);return r}function p(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function _(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return true;return false}function v(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,false}),e}function g(n,t,r,e){var u=n.length;for(r+=e?1:-1;e?r--:++r<u;)if(t(n[r],r,n))return r;return-1}function d(n,t,r){if(t===t)n:{
--r;for(var e=n.length;++r<e;)if(n[r]===t){n=r;break n}n=-1}else n=g(n,b,r);return n}function y(n,t,r,e){--r;for(var u=n.length;++r<u;)if(e(n[r],t))return r;return-1}function b(n){return n!==n}function x(n,t){var r=null==n?0:n.length;return r?k(n,t)/r:P}function j(n){return function(t){return null==t?F:t[n]}}function w(n){return function(t){return null==n?F:n[t]}}function m(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function A(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;
return n}function k(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==F&&(r=r===F?i:r+i)}return r}function E(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function O(n,t){return l(t,function(t){return[t,n[t]]})}function S(n){return function(t){return n(t)}}function I(n,t){return l(t,function(t){return n[t]})}function R(n,t){return n.has(t)}function z(n,t){for(var r=-1,e=n.length;++r<e&&-1<d(t,n[r],0););return r}function W(n,t){for(var r=n.length;r--&&-1<d(t,n[r],0););return r}function B(n){
return"\\"+Tn[n]}function L(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function U(n,t){return function(r){return n(t(r))}}function C(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&"__lodash_placeholder__"!==o||(n[r]="__lodash_placeholder__",i[u++]=r)}return i}function D(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function M(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function T(n){if(Bn.test(n)){
for(var t=zn.lastIndex=0;zn.test(n);)++t;n=t}else n=tt(n);return n}function $(n){return Bn.test(n)?n.match(zn)||[]:n.split("")}var F,N=1/0,P=NaN,Z=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],q=/\b__p\+='';/g,V=/\b(__p\+=)''\+/g,K=/(__e\(.*?\)|\b__t\))\+'';/g,G=/&(?:amp|lt|gt|quot|#39);/g,H=/[&<>"']/g,J=RegExp(G.source),Y=RegExp(H.source),Q=/<%-([\s\S]+?)%>/g,X=/<%([\s\S]+?)%>/g,nn=/<%=([\s\S]+?)%>/g,tn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rn=/^\w*$/,en=/^\./,un=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,on=/[\\^$.*+?()[\]{}|]/g,fn=RegExp(on.source),cn=/^\s+|\s+$/g,an=/^\s+/,ln=/\s+$/,sn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,hn=/\{\n\/\* \[wrapped with (.+)\] \*/,pn=/,? & /,_n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,vn=/\\(\\)?/g,gn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dn=/\w*$/,yn=/^[-+]0x[0-9a-f]+$/i,bn=/^0b[01]+$/i,xn=/^\[object .+?Constructor\]$/,jn=/^0o[0-7]+$/i,wn=/^(?:0|[1-9]\d*)$/,mn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,An=/($^)/,kn=/['\n\r\u2028\u2029\\]/g,En="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*",On="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+En,Sn="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",In=RegExp("['\u2019]","g"),Rn=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g"),zn=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+Sn+En,"g"),Wn=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)|\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)|\\d+",On].join("|"),"g"),Bn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),Ln=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Un="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Cn={};
Cn["[object Float32Array]"]=Cn["[object Float64Array]"]=Cn["[object Int8Array]"]=Cn["[object Int16Array]"]=Cn["[object Int32Array]"]=Cn["[object Uint8Array]"]=Cn["[object Uint8ClampedArray]"]=Cn["[object Uint16Array]"]=Cn["[object Uint32Array]"]=true,Cn["[object Arguments]"]=Cn["[object Array]"]=Cn["[object ArrayBuffer]"]=Cn["[object Boolean]"]=Cn["[object DataView]"]=Cn["[object Date]"]=Cn["[object Error]"]=Cn["[object Function]"]=Cn["[object Map]"]=Cn["[object Number]"]=Cn["[object Object]"]=Cn["[object RegExp]"]=Cn["[object Set]"]=Cn["[object String]"]=Cn["[object WeakMap]"]=false;
var Dn={};Dn["[object Arguments]"]=Dn["[object Array]"]=Dn["[object ArrayBuffer]"]=Dn["[object DataView]"]=Dn["[object Boolean]"]=Dn["[object Date]"]=Dn["[object Float32Array]"]=Dn["[object Float64Array]"]=Dn["[object Int8Array]"]=Dn["[object Int16Array]"]=Dn["[object Int32Array]"]=Dn["[object Map]"]=Dn["[object Number]"]=Dn["[object Object]"]=Dn["[object RegExp]"]=Dn["[object Set]"]=Dn["[object String]"]=Dn["[object Symbol]"]=Dn["[object Uint8Array]"]=Dn["[object Uint8ClampedArray]"]=Dn["[object Uint16Array]"]=Dn["[object Uint32Array]"]=true,
Dn["[object Error]"]=Dn["[object Function]"]=Dn["[object WeakMap]"]=false;var Mn,Tn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},$n=parseFloat,Fn=parseInt,Nn=typeof global=="object"&&global&&global.Object===Object&&global,Pn=typeof self=="object"&&self&&self.Object===Object&&self,Zn=Nn||Pn||Function("return this")(),qn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vn=qn&&typeof module=="object"&&module&&!module.nodeType&&module,Kn=Vn&&Vn.exports===qn,Gn=Kn&&Nn.process;
n:{try{Mn=Gn&&Gn.binding&&Gn.binding("util");break n}catch(n){}Mn=void 0}var Hn=Mn&&Mn.isArrayBuffer,Jn=Mn&&Mn.isDate,Yn=Mn&&Mn.isMap,Qn=Mn&&Mn.isRegExp,Xn=Mn&&Mn.isSet,nt=Mn&&Mn.isTypedArray,tt=j("length"),rt=w({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I",
"\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C",
"\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i",
"\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S",
"\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe",
"\u0149":"'n","\u017f":"s"}),et=w({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}),ut=w({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),it=function w(En){function On(n){if(xu(n)&&!af(n)&&!(n instanceof Mn)){if(n instanceof zn)return n;if(ci.call(n,"__wrapped__"))return Pe(n)}return new zn(n)}function Sn(){}function zn(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=F}function Mn(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,
this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Tn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Nn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Pn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function qn(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new Pn;++t<r;)this.add(n[t])}function Vn(n){
this.size=(this.__data__=new Nn(n)).size}function Gn(n,t){var r,e=af(n),u=!e&&cf(n),i=!e&&!u&&sf(n),o=!e&&!u&&!i&&gf(n),u=(e=e||u||i||o)?E(n.length,ri):[],f=u.length;for(r in n)!t&&!ci.call(n,r)||e&&("length"==r||i&&("offset"==r||"parent"==r)||o&&("buffer"==r||"byteLength"==r||"byteOffset"==r)||Re(r,f))||u.push(r);return u}function tt(n){var t=n.length;return t?n[cr(0,t-1)]:F}function ot(n,t){return Te(Mr(n),gt(t,0,n.length))}function ft(n){return Te(Mr(n))}function ct(n,t,r){(r===F||hu(n[t],r))&&(r!==F||t in n)||_t(n,t,r);
}function at(n,t,r){var e=n[t];ci.call(n,t)&&hu(e,r)&&(r!==F||t in n)||_t(n,t,r)}function lt(n,t){for(var r=n.length;r--;)if(hu(n[r][0],t))return r;return-1}function st(n,t,r,e){return oo(n,function(n,u,i){t(e,n,r(n),i)}),e}function ht(n,t){return n&&Tr(t,Lu(t),n)}function pt(n,t){return n&&Tr(t,Uu(t),n)}function _t(n,t,r){"__proto__"==t&&Ei?Ei(n,t,{configurable:true,enumerable:true,value:r,writable:true}):n[t]=r}function vt(n,t){for(var r=-1,e=t.length,u=Hu(e),i=null==n;++r<e;)u[r]=i?F:Wu(n,t[r]);return u;
}function gt(n,t,r){return n===n&&(r!==F&&(n=n<=r?n:r),t!==F&&(n=n>=t?n:t)),n}function dt(n,t,r,e,i,o){var f,c=1&t,a=2&t,l=4&t;if(r&&(f=i?r(n,e,i,o):r(n)),f!==F)return f;if(!bu(n))return n;if(e=af(n)){if(f=Ee(n),!c)return Mr(n,f)}else{var s=yo(n),h="[object Function]"==s||"[object GeneratorFunction]"==s;if(sf(n))return Wr(n,c);if("[object Object]"==s||"[object Arguments]"==s||h&&!i){if(f=a||h?{}:Oe(n),!c)return a?Fr(n,pt(f,n)):$r(n,ht(f,n))}else{if(!Dn[s])return i?n:{};f=Se(n,s,dt,c)}}if(o||(o=new Vn),
i=o.get(n))return i;o.set(n,f);var a=l?a?ye:de:a?Uu:Lu,p=e?F:a(n);return u(p||n,function(e,u){p&&(u=e,e=n[u]),at(f,u,dt(e,t,r,u,n,o))}),f}function yt(n){var t=Lu(n);return function(r){return bt(r,n,t)}}function bt(n,t,r){var e=r.length;if(null==n)return!e;for(n=ni(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===F&&!(u in n)||!i(o))return false}return true}function xt(n,t,r){if(typeof n!="function")throw new ei("Expected a function");return jo(function(){n.apply(F,r)},t)}function jt(n,t,r,e){var u=-1,i=c,o=true,f=n.length,s=[],h=t.length;
if(!f)return s;r&&(t=l(t,S(r))),e?(i=a,o=false):200<=t.length&&(i=R,o=false,t=new qn(t));n:for(;++u<f;){var p=n[u],_=null==r?p:r(p),p=e||0!==p?p:0;if(o&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function wt(n,t){var r=true;return oo(n,function(n,e,u){return r=!!t(n,e,u)}),r}function mt(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===F?o===o&&!Au(o):r(o,f)))var f=o,c=i}return c}function At(n,t){var r=[];return oo(n,function(n,e,u){
t(n,e,u)&&r.push(n)}),r}function kt(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=Ie),u||(u=[]);++i<o;){var f=n[i];0<t&&r(f)?1<t?kt(f,t-1,r,e,u):s(u,f):e||(u[u.length]=f)}return u}function Et(n,t){return n&&co(n,t,Lu)}function Ot(n,t){return n&&ao(n,t,Lu)}function St(n,t){return f(t,function(t){return gu(n[t])})}function It(n,t){t=Rr(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[$e(t[r++])];return r&&r==e?n:F}function Rt(n,t,r){return t=t(n),af(n)?t:s(t,r(n))}function zt(n){if(null==n)n=n===F?"[object Undefined]":"[object Null]";else if(ki&&ki in ni(n)){
var t=ci.call(n,ki),r=n[ki];try{n[ki]=F;var e=true}catch(n){}var u=si.call(n);e&&(t?n[ki]=r:delete n[ki]),n=u}else n=si.call(n);return n}function Wt(n,t){return n>t}function Bt(n,t){return null!=n&&ci.call(n,t)}function Lt(n,t){return null!=n&&t in ni(n)}function Ut(n,t,r){for(var e=r?a:c,u=n[0].length,i=n.length,o=i,f=Hu(i),s=1/0,h=[];o--;){var p=n[o];o&&t&&(p=l(p,S(t))),s=Mi(p.length,s),f[o]=!r&&(t||120<=u&&120<=p.length)?new qn(o&&p):F}var p=n[0],_=-1,v=f[0];n:for(;++_<u&&h.length<s;){var g=p[_],d=t?t(g):g,g=r||0!==g?g:0;
if(v?!R(v,d):!e(h,d,r)){for(o=i;--o;){var y=f[o];if(y?!R(y,d):!e(n[o],d,r))continue n}v&&v.push(d),h.push(g)}}return h}function Ct(n,t,r){var e={};return Et(n,function(n,u,i){t(e,r(n),u,i)}),e}function Dt(n,t,e){return t=Rr(t,n),n=2>t.length?n:It(n,vr(t,0,-1)),t=null==n?n:n[$e(Ge(t))],null==t?F:r(t,n,e)}function Mt(n){return xu(n)&&"[object Arguments]"==zt(n)}function Tt(n){return xu(n)&&"[object ArrayBuffer]"==zt(n)}function $t(n){return xu(n)&&"[object Date]"==zt(n)}function Ft(n,t,r,e,u){if(n===t)t=true;else if(null==n||null==t||!xu(n)&&!xu(t))t=n!==n&&t!==t;else n:{
var i=af(n),o=af(t),f=i?"[object Array]":yo(n),c=o?"[object Array]":yo(t),f="[object Arguments]"==f?"[object Object]":f,c="[object Arguments]"==c?"[object Object]":c,a="[object Object]"==f,o="[object Object]"==c;if((c=f==c)&&sf(n)){if(!sf(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Vn),t=i||gf(n)?_e(n,t,r,e,Ft,u):ve(n,t,f,r,e,Ft,u);else{if(!(1&r)&&(i=a&&ci.call(n,"__wrapped__"),f=o&&ci.call(t,"__wrapped__"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Vn),t=Ft(n,t,r,e,u);break n}if(c)t:if(u||(u=new Vn),
i=1&r,f=de(n),o=f.length,c=de(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:ci.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++a<o;){var l=f[a],h=n[l],p=t[l];if(e)var _=i?e(p,h,l,t,n,u):e(h,p,l,n,t,u);if(_===F?h!==p&&!Ft(h,p,r,e,u):!_){c=false;break}s||(s="constructor"==l)}c&&!s&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(c=false)),
u.delete(n),u.delete(t),t=c}}else t=false;else t=false}}return t}function Nt(n){return xu(n)&&"[object Map]"==yo(n)}function Pt(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=ni(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<i;){var f=r[u],c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===F&&!(c in n))return false}else{if(f=new Vn,e)var s=e(a,l,c,n,t,f);if(s===F?!Ft(l,a,3,e,f):!s)return false}}return true}function Zt(n){return!(!bu(n)||li&&li in n)&&(gu(n)?_i:xn).test(Fe(n))}function qt(n){
return xu(n)&&"[object RegExp]"==zt(n)}function Vt(n){return xu(n)&&"[object Set]"==yo(n)}function Kt(n){return xu(n)&&yu(n.length)&&!!Cn[zt(n)]}function Gt(n){return typeof n=="function"?n:null==n?Nu:typeof n=="object"?af(n)?Xt(n[0],n[1]):Qt(n):Vu(n)}function Ht(n){if(!Le(n))return Ci(n);var t,r=[];for(t in ni(n))ci.call(n,t)&&"constructor"!=t&&r.push(t);return r}function Jt(n,t){return n<t}function Yt(n,t){var r=-1,e=pu(n)?Hu(n.length):[];return oo(n,function(n,u,i){e[++r]=t(n,u,i)}),e}function Qt(n){
var t=me(n);return 1==t.length&&t[0][2]?Ue(t[0][0],t[0][1]):function(r){return r===n||Pt(r,n,t)}}function Xt(n,t){return We(n)&&t===t&&!bu(t)?Ue($e(n),t):function(r){var e=Wu(r,n);return e===F&&e===t?Bu(r,n):Ft(t,e,3)}}function nr(n,t,r,e,u){n!==t&&co(t,function(i,o){if(bu(i)){u||(u=new Vn);var f=u,c=n[o],a=t[o],l=f.get(a);if(l)ct(n,o,l);else{var l=e?e(c,a,o+"",n,t,f):F,s=l===F;if(s){var h=af(a),p=!h&&sf(a),_=!h&&!p&&gf(a),l=a;h||p||_?af(c)?l=c:_u(c)?l=Mr(c):p?(s=false,l=Wr(a,true)):_?(s=false,l=Lr(a,true)):l=[]:wu(a)||cf(a)?(l=c,
cf(c)?l=Ru(c):(!bu(c)||r&&gu(c))&&(l=Oe(a))):s=false}s&&(f.set(a,l),nr(l,a,r,e,f),f.delete(a)),ct(n,o,l)}}else f=e?e(n[o],i,o+"",n,t,u):F,f===F&&(f=i),ct(n,o,f)},Uu)}function tr(n,t){var r=n.length;if(r)return t+=0>t?r:0,Re(t,r)?n[t]:F}function rr(n,t,r){var e=-1;return t=l(t.length?t:[Nu],S(je())),n=Yt(n,function(n){return{a:l(t,function(t){return t(n)}),b:++e,c:n}}),A(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e<o;){var c=Ur(u[e],i[e]);if(c){e=e>=f?c:c*("desc"==r[e]?-1:1);
break n}}e=n.b-t.b}return e})}function er(n,t){return ur(n,t,function(t,r){return Bu(n,r)})}function ur(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=It(n,o);r(f,o)&&pr(i,Rr(o,n),f)}return i}function ir(n){return function(t){return It(t,n)}}function or(n,t,r,e){var u=e?y:d,i=-1,o=t.length,f=n;for(n===t&&(t=Mr(t)),r&&(f=l(n,S(r)));++i<o;)for(var c=0,a=t[i],a=r?r(a):a;-1<(c=u(f,a,c,e));)f!==n&&wi.call(f,c,1),wi.call(n,c,1);return n}function fr(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];
if(r==e||u!==i){var i=u;Re(u)?wi.call(n,u,1):mr(n,u)}}}function cr(n,t){return n+zi(Fi()*(t-n+1))}function ar(n,t){var r="";if(!n||1>t||9007199254740991<t)return r;do t%2&&(r+=n),(t=zi(t/2))&&(n+=n);while(t);return r}function lr(n,t){return wo(Ce(n,t,Nu),n+"")}function sr(n){return tt(Du(n))}function hr(n,t){var r=Du(n);return Te(r,gt(t,0,r.length))}function pr(n,t,r,e){if(!bu(n))return n;t=Rr(t,n);for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){var c=$e(t[u]),a=r;if(u!=o){var l=f[c],a=e?e(l,c,f):F;
a===F&&(a=bu(l)?l:Re(t[u+1])?[]:{})}at(f,c,a),f=f[c]}return n}function _r(n){return Te(Du(n))}function vr(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Hu(u);++e<u;)r[e]=n[e+t];return r}function gr(n,t){var r;return oo(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function dr(n,t,r){var e=0,u=null==n?e:n.length;if(typeof t=="number"&&t===t&&2147483647>=u){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!Au(o)&&(r?o<=t:o<t)?e=i+1:u=i}return u}return yr(n,t,Nu,r);
}function yr(n,t,r,e){t=r(t);for(var u=0,i=null==n?0:n.length,o=t!==t,f=null===t,c=Au(t),a=t===F;u<i;){var l=zi((u+i)/2),s=r(n[l]),h=s!==F,p=null===s,_=s===s,v=Au(s);(o?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?s<=t:s<t)?u=l+1:i=l}return Mi(i,4294967294)}function br(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r],f=t?t(o):o;if(!r||!hu(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function xr(n){return typeof n=="number"?n:Au(n)?P:+n}function jr(n){if(typeof n=="string")return n;
if(af(n))return l(n,jr)+"";if(Au(n))return uo?uo.call(n):"";var t=n+"";return"0"==t&&1/n==-N?"-0":t}function wr(n,t,r){var e=-1,u=c,i=n.length,o=true,f=[],l=f;if(r)o=false,u=a;else if(200<=i){if(u=t?null:po(n))return D(u);o=false,u=R,l=new qn}else l=t?[]:f;n:for(;++e<i;){var s=n[e],h=t?t(s):s,s=r||0!==s?s:0;if(o&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue n;t&&l.push(h),f.push(s)}else u(l,h,r)||(l!==f&&l.push(h),f.push(s))}return f}function mr(n,t){return t=Rr(t,n),n=2>t.length?n:It(n,vr(t,0,-1)),
null==n||delete n[$e(Ge(t))]}function Ar(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?vr(n,e?0:i,e?i+1:u):vr(n,e?i+1:0,e?u:i)}function kr(n,t){var r=n;return r instanceof Mn&&(r=r.value()),h(t,function(n,t){return t.func.apply(t.thisArg,s([n],t.args))},r)}function Er(n,t,r){var e=n.length;if(2>e)return e?wr(n[0]):[];for(var u=-1,i=Hu(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=jt(i[u]||o,n[f],t,r));return wr(kt(i,1),t,r)}function Or(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;)r(o,n[e],e<i?t[e]:F);
return o}function Sr(n){return _u(n)?n:[]}function Ir(n){return typeof n=="function"?n:Nu}function Rr(n,t){return af(n)?n:We(n,t)?[n]:mo(zu(n))}function zr(n,t,r){var e=n.length;return r=r===F?e:r,!t&&r>=e?n:vr(n,t,r)}function Wr(n,t){if(t)return n.slice();var r=n.length,r=yi?yi(r):new n.constructor(r);return n.copy(r),r}function Br(n){var t=new n.constructor(n.byteLength);return new di(t).set(new di(n)),t}function Lr(n,t){return new n.constructor(t?Br(n.buffer):n.buffer,n.byteOffset,n.length)}function Ur(n,t){
if(n!==t){var r=n!==F,e=null===n,u=n===n,i=Au(n),o=t!==F,f=null===t,c=t===t,a=Au(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Cr(n,t,r,e){var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Di(i-o,0),l=Hu(c+a);for(e=!e;++f<c;)l[f]=t[f];for(;++u<o;)(e||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];return l}function Dr(n,t,r,e){var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Di(i-f,0),s=Hu(l+a);
for(e=!e;++u<l;)s[u]=n[u];for(l=u;++c<a;)s[l+c]=t[c];for(;++o<f;)(e||u<i)&&(s[l+r[o]]=n[u++]);return s}function Mr(n,t){var r=-1,e=n.length;for(t||(t=Hu(e));++r<e;)t[r]=n[r];return t}function Tr(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):F;c===F&&(c=n[f]),u?_t(r,f,c):at(r,f,c)}return r}function $r(n,t){return Tr(n,vo(n),t)}function Fr(n,t){return Tr(n,go(n),t)}function Nr(n,t){return function(r,u){var i=af(r)?e:st,o=t?t():{};return i(r,n,je(u,2),o);
}}function Pr(n){return lr(function(t,r){var e=-1,u=r.length,i=1<u?r[u-1]:F,o=2<u?r[2]:F,i=3<n.length&&typeof i=="function"?(u--,i):F;for(o&&ze(r[0],r[1],o)&&(i=3>u?F:i,u=1),t=ni(t);++e<u;)(o=r[e])&&n(t,o,e,i);return t})}function Zr(n,t){return function(r,e){if(null==r)return r;if(!pu(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=ni(r);(t?i--:++i<u)&&false!==e(o[i],i,o););return r}}function qr(n){return function(t,r,e){var u=-1,i=ni(t);e=e(t);for(var o=e.length;o--;){var f=e[n?o:++u];if(false===r(i[f],f,i))break;
}return t}}function Vr(n,t,r){function e(){return(this&&this!==Zn&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=1&t,i=Hr(n);return e}function Kr(n){return function(t){t=zu(t);var r=Bn.test(t)?$(t):F,e=r?r[0]:t.charAt(0);return t=r?zr(r,1).join(""):t.slice(1),e[n]()+t}}function Gr(n){return function(t){return h($u(Tu(t).replace(In,"")),n,"")}}function Hr(n){return function(){var t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:
return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=io(n.prototype),t=n.apply(r,t);return bu(t)?t:r}}function Jr(n,t,e){function u(){for(var o=arguments.length,f=Hu(o),c=o,a=xe(u);c--;)f[c]=arguments[c];return c=3>o&&f[0]!==a&&f[o-1]!==a?[]:C(f,a),o-=c.length,o<e?fe(n,t,Xr,u.placeholder,F,f,c,F,F,e-o):r(this&&this!==Zn&&this instanceof u?i:n,this,f);
}var i=Hr(n);return u}function Yr(n){return function(t,r,e){var u=ni(t);if(!pu(t)){var i=je(r,3);t=Lu(t),r=function(n){return i(u[n],n,u)}}return r=n(t,r,e),-1<r?u[i?t[r]:r]:F}}function Qr(n){return ge(function(t){var r=t.length,e=r,u=zn.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if(typeof i!="function")throw new ei("Expected a function");if(u&&!o&&"wrapper"==be(i))var o=new zn([],true)}for(e=o?e:r;++e<r;)var i=t[e],u=be(i),f="wrapper"==u?_o(i):F,o=f&&Be(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?o[be(f[0])].apply(o,f[3]):1==i.length&&Be(i)?o[u]():o.thru(i);
return function(){var n=arguments,e=n[0];if(o&&1==n.length&&af(e))return o.plant(e).value();for(var u=0,n=r?t[u].apply(this,n):e;++u<r;)n=t[u].call(this,n);return n}})}function Xr(n,t,r,e,u,i,o,f,c,a){function l(){for(var d=arguments.length,y=Hu(d),b=d;b--;)y[b]=arguments[b];if(_){var x,j=xe(l),b=y.length;for(x=0;b--;)y[b]===j&&++x}if(e&&(y=Cr(y,e,u,_)),i&&(y=Dr(y,i,o,_)),d-=x,_&&d<a)return j=C(y,j),fe(n,t,Xr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[n]:n,d=y.length,f){x=y.length;for(var w=Mi(f.length,x),m=Mr(y);w--;){
var A=f[w];y[w]=Re(A,x)?m[A]:F}}else v&&1<d&&y.reverse();return s&&c<d&&(y.length=c),this&&this!==Zn&&this instanceof l&&(b=g||Hr(b)),b.apply(j,y)}var s=128&t,h=1&t,p=2&t,_=24&t,v=512&t,g=p?F:Hr(n);return l}function ne(n,t){return function(r,e){return Ct(r,n,t(e))}}function te(n,t){return function(r,e){var u;if(r===F&&e===F)return t;if(r!==F&&(u=r),e!==F){if(u===F)return e;typeof r=="string"||typeof e=="string"?(r=jr(r),e=jr(e)):(r=xr(r),e=xr(e)),u=n(r,e)}return u}}function re(n){return ge(function(t){
return t=l(t,S(je())),lr(function(e){var u=this;return n(t,function(n){return r(n,u,e)})})})}function ee(n,t){t=t===F?" ":jr(t);var r=t.length;return 2>r?r?ar(t,n):t:(r=ar(t,Ri(n/T(t))),Bn.test(t)?zr($(r),0,n).join(""):r.slice(0,n))}function ue(n,t,e,u){function i(){for(var t=-1,c=arguments.length,a=-1,l=u.length,s=Hu(l+c),h=this&&this!==Zn&&this instanceof i?f:n;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++t];return r(h,o?e:this,s)}var o=1&t,f=Hr(n);return i}function ie(n){return function(t,r,e){
e&&typeof e!="number"&&ze(t,r,e)&&(r=e=F),t=Eu(t),r===F?(r=t,t=0):r=Eu(r),e=e===F?t<r?1:-1:Eu(e);var u=-1;r=Di(Ri((r-t)/(e||1)),0);for(var i=Hu(r);r--;)i[n?r:++u]=t,t+=e;return i}}function oe(n){return function(t,r){return typeof t=="string"&&typeof r=="string"||(t=Iu(t),r=Iu(r)),n(t,r)}}function fe(n,t,r,e,u,i,o,f,c,a){var l=8&t,s=l?o:F;o=l?F:o;var h=l?i:F;return i=l?F:i,t=(t|(l?32:64))&~(l?64:32),4&t||(t&=-4),u=[n,t,u,h,s,i,o,f,c,a],r=r.apply(F,u),Be(n)&&xo(r,u),r.placeholder=e,De(r,n,t)}function ce(n){
var t=Xu[n];return function(n,r){if(n=Iu(n),r=null==r?0:Mi(Ou(r),292)){var e=(zu(n)+"e").split("e"),e=t(e[0]+"e"+(+e[1]+r)),e=(zu(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return t(n)}}function ae(n){return function(t){var r=yo(t);return"[object Map]"==r?L(t):"[object Set]"==r?M(t):O(t,n(t))}}function le(n,t,r,e,u,i,o,f){var c=2&t;if(!c&&typeof n!="function")throw new ei("Expected a function");var a=e?e.length:0;if(a||(t&=-97,e=u=F),o=o===F?o:Di(Ou(o),0),f=f===F?f:Ou(f),a-=u?u.length:0,64&t){
var l=e,s=u;e=u=F}var h=c?F:_o(n);return i=[n,t,r,e,u,l,s,i,o,f],h&&(r=i[1],n=h[1],t=r|n,e=128==n&&8==r||128==n&&256==r&&i[7].length<=h[8]||384==n&&h[7].length<=h[8]&&8==r,131>t||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Cr(e,r,h[4]):r,i[4]=e?C(i[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Dr(e,r,h[6]):r,i[6]=e?C(i[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Mi(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0],t=i[1],
r=i[2],e=i[3],u=i[4],f=i[9]=i[9]===F?c?0:n.length:Di(i[9]-a,0),!f&&24&t&&(t&=-25),De((h?lo:xo)(t&&1!=t?8==t||16==t?Jr(n,t,f):32!=t&&33!=t||u.length?Xr.apply(F,i):ue(n,t,r,e):Vr(n,t,r),i),n,t)}function se(n,t,r,e){return n===F||hu(n,ii[r])&&!ci.call(e,r)?t:n}function he(n,t,r,e,u,i){return bu(n)&&bu(t)&&(i.set(t,n),nr(n,t,F,he,i),i.delete(t)),n}function pe(n,t){return t!==F&&wu(n)?F:n}function _e(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t;
var c=-1,a=true,l=2&r?new qn:F;for(i.set(n,t),i.set(t,n);++c<f;){var s=n[c],h=t[c];if(e)var p=o?e(h,s,c,t,n,i):e(s,h,c,n,t,i);if(p!==F){if(p)continue;a=false;break}if(l){if(!_(t,function(n,t){if(!R(l,t)&&(s===n||u(s,n,r,e,i)))return l.push(t)})){a=false;break}}else if(s!==h&&!u(s,h,r,e,i)){a=false;break}}return i.delete(n),i.delete(t),a}function ve(n,t,r,e,u,i,o){switch(r){case"[object DataView]":if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)break;n=n.buffer,t=t.buffer;case"[object ArrayBuffer]":
if(n.byteLength!=t.byteLength||!i(new di(n),new di(t)))break;return true;case"[object Boolean]":case"[object Date]":case"[object Number]":return hu(+n,+t);case"[object Error]":return n.name==t.name&&n.message==t.message;case"[object RegExp]":case"[object String]":return n==t+"";case"[object Map]":var f=L;case"[object Set]":if(f||(f=D),n.size!=t.size&&!(1&e))break;return(r=o.get(n))?r==t:(e|=2,o.set(n,t),t=_e(f(n),f(t),e,u,i,o),o.delete(n),t);case"[object Symbol]":if(eo)return eo.call(n)==eo.call(t)}
return false}function ge(n){return wo(Ce(n,F,Ve),n+"")}function de(n){return Rt(n,Lu,vo)}function ye(n){return Rt(n,Uu,go)}function be(n){for(var t=n.name+"",r=Ji[t],e=ci.call(Ji,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function xe(n){return(ci.call(On,"placeholder")?On:n).placeholder}function je(){var n=On.iteratee||Pu,n=n===Pu?Gt:n;return arguments.length?n(arguments[0],arguments[1]):n}function we(n,t){var r=n.__data__,e=typeof t;return("string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t)?r[typeof t=="string"?"string":"hash"]:r.map;
}function me(n){for(var t=Lu(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,u===u&&!bu(u)]}return t}function Ae(n,t){var r=null==n?F:n[t];return Zt(r)?r:F}function ke(n,t,r){t=Rr(t,n);for(var e=-1,u=t.length,i=false;++e<u;){var o=$e(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&yu(u)&&Re(o,u)&&(af(n)||cf(n)))}function Ee(n){var t=n.length,r=n.constructor(t);return t&&"string"==typeof n[0]&&ci.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function Oe(n){
return typeof n.constructor!="function"||Le(n)?{}:io(bi(n))}function Se(r,e,u,i){var o=r.constructor;switch(e){case"[object ArrayBuffer]":return Br(r);case"[object Boolean]":case"[object Date]":return new o(+r);case"[object DataView]":return e=i?Br(r.buffer):r.buffer,new r.constructor(e,r.byteOffset,r.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":
case"[object Uint16Array]":case"[object Uint32Array]":return Lr(r,i);case"[object Map]":return e=i?u(L(r),1):L(r),h(e,n,new r.constructor);case"[object Number]":case"[object String]":return new o(r);case"[object RegExp]":return e=new r.constructor(r.source,dn.exec(r)),e.lastIndex=r.lastIndex,e;case"[object Set]":return e=i?u(D(r),1):D(r),h(e,t,new r.constructor);case"[object Symbol]":return eo?ni(eo.call(r)):{}}}function Ie(n){return af(n)||cf(n)||!!(mi&&n&&n[mi])}function Re(n,t){return t=null==t?9007199254740991:t,
!!t&&(typeof n=="number"||wn.test(n))&&-1<n&&0==n%1&&n<t}function ze(n,t,r){if(!bu(r))return false;var e=typeof t;return!!("number"==e?pu(r)&&Re(t,r.length):"string"==e&&t in r)&&hu(r[t],n)}function We(n,t){if(af(n))return false;var r=typeof n;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=n&&!Au(n))||(rn.test(n)||!tn.test(n)||null!=t&&n in ni(t))}function Be(n){var t=be(n),r=On[t];return typeof r=="function"&&t in Mn.prototype&&(n===r||(t=_o(r),!!t&&n===t[0]))}function Le(n){var t=n&&n.constructor;
return n===(typeof t=="function"&&t.prototype||ii)}function Ue(n,t){return function(r){return null!=r&&(r[n]===t&&(t!==F||n in ni(r)))}}function Ce(n,t,e){return t=Di(t===F?n.length-1:t,0),function(){for(var u=arguments,i=-1,o=Di(u.length-t,0),f=Hu(o);++i<o;)f[i]=u[t+i];for(i=-1,o=Hu(t+1);++i<t;)o[i]=u[i];return o[t]=e(f),r(n,this,o)}}function De(n,t,r){var e=t+"";t=wo;var u,i=Ne;return u=(u=e.match(hn))?u[1].split(pn):[],r=i(u,r),(i=r.length)&&(u=i-1,r[u]=(1<i?"& ":"")+r[u],r=r.join(2<i?", ":" "),
e=e.replace(sn,"{\n/* [wrapped with "+r+"] */\n")),t(n,e)}function Me(n){var t=0,r=0;return function(){var e=Ti(),u=16-(e-r);if(r=e,0<u){if(800<=++t)return arguments[0]}else t=0;return n.apply(F,arguments)}}function Te(n,t){var r=-1,e=n.length,u=e-1;for(t=t===F?e:t;++r<t;){var e=cr(r,u),i=n[e];n[e]=n[r],n[r]=i}return n.length=t,n}function $e(n){if(typeof n=="string"||Au(n))return n;var t=n+"";return"0"==t&&1/n==-N?"-0":t}function Fe(n){if(null!=n){try{return fi.call(n)}catch(n){}return n+""}return"";
}function Ne(n,t){return u(Z,function(r){var e="_."+r[0];t&r[1]&&!c(n,e)&&n.push(e)}),n.sort()}function Pe(n){if(n instanceof Mn)return n.clone();var t=new zn(n.__wrapped__,n.__chain__);return t.__actions__=Mr(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Ze(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Ou(r),0>r&&(r=Di(e+r,0)),g(n,je(t,3),r)):-1}function qe(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==F&&(u=Ou(r),u=0>r?Di(e+u,0):Mi(u,e-1)),
g(n,je(t,3),u,true)}function Ve(n){return(null==n?0:n.length)?kt(n,1):[]}function Ke(n){return n&&n.length?n[0]:F}function Ge(n){var t=null==n?0:n.length;return t?n[t-1]:F}function He(n,t){return n&&n.length&&t&&t.length?or(n,t):n}function Je(n){return null==n?n:Ni.call(n)}function Ye(n){if(!n||!n.length)return[];var t=0;return n=f(n,function(n){if(_u(n))return t=Di(n.length,t),true}),E(t,function(t){return l(n,j(t))})}function Qe(n,t){if(!n||!n.length)return[];var e=Ye(n);return null==t?e:l(e,function(n){
return r(t,F,n)})}function Xe(n){return n=On(n),n.__chain__=true,n}function nu(n,t){return t(n)}function tu(){return this}function ru(n,t){return(af(n)?u:oo)(n,je(t,3))}function eu(n,t){return(af(n)?i:fo)(n,je(t,3))}function uu(n,t){return(af(n)?l:Yt)(n,je(t,3))}function iu(n,t,r){return t=r?F:t,t=n&&null==t?n.length:t,le(n,128,F,F,F,F,t)}function ou(n,t){var r;if(typeof t!="function")throw new ei("Expected a function");return n=Ou(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=F),
r}}function fu(n,t,r){return t=r?F:t,n=le(n,8,F,F,F,F,F,t),n.placeholder=fu.placeholder,n}function cu(n,t,r){return t=r?F:t,n=le(n,16,F,F,F,F,F,t),n.placeholder=cu.placeholder,n}function au(n,t,r){function e(t){var r=c,e=a;return c=a=F,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===F||r>=t||0>r||g&&n>=l}function i(){var n=Jo();if(u(n))return o(n);var r,e=jo;r=n-_,n=t-(n-p),r=g?Mi(n,l-r):n,h=e(i,r)}function o(n){return h=F,d&&c?e(n):(c=a=F,s)}function f(){var n=Jo(),r=u(n);if(c=arguments,
a=this,p=n,r){if(h===F)return _=n=p,h=jo(i,t),v?e(n):s;if(g)return h=jo(i,t),e(p)}return h===F&&(h=jo(i,t)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!="function")throw new ei("Expected a function");return t=Iu(t)||0,bu(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Di(Iu(r.maxWait)||0,t):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==F&&ho(h),_=0,c=p=a=h=F},f.flush=function(){return h===F?s:o(Jo())},f}function lu(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;return i.has(u)?i.get(u):(e=n.apply(this,e),
r.cache=i.set(u,e)||i,e)}if(typeof n!="function"||null!=t&&typeof t!="function")throw new ei("Expected a function");return r.cache=new(lu.Cache||Pn),r}function su(n){if(typeof n!="function")throw new ei("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function hu(n,t){return n===t||n!==n&&t!==t}function pu(n){return null!=n&&yu(n.length)&&!gu(n);
}function _u(n){return xu(n)&&pu(n)}function vu(n){if(!xu(n))return false;var t=zt(n);return"[object Error]"==t||"[object DOMException]"==t||typeof n.message=="string"&&typeof n.name=="string"&&!wu(n)}function gu(n){return!!bu(n)&&(n=zt(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function du(n){return typeof n=="number"&&n==Ou(n)}function yu(n){return typeof n=="number"&&-1<n&&0==n%1&&9007199254740991>=n}function bu(n){var t=typeof n;return null!=n&&("object"==t||"function"==t);
}function xu(n){return null!=n&&typeof n=="object"}function ju(n){return typeof n=="number"||xu(n)&&"[object Number]"==zt(n)}function wu(n){return!(!xu(n)||"[object Object]"!=zt(n))&&(n=bi(n),null===n||(n=ci.call(n,"constructor")&&n.constructor,typeof n=="function"&&n instanceof n&&fi.call(n)==hi))}function mu(n){return typeof n=="string"||!af(n)&&xu(n)&&"[object String]"==zt(n)}function Au(n){return typeof n=="symbol"||xu(n)&&"[object Symbol]"==zt(n)}function ku(n){if(!n)return[];if(pu(n))return mu(n)?$(n):Mr(n);
if(Ai&&n[Ai]){n=n[Ai]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}return t=yo(n),("[object Map]"==t?L:"[object Set]"==t?D:Du)(n)}function Eu(n){return n?(n=Iu(n),n===N||n===-N?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function Ou(n){n=Eu(n);var t=n%1;return n===n?t?n-t:n:0}function Su(n){return n?gt(Ou(n),0,4294967295):0}function Iu(n){if(typeof n=="number")return n;if(Au(n))return P;if(bu(n)&&(n=typeof n.valueOf=="function"?n.valueOf():n,n=bu(n)?n+"":n),typeof n!="string")return 0===n?n:+n;
n=n.replace(cn,"");var t=bn.test(n);return t||jn.test(n)?Fn(n.slice(2),t?2:8):yn.test(n)?P:+n}function Ru(n){return Tr(n,Uu(n))}function zu(n){return null==n?"":jr(n)}function Wu(n,t,r){return n=null==n?F:It(n,t),n===F?r:n}function Bu(n,t){return null!=n&&ke(n,t,Lt)}function Lu(n){return pu(n)?Gn(n):Ht(n)}function Uu(n){if(pu(n))n=Gn(n,true);else if(bu(n)){var t,r=Le(n),e=[];for(t in n)("constructor"!=t||!r&&ci.call(n,t))&&e.push(t);n=e}else{if(t=[],null!=n)for(r in ni(n))t.push(r);n=t}return n}function Cu(n,t){
if(null==n)return{};var r=l(ye(n),function(n){return[n]});return t=je(t),ur(n,r,function(n,r){return t(n,r[0])})}function Du(n){return null==n?[]:I(n,Lu(n))}function Mu(n){return Nf(zu(n).toLowerCase())}function Tu(n){return(n=zu(n))&&n.replace(mn,rt).replace(Rn,"")}function $u(n,t,r){return n=zu(n),t=r?F:t,t===F?Ln.test(n)?n.match(Wn)||[]:n.match(_n)||[]:n.match(t)||[]}function Fu(n){return function(){return n}}function Nu(n){return n}function Pu(n){return Gt(typeof n=="function"?n:dt(n,1))}function Zu(n,t,r){
var e=Lu(t),i=St(t,e);null!=r||bu(t)&&(i.length||!e.length)||(r=t,t=n,n=this,i=St(t,Lu(t)));var o=!(bu(r)&&"chain"in r&&!r.chain),f=gu(n);return u(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Mr(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,s([this.value()],arguments))})}),n}function qu(){}function Vu(n){return We(n)?j($e(n)):ir(n)}function Ku(){return[]}function Gu(){
return false}En=null==En?Zn:it.defaults(Zn.Object(),En,it.pick(Zn,Un));var Hu=En.Array,Ju=En.Date,Yu=En.Error,Qu=En.Function,Xu=En.Math,ni=En.Object,ti=En.RegExp,ri=En.String,ei=En.TypeError,ui=Hu.prototype,ii=ni.prototype,oi=En["__core-js_shared__"],fi=Qu.prototype.toString,ci=ii.hasOwnProperty,ai=0,li=function(){var n=/[^.]+$/.exec(oi&&oi.keys&&oi.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),si=ii.toString,hi=fi.call(ni),pi=Zn._,_i=ti("^"+fi.call(ci).replace(on,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),vi=Kn?En.Buffer:F,gi=En.Symbol,di=En.Uint8Array,yi=vi?vi.f:F,bi=U(ni.getPrototypeOf,ni),xi=ni.create,ji=ii.propertyIsEnumerable,wi=ui.splice,mi=gi?gi.isConcatSpreadable:F,Ai=gi?gi.iterator:F,ki=gi?gi.toStringTag:F,Ei=function(){
try{var n=Ae(ni,"defineProperty");return n({},"",{}),n}catch(n){}}(),Oi=En.clearTimeout!==Zn.clearTimeout&&En.clearTimeout,Si=Ju&&Ju.now!==Zn.Date.now&&Ju.now,Ii=En.setTimeout!==Zn.setTimeout&&En.setTimeout,Ri=Xu.ceil,zi=Xu.floor,Wi=ni.getOwnPropertySymbols,Bi=vi?vi.isBuffer:F,Li=En.isFinite,Ui=ui.join,Ci=U(ni.keys,ni),Di=Xu.max,Mi=Xu.min,Ti=Ju.now,$i=En.parseInt,Fi=Xu.random,Ni=ui.reverse,Pi=Ae(En,"DataView"),Zi=Ae(En,"Map"),qi=Ae(En,"Promise"),Vi=Ae(En,"Set"),Ki=Ae(En,"WeakMap"),Gi=Ae(ni,"create"),Hi=Ki&&new Ki,Ji={},Yi=Fe(Pi),Qi=Fe(Zi),Xi=Fe(qi),no=Fe(Vi),to=Fe(Ki),ro=gi?gi.prototype:F,eo=ro?ro.valueOf:F,uo=ro?ro.toString:F,io=function(){
function n(){}return function(t){return bu(t)?xi?xi(t):(n.prototype=t,t=new n,n.prototype=F,t):{}}}();On.templateSettings={escape:Q,evaluate:X,interpolate:nn,variable:"",imports:{_:On}},On.prototype=Sn.prototype,On.prototype.constructor=On,zn.prototype=io(Sn.prototype),zn.prototype.constructor=zn,Mn.prototype=io(Sn.prototype),Mn.prototype.constructor=Mn,Tn.prototype.clear=function(){this.__data__=Gi?Gi(null):{},this.size=0},Tn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n],
this.size-=n?1:0,n},Tn.prototype.get=function(n){var t=this.__data__;return Gi?(n=t[n],"__lodash_hash_undefined__"===n?F:n):ci.call(t,n)?t[n]:F},Tn.prototype.has=function(n){var t=this.__data__;return Gi?t[n]!==F:ci.call(t,n)},Tn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=Gi&&t===F?"__lodash_hash_undefined__":t,this},Nn.prototype.clear=function(){this.__data__=[],this.size=0},Nn.prototype.delete=function(n){var t=this.__data__;return n=lt(t,n),!(0>n)&&(n==t.length-1?t.pop():wi.call(t,n,1),
--this.size,true)},Nn.prototype.get=function(n){var t=this.__data__;return n=lt(t,n),0>n?F:t[n][1]},Nn.prototype.has=function(n){return-1<lt(this.__data__,n)},Nn.prototype.set=function(n,t){var r=this.__data__,e=lt(r,n);return 0>e?(++this.size,r.push([n,t])):r[e][1]=t,this},Pn.prototype.clear=function(){this.size=0,this.__data__={hash:new Tn,map:new(Zi||Nn),string:new Tn}},Pn.prototype.delete=function(n){return n=we(this,n).delete(n),this.size-=n?1:0,n},Pn.prototype.get=function(n){return we(this,n).get(n);
},Pn.prototype.has=function(n){return we(this,n).has(n)},Pn.prototype.set=function(n,t){var r=we(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},qn.prototype.add=qn.prototype.push=function(n){return this.__data__.set(n,"__lodash_hash_undefined__"),this},qn.prototype.has=function(n){return this.__data__.has(n)},Vn.prototype.clear=function(){this.__data__=new Nn,this.size=0},Vn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Vn.prototype.get=function(n){
return this.__data__.get(n)},Vn.prototype.has=function(n){return this.__data__.has(n)},Vn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Nn){var e=r.__data__;if(!Zi||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Pn(e)}return r.set(n,t),this.size=r.size,this};var oo=Zr(Et),fo=Zr(Ot,true),co=qr(),ao=qr(true),lo=Hi?function(n,t){return Hi.set(n,t),n}:Nu,so=Ei?function(n,t){return Ei(n,"toString",{configurable:true,enumerable:false,value:Fu(t),writable:true})}:Nu,ho=Oi||function(n){
return Zn.clearTimeout(n)},po=Vi&&1/D(new Vi([,-0]))[1]==N?function(n){return new Vi(n)}:qu,_o=Hi?function(n){return Hi.get(n)}:qu,vo=Wi?function(n){return null==n?[]:(n=ni(n),f(Wi(n),function(t){return ji.call(n,t)}))}:Ku,go=Wi?function(n){for(var t=[];n;)s(t,vo(n)),n=bi(n);return t}:Ku,yo=zt;(Pi&&"[object DataView]"!=yo(new Pi(new ArrayBuffer(1)))||Zi&&"[object Map]"!=yo(new Zi)||qi&&"[object Promise]"!=yo(qi.resolve())||Vi&&"[object Set]"!=yo(new Vi)||Ki&&"[object WeakMap]"!=yo(new Ki))&&(yo=function(n){
var t=zt(n);if(n=(n="[object Object]"==t?n.constructor:F)?Fe(n):"")switch(n){case Yi:return"[object DataView]";case Qi:return"[object Map]";case Xi:return"[object Promise]";case no:return"[object Set]";case to:return"[object WeakMap]"}return t});var bo=oi?gu:Gu,xo=Me(lo),jo=Ii||function(n,t){return Zn.setTimeout(n,t)},wo=Me(so),mo=function(n){n=lu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return en.test(n)&&t.push(""),n.replace(un,function(n,r,e,u){
t.push(e?u.replace(vn,"$1"):r||n)}),t}),Ao=lr(function(n,t){return _u(n)?jt(n,kt(t,1,_u,true)):[]}),ko=lr(function(n,t){var r=Ge(t);return _u(r)&&(r=F),_u(n)?jt(n,kt(t,1,_u,true),je(r,2)):[]}),Eo=lr(function(n,t){var r=Ge(t);return _u(r)&&(r=F),_u(n)?jt(n,kt(t,1,_u,true),F,r):[]}),Oo=lr(function(n){var t=l(n,Sr);return t.length&&t[0]===n[0]?Ut(t):[]}),So=lr(function(n){var t=Ge(n),r=l(n,Sr);return t===Ge(r)?t=F:r.pop(),r.length&&r[0]===n[0]?Ut(r,je(t,2)):[]}),Io=lr(function(n){var t=Ge(n),r=l(n,Sr);return(t=typeof t=="function"?t:F)&&r.pop(),
r.length&&r[0]===n[0]?Ut(r,F,t):[]}),Ro=lr(He),zo=ge(function(n,t){var r=null==n?0:n.length,e=vt(n,t);return fr(n,l(t,function(n){return Re(n,r)?+n:n}).sort(Ur)),e}),Wo=lr(function(n){return wr(kt(n,1,_u,true))}),Bo=lr(function(n){var t=Ge(n);return _u(t)&&(t=F),wr(kt(n,1,_u,true),je(t,2))}),Lo=lr(function(n){var t=Ge(n),t=typeof t=="function"?t:F;return wr(kt(n,1,_u,true),F,t)}),Uo=lr(function(n,t){return _u(n)?jt(n,t):[]}),Co=lr(function(n){return Er(f(n,_u))}),Do=lr(function(n){var t=Ge(n);return _u(t)&&(t=F),
Er(f(n,_u),je(t,2))}),Mo=lr(function(n){var t=Ge(n),t=typeof t=="function"?t:F;return Er(f(n,_u),F,t)}),To=lr(Ye),$o=lr(function(n){var t=n.length,t=1<t?n[t-1]:F,t=typeof t=="function"?(n.pop(),t):F;return Qe(n,t)}),Fo=ge(function(n){function t(t){return vt(t,n)}var r=n.length,e=r?n[0]:0,u=this.__wrapped__;return!(1<r||this.__actions__.length)&&u instanceof Mn&&Re(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:nu,args:[t],thisArg:F}),new zn(u,this.__chain__).thru(function(n){return r&&!n.length&&n.push(F),
n})):this.thru(t)}),No=Nr(function(n,t,r){ci.call(n,r)?++n[r]:_t(n,r,1)}),Po=Yr(Ze),Zo=Yr(qe),qo=Nr(function(n,t,r){ci.call(n,r)?n[r].push(t):_t(n,r,[t])}),Vo=lr(function(n,t,e){var u=-1,i=typeof t=="function",o=pu(n)?Hu(n.length):[];return oo(n,function(n){o[++u]=i?r(t,n,e):Dt(n,t,e)}),o}),Ko=Nr(function(n,t,r){_t(n,r,t)}),Go=Nr(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Ho=lr(function(n,t){if(null==n)return[];var r=t.length;return 1<r&&ze(n,t[0],t[1])?t=[]:2<r&&ze(t[0],t[1],t[2])&&(t=[t[0]]),
rr(n,kt(t,1),[])}),Jo=Si||function(){return Zn.Date.now()},Yo=lr(function(n,t,r){var e=1;if(r.length)var u=C(r,xe(Yo)),e=32|e;return le(n,e,t,r,u)}),Qo=lr(function(n,t,r){var e=3;if(r.length)var u=C(r,xe(Qo)),e=32|e;return le(t,e,n,r,u)}),Xo=lr(function(n,t){return xt(n,1,t)}),nf=lr(function(n,t,r){return xt(n,Iu(t)||0,r)});lu.Cache=Pn;var tf=lr(function(n,t){t=1==t.length&&af(t[0])?l(t[0],S(je())):l(kt(t,1),S(je()));var e=t.length;return lr(function(u){for(var i=-1,o=Mi(u.length,e);++i<o;)u[i]=t[i].call(this,u[i]);
return r(n,this,u)})}),rf=lr(function(n,t){return le(n,32,F,t,C(t,xe(rf)))}),ef=lr(function(n,t){return le(n,64,F,t,C(t,xe(ef)))}),uf=ge(function(n,t){return le(n,256,F,F,F,t)}),of=oe(Wt),ff=oe(function(n,t){return n>=t}),cf=Mt(function(){return arguments}())?Mt:function(n){return xu(n)&&ci.call(n,"callee")&&!ji.call(n,"callee")},af=Hu.isArray,lf=Hn?S(Hn):Tt,sf=Bi||Gu,hf=Jn?S(Jn):$t,pf=Yn?S(Yn):Nt,_f=Qn?S(Qn):qt,vf=Xn?S(Xn):Vt,gf=nt?S(nt):Kt,df=oe(Jt),yf=oe(function(n,t){return n<=t}),bf=Pr(function(n,t){
if(Le(t)||pu(t))Tr(t,Lu(t),n);else for(var r in t)ci.call(t,r)&&at(n,r,t[r])}),xf=Pr(function(n,t){Tr(t,Uu(t),n)}),jf=Pr(function(n,t,r,e){Tr(t,Uu(t),n,e)}),wf=Pr(function(n,t,r,e){Tr(t,Lu(t),n,e)}),mf=ge(vt),Af=lr(function(n){return n.push(F,se),r(jf,F,n)}),kf=lr(function(n){return n.push(F,he),r(Rf,F,n)}),Ef=ne(function(n,t,r){n[t]=r},Fu(Nu)),Of=ne(function(n,t,r){ci.call(n,t)?n[t].push(r):n[t]=[r]},je),Sf=lr(Dt),If=Pr(function(n,t,r){nr(n,t,r)}),Rf=Pr(function(n,t,r,e){nr(n,t,r,e)}),zf=ge(function(n,t){
var r={};if(null==n)return r;var e=false;t=l(t,function(t){return t=Rr(t,n),e||(e=1<t.length),t}),Tr(n,ye(n),r),e&&(r=dt(r,7,pe));for(var u=t.length;u--;)mr(r,t[u]);return r}),Wf=ge(function(n,t){return null==n?{}:er(n,t)}),Bf=ae(Lu),Lf=ae(Uu),Uf=Gr(function(n,t,r){return t=t.toLowerCase(),n+(r?Mu(t):t)}),Cf=Gr(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Df=Gr(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),Mf=Kr("toLowerCase"),Tf=Gr(function(n,t,r){return n+(r?"_":"")+t.toLowerCase();
}),$f=Gr(function(n,t,r){return n+(r?" ":"")+Nf(t)}),Ff=Gr(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),Nf=Kr("toUpperCase"),Pf=lr(function(n,t){try{return r(n,F,t)}catch(n){return vu(n)?n:new Yu(n)}}),Zf=ge(function(n,t){return u(t,function(t){t=$e(t),_t(n,t,Yo(n[t],n))}),n}),qf=Qr(),Vf=Qr(true),Kf=lr(function(n,t){return function(r){return Dt(r,n,t)}}),Gf=lr(function(n,t){return function(r){return Dt(n,r,t)}}),Hf=re(l),Jf=re(o),Yf=re(_),Qf=ie(),Xf=ie(true),nc=te(function(n,t){return n+t},0),tc=ce("ceil"),rc=te(function(n,t){
return n/t},1),ec=ce("floor"),uc=te(function(n,t){return n*t},1),ic=ce("round"),oc=te(function(n,t){return n-t},0);return On.after=function(n,t){if(typeof t!="function")throw new ei("Expected a function");return n=Ou(n),function(){if(1>--n)return t.apply(this,arguments)}},On.ary=iu,On.assign=bf,On.assignIn=xf,On.assignInWith=jf,On.assignWith=wf,On.at=mf,On.before=ou,On.bind=Yo,On.bindAll=Zf,On.bindKey=Qo,On.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return af(n)?n:[n]},
On.chain=Xe,On.chunk=function(n,t,r){if(t=(r?ze(n,t,r):t===F)?1:Di(Ou(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Hu(Ri(r/t));e<r;)i[u++]=vr(n,e,e+=t);return i},On.compact=function(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){var i=n[t];i&&(u[e++]=i)}return u},On.concat=function(){var n=arguments.length;if(!n)return[];for(var t=Hu(n-1),r=arguments[0];n--;)t[n-1]=arguments[n];return s(af(r)?Mr(r):[r],kt(t,1))},On.cond=function(n){var t=null==n?0:n.length,e=je();return n=t?l(n,function(n){
if("function"!=typeof n[1])throw new ei("Expected a function");return[e(n[0]),n[1]]}):[],lr(function(e){for(var u=-1;++u<t;){var i=n[u];if(r(i[0],this,e))return r(i[1],this,e)}})},On.conforms=function(n){return yt(dt(n,1))},On.constant=Fu,On.countBy=No,On.create=function(n,t){var r=io(n);return null==t?r:ht(r,t)},On.curry=fu,On.curryRight=cu,On.debounce=au,On.defaults=Af,On.defaultsDeep=kf,On.defer=Xo,On.delay=nf,On.difference=Ao,On.differenceBy=ko,On.differenceWith=Eo,On.drop=function(n,t,r){var e=null==n?0:n.length;
return e?(t=r||t===F?1:Ou(t),vr(n,0>t?0:t,e)):[]},On.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===F?1:Ou(t),t=e-t,vr(n,0,0>t?0:t)):[]},On.dropRightWhile=function(n,t){return n&&n.length?Ar(n,je(t,3),true,true):[]},On.dropWhile=function(n,t){return n&&n.length?Ar(n,je(t,3),true):[]},On.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!="number"&&ze(n,t,r)&&(r=0,e=u),u=n.length,r=Ou(r),0>r&&(r=-r>u?0:u+r),e=e===F||e>u?u:Ou(e),0>e&&(e+=u),e=r>e?0:Su(e);r<e;)n[r++]=t;
return n},On.filter=function(n,t){return(af(n)?f:At)(n,je(t,3))},On.flatMap=function(n,t){return kt(uu(n,t),1)},On.flatMapDeep=function(n,t){return kt(uu(n,t),N)},On.flatMapDepth=function(n,t,r){return r=r===F?1:Ou(r),kt(uu(n,t),r)},On.flatten=Ve,On.flattenDeep=function(n){return(null==n?0:n.length)?kt(n,N):[]},On.flattenDepth=function(n,t){return null!=n&&n.length?(t=t===F?1:Ou(t),kt(n,t)):[]},On.flip=function(n){return le(n,512)},On.flow=qf,On.flowRight=Vf,On.fromPairs=function(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){
var u=n[t];e[u[0]]=u[1]}return e},On.functions=function(n){return null==n?[]:St(n,Lu(n))},On.functionsIn=function(n){return null==n?[]:St(n,Uu(n))},On.groupBy=qo,On.initial=function(n){return(null==n?0:n.length)?vr(n,0,-1):[]},On.intersection=Oo,On.intersectionBy=So,On.intersectionWith=Io,On.invert=Ef,On.invertBy=Of,On.invokeMap=Vo,On.iteratee=Pu,On.keyBy=Ko,On.keys=Lu,On.keysIn=Uu,On.map=uu,On.mapKeys=function(n,t){var r={};return t=je(t,3),Et(n,function(n,e,u){_t(r,t(n,e,u),n)}),r},On.mapValues=function(n,t){
var r={};return t=je(t,3),Et(n,function(n,e,u){_t(r,e,t(n,e,u))}),r},On.matches=function(n){return Qt(dt(n,1))},On.matchesProperty=function(n,t){return Xt(n,dt(t,1))},On.memoize=lu,On.merge=If,On.mergeWith=Rf,On.method=Kf,On.methodOf=Gf,On.mixin=Zu,On.negate=su,On.nthArg=function(n){return n=Ou(n),lr(function(t){return tr(t,n)})},On.omit=zf,On.omitBy=function(n,t){return Cu(n,su(je(t)))},On.once=function(n){return ou(2,n)},On.orderBy=function(n,t,r,e){return null==n?[]:(af(t)||(t=null==t?[]:[t]),
r=e?F:r,af(r)||(r=null==r?[]:[r]),rr(n,t,r))},On.over=Hf,On.overArgs=tf,On.overEvery=Jf,On.overSome=Yf,On.partial=rf,On.partialRight=ef,On.partition=Go,On.pick=Wf,On.pickBy=Cu,On.property=Vu,On.propertyOf=function(n){return function(t){return null==n?F:It(n,t)}},On.pull=Ro,On.pullAll=He,On.pullAllBy=function(n,t,r){return n&&n.length&&t&&t.length?or(n,t,je(r,2)):n},On.pullAllWith=function(n,t,r){return n&&n.length&&t&&t.length?or(n,t,F,r):n},On.pullAt=zo,On.range=Qf,On.rangeRight=Xf,On.rearg=uf,On.reject=function(n,t){
return(af(n)?f:At)(n,su(je(t,3)))},On.remove=function(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=je(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),u.push(e))}return fr(n,u),r},On.rest=function(n,t){if(typeof n!="function")throw new ei("Expected a function");return t=t===F?t:Ou(t),lr(n,t)},On.reverse=Je,On.sampleSize=function(n,t,r){return t=(r?ze(n,t,r):t===F)?1:Ou(t),(af(n)?ot:hr)(n,t)},On.set=function(n,t,r){return null==n?n:pr(n,t,r)},On.setWith=function(n,t,r,e){return e=typeof e=="function"?e:F,
null==n?n:pr(n,t,r,e)},On.shuffle=function(n){return(af(n)?ft:_r)(n)},On.slice=function(n,t,r){var e=null==n?0:n.length;return e?(r&&typeof r!="number"&&ze(n,t,r)?(t=0,r=e):(t=null==t?0:Ou(t),r=r===F?e:Ou(r)),vr(n,t,r)):[]},On.sortBy=Ho,On.sortedUniq=function(n){return n&&n.length?br(n):[]},On.sortedUniqBy=function(n,t){return n&&n.length?br(n,je(t,2)):[]},On.split=function(n,t,r){return r&&typeof r!="number"&&ze(n,t,r)&&(t=r=F),r=r===F?4294967295:r>>>0,r?(n=zu(n))&&(typeof t=="string"||null!=t&&!_f(t))&&(t=jr(t),
!t&&Bn.test(n))?zr($(n),0,r):n.split(t,r):[]},On.spread=function(n,t){if(typeof n!="function")throw new ei("Expected a function");return t=null==t?0:Di(Ou(t),0),lr(function(e){var u=e[t];return e=zr(e,0,t),u&&s(e,u),r(n,this,e)})},On.tail=function(n){var t=null==n?0:n.length;return t?vr(n,1,t):[]},On.take=function(n,t,r){return n&&n.length?(t=r||t===F?1:Ou(t),vr(n,0,0>t?0:t)):[]},On.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===F?1:Ou(t),t=e-t,vr(n,0>t?0:t,e)):[]},On.takeRightWhile=function(n,t){
return n&&n.length?Ar(n,je(t,3),false,true):[]},On.takeWhile=function(n,t){return n&&n.length?Ar(n,je(t,3)):[]},On.tap=function(n,t){return t(n),n},On.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ei("Expected a function");return bu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),au(n,t,{leading:e,maxWait:t,trailing:u})},On.thru=nu,On.toArray=ku,On.toPairs=Bf,On.toPairsIn=Lf,On.toPath=function(n){return af(n)?l(n,$e):Au(n)?[n]:Mr(mo(zu(n)))},On.toPlainObject=Ru,
On.transform=function(n,t,r){var e=af(n),i=e||sf(n)||gf(n);if(t=je(t,4),null==r){var o=n&&n.constructor;r=i?e?new o:[]:bu(n)&&gu(o)?io(bi(n)):{}}return(i?u:Et)(n,function(n,e,u){return t(r,n,e,u)}),r},On.unary=function(n){return iu(n,1)},On.union=Wo,On.unionBy=Bo,On.unionWith=Lo,On.uniq=function(n){return n&&n.length?wr(n):[]},On.uniqBy=function(n,t){return n&&n.length?wr(n,je(t,2)):[]},On.uniqWith=function(n,t){return t=typeof t=="function"?t:F,n&&n.length?wr(n,F,t):[]},On.unset=function(n,t){return null==n||mr(n,t);
},On.unzip=Ye,On.unzipWith=Qe,On.update=function(n,t,r){return null==n?n:pr(n,t,Ir(r)(It(n,t)),void 0)},On.updateWith=function(n,t,r,e){return e=typeof e=="function"?e:F,null!=n&&(n=pr(n,t,Ir(r)(It(n,t)),e)),n},On.values=Du,On.valuesIn=function(n){return null==n?[]:I(n,Uu(n))},On.without=Uo,On.words=$u,On.wrap=function(n,t){return rf(Ir(t),n)},On.xor=Co,On.xorBy=Do,On.xorWith=Mo,On.zip=To,On.zipObject=function(n,t){return Or(n||[],t||[],at)},On.zipObjectDeep=function(n,t){return Or(n||[],t||[],pr);
},On.zipWith=$o,On.entries=Bf,On.entriesIn=Lf,On.extend=xf,On.extendWith=jf,Zu(On,On),On.add=nc,On.attempt=Pf,On.camelCase=Uf,On.capitalize=Mu,On.ceil=tc,On.clamp=function(n,t,r){return r===F&&(r=t,t=F),r!==F&&(r=Iu(r),r=r===r?r:0),t!==F&&(t=Iu(t),t=t===t?t:0),gt(Iu(n),t,r)},On.clone=function(n){return dt(n,4)},On.cloneDeep=function(n){return dt(n,5)},On.cloneDeepWith=function(n,t){return t=typeof t=="function"?t:F,dt(n,5,t)},On.cloneWith=function(n,t){return t=typeof t=="function"?t:F,dt(n,4,t)},
On.conformsTo=function(n,t){return null==t||bt(n,t,Lu(t))},On.deburr=Tu,On.defaultTo=function(n,t){return null==n||n!==n?t:n},On.divide=rc,On.endsWith=function(n,t,r){n=zu(n),t=jr(t);var e=n.length,e=r=r===F?e:gt(Ou(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},On.eq=hu,On.escape=function(n){return(n=zu(n))&&Y.test(n)?n.replace(H,et):n},On.escapeRegExp=function(n){return(n=zu(n))&&fn.test(n)?n.replace(on,"\\$&"):n},On.every=function(n,t,r){var e=af(n)?o:wt;return r&&ze(n,t,r)&&(t=F),e(n,je(t,3));
},On.find=Po,On.findIndex=Ze,On.findKey=function(n,t){return v(n,je(t,3),Et)},On.findLast=Zo,On.findLastIndex=qe,On.findLastKey=function(n,t){return v(n,je(t,3),Ot)},On.floor=ec,On.forEach=ru,On.forEachRight=eu,On.forIn=function(n,t){return null==n?n:co(n,je(t,3),Uu)},On.forInRight=function(n,t){return null==n?n:ao(n,je(t,3),Uu)},On.forOwn=function(n,t){return n&&Et(n,je(t,3))},On.forOwnRight=function(n,t){return n&&Ot(n,je(t,3))},On.get=Wu,On.gt=of,On.gte=ff,On.has=function(n,t){return null!=n&&ke(n,t,Bt);
},On.hasIn=Bu,On.head=Ke,On.identity=Nu,On.includes=function(n,t,r,e){return n=pu(n)?n:Du(n),r=r&&!e?Ou(r):0,e=n.length,0>r&&(r=Di(e+r,0)),mu(n)?r<=e&&-1<n.indexOf(t,r):!!e&&-1<d(n,t,r)},On.indexOf=function(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Ou(r),0>r&&(r=Di(e+r,0)),d(n,t,r)):-1},On.inRange=function(n,t,r){return t=Eu(t),r===F?(r=t,t=0):r=Eu(r),n=Iu(n),n>=Mi(t,r)&&n<Di(t,r)},On.invoke=Sf,On.isArguments=cf,On.isArray=af,On.isArrayBuffer=lf,On.isArrayLike=pu,On.isArrayLikeObject=_u,
On.isBoolean=function(n){return true===n||false===n||xu(n)&&"[object Boolean]"==zt(n)},On.isBuffer=sf,On.isDate=hf,On.isElement=function(n){return xu(n)&&1===n.nodeType&&!wu(n)},On.isEmpty=function(n){if(null==n)return true;if(pu(n)&&(af(n)||typeof n=="string"||typeof n.splice=="function"||sf(n)||gf(n)||cf(n)))return!n.length;var t=yo(n);if("[object Map]"==t||"[object Set]"==t)return!n.size;if(Le(n))return!Ht(n).length;for(var r in n)if(ci.call(n,r))return false;return true},On.isEqual=function(n,t){return Ft(n,t);
},On.isEqualWith=function(n,t,r){var e=(r=typeof r=="function"?r:F)?r(n,t):F;return e===F?Ft(n,t,F,r):!!e},On.isError=vu,On.isFinite=function(n){return typeof n=="number"&&Li(n)},On.isFunction=gu,On.isInteger=du,On.isLength=yu,On.isMap=pf,On.isMatch=function(n,t){return n===t||Pt(n,t,me(t))},On.isMatchWith=function(n,t,r){return r=typeof r=="function"?r:F,Pt(n,t,me(t),r)},On.isNaN=function(n){return ju(n)&&n!=+n},On.isNative=function(n){if(bo(n))throw new Yu("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");
return Zt(n)},On.isNil=function(n){return null==n},On.isNull=function(n){return null===n},On.isNumber=ju,On.isObject=bu,On.isObjectLike=xu,On.isPlainObject=wu,On.isRegExp=_f,On.isSafeInteger=function(n){return du(n)&&-9007199254740991<=n&&9007199254740991>=n},On.isSet=vf,On.isString=mu,On.isSymbol=Au,On.isTypedArray=gf,On.isUndefined=function(n){return n===F},On.isWeakMap=function(n){return xu(n)&&"[object WeakMap]"==yo(n)},On.isWeakSet=function(n){return xu(n)&&"[object WeakSet]"==zt(n)},On.join=function(n,t){
return null==n?"":Ui.call(n,t)},On.kebabCase=Cf,On.last=Ge,On.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==F&&(u=Ou(r),u=0>u?Di(e+u,0):Mi(u,e-1)),t===t){for(r=u+1;r--&&n[r]!==t;);n=r}else n=g(n,b,u,true);return n},On.lowerCase=Df,On.lowerFirst=Mf,On.lt=df,On.lte=yf,On.max=function(n){return n&&n.length?mt(n,Nu,Wt):F},On.maxBy=function(n,t){return n&&n.length?mt(n,je(t,2),Wt):F},On.mean=function(n){return x(n,Nu)},On.meanBy=function(n,t){return x(n,je(t,2))},On.min=function(n){
return n&&n.length?mt(n,Nu,Jt):F},On.minBy=function(n,t){return n&&n.length?mt(n,je(t,2),Jt):F},On.stubArray=Ku,On.stubFalse=Gu,On.stubObject=function(){return{}},On.stubString=function(){return""},On.stubTrue=function(){return true},On.multiply=uc,On.nth=function(n,t){return n&&n.length?tr(n,Ou(t)):F},On.noConflict=function(){return Zn._===this&&(Zn._=pi),this},On.noop=qu,On.now=Jo,On.pad=function(n,t,r){n=zu(n);var e=(t=Ou(t))?T(n):0;return!t||e>=t?n:(t=(t-e)/2,ee(zi(t),r)+n+ee(Ri(t),r))},On.padEnd=function(n,t,r){
n=zu(n);var e=(t=Ou(t))?T(n):0;return t&&e<t?n+ee(t-e,r):n},On.padStart=function(n,t,r){n=zu(n);var e=(t=Ou(t))?T(n):0;return t&&e<t?ee(t-e,r)+n:n},On.parseInt=function(n,t,r){return r||null==t?t=0:t&&(t=+t),$i(zu(n).replace(an,""),t||0)},On.random=function(n,t,r){if(r&&typeof r!="boolean"&&ze(n,t,r)&&(t=r=F),r===F&&(typeof t=="boolean"?(r=t,t=F):typeof n=="boolean"&&(r=n,n=F)),n===F&&t===F?(n=0,t=1):(n=Eu(n),t===F?(t=n,n=0):t=Eu(t)),n>t){var e=n;n=t,t=e}return r||n%1||t%1?(r=Fi(),Mi(n+r*(t-n+$n("1e-"+((r+"").length-1))),t)):cr(n,t);
},On.reduce=function(n,t,r){var e=af(n)?h:m,u=3>arguments.length;return e(n,je(t,4),r,u,oo)},On.reduceRight=function(n,t,r){var e=af(n)?p:m,u=3>arguments.length;return e(n,je(t,4),r,u,fo)},On.repeat=function(n,t,r){return t=(r?ze(n,t,r):t===F)?1:Ou(t),ar(zu(n),t)},On.replace=function(){var n=arguments,t=zu(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},On.result=function(n,t,r){t=Rr(t,n);var e=-1,u=t.length;for(u||(u=1,n=F);++e<u;){var i=null==n?F:n[$e(t[e])];i===F&&(e=u,i=r),n=gu(i)?i.call(n):i;
}return n},On.round=ic,On.runInContext=w,On.sample=function(n){return(af(n)?tt:sr)(n)},On.size=function(n){if(null==n)return 0;if(pu(n))return mu(n)?T(n):n.length;var t=yo(n);return"[object Map]"==t||"[object Set]"==t?n.size:Ht(n).length},On.snakeCase=Tf,On.some=function(n,t,r){var e=af(n)?_:gr;return r&&ze(n,t,r)&&(t=F),e(n,je(t,3))},On.sortedIndex=function(n,t){return dr(n,t)},On.sortedIndexBy=function(n,t,r){return yr(n,t,je(r,2))},On.sortedIndexOf=function(n,t){var r=null==n?0:n.length;if(r){
var e=dr(n,t);if(e<r&&hu(n[e],t))return e}return-1},On.sortedLastIndex=function(n,t){return dr(n,t,true)},On.sortedLastIndexBy=function(n,t,r){return yr(n,t,je(r,2),true)},On.sortedLastIndexOf=function(n,t){if(null==n?0:n.length){var r=dr(n,t,true)-1;if(hu(n[r],t))return r}return-1},On.startCase=$f,On.startsWith=function(n,t,r){return n=zu(n),r=null==r?0:gt(Ou(r),0,n.length),t=jr(t),n.slice(r,r+t.length)==t},On.subtract=oc,On.sum=function(n){return n&&n.length?k(n,Nu):0},On.sumBy=function(n,t){return n&&n.length?k(n,je(t,2)):0;
},On.template=function(n,t,r){var e=On.templateSettings;r&&ze(n,t,r)&&(t=F),n=zu(n),t=jf({},t,e,se),r=jf({},t.imports,e.imports,se);var u,i,o=Lu(r),f=I(r,o),c=0;r=t.interpolate||An;var a="__p+='";r=ti((t.escape||An).source+"|"+r.source+"|"+(r===nn?gn:An).source+"|"+(t.evaluate||An).source+"|$","g");var l="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,o,f,l){return e||(e=o),a+=n.slice(c,l).replace(kn,B),r&&(u=true,a+="'+__e("+r+")+'"),f&&(i=true,a+="';"+f+";\n__p+='"),
e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+t.length,t}),a+="';",(t=t.variable)||(a="with(obj){"+a+"}"),a=(i?a.replace(q,""):a).replace(V,"$1").replace(K,"$1;"),a="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",t=Pf(function(){return Qu(o,l+"return "+a).apply(F,f)}),t.source=a,vu(t))throw t;return t},On.times=function(n,t){if(n=Ou(n),1>n||9007199254740991<n)return[];
var r=4294967295,e=Mi(n,4294967295);for(t=je(t),n-=4294967295,e=E(e,t);++r<n;)t(r);return e},On.toFinite=Eu,On.toInteger=Ou,On.toLength=Su,On.toLower=function(n){return zu(n).toLowerCase()},On.toNumber=Iu,On.toSafeInteger=function(n){return n?gt(Ou(n),-9007199254740991,9007199254740991):0===n?n:0},On.toString=zu,On.toUpper=function(n){return zu(n).toUpperCase()},On.trim=function(n,t,r){return(n=zu(n))&&(r||t===F)?n.replace(cn,""):n&&(t=jr(t))?(n=$(n),r=$(t),t=z(n,r),r=W(n,r)+1,zr(n,t,r).join("")):n;
},On.trimEnd=function(n,t,r){return(n=zu(n))&&(r||t===F)?n.replace(ln,""):n&&(t=jr(t))?(n=$(n),t=W(n,$(t))+1,zr(n,0,t).join("")):n},On.trimStart=function(n,t,r){return(n=zu(n))&&(r||t===F)?n.replace(an,""):n&&(t=jr(t))?(n=$(n),t=z(n,$(t)),zr(n,t).join("")):n},On.truncate=function(n,t){var r=30,e="...";if(bu(t))var u="separator"in t?t.separator:u,r="length"in t?Ou(t.length):r,e="omission"in t?jr(t.omission):e;n=zu(n);var i=n.length;if(Bn.test(n))var o=$(n),i=o.length;if(r>=i)return n;if(i=r-T(e),1>i)return e;
if(r=o?zr(o,0,i).join(""):n.slice(0,i),u===F)return r+e;if(o&&(i+=r.length-i),_f(u)){if(n.slice(i).search(u)){var f=r;for(u.global||(u=ti(u.source,zu(dn.exec(u))+"g")),u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===F?i:c)}}else n.indexOf(jr(u),i)!=i&&(u=r.lastIndexOf(u),-1<u&&(r=r.slice(0,u)));return r+e},On.unescape=function(n){return(n=zu(n))&&J.test(n)?n.replace(G,ut):n},On.uniqueId=function(n){var t=++ai;return zu(n)+t},On.upperCase=Ff,On.upperFirst=Nf,On.each=ru,On.eachRight=eu,On.first=Ke,
Zu(On,function(){var n={};return Et(On,function(t,r){ci.call(On.prototype,r)||(n[r]=t)}),n}(),{chain:false}),On.VERSION="4.17.3",u("bind bindKey curry curryRight partial partialRight".split(" "),function(n){On[n].placeholder=On}),u(["drop","take"],function(n,t){Mn.prototype[n]=function(r){r=r===F?1:Di(Ou(r),0);var e=this.__filtered__&&!t?new Mn(this):this.clone();return e.__filtered__?e.__takeCount__=Mi(r,e.__takeCount__):e.__views__.push({size:Mi(r,4294967295),type:n+(0>e.__dir__?"Right":"")}),e},Mn.prototype[n+"Right"]=function(t){
return this.reverse()[n](t).reverse()}}),u(["filter","map","takeWhile"],function(n,t){var r=t+1,e=1==r||3==r;Mn.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:je(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),u(["head","last"],function(n,t){var r="take"+(t?"Right":"");Mn.prototype[n]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Mn.prototype[n]=function(){return this.__filtered__?new Mn(this):this[r](1);
}}),Mn.prototype.compact=function(){return this.filter(Nu)},Mn.prototype.find=function(n){return this.filter(n).head()},Mn.prototype.findLast=function(n){return this.reverse().find(n)},Mn.prototype.invokeMap=lr(function(n,t){return typeof n=="function"?new Mn(this):this.map(function(r){return Dt(r,n,t)})}),Mn.prototype.reject=function(n){return this.filter(su(je(n)))},Mn.prototype.slice=function(n,t){n=Ou(n);var r=this;return r.__filtered__&&(0<n||0>t)?new Mn(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),
t!==F&&(t=Ou(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Mn.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Mn.prototype.toArray=function(){return this.take(4294967295)},Et(Mn.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=On[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t);u&&(On.prototype[t]=function(){function t(n){return n=u.apply(On,s([n],f)),e&&h?n[0]:n}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Mn,a=f[0],l=c||af(o);
l&&r&&typeof a=="function"&&1!=a.length&&(c=l=false);var h=this.__chain__,p=!!this.__actions__.length,a=i&&!h,c=c&&!p;return!i&&l?(o=c?o:new Mn(this),o=n.apply(o,f),o.__actions__.push({func:nu,args:[t],thisArg:F}),new zn(o,h)):a&&c?n.apply(this,f):(o=this.thru(t),a?e?o.value()[0]:o.value():o)})}),u("pop push shift sort splice unshift".split(" "),function(n){var t=ui[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);On.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){
var u=this.value();return t.apply(af(u)?u:[],n)}return this[r](function(r){return t.apply(af(r)?r:[],n)})}}),Et(Mn.prototype,function(n,t){var r=On[t];if(r){var e=r.name+"";(Ji[e]||(Ji[e]=[])).push({name:t,func:r})}}),Ji[Xr(F,2).name]=[{name:"wrapper",func:F}],Mn.prototype.clone=function(){var n=new Mn(this.__wrapped__);return n.__actions__=Mr(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Mr(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Mr(this.__views__),
n},Mn.prototype.reverse=function(){if(this.__filtered__){var n=new Mn(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Mn.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=af(t),u=0>r,i=e?t.length:0;n=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++c<a;){var l=o[c],s=l.size;switch(l.type){case"drop":f+=s;break;case"dropRight":n-=s;break;case"take":n=Mi(n,f+s);break;case"takeRight":f=Di(f,n-s)}}if(n={start:f,end:n},o=n.start,f=n.end,n=f-o,
o=u?f:o-1,f=this.__iteratees__,c=f.length,a=0,l=Mi(n,this.__takeCount__),!e||!u&&i==n&&l==n)return kr(t,this.__actions__);e=[];n:for(;n--&&a<l;){for(o+=r,u=-1,i=t[o];++u<c;){var h=f[u],s=h.type,h=(0,h.iteratee)(i);if(2==s)i=h;else if(!h){if(1==s)continue n;break n}}e[a++]=i}return e},On.prototype.at=Fo,On.prototype.chain=function(){return Xe(this)},On.prototype.commit=function(){return new zn(this.value(),this.__chain__)},On.prototype.next=function(){this.__values__===F&&(this.__values__=ku(this.value()));
var n=this.__index__>=this.__values__.length;return{done:n,value:n?F:this.__values__[this.__index__++]}},On.prototype.plant=function(n){for(var t,r=this;r instanceof Sn;){var e=Pe(r);e.__index__=0,e.__values__=F,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},On.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Mn?(this.__actions__.length&&(n=new Mn(this)),n=n.reverse(),n.__actions__.push({func:nu,args:[Je],thisArg:F}),new zn(n,this.__chain__)):this.thru(Je);
},On.prototype.toJSON=On.prototype.valueOf=On.prototype.value=function(){return kr(this.__wrapped__,this.__actions__)},On.prototype.first=On.prototype.head,Ai&&(On.prototype[Ai]=tu),On}();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Zn._=it, define(function(){return it})):Vn?((Vn.exports=it)._=it,qn._=it):Zn._=it}).call(this);;
window.Tagipedia = window.Tagipedia || {}

Tagipedia.registerUrlPatternAsVisitableFromContainer = function (regex) {
  Tagipedia._visitableURLRegex = Tagipedia._visitableURLRegex || [];
  if (!$.isArray(regex)) {
    return Tagipedia.registerUrlPatternAsVisitableFromContainer([regex]);
  }

  $.each(regex, function(idx, value){
    Tagipedia._visitableURLRegex.push(value);
  });
}


Tagipedia.registerContainerHandledUrlPatterns = function(patterns) {
  Tagipedia._containerHandledUrlPatterns = Tagipedia._containerHandledUrlPatterns || [];
  patterns = $.isArray(patterns) ? patterns : [patterns];
  $.each(patterns, function(idx, value) {
    Tagipedia._containerHandledUrlPatterns.push(value)
  });
}

Tagipedia.handleUrlThroughContainer = function(url) {
  var patterns = Tagipedia._containerHandledUrlPatterns || [];
  if (!patterns.length) {
    return false;
  }
  var isFound = !!_.find(patterns, function(regex) { return url.match(regex);} );

  if (isFound) {
    Tagipedia.dispatchToContainer({
      type: 'HANDLE_WEBVIEW_URL_NAVIGATION',
      url: url
    });
  }
  return isFound;
}

Tagipedia.isUrlVisitableFromContainer = function(url){
  var enableUrls = Tagipedia._visitableURLRegex || [];

  for (var i = 0; i < enableUrls.length; i++) {
    if(url.match(enableUrls[i])){
      return true;
    }
  }
  return false;
}

Tagipedia.callOnce = function(key, callback) {
  Tagipedia._callOnceKeys = Tagipedia._callOnceKeys || {};

  if (!Tagipedia._callOnceKeys[key]) {
    callback();
    Tagipedia._callOnceKeys[key] = true;
  }
}

Tagipedia.registerUrlMonitorHooks = function() {
  Tagipedia.callOnce('registerUrlMonitorHooks', function(){
    $('html').on('click','[href]', function(evt){
        const url = $(this).attr('href')
        if(Tagipedia.handleUrlThroughContainer(url)){
          return false
        } else {
          return Tagipedia.isUrlVisitableFromContainer(url)
        }
      }
    );
  })
}

Tagipedia.registerContainerDispatcher = function(container) {
  Tagipedia.container = container;
  if (container.visitableUrlPatterns) {
    Tagipedia.registerUrlPatternAsVisitableFromContainer(container.visitableUrlPatterns);
  }
  if (container.containerHandledUrlPatterns) {
    Tagipedia.registerContainerHandledUrlPatterns(container.containerHandledUrlPatterns);
  }
  Tagipedia.registerUrlMonitorHooks();
  Tagipedia.dispatchPendingActions();
};

Tagipedia.dispatchPendingActions = function() {
  var actions = Tagipedia._pendingActions
  if (actions) {
    delete Tagipedia._pendingActions;
    for (var i = 0; i < actions.length; i++) {
      Tagipedia.dispatchToContainer(actions[i])
    }
  }
}

Tagipedia.dispatchToContainer = function(action) {
  if (Tagipedia.container) {
    if (action && action.type) {

      var replaceRegex = /^(.+)__replace_string__$/;
      var modifiedAction = _.chain(action).toPairs().map(function(pair) {
        var match = replaceRegex.exec(pair[0]);
        if (match && match.length === 2) {
          return [match[1], JSON.parse(pair[1])];
        } else {
          return pair;
        }
      }).fromPairs().value();
      console.log(modifiedAction, action)
      Tagipedia.container.dispatch(modifiedAction);
    } else {
      console.error('trying to dispatch invalid action', action);
    }
  } else {
    (Tagipedia._pendingActions = Tagipedia._pendingActions || []).push(action);
  }
}

$(document).ready(function () {
  $("[data-container-dispatch]").each(function(idx, elem){
    var action = $(elem).data('container-dispatch');
    // console.log(actionString);
    // var action = JSON.parse(actionString);
    if ($.isArray(action)) {
      $(action).each(function(idx, action) {
        Tagipedia.dispatchToContainer(action);
      })
    } else {
      Tagipedia.dispatchToContainer(action);
    }
  });
});
;
function CardJs(elem){this.elem=jQuery(elem),this.captureName=this.elem.data("capture-name")?this.elem.data("capture-name"):!1,this.iconColour=this.elem.data("icon-colour")?this.elem.data("icon-colour"):!1,this.stripe=this.elem.data("stripe")?this.elem.data("stripe"):!1,this.stripe&&(this.captureName=!1),this.initCardNumberInput(),this.initNameInput(),this.initExpiryMonthInput(),this.initExpiryYearInput(),this.initCvcInput(),this.elem.empty(),this.setupCardNumberInput(),this.setupNameInput(),this.setupExpiryInput(),this.setupCvcInput(),this.iconColour&&this.setIconColour(this.iconColour),this.refreshCreditCardTypeIcon()}!function($){var methods={init:function(){return this.data("cardjs",new CardJs(this)),this},cardNumber:function(){return this.data("cardjs").getCardNumber()},cardType:function(){return this.data("cardjs").getCardType()},name:function(){return this.data("cardjs").getName()},expiryMonth:function(){return this.data("cardjs").getExpiryMonth()},expiryYear:function(){return this.data("cardjs").getExpiryYear()},cvc:function(){return this.data("cardjs").getCvc()}};$.fn.CardJs=function(methodOrOptions){return methods[methodOrOptions]?methods[methodOrOptions].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof methodOrOptions&&methodOrOptions?void $.error("Method "+methodOrOptions+" does not exist on jQuery.CardJs"):methods.init.apply(this,arguments)}}(jQuery),$(function(){$(".card-js").each(function(i,obj){$(obj).CardJs()})}),CardJs.prototype.constructor=CardJs,CardJs.KEYS={0:48,9:57,NUMPAD_0:96,NUMPAD_9:105,DELETE:46,BACKSPACE:8,ARROW_LEFT:37,ARROW_RIGHT:39,ARROW_UP:38,ARROW_DOWN:40,HOME:36,END:35,TAB:9,A:65,X:88,C:67,V:86},CardJs.CREDIT_CARD_NUMBER_DEFAULT_MASK="XXXX XXXX XXXX XXXX",CardJs.CREDIT_CARD_NUMBER_VISA_MASK="XXXX XXXX XXXX XXXX",CardJs.CREDIT_CARD_NUMBER_MASTERCARD_MASK="XXXX XXXX XXXX XXXX",CardJs.CREDIT_CARD_NUMBER_DISCOVER_MASK="XXXX XXXX XXXX XXXX",CardJs.CREDIT_CARD_NUMBER_JCB_MASK="XXXX XXXX XXXX XXXX",CardJs.CREDIT_CARD_NUMBER_AMEX_MASK="XXXX XXXXXX XXXXX",CardJs.CREDIT_CARD_NUMBER_DINERS_MASK="XXXX XXXX XXXX XX",CardJs.prototype.creditCardNumberMask=CardJs.CREDIT_CARD_NUMBER_DEFAULT_MASK,CardJs.CREDIT_CARD_NUMBER_PLACEHOLDER="Card number",CardJs.NAME_PLACEHOLDER="Name on card",CardJs.EXPIRY_MASK="XX / XX",CardJs.EXPIRY_PLACEHOLDER="MM / YY",CardJs.EXPIRY_USE_DROPDOWNS=!1,CardJs.EXPIRY_NUMBER_OF_YEARS=10,CardJs.CVC_MASK_3="XXX",CardJs.CVC_MASK_4="XXXX",CardJs.CVC_PLACEHOLDER="CVC",CardJs.CREDIT_CARD_SVG='<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="3px" width="24px" height="17px" viewBox="0 0 216 146" enable-background="new 0 0 216 146" xml:space="preserve"><g><path class="svg" d="M182.385,14.258c-2.553-2.553-5.621-3.829-9.205-3.829H42.821c-3.585,0-6.653,1.276-9.207,3.829c-2.553,2.553-3.829,5.621-3.829,9.206v99.071c0,3.585,1.276,6.654,3.829,9.207c2.554,2.553,5.622,3.829,9.207,3.829H173.18c3.584,0,6.652-1.276,9.205-3.829s3.83-5.622,3.83-9.207V23.464C186.215,19.879,184.938,16.811,182.385,14.258z M175.785,122.536c0,0.707-0.258,1.317-0.773,1.834c-0.516,0.515-1.127,0.772-1.832,0.772H42.821c-0.706,0-1.317-0.258-1.833-0.773c-0.516-0.518-0.774-1.127-0.774-1.834V73h135.571V122.536z M175.785,41.713H40.214v-18.25c0-0.706,0.257-1.316,0.774-1.833c0.516-0.515,1.127-0.773,1.833-0.773H173.18c0.705,0,1.316,0.257,1.832,0.773c0.516,0.517,0.773,1.127,0.773,1.833V41.713z"/><rect class="svg" x="50.643" y="104.285" width="20.857" height="10.429"/><rect class="svg" x="81.929" y="104.285" width="31.286" height="10.429"/></g></svg>',CardJs.LOCK_SVG='<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="3px" width="24px" height="17px" viewBox="0 0 216 146" enable-background="new 0 0 216 146" xml:space="preserve"><path class="svg" d="M152.646,70.067c-1.521-1.521-3.367-2.281-5.541-2.281H144.5V52.142c0-9.994-3.585-18.575-10.754-25.745c-7.17-7.17-15.751-10.755-25.746-10.755s-18.577,3.585-25.746,10.755C75.084,33.567,71.5,42.148,71.5,52.142v15.644h-2.607c-2.172,0-4.019,0.76-5.54,2.281c-1.521,1.52-2.281,3.367-2.281,5.541v46.929c0,2.172,0.76,4.019,2.281,5.54c1.521,1.52,3.368,2.281,5.54,2.281h78.214c2.174,0,4.02-0.76,5.541-2.281c1.52-1.521,2.281-3.368,2.281-5.54V75.607C154.93,73.435,154.168,71.588,152.646,70.067z M128.857,67.786H87.143V52.142c0-5.757,2.037-10.673,6.111-14.746c4.074-4.074,8.989-6.11,14.747-6.11s10.673,2.036,14.746,6.11c4.073,4.073,6.11,8.989,6.11,14.746V67.786z"/></svg>',CardJs.CALENDAR_SVG='<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="4px" width="24px" height="16px" viewBox="0 0 216 146" enable-background="new 0 0 216 146" xml:space="preserve"><path class="svg" d="M172.691,23.953c-2.062-2.064-4.508-3.096-7.332-3.096h-10.428v-7.822c0-3.584-1.277-6.653-3.83-9.206c-2.554-2.553-5.621-3.83-9.207-3.83h-5.213c-3.586,0-6.654,1.277-9.207,3.83c-2.554,2.553-3.83,5.622-3.83,9.206v7.822H92.359v-7.822c0-3.584-1.277-6.653-3.83-9.206c-2.553-2.553-5.622-3.83-9.207-3.83h-5.214c-3.585,0-6.654,1.277-9.207,3.83c-2.553,2.553-3.83,5.622-3.83,9.206v7.822H50.643c-2.825,0-5.269,1.032-7.333,3.096s-3.096,4.509-3.096,7.333v104.287c0,2.823,1.032,5.267,3.096,7.332c2.064,2.064,4.508,3.096,7.333,3.096h114.714c2.824,0,5.27-1.032,7.332-3.096c2.064-2.064,3.096-4.509,3.096-7.332V31.286C175.785,28.461,174.754,26.017,172.691,23.953z M134.073,13.036c0-0.761,0.243-1.386,0.731-1.874c0.488-0.488,1.113-0.733,1.875-0.733h5.213c0.762,0,1.385,0.244,1.875,0.733c0.488,0.489,0.732,1.114,0.732,1.874V36.5c0,0.761-0.244,1.385-0.732,1.874c-0.49,0.488-1.113,0.733-1.875,0.733h-5.213c-0.762,0-1.387-0.244-1.875-0.733s-0.731-1.113-0.731-1.874V13.036z M71.501,13.036c0-0.761,0.244-1.386,0.733-1.874c0.489-0.488,1.113-0.733,1.874-0.733h5.214c0.761,0,1.386,0.244,1.874,0.733c0.488,0.489,0.733,1.114,0.733,1.874V36.5c0,0.761-0.244,1.386-0.733,1.874c-0.489,0.488-1.113,0.733-1.874,0.733h-5.214c-0.761,0-1.386-0.244-1.874-0.733c-0.488-0.489-0.733-1.113-0.733-1.874V13.036z M165.357,135.572H50.643V52.143h114.714V135.572z"/></svg>',CardJs.USER_SVG='<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="4px" width="24px" height="16px" viewBox="0 0 216 146" enable-background="new 0 0 216 146" xml:space="preserve"><g><path class="svg" d="M107.999,73c8.638,0,16.011-3.056,22.12-9.166c6.111-6.11,9.166-13.483,9.166-22.12c0-8.636-3.055-16.009-9.166-22.12c-6.11-6.11-13.484-9.165-22.12-9.165c-8.636,0-16.01,3.055-22.12,9.165c-6.111,6.111-9.166,13.484-9.166,22.12c0,8.637,3.055,16.01,9.166,22.12C91.99,69.944,99.363,73,107.999,73z"/><path class="svg" d="M165.07,106.037c-0.191-2.743-0.571-5.703-1.141-8.881c-0.57-3.178-1.291-6.124-2.16-8.84c-0.869-2.715-2.037-5.363-3.504-7.943c-1.466-2.58-3.15-4.78-5.052-6.6s-4.223-3.272-6.965-4.358c-2.744-1.086-5.772-1.63-9.085-1.63c-0.489,0-1.63,0.584-3.422,1.752s-3.815,2.472-6.069,3.911c-2.254,1.438-5.188,2.743-8.799,3.909c-3.612,1.168-7.237,1.752-10.877,1.752c-3.639,0-7.264-0.584-10.876-1.752c-3.611-1.166-6.545-2.471-8.799-3.909c-2.254-1.439-4.277-2.743-6.069-3.911c-1.793-1.168-2.933-1.752-3.422-1.752c-3.313,0-6.341,0.544-9.084,1.63s-5.065,2.539-6.966,4.358c-1.901,1.82-3.585,4.02-5.051,6.6s-2.634,5.229-3.503,7.943c-0.869,2.716-1.589,5.662-2.159,8.84c-0.571,3.178-0.951,6.137-1.141,8.881c-0.19,2.744-0.285,5.554-0.285,8.433c0,6.517,1.983,11.664,5.948,15.439c3.965,3.774,9.234,5.661,15.806,5.661h71.208c6.572,0,11.84-1.887,15.806-5.661c3.966-3.775,5.948-8.921,5.948-15.439C165.357,111.591,165.262,108.78,165.07,106.037z"/></g></svg>',CardJs.MAIL_SVG='<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"x="0px" y="4px" width="24px" height="16px" viewBox="0 0 216 146" enable-background="new 0 0 216 146" xml:space="preserve"><path class="svg" d="M177.171,19.472c-2.553-2.553-5.622-3.829-9.206-3.829H48.036c-3.585,0-6.654,1.276-9.207,3.829C36.276,22.025,35,25.094,35,28.679v88.644c0,3.585,1.276,6.652,3.829,9.205c2.553,2.555,5.622,3.83,9.207,3.83h119.929c3.584,0,6.653-1.275,9.206-3.83c2.554-2.553,3.829-5.621,3.829-9.205V28.679C181,25.094,179.725,22.025,177.171,19.472zM170.57,117.321c0,0.706-0.258,1.317-0.774,1.833s-1.127,0.773-1.832,0.773H48.035c-0.706,0-1.317-0.257-1.833-0.773c-0.516-0.516-0.774-1.127-0.774-1.833V54.75c1.738,1.955,3.612,3.748,5.622,5.377c14.557,11.189,26.126,20.368,34.708,27.538c2.77,2.336,5.024,4.155,6.762,5.459s4.087,2.62,7.047,3.951s5.744,1.995,8.351,1.995H108h0.081c2.606,0,5.392-0.664,8.351-1.995c2.961-1.331,5.311-2.647,7.049-3.951c1.737-1.304,3.992-3.123,6.762-5.459c8.582-7.17,20.15-16.349,34.707-27.538c2.01-1.629,3.885-3.422,5.621-5.377V117.321z M170.57,30.797v0.896c0,3.204-1.262,6.776-3.787,10.713c-2.525,3.938-5.256,7.075-8.188,9.41c-10.484,8.257-21.373,16.865-32.672,25.827c-0.326,0.271-1.277,1.073-2.852,2.403c-1.574,1.331-2.824,2.351-3.748,3.056c-0.924,0.707-2.131,1.562-3.625,2.566s-2.865,1.752-4.114,2.24s-2.417,0.732-3.503,0.732H108h-0.082c-1.086,0-2.253-0.244-3.503-0.732c-1.249-0.488-2.621-1.236-4.114-2.24c-1.493-1.004-2.702-1.859-3.625-2.566c-0.923-0.705-2.173-1.725-3.748-3.056c-1.575-1.33-2.526-2.132-2.852-2.403c-11.297-8.962-22.187-17.57-32.67-25.827c-7.985-6.3-11.977-14.013-11.977-23.138c0-0.706,0.258-1.317,0.774-1.833c0.516-0.516,1.127-0.774,1.833-0.774h119.929c0.434,0.244,0.814,0.312,1.141,0.204c0.326-0.11,0.57,0.094,0.732,0.61c0.163,0.516,0.312,0.76,0.448,0.733c0.136-0.027,0.218,0.312,0.245,1.019c0.025,0.706,0.039,1.061,0.039,1.061V30.797z"/></svg>',CardJs.INFORMATION_SVG='<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="4px" width="24px" height="16px" viewBox="0 0 216 146" enable-background="new 0 0 216 146" xml:space="preserve"><g><path class="svg" d="M97.571,41.714h20.859c1.411,0,2.633-0.516,3.666-1.548c1.031-1.031,1.547-2.254,1.547-3.666V20.857c0-1.412-0.516-2.634-1.549-3.667c-1.031-1.031-2.254-1.548-3.666-1.548H97.571c-1.412,0-2.634,0.517-3.666,1.548c-1.032,1.032-1.548,2.255-1.548,3.667V36.5c0,1.412,0.516,2.635,1.548,3.666C94.937,41.198,96.159,41.714,97.571,41.714z"/><path class="svg" d="M132.523,111.048c-1.031-1.032-2.254-1.548-3.666-1.548h-5.215V62.571c0-1.412-0.516-2.634-1.547-3.666c-1.033-1.032-2.255-1.548-3.666-1.548H87.143c-1.412,0-2.634,0.516-3.666,1.548c-1.032,1.032-1.548,2.254-1.548,3.666V73c0,1.412,0.516,2.635,1.548,3.666c1.032,1.032,2.254,1.548,3.666,1.548h5.215V109.5h-5.215c-1.412,0-2.634,0.516-3.666,1.548c-1.032,1.032-1.548,2.254-1.548,3.666v10.429c0,1.412,0.516,2.635,1.548,3.668c1.032,1.03,2.254,1.547,3.666,1.547h41.714c1.412,0,2.634-0.517,3.666-1.547c1.031-1.033,1.547-2.256,1.547-3.668v-10.429C134.07,113.302,133.557,112.08,132.523,111.048z"/></g></svg>',CardJs.keyCodeFromEvent=function(e){return e.which||e.keyCode},CardJs.keyIsCommandFromEvent=function(e){return e.ctrlKey||e.metaKey},CardJs.keyIsNumber=function(e){return CardJs.keyIsTopNumber(e)||CardJs.keyIsKeypadNumber(e)},CardJs.keyIsTopNumber=function(e){var keyCode=CardJs.keyCodeFromEvent(e);return keyCode>=CardJs.KEYS[0]&&keyCode<=CardJs.KEYS[9]},CardJs.keyIsKeypadNumber=function(e){var keyCode=CardJs.keyCodeFromEvent(e);return keyCode>=CardJs.KEYS.NUMPAD_0&&keyCode<=CardJs.KEYS.NUMPAD_9},CardJs.keyIsDelete=function(e){return CardJs.keyCodeFromEvent(e)==CardJs.KEYS.DELETE},CardJs.keyIsBackspace=function(e){return CardJs.keyCodeFromEvent(e)==CardJs.KEYS.BACKSPACE},CardJs.keyIsDeletion=function(e){return CardJs.keyIsDelete(e)||CardJs.keyIsBackspace(e)},CardJs.keyIsArrow=function(e){var keyCode=CardJs.keyCodeFromEvent(e);return keyCode>=CardJs.KEYS.ARROW_LEFT&&keyCode<=CardJs.KEYS.ARROW_DOWN},CardJs.keyIsNavigation=function(e){var keyCode=CardJs.keyCodeFromEvent(e);return keyCode==CardJs.KEYS.HOME||keyCode==CardJs.KEYS.END},CardJs.keyIsKeyboardCommand=function(e){var keyCode=CardJs.keyCodeFromEvent(e);return CardJs.keyIsCommandFromEvent(e)&&(keyCode==CardJs.KEYS.A||keyCode==CardJs.KEYS.X||keyCode==CardJs.KEYS.C||keyCode==CardJs.KEYS.V)},CardJs.keyIsTab=function(e){return CardJs.keyCodeFromEvent(e)==CardJs.KEYS.TAB},CardJs.copyAllElementAttributes=function(source,destination){$.each(source[0].attributes,function(idx,attr){destination.attr(attr.nodeName,attr.nodeValue)})},CardJs.numbersOnlyString=function(string){for(var numbersOnlyString="",i=0;i<string.length;i++){var currentChar=string.charAt(i),isValid=!isNaN(parseInt(currentChar));isValid&&(numbersOnlyString+=currentChar)}return numbersOnlyString},CardJs.applyFormatMask=function(string,mask){for(var formattedString="",numberPos=0,j=0;j<mask.length;j++){var currentMaskChar=mask[j];if("X"==currentMaskChar){var digit=string.charAt(numberPos);if(!digit)break;formattedString+=string.charAt(numberPos),numberPos++}else formattedString+=currentMaskChar}return formattedString},CardJs.cardTypeFromNumber=function(number){if(re=new RegExp("^30[0-5]"),null!=number.match(re))return"Diners - Carte Blanche";if(re=new RegExp("^(30[6-9]|36|38)"),null!=number.match(re))return"Diners";if(re=new RegExp("^35(2[89]|[3-8][0-9])"),null!=number.match(re))return"JCB";if(re=new RegExp("^3[47]"),null!=number.match(re))return"AMEX";if(re=new RegExp("^(4026|417500|4508|4844|491(3|7))"),null!=number.match(re))return"Visa Electron";var re=new RegExp("^4");return null!=number.match(re)?"Visa":(re=new RegExp("^5[1-5]"),null!=number.match(re)?"Mastercard":(re=new RegExp("^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)"),null!=number.match(re)?"Discover":""))},CardJs.caretStartPosition=function(element){return"number"==typeof element.selectionStart?element.selectionStart:!1},CardJs.caretEndPosition=function(element){return"number"==typeof element.selectionEnd?element.selectionEnd:!1},CardJs.setCaretPosition=function(element,caretPos){if(null!=element)if(element.createTextRange){var range=element.createTextRange();range.move("character",caretPos),range.select()}else element.selectionStart?(element.focus(),element.setSelectionRange(caretPos,caretPos)):element.focus()},CardJs.normaliseCaretPosition=function(mask,caretPosition){var numberPos=0;if(0>caretPosition||caretPosition>mask.length)return 0;for(var i=0;i<mask.length;i++){if(i==caretPosition)return numberPos;"X"==mask[i]&&numberPos++}return numberPos},CardJs.denormaliseCaretPosition=function(mask,caretPosition){var numberPos=0;if(0>caretPosition||caretPosition>mask.length)return 0;for(var i=0;i<mask.length;i++){if(numberPos==caretPosition)return i;"X"==mask[i]&&numberPos++}return mask.length},CardJs.filterNumberOnlyKey=function(e){var isNumber=CardJs.keyIsNumber(e),isDeletion=CardJs.keyIsDeletion(e),isArrow=CardJs.keyIsArrow(e),isNavigation=CardJs.keyIsNavigation(e),isKeyboardCommand=CardJs.keyIsKeyboardCommand(e),isTab=CardJs.keyIsTab(e);isNumber||isDeletion||isArrow||isNavigation||isKeyboardCommand||isTab||e.preventDefault()},CardJs.digitFromKeyCode=function(keyCode){return keyCode>=CardJs.KEYS[0]&&keyCode<=CardJs.KEYS[9]?keyCode-CardJs.KEYS[0]:keyCode>=CardJs.KEYS.NUMPAD_0&&keyCode<=CardJs.KEYS.NUMPAD_9?keyCode-CardJs.KEYS.NUMPAD_0:null},CardJs.handleMaskedNumberInputKey=function(e,mask){CardJs.filterNumberOnlyKey(e);var keyCode=e.which||e.keyCode,element=e.target,caretStart=CardJs.caretStartPosition(element),caretEnd=CardJs.caretEndPosition(element),normalisedStartCaretPosition=CardJs.normaliseCaretPosition(mask,caretStart),normalisedEndCaretPosition=CardJs.normaliseCaretPosition(mask,caretEnd),newCaretPosition=caretStart,isNumber=CardJs.keyIsNumber(e),isDelete=CardJs.keyIsDelete(e),isBackspace=CardJs.keyIsBackspace(e);if(isNumber||isDelete||isBackspace){e.preventDefault();var rawText=$(element).val(),numbersOnly=CardJs.numbersOnlyString(rawText),digit=CardJs.digitFromKeyCode(keyCode),rangeHighlighted=normalisedEndCaretPosition>normalisedStartCaretPosition;rangeHighlighted&&(numbersOnly=numbersOnly.slice(0,normalisedStartCaretPosition)+numbersOnly.slice(normalisedEndCaretPosition)),caretStart!=mask.length&&(isNumber&&rawText.length<=mask.length&&(numbersOnly=numbersOnly.slice(0,normalisedStartCaretPosition)+digit+numbersOnly.slice(normalisedStartCaretPosition),newCaretPosition=Math.max(CardJs.denormaliseCaretPosition(mask,normalisedStartCaretPosition+1),CardJs.denormaliseCaretPosition(mask,normalisedStartCaretPosition+2)-1)),isDelete&&(numbersOnly=numbersOnly.slice(0,normalisedStartCaretPosition)+numbersOnly.slice(normalisedStartCaretPosition+1))),0!=caretStart&&isBackspace&&!rangeHighlighted&&(numbersOnly=numbersOnly.slice(0,normalisedStartCaretPosition-1)+numbersOnly.slice(normalisedStartCaretPosition),newCaretPosition=CardJs.denormaliseCaretPosition(mask,normalisedStartCaretPosition-1)),$(element).val(CardJs.applyFormatMask(numbersOnly,mask)),CardJs.setCaretPosition(element,newCaretPosition)}},CardJs.handleCreditCardNumberKey=function(e,cardMask){CardJs.handleMaskedNumberInputKey(e,cardMask)},CardJs.handleCreditCardNumberChange=function(e){},CardJs.handleExpiryKey=function(e){CardJs.handleMaskedNumberInputKey(e,CardJs.EXPIRY_MASK)},CardJs.prototype.getCardNumber=function(){return this.cardNumberInput.val()},CardJs.prototype.getCardType=function(){return CardJs.cardTypeFromNumber(this.getCardNumber())},CardJs.prototype.getName=function(){return this.nameInput.val()},CardJs.prototype.getExpiryMonth=function(){return this.expiryMonthInput.val()},CardJs.prototype.getExpiryYear=function(){return this.expiryYearInput.val()},CardJs.prototype.getCvc=function(){return this.cvcInput.val()},CardJs.prototype.setIconColour=function(colour){this.elem.find(".icon .svg").css({fill:colour})},CardJs.prototype.setIconColour=function(colour){this.elem.find(".icon .svg").css({fill:colour})},CardJs.prototype.refreshCreditCardTypeIcon=function(){this.setCardTypeIconFromNumber(CardJs.numbersOnlyString(this.cardNumberInput.val()))},CardJs.prototype.clearCardTypeIcon=function(){this.elem.find(".card-number-wrapper .card-type-icon").removeClass("show")},CardJs.prototype.setCardTypeIconAsVisa=function(){this.elem.find(".card-number-wrapper .card-type-icon").attr("class","card-type-icon show visa")},CardJs.prototype.setCardTypeIconAsMasterCard=function(){this.elem.find(".card-number-wrapper .card-type-icon").attr("class","card-type-icon show master-card")},CardJs.prototype.setCardTypeIconAsAmericanExpress=function(){this.elem.find(".card-number-wrapper .card-type-icon").attr("class","card-type-icon show american-express")},CardJs.prototype.setCardTypeIconAsDiscover=function(){this.elem.find(".card-number-wrapper .card-type-icon").attr("class","card-type-icon show discover")},CardJs.prototype.setCardTypeIconAsDiners=function(){this.elem.find(".card-number-wrapper .card-type-icon").attr("class","card-type-icon show diners")},CardJs.prototype.setCardTypeIconAsJcb=function(){this.elem.find(".card-number-wrapper .card-type-icon").attr("class","card-type-icon show jcb")},CardJs.prototype.setCardTypeIconFromNumber=function(number){switch(CardJs.cardTypeFromNumber(number)){case"Visa Electron":case"Visa":this.setCardTypeAsVisa();break;case"Mastercard":this.setCardTypeAsMasterCard();break;case"AMEX":this.setCardTypeAsAmericanExpress();break;case"Discover":this.setCardTypeAsDiscover();break;case"Diners - Carte Blanche":case"Diners":this.setCardTypeAsDiners();break;case"JCB":this.setCardTypeAsJcb();break;default:this.clearCardType()}},CardJs.prototype.setCardMask=function(cardMask){this.creditCardNumberMask=cardMask,this.cardNumberInput.attr("maxlength",cardMask.length)},CardJs.prototype.setCvc3=function(){this.cvcInput.attr("maxlength",CardJs.CVC_MASK_3.length)},CardJs.prototype.setCvc4=function(){this.cvcInput.attr("maxlength",CardJs.CVC_MASK_4.length)},CardJs.prototype.clearCardType=function(){this.clearCardTypeIcon(),this.setCardMask(CardJs.CREDIT_CARD_NUMBER_DEFAULT_MASK),this.setCvc3()},CardJs.prototype.setCardTypeAsVisa=function(){this.setCardTypeIconAsVisa(),this.setCardMask(CardJs.CREDIT_CARD_NUMBER_VISA_MASK),this.setCvc3()},CardJs.prototype.setCardTypeAsMasterCard=function(){this.setCardTypeIconAsMasterCard(),this.setCardMask(CardJs.CREDIT_CARD_NUMBER_MASTERCARD_MASK),this.setCvc3()},CardJs.prototype.setCardTypeAsAmericanExpress=function(){this.setCardTypeIconAsAmericanExpress(),this.setCardMask(CardJs.CREDIT_CARD_NUMBER_AMEX_MASK),this.setCvc4()},CardJs.prototype.setCardTypeAsDiscover=function(){this.setCardTypeIconAsDiscover(),this.setCardMask(CardJs.CREDIT_CARD_NUMBER_DISCOVER_MASK),this.setCvc3()},CardJs.prototype.setCardTypeAsDiners=function(){this.setCardTypeIconAsDiners(),this.setCardMask(CardJs.CREDIT_CARD_NUMBER_DINERS_MASK),this.setCvc3()},CardJs.prototype.setCardTypeAsJcb=function(){this.setCardTypeIconAsJcb(),this.setCardMask(CardJs.CREDIT_CARD_NUMBER_JCB_MASK),this.setCvc3()},CardJs.prototype.initCardNumberInput=function(){var $this=this;this.cardNumberInput=this.elem.find(".card-number"),this.cardNumberInput[0]?this.cardNumberInput.detach():this.cardNumberInput=$("<input class='card-number' />"),this.cardNumberInput.attr("type","tel"),this.cardNumberInput.attr("placeholder")||this.cardNumberInput.attr("placeholder",CardJs.CREDIT_CARD_NUMBER_PLACEHOLDER),this.cardNumberInput.attr("maxlength",this.creditCardNumberMask.length),this.cardNumberInput.attr("x-autocompletetype","cc-number"),this.cardNumberInput.attr("autocompletetype","cc-number"),this.cardNumberInput.attr("autocorrect","off"),this.cardNumberInput.attr("spellcheck","off"),this.cardNumberInput.attr("autocapitalize","off"),this.cardNumberInput.keydown(function(e){CardJs.handleCreditCardNumberKey(e,$this.creditCardNumberMask)}),this.cardNumberInput.keyup(function(e){$this.refreshCreditCardTypeIcon()}),this.cardNumberInput.change(CardJs.handleCreditCardNumberChange)},CardJs.prototype.initNameInput=function(){this.nameInput=this.elem.find(".name"),this.nameInput[0]?(this.captureName=!0,this.nameInput.detach()):this.nameInput=$("<input class='name' />"),this.nameInput.attr("placeholder")||this.nameInput.attr("placeholder",CardJs.NAME_PLACEHOLDER)},CardJs.prototype.initExpiryMonthInput=function(){this.expiryMonthInput=this.elem.find(".expiry-month"),this.expiryMonthInput[0]?this.expiryMonthInput.detach():this.expiryMonthInput=$("<input class='expiry-month' />")},CardJs.prototype.initExpiryYearInput=function(){this.expiryYearInput=this.elem.find(".expiry-year"),this.expiryYearInput[0]?this.expiryYearInput.detach():this.expiryYearInput=$("<input class='expiry-year' />")},CardJs.prototype.initCvcInput=function(){this.cvcInput=this.elem.find(".cvc"),this.cvcInput[0]?this.cvcInput.detach():this.cvcInput=$("<input class='cvc' />"),this.cvcInput.attr("type","tel"),this.cvcInput.attr("placeholder")||this.cvcInput.attr("placeholder",CardJs.CVC_PLACEHOLDER),this.cvcInput.attr("maxlength",CardJs.CVC_MASK_3.length),this.cvcInput.attr("x-autocompletetype","cc-csc"),this.cvcInput.attr("autocompletetype","cc-csc"),this.cvcInput.attr("autocorrect","off"),this.cvcInput.attr("spellcheck","off"),this.cvcInput.attr("autocapitalize","off"),this.cvcInput.keydown(CardJs.filterNumberOnlyKey)},CardJs.prototype.setupCardNumberInput=function(){this.stripe&&this.cardNumberInput.attr("data-stripe","number"),this.elem.append("<div class='card-number-wrapper'></div>");var wrapper=this.elem.find(".card-number-wrapper");wrapper.append(this.cardNumberInput),wrapper.append("<div class='card-type-icon'></div>"),wrapper.append("<div class='icon'></div>"),wrapper.find(".icon").append(CardJs.CREDIT_CARD_SVG)},CardJs.prototype.setupNameInput=function(){if(this.captureName){this.elem.append("<div class='name-wrapper'></div>");var wrapper=this.elem.find(".name-wrapper");wrapper.append(this.nameInput),wrapper.append("<div class='icon'></div>"),wrapper.find(".icon").append(CardJs.USER_SVG)}},CardJs.prototype.setupExpiryInput=function(){this.elem.append("<div class='expiry-container'><div class='expiry-wrapper'></div></div>");var expiryInput,wrapper=this.elem.find(".expiry-wrapper");if(this.EXPIRY_USE_DROPDOWNS){expiryInput=$("<div></div>");var expiryMonthNew=$("<select><option value='any' selected='' hidden=''>MM</option><option value='1'>01</option><option value='2'>02</option><option value='3'>03</option><option value='4'>04</option><option value='5'>05</option><option value='6'>06</option><option value='7'>07</option><option value='8'>08</option><option value='9'>09</option><option value='10'>10</option><option value='11'>11</option><option value='12'>12</option></select>"),expiryMonthOld=this.expiryMonthInput;CardJs.copyAllElementAttributes(expiryMonthOld,expiryMonthNew),this.expiryMonthInput.remove(),this.expiryMonthInput=expiryMonthNew;for(var expiryYearNew=$("<select><option value='any' selected='' hidden=''>YY</option></select>"),currentYear=parseInt((new Date).getFullYear().toString().substring(2,4)),i=0;i<CardJs.EXPIRY_NUMBER_OF_YEARS;i++)expiryYearNew.append("<option value='"+currentYear+"'>"+currentYear+"</option>"),currentYear=(currentYear+1)%100;var expiryYearOld=this.expiryYearInput;CardJs.copyAllElementAttributes(expiryYearOld,expiryYearNew),this.expiryYearInput.remove(),this.expiryYearInput=expiryYearNew,expiryInput.append(this.expiryMonthInput),expiryInput.append(this.expiryYearInput)}else{expiryInput=$("<div></div>"),this.expiryMonthInput=$("<input type='hidden' name='expiry-month' />"),this.expiryYearInput=$("<input type='hidden' name='expiry-year' />"),this.stripe&&(this.expiryMonthInput.attr("data-stripe","exp-month"),this.expiryYearInput.attr("data-stripe","exp-year")),this.expiryMonthYearInput=$("<input class='expiry' />"),this.expiryMonthYearInput.attr("type","tel"),this.expiryMonthYearInput.attr("placeholder")||this.expiryMonthYearInput.attr("placeholder",CardJs.EXPIRY_PLACEHOLDER),this.expiryMonthYearInput.attr("maxlength",CardJs.EXPIRY_MASK.length),this.expiryMonthYearInput.attr("x-autocompletetype","cc-exp"),this.expiryMonthYearInput.attr("autocompletetype","cc-exp"),this.expiryMonthYearInput.attr("autocorrect","off"),this.expiryMonthYearInput.attr("spellcheck","off"),this.expiryMonthYearInput.attr("autocapitalize","off");var $this=this;this.expiryMonthYearInput.keydown(function(e){CardJs.handleExpiryKey(e);var val=$this.expiryMonthYearInput.val();1==val.length&&parseInt(val)>1&&CardJs.keyIsNumber(e)&&$this.expiryMonthYearInput.val(CardJs.applyFormatMask("0"+val,CardJs.EXPIRY_MASK)),$this.EXPIRY_USE_DROPDOWNS||null==$this.expiryMonthYearInput||($this.expiryMonthInput.val($this.expiryMonth()),$this.expiryYearInput.val(7==val.length?val.substr(5,2):null))}),this.expiryMonthYearInput.blur(function(e){$this.refreshExpiryMonthValidation()}),expiryInput.append(this.expiryMonthYearInput),expiryInput.append(this.expiryMonthInput),expiryInput.append(this.expiryYearInput)}wrapper.append(expiryInput),wrapper.append("<div class='icon'></div>"),wrapper.find(".icon").append(CardJs.CALENDAR_SVG)},CardJs.prototype.setupCvcInput=function(){this.stripe&&this.cvcInput.attr("data-stripe","cvc"),this.elem.append("<div class='cvc-container'><div class='cvc-wrapper'></div></div>");var wrapper=this.elem.find(".cvc-wrapper");wrapper.append(this.cvcInput),wrapper.append("<div class='icon'></div>"),wrapper.find(".icon").append(CardJs.LOCK_SVG)},CardJs.prototype.expiryMonth=function(){if(!this.EXPIRY_USE_DROPDOWNS&&null!=this.expiryMonthYearInput){var val=this.expiryMonthYearInput.val();return val.length>=2?parseInt(val.substr(0,2)):null}return null},CardJs.isValidMonth=function(expiryMonth){return expiryMonth>=1&&12>=expiryMonth},CardJs.isExpiryValid=function(month,year){var today=new Date,currentMonth=today.getMonth()+1,currentYear=""+today.getFullYear();return 2==(""+year).length&&(year=currentYear.substring(0,2)+""+year),currentMonth=parseInt(currentMonth),currentYear=parseInt(currentYear),month=parseInt(month),year=parseInt(year),CardJs.isValidMonth(month)&&(year>currentYear||year==currentYear&&month>=currentMonth)},CardJs.prototype.refreshExpiryMonthValidation=function(){CardJs.isExpiryValid(this.getExpiryMonth(),this.getExpiryYear())?this.setExpiryMonthAsValid():this.setExpiryMonthAsInvalid()},CardJs.prototype.setExpiryMonthAsValid=function(){this.EXPIRY_USE_DROPDOWNS||this.expiryMonthYearInput.parent().removeClass("has-error")},CardJs.prototype.setExpiryMonthAsInvalid=function(){this.EXPIRY_USE_DROPDOWNS||this.expiryMonthYearInput.parent().addClass("has-error")};;
$(function () {
    $('input[data-autocomplete]').each(function () {
        var url = $(this).data('autocomplete');
        $(this).autocomplete({
            position: {
                my: "right top",
                at: "right bottom"
            },
            source: function (request, response) {
                //$.getJSON(url, {
                //    kw: request.term
                //}, response);
                $.ajax({
                    url: url,
                    type: "GET",
                    dataType: "json",
                    data: { kw: request.term },
                    success: function (data) {
                        response(data)
                    }
                })
            },
            select: function (event, ui) {
                $(this).val(ui.item.label);
                var closestForm = $(this).closest("form");
                var siblingSearchBtn = $(this).siblings('.searchbtn');
                if (closestForm.length > 0) {
                    closestForm.submit();
                } else if (siblingSearchBtn.length > 0) {
                    siblingSearchBtn.click();
                }
            }
        });
    });
});;
