fae-rails 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +13 -22
- data/config/deploy.rb +3 -3
- data/docs/customization.md +471 -0
- data/docs/helpers.md +528 -0
- data/docs/index.md +131 -0
- data/docs/javascript.md +21 -0
- data/docs/upgrading.md +28 -0
- data/docs/usage.md +627 -0
- data/lib/fae/version.rb +1 -1
- data/spec/dummy/app/views/pages/home.html.erb +1 -1
- data/vendor/assets/javascripts/chosen.jquery.min.js +2 -0
- data/vendor/assets/javascripts/grinder.js +331 -0
- data/vendor/assets/javascripts/html5shiv-printshiv.js +7 -0
- data/vendor/assets/javascripts/html5shiv.js +4 -0
- data/vendor/assets/javascripts/imagesloaded.pkgd.min.js +7 -0
- data/vendor/assets/javascripts/jquery.daterangepicker.js +1292 -0
- data/vendor/assets/javascripts/jquery.multi-select.js +532 -0
- data/vendor/assets/javascripts/jquery.simplemodal.1.4.4.js +719 -0
- data/vendor/assets/javascripts/jquery.simplemodal.1.4.4.min.js +26 -0
- data/vendor/assets/javascripts/jquery.tablesorter.js +1901 -0
- data/vendor/assets/javascripts/js.cookie.js +139 -0
- data/vendor/assets/javascripts/moment.min.js +7 -0
- data/vendor/assets/javascripts/simplemde.min.js +13 -0
- data/vendor/assets/javascripts/touch_punch.js +11 -0
- data/vendor/assets/stylesheets/chosen-sprite.png +0 -0
- data/vendor/assets/stylesheets/chosen-sprite@2x.png +0 -0
- data/vendor/assets/stylesheets/daterangepicker.css +227 -0
- data/vendor/assets/stylesheets/reset.css +48 -0
- data/vendor/assets/stylesheets/simplemde.min.css +7 -0
- metadata +28 -3
data/lib/fae/version.rb
CHANGED
@@ -14,5 +14,5 @@
|
|
14
14
|
|
15
15
|
<section>
|
16
16
|
<h2>Documentation</h2>
|
17
|
-
<p><%= link_to 'Technical Doumentation', 'https://
|
17
|
+
<p><%= link_to 'Technical Doumentation', 'https://github.com/wearefine/fae', target: '_blank' %></p>
|
18
18
|
</section>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
/* Chosen v1.0.0 | (c) 2011-2013 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
|
2
|
+
!function(){var a,AbstractChosen,Chosen,SelectParser,b,c={}.hasOwnProperty,d=function(a,b){function d(){this.constructor=a}for(var e in b)c.call(b,e)&&(a[e]=b[e]);return d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype,a};SelectParser=function(){function SelectParser(){this.options_index=0,this.parsed=[]}return SelectParser.prototype.add_node=function(a){return"OPTGROUP"===a.nodeName.toUpperCase()?this.add_group(a):this.add_option(a)},SelectParser.prototype.add_group=function(a){var b,c,d,e,f,g;for(b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:this.escapeExpression(a.label),children:0,disabled:a.disabled}),f=a.childNodes,g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(this.add_option(c,b,a.disabled));return g},SelectParser.prototype.add_option=function(a,b,c){return"OPTION"===a.nodeName.toUpperCase()?(""!==a.text?(null!=b&&(this.parsed[b].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,classes:a.className,style:a.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1):void 0},SelectParser.prototype.escapeExpression=function(a){var b,c;return null==a||a===!1?"":/[\&\<\>\"\'\`]/.test(a)?(b={"<":"<",">":">",'"':""","'":"'","`":"`"},c=/&(?!\w+;)|[\<\>\"\'\`]/g,a.replace(c,function(a){return b[a]||"&"})):a},SelectParser}(),SelectParser.select_to_array=function(a){var b,c,d,e,f;for(c=new SelectParser,f=a.childNodes,d=0,e=f.length;e>d;d++)b=f[d],c.add_node(b);return c.parsed},AbstractChosen=function(){function AbstractChosen(a,b){this.form_field=a,this.options=null!=b?b:{},AbstractChosen.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers())}return AbstractChosen.prototype.set_default_values=function(){var a=this;return this.click_test_action=function(b){return a.test_active_click(b)},this.activate_action=function(b){return a.activate_field(b)},this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.result_single_selected=null,this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null!=this.options.enable_split_word_search?this.options.enable_split_word_search:!0,this.group_search=null!=this.options.group_search?this.options.group_search:!0,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null!=this.options.single_backstroke_delete?this.options.single_backstroke_delete:!0,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null!=this.options.display_selected_options?this.options.display_selected_options:!0,this.display_disabled_options=null!=this.options.display_disabled_options?this.options.display_disabled_options:!0},AbstractChosen.prototype.set_default_text=function(){return this.default_text=this.form_field.getAttribute("data-placeholder")?this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.options.placeholder_text_multiple||this.options.placeholder_text||AbstractChosen.default_multiple_text:this.options.placeholder_text_single||this.options.placeholder_text||AbstractChosen.default_single_text,this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||AbstractChosen.default_no_result_text},AbstractChosen.prototype.mouse_enter=function(){return this.mouse_on_container=!0},AbstractChosen.prototype.mouse_leave=function(){return this.mouse_on_container=!1},AbstractChosen.prototype.input_focus=function(){var a=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return a.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},AbstractChosen.prototype.input_blur=function(){var a=this;return this.mouse_on_container?void 0:(this.active_field=!1,setTimeout(function(){return a.blur_test()},100))},AbstractChosen.prototype.results_option_build=function(a){var b,c,d,e,f;for(b="",f=this.results_data,d=0,e=f.length;e>d;d++)c=f[d],b+=c.group?this.result_add_group(c):this.result_add_option(c),(null!=a?a.first:void 0)&&(c.selected&&this.is_multiple?this.choice_build(c):c.selected&&!this.is_multiple&&this.single_set_selected_text(c.text));return b},AbstractChosen.prototype.result_add_option=function(a){var b,c;return a.search_match?this.include_option_in_results(a)?(b=[],a.disabled||a.selected&&this.is_multiple||b.push("active-result"),!a.disabled||a.selected&&this.is_multiple||b.push("disabled-result"),a.selected&&b.push("result-selected"),null!=a.group_array_index&&b.push("group-option"),""!==a.classes&&b.push(a.classes),c=""!==a.style.cssText?' style="'+a.style+'"':"",'<li class="'+b.join(" ")+'"'+c+' data-option-array-index="'+a.array_index+'">'+a.search_text+"</li>"):"":""},AbstractChosen.prototype.result_add_group=function(a){return a.search_match||a.group_match?a.active_options>0?'<li class="group-result">'+a.search_text+"</li>":"":""},AbstractChosen.prototype.results_update_field=function(){return this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.result_single_selected=null,this.results_build(),this.results_showing?this.winnow_results():void 0},AbstractChosen.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},AbstractChosen.prototype.results_search=function(){return this.results_showing?this.winnow_results():this.results_show()},AbstractChosen.prototype.winnow_results=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m;for(this.no_results_clear(),e=0,g=this.get_search_text(),a=g.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),d=this.search_contains?"":"^",c=new RegExp(d+a,"i"),j=new RegExp(a,"i"),m=this.results_data,k=0,l=m.length;l>k;k++)b=m[k],b.search_match=!1,f=null,this.include_option_in_results(b)&&(b.group&&(b.group_match=!1,b.active_options=0),null!=b.group_array_index&&this.results_data[b.group_array_index]&&(f=this.results_data[b.group_array_index],0===f.active_options&&f.search_match&&(e+=1),f.active_options+=1),(!b.group||this.group_search)&&(b.search_text=b.group?b.label:b.html,b.search_match=this.search_string_match(b.search_text,c),b.search_match&&!b.group&&(e+=1),b.search_match?(g.length&&(h=b.search_text.search(j),i=b.search_text.substr(0,h+g.length)+"</em>"+b.search_text.substr(h+g.length),b.search_text=i.substr(0,h)+"<em>"+i.substr(h)),null!=f&&(f.group_match=!0)):null!=b.group_array_index&&this.results_data[b.group_array_index].search_match&&(b.search_match=!0)));return this.result_clear_highlight(),1>e&&g.length?(this.update_results_content(""),this.no_results(g)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight())},AbstractChosen.prototype.search_string_match=function(a,b){var c,d,e,f;if(b.test(a))return!0;if(this.enable_split_word_search&&(a.indexOf(" ")>=0||0===a.indexOf("["))&&(d=a.replace(/\[|\]/g,"").split(" "),d.length))for(e=0,f=d.length;f>e;e++)if(c=d[e],b.test(c))return!0},AbstractChosen.prototype.choices_count=function(){var a,b,c,d;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,d=this.form_field.options,b=0,c=d.length;c>b;b++)a=d[b],a.selected&&(this.selected_option_count+=1);return this.selected_option_count},AbstractChosen.prototype.choices_click=function(a){return a.preventDefault(),this.results_showing||this.is_disabled?void 0:this.results_show()},AbstractChosen.prototype.keyup_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(a.preventDefault(),this.results_showing)return this.result_select(a);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},AbstractChosen.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},AbstractChosen.prototype.include_option_in_results=function(a){return this.is_multiple&&!this.display_selected_options&&a.selected?!1:!this.display_disabled_options&&a.disabled?!1:a.empty?!1:!0},AbstractChosen.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:/iP(od|hone)/i.test(window.navigator.userAgent)?!1:/Android/i.test(window.navigator.userAgent)&&/Mobile/i.test(window.navigator.userAgent)?!1:!0},AbstractChosen.default_multiple_text="Select Some Options",AbstractChosen.default_single_text="Select an Option",AbstractChosen.default_no_result_text="No results match",AbstractChosen}(),a=jQuery,a.fn.extend({chosen:function(b){return AbstractChosen.browser_is_supported()?this.each(function(){var c,d;c=a(this),d=c.data("chosen"),"destroy"===b&&d?d.destroy():d||c.data("chosen",new Chosen(this,b))}):this}}),Chosen=function(c){function Chosen(){return b=Chosen.__super__.constructor.apply(this,arguments)}return d(Chosen,c),Chosen.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},Chosen.prototype.set_up_html=function(){var b,c;return b=["chosen-container"],b.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&b.push(this.form_field.className),this.is_rtl&&b.push("chosen-rtl"),c={"class":b.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(c.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=a("<div />",c),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>'):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(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(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(),this.form_field_jq.trigger("chosen:ready",{chosen:this})},Chosen.prototype.register_observers=function(){var a=this;return this.container.bind("mousedown.chosen",function(b){a.container_mousedown(b)}),this.container.bind("mouseup.chosen",function(b){a.container_mouseup(b)}),this.container.bind("mouseenter.chosen",function(b){a.mouse_enter(b)}),this.container.bind("mouseleave.chosen",function(b){a.mouse_leave(b)}),this.search_results.bind("mouseup.chosen",function(b){a.search_results_mouseup(b)}),this.search_results.bind("mouseover.chosen",function(b){a.search_results_mouseover(b)}),this.search_results.bind("mouseout.chosen",function(b){a.search_results_mouseout(b)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(b){a.search_results_mousewheel(b)}),this.form_field_jq.bind("chosen:updated.chosen",function(b){a.results_update_field(b)}),this.form_field_jq.bind("chosen:activate.chosen",function(b){a.activate_field(b)}),this.form_field_jq.bind("chosen:open.chosen",function(b){a.container_mousedown(b)}),this.search_field.bind("blur.chosen",function(b){a.input_blur(b)}),this.search_field.bind("keyup.chosen",function(b){a.keyup_checker(b)}),this.search_field.bind("keydown.chosen",function(b){a.keydown_checker(b)}),this.search_field.bind("focus.chosen",function(b){a.input_focus(b)}),this.is_multiple?this.search_choices.bind("click.chosen",function(b){a.choices_click(b)}):this.container.bind("click.chosen",function(a){a.preventDefault()})},Chosen.prototype.destroy=function(){return a(document).unbind("click.chosen",this.click_test_action),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"),this.form_field_jq.show()},Chosen.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},Chosen.prototype.container_mousedown=function(b){return this.is_disabled||(b&&"mousedown"===b.type&&!this.results_showing&&b.preventDefault(),null!=b&&a(b.target).hasClass("search-choice-close"))?void 0:(this.active_field?this.is_multiple||!b||a(b.target)[0]!==this.selected_item[0]&&!a(b.target).parents("a.chosen-single").length||(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(document).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},Chosen.prototype.container_mouseup=function(a){return"ABBR"!==a.target.nodeName||this.is_disabled?void 0:this.results_reset(a)},Chosen.prototype.search_results_mousewheel=function(a){var b,c,d;return b=-(null!=(c=a.originalEvent)?c.wheelDelta:void 0)||(null!=(d=a.originialEvent)?d.detail:void 0),null!=b?(a.preventDefault(),"DOMMouseScroll"===a.type&&(b=40*b),this.search_results.scrollTop(b+this.search_results.scrollTop())):void 0},Chosen.prototype.blur_test=function(){return!this.active_field&&this.container.hasClass("chosen-container-active")?this.close_field():void 0},Chosen.prototype.close_field=function(){return a(document).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},Chosen.prototype.activate_field=function(){return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},Chosen.prototype.test_active_click=function(b){return this.container.is(a(b.target).closest(".chosen-container"))?this.active_field=!0:this.close_field()},Chosen.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=SelectParser.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},Chosen.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){if(this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight(),b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(f>c)return this.search_results.scrollTop(c)}},Chosen.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},Chosen.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results())},Chosen.prototype.update_results_content=function(a){return this.search_results.html(a)},Chosen.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},Chosen.prototype.set_tab_index=function(){var a;return this.form_field.tabIndex?(a=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=a):void 0},Chosen.prototype.set_label_behavior=function(){var b=this;return this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=a("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0?this.form_field_label.bind("click.chosen",function(a){return b.is_multiple?b.container_mousedown(a):b.activate_field()}):void 0},Chosen.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},Chosen.prototype.search_results_mouseup=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c.length?(this.result_highlight=c,this.result_select(b),this.search_field.focus()):void 0},Chosen.prototype.search_results_mouseover=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c?this.result_do_highlight(c):void 0},Chosen.prototype.search_results_mouseout=function(b){return a(b.target).hasClass("active-result")?this.result_clear_highlight():void 0},Chosen.prototype.choice_build=function(b){var c,d,e=this;return c=a("<li />",{"class":"search-choice"}).html("<span>"+b.html+"</span>"),b.disabled?c.addClass("search-choice-disabled"):(d=a("<a />",{"class":"search-choice-close","data-option-array-index":b.array_index}),d.bind("click.chosen",function(a){return e.choice_destroy_link_click(a)}),c.append(d)),this.search_container.before(c)},Chosen.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),b.stopPropagation(),this.is_disabled?void 0:this.choice_destroy(a(b.target))},Chosen.prototype.choice_destroy=function(a){return this.result_deselect(a[0].getAttribute("data-option-array-index"))?(this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),a.parents("li").first().remove(),this.search_field_scale()):void 0},Chosen.prototype.results_reset=function(){return this.form_field.options[0].selected=!0,this.selected_option_count=null,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field?this.results_hide():void 0},Chosen.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},Chosen.prototype.result_select=function(a){var b,c,d;return this.result_highlight?(b=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?b.removeClass("active-result"):(this.result_single_selected&&(this.result_single_selected.removeClass("result-selected"),d=this.result_single_selected[0].getAttribute("data-option-array-index"),this.results_data[d].selected=!1),this.result_single_selected=b),b.addClass("result-selected"),c=this.results_data[b[0].getAttribute("data-option-array-index")],c.selected=!0,this.form_field.options[c.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(c):this.single_set_selected_text(c.text),(a.metaKey||a.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[c.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,this.search_field_scale())):void 0},Chosen.prototype.single_set_selected_text=function(a){return null==a&&(a=this.default_text),a===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").text(a)},Chosen.prototype.result_deselect=function(a){var b;return b=this.results_data[a],this.form_field.options[b.options_index].disabled?!1:(b.selected=!1,this.form_field.options[b.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[b.options_index].value}),this.search_field_scale(),!0)},Chosen.prototype.single_deselect_control_build=function(){return this.allow_single_deselect?(this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")):void 0},Chosen.prototype.get_search_text=function(){return this.search_field.val()===this.default_text?"":a("<div/>").text(a.trim(this.search_field.val())).html()},Chosen.prototype.winnow_results_set_highlight=function(){var a,b;return b=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),a=b.length?b.first():this.search_results.find(".active-result").first(),null!=a?this.result_do_highlight(a):void 0},Chosen.prototype.no_results=function(b){var c;return c=a('<li class="no-results">'+this.results_none_found+' "<span></span>"</li>'),c.find("span").first().html(b),this.search_results.append(c)},Chosen.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},Chosen.prototype.keydown_arrow=function(){var a;return this.results_showing&&this.result_highlight?(a=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(a):void 0:this.results_show()},Chosen.prototype.keyup_arrow=function(){var a;return this.results_showing||this.is_multiple?this.result_highlight?(a=this.result_highlight.prevAll("li.active-result"),a.length?this.result_do_highlight(a.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},Chosen.prototype.keydown_backstroke=function(){var a;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(a=this.search_container.siblings("li.search-choice").last(),a.length&&!a.hasClass("search-choice-disabled")?(this.pending_backstroke=a,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},Chosen.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},Chosen.prototype.keydown_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),8!==b&&this.pending_backstroke&&this.clear_backstroke(),b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:a.preventDefault(),this.keydown_arrow()}},Chosen.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){for(d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],i=0,j=g.length;j>i;i++)e=g[i],f+=e+":"+this.search_field.css(e)+";";return b=a("<div />",{style:f}),b.text(this.search_field.val()),a("body").append(b),h=b.width()+25,b.remove(),c=this.container.outerWidth(),h>c-10&&(h=c-10),this.search_field.css({width:h+"px"})}},Chosen}(AbstractChosen)}.call(this);
|
@@ -0,0 +1,331 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
function Grinder(callback) {
|
4
|
+
return this.init(callback);
|
5
|
+
}
|
6
|
+
|
7
|
+
(function () {
|
8
|
+
|
9
|
+
/**
|
10
|
+
* @private
|
11
|
+
* @function removeValue - delete value based on key
|
12
|
+
* @param {string} key - param to target
|
13
|
+
* @param {mixed} value - value to delete from param
|
14
|
+
*/
|
15
|
+
var removeValue = function(key, value) {
|
16
|
+
var hash = window.location.hash;
|
17
|
+
// check for key, anything between key and value, the value itself, and optionally the trailing comma
|
18
|
+
var regex_for_value = new RegExp('(' + key + '=.*)(' + value + '\,?)');
|
19
|
+
// results come back [<search through value>, <search before value>, <value>]
|
20
|
+
var regex_match = hash.match(regex_for_value);
|
21
|
+
// replace <search through value> with everything before <value>
|
22
|
+
// Key is included in search in case multiple keys have the same value
|
23
|
+
hash = hash.replace(regex_match[0], regex_match[1]);
|
24
|
+
|
25
|
+
// Remove trailing commas
|
26
|
+
hash = hash.replace(/\,\&/g, '&');
|
27
|
+
hash = hash.replace(/\,$/, '');
|
28
|
+
hash = hash.replace(/\=\,/g, '=');
|
29
|
+
|
30
|
+
window.location.hash = hash;
|
31
|
+
};
|
32
|
+
|
33
|
+
/**
|
34
|
+
* @private
|
35
|
+
* @function addValue - add value based on key
|
36
|
+
* @param {string} key - param to target
|
37
|
+
* @param {mixed} value - value to add to param
|
38
|
+
* @param {optional boolean} should_replace_value - if false, value will be appended to the param
|
39
|
+
*/
|
40
|
+
var addValue = function(key, value, should_replace_value) {
|
41
|
+
var hash = window.location.hash;
|
42
|
+
|
43
|
+
var old_value = param(key);
|
44
|
+
var new_value;
|
45
|
+
|
46
|
+
// If it's blank or is the value of the next param
|
47
|
+
if(old_value.charAt(0) === '&' || old_value === '') {
|
48
|
+
old_value = key + '=';
|
49
|
+
new_value = old_value + value;
|
50
|
+
|
51
|
+
} else {
|
52
|
+
old_value = key + '=' + old_value;
|
53
|
+
|
54
|
+
// If the value of the param should be replaced, don't append it to the existing value
|
55
|
+
new_value = should_replace_value ? (key + '=' + value) : (old_value + ',' + value);
|
56
|
+
}
|
57
|
+
|
58
|
+
hash = hash.replace(old_value, new_value);
|
59
|
+
|
60
|
+
window.location.hash = hash;
|
61
|
+
};
|
62
|
+
|
63
|
+
/**
|
64
|
+
* @private
|
65
|
+
* @function removeKey - remove key from hash. Key's value must be removed prior to executing this function
|
66
|
+
* @param {string} key - key to search and destroy
|
67
|
+
*/
|
68
|
+
var removeKey = function(key) {
|
69
|
+
var hash = window.location.hash;
|
70
|
+
var key_search = new RegExp('[?&]' + key + '=', 'g');
|
71
|
+
|
72
|
+
hash = hash.replace(key_search, '');
|
73
|
+
// if initial key removed, replace ampersand with question
|
74
|
+
hash = hash.replace('#&', '#?');
|
75
|
+
|
76
|
+
window.location.hash = hash;
|
77
|
+
}
|
78
|
+
|
79
|
+
/**
|
80
|
+
* @private
|
81
|
+
* @see documentation in the public `param` function
|
82
|
+
*/
|
83
|
+
var param = function(key) {
|
84
|
+
if(!window.location.hash) {
|
85
|
+
return '';
|
86
|
+
}
|
87
|
+
var hash = window.location.hash;
|
88
|
+
var search = new RegExp('#.*[?&]' + key + '=([^&]+)(&|$)');
|
89
|
+
var key_value = hash.match(search);
|
90
|
+
|
91
|
+
return (key_value ? key_value[1] : '');
|
92
|
+
};
|
93
|
+
|
94
|
+
/**
|
95
|
+
* @private
|
96
|
+
* @function setDefault - Apply value to variable if it has none
|
97
|
+
* @param {var} variable - variable to set default to
|
98
|
+
* @param {anything} value - default value to attribute to variable
|
99
|
+
*/
|
100
|
+
var setDefault = function(variable, value){
|
101
|
+
return (typeof variable === 'undefined') ? value : variable;
|
102
|
+
};
|
103
|
+
|
104
|
+
|
105
|
+
Grinder.prototype = {
|
106
|
+
|
107
|
+
// Very important object holder
|
108
|
+
params: {},
|
109
|
+
|
110
|
+
/**
|
111
|
+
* @function init - call once to initialize filtering
|
112
|
+
* @param {func} hashChangeCallback - called on every hashchange (first argument is the updated params)
|
113
|
+
*/
|
114
|
+
init: function(hashChangeCallback) {
|
115
|
+
var _this = this;
|
116
|
+
|
117
|
+
var privateHashChange = function() {
|
118
|
+
var params = _this.parse();
|
119
|
+
hashChangeCallback.call(this, params);
|
120
|
+
};
|
121
|
+
|
122
|
+
window.onhashchange = privateHashChange;
|
123
|
+
|
124
|
+
privateHashChange();
|
125
|
+
|
126
|
+
return this;
|
127
|
+
|
128
|
+
},
|
129
|
+
|
130
|
+
/**
|
131
|
+
* @function update - remove key/value if present in hash; add key/value if not present in hash
|
132
|
+
* @param {string} key - param key to query against
|
133
|
+
* @param {mixed} value - value for param key
|
134
|
+
* @param {optional boolean} key_is_required {false} - if the key is not required, it will be removed from the hash
|
135
|
+
* @param {optional boolean} should_replace_value {false} - if false, value will be appended to the key
|
136
|
+
*/
|
137
|
+
update: function(key, value, key_is_required, should_replace_value) {
|
138
|
+
var hash = window.location.hash;
|
139
|
+
key_is_required = setDefault(key_is_required, false);
|
140
|
+
should_replace_value = setDefault(should_replace_value, false);
|
141
|
+
|
142
|
+
// Ensure key exists in the hash
|
143
|
+
if(hash.indexOf(key) !== -1) {
|
144
|
+
var key_value = param(key);
|
145
|
+
|
146
|
+
var regex_for_value = new RegExp(value, 'g');
|
147
|
+
|
148
|
+
// If key_value contains the new value
|
149
|
+
if(regex_for_value.test(key_value)) {
|
150
|
+
|
151
|
+
// If key is required, swap it out
|
152
|
+
if(key_is_required) {
|
153
|
+
addValue(key, value, should_replace_value);
|
154
|
+
|
155
|
+
} else {
|
156
|
+
|
157
|
+
// If the value is blank, remove the original value from the key
|
158
|
+
if(value === '') {
|
159
|
+
removeValue(key, key_value);
|
160
|
+
|
161
|
+
// Otherwise remove the vanilla value
|
162
|
+
} else {
|
163
|
+
removeValue(key, value);
|
164
|
+
|
165
|
+
}
|
166
|
+
|
167
|
+
// If key's value is blank, remove it from hash
|
168
|
+
if(param(key) === '') {
|
169
|
+
removeKey(key);
|
170
|
+
}
|
171
|
+
|
172
|
+
}
|
173
|
+
|
174
|
+
// key_value does not contain the new value
|
175
|
+
} else {
|
176
|
+
addValue(key, value, should_replace_value);
|
177
|
+
|
178
|
+
}
|
179
|
+
|
180
|
+
// Add key if it doesn't exist
|
181
|
+
} else {
|
182
|
+
|
183
|
+
if(window.location.hash) {
|
184
|
+
window.location.hash += '&' + key + '=' + value;
|
185
|
+
} else {
|
186
|
+
// Use a question mark if first key
|
187
|
+
window.location.hash = '?' + key + '=' + value;
|
188
|
+
}
|
189
|
+
|
190
|
+
}
|
191
|
+
|
192
|
+
// Log it to the history
|
193
|
+
if (window.history && window.history.pushState) {
|
194
|
+
window.history.pushState(null, null, window.location.hash);
|
195
|
+
}
|
196
|
+
|
197
|
+
},
|
198
|
+
|
199
|
+
/**
|
200
|
+
* @function parse - evaluate the hash
|
201
|
+
* @return key/value hash of the hash broken down by params
|
202
|
+
*/
|
203
|
+
parse: function() {
|
204
|
+
var hash = window.location.hash;
|
205
|
+
var params;
|
206
|
+
|
207
|
+
// clear zombie keys and values
|
208
|
+
this.params = {};
|
209
|
+
|
210
|
+
if(window.location.hash && /\?/g.test(hash)) {
|
211
|
+
params = hash.split('?')[1];
|
212
|
+
params = params.split('&');
|
213
|
+
|
214
|
+
// Separate params into key values
|
215
|
+
for(var i = 0; i < params.length; i++) {
|
216
|
+
var key_value = params[i].split('=');
|
217
|
+
var key = key_value[0];
|
218
|
+
var value = key_value[1];
|
219
|
+
|
220
|
+
this.params[key] = value;
|
221
|
+
}
|
222
|
+
}
|
223
|
+
|
224
|
+
return this.params;
|
225
|
+
},
|
226
|
+
|
227
|
+
/**
|
228
|
+
* @function convert - change a JSON object into a string for the hash
|
229
|
+
* @param {object | string} obj - object to convert
|
230
|
+
* @return {string | boolean} to use in window.location.hash. Returns false if param is not object or string
|
231
|
+
*/
|
232
|
+
convert: function(obj) {
|
233
|
+
if( obj.constructor === String ) {
|
234
|
+
obj = JSON.parse(obj);
|
235
|
+
}
|
236
|
+
|
237
|
+
// Escape if we're not dealing with an object
|
238
|
+
if( obj.constructor !== Object ) {
|
239
|
+
return false;
|
240
|
+
}
|
241
|
+
|
242
|
+
var keys = Object.keys(obj);
|
243
|
+
// Set start with a ?
|
244
|
+
var new_hash = '?';
|
245
|
+
|
246
|
+
// Loop through all keys in the obj
|
247
|
+
for(var i = 0; i < keys.length; i++) {
|
248
|
+
var key = keys[i];
|
249
|
+
var value = obj[keys[i]];
|
250
|
+
|
251
|
+
if( value.constructor === Array ) {
|
252
|
+
value = value.join(',');
|
253
|
+
}
|
254
|
+
|
255
|
+
// On next key, if it isn't the first, precede with an ampersand
|
256
|
+
if(new_hash !== '?') {
|
257
|
+
new_hash += '&';
|
258
|
+
}
|
259
|
+
|
260
|
+
// Append key/value to new_hash
|
261
|
+
new_hash += key + '=' + value;
|
262
|
+
}
|
263
|
+
|
264
|
+
return new_hash;
|
265
|
+
},
|
266
|
+
|
267
|
+
/**
|
268
|
+
* @function merge - wipe out or selectively replace keys in params
|
269
|
+
* @param {object | string} obj - query to replace
|
270
|
+
* @param {boolean} replace_all {false} - whether or not to blast existing params away or replace only changed keys
|
271
|
+
* @return {string} but also updates hash
|
272
|
+
*/
|
273
|
+
merge: function(obj, replace_all) {
|
274
|
+
replace_all = setDefault(replace_all, false);
|
275
|
+
var new_hash;
|
276
|
+
|
277
|
+
// If it's a string, convert to an object
|
278
|
+
if( obj.constructor === String ) {
|
279
|
+
obj = JSON.parse(obj);
|
280
|
+
}
|
281
|
+
|
282
|
+
if( replace_all ) {
|
283
|
+
// Unilaterally make a string based on the params to use
|
284
|
+
new_hash = this.convert(obj);
|
285
|
+
|
286
|
+
} else {
|
287
|
+
var new_params = this.parse();
|
288
|
+
var keys = Object.keys(new_params);
|
289
|
+
|
290
|
+
for(var i = 0; i < keys.length; i++) {
|
291
|
+
var key = keys[i];
|
292
|
+
var value = new_params[key[i]];
|
293
|
+
|
294
|
+
if(obj.hasOwnProperty(key)) {
|
295
|
+
new_params[key] = obj[key];
|
296
|
+
}
|
297
|
+
}
|
298
|
+
|
299
|
+
new_hash = this.convert(new_params);
|
300
|
+
}
|
301
|
+
|
302
|
+
window.location.hash = '#' + new_hash;
|
303
|
+
|
304
|
+
return new_hash;
|
305
|
+
},
|
306
|
+
|
307
|
+
/**
|
308
|
+
* @function param - retrieve a key's value
|
309
|
+
* @param {string} key - param to target
|
310
|
+
* @example
|
311
|
+
* window.location.hash = ?color=blue
|
312
|
+
* grinder.param('color') // => 'blue'
|
313
|
+
* @return {string} the value of the key
|
314
|
+
*/
|
315
|
+
param: function(key) {
|
316
|
+
return param(key);
|
317
|
+
},
|
318
|
+
|
319
|
+
/**
|
320
|
+
* @function paramPresent - determine if param is blank or undefined
|
321
|
+
* @param {string} key - param to target
|
322
|
+
* @return boolean
|
323
|
+
*/
|
324
|
+
paramPresent: function(key) {
|
325
|
+
var value = this.params[key];
|
326
|
+
return (typeof value !== 'undefined' && value !== '');
|
327
|
+
},
|
328
|
+
|
329
|
+
};
|
330
|
+
|
331
|
+
})();
|
@@ -0,0 +1,7 @@
|
|
1
|
+
(function(m,j){function q(a,c){var f=a.createElement("p"),b=a.getElementsByTagName("head")[0]||a.documentElement;f.innerHTML="x<style>"+c+"</style>";return b.insertBefore(f.lastChild,b.firstChild)}function n(){var a=k.elements;return"string"==typeof a?a.split(" "):a}function u(a){var c={},f=a.createElement,b=a.createDocumentFragment,d=b();a.createElement=function(a){if(!k.shivMethods)return f(a);var e;e=c[a]?c[a].cloneNode():v.test(a)?(c[a]=f(a)).cloneNode():f(a);return e.canHaveChildren&&!w.test(a)?
|
2
|
+
d.appendChild(e):e};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+n().join().replace(/\w+/g,function(a){f(a);d.createElement(a);return'c("'+a+'")'})+");return n}")(k,d)}function r(a){var c;if(a.documentShived)return a;k.shivCSS&&!s&&(c=!!q(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}"));o||(c=!u(a));if(c)a.documentShived=c;return a}function x(a){for(var c,f=a.attributes,
|
3
|
+
b=f.length,d=a.ownerDocument.createElement(l+":"+a.nodeName);b--;)c=f[b],c.specified&&d.setAttribute(c.nodeName,c.nodeValue);d.style.cssText=a.style.cssText;return d}function t(a){var c,f,b=a.namespaces,d=a.parentWindow;if(!y||a.printShived)return a;"undefined"==typeof b[l]&&b.add(l);d.attachEvent("onbeforeprint",function(){var g,e,i;i=a.styleSheets;for(var b=[],h=i.length,d=Array(h);h--;)d[h]=i[h];for(;i=d.pop();)if(!i.disabled&&z.test(i.media)){try{g=i.imports,e=g.length}catch(j){e=0}for(h=0;h<
|
4
|
+
e;h++)d.push(g[h]);try{b.push(i.cssText)}catch(k){}}g=b.reverse().join("").split("{");e=g.length;h=RegExp("(^|[\\s,>+~])("+n().join("|")+")(?=[[\\s,>+~#.:]|$)","gi");for(d="$1"+l+"\\:$2";e--;)b=g[e]=g[e].split("}"),b[b.length-1]=b[b.length-1].replace(h,d),g[e]=b.join("}");b=g.join("{");e=a.getElementsByTagName("*");h=e.length;d=RegExp("^(?:"+n().join("|")+")$","i");for(i=[];h--;)g=e[h],d.test(g.nodeName)&&i.push(g.applyElement(x(g)));f=i;c=q(a,b)});d.attachEvent("onafterprint",function(){for(var a=
|
5
|
+
f,b=a.length;b--;)a[b].removeNode();c.removeNode(!0)});a.printShived=!0;return a}var p=m.html5||{},w=/^<|^(?:button|form|map|select|textarea|object|iframe|option|optgroup)$/i,v=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,s,o;(function(){var a=j.createElement("a");a.innerHTML="<xyz></xyz>";s="hidden"in a;if(!(a=1==a.childNodes.length))a:{try{j.createElement("a")}catch(c){a=
|
6
|
+
!0;break a}a=j.createDocumentFragment();a="undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}o=a})();var k={elements:p.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:!1!==p.shivCSS,shivMethods:!1!==p.shivMethods,type:"default",shivDocument:r};m.html5=k;r(j);var z=/^$|\b(?:all|print)\b/,l="html5shiv",y=!o&&function(){var a=
|
7
|
+
j.documentElement;return!("undefined"==typeof j.namespaces||"undefined"==typeof j.parentWindow||"undefined"==typeof a.applyElement||"undefined"==typeof a.removeNode||"undefined"==typeof m.attachEvent)}();k.type+=" print";k.shivPrint=t;t(j)})(this,document);
|
@@ -0,0 +1,4 @@
|
|
1
|
+
(function(g,b){function k(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function l(a){var c={},f=a.createElement,b=a.createDocumentFragment,d=b();a.createElement=function(a){if(!e.shivMethods)return f(a);var b;b=c[a]?c[a].cloneNode():m.test(a)?(c[a]=f(a)).cloneNode():f(a);return b.canHaveChildren&&!n.test(a)?d.appendChild(b):b};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+k().join().replace(/\w+/g,function(a){f(a);
|
2
|
+
d.createElement(a);return'c("'+a+'")'})+");return n}")(e,d)}function h(a){var c;if(a.documentShived)return a;if(e.shivCSS&&!i){c=a.createElement("p");var b=a.getElementsByTagName("head")[0]||a.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}</style>";c=!!b.insertBefore(c.lastChild,b.firstChild)}j||(c=!l(a));if(c)a.documentShived=c;return a}var d=g.html5||{},n=/^<|^(?:button|form|map|select|textarea|object|iframe|option|optgroup)$/i,
|
3
|
+
m=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,i,j;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>";i="hidden"in a;if(!(a=1==a.childNodes.length))a:{try{b.createElement("a")}catch(c){a=!0;break a}a=b.createDocumentFragment();a="undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}j=
|
4
|
+
a})();var e={elements:d.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:!1!==d.shivCSS,shivMethods:!1!==d.shivMethods,type:"default",shivDocument:h};g.html5=e;h(b)})(this,document);
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/*!
|
2
|
+
* imagesLoaded PACKAGED v3.1.4
|
3
|
+
* JavaScript is all like "You images are done yet or what?"
|
4
|
+
* MIT License
|
5
|
+
*/
|
6
|
+
|
7
|
+
(function(){function e(){}function t(e,t){for(var n=e.length;n--;)if(e[n].listener===t)return n;return-1}function n(e){return function(){return this[e].apply(this,arguments)}}var i=e.prototype,r=this,o=r.EventEmitter;i.getListeners=function(e){var t,n,i=this._getEvents();if("object"==typeof e){t={};for(n in i)i.hasOwnProperty(n)&&e.test(n)&&(t[n]=i[n])}else t=i[e]||(i[e]=[]);return t},i.flattenListeners=function(e){var t,n=[];for(t=0;e.length>t;t+=1)n.push(e[t].listener);return n},i.getListenersAsObject=function(e){var t,n=this.getListeners(e);return n instanceof Array&&(t={},t[e]=n),t||n},i.addListener=function(e,n){var i,r=this.getListenersAsObject(e),o="object"==typeof n;for(i in r)r.hasOwnProperty(i)&&-1===t(r[i],n)&&r[i].push(o?n:{listener:n,once:!1});return this},i.on=n("addListener"),i.addOnceListener=function(e,t){return this.addListener(e,{listener:t,once:!0})},i.once=n("addOnceListener"),i.defineEvent=function(e){return this.getListeners(e),this},i.defineEvents=function(e){for(var t=0;e.length>t;t+=1)this.defineEvent(e[t]);return this},i.removeListener=function(e,n){var i,r,o=this.getListenersAsObject(e);for(r in o)o.hasOwnProperty(r)&&(i=t(o[r],n),-1!==i&&o[r].splice(i,1));return this},i.off=n("removeListener"),i.addListeners=function(e,t){return this.manipulateListeners(!1,e,t)},i.removeListeners=function(e,t){return this.manipulateListeners(!0,e,t)},i.manipulateListeners=function(e,t,n){var i,r,o=e?this.removeListener:this.addListener,s=e?this.removeListeners:this.addListeners;if("object"!=typeof t||t instanceof RegExp)for(i=n.length;i--;)o.call(this,t,n[i]);else for(i in t)t.hasOwnProperty(i)&&(r=t[i])&&("function"==typeof r?o.call(this,i,r):s.call(this,i,r));return this},i.removeEvent=function(e){var t,n=typeof e,i=this._getEvents();if("string"===n)delete i[e];else if("object"===n)for(t in i)i.hasOwnProperty(t)&&e.test(t)&&delete i[t];else delete this._events;return this},i.removeAllListeners=n("removeEvent"),i.emitEvent=function(e,t){var n,i,r,o,s=this.getListenersAsObject(e);for(r in s)if(s.hasOwnProperty(r))for(i=s[r].length;i--;)n=s[r][i],n.once===!0&&this.removeListener(e,n.listener),o=n.listener.apply(this,t||[]),o===this._getOnceReturnValue()&&this.removeListener(e,n.listener);return this},i.trigger=n("emitEvent"),i.emit=function(e){var t=Array.prototype.slice.call(arguments,1);return this.emitEvent(e,t)},i.setOnceReturnValue=function(e){return this._onceReturnValue=e,this},i._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},i._getEvents=function(){return this._events||(this._events={})},e.noConflict=function(){return r.EventEmitter=o,e},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return e}):"object"==typeof module&&module.exports?module.exports=e:this.EventEmitter=e}).call(this),function(e){function t(t){var n=e.event;return n.target=n.target||n.srcElement||t,n}var n=document.documentElement,i=function(){};n.addEventListener?i=function(e,t,n){e.addEventListener(t,n,!1)}:n.attachEvent&&(i=function(e,n,i){e[n+i]=i.handleEvent?function(){var n=t(e);i.handleEvent.call(i,n)}:function(){var n=t(e);i.call(e,n)},e.attachEvent("on"+n,e[n+i])});var r=function(){};n.removeEventListener?r=function(e,t,n){e.removeEventListener(t,n,!1)}:n.detachEvent&&(r=function(e,t,n){e.detachEvent("on"+t,e[t+n]);try{delete e[t+n]}catch(i){e[t+n]=void 0}});var o={bind:i,unbind:r};"function"==typeof define&&define.amd?define("eventie/eventie",o):e.eventie=o}(this),function(e,t){"function"==typeof define&&define.amd?define(["eventEmitter/EventEmitter","eventie/eventie"],function(n,i){return t(e,n,i)}):"object"==typeof exports?module.exports=t(e,require("eventEmitter"),require("eventie")):e.imagesLoaded=t(e,e.EventEmitter,e.eventie)}(this,function(e,t,n){function i(e,t){for(var n in t)e[n]=t[n];return e}function r(e){return"[object Array]"===d.call(e)}function o(e){var t=[];if(r(e))t=e;else if("number"==typeof e.length)for(var n=0,i=e.length;i>n;n++)t.push(e[n]);else t.push(e);return t}function s(e,t,n){if(!(this instanceof s))return new s(e,t);"string"==typeof e&&(e=document.querySelectorAll(e)),this.elements=o(e),this.options=i({},this.options),"function"==typeof t?n=t:i(this.options,t),n&&this.on("always",n),this.getImages(),a&&(this.jqDeferred=new a.Deferred);var r=this;setTimeout(function(){r.check()})}function c(e){this.img=e}function f(e){this.src=e,v[e]=this}var a=e.jQuery,u=e.console,h=u!==void 0,d=Object.prototype.toString;s.prototype=new t,s.prototype.options={},s.prototype.getImages=function(){this.images=[];for(var e=0,t=this.elements.length;t>e;e++){var n=this.elements[e];"IMG"===n.nodeName&&this.addImage(n);for(var i=n.querySelectorAll("img"),r=0,o=i.length;o>r;r++){var s=i[r];this.addImage(s)}}},s.prototype.addImage=function(e){var t=new c(e);this.images.push(t)},s.prototype.check=function(){function e(e,r){return t.options.debug&&h&&u.log("confirm",e,r),t.progress(e),n++,n===i&&t.complete(),!0}var t=this,n=0,i=this.images.length;if(this.hasAnyBroken=!1,!i)return this.complete(),void 0;for(var r=0;i>r;r++){var o=this.images[r];o.on("confirm",e),o.check()}},s.prototype.progress=function(e){this.hasAnyBroken=this.hasAnyBroken||!e.isLoaded;var t=this;setTimeout(function(){t.emit("progress",t,e),t.jqDeferred&&t.jqDeferred.notify&&t.jqDeferred.notify(t,e)})},s.prototype.complete=function(){var e=this.hasAnyBroken?"fail":"done";this.isComplete=!0;var t=this;setTimeout(function(){if(t.emit(e,t),t.emit("always",t),t.jqDeferred){var n=t.hasAnyBroken?"reject":"resolve";t.jqDeferred[n](t)}})},a&&(a.fn.imagesLoaded=function(e,t){var n=new s(this,e,t);return n.jqDeferred.promise(a(this))}),c.prototype=new t,c.prototype.check=function(){var e=v[this.img.src]||new f(this.img.src);if(e.isConfirmed)return this.confirm(e.isLoaded,"cached was confirmed"),void 0;if(this.img.complete&&void 0!==this.img.naturalWidth)return this.confirm(0!==this.img.naturalWidth,"naturalWidth"),void 0;var t=this;e.on("confirm",function(e,n){return t.confirm(e.isLoaded,n),!0}),e.check()},c.prototype.confirm=function(e,t){this.isLoaded=e,this.emit("confirm",this,t)};var v={};return f.prototype=new t,f.prototype.check=function(){if(!this.isChecked){var e=new Image;n.bind(e,"load",this),n.bind(e,"error",this),e.src=this.src,this.isChecked=!0}},f.prototype.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},f.prototype.onload=function(e){this.confirm(!0,"onload"),this.unbindProxyEvents(e)},f.prototype.onerror=function(e){this.confirm(!1,"onerror"),this.unbindProxyEvents(e)},f.prototype.confirm=function(e,t){this.isConfirmed=!0,this.isLoaded=e,this.emit("confirm",this,t)},f.prototype.unbindProxyEvents=function(e){n.unbind(e.target,"load",this),n.unbind(e.target,"error",this)},s});
|
@@ -0,0 +1,1292 @@
|
|
1
|
+
// daterangepicker.js
|
2
|
+
// version : 0.0.5
|
3
|
+
// author : Chunlong Liu
|
4
|
+
// last updated at: 2014-05-27
|
5
|
+
// license : MIT
|
6
|
+
// www.jszen.com
|
7
|
+
|
8
|
+
(function($)
|
9
|
+
{
|
10
|
+
|
11
|
+
$.dateRangePickerLanguages =
|
12
|
+
{
|
13
|
+
'cn':
|
14
|
+
{
|
15
|
+
'selected': '已选择:',
|
16
|
+
'day':'天',
|
17
|
+
'days': '天',
|
18
|
+
'apply': '确定',
|
19
|
+
'week-1' : '一',
|
20
|
+
'week-2' : '二',
|
21
|
+
'week-3' : '三',
|
22
|
+
'week-4' : '四',
|
23
|
+
'week-5' : '五',
|
24
|
+
'week-6' : '六',
|
25
|
+
'week-7' : '日',
|
26
|
+
'month-name': ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'],
|
27
|
+
'shortcuts' : '快捷选择',
|
28
|
+
'past': '过去',
|
29
|
+
'following':'将来',
|
30
|
+
'previous' : ' ',
|
31
|
+
'prev-week' : '上周',
|
32
|
+
'prev-month' : '上个月',
|
33
|
+
'prev-year' : '去年',
|
34
|
+
'next': ' ',
|
35
|
+
'next-week':'下周',
|
36
|
+
'next-month':'下个月',
|
37
|
+
'next-year':'明年',
|
38
|
+
'less-than' : '所选日期范围不能大于%d天',
|
39
|
+
'more-than' : '所选日期范围不能小于%d天',
|
40
|
+
'default-more' : '请选择大于%d天的日期范围',
|
41
|
+
'default-less' : '请选择小于%d天的日期范围',
|
42
|
+
'default-range' : '请选择%d天到%d天的日期范围',
|
43
|
+
'default-single':'请选择一个日期',
|
44
|
+
'default-default': '请选择一个日期范围'
|
45
|
+
},
|
46
|
+
'en':
|
47
|
+
{
|
48
|
+
'selected': 'Selected:',
|
49
|
+
'day':'Day',
|
50
|
+
'days': 'Days',
|
51
|
+
'apply': 'Close',
|
52
|
+
'week-1' : 'MO',
|
53
|
+
'week-2' : 'TU',
|
54
|
+
'week-3' : 'WE',
|
55
|
+
'week-4' : 'TH',
|
56
|
+
'week-5' : 'FR',
|
57
|
+
'week-6' : 'SA',
|
58
|
+
'week-7' : 'SU',
|
59
|
+
'month-name': ['JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUNE','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER'],
|
60
|
+
'shortcuts' : 'Shortcuts',
|
61
|
+
'past': 'Past',
|
62
|
+
'following':'Following',
|
63
|
+
'previous' : 'Previous',
|
64
|
+
'prev-week' : 'Week',
|
65
|
+
'prev-month' : 'Month',
|
66
|
+
'prev-year' : 'Year',
|
67
|
+
'next':'Next',
|
68
|
+
'next-week':'Week',
|
69
|
+
'next-month':'Month',
|
70
|
+
'next-year':'Year',
|
71
|
+
'less-than' : 'Date range should not be more than %d days',
|
72
|
+
'more-than' : 'Date range should not be less than %d days',
|
73
|
+
'default-more' : 'Please select a date range longer than %d days',
|
74
|
+
'default-single' : 'Please select a date',
|
75
|
+
'default-less' : 'Please select a date range less than %d days',
|
76
|
+
'default-range' : 'Please select a date range between %d and %d days',
|
77
|
+
'default-default': 'Please select a date range'
|
78
|
+
},
|
79
|
+
'it':
|
80
|
+
{
|
81
|
+
'selected': 'Selezionati:',
|
82
|
+
'day':'Giorno',
|
83
|
+
'days': 'Giorni',
|
84
|
+
'apply': 'Chiudi',
|
85
|
+
'week-1' : 'LU',
|
86
|
+
'week-2' : 'MA',
|
87
|
+
'week-3' : 'ME',
|
88
|
+
'week-4' : 'GI',
|
89
|
+
'week-5' : 'VE',
|
90
|
+
'week-6' : 'SA',
|
91
|
+
'week-7' : 'DO',
|
92
|
+
'month-name': ['GENNAIO','FEBBRAIO','MARZO','APRILE','MAGGIO','GIUGNO','LUGLIO','AGOSTO','SETTEMBRE','OTTOBRE','NOVEMBRE','DICEMBRE'],
|
93
|
+
'shortcuts' : 'Scorciatoie',
|
94
|
+
'past': 'Scorso',
|
95
|
+
'following':'Successivo',
|
96
|
+
'previous' : 'Precedente',
|
97
|
+
'prev-week' : 'Settimana',
|
98
|
+
'prev-month' : 'Mese',
|
99
|
+
'prev-year' : 'Anno',
|
100
|
+
'next':'Prossimo',
|
101
|
+
'next-week':'Settimana',
|
102
|
+
'next-month':'Mese',
|
103
|
+
'next-year':'Anno',
|
104
|
+
'less-than' : 'L\'intervallo non dev\'essere maggiore di %d giorni',
|
105
|
+
'more-than' : 'L\'intervallo non dev\'essere minore di %d giorni',
|
106
|
+
'default-more' : 'Seleziona un intervallo maggiore di %d giorni',
|
107
|
+
'default-single' : 'Seleziona una data',
|
108
|
+
'default-less' : 'Seleziona un intervallo minore di %d giorni',
|
109
|
+
'default-range' : 'Seleziona un intervallo compreso tra i %d e i %d giorni',
|
110
|
+
'default-default': 'Seleziona un intervallo di date'
|
111
|
+
},
|
112
|
+
'es':
|
113
|
+
{
|
114
|
+
'selected': 'Seleccionado:',
|
115
|
+
'day':'Dia',
|
116
|
+
'days': 'Dias',
|
117
|
+
'apply': 'Cerrar',
|
118
|
+
'week-1' : 'LU',
|
119
|
+
'week-2' : 'MA',
|
120
|
+
'week-3' : 'MI',
|
121
|
+
'week-4' : 'JU',
|
122
|
+
'week-5' : 'VI',
|
123
|
+
'week-6' : 'SA',
|
124
|
+
'week-7' : 'DO',
|
125
|
+
'month-name': ['ENERO','FEBRERO','MARZO','ABRIL','MAYO','JUNIO','JULIO','AGOSTO','SEPTIEMBRE','OCTUBRE','NOVIEMBRE','DICIEMBRE'],
|
126
|
+
'shortcuts' : 'Accesos directos',
|
127
|
+
'past': 'Pasado',
|
128
|
+
'following':'Siguiente',
|
129
|
+
'previous' : 'Anterior',
|
130
|
+
'prev-week' : 'Semana',
|
131
|
+
'prev-month' : 'Mes',
|
132
|
+
'prev-year' : 'Año',
|
133
|
+
'next':'Siguiente',
|
134
|
+
'next-week':'Semana',
|
135
|
+
'next-month':'Mes',
|
136
|
+
'next-year':'Año',
|
137
|
+
'less-than' : 'El rango no deberia ser mayor de %d dias',
|
138
|
+
'more-than' : 'El rango no deberia ser menor de %d dias',
|
139
|
+
'default-more' : 'Por favor selecciona un rango mayor a %d dias',
|
140
|
+
'default-single' : 'Por favor selecciona un dia',
|
141
|
+
'default-less' : 'Por favor selecciona un rango menor a %d dias',
|
142
|
+
'default-range' : 'Por favor selecciona un rango entre %d y %d dias',
|
143
|
+
'default-default': 'Por favor selecciona un rango de fechas.'
|
144
|
+
},
|
145
|
+
'de':
|
146
|
+
{
|
147
|
+
'selected': 'Auswahl:',
|
148
|
+
'day':'Tag',
|
149
|
+
'days': 'Tage',
|
150
|
+
'apply': 'Schließen',
|
151
|
+
'week-1' : 'MO',
|
152
|
+
'week-2' : 'DI',
|
153
|
+
'week-3' : 'MI',
|
154
|
+
'week-4' : 'DO',
|
155
|
+
'week-5' : 'FR',
|
156
|
+
'week-6' : 'SA',
|
157
|
+
'week-7' : 'SO',
|
158
|
+
'month-name': ['JANUAR','FEBRUAR','MÄRZ','APRIL','MAI','JUNI','JULI','AUGUST','SEPTEMBER','OKTOBER','NOVEMBER','DEZEMBER'],
|
159
|
+
'shortcuts' : 'Schnellwahl',
|
160
|
+
'past': 'Vorherige',
|
161
|
+
'following':'Folgende',
|
162
|
+
'previous' : 'Vorherige',
|
163
|
+
'prev-week' : 'Woche',
|
164
|
+
'prev-month' : 'Monat',
|
165
|
+
'prev-year' : 'Jahr',
|
166
|
+
'next':'Nächste',
|
167
|
+
'next-week':'Woche',
|
168
|
+
'next-month':'Monat',
|
169
|
+
'next-year':'Jahr',
|
170
|
+
'less-than' : 'Datumsbereich darf nicht größer sein als %d Tage',
|
171
|
+
'more-than' : 'Datumsbereich darf nicht kleiner sein als %d Tage',
|
172
|
+
'default-more' : 'Bitte mindestens %d Tage auswählen',
|
173
|
+
'default-single' : 'Bitte ein Datum auswählen',
|
174
|
+
'default-less' : 'Bitte weniger als %d Tage auswählen',
|
175
|
+
'default-range' : 'Bitte einen Datumsbereich zwischen %d und %d Tagen auswählen',
|
176
|
+
'default-default': 'Bitte ein Start- und Enddatum auswählen'
|
177
|
+
},
|
178
|
+
'ru':
|
179
|
+
{
|
180
|
+
'selected': 'Выбрано:',
|
181
|
+
'day': 'День',
|
182
|
+
'days': 'Дней',
|
183
|
+
'apply': 'Закрыть',
|
184
|
+
'week-1': 'ПН',
|
185
|
+
'week-2': 'ВТ',
|
186
|
+
'week-3': 'СР',
|
187
|
+
'week-4': 'ЧТ',
|
188
|
+
'week-5': 'ПТ',
|
189
|
+
'week-6': 'СБ',
|
190
|
+
'week-7': 'ВС',
|
191
|
+
'month-name': ['ЯНВАРЬ','ФЕВРАЛЬ','МАРТ','АПРЕЛЬ','МАЙ','ИЮНЬ','ИЮЛЬ','АВГУСТ','СЕНТЯБРЬ','ОКТЯБРЬ','НОЯБРЬ','ДЕКАБРЬ'],
|
192
|
+
'shortcuts': 'Быстрый выбор',
|
193
|
+
'past': 'Прошедшие',
|
194
|
+
'following': 'Следующие',
|
195
|
+
'previous': ' ',
|
196
|
+
'prev-week': 'Неделя',
|
197
|
+
'prev-month': 'Месяц',
|
198
|
+
'prev-year': 'Год',
|
199
|
+
'next': ' ',
|
200
|
+
'next-week': 'Неделя',
|
201
|
+
'next-month': 'Месяц',
|
202
|
+
'next-year': 'Год',
|
203
|
+
'less-than': 'Диапазон не может быть больше %d дней',
|
204
|
+
'more-than': 'Диапазон не может быть меньше %d дней',
|
205
|
+
'default-more': 'Пожалуйста выберите диапазон больше %d дней',
|
206
|
+
'default-single': 'Пожалуйста выберите дату',
|
207
|
+
'default-less': 'Пожалуйста выберите диапазон меньше %d дней',
|
208
|
+
'default-range': 'Пожалуйста выберите диапазон между %d и %d днями',
|
209
|
+
'default-default': 'Пожалуйста выберите диапазон'
|
210
|
+
}
|
211
|
+
};
|
212
|
+
|
213
|
+
|
214
|
+
if (window['moment'] === undefined)
|
215
|
+
{
|
216
|
+
if (window['console'] && console['warn']) console.warn('Please import moment.js before daterangepicker.js');
|
217
|
+
return;
|
218
|
+
}
|
219
|
+
|
220
|
+
$.fn.dateRangePicker = function(opt)
|
221
|
+
{
|
222
|
+
if (!opt) opt = {};
|
223
|
+
opt = $.extend(true,
|
224
|
+
{
|
225
|
+
autoClose: false,
|
226
|
+
format: 'YYYY-MM-DD',
|
227
|
+
separator: ' to ',
|
228
|
+
language: 'auto',
|
229
|
+
startOfWeek: 'sunday',// or monday
|
230
|
+
getValue: function()
|
231
|
+
{
|
232
|
+
return $(this).val();
|
233
|
+
},
|
234
|
+
setValue: function(s)
|
235
|
+
{
|
236
|
+
$(this).val(s);
|
237
|
+
},
|
238
|
+
startDate: false,
|
239
|
+
endDate: false,
|
240
|
+
time: {
|
241
|
+
enabled: false
|
242
|
+
},
|
243
|
+
minDays: 0,
|
244
|
+
maxDays: 0,
|
245
|
+
showShortcuts: true,
|
246
|
+
shortcuts:
|
247
|
+
{
|
248
|
+
//'prev-days': [1,3,5,7],
|
249
|
+
'next-days': [3,5,7],
|
250
|
+
//'prev' : ['week','month','year'],
|
251
|
+
'next' : ['week','month','year']
|
252
|
+
},
|
253
|
+
customShortcuts : [],
|
254
|
+
inline:false,
|
255
|
+
container:'body',
|
256
|
+
alwaysOpen:false,
|
257
|
+
singleDate:false,
|
258
|
+
batchMode: false
|
259
|
+
},opt);
|
260
|
+
|
261
|
+
opt.start = false;
|
262
|
+
opt.end = false;
|
263
|
+
|
264
|
+
if (opt.startDate && typeof opt.startDate == 'string') opt.startDate = moment(opt.startDate,opt.format).toDate();
|
265
|
+
if (opt.endDate && typeof opt.endDate == 'string') opt.endDate = moment(opt.endDate,opt.format).toDate();
|
266
|
+
|
267
|
+
var langs = getLanguages();
|
268
|
+
var box;
|
269
|
+
var initiated = false;
|
270
|
+
var self = this;
|
271
|
+
var selfDom = $(self).get(0);
|
272
|
+
|
273
|
+
$(this).unbind('.datepicker').bind('click.datepicker',function(evt)
|
274
|
+
{
|
275
|
+
evt.stopPropagation();
|
276
|
+
open(200);
|
277
|
+
});
|
278
|
+
|
279
|
+
init_datepicker.call(this);
|
280
|
+
|
281
|
+
if (opt.alwaysOpen)
|
282
|
+
{
|
283
|
+
open(0);
|
284
|
+
}
|
285
|
+
|
286
|
+
// expose some api
|
287
|
+
$(this).data('dateRangePicker',
|
288
|
+
{
|
289
|
+
setDateRange : function(d1,d2)
|
290
|
+
{
|
291
|
+
if (typeof d1 == 'string' && typeof d2 == 'string')
|
292
|
+
{
|
293
|
+
d1 = moment(d1,opt.format).toDate();
|
294
|
+
d2 = moment(d2,opt.format).toDate();
|
295
|
+
}
|
296
|
+
setDateRange(d1,d2);
|
297
|
+
},
|
298
|
+
clear: clearSelection,
|
299
|
+
close: closeDatePicker,
|
300
|
+
open: open,
|
301
|
+
destroy: function()
|
302
|
+
{
|
303
|
+
$(self).unbind('.datepicker');
|
304
|
+
$(self).data('dateRangePicker','');
|
305
|
+
box.remove();
|
306
|
+
$(window).unbind('resize.datepicker',calcPosition);
|
307
|
+
$(document).unbind('click.datepicker',closeDatePicker);
|
308
|
+
}
|
309
|
+
});
|
310
|
+
|
311
|
+
$(window).bind('resize.datepicker',calcPosition);
|
312
|
+
|
313
|
+
return this;
|
314
|
+
|
315
|
+
|
316
|
+
|
317
|
+
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
function init_datepicker()
|
326
|
+
{
|
327
|
+
var self = this;
|
328
|
+
|
329
|
+
if ($(this).data('date-picker-opened'))
|
330
|
+
{
|
331
|
+
closeDatePicker();
|
332
|
+
return;
|
333
|
+
}
|
334
|
+
$(this).data('date-picker-opened',true);
|
335
|
+
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
|
340
|
+
box = createDom().hide();
|
341
|
+
$(opt.container).append(box);
|
342
|
+
|
343
|
+
if (!opt.inline)
|
344
|
+
{
|
345
|
+
calcPosition();
|
346
|
+
}
|
347
|
+
else
|
348
|
+
{
|
349
|
+
box.css({position:'static'});
|
350
|
+
}
|
351
|
+
|
352
|
+
if (opt.alwaysOpen)
|
353
|
+
{
|
354
|
+
box.find('.apply-btn').hide();
|
355
|
+
}
|
356
|
+
|
357
|
+
var defaultTime = new Date();
|
358
|
+
if (opt.startDate && compare_month(defaultTime,opt.startDate) < 0 ) defaultTime = moment(opt.startDate).toDate();
|
359
|
+
if (opt.endDate && compare_month(nextMonth(defaultTime),opt.endDate) > 0 ) defaultTime = prevMonth(moment(opt.endDate).toDate());
|
360
|
+
|
361
|
+
|
362
|
+
showMonth(defaultTime,'month1');
|
363
|
+
showMonth(nextMonth(defaultTime),'month2');
|
364
|
+
|
365
|
+
if (opt.time.enabled) {
|
366
|
+
if ((opt.startDate && opt.endDate) || (opt.start && opt.end)) {
|
367
|
+
showTime(moment(opt.start || opt.startDate).toDate(),'time1');
|
368
|
+
showTime(moment(opt.end || opt.endDate).toDate(),'time2');
|
369
|
+
} else {
|
370
|
+
showTime(defaultTime,'time1');
|
371
|
+
showTime(defaultTime,'time2');
|
372
|
+
}
|
373
|
+
}
|
374
|
+
|
375
|
+
//showSelectedInfo();
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
|
380
|
+
var defaultTopText = '';
|
381
|
+
if (opt.singleDate)
|
382
|
+
defaultTopText = lang('default-single');
|
383
|
+
else if (opt.minDays && opt.maxDays)
|
384
|
+
defaultTopText = lang('default-range');
|
385
|
+
else if (opt.minDays)
|
386
|
+
defaultTopText = lang('default-more');
|
387
|
+
else if (opt.maxDays)
|
388
|
+
defaultTopText = lang('default-less');
|
389
|
+
else
|
390
|
+
defaultTopText = lang('default-default');
|
391
|
+
|
392
|
+
box.find('.default-top').html( defaultTopText.replace(/\%d/,opt.minDays).replace(/\%d/,opt.maxDays));
|
393
|
+
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
setTimeout(function()
|
398
|
+
{
|
399
|
+
initiated = true;
|
400
|
+
},0);
|
401
|
+
|
402
|
+
box.click(function(evt)
|
403
|
+
{
|
404
|
+
evt.stopPropagation();
|
405
|
+
});
|
406
|
+
|
407
|
+
$(document).bind('click.datepicker',closeDatePicker);
|
408
|
+
|
409
|
+
box.find('.next').click(function()
|
410
|
+
{
|
411
|
+
var isMonth2 = $(this).parents('table').hasClass('month2');
|
412
|
+
var month = isMonth2 ? opt.month2 : opt.month1;
|
413
|
+
month = nextMonth(month);
|
414
|
+
if (!opt.singleDate && !isMonth2 && compare_month(month,opt.month2) >= 0) return;
|
415
|
+
showMonth(month,isMonth2 ? 'month2' : 'month1');
|
416
|
+
showGap();
|
417
|
+
});
|
418
|
+
|
419
|
+
box.find('.prev').click(function()
|
420
|
+
{
|
421
|
+
var isMonth2 = $(this).parents('table').hasClass('month2');
|
422
|
+
var month = isMonth2 ? opt.month2 : opt.month1;
|
423
|
+
month = prevMonth(month);
|
424
|
+
//if (isMonth2 && month.getFullYear()+''+month.getMonth() <= opt.month1.getFullYear()+''+opt.month1.getMonth()) return;
|
425
|
+
if (isMonth2 && compare_month(month,opt.month1) <= 0) return;
|
426
|
+
showMonth(month,isMonth2 ? 'month2' : 'month1');
|
427
|
+
showGap();
|
428
|
+
});
|
429
|
+
|
430
|
+
|
431
|
+
box.bind('click',function(evt)
|
432
|
+
{
|
433
|
+
if ($(evt.target).hasClass('day'))
|
434
|
+
{
|
435
|
+
dayClicked($(evt.target));
|
436
|
+
}
|
437
|
+
});
|
438
|
+
|
439
|
+
box.attr('unselectable', 'on')
|
440
|
+
.css('user-select', 'none')
|
441
|
+
.bind('selectstart', function(e)
|
442
|
+
{
|
443
|
+
e.preventDefault(); return false;
|
444
|
+
});
|
445
|
+
|
446
|
+
box.find('.apply-btn').click(function()
|
447
|
+
{
|
448
|
+
closeDatePicker();
|
449
|
+
var dateRange = getDateString(new Date(opt.start))+ opt.separator +getDateString(new Date(opt.end));
|
450
|
+
$(self).trigger('datepicker-apply',
|
451
|
+
{
|
452
|
+
'value': dateRange,
|
453
|
+
'date1' : new Date(opt.start),
|
454
|
+
'date2' : new Date(opt.end)
|
455
|
+
});
|
456
|
+
});
|
457
|
+
|
458
|
+
box.find('[shortcut]').click(function()
|
459
|
+
{
|
460
|
+
var shortcut = $(this).attr('shortcut');
|
461
|
+
var end = new Date(),start = false;
|
462
|
+
if (shortcut.indexOf('day') != -1)
|
463
|
+
{
|
464
|
+
var day = parseInt(shortcut.split(',',2)[1],10);
|
465
|
+
start = new Date(new Date().getTime() + 86400000*day);
|
466
|
+
end = new Date(end.getTime() + 86400000*(day>0?1:-1) );
|
467
|
+
}
|
468
|
+
else if (shortcut.indexOf('week')!= -1)
|
469
|
+
{
|
470
|
+
var dir = shortcut.indexOf('prev,') != -1 ? -1 : 1;
|
471
|
+
|
472
|
+
if (dir == 1)
|
473
|
+
var stopDay = opt.startOfWeek == 'monday' ? 1 : 0;
|
474
|
+
else
|
475
|
+
var stopDay = opt.startOfWeek == 'monday' ? 0 : 6;
|
476
|
+
|
477
|
+
end = new Date(end.getTime() - 86400000);
|
478
|
+
while(end.getDay() != stopDay) end = new Date(end.getTime() + dir*86400000);
|
479
|
+
start = new Date(end.getTime() + dir*86400000*6);
|
480
|
+
}
|
481
|
+
else if (shortcut.indexOf('month') != -1)
|
482
|
+
{
|
483
|
+
var dir = shortcut.indexOf('prev,') != -1 ? -1 : 1;
|
484
|
+
if (dir == 1)
|
485
|
+
start = nextMonth(end);
|
486
|
+
else
|
487
|
+
start = prevMonth(end);
|
488
|
+
start.setDate(1);
|
489
|
+
end = nextMonth(start);
|
490
|
+
end.setDate(1);
|
491
|
+
end = new Date(end.getTime() - 86400000);
|
492
|
+
}
|
493
|
+
else if (shortcut.indexOf('year') != -1)
|
494
|
+
{
|
495
|
+
var dir = shortcut.indexOf('prev,') != -1 ? -1 : 1;
|
496
|
+
start = new Date();
|
497
|
+
start.setFullYear(end.getFullYear() + dir);
|
498
|
+
start.setMonth(0);
|
499
|
+
start.setDate(1);
|
500
|
+
end.setFullYear(end.getFullYear() + dir);
|
501
|
+
end.setMonth(11);
|
502
|
+
end.setDate(31);
|
503
|
+
}
|
504
|
+
else if (shortcut == 'custom')
|
505
|
+
{
|
506
|
+
var name = $(this).html();
|
507
|
+
if (opt.customShortcuts && opt.customShortcuts.length > 0)
|
508
|
+
{
|
509
|
+
for(var i=0;i<opt.customShortcuts.length;i++)
|
510
|
+
{
|
511
|
+
var sh = opt.customShortcuts[i];
|
512
|
+
if (sh.name == name)
|
513
|
+
{
|
514
|
+
var data = [];
|
515
|
+
// try
|
516
|
+
// {
|
517
|
+
data = sh['dates'].call();
|
518
|
+
//}catch(e){}
|
519
|
+
if (data && data.length == 2)
|
520
|
+
{
|
521
|
+
start = data[0];
|
522
|
+
end = data[1];
|
523
|
+
}
|
524
|
+
|
525
|
+
// if only one date is specified then just move calendars there
|
526
|
+
// move calendars to show this date's month and next months
|
527
|
+
if (data && data.length == 1)
|
528
|
+
{
|
529
|
+
movetodate = data[0];
|
530
|
+
showMonth(movetodate,'month1');
|
531
|
+
showMonth(nextMonth(movetodate),'month2');
|
532
|
+
showGap();
|
533
|
+
}
|
534
|
+
|
535
|
+
break;
|
536
|
+
}
|
537
|
+
}
|
538
|
+
}
|
539
|
+
}
|
540
|
+
if (start && end)
|
541
|
+
{
|
542
|
+
setDateRange(start,end);
|
543
|
+
checkSelectionValid();
|
544
|
+
}
|
545
|
+
});
|
546
|
+
|
547
|
+
box.find(".time1 input[type=range]").bind("change mousemove", function (e) {
|
548
|
+
var target = e.target,
|
549
|
+
hour = target.name == "hour" ? $(target).val().replace(/^(\d{1})$/, "0$1") : undefined,
|
550
|
+
min = target.name == "minute" ? $(target).val().replace(/^(\d{1})$/, "0$1") : undefined;
|
551
|
+
setTime("time1", hour, min);
|
552
|
+
});
|
553
|
+
|
554
|
+
box.find(".time2 input[type=range]").bind("change mousemove", function (e) {
|
555
|
+
var target = e.target,
|
556
|
+
hour = target.name == "hour" ? $(target).val().replace(/^(\d{1})$/, "0$1") : undefined,
|
557
|
+
min = target.name == "minute" ? $(target).val().replace(/^(\d{1})$/, "0$1") : undefined;
|
558
|
+
setTime("time2", hour, min);
|
559
|
+
});
|
560
|
+
|
561
|
+
}
|
562
|
+
|
563
|
+
|
564
|
+
function calcPosition()
|
565
|
+
{
|
566
|
+
if (!opt.inline)
|
567
|
+
{
|
568
|
+
var offset = $(self).offset();
|
569
|
+
if (offset.left < 460) //left to right
|
570
|
+
{
|
571
|
+
box.css(
|
572
|
+
{
|
573
|
+
top: offset.top+$(self).outerHeight() + parseInt($('body').css('border-top') || 0,10 ),
|
574
|
+
left: offset.left
|
575
|
+
});
|
576
|
+
}
|
577
|
+
else
|
578
|
+
{
|
579
|
+
box.css(
|
580
|
+
{
|
581
|
+
top: offset.top+$(self).outerHeight() + parseInt($('body').css('border-top') || 0,10 ),
|
582
|
+
left: offset.left + $(self).width() - box.width() - 16
|
583
|
+
});
|
584
|
+
}
|
585
|
+
}
|
586
|
+
}
|
587
|
+
|
588
|
+
function open(animationTime)
|
589
|
+
{
|
590
|
+
calcPosition();
|
591
|
+
var __default_string = opt.getValue.call(selfDom);
|
592
|
+
var defaults = __default_string ? __default_string.split( opt.separator ) : '';
|
593
|
+
|
594
|
+
if (defaults && defaults.length >= 2)
|
595
|
+
{
|
596
|
+
var ___format = opt.format;
|
597
|
+
if (___format.match(/Do/))
|
598
|
+
{
|
599
|
+
___format = ___format.replace(/Do/,'D');
|
600
|
+
defaults[0] = defaults[0].replace(/(\d+)(th|nd|st)/,'$1');
|
601
|
+
defaults[1] = defaults[1].replace(/(\d+)(th|nd|st)/,'$1');
|
602
|
+
}
|
603
|
+
// set initiated to avoid triggerring datepicker-change event
|
604
|
+
initiated = false;
|
605
|
+
setDateRange(moment(defaults[0], ___format).toDate(),moment(defaults[1], ___format).toDate());
|
606
|
+
initiated = true;
|
607
|
+
}
|
608
|
+
box.slideDown(animationTime);
|
609
|
+
}
|
610
|
+
|
611
|
+
|
612
|
+
|
613
|
+
function renderTime (name, date) {
|
614
|
+
box.find("." + name + " input[type=range].hour-range").val(moment(date).hours());
|
615
|
+
box.find("." + name + " input[type=range].minute-range").val(moment(date).minutes());
|
616
|
+
setTime(name, moment(date).format("HH"), moment(date).format("mm"));
|
617
|
+
}
|
618
|
+
|
619
|
+
function changeTime (name, date) {
|
620
|
+
opt[name] = parseInt(
|
621
|
+
moment(parseInt(date))
|
622
|
+
.startOf('day')
|
623
|
+
.add('h', moment(opt[name + "Time"]).format("HH"))
|
624
|
+
.add('m', moment(opt[name + "Time"]).format("mm")).valueOf()
|
625
|
+
);
|
626
|
+
}
|
627
|
+
|
628
|
+
function swapTime () {
|
629
|
+
renderTime("time1", opt.start);
|
630
|
+
renderTime("time2", opt.end);
|
631
|
+
}
|
632
|
+
|
633
|
+
function setTime (name, hour, minute) {
|
634
|
+
hour && (box.find("." + name + " .hour-val").text(hour));
|
635
|
+
minute && (box.find("." + name + " .minute-val").text(minute));
|
636
|
+
switch (name) {
|
637
|
+
case "time1":
|
638
|
+
if (opt.start) {
|
639
|
+
setRange("start", moment(opt.start));
|
640
|
+
}
|
641
|
+
setRange("startTime", moment(opt.startTime || moment().valueOf()));
|
642
|
+
break;
|
643
|
+
case "time2":
|
644
|
+
if (opt.end) {
|
645
|
+
setRange("end", moment(opt.end));
|
646
|
+
}
|
647
|
+
setRange("endTime", moment(opt.endTime || moment().valueOf()));
|
648
|
+
break;
|
649
|
+
}
|
650
|
+
function setRange(name, timePoint) {
|
651
|
+
var h = timePoint.format("HH"),
|
652
|
+
m = timePoint.format("mm");
|
653
|
+
opt[name] = timePoint
|
654
|
+
.startOf('day')
|
655
|
+
.add("h", hour || h)
|
656
|
+
.add("m", minute || m)
|
657
|
+
.valueOf();
|
658
|
+
}
|
659
|
+
checkSelectionValid();
|
660
|
+
showSelectedInfo();
|
661
|
+
showSelectedDays();
|
662
|
+
}
|
663
|
+
|
664
|
+
function clearSelection()
|
665
|
+
{
|
666
|
+
opt.start = false;
|
667
|
+
opt.end = false;
|
668
|
+
box.find('.day.checked').removeClass('checked');
|
669
|
+
opt.setValue.call(selfDom, '');
|
670
|
+
checkSelectionValid();
|
671
|
+
showSelectedInfo();
|
672
|
+
showSelectedDays();
|
673
|
+
}
|
674
|
+
|
675
|
+
function handleStart(time)
|
676
|
+
{
|
677
|
+
var r = time;
|
678
|
+
if (opt.batchMode === 'week-range') {
|
679
|
+
if (opt.startOfWeek === 'monday') {
|
680
|
+
r = moment(parseInt(time)).startOf('isoweek').valueOf();
|
681
|
+
} else {
|
682
|
+
r = moment(parseInt(time)).startOf('week').valueOf();
|
683
|
+
}
|
684
|
+
} else if (opt.batchMode === 'month-range') {
|
685
|
+
r = moment(parseInt(time)).startOf('month').valueOf();
|
686
|
+
}
|
687
|
+
|
688
|
+
return r;
|
689
|
+
}
|
690
|
+
|
691
|
+
function handleEnd(time)
|
692
|
+
{
|
693
|
+
var r = time;
|
694
|
+
if (opt.batchMode === 'week-range') {
|
695
|
+
if (opt.startOfWeek === 'monday') {
|
696
|
+
r = moment(parseInt(time)).endOf('isoweek').valueOf();
|
697
|
+
} else {
|
698
|
+
r = moment(parseInt(time)).endOf('week').valueOf();
|
699
|
+
}
|
700
|
+
} else if (opt.batchMode === 'month') {
|
701
|
+
r = moment(parseInt(time)).endOf('month').valueOf();
|
702
|
+
}
|
703
|
+
|
704
|
+
return r;
|
705
|
+
}
|
706
|
+
|
707
|
+
|
708
|
+
function dayClicked(day)
|
709
|
+
{
|
710
|
+
if (day.hasClass('invalid')) return;
|
711
|
+
var time = day.attr('time');
|
712
|
+
day.addClass('checked');
|
713
|
+
if ( opt.singleDate )
|
714
|
+
{
|
715
|
+
opt.start = time;
|
716
|
+
opt.end = false;
|
717
|
+
if (opt.time.enabled) {
|
718
|
+
changeTime("start", opt.start);
|
719
|
+
}
|
720
|
+
}
|
721
|
+
else if (opt.batchMode === 'week')
|
722
|
+
{
|
723
|
+
if (opt.startOfWeek === 'monday') {
|
724
|
+
opt.start = moment(parseInt(time)).startOf('isoweek').valueOf();
|
725
|
+
opt.end = moment(parseInt(time)).endOf('isoweek').valueOf();
|
726
|
+
} else {
|
727
|
+
opt.end = moment(parseInt(time)).endOf('week').valueOf();
|
728
|
+
opt.start = moment(parseInt(time)).startOf('week').valueOf();
|
729
|
+
}
|
730
|
+
}
|
731
|
+
else if (opt.batchMode === 'month')
|
732
|
+
{
|
733
|
+
opt.start = moment(parseInt(time)).startOf('month').valueOf();
|
734
|
+
opt.end = moment(parseInt(time)).endOf('month').valueOf();
|
735
|
+
}
|
736
|
+
else if ((opt.start && opt.end) || (!opt.start && !opt.end) )
|
737
|
+
{
|
738
|
+
opt.start = handleStart(time);
|
739
|
+
opt.end = false;
|
740
|
+
if (opt.time.enabled) {
|
741
|
+
changeTime("start", opt.start);
|
742
|
+
}
|
743
|
+
}
|
744
|
+
else if (opt.start)
|
745
|
+
{
|
746
|
+
opt.end = handleEnd(time);
|
747
|
+
if (opt.time.enabled) {
|
748
|
+
changeTime("end", opt.end);
|
749
|
+
}
|
750
|
+
}
|
751
|
+
|
752
|
+
if (!opt.singleDate && opt.start && opt.end && opt.start > opt.end)
|
753
|
+
{
|
754
|
+
var tmp = opt.end;
|
755
|
+
opt.end = handleEnd(opt.start);
|
756
|
+
opt.start = handleStart(tmp);
|
757
|
+
if (opt.time.enabled) {
|
758
|
+
swapTime();
|
759
|
+
}
|
760
|
+
}
|
761
|
+
|
762
|
+
opt.start = parseInt(opt.start);
|
763
|
+
opt.end = parseInt(opt.end);
|
764
|
+
|
765
|
+
checkSelectionValid();
|
766
|
+
showSelectedInfo();
|
767
|
+
showSelectedDays();
|
768
|
+
autoclose();
|
769
|
+
}
|
770
|
+
|
771
|
+
function autoclose () {
|
772
|
+
if (opt.singleDate === true) {
|
773
|
+
if (initiated && opt.start )
|
774
|
+
{
|
775
|
+
if (opt.autoClose) closeDatePicker();
|
776
|
+
}
|
777
|
+
} else {
|
778
|
+
if (initiated && opt.start && opt.end)
|
779
|
+
{
|
780
|
+
if (opt.autoClose) closeDatePicker();
|
781
|
+
}
|
782
|
+
}
|
783
|
+
}
|
784
|
+
|
785
|
+
function checkSelectionValid()
|
786
|
+
{
|
787
|
+
var days = Math.ceil( (opt.end - opt.start) / 86400000 ) + 1;
|
788
|
+
if (opt.singleDate) { // Validate if only start is there
|
789
|
+
if (opt.start && !opt.end)
|
790
|
+
box.find('.drp_top-bar').removeClass('error').addClass('normal');
|
791
|
+
else
|
792
|
+
box.find('.drp_top-bar').removeClass('error').removeClass('normal');
|
793
|
+
}
|
794
|
+
else if ( opt.maxDays && days > opt.maxDays)
|
795
|
+
{
|
796
|
+
opt.start = false;
|
797
|
+
opt.end = false;
|
798
|
+
box.find('.day').removeClass('checked');
|
799
|
+
box.find('.drp_top-bar').removeClass('normal').addClass('error').find('.error-top').html( lang('less-than').replace('%d',opt.maxDays) );
|
800
|
+
}
|
801
|
+
else if ( opt.minDays && days < opt.minDays)
|
802
|
+
{
|
803
|
+
opt.start = false;
|
804
|
+
opt.end = false;
|
805
|
+
box.find('.day').removeClass('checked');
|
806
|
+
box.find('.drp_top-bar').removeClass('normal').addClass('error').find('.error-top').html( lang('more-than').replace('%d',opt.minDays) );
|
807
|
+
}
|
808
|
+
else
|
809
|
+
{
|
810
|
+
if (opt.start || opt.end)
|
811
|
+
box.find('.drp_top-bar').removeClass('error').addClass('normal');
|
812
|
+
else
|
813
|
+
box.find('.drp_top-bar').removeClass('error').removeClass('normal');
|
814
|
+
}
|
815
|
+
|
816
|
+
if ( (opt.singleDate && opt.start && !opt.end) || (!opt.singleDate && opt.start && opt.end) )
|
817
|
+
{
|
818
|
+
box.find('.apply-btn').removeClass('disabled');
|
819
|
+
}
|
820
|
+
else
|
821
|
+
{
|
822
|
+
box.find('.apply-btn').addClass('disabled');
|
823
|
+
}
|
824
|
+
|
825
|
+
if (opt.batchMode)
|
826
|
+
{
|
827
|
+
if ( (opt.start && opt.startDate && compare_day(opt.start, opt.startDate) < 0)
|
828
|
+
|| (opt.end && opt.endDate && compare_day(opt.end, opt.endDate) > 0) )
|
829
|
+
{
|
830
|
+
opt.start = false;
|
831
|
+
opt.end = false;
|
832
|
+
box.find('.day').removeClass('checked');
|
833
|
+
}
|
834
|
+
}
|
835
|
+
}
|
836
|
+
|
837
|
+
function showSelectedInfo()
|
838
|
+
{
|
839
|
+
box.find('.start-day').html('...');
|
840
|
+
box.find('.end-day').html('...');
|
841
|
+
box.find('.selected-days').hide();
|
842
|
+
if (opt.start)
|
843
|
+
{
|
844
|
+
box.find('.start-day').html(getDateString(new Date(parseInt(opt.start))));
|
845
|
+
}
|
846
|
+
if (opt.end)
|
847
|
+
{
|
848
|
+
box.find('.end-day').html(getDateString(new Date(parseInt(opt.end))));
|
849
|
+
}
|
850
|
+
|
851
|
+
if (opt.start && opt.singleDate)
|
852
|
+
{
|
853
|
+
box.find('.apply-btn').removeClass('disabled');
|
854
|
+
var dateRange = getDateString(new Date(opt.start));
|
855
|
+
opt.setValue.call(selfDom, dateRange, getDateString(new Date(opt.start)), getDateString(new Date(opt.end)));
|
856
|
+
|
857
|
+
if (initiated)
|
858
|
+
{
|
859
|
+
$(self).trigger('datepicker-change',
|
860
|
+
{
|
861
|
+
'value': dateRange,
|
862
|
+
'date1' : new Date(opt.start)
|
863
|
+
});
|
864
|
+
}
|
865
|
+
}
|
866
|
+
else if (opt.start && opt.end)
|
867
|
+
{
|
868
|
+
box.find('.selected-days').show().find('.selected-days-num').html(Math.round((opt.end-opt.start)/86400000)+1);
|
869
|
+
box.find('.apply-btn').removeClass('disabled');
|
870
|
+
var dateRange = getDateString(new Date(opt.start))+ opt.separator +getDateString(new Date(opt.end));
|
871
|
+
opt.setValue.call(selfDom,dateRange, getDateString(new Date(opt.start)), getDateString(new Date(opt.end)));
|
872
|
+
if (initiated)
|
873
|
+
{
|
874
|
+
$(self).trigger('datepicker-change',
|
875
|
+
{
|
876
|
+
'value': dateRange,
|
877
|
+
'date1' : new Date(opt.start),
|
878
|
+
'date2' : new Date(opt.end)
|
879
|
+
});
|
880
|
+
}
|
881
|
+
}
|
882
|
+
else
|
883
|
+
{
|
884
|
+
box.find('.apply-btn').addClass('disabled');
|
885
|
+
}
|
886
|
+
}
|
887
|
+
|
888
|
+
function setDateRange(date1,date2)
|
889
|
+
{
|
890
|
+
if (date1.getTime() > date2.getTime())
|
891
|
+
{
|
892
|
+
var tmp = date2;
|
893
|
+
date2 = date1;
|
894
|
+
date1 = tmp;
|
895
|
+
tmp = null;
|
896
|
+
}
|
897
|
+
var valid = true;
|
898
|
+
if (opt.startDate && compare_day(date1,opt.startDate) < 0) valid = false;
|
899
|
+
if (opt.endDate && compare_day(date2,opt.endDate) > 0) valid = false;
|
900
|
+
if (!valid)
|
901
|
+
{
|
902
|
+
showMonth(opt.startDate,'month1');
|
903
|
+
showMonth(nextMonth(opt.startDate),'month2');
|
904
|
+
showGap();
|
905
|
+
return;
|
906
|
+
}
|
907
|
+
|
908
|
+
opt.start = date1.getTime();
|
909
|
+
opt.end = date2.getTime();
|
910
|
+
if (compare_month(date1,date2) == 0)
|
911
|
+
{
|
912
|
+
date2 = nextMonth(date1);
|
913
|
+
}
|
914
|
+
if (opt.time.enabled) {
|
915
|
+
renderTime("time1", date1);
|
916
|
+
renderTime("time2", date2);
|
917
|
+
}
|
918
|
+
showMonth(date1,'month1');
|
919
|
+
showMonth(date2,'month2');
|
920
|
+
showGap();
|
921
|
+
showSelectedInfo();
|
922
|
+
autoclose();
|
923
|
+
}
|
924
|
+
|
925
|
+
function showSelectedDays()
|
926
|
+
{
|
927
|
+
if (!opt.start && !opt.end) return;
|
928
|
+
box.find('.day').each(function()
|
929
|
+
{
|
930
|
+
var time = parseInt($(this).attr('time')),
|
931
|
+
start = opt.start,
|
932
|
+
end = opt.end;
|
933
|
+
if (opt.time.enabled) {
|
934
|
+
time = moment(time).startOf('day').valueOf();
|
935
|
+
start = moment(start || moment().valueOf()).startOf('day').valueOf();
|
936
|
+
end = moment(end || moment().valueOf()).startOf('day').valueOf();
|
937
|
+
}
|
938
|
+
if (
|
939
|
+
(opt.start && opt.end && end >= time && start <= time )
|
940
|
+
|| ( opt.start && !opt.end && moment(start).format('YYYY-MM-DD') == moment(time).format('YYYY-MM-DD') )
|
941
|
+
)
|
942
|
+
{
|
943
|
+
$(this).addClass('checked');
|
944
|
+
}
|
945
|
+
else
|
946
|
+
{
|
947
|
+
$(this).removeClass('checked');
|
948
|
+
}
|
949
|
+
});
|
950
|
+
}
|
951
|
+
|
952
|
+
function showMonth(date,month)
|
953
|
+
{
|
954
|
+
date = moment(date).toDate();
|
955
|
+
var monthName = nameMonth(date.getMonth());
|
956
|
+
box.find('.'+month+' .month-name').html(monthName+' '+date.getFullYear());
|
957
|
+
box.find('.'+month+' tbody').html(createMonthHTML(date));
|
958
|
+
opt[month] = date;
|
959
|
+
}
|
960
|
+
|
961
|
+
function showTime(date,name)
|
962
|
+
{
|
963
|
+
box.find('.' + name).append(getTimeHTML());
|
964
|
+
renderTime(name, date);
|
965
|
+
}
|
966
|
+
|
967
|
+
function nameMonth(m)
|
968
|
+
{
|
969
|
+
return lang('month-name')[m];
|
970
|
+
}
|
971
|
+
|
972
|
+
function getDateString(d)
|
973
|
+
{
|
974
|
+
return moment(d).format(opt.format);
|
975
|
+
}
|
976
|
+
|
977
|
+
function showGap()
|
978
|
+
{
|
979
|
+
showSelectedDays();
|
980
|
+
var m1 = parseInt(moment(opt.month1).format('YYYYMM'));
|
981
|
+
var m2 = parseInt(moment(opt.month2).format('YYYYMM'));
|
982
|
+
var p = Math.abs(m1 - m2);
|
983
|
+
var shouldShow = (p > 1 && p !=89);
|
984
|
+
if (shouldShow)
|
985
|
+
box.find('.gap').show();
|
986
|
+
else
|
987
|
+
box.find('.gap').hide();
|
988
|
+
}
|
989
|
+
|
990
|
+
function closeDatePicker()
|
991
|
+
{
|
992
|
+
if (opt.alwaysOpen) return;
|
993
|
+
$(box).slideUp(200,function()
|
994
|
+
{
|
995
|
+
$(self).data('date-picker-opened',false);
|
996
|
+
});
|
997
|
+
//$(document).unbind('.datepicker');
|
998
|
+
$(self).trigger('datepicker-close');
|
999
|
+
}
|
1000
|
+
|
1001
|
+
function compare_month(m1,m2)
|
1002
|
+
{
|
1003
|
+
var p = parseInt(moment(m1).format('YYYYMM')) - parseInt(moment(m2).format('YYYYMM'));
|
1004
|
+
if (p > 0 ) return 1;
|
1005
|
+
if (p == 0) return 0;
|
1006
|
+
return -1;
|
1007
|
+
}
|
1008
|
+
|
1009
|
+
function compare_day(m1,m2)
|
1010
|
+
{
|
1011
|
+
var p = parseInt(moment(m1).format('YYYYMMDD')) - parseInt(moment(m2).format('YYYYMMDD'));
|
1012
|
+
if (p > 0 ) return 1;
|
1013
|
+
if (p == 0) return 0;
|
1014
|
+
return -1;
|
1015
|
+
}
|
1016
|
+
|
1017
|
+
function nextMonth(month)
|
1018
|
+
{
|
1019
|
+
month = moment(month).toDate();
|
1020
|
+
var toMonth = month.getMonth();
|
1021
|
+
while(month.getMonth() == toMonth) month = new Date(month.getTime()+86400000);
|
1022
|
+
return month;
|
1023
|
+
}
|
1024
|
+
|
1025
|
+
function prevMonth(month)
|
1026
|
+
{
|
1027
|
+
month = moment(month).toDate();
|
1028
|
+
var toMonth = month.getMonth();
|
1029
|
+
while(month.getMonth() == toMonth) month = new Date(month.getTime()-86400000);
|
1030
|
+
return month;
|
1031
|
+
}
|
1032
|
+
|
1033
|
+
function getTimeHTML()
|
1034
|
+
{
|
1035
|
+
var timeHtml = '<div>'
|
1036
|
+
+'<span>Time: <span class="hour-val">00</span>:<span class="minute-val">00</span></span>'
|
1037
|
+
+'</div>'
|
1038
|
+
+'<div class="hour">'
|
1039
|
+
+'<label>Hour: <input type="range" class="hour-range" name="hour" min="0" max="23"></label>'
|
1040
|
+
+'</div>'
|
1041
|
+
+'<div class="minute">'
|
1042
|
+
+'<label>Minute: <input type="range" class="minute-range" name="minute" min="0" max="59"></label>'
|
1043
|
+
+'</div>';
|
1044
|
+
return timeHtml;
|
1045
|
+
}
|
1046
|
+
|
1047
|
+
function createDom()
|
1048
|
+
{
|
1049
|
+
var html = '<div class="date-picker-wrapper'
|
1050
|
+
if ( opt.singleDate ) html += ' single-date';
|
1051
|
+
if ( !opt.showShortcuts ) html += ' no-shortcuts ';
|
1052
|
+
html += '">'
|
1053
|
+
+'<div class="drp_top-bar">\
|
1054
|
+
<div class="normal-top">\
|
1055
|
+
<span style="color:#333">'+lang('selected')+' </span> <b class="start-day">...</b>'
|
1056
|
+
if ( ! opt.singleDate ) {
|
1057
|
+
html += ' <span class="separator-day">'+opt.separator+'</span> <b class="end-day">...</b> <i class="selected-days">(<span class="selected-days-num">3</span> '+lang('days')+')</i>'
|
1058
|
+
}
|
1059
|
+
html += '</div>\
|
1060
|
+
<div class="error-top">error</div>\
|
1061
|
+
<div class="default-top">default</div>\
|
1062
|
+
<input type="button" class="apply-btn disabled '+ getHideClass() +'" value="'+lang('apply')+'" />\
|
1063
|
+
</div>'
|
1064
|
+
+'<div class="month-wrapper">'
|
1065
|
+
+'<table class="month1" cellspacing="0" border="0" cellpadding="0"><thead><tr class="caption"><th style="width:27px;"><span class="prev"><</span></th><th colspan="5" class="month-name">January, 2011</th><th style="width:27px;"><span class="next">></span></th></tr><tr class="week-name">'+getWeekHead()+'</thead><tbody></tbody></table>'
|
1066
|
+
if ( ! opt.singleDate ) {
|
1067
|
+
html += '<div class="gap">'+getGapHTML()+'</div>'
|
1068
|
+
+'<table class="month2" cellspacing="0" border="0" cellpadding="0"><thead><tr class="caption"><th style="width:27px;"><span class="prev"><</span></th><th colspan="5" class="month-name">January, 2011</th><th style="width:27px;"><span class="next">></span></th></tr><tr class="week-name">'+getWeekHead()+'</thead><tbody></tbody></table>'
|
1069
|
+
}
|
1070
|
+
//+'</div>'
|
1071
|
+
html += '<div style="clear:both;height:0;font-size:0;"></div>'
|
1072
|
+
+'<div class="time">'
|
1073
|
+
+'<div class="time1"></div>'
|
1074
|
+
if ( ! opt.singleDate ) {
|
1075
|
+
html += '<div class="time2"></div>'
|
1076
|
+
}
|
1077
|
+
html += '</div>'
|
1078
|
+
+'<div style="clear:both;height:0;font-size:0;"></div>'
|
1079
|
+
+'</div>';
|
1080
|
+
|
1081
|
+
if (opt.showShortcuts)
|
1082
|
+
{
|
1083
|
+
html += '<div class="footer"><b>'+lang('shortcuts')+'</b>';
|
1084
|
+
|
1085
|
+
var data = opt.shortcuts;
|
1086
|
+
if (data)
|
1087
|
+
{
|
1088
|
+
if (data['prev-days'] && data['prev-days'].length > 0)
|
1089
|
+
{
|
1090
|
+
html += ' <span class="prev-days">'+lang('past');
|
1091
|
+
for(var i=0;i<data['prev-days'].length; i++)
|
1092
|
+
{
|
1093
|
+
var name = data['prev-days'][i];
|
1094
|
+
name += (data['prev-days'][i] > 1) ? lang('days') : lang('day');
|
1095
|
+
html += ' <a href="javascript:;" shortcut="day,-'+data['prev-days'][i]+'">'+name+'</a>';
|
1096
|
+
}
|
1097
|
+
html+='</span>';
|
1098
|
+
}
|
1099
|
+
|
1100
|
+
if (data['next-days'] && data['next-days'].length > 0)
|
1101
|
+
{
|
1102
|
+
html += ' <span class="next-days">'+lang('following');
|
1103
|
+
for(var i=0;i<data['next-days'].length; i++)
|
1104
|
+
{
|
1105
|
+
var name = data['next-days'][i];
|
1106
|
+
name += (data['next-days'][i] > 1) ? lang('days') : lang('day');
|
1107
|
+
html += ' <a href="javascript:;" shortcut="day,'+data['next-days'][i]+'">'+name+'</a>';
|
1108
|
+
}
|
1109
|
+
html+= '</span>';
|
1110
|
+
}
|
1111
|
+
|
1112
|
+
if (data['prev'] && data['prev'].length > 0)
|
1113
|
+
{
|
1114
|
+
html += ' <span class="prev-buttons">'+lang('previous');
|
1115
|
+
for(var i=0;i<data['prev'].length; i++)
|
1116
|
+
{
|
1117
|
+
var name = lang('prev-'+data['prev'][i]);
|
1118
|
+
html += ' <a href="javascript:;" shortcut="prev,'+data['prev'][i]+'">'+name+'</a>';
|
1119
|
+
}
|
1120
|
+
html+='</span>';
|
1121
|
+
}
|
1122
|
+
|
1123
|
+
if (data['next'] && data['next'].length > 0)
|
1124
|
+
{
|
1125
|
+
html += ' <span class="next-buttons">'+lang('next');
|
1126
|
+
for(var i=0;i<data['next'].length; i++)
|
1127
|
+
{
|
1128
|
+
var name = lang('next-'+data['next'][i]);
|
1129
|
+
html += ' <a href="javascript:;" shortcut="next,'+data['next'][i]+'">'+name+'</a>';
|
1130
|
+
}
|
1131
|
+
html+='</span>';
|
1132
|
+
}
|
1133
|
+
}
|
1134
|
+
|
1135
|
+
if (opt.customShortcuts)
|
1136
|
+
{
|
1137
|
+
for(var i=0;i<opt.customShortcuts.length; i++)
|
1138
|
+
{
|
1139
|
+
var sh = opt.customShortcuts[i];
|
1140
|
+
html+= ' <span class="custom-shortcut"><a href="javascript:;" shortcut="custom">'+sh.name+'</a></span>';
|
1141
|
+
}
|
1142
|
+
}
|
1143
|
+
|
1144
|
+
html +='</div>';
|
1145
|
+
}
|
1146
|
+
html += '</div>';
|
1147
|
+
|
1148
|
+
|
1149
|
+
return $(html);
|
1150
|
+
}
|
1151
|
+
|
1152
|
+
function getHideClass()
|
1153
|
+
{
|
1154
|
+
if (opt.autoClose === true) {
|
1155
|
+
return 'hide';
|
1156
|
+
}
|
1157
|
+
return '';
|
1158
|
+
}
|
1159
|
+
|
1160
|
+
function getWeekHead()
|
1161
|
+
{
|
1162
|
+
if (opt.startOfWeek == 'monday')
|
1163
|
+
{
|
1164
|
+
return '<th>'+lang('week-1')+'</th>\
|
1165
|
+
<th>'+lang('week-2')+'</th>\
|
1166
|
+
<th>'+lang('week-3')+'</th>\
|
1167
|
+
<th>'+lang('week-4')+'</th>\
|
1168
|
+
<th>'+lang('week-5')+'</th>\
|
1169
|
+
<th>'+lang('week-6')+'</th>\
|
1170
|
+
<th>'+lang('week-7')+'</th>';
|
1171
|
+
}
|
1172
|
+
else
|
1173
|
+
{
|
1174
|
+
return '<th>'+lang('week-7')+'</th>\
|
1175
|
+
<th>'+lang('week-1')+'</th>\
|
1176
|
+
<th>'+lang('week-2')+'</th>\
|
1177
|
+
<th>'+lang('week-3')+'</th>\
|
1178
|
+
<th>'+lang('week-4')+'</th>\
|
1179
|
+
<th>'+lang('week-5')+'</th>\
|
1180
|
+
<th>'+lang('week-6')+'</th>';
|
1181
|
+
}
|
1182
|
+
}
|
1183
|
+
|
1184
|
+
function getGapHTML()
|
1185
|
+
{
|
1186
|
+
var html = ['<div class="gap-top-mask"></div><div class="gap-bottom-mask"></div><div class="gap-lines">'];
|
1187
|
+
for(var i=0;i<20;i++)
|
1188
|
+
{
|
1189
|
+
html.push('<div class="gap-line">\
|
1190
|
+
<div class="gap-1"></div>\
|
1191
|
+
<div class="gap-2"></div>\
|
1192
|
+
<div class="gap-3"></div>\
|
1193
|
+
</div>');
|
1194
|
+
}
|
1195
|
+
html.push('</div>');
|
1196
|
+
return html.join('');
|
1197
|
+
}
|
1198
|
+
|
1199
|
+
function createMonthHTML(d)
|
1200
|
+
{
|
1201
|
+
var days = [];
|
1202
|
+
d.setDate(1);
|
1203
|
+
var lastMonth = new Date(d.getTime() - 86400000);
|
1204
|
+
var now = new Date();
|
1205
|
+
|
1206
|
+
var dayOfWeek = d.getDay();
|
1207
|
+
if((dayOfWeek == 0) && (opt.startOfWeek == 'monday')) {
|
1208
|
+
// add one week
|
1209
|
+
dayOfWeek = 7;
|
1210
|
+
}
|
1211
|
+
|
1212
|
+
if (dayOfWeek > 0)
|
1213
|
+
{
|
1214
|
+
for (var i = dayOfWeek; i > 0; i--)
|
1215
|
+
{
|
1216
|
+
var day = new Date(d.getTime() - 86400000*i);
|
1217
|
+
var valid = true;
|
1218
|
+
if (opt.startDate && compare_day(day,opt.startDate) < 0) valid = false;
|
1219
|
+
if (opt.endDate && compare_day(day,opt.endDate) > 0) valid = false;
|
1220
|
+
days.push({type:'lastMonth',day: day.getDate(),time:day.getTime(), valid:valid });
|
1221
|
+
}
|
1222
|
+
}
|
1223
|
+
var toMonth = d.getMonth();
|
1224
|
+
for(var i=0; i<40; i++)
|
1225
|
+
{
|
1226
|
+
var today = moment(d).add('days', i).toDate();
|
1227
|
+
var valid = true;
|
1228
|
+
if (opt.startDate && compare_day(today,opt.startDate) < 0) valid = false;
|
1229
|
+
if (opt.endDate && compare_day(today,opt.endDate) > 0) valid = false;
|
1230
|
+
days.push({type: today.getMonth() == toMonth ? 'toMonth' : 'nextMonth',day: today.getDate(),time:today.getTime(), valid:valid });
|
1231
|
+
}
|
1232
|
+
var html = [];
|
1233
|
+
for(var week=0; week<6; week++)
|
1234
|
+
{
|
1235
|
+
if (days[week*7].type == 'nextMonth') break;
|
1236
|
+
html.push('<tr>');
|
1237
|
+
for(var day = 0; day<7; day++)
|
1238
|
+
{
|
1239
|
+
var _day = (opt.startOfWeek == 'monday') ? day+1 : day;
|
1240
|
+
var today = days[week*7+_day];
|
1241
|
+
var highlightToday = moment(today.time).format('L') == moment(now).format('L');
|
1242
|
+
today.extraClass = '';
|
1243
|
+
today.tooltip = '';
|
1244
|
+
if(opt.beforeShowDay && typeof opt.beforeShowDay == 'function')
|
1245
|
+
{
|
1246
|
+
var _r = opt.beforeShowDay(moment(today.time).toDate());
|
1247
|
+
today.valid = _r[0];
|
1248
|
+
today.extraClass = _r[1] || '';
|
1249
|
+
today.tooltip = _r[2] || '';
|
1250
|
+
if (today.tooltip != '') today.extraClass += ' has-tooltip ';
|
1251
|
+
}
|
1252
|
+
html.push('<td><div time="'+today.time+'" title="'+today.tooltip+'" class="day '+today.type+' '+today.extraClass+' '+(today.valid ? 'valid' : 'invalid')+' '+(highlightToday?'real-today':'')+'">'+today.day+'</div></td>');
|
1253
|
+
}
|
1254
|
+
html.push('</tr>');
|
1255
|
+
}
|
1256
|
+
return html.join('');
|
1257
|
+
}
|
1258
|
+
|
1259
|
+
function getLanguages()
|
1260
|
+
{
|
1261
|
+
if (opt.language == 'auto')
|
1262
|
+
{
|
1263
|
+
var language = navigator.language ? navigator.language : navigator.browserLanguage;
|
1264
|
+
if (!language) return $.dateRangePickerLanguages['en'];
|
1265
|
+
var language = language.toLowerCase();
|
1266
|
+
for(var key in $.dateRangePickerLanguages)
|
1267
|
+
{
|
1268
|
+
if (language.indexOf(key) != -1)
|
1269
|
+
{
|
1270
|
+
return $.dateRangePickerLanguages[key];
|
1271
|
+
}
|
1272
|
+
}
|
1273
|
+
return $.dateRangePickerLanguages['en'];
|
1274
|
+
}
|
1275
|
+
else if ( opt.language && opt.language in $.dateRangePickerLanguages)
|
1276
|
+
{
|
1277
|
+
return $.dateRangePickerLanguages[opt.language];
|
1278
|
+
}
|
1279
|
+
else
|
1280
|
+
{
|
1281
|
+
return $.dateRangePickerLanguages['en'];
|
1282
|
+
}
|
1283
|
+
}
|
1284
|
+
|
1285
|
+
function lang(t)
|
1286
|
+
{
|
1287
|
+
return (t in langs)? langs[t] : t;
|
1288
|
+
}
|
1289
|
+
|
1290
|
+
|
1291
|
+
};
|
1292
|
+
})(jQuery);
|