{
    "docs": [
        {
            "location": "/",
            "text": "Bootstrap 3 Datepicker v4 Docs\n\n\n\n    \nNote\n\n    All functions are accessed via the \ndata\n attribute e.g. \n$('#datetimepicker').data(\"DateTimePicker\").FUNCTION()\n\n\n\n\n\nMinimum Setup\n\n\n\n    \n\n        \n\n            \n\n                \n\n                    \n\n                    \n\n                        \n\n                    \n\n                \n\n            \n\n        \n\n        \n\n            $(function () {\n                $('#datetimepicker1').datetimepicker();\n            });\n        \n\n    \n\n\n\n\n\nCode\n\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class='col-sm-6'>\n            <div class=\"form-group\">\n                <div class='input-group date' id='datetimepicker1'>\n                    <input type='text' class=\"form-control\" />\n                    <span class=\"input-group-addon\">\n                        <span class=\"glyphicon glyphicon-calendar\"></span>\n                    </span>\n                </div>\n            </div>\n        </div>\n        <script type=\"text/javascript\">\n            $(function () {\n                $('#datetimepicker1').datetimepicker();\n            });\n        </script>\n    </div>\n</div>\n\n\n\n\n\n\nUsing Locales\n\n\n\n    \n\n        \n\n            \n\n                \n\n                    \n\n                    \n\n                        \n\n                    \n\n                \n\n            \n\n        \n\n        \n\n            $(function () {\n                $('#datetimepicker2').datetimepicker({\n                    locale: 'ru'\n                });\n            });\n        \n\n    \n\n\n\n\n\nCode\n\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class='col-sm-6'>\n            <div class=\"form-group\">\n                <div class='input-group date' id='datetimepicker2'>\n                    <input type='text' class=\"form-control\" />\n                    <span class=\"input-group-addon\">\n                        <span class=\"glyphicon glyphicon-calendar\"></span>\n                    </span>\n                </div>\n            </div>\n        </div>\n        <script type=\"text/javascript\">\n            $(function () {\n                $('#datetimepicker2').datetimepicker({\n                    locale: 'ru'\n                });\n            });\n        </script>\n    </div>\n</div>\n\n\n\n\n\n\nTime Only\n\n\n\n    \n\n        \n\n            \n\n                \n\n                    \n\n                    \n\n                        \n\n                    \n\n                \n\n            \n\n        \n\n        \n\n            $(function () {\n                $('#datetimepicker3').datetimepicker({\n                    format: 'LT'\n                });\n            });\n        \n\n    \n\n\n\n\n\nCode\n\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class='col-sm-6'>\n            <div class=\"form-group\">\n                <div class='input-group date' id='datetimepicker3'>\n                    <input type='text' class=\"form-control\" />\n                    <span class=\"input-group-addon\">\n                        <span class=\"glyphicon glyphicon-time\"></span>\n                    </span>\n                </div>\n            </div>\n        </div>\n        <script type=\"text/javascript\">\n            $(function () {\n                $('#datetimepicker3').datetimepicker({\n                    format: 'LT'\n                });\n            });\n        </script>\n    </div>\n</div>\n\n\n\n\n\n\nDate Only\n\n\n\n    \n\n        \n\n            \n\n                \n\n                    \n\n                    \n\n                        \n\n                    \n\n                \n\n            \n\n        \n\n        \n\n            $(function () {\n                $('#datetimepicker3').datetimepicker({\n                    format: 'L'\n                });\n            });\n        \n\n    \n\n\n\n\n\nCode\n\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class='col-sm-6'>\n            <div class=\"form-group\">\n                <div class='input-group date' id='datetimepicker3'>\n                    <input type='text' class=\"form-control\" />\n                    <span class=\"input-group-addon\">\n                        <span class=\"glyphicon glyphicon-time\"></span>\n                    </span>\n                </div>\n            </div>\n        </div>\n        <script type=\"text/javascript\">\n            $(function () {\n                $('#datetimepicker3').datetimepicker({\n                    format: 'LT'\n                });\n            });\n        </script>\n    </div>\n</div>\n\n\n\n\n\n\nNo Icon (input field only):\n\n\n\n    \n\n        \n\n            \n\n        \n\n        \n\n            $(function () {\n                $('#datetimepicker4').datetimepicker();\n            });\n        \n\n    \n\n\n\n\n\nCode\n\n\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class='col-sm-6'>\n            <input type='text' class=\"form-control\" id='datetimepicker4' />\n        </div>\n        <script type=\"text/javascript\">\n            $(function () {\n                $('#datetimepicker4').datetimepicker();\n            });\n        </script>\n    </div>\n</div>\n\n\n\n\n\n\nEnabled/Disabled Dates\n\n\n\n    \n\n        \n\n            \n\n                \n\n                    \n\n                    \n\n                        \n\n                    \n\n                \n\n            \n\n        \n\n        \n\n            $(function () {\n                $('#datetimepicker5').datetimepicker({\n                    defaultDate: \"11/1/2013\",\n                    disabledDates: [\n                        moment(\"12/25/2013\"),\n                        new Date(2013, 11 - 1, 21),\n                        \"11/22/2013 00:53\"\n                    ]\n                });\n            });\n        \n\n    \n\n\n\n\n\nCode\n\n\n<div class=\"container\">\n    <div class=\"row\">\n        <div class='col-sm-6'>\n            <div class=\"form-group\">\n                <div class='input-group date' id='datetimepicker5'>\n                    <input type='text' class=\"form-control\" />\n                    <span class=\"input-group-addon\">\n                        <span class=\"glyphicon glyphicon-calendar\"></span>\n                    </span>\n                </div>\n            </div>\n        </div>\n        <script type=\"text/javascript\">\n            $(function () {\n                $('#datetimepicker5').datetimepicker({\n                    defaultDate: \"11/1/2013\",\n                    disabledDates: [\n                        moment(\"12/25/2013\"),\n                        new Date(2013, 11 - 1, 21),\n                        \"11/22/2013 00:53\"\n                    ]\n                });\n            });\n        </script>\n    </div>\n</div>\n\n\n\n\n\n\nLinked Pickers\n\n\n\n    \n\n        \n\n            \n\n                \n\n                \n\n                    \n\n                \n\n            \n\n        \n\n    \n\n    \n\n        \n\n            \n\n                \n\n                \n\n                    \n\n                \n\n            \n\n        \n\n    \n\n\n\n\n\n\n    $(function () {\n        $('#datetimepicker6').datetimepicker();\n        $('#datetimepicker7').datetimepicker({\n            useCurrent: false\n        });\n        $(\"#datetimepicker6\").on(\"dp.change\", function (e) {\n            $('#datetimepicker7').data(\"DateTimePicker\").minDate(e.date);\n        });\n        $(\"#datetimepicker7\").on(\"dp.change\", function (e) {\n            $('#datetimepicker6').data(\"DateTimePicker\").maxDate(e.date);\n        });\n    });\n\n\n\n\nCode\n\n\n<div class=\"container\">\n    <div class='col-md-5'>\n        <div class=\"form-group\">\n            <div class='input-group date' id='datetimepicker6'>\n                <input type='text' class=\"form-control\" />\n                <span class=\"input-group-addon\">\n                    <span class=\"glyphicon glyphicon-calendar\"></span>\n                </span>\n            </div>\n        </div>\n    </div>\n    <div class='col-md-5'>\n        <div class=\"form-group\">\n            <div class='input-group date' id='datetimepicker7'>\n                <input type='text' class=\"form-control\" />\n                <span class=\"input-group-addon\">\n                    <span class=\"glyphicon glyphicon-calendar\"></span>\n                </span>\n            </div>\n        </div>\n    </div>\n</div>\n<script type=\"text/javascript\">\n    $(function () {\n        $('#datetimepicker6').datetimepicker();\n        $('#datetimepicker7').datetimepicker({\n            useCurrent: false //Important! See issue #1075\n        });\n        $(\"#datetimepicker6\").on(\"dp.change\", function (e) {\n            $('#datetimepicker7').data(\"DateTimePicker\").minDate(e.date);\n        });\n        $(\"#datetimepicker7\").on(\"dp.change\", function (e) {\n            $('#datetimepicker6').data(\"DateTimePicker\").maxDate(e.date);\n        });\n    });\n</script>\n\n\n\n\n\n\nCustom Icons\n\n\n\n    \n\n        \n\n            \n\n                \n\n                \n\n                    \n\n                    \n\n                \n\n            \n\n        \n\n    \n\n    \n\n        $(function () {\n            $('#datetimepicker8').datetimepicker({\n                icons: {\n                    time: \"fa fa-clock-o\",\n                    date: \"fa fa-calendar\",\n                    up: \"fa fa-arrow-up\",\n                    down: \"fa fa-arrow-down\"\n                }\n            });\n        });\n    \n\n\n\n\n\nCode\n\n\n<div class=\"container\">\n    <div class=\"col-sm-6\" style=\"height:130px;\">\n        <div class=\"form-group\">\n            <div class='input-group date' id='datetimepicker8'>\n                <input type='text' class=\"form-control\" />\n                <span class=\"input-group-addon\">\n                    <span class=\"fa fa-calendar\">\n                    </span>\n                </span>\n            </div>\n        </div>\n    </div>\n    <script type=\"text/javascript\">\n        $(function () {\n            $('#datetimepicker8').datetimepicker({\n                icons: {\n                    time: \"fa fa-clock-o\",\n                    date: \"fa fa-calendar\",\n                    up: \"fa fa-arrow-up\",\n                    down: \"fa fa-arrow-down\"\n                }\n            });\n        });\n    </script>\n</div>\n\n\n\n\n\n\nView Mode\n\n\n\n    \n\n        \n\n            \n\n                \n\n                \n\n                    \n\n                    \n\n                \n\n            \n\n        \n\n    \n\n    \n\n        $(function () {\n            $('#datetimepicker9').datetimepicker({\n                viewMode: 'years'\n            });\n        });\n    \n\n\n\n\n\nCode\n\n\n<div class=\"container\">\n    <div class=\"col-sm-6\" style=\"height:130px;\">\n        <div class=\"form-group\">\n            <div class='input-group date' id='datetimepicker9'>\n                <input type='text' class=\"form-control\" />\n                <span class=\"input-group-addon\">\n                    <span class=\"glyphicon glyphicon-calendar\">\n                    </span>\n                </span>\n            </div>\n        </div>\n    </div>\n    <script type=\"text/javascript\">\n        $(function () {\n            $('#datetimepicker9').datetimepicker({\n                viewMode: 'years'\n            });\n        });\n    </script>\n</div>\n\n\n\n\n\n\nMin View Mode\n\n\n\n    \n\n        \n\n            \n\n                \n\n                \n\n                    \n\n                    \n\n                \n\n            \n\n        \n\n    \n\n    \n\n        $(function () {\n            $('#datetimepicker10').datetimepicker({\n                viewMode: 'years',\n                format: 'MM/YYYY'\n            });\n        });\n    \n\n\n\n\n\nCode\n\n\n<div class=\"container\">\n    <div class=\"col-sm-6\" style=\"height:130px;\">\n        <div class=\"form-group\">\n            <div class='input-group date' id='datetimepicker10'>\n                <input type='text' class=\"form-control\" />\n                <span class=\"input-group-addon\">\n                    <span class=\"glyphicon glyphicon-calendar\">\n                    </span>\n                </span>\n            </div>\n        </div>\n    </div>\n    <script type=\"text/javascript\">\n        $(function () {\n            $('#datetimepicker10').datetimepicker({\n                viewMode: 'years',\n                format: 'MM/YYYY'\n            });\n        });\n    </script>\n</div>\n\n\n\n\n\n\n\nDisabled Days of the Week\n\n\n\n    \n\n        \n\n            \n\n                \n\n                \n\n                    \n\n                    \n\n                \n\n            \n\n        \n\n    \n\n    \n\n        $(function () {\n            $('#datetimepicker11').datetimepicker({\n                daysOfWeekDisabled: [0, 6]\n            });\n        });\n    \n\n\n\n\n\nCode\n\n\n<div class=\"container\">\n    <div class=\"col-sm-6\" style=\"height:130px;\">\n        <div class=\"form-group\">\n            <div class='input-group date' id='datetimepicker11'>\n                <input type='text' class=\"form-control\" />\n                <span class=\"input-group-addon\">\n                    <span class=\"glyphicon glyphicon-calendar\">\n                    </span>\n                </span>\n            </div>\n        </div>\n    </div>\n    <script type=\"text/javascript\">\n        $(function () {\n            $('#datetimepicker11').datetimepicker({\n                daysOfWeekDisabled: [0, 6]\n            });\n        });\n    </script>\n</div>\n\n\n\n\n\n\nInline\n\n\n\n    \n\n        \n\n            \n\n                \n\n            \n\n        \n\n    \n\n    \n\n        $(function () {\n            $('#datetimepicker12').datetimepicker({\n                inline: true,\n                sideBySide: true\n            });\n        });\n    \n\n\n\n\n\nCode\n\n\n<div style=\"overflow:hidden;\">\n    <div class=\"form-group\">\n        <div class=\"row\">\n            <div class=\"col-md-8\">\n                <div id=\"datetimepicker12\"></div>\n            </div>\n        </div>\n    </div>\n    <script type=\"text/javascript\">\n        $(function () {\n            $('#datetimepicker12').datetimepicker({\n                inline: true,\n                sideBySide: true\n            });\n        });\n    </script>\n</div>",
            "title": "Usage"
        },
        {
            "location": "/#bootstrap-3-datepicker-v4-docs",
            "text": "Note \n    All functions are accessed via the  data  attribute e.g.  $('#datetimepicker').data(\"DateTimePicker\").FUNCTION()",
            "title": "Bootstrap 3 Datepicker v4 Docs"
        },
        {
            "location": "/#minimum-setup",
            "text": "$(function () {\n                $('#datetimepicker1').datetimepicker();\n            });",
            "title": "Minimum Setup"
        },
        {
            "location": "/#code",
            "text": "<div class=\"container\">\n    <div class=\"row\">\n        <div class='col-sm-6'>\n            <div class=\"form-group\">\n                <div class='input-group date' id='datetimepicker1'>\n                    <input type='text' class=\"form-control\" />\n                    <span class=\"input-group-addon\">\n                        <span class=\"glyphicon glyphicon-calendar\"></span>\n                    </span>\n                </div>\n            </div>\n        </div>\n        <script type=\"text/javascript\">\n            $(function () {\n                $('#datetimepicker1').datetimepicker();\n            });\n        </script>\n    </div>\n</div>",
            "title": "Code"
        },
        {
            "location": "/#using-locales",
            "text": "$(function () {\n                $('#datetimepicker2').datetimepicker({\n                    locale: 'ru'\n                });\n            });",
            "title": "Using Locales"
        },
        {
            "location": "/#code_1",
            "text": "<div class=\"container\">\n    <div class=\"row\">\n        <div class='col-sm-6'>\n            <div class=\"form-group\">\n                <div class='input-group date' id='datetimepicker2'>\n                    <input type='text' class=\"form-control\" />\n                    <span class=\"input-group-addon\">\n                        <span class=\"glyphicon glyphicon-calendar\"></span>\n                    </span>\n                </div>\n            </div>\n        </div>\n        <script type=\"text/javascript\">\n            $(function () {\n                $('#datetimepicker2').datetimepicker({\n                    locale: 'ru'\n                });\n            });\n        </script>\n    </div>\n</div>",
            "title": "Code"
        },
        {
            "location": "/#time-only",
            "text": "$(function () {\n                $('#datetimepicker3').datetimepicker({\n                    format: 'LT'\n                });\n            });",
            "title": "Time Only"
        },
        {
            "location": "/#code_2",
            "text": "<div class=\"container\">\n    <div class=\"row\">\n        <div class='col-sm-6'>\n            <div class=\"form-group\">\n                <div class='input-group date' id='datetimepicker3'>\n                    <input type='text' class=\"form-control\" />\n                    <span class=\"input-group-addon\">\n                        <span class=\"glyphicon glyphicon-time\"></span>\n                    </span>\n                </div>\n            </div>\n        </div>\n        <script type=\"text/javascript\">\n            $(function () {\n                $('#datetimepicker3').datetimepicker({\n                    format: 'LT'\n                });\n            });\n        </script>\n    </div>\n</div>",
            "title": "Code"
        },
        {
            "location": "/#date-only",
            "text": "$(function () {\n                $('#datetimepicker3').datetimepicker({\n                    format: 'L'\n                });\n            });",
            "title": "Date Only"
        },
        {
            "location": "/#code_3",
            "text": "<div class=\"container\">\n    <div class=\"row\">\n        <div class='col-sm-6'>\n            <div class=\"form-group\">\n                <div class='input-group date' id='datetimepicker3'>\n                    <input type='text' class=\"form-control\" />\n                    <span class=\"input-group-addon\">\n                        <span class=\"glyphicon glyphicon-time\"></span>\n                    </span>\n                </div>\n            </div>\n        </div>\n        <script type=\"text/javascript\">\n            $(function () {\n                $('#datetimepicker3').datetimepicker({\n                    format: 'LT'\n                });\n            });\n        </script>\n    </div>\n</div>",
            "title": "Code"
        },
        {
            "location": "/#no-icon-input-field-only",
            "text": "$(function () {\n                $('#datetimepicker4').datetimepicker();\n            });",
            "title": "No Icon (input field only):"
        },
        {
            "location": "/#code_4",
            "text": "<div class=\"container\">\n    <div class=\"row\">\n        <div class='col-sm-6'>\n            <input type='text' class=\"form-control\" id='datetimepicker4' />\n        </div>\n        <script type=\"text/javascript\">\n            $(function () {\n                $('#datetimepicker4').datetimepicker();\n            });\n        </script>\n    </div>\n</div>",
            "title": "Code"
        },
        {
            "location": "/#enableddisabled-dates",
            "text": "$(function () {\n                $('#datetimepicker5').datetimepicker({\n                    defaultDate: \"11/1/2013\",\n                    disabledDates: [\n                        moment(\"12/25/2013\"),\n                        new Date(2013, 11 - 1, 21),\n                        \"11/22/2013 00:53\"\n                    ]\n                });\n            });",
            "title": "Enabled/Disabled Dates"
        },
        {
            "location": "/#code_5",
            "text": "<div class=\"container\">\n    <div class=\"row\">\n        <div class='col-sm-6'>\n            <div class=\"form-group\">\n                <div class='input-group date' id='datetimepicker5'>\n                    <input type='text' class=\"form-control\" />\n                    <span class=\"input-group-addon\">\n                        <span class=\"glyphicon glyphicon-calendar\"></span>\n                    </span>\n                </div>\n            </div>\n        </div>\n        <script type=\"text/javascript\">\n            $(function () {\n                $('#datetimepicker5').datetimepicker({\n                    defaultDate: \"11/1/2013\",\n                    disabledDates: [\n                        moment(\"12/25/2013\"),\n                        new Date(2013, 11 - 1, 21),\n                        \"11/22/2013 00:53\"\n                    ]\n                });\n            });\n        </script>\n    </div>\n</div>",
            "title": "Code"
        },
        {
            "location": "/#linked-pickers",
            "text": "$(function () {\n        $('#datetimepicker6').datetimepicker();\n        $('#datetimepicker7').datetimepicker({\n            useCurrent: false\n        });\n        $(\"#datetimepicker6\").on(\"dp.change\", function (e) {\n            $('#datetimepicker7').data(\"DateTimePicker\").minDate(e.date);\n        });\n        $(\"#datetimepicker7\").on(\"dp.change\", function (e) {\n            $('#datetimepicker6').data(\"DateTimePicker\").maxDate(e.date);\n        });\n    });",
            "title": "Linked Pickers"
        },
        {
            "location": "/#code_6",
            "text": "<div class=\"container\">\n    <div class='col-md-5'>\n        <div class=\"form-group\">\n            <div class='input-group date' id='datetimepicker6'>\n                <input type='text' class=\"form-control\" />\n                <span class=\"input-group-addon\">\n                    <span class=\"glyphicon glyphicon-calendar\"></span>\n                </span>\n            </div>\n        </div>\n    </div>\n    <div class='col-md-5'>\n        <div class=\"form-group\">\n            <div class='input-group date' id='datetimepicker7'>\n                <input type='text' class=\"form-control\" />\n                <span class=\"input-group-addon\">\n                    <span class=\"glyphicon glyphicon-calendar\"></span>\n                </span>\n            </div>\n        </div>\n    </div>\n</div>\n<script type=\"text/javascript\">\n    $(function () {\n        $('#datetimepicker6').datetimepicker();\n        $('#datetimepicker7').datetimepicker({\n            useCurrent: false //Important! See issue #1075\n        });\n        $(\"#datetimepicker6\").on(\"dp.change\", function (e) {\n            $('#datetimepicker7').data(\"DateTimePicker\").minDate(e.date);\n        });\n        $(\"#datetimepicker7\").on(\"dp.change\", function (e) {\n            $('#datetimepicker6').data(\"DateTimePicker\").maxDate(e.date);\n        });\n    });\n</script>",
            "title": "Code"
        },
        {
            "location": "/#custom-icons",
            "text": "$(function () {\n            $('#datetimepicker8').datetimepicker({\n                icons: {\n                    time: \"fa fa-clock-o\",\n                    date: \"fa fa-calendar\",\n                    up: \"fa fa-arrow-up\",\n                    down: \"fa fa-arrow-down\"\n                }\n            });\n        });",
            "title": "Custom Icons"
        },
        {
            "location": "/#code_7",
            "text": "<div class=\"container\">\n    <div class=\"col-sm-6\" style=\"height:130px;\">\n        <div class=\"form-group\">\n            <div class='input-group date' id='datetimepicker8'>\n                <input type='text' class=\"form-control\" />\n                <span class=\"input-group-addon\">\n                    <span class=\"fa fa-calendar\">\n                    </span>\n                </span>\n            </div>\n        </div>\n    </div>\n    <script type=\"text/javascript\">\n        $(function () {\n            $('#datetimepicker8').datetimepicker({\n                icons: {\n                    time: \"fa fa-clock-o\",\n                    date: \"fa fa-calendar\",\n                    up: \"fa fa-arrow-up\",\n                    down: \"fa fa-arrow-down\"\n                }\n            });\n        });\n    </script>\n</div>",
            "title": "Code"
        },
        {
            "location": "/#view-mode",
            "text": "$(function () {\n            $('#datetimepicker9').datetimepicker({\n                viewMode: 'years'\n            });\n        });",
            "title": "View Mode"
        },
        {
            "location": "/#code_8",
            "text": "<div class=\"container\">\n    <div class=\"col-sm-6\" style=\"height:130px;\">\n        <div class=\"form-group\">\n            <div class='input-group date' id='datetimepicker9'>\n                <input type='text' class=\"form-control\" />\n                <span class=\"input-group-addon\">\n                    <span class=\"glyphicon glyphicon-calendar\">\n                    </span>\n                </span>\n            </div>\n        </div>\n    </div>\n    <script type=\"text/javascript\">\n        $(function () {\n            $('#datetimepicker9').datetimepicker({\n                viewMode: 'years'\n            });\n        });\n    </script>\n</div>",
            "title": "Code"
        },
        {
            "location": "/#min-view-mode",
            "text": "$(function () {\n            $('#datetimepicker10').datetimepicker({\n                viewMode: 'years',\n                format: 'MM/YYYY'\n            });\n        });",
            "title": "Min View Mode"
        },
        {
            "location": "/#code_9",
            "text": "<div class=\"container\">\n    <div class=\"col-sm-6\" style=\"height:130px;\">\n        <div class=\"form-group\">\n            <div class='input-group date' id='datetimepicker10'>\n                <input type='text' class=\"form-control\" />\n                <span class=\"input-group-addon\">\n                    <span class=\"glyphicon glyphicon-calendar\">\n                    </span>\n                </span>\n            </div>\n        </div>\n    </div>\n    <script type=\"text/javascript\">\n        $(function () {\n            $('#datetimepicker10').datetimepicker({\n                viewMode: 'years',\n                format: 'MM/YYYY'\n            });\n        });\n    </script>\n</div>",
            "title": "Code"
        },
        {
            "location": "/#disabled-days-of-the-week",
            "text": "$(function () {\n            $('#datetimepicker11').datetimepicker({\n                daysOfWeekDisabled: [0, 6]\n            });\n        });",
            "title": "Disabled Days of the Week"
        },
        {
            "location": "/#code_10",
            "text": "<div class=\"container\">\n    <div class=\"col-sm-6\" style=\"height:130px;\">\n        <div class=\"form-group\">\n            <div class='input-group date' id='datetimepicker11'>\n                <input type='text' class=\"form-control\" />\n                <span class=\"input-group-addon\">\n                    <span class=\"glyphicon glyphicon-calendar\">\n                    </span>\n                </span>\n            </div>\n        </div>\n    </div>\n    <script type=\"text/javascript\">\n        $(function () {\n            $('#datetimepicker11').datetimepicker({\n                daysOfWeekDisabled: [0, 6]\n            });\n        });\n    </script>\n</div>",
            "title": "Code"
        },
        {
            "location": "/#inline",
            "text": "$(function () {\n            $('#datetimepicker12').datetimepicker({\n                inline: true,\n                sideBySide: true\n            });\n        });",
            "title": "Inline"
        },
        {
            "location": "/#code_11",
            "text": "<div style=\"overflow:hidden;\">\n    <div class=\"form-group\">\n        <div class=\"row\">\n            <div class=\"col-md-8\">\n                <div id=\"datetimepicker12\"></div>\n            </div>\n        </div>\n    </div>\n    <script type=\"text/javascript\">\n        $(function () {\n            $('#datetimepicker12').datetimepicker({\n                inline: true,\n                sideBySide: true\n            });\n        });\n    </script>\n</div>",
            "title": "Code"
        },
        {
            "location": "/Installing/",
            "text": "Minimal Requirements\n\n\n\n\njQuery\n\n\nMoment.js\n\n\nBootstrap.js (transition and collapse are required if you're not using the full Bootstrap)\n\n\nBootstrap Datepicker script\n\n\nBootstrap CSS\n\n\nBootstrap Datepicker CSS\n\n\nLocales: Moment's locale files are \nhere\n\n\n\n\nInstallation Guides\n\n\n\n\nBower\n\n\nNuget\n\n\nRails\n\n\nAngular\n\n\nMeteor.js\n\n\nManual\n\n\n\n\nbower\n \n\n\nRun the following command:\n\n\nbower install eonasdan-bootstrap-datetimepicker#latest --save\n\n\n\n\nInclude necessary scripts and styles:\n\n\n<head>\n  <!-- ... -->\n  <script type=\"text/javascript\" src=\"/bower_components/jquery/jquery.min.js\"></script>\n  <script type=\"text/javascript\" src=\"/bower_components/moment/min/moment.min.js\"></script>\n  <script type=\"text/javascript\" src=\"/bower_components/bootstrap/dist/js/bootstrap.min.js\"></script>\n  <script type=\"text/javascript\" src=\"/bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js\"></script>\n  <link rel=\"stylesheet\" href=\"/bower_components/bootstrap/dist/css/bootstrap.min.css\" />\n  <link rel=\"stylesheet\" href=\"/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css\" />\n</head>\n\n\n\n\nNuget\n\n\nLESS\n: \n\n\nPM> Install-Package Bootstrap.v3.Datetimepicker\n\n\n\n\nCSS\n: \n\n\nPM> Install-Package Bootstrap.v3.Datetimepicker.CSS\n\n\n\n\n<head>\n  <script type=\"text/javascript\" src=\"/scripts/jquery.min.js\"></script>\n  <script type=\"text/javascript\" src=\"/scripts/moment.min.js\"></script>\n  <script type=\"text/javascript\" src=\"/scripts/bootstrap.min.js\"></script>\n  <script type=\"text/javascript\" src=\"/scripts/bootstrap-datetimepicker.*js\"></script>\n  <!-- include your less or built css files  -->\n  <!-- \n  bootstrap-datetimepicker-build.less will pull in \"../bootstrap/variables.less\" and \"bootstrap-datetimepicker.less\";\n  or\n  <link rel=\"stylesheet\" href=\"/Content/bootstrap-datetimepicker.css\" />\n  -->\n</head>\n\n\n\n\nRails\n \n\n\nAdd the following to your \nGemfile\n:\n\n\ngem 'momentjs-rails', '>= 2.9.0'\ngem 'bootstrap3-datetimepicker-rails', '~> 4.14.30'\n\n\n\n\nNote: You may need to change the version number above to the version number on the badge above.\nRead the rest of the install instructions @ \n\nTrevorS/bootstrap3-datetimepicker-rails\n\n\nAngular Wrapper\n\n\nFollow the link \nhere\n\n\nMeteor.js\n\n\nThis widget has been package for the \nMeteor.js\n platform, to install it use meteorite as follows:\n\n\n$ mrt add tsega:bootstrap3-datetimepicker\n\n\nFor more detail see the package page on \nAtmosphere\n\n\nManual\n\n\nAcquire \njQuery\n\n\nAcquire  \nMoment.js\n\n\nBootstrap 3 collapse and transition plugins\n\n\nMake sure to include *.JS files for plugins \ncollapse\n and \ntransitions\n. They are included with \nbootstrap in js/ directory\n\nAlternatively you could include the whole bundle of bootstrap plugins from \nbootstrap.js\n\n\n<script type=\"text/javascript\" src=\"/path/to/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"/path/to/moment.js\"></script>\n<script type=\"text/javascript\" src=\"/path/to/bootstrap/js/transition.js\"></script>\n<script type=\"text/javascript\" src=\"/path/to/bootstrap/js/collapse.js\"></script>\n<script type=\"text/javascript\" src=\"/path/to/bootstrap/dist/bootstrap.min.js\"></script>\n<script type=\"text/javascript\" src=\"/path/to/bootstrap-datetimepicker.min.js\"></script>\n\n\n\n\nKnockout\n\n\nko.bindingHandlers.dateTimePicker = {\n    init: function (element, valueAccessor, allBindingsAccessor) {\n        //initialize datepicker with some optional options\n        var options = allBindingsAccessor().dateTimePickerOptions || {};\n        $(element).datetimepicker(options);\n\n        //when a user changes the date, update the view model\n        ko.utils.registerEventHandler(element, \"dp.change\", function (event) {\n            var value = valueAccessor();\n            if (ko.isObservable(value)) {\n                if (event.date != null && !(event.date instanceof Date)) {\n                    value(event.date.toDate());\n                } else {\n                    value(event.date);\n                }\n            }\n        });\n\n        ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\n            var picker = $(element).data(\"DateTimePicker\");\n            if (picker) {\n                picker.destroy();\n            }\n        });\n    },\n    update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\n\n        var picker = $(element).data(\"DateTimePicker\");\n        //when the view model is updated, update the widget\n        if (picker) {\n            var koDate = ko.utils.unwrapObservable(valueAccessor());\n\n            //in case return from server datetime i am get in this form for example /Date(93989393)/ then fomat this\n            koDate = (typeof (koDate) !== 'object') ? new Date(parseFloat(koDate.replace(/[^0-9]/g, ''))) : koDate;\n\n            picker.date(koDate);\n        }\n    }\n};\n\n\n\n\nCSS styles\n\n\nUsing LESS\n\n\n@import \"/path/to/bootstrap/less/variables\";\n@import \"/path/to/bootstrap-datetimepicker/src/less/bootstrap-datetimepicker-build.less\";\n\n// [...] your custom styles and variables\n\n\n\n\nUsing CSS (default color palette)\n\n\n<link rel=\"stylesheet\" href=\"/path/to/bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css\" />",
            "title": "Installing"
        },
        {
            "location": "/Installing/#minimal-requirements",
            "text": "jQuery  Moment.js  Bootstrap.js (transition and collapse are required if you're not using the full Bootstrap)  Bootstrap Datepicker script  Bootstrap CSS  Bootstrap Datepicker CSS  Locales: Moment's locale files are  here",
            "title": "Minimal Requirements"
        },
        {
            "location": "/Installing/#installation-guides",
            "text": "Bower  Nuget  Rails  Angular  Meteor.js  Manual",
            "title": "Installation Guides"
        },
        {
            "location": "/Installing/#bower",
            "text": "Run the following command:  bower install eonasdan-bootstrap-datetimepicker#latest --save  Include necessary scripts and styles:  <head>\n  <!-- ... -->\n  <script type=\"text/javascript\" src=\"/bower_components/jquery/jquery.min.js\"></script>\n  <script type=\"text/javascript\" src=\"/bower_components/moment/min/moment.min.js\"></script>\n  <script type=\"text/javascript\" src=\"/bower_components/bootstrap/dist/js/bootstrap.min.js\"></script>\n  <script type=\"text/javascript\" src=\"/bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js\"></script>\n  <link rel=\"stylesheet\" href=\"/bower_components/bootstrap/dist/css/bootstrap.min.css\" />\n  <link rel=\"stylesheet\" href=\"/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css\" />\n</head>",
            "title": "bower"
        },
        {
            "location": "/Installing/#nuget",
            "text": "",
            "title": "Nuget"
        },
        {
            "location": "/Installing/#less",
            "text": "PM> Install-Package Bootstrap.v3.Datetimepicker",
            "title": "LESS:"
        },
        {
            "location": "/Installing/#css",
            "text": "PM> Install-Package Bootstrap.v3.Datetimepicker.CSS  <head>\n  <script type=\"text/javascript\" src=\"/scripts/jquery.min.js\"></script>\n  <script type=\"text/javascript\" src=\"/scripts/moment.min.js\"></script>\n  <script type=\"text/javascript\" src=\"/scripts/bootstrap.min.js\"></script>\n  <script type=\"text/javascript\" src=\"/scripts/bootstrap-datetimepicker.*js\"></script>\n  <!-- include your less or built css files  -->\n  <!-- \n  bootstrap-datetimepicker-build.less will pull in \"../bootstrap/variables.less\" and \"bootstrap-datetimepicker.less\";\n  or\n  <link rel=\"stylesheet\" href=\"/Content/bootstrap-datetimepicker.css\" />\n  -->\n</head>",
            "title": "CSS:"
        },
        {
            "location": "/Installing/#rails",
            "text": "Add the following to your  Gemfile :  gem 'momentjs-rails', '>= 2.9.0'\ngem 'bootstrap3-datetimepicker-rails', '~> 4.14.30'  Note: You may need to change the version number above to the version number on the badge above.\nRead the rest of the install instructions @  TrevorS/bootstrap3-datetimepicker-rails",
            "title": "Rails"
        },
        {
            "location": "/Installing/#angular-wrapper",
            "text": "Follow the link  here",
            "title": "Angular Wrapper"
        },
        {
            "location": "/Installing/#meteorjs",
            "text": "This widget has been package for the  Meteor.js  platform, to install it use meteorite as follows:  $ mrt add tsega:bootstrap3-datetimepicker  For more detail see the package page on  Atmosphere",
            "title": "Meteor.js"
        },
        {
            "location": "/Installing/#manual",
            "text": "",
            "title": "Manual"
        },
        {
            "location": "/Installing/#acquire-jquery",
            "text": "",
            "title": "Acquire jQuery"
        },
        {
            "location": "/Installing/#acquire-momentjs",
            "text": "",
            "title": "Acquire  Moment.js"
        },
        {
            "location": "/Installing/#bootstrap-3-collapse-and-transition-plugins",
            "text": "Make sure to include *.JS files for plugins  collapse  and  transitions . They are included with  bootstrap in js/ directory \nAlternatively you could include the whole bundle of bootstrap plugins from  bootstrap.js  <script type=\"text/javascript\" src=\"/path/to/jquery.js\"></script>\n<script type=\"text/javascript\" src=\"/path/to/moment.js\"></script>\n<script type=\"text/javascript\" src=\"/path/to/bootstrap/js/transition.js\"></script>\n<script type=\"text/javascript\" src=\"/path/to/bootstrap/js/collapse.js\"></script>\n<script type=\"text/javascript\" src=\"/path/to/bootstrap/dist/bootstrap.min.js\"></script>\n<script type=\"text/javascript\" src=\"/path/to/bootstrap-datetimepicker.min.js\"></script>",
            "title": "Bootstrap 3 collapse and transition plugins"
        },
        {
            "location": "/Installing/#knockout",
            "text": "ko.bindingHandlers.dateTimePicker = {\n    init: function (element, valueAccessor, allBindingsAccessor) {\n        //initialize datepicker with some optional options\n        var options = allBindingsAccessor().dateTimePickerOptions || {};\n        $(element).datetimepicker(options);\n\n        //when a user changes the date, update the view model\n        ko.utils.registerEventHandler(element, \"dp.change\", function (event) {\n            var value = valueAccessor();\n            if (ko.isObservable(value)) {\n                if (event.date != null && !(event.date instanceof Date)) {\n                    value(event.date.toDate());\n                } else {\n                    value(event.date);\n                }\n            }\n        });\n\n        ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\n            var picker = $(element).data(\"DateTimePicker\");\n            if (picker) {\n                picker.destroy();\n            }\n        });\n    },\n    update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\n\n        var picker = $(element).data(\"DateTimePicker\");\n        //when the view model is updated, update the widget\n        if (picker) {\n            var koDate = ko.utils.unwrapObservable(valueAccessor());\n\n            //in case return from server datetime i am get in this form for example /Date(93989393)/ then fomat this\n            koDate = (typeof (koDate) !== 'object') ? new Date(parseFloat(koDate.replace(/[^0-9]/g, ''))) : koDate;\n\n            picker.date(koDate);\n        }\n    }\n};",
            "title": "Knockout"
        },
        {
            "location": "/Installing/#css-styles",
            "text": "",
            "title": "CSS styles"
        },
        {
            "location": "/Installing/#using-less",
            "text": "@import \"/path/to/bootstrap/less/variables\";\n@import \"/path/to/bootstrap-datetimepicker/src/less/bootstrap-datetimepicker-build.less\";\n\n// [...] your custom styles and variables  Using CSS (default color palette)  <link rel=\"stylesheet\" href=\"/path/to/bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css\" />",
            "title": "Using LESS"
        },
        {
            "location": "/Functions/",
            "text": "Functions\n\n\n\n    \nNote\n\n    All functions are accessed via the \ndata\n attribute e.g. \n$('#datetimepicker').data(\"DateTimePicker\").FUNCTION()\n\n\n\n\n\ndestroy()\n\n\nDestroys the widget and removes all attached event listeners\n\n\n\n\ntoggle()\n\n\nShows or hides the widget\n\n\nEmits\n\n\n\n\n\n\ndp.hide\n - if the widget is hidden after the toggle call\n\n\n\n\n\n\ndp.show\n - if the widget is show after the toggle call\n\n\n\n\n\n\ndp.change\n - if the widget is opened for the first time and the input element is empty and \noptions.useCurrent != false\n\n\n\n\n\n\n\n\nshow()\n\n\nShows the widget\n\n\nEmits\n\n\n\n\n\n\ndp.show\n - if the widget was hidden before that call\n\n\n\n\n\n\ndp.change\n - if the widget is opened for the first time and the useCurrent is set to true or to a granularity value and the input element the component is attached to has an empty value\n\n\n\n\n\n\n\n\nhide()\n\n\nHides the widget\n\n\nEmits\n\n\n\n\ndp.hide\n - if the widget was visible before that call\n\n\n\n\n\n\ndisable()\n\n\nDisables the input element, the component is attached to, by adding a \ndisabled=\"true\"\n attribute to it. If the widget was visible before that call it is hidden.\n\n\nEmits\n\n\n\n\ndp.hide\n - if the widget was visible before that call\n\n\n\n\n\n\nenable()\n\n\nEnables the input element, the component is attached to, by removing \ndisabled\n attribute from it.\n\n\n\n\nclear()\n\n\nClears the datepicker by setting the value to \nnull\n\n\nviewDate\n\n\n4.14.30\n Issue #872\n\n\nviewDate()\n\n\nReturns a \nmoment\n variable with the currently set \noptions.viewDate\n option.\n\n\nviewDate(viewDate)\n\n\nTakes a \nstring, moment or Date\n value.\n\n\nThis will change the \nviewDate\n without changing or setting the selected date.",
            "title": "Functions"
        },
        {
            "location": "/Functions/#functions",
            "text": "Note \n    All functions are accessed via the  data  attribute e.g.  $('#datetimepicker').data(\"DateTimePicker\").FUNCTION()",
            "title": "Functions"
        },
        {
            "location": "/Functions/#destroy",
            "text": "Destroys the widget and removes all attached event listeners",
            "title": "destroy()"
        },
        {
            "location": "/Functions/#toggle",
            "text": "Shows or hides the widget",
            "title": "toggle()"
        },
        {
            "location": "/Functions/#emits",
            "text": "dp.hide  - if the widget is hidden after the toggle call    dp.show  - if the widget is show after the toggle call    dp.change  - if the widget is opened for the first time and the input element is empty and  options.useCurrent != false",
            "title": "Emits"
        },
        {
            "location": "/Functions/#show",
            "text": "Shows the widget",
            "title": "show()"
        },
        {
            "location": "/Functions/#emits_1",
            "text": "dp.show  - if the widget was hidden before that call    dp.change  - if the widget is opened for the first time and the useCurrent is set to true or to a granularity value and the input element the component is attached to has an empty value",
            "title": "Emits"
        },
        {
            "location": "/Functions/#hide",
            "text": "Hides the widget",
            "title": "hide()"
        },
        {
            "location": "/Functions/#emits_2",
            "text": "dp.hide  - if the widget was visible before that call",
            "title": "Emits"
        },
        {
            "location": "/Functions/#disable",
            "text": "Disables the input element, the component is attached to, by adding a  disabled=\"true\"  attribute to it. If the widget was visible before that call it is hidden.",
            "title": "disable()"
        },
        {
            "location": "/Functions/#emits_3",
            "text": "dp.hide  - if the widget was visible before that call",
            "title": "Emits"
        },
        {
            "location": "/Functions/#enable",
            "text": "Enables the input element, the component is attached to, by removing  disabled  attribute from it.",
            "title": "enable()"
        },
        {
            "location": "/Functions/#clear",
            "text": "Clears the datepicker by setting the value to  null",
            "title": "clear()"
        },
        {
            "location": "/Functions/#viewdate",
            "text": "4.14.30  Issue #872",
            "title": "viewDate"
        },
        {
            "location": "/Functions/#viewdate_1",
            "text": "Returns a  moment  variable with the currently set  options.viewDate  option.",
            "title": "viewDate()"
        },
        {
            "location": "/Functions/#viewdateviewdate",
            "text": "Takes a  string, moment or Date  value.  This will change the  viewDate  without changing or setting the selected date.",
            "title": "viewDate(viewDate)"
        },
        {
            "location": "/Options/",
            "text": "Options\n\n\n\n    \nNote\n\n    All options are accessed via the \ndata\n attribute e.g. \n$('#datetimepicker').data(\"DateTimePicker\").OPTION()\n\n\n\n\n\noptions()\n\n\nReturns the components current options object. Note that the changing the values of the returned object does not change the components actual configuration. Use \noptions(options)\n to set the components options massively or the other methods for setting config options individually.\n\n\noptions([options])\n\n\nTakes an object variable with option key:value properties and configures the component. Use this to update multiple options on the component.\n\n\n\n\ndate\n\n\nReturns the component's model current date, a \nmoment\n object or \nnull\n if not set.\n\n\ndate([newDate])\n\n\nTakes \nstring, Date, moment, null\n parameter and sets the components model current moment to it. Passing a \nnull\n value unsets the components model current moment. Parsing of the newDate parameter is made using moment library with the \noptions.format\n and \noptions.useStrict\n components configuration.\n\n\nThrows\n\n\n\n\nTypeError\n - in case the \nnewDate\n cannot be parsed\n\n\n\n\nEmits\n\n\n\n\ndp.change\n - In case \nnewDate\n is different from current moment\n\n\n\n\n\n\nformat\n\n\nDefault: false\n\n\n\nSee \nmomentjs' docs\n for valid formats. Format also dictates what components are shown, e.g. \nMM/dd/YYYY\n will not display the time picker.\n\n\nformat()\n\n\nReturns the component's \noptions.format\n \nstring\n\n\nformat(format)\n\n\nTakes a \nmoment.js\n format \nstring\n and sets the components  \noptions.format\n. This is used for displaying and also for parsing input strings either from the input element the component is attached to or the \ndate()\n function.\nThe parameter can also be a \nboolean:false\n in which case the format is set to the locale's \nL LT\n.\n\n\nNote:\n this is also used to determine if the TimePicker sub component will display the hours in 12 or 24 format. (if 'a' or 'h' exists in the passed \nstring\n then a 12 hour mode is set)\n\n\n\n\ndayViewHeaderFormat\n\n\nDefault: 'MMMM YYYY'\n\n\n\nChanges the heading of the datepicker when in \"days\" view.\n\n\n\n\ndayViewHeaderFormat()\n\n\nReturns a \nstring\n variable with the currently set \noptions.dayViewHeaderFormat\n option.\n\n\ndayViewHeaderFormat(string)\n\n\nTakes a \nstring\n value.\n\n\nUsed to customize the header of the day view.\n\n\n\n\nextraFormats\n\n\nDefault: false\n\n\n\nAllows for several input formats to be valid. See \nthis PR\n.\n\n\nextraFormats()\n\n\nReturns a \nboolean\n or array with the \noptions.extraFormats\n option configuration\n\n\nextraFormats(formats)\n\n\nTakes an array of valid input moment format options.\n\n\n\n\nstepping\n\n\nDefault: 1\n\n\n\nNumber of minutes the up/down arrow's will move the minutes value in the time picker\n\n\nstepping()\n\n\nReturns a \nnumber\n with the \noptions.stepping\n option configuration\n\n\nstepping(number)\n\n\nTakes a \nnumber\n. This be the amount the up/down arrows move the minute value with a time picker.\n\n\n\n\nmin/maxDate\n\n\nDefault: false\nAccepts: date, moment, string\n\n\n\nPrevents date/time selections before this date. Will override \ndefaultDate\n and \nuseCurrent\n if either of these settings are the same day since both options are invalid according to the rules you've selected.\n\n\nminDate()\n\n\nReturns the currently set moment of the \noptions.minDate\n or \nfalse\n if not set\n\n\nminDate(minDate)\n\n\nTakes a minDate \nstring, Date, moment, boolean:false\n parameter and disallows the user to select a moment that is before that moment. If a \nboolean:false\n value is passed the \noptions.minDate\n parameter is cleared and there is no restriction to the miminum moment the user can select. \n\n\nNote:\n If the minDate parameter is after the currently selected moment the currently selected moment changes to minDate parameter\n\n\nThrows\n\n\n\n\n\n\nTypeError\n - if minDate parameter cannot be parsed using the \noptions.format\n and \noptions.useStrict\n configuration settings\n\n\n\n\n\n\nTypeError\n - if minDate parameter is after \noptions.maxDate\n\n\n\n\n\n\nEmits\n\n\n\n\n\n\ndp.change\n - if the new minDate is after currently selected moment (waiting for #472 to close in order to finalize this part)\n\n\n\n\n\n\ndp.error\n - if the new minDate is after currently selected moment (waiting for #472 to close in order to finalize this part)\n\n\n\n\n\n\n\n\nmaxDate()\n\n\nReturns the currently set moment of the \noptions.maxDate\n or \nfalse\n if not set\n\n\nmaxDate(maxDate)\n\n\nTakes a maxDate \nstring, Date, moment, boolean:false\n parameter and disallows the user to select a moment that is after that moment. If a \nboolean:false\n value is passed \noptions.maxDate\n is cleared and there is no restriction to the maximum moment the user can select.\n\n\nNote:\n If maxDate is before the currently selected moment the currently selected moment changes to maxDate\n\n\nThrows\n\n\n\n\n\n\nTypeError\n - if maxDate parameter cannot be parsed using the \noptions.format\n and \noptions.useStrict\n configuration settings\n\n\n\n\n\n\nTypeError\n - if maxDate parameter is before \noptions.minDate\n\n\n\n\n\n\nEmits\n\n\n\n\n\n\ndp.change\n - if the new maxDate is after currently selected moment  (waiting for #472 to close in order to finalize this part)\n\n\n\n\n\n\ndp.error\n - if the new maxDate is after currently selected moment  (waiting for #472 to close in order to finalize this part)\n\n\n\n\n\n\n\n\nuseCurrent\n\n\nDefault: true\n\n\n\nOn \nshow\n, will set the picker to the current date/time.\n\n\nuseCurrent()\n\n\nReturns a \nboolean\n or \nstring\n with the \noptions.useCurrent\n option configuration\n\n\nuseCurrent(boolean or string)\n\n\nTakes a \nboolean\n or \nstring\n. If a \nboolean\n true is passed and the components model moment is not set (either through \nsetDate\n or through a valid value on the input element the component is attached to) then the first time the user opens the datetimepicker widget the value is initialized to the current moment of the action. If a false \nboolean\n is passed then no initialization happens on the input element. You can select the granularity on the initialized moment by passing one of the following strings (\n'year', 'month', 'day', 'hour', 'minute'\n) in the variable.\n\n\nIf for example you pass \n'day'\n to the \nsetUseCurrent\n function and the input field is empty the first time the user opens the datetimepicker widget the input text will be initialized to the current datetime with day granularity (ie if currentTime = \n2014-08-10 13:32:33\n the input value will be initialized to \n2014-08-10 00:00:00\n)\n\n\nNote:\n If the \noptions.defaultDate\n is set or the input element the component is attached to has already a value that takes precedence and the functionality of \nuseCurrent\n is not triggered!\n\n\n\n\ncollapse\n\n\nDefault: true\n\n\n\nUsing a Bootstraps collapse to switch between date/time pickers.\n\n\ncollapse()\n\n\nReturns a \nboolean\n of the \noptions.sideBySide\n.\n\n\ncollapse(collapse)\n\n\nTakes a \nboolean\n. If set to \nfalse\n the picker will display similar to \nsideBySide\n except vertical.\n\n\n\n\nlocale\n\n\nDefault: moment.locale()\nAccepts: string, moment.locale('locale')\n\n\n\nSee \nmomentjs\n for valid locales.\n\n\nYou must include \nmoment-with-locales.js\n or a local js file.\n\n\nlocale()\n\n\nReturns the currently set locale of the \noptions.locale\n\n\nlocale(newLocale)\n\n\nTakes a \nstring\n of any valid \nmoment locale\n e.g. \nde\n for German.\n\n\nThrows\n\n\n\n\nTypeError\n - if the locale is not loaded via a separate script or \nmoment-with-locales\n\n\n\n\n\n\ndefaultDate\n\n\nDefault: false\nAccepts: date, moment, string\n\n\n\nSets the picker default date/time. Overrides \nuseCurrent\n\n\ndefaultDate()\n\n\nReturns a \nmoment\n with the \noptions.defaultDate\n option configuration or \nfalse\n if not set\n\n\ndefaultDate(defaultDate)\n\n\nTakes a \nstring, Date, moment, boolean:false\n. Will set the picker's inital date. If a \nboolean:false\n value is passed the \noptions.defaultDate\n parameter is cleared. \n\n\n\n\n\n\nTypeError\n - if the provided date pass validation, including \ndisabledDates\n, \nenabledDates\n, \nminDate\n, \nmaxDate\n, and \ndaysOfWeekDisabled\n\n\n\n\n\n\nTypeError\n - if the provided date cannot be parsed by momentjs\n\n\n\n\n\n\n\n\nen/disabledDates\n\n\nDefault: false\nAccepts: array of [date, moment, string]\n\n\n\ndisabledDates()\n\n\nReturns an array with the currently set disabled dates on the component.\n\n\ndisabledDates(dates)\n\n\nTakes an \n[\n \nstring\n or \nDate\n or \nmoment\n \n]\n of values and disallows the user to select those days. Setting this takes precedence over \noptions.minDate\n, \noptions.maxDate\n configuration. Also calling this function removes the configuration of options.enabledDates if such exist.\n\n\nNote:\n These values are matched with \nDay\n granularity.\n\n\n\n\nenabledDates()\n\n\nReturns an array with the currently set enabled dates on the component.\n\n\nenabledDates(dates)\n\n\nTakes an \n[\n \nstring\n or \nDate\n or \nmoment\n \n]\n of values and allows the user to select only from those days. Setting this takes precedence over \noptions.minDate\n, \noptions.maxDate\n configuration. Also calling this function removes the configuration of options.disabledDates if such exist.\n\n\nNote:\n These values are matched with \nDay\n granularity.\n\n\n\n\nicons\n\n\nDefault: {\n            time: 'glyphicon glyphicon-time',\n            date: 'glyphicon glyphicon-calendar',\n            up: 'glyphicon glyphicon-chevron-up',\n            down: 'glyphicon glyphicon-chevron-down',\n            previous: 'glyphicon glyphicon-chevron-left',\n            next: 'glyphicon glyphicon-chevron-right',\n            today: 'glyphicon glyphicon-screenshot',\n            clear: 'glyphicon glyphicon-trash',\n            close: 'glyphicon glyphicon-remove'\n        }\nAccepts: object with all or some of the parameters above\n\n\n\nChange the default icons for the pickers functions.\n\n\nicons()\n\n\nReturns an \nOjbect\n of \noptions.icons\n \n\n\nicons(icons)\n\n\nTakes an \nOjbect\n of \nstrings\n.\n\n\nThrows\n\n\n\n\nTypeError\n - if icons parameter is not an \nOjbect\n\n\n\n\n\n\nuseStrict\n\n\nDefault: false\n\n\n\nDefines if moment should use strict date parsing when considering a date to be valid.\n\n\nuseStrict()\n\n\nReturns a \nboolean\n of the \noptions.useStrict\n\n\nuseStrict(useStrict)\n\n\nTakes a \nboolean\n. If \nuseStrict\n is \ntrue\n, momentjs parsing rules will be stricter when determining if a date is valid or not.\n\n\n\n\nsideBySide\n\n\nDefault: false\n\n\n\nShows the picker side by side when using the time and date together.\n\n\n\n\nsideBySide()\n\n\nReturns a \nboolean\n of the \noptions.sideBySide\n.\n\n\nsideBySide(sideBySide)\n\n\nTakes a \nboolean\n. If \nsideBySide\n is \ntrue\n and the time picker is used, both components will display side by side instead of collapsing.\n\n\n\n\ndaysOfWeekDisabled\n\n\nDefault: []\nAccepts: array of numbers from 0-6\n\n\n\nDisables the section of days of the week, e.g. weekends.\n\n\ndaysOfWeekDisabled()\n\n\nReturns an array with the \noptions.daysOfWeekDisabled\n configuration setting of the component.\n\n\ndaysOfWeekDisabled(daysOfWeek)\n\n\nTakes an \n[\n \nNumber\n:\n0\n to \n6\n \n]\n and disallow the user to select weekdays that exist in this array. This has lower priority over the \noptions.minDate\n, \noptions.maxDate\n, \noptions.disabledDates\n and \noptions.enabledDates\n configuration settings.\n\n\nEmits\n\n\n\n\n\n\ndp.change\n - if the currently selected moment falls in the values passed on the daysOfWeek parameter. (waiting for #472 to close in order to finalize this part)\n\n\n\n\n\n\ndp.error\n - if the currently selected moment falls in the values passed on the daysOfWeek parameter. (waiting for #472 to close in order to finalize this part)\n\n\n\n\n\n\n\n\ncalendarWeeks\n\n\nDefault: false\n\n\n\nShows the week of the year to the left of first day of the week.\n\n\n\n\ncalendarWeeks()\n\n\nReturns a \nboolean\n with the current \noptions.calendarWeeks\n option configuration\n\n\ncalendarWeeks(boolean)\n\n\nTakes a \nboolean\n variable to set if the week numbers will appear to the left on the days view\n\n\n\n\nviewMode\n\n\nDefault: 'days'\nAccepts: 'decades','years','months','days'\n\n\n\nThe default view to display when the picker is shown.\n\n\nNote\n: To limit the picker to selecting, for instance the year and month, use \nformat: MM/YYYY\n.\n\n\nviewMode()\n\n\nReturns a \nstring\n of the \noptions.viewMode\n.\n\n\nviewMode(newViewMode)\n\n\nTakes a \nstring\n. Valid values are \n'days'\n, \n'months'\n, \n'years'\n and \n'decades'\n\n\nThrows\n\n\n\n\nTypeError\n - if \nnewViewMode\n parameter is not an a \nstring\n or if \nnewViewMode\n is not a valid value.\n\n\n\n\n\n\ntoolbarPlacement\n\n\nDefault: 'default'\nAccepts: 'default', 'top', 'bottom'\n\n\n\nChanges the placement of the icon toolbar.\n\n\n\n\ntoolbarplacement()\n\n\nReturns a \nstring\n variable with the currently set \noptions.toolbarplacement\n option.\n\n\ntoolbarplacement(string)\n\n\nTakes a \nstring\n value. Valid values are \n'default'\n, \n'top'\n and \n'bottom'\n.\n\n\nChanges the placement of the toolbar where the today, clear, component switch icon are located.\n\n\n\n\nshowTodayButton\n\n\nDefault: false\n\n\n\nShow the \"Today\" button in the icon toolbar.\n\n\nClicking the \"Today\" button will set the calendar view and set the date to \nnow\n.\n\n\nshowTodayButton()\n\n\nReturns a \nboolean\n variable with the currently set \noptions.showTodayButton\n option.\n\n\nshowTodayButton(boolean)\n\n\nTakes a \nboolean\n variable to set if the Today button will appear on the widget\n\n\n\n\nshowClear\n\n\nDefault: false\n\n\n\nShow the \"Clear\" button in the icon toolbar.\n\n\nClicking the \"Clear\" button will set the calendar to null.\n\n\nshowClear()\n\n\nReturns a \nboolean\n variable with the currently set \noptions.showClear\n option.\n\n\nshowClear(boolean)\n\n\nTakes a \nboolean\n variable to set if the clear date button will appear on the widget\n\n\n\n\nshowClose\n\n\nDefault: false\n\n\n\nShow the \"Close\" button in the icon toolbar.\n\n\nClicking the \"Close\" button will call \nhide()\n\n\nshowClose()\n\n\nReturns a \nboolean\n variable with the currently set \noptions.showClose\n option.\n\n\nshowClose(boolean)\n\n\nTakes a \nboolean\n value.\n\n\nIf \ntrue\n, an icon will be displayed on the toolbar that will hide the picker\n\n\n\n\nwidgetPositioning\n\n\nDefault: {\n            horizontal: 'auto'\n            vertical: 'auto'\n         }\nAccepts: object with the all or one of the parameters above\n         horizontal: 'auto', 'left', 'right'\n         vertical: 'auto', 'top', 'bottom'\n\n\n\nwidgetPositioning()\n\n\nReturns the currently set \noptions.widgetPositioning\n object containing two keys \nhorizontal\n and \nvertical\n\n\nwidgetPositioning(positioningObject)\n\n\nTakes an object parameter that can contain two keys \nvertical\n and \nhorizontal\n each having a value of \n'auto', 'top', 'bottom'\n for \nvertical\n and \n'auto', 'left', 'right'\n for \nhorizontal\n which defines where the dropdown with the widget will appear relative to the input element the component is attached to.\n\n\n'auto'\n is the default value for both \nhorizontal\n and \nvertical\n keys and it tries to automatically place the dropdown in a position that is visible to the user. Usually you should not override those options unless you have a special need in your layout.\n\n\n\n\nwidgetParent\n\n\nDefault: null\nAccepts: string or jQuery object\n\n\n\nOn picker show, places the widget at the identifier (string) or jQuery object \nif\n the element has css \nposition: 'relative'\n\n\nwidgetParent()\n\n\nReturns a \n$(element)\n variable with the currently set \noptions.widgetParent\n option.\n\n\nwidgetParent(widgetParent)\n\n\nTakes a \nstring\n or \n$(element)\n value.\n\n\n\n\nkeepOpen\n\n\nDefault: false\n\n\n\nWill cause the date picker to stay open after selecting a date.\n\n\nkeepOpen()\n\n\nReturns a \nboolean\n variable with the currently set \noptions.keepOpen\n option.\n\n\nkeepOpen(boolean)\n\n\nTakes a \nboolean\n value.\n\n\n\n\ninline\n\n\nDefault: false\n\n\n\nWill display the picker inline without the need of a input field. This will also hide borders and shadows.\n\n\ninline()\n\n\nReturns a \nboolean\n variable with the currently set \noptions.inline\n option.\n\n\ninline(boolean)\n\n\nTakes a \nboolean\n value.\n\n\n\n\nkeepInvalid\n\n\n4.7.14\n\n\nDefault: false\n\n\n\nWill cause the date picker to \nnot\n revert or overwrite invalid dates.\n\n\nkeepInvalid()\n\n\nReturns a \nstring\n variable with the currently set \noptions.keepInvalid\n option.\n\n\nkeepInvalid(boolean)\n\n\nTakes a \nboolean\n value.\n\n\nIf \ntrue\n, invalid dates will not be reverted to a previous selection or changed.\n\n\n\n\nkeyBinds\n\n\nDefault: up: function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().subtract(7, 'd'));\n            } else {\n                this.date(this.date().clone().add(1, 'm'));\n            }\n        },\n        down: function (widget) {\n            if (!widget) {\n                this.show();\n            }\n            else if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().add(7, 'd'));\n            } else {\n                this.date(this.date().clone().subtract(1, 'm'));\n            }\n        },\n        'control up': function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().subtract(1, 'y'));\n            } else {\n                this.date(this.date().clone().add(1, 'h'));\n            }\n        },\n        'control down': function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().add(1, 'y'));\n            } else {\n                this.date(this.date().clone().subtract(1, 'h'));\n            }\n        },\n        left: function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().subtract(1, 'd'));\n            }\n        },\n        right: function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().add(1, 'd'));\n            }\n        },\n        pageUp: function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().subtract(1, 'M'));\n            }\n        },\n        pageDown: function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().add(1, 'M'));\n            }\n        },\n        enter: function () {\n            this.hide();\n        },\n        escape: function () {\n            this.hide();\n        },\n        'control space': function (widget) {\n            if (widget.find('.timepicker').is(':visible')) {\n                widget.find('.btn[data-action=\"togglePeriod\"]').click();\n            }\n        },\n        t: function () {\n            this.date(moment());\n        },\n        'delete': function () {\n            this.clear();\n        }\n\n\n\nAllows for custom events to fire on keyboard press.\n\n\nkeyBinds()\n\n\nReturns a \nstring\n variable with the currently set \noptions.keyBinds\n option.\n\n\nkeyBinds(object)\n\n\nTakes an \nobject\n value.\n\n\nAllows for several keyBinding functions to be specified for ease of access or accessibility. See the options page for defaults.\n\n\n\n\ndebug\n\n\n4.7.14\n\n\nDefault: false\n\n\n\nWill cause the date picker to stay open after a \nblur\n event.\n\n\n\n\nignoreReadonly\n\n\n4.7.14\n\n\nDefault: false\n\n\n\nAllow date picker show event to fire even when the associated input element has the \nreadonly=\"readonly\"\nproperty.\n\n\nignoreReadonly()\n\n\nReturns a \nboolean\n variable with the currently set \noptions.ignoreReadonly\n option.\n\n\nignoreReadonly(boolean)\n\n\nTakes a \nboolean\n value.\n\n\nSet this to \ntrue\n to allow the picker to be used even if the input field is \nreadonly\n. This will \nnot\n bypass the \ndisabled\n property\n\n\n\n\ndisabledTimeIntervals\n\n\n4.14.30\n\n\nDefault: false\n\n\n\nDisables time selection between the given \nmoments\n.\n\n\ndisabledTimeIntervals()\n\n\nReturns an \narray\n variable with the currently set \noptions.disabledTimeIntervals\n option.\n\n\ndisabledTimeIntervals(array)\n\n\nTakes a \narray\n value.\n\n\nThe array \nmust\n be in the following format \n[moment(),moment()]\n\n\nFor example:\n\n\ndisabledTimeIntervals: [[moment({ h: 0 }), moment({ h: 8 })], [moment({ h: 18 }), moment({ h: 24 })]]\n\n\n\nWill disable times between 12-8am and 6-12pm today\n\n\n\n\nallowInputToggle\n\n\n4.14.30\n\n\nDefault: false\n\n\n\nIf \ntrue\n, the picker will show on textbox focus and icon click when used in a button group.\n\n\nallowInputToggle()\n\n\nReturns a \nboolean\n variable with the currently set \noptions.allowInputToggle\n option.\n\n\nallowInputToggle(boolean)\n\n\nTakes a \nboolean\n value.\n\n\nIf \ntrue\n, the picker will show on textbox focus and icon click when used in a button group\n\n\n\n\nfocusOnShow\n\n\n4.14.30\n\n\nDefault: true\n\n\n\nIf \nfalse\n, the textbox will not be given focus when the picker is shown.\n\n\nfocusOnShow()\n\n\nReturns a \nboolean\n variable with the currently set \noptions.focusOnShow\n option.\n\n\nfocusOnShow(boolean)\n\n\nTakes a \nboolean\n value.\n\n\nIf \nfalse\n, the textbox will not be given focus when the picker is shown\n\n\n\n\nen/disabledHours\n\n\n4.14.30\n Issue: #851\n\n\nDefault: false\n\n\n\ndisabledHours()\n\n\nReturns an \narray\n variable with the currently set \noptions.en/disabledHours\n option.\n\n\ndisabledHours(boolean)\n\n\nTakes a \narray\n value.\n\n\nMust be in 24 hour format. Will allow or disallow hour selections (much like \ndisabledTimeIntervals\n) but will affect all days.\n\n\nLike \nen/disabledDates\n, these options are mutually exclusive and will reset one of the options back to false.\n\n\ndisabledHours: [0, 1, 2, 3, 4, 5, 6, 7, 8, 18, 19, 20, 21, 22, 23, 24]\nenabledHours: [9, 10, 11, 12, 13, 14, 15, 16]\n\n\n\n\n\nviewDate\n\n\n4.14.30\n\n\nDefault: false\n\n\n\nThis will change the \nviewDate\n without changing or setting the selected date.\n\n\n\n\nparseInputDate\n\n\n4.14.30\n Issue #1095\n\n\nparseInputDate()\n\n\nReturns a \nfunction\n with the currently set \noptions.parseInputDate\n\n\nparseInputDate(function)\n\n\nTakes a \nfunction\n\n\nAllows custom input formatting For example: the user can enter 'yesterday' or '30 days ago'.\n\n\nExample:\n\n\nvar parseRelativeDate = function(relativeDate) {\n\n    switch (relativeDate) {\n        case 'today':\n            return moment()\n        case 'yesterday':\n            return moment().subtract(1, 'day');\n        default:\n            return moment()\n                .subtract(Number(relativeDate.replace(\"days ago\", \"\").trim()), 'days');\n    }\n}\n\nvar parseInputDate = function(inputDate) {\n    var relativeDatePattern = /today|yesterday|[0-9]+\\s+(days ago)/,\n        resultDate;\n\n    if (moment.isMoment(inputDate) || inputDate instanceof Date) {\n        resultDate = moment(inputDate);\n    } else {\n        var relativeDate = inputDate.match(relativeDatePattern),\n            parseDate = null;\n\n        if (relativeDate !== null) \n          parseDate = this.parseRelativeDate(inputDate.match(relativeDatePattern)[0]);\n        else \n          parseDate = moment();\n\n        resultDate = moment(parseDate, \"YYYY-MM-DD\");\n    }\n\n    return resultDate;\n}\n\n\n\n\n\n\ntooltips\n\n\n4.15.35\n\n\ntooltips: {\n    today: 'Go to today',\n    clear: 'Clear selection',\n    close: 'Close the picker',\n    selectMonth: 'Select Month',\n    prevMonth: 'Previous Month',\n    nextMonth: 'Next Month',\n    selectYear: 'Select Year',\n    prevYear: 'Previous Year',\n    nextYear: 'Next Year',\n    selectDecade: 'Select Decade',\n    prevDecade: 'Previous Decade',\n    nextDecade: 'Next Decade',\n    prevCentury: 'Previous Century',\n    nextCentury: 'Next Century'\n}\n\n\n\n\nThis will change the \ntooltips\n over each icon to a custom string.\n\n\ntooltips()\n\n\nReturns an \nOjbect\n of \noptions.tooltips\n \n\n\ntooltips(tooltips)\n\n\nTakes an \nOjbect\n of \nstrings\n.\n\n\nThrows\n\n\n\n\nTypeError\n - if tooltips parameter is not an \nOjbect\n\n\n\n\n\n\ntimeZone\n\n\n4.17.37\n\n\ntimeZone: ''\n\n\n\n\nAllows the setting of the Time Zone. You must include \nmoment-timezone.js\n and \nmoment-timzone\n data. See moment timezone documentation for usage.\n\n\ntimeZone()\n\n\nReturns an \nstring\n of \noptions.timeZone\n \n\n\ntimeZone(timeZone)\n\n\nTakes an \nstring\n of a valid timezone.\n\n\nThrows\n\n\n\n\nTypeError\n - if tooltips parameter is not an \nstring",
            "title": "Options"
        },
        {
            "location": "/Options/#options",
            "text": "Note \n    All options are accessed via the  data  attribute e.g.  $('#datetimepicker').data(\"DateTimePicker\").OPTION()",
            "title": "Options"
        },
        {
            "location": "/Options/#options_1",
            "text": "Returns the components current options object. Note that the changing the values of the returned object does not change the components actual configuration. Use  options(options)  to set the components options massively or the other methods for setting config options individually.",
            "title": "options()"
        },
        {
            "location": "/Options/#optionsoptions",
            "text": "Takes an object variable with option key:value properties and configures the component. Use this to update multiple options on the component.",
            "title": "options([options])"
        },
        {
            "location": "/Options/#date",
            "text": "Returns the component's model current date, a  moment  object or  null  if not set.",
            "title": "date"
        },
        {
            "location": "/Options/#datenewdate",
            "text": "Takes  string, Date, moment, null  parameter and sets the components model current moment to it. Passing a  null  value unsets the components model current moment. Parsing of the newDate parameter is made using moment library with the  options.format  and  options.useStrict  components configuration.",
            "title": "date([newDate])"
        },
        {
            "location": "/Options/#throws",
            "text": "TypeError  - in case the  newDate  cannot be parsed",
            "title": "Throws"
        },
        {
            "location": "/Options/#emits",
            "text": "dp.change  - In case  newDate  is different from current moment",
            "title": "Emits"
        },
        {
            "location": "/Options/#format",
            "text": "Default: false  See  momentjs' docs  for valid formats. Format also dictates what components are shown, e.g.  MM/dd/YYYY  will not display the time picker.",
            "title": "format"
        },
        {
            "location": "/Options/#format_1",
            "text": "Returns the component's  options.format   string",
            "title": "format()"
        },
        {
            "location": "/Options/#formatformat",
            "text": "Takes a  moment.js  format  string  and sets the components   options.format . This is used for displaying and also for parsing input strings either from the input element the component is attached to or the  date()  function.\nThe parameter can also be a  boolean:false  in which case the format is set to the locale's  L LT .  Note:  this is also used to determine if the TimePicker sub component will display the hours in 12 or 24 format. (if 'a' or 'h' exists in the passed  string  then a 12 hour mode is set)",
            "title": "format(format)"
        },
        {
            "location": "/Options/#dayviewheaderformat",
            "text": "Default: 'MMMM YYYY'  Changes the heading of the datepicker when in \"days\" view.",
            "title": "dayViewHeaderFormat"
        },
        {
            "location": "/Options/#dayviewheaderformat_1",
            "text": "Returns a  string  variable with the currently set  options.dayViewHeaderFormat  option.",
            "title": "dayViewHeaderFormat()"
        },
        {
            "location": "/Options/#dayviewheaderformatstring",
            "text": "Takes a  string  value.  Used to customize the header of the day view.",
            "title": "dayViewHeaderFormat(string)"
        },
        {
            "location": "/Options/#extraformats",
            "text": "Default: false  Allows for several input formats to be valid. See  this PR .",
            "title": "extraFormats"
        },
        {
            "location": "/Options/#extraformats_1",
            "text": "Returns a  boolean  or array with the  options.extraFormats  option configuration",
            "title": "extraFormats()"
        },
        {
            "location": "/Options/#extraformatsformats",
            "text": "Takes an array of valid input moment format options.",
            "title": "extraFormats(formats)"
        },
        {
            "location": "/Options/#stepping",
            "text": "Default: 1  Number of minutes the up/down arrow's will move the minutes value in the time picker",
            "title": "stepping"
        },
        {
            "location": "/Options/#stepping_1",
            "text": "Returns a  number  with the  options.stepping  option configuration",
            "title": "stepping()"
        },
        {
            "location": "/Options/#steppingnumber",
            "text": "Takes a  number . This be the amount the up/down arrows move the minute value with a time picker.",
            "title": "stepping(number)"
        },
        {
            "location": "/Options/#minmaxdate",
            "text": "Default: false\nAccepts: date, moment, string  Prevents date/time selections before this date. Will override  defaultDate  and  useCurrent  if either of these settings are the same day since both options are invalid according to the rules you've selected.",
            "title": "min/maxDate"
        },
        {
            "location": "/Options/#mindate",
            "text": "Returns the currently set moment of the  options.minDate  or  false  if not set",
            "title": "minDate()"
        },
        {
            "location": "/Options/#mindatemindate",
            "text": "Takes a minDate  string, Date, moment, boolean:false  parameter and disallows the user to select a moment that is before that moment. If a  boolean:false  value is passed the  options.minDate  parameter is cleared and there is no restriction to the miminum moment the user can select.   Note:  If the minDate parameter is after the currently selected moment the currently selected moment changes to minDate parameter",
            "title": "minDate(minDate)"
        },
        {
            "location": "/Options/#throws_1",
            "text": "TypeError  - if minDate parameter cannot be parsed using the  options.format  and  options.useStrict  configuration settings    TypeError  - if minDate parameter is after  options.maxDate",
            "title": "Throws"
        },
        {
            "location": "/Options/#emits_1",
            "text": "dp.change  - if the new minDate is after currently selected moment (waiting for #472 to close in order to finalize this part)    dp.error  - if the new minDate is after currently selected moment (waiting for #472 to close in order to finalize this part)",
            "title": "Emits"
        },
        {
            "location": "/Options/#maxdate",
            "text": "Returns the currently set moment of the  options.maxDate  or  false  if not set",
            "title": "maxDate()"
        },
        {
            "location": "/Options/#maxdatemaxdate",
            "text": "Takes a maxDate  string, Date, moment, boolean:false  parameter and disallows the user to select a moment that is after that moment. If a  boolean:false  value is passed  options.maxDate  is cleared and there is no restriction to the maximum moment the user can select.  Note:  If maxDate is before the currently selected moment the currently selected moment changes to maxDate",
            "title": "maxDate(maxDate)"
        },
        {
            "location": "/Options/#throws_2",
            "text": "TypeError  - if maxDate parameter cannot be parsed using the  options.format  and  options.useStrict  configuration settings    TypeError  - if maxDate parameter is before  options.minDate",
            "title": "Throws"
        },
        {
            "location": "/Options/#emits_2",
            "text": "dp.change  - if the new maxDate is after currently selected moment  (waiting for #472 to close in order to finalize this part)    dp.error  - if the new maxDate is after currently selected moment  (waiting for #472 to close in order to finalize this part)",
            "title": "Emits"
        },
        {
            "location": "/Options/#usecurrent",
            "text": "Default: true  On  show , will set the picker to the current date/time.",
            "title": "useCurrent"
        },
        {
            "location": "/Options/#usecurrent_1",
            "text": "Returns a  boolean  or  string  with the  options.useCurrent  option configuration",
            "title": "useCurrent()"
        },
        {
            "location": "/Options/#usecurrentboolean-or-string",
            "text": "Takes a  boolean  or  string . If a  boolean  true is passed and the components model moment is not set (either through  setDate  or through a valid value on the input element the component is attached to) then the first time the user opens the datetimepicker widget the value is initialized to the current moment of the action. If a false  boolean  is passed then no initialization happens on the input element. You can select the granularity on the initialized moment by passing one of the following strings ( 'year', 'month', 'day', 'hour', 'minute' ) in the variable.  If for example you pass  'day'  to the  setUseCurrent  function and the input field is empty the first time the user opens the datetimepicker widget the input text will be initialized to the current datetime with day granularity (ie if currentTime =  2014-08-10 13:32:33  the input value will be initialized to  2014-08-10 00:00:00 )  Note:  If the  options.defaultDate  is set or the input element the component is attached to has already a value that takes precedence and the functionality of  useCurrent  is not triggered!",
            "title": "useCurrent(boolean or string)"
        },
        {
            "location": "/Options/#collapse",
            "text": "Default: true  Using a Bootstraps collapse to switch between date/time pickers.",
            "title": "collapse"
        },
        {
            "location": "/Options/#collapse_1",
            "text": "Returns a  boolean  of the  options.sideBySide .",
            "title": "collapse()"
        },
        {
            "location": "/Options/#collapsecollapse",
            "text": "Takes a  boolean . If set to  false  the picker will display similar to  sideBySide  except vertical.",
            "title": "collapse(collapse)"
        },
        {
            "location": "/Options/#locale",
            "text": "Default: moment.locale()\nAccepts: string, moment.locale('locale')  See  momentjs  for valid locales.  You must include  moment-with-locales.js  or a local js file.",
            "title": "locale"
        },
        {
            "location": "/Options/#locale_1",
            "text": "Returns the currently set locale of the  options.locale",
            "title": "locale()"
        },
        {
            "location": "/Options/#localenewlocale",
            "text": "Takes a  string  of any valid  moment locale  e.g.  de  for German.",
            "title": "locale(newLocale)"
        },
        {
            "location": "/Options/#throws_3",
            "text": "TypeError  - if the locale is not loaded via a separate script or  moment-with-locales",
            "title": "Throws"
        },
        {
            "location": "/Options/#defaultdate",
            "text": "Default: false\nAccepts: date, moment, string  Sets the picker default date/time. Overrides  useCurrent",
            "title": "defaultDate"
        },
        {
            "location": "/Options/#defaultdate_1",
            "text": "Returns a  moment  with the  options.defaultDate  option configuration or  false  if not set",
            "title": "defaultDate()"
        },
        {
            "location": "/Options/#defaultdatedefaultdate",
            "text": "Takes a  string, Date, moment, boolean:false . Will set the picker's inital date. If a  boolean:false  value is passed the  options.defaultDate  parameter is cleared.     TypeError  - if the provided date pass validation, including  disabledDates ,  enabledDates ,  minDate ,  maxDate , and  daysOfWeekDisabled    TypeError  - if the provided date cannot be parsed by momentjs",
            "title": "defaultDate(defaultDate)"
        },
        {
            "location": "/Options/#endisableddates",
            "text": "Default: false\nAccepts: array of [date, moment, string]",
            "title": "en/disabledDates"
        },
        {
            "location": "/Options/#disableddates",
            "text": "Returns an array with the currently set disabled dates on the component.",
            "title": "disabledDates()"
        },
        {
            "location": "/Options/#disableddatesdates",
            "text": "Takes an  [   string  or  Date  or  moment   ]  of values and disallows the user to select those days. Setting this takes precedence over  options.minDate ,  options.maxDate  configuration. Also calling this function removes the configuration of options.enabledDates if such exist.  Note:  These values are matched with  Day  granularity.",
            "title": "disabledDates(dates)"
        },
        {
            "location": "/Options/#enableddates",
            "text": "Returns an array with the currently set enabled dates on the component.",
            "title": "enabledDates()"
        },
        {
            "location": "/Options/#enableddatesdates",
            "text": "Takes an  [   string  or  Date  or  moment   ]  of values and allows the user to select only from those days. Setting this takes precedence over  options.minDate ,  options.maxDate  configuration. Also calling this function removes the configuration of options.disabledDates if such exist.  Note:  These values are matched with  Day  granularity.",
            "title": "enabledDates(dates)"
        },
        {
            "location": "/Options/#icons",
            "text": "Default: {\n            time: 'glyphicon glyphicon-time',\n            date: 'glyphicon glyphicon-calendar',\n            up: 'glyphicon glyphicon-chevron-up',\n            down: 'glyphicon glyphicon-chevron-down',\n            previous: 'glyphicon glyphicon-chevron-left',\n            next: 'glyphicon glyphicon-chevron-right',\n            today: 'glyphicon glyphicon-screenshot',\n            clear: 'glyphicon glyphicon-trash',\n            close: 'glyphicon glyphicon-remove'\n        }\nAccepts: object with all or some of the parameters above  Change the default icons for the pickers functions.",
            "title": "icons"
        },
        {
            "location": "/Options/#icons_1",
            "text": "Returns an  Ojbect  of  options.icons",
            "title": "icons()"
        },
        {
            "location": "/Options/#iconsicons",
            "text": "Takes an  Ojbect  of  strings .",
            "title": "icons(icons)"
        },
        {
            "location": "/Options/#throws_4",
            "text": "TypeError  - if icons parameter is not an  Ojbect",
            "title": "Throws"
        },
        {
            "location": "/Options/#usestrict",
            "text": "Default: false  Defines if moment should use strict date parsing when considering a date to be valid.",
            "title": "useStrict"
        },
        {
            "location": "/Options/#usestrict_1",
            "text": "Returns a  boolean  of the  options.useStrict",
            "title": "useStrict()"
        },
        {
            "location": "/Options/#usestrictusestrict",
            "text": "Takes a  boolean . If  useStrict  is  true , momentjs parsing rules will be stricter when determining if a date is valid or not.",
            "title": "useStrict(useStrict)"
        },
        {
            "location": "/Options/#sidebyside",
            "text": "Default: false  Shows the picker side by side when using the time and date together.",
            "title": "sideBySide"
        },
        {
            "location": "/Options/#sidebyside_1",
            "text": "Returns a  boolean  of the  options.sideBySide .",
            "title": "sideBySide()"
        },
        {
            "location": "/Options/#sidebysidesidebyside",
            "text": "Takes a  boolean . If  sideBySide  is  true  and the time picker is used, both components will display side by side instead of collapsing.",
            "title": "sideBySide(sideBySide)"
        },
        {
            "location": "/Options/#daysofweekdisabled",
            "text": "Default: []\nAccepts: array of numbers from 0-6  Disables the section of days of the week, e.g. weekends.",
            "title": "daysOfWeekDisabled"
        },
        {
            "location": "/Options/#daysofweekdisabled_1",
            "text": "Returns an array with the  options.daysOfWeekDisabled  configuration setting of the component.",
            "title": "daysOfWeekDisabled()"
        },
        {
            "location": "/Options/#daysofweekdisableddaysofweek",
            "text": "Takes an  [   Number : 0  to  6   ]  and disallow the user to select weekdays that exist in this array. This has lower priority over the  options.minDate ,  options.maxDate ,  options.disabledDates  and  options.enabledDates  configuration settings.",
            "title": "daysOfWeekDisabled(daysOfWeek)"
        },
        {
            "location": "/Options/#emits_3",
            "text": "dp.change  - if the currently selected moment falls in the values passed on the daysOfWeek parameter. (waiting for #472 to close in order to finalize this part)    dp.error  - if the currently selected moment falls in the values passed on the daysOfWeek parameter. (waiting for #472 to close in order to finalize this part)",
            "title": "Emits"
        },
        {
            "location": "/Options/#calendarweeks",
            "text": "Default: false  Shows the week of the year to the left of first day of the week.",
            "title": "calendarWeeks"
        },
        {
            "location": "/Options/#calendarweeks_1",
            "text": "Returns a  boolean  with the current  options.calendarWeeks  option configuration",
            "title": "calendarWeeks()"
        },
        {
            "location": "/Options/#calendarweeksboolean",
            "text": "Takes a  boolean  variable to set if the week numbers will appear to the left on the days view",
            "title": "calendarWeeks(boolean)"
        },
        {
            "location": "/Options/#viewmode",
            "text": "Default: 'days'\nAccepts: 'decades','years','months','days'  The default view to display when the picker is shown.  Note : To limit the picker to selecting, for instance the year and month, use  format: MM/YYYY .",
            "title": "viewMode"
        },
        {
            "location": "/Options/#viewmode_1",
            "text": "Returns a  string  of the  options.viewMode .",
            "title": "viewMode()"
        },
        {
            "location": "/Options/#viewmodenewviewmode",
            "text": "Takes a  string . Valid values are  'days' ,  'months' ,  'years'  and  'decades'",
            "title": "viewMode(newViewMode)"
        },
        {
            "location": "/Options/#throws_5",
            "text": "TypeError  - if  newViewMode  parameter is not an a  string  or if  newViewMode  is not a valid value.",
            "title": "Throws"
        },
        {
            "location": "/Options/#toolbarplacement",
            "text": "Default: 'default'\nAccepts: 'default', 'top', 'bottom'  Changes the placement of the icon toolbar.",
            "title": "toolbarPlacement"
        },
        {
            "location": "/Options/#toolbarplacement_1",
            "text": "Returns a  string  variable with the currently set  options.toolbarplacement  option.",
            "title": "toolbarplacement()"
        },
        {
            "location": "/Options/#toolbarplacementstring",
            "text": "Takes a  string  value. Valid values are  'default' ,  'top'  and  'bottom' .  Changes the placement of the toolbar where the today, clear, component switch icon are located.",
            "title": "toolbarplacement(string)"
        },
        {
            "location": "/Options/#showtodaybutton",
            "text": "Default: false  Show the \"Today\" button in the icon toolbar.  Clicking the \"Today\" button will set the calendar view and set the date to  now .",
            "title": "showTodayButton"
        },
        {
            "location": "/Options/#showtodaybutton_1",
            "text": "Returns a  boolean  variable with the currently set  options.showTodayButton  option.",
            "title": "showTodayButton()"
        },
        {
            "location": "/Options/#showtodaybuttonboolean",
            "text": "Takes a  boolean  variable to set if the Today button will appear on the widget",
            "title": "showTodayButton(boolean)"
        },
        {
            "location": "/Options/#showclear",
            "text": "Default: false  Show the \"Clear\" button in the icon toolbar.  Clicking the \"Clear\" button will set the calendar to null.",
            "title": "showClear"
        },
        {
            "location": "/Options/#showclear_1",
            "text": "Returns a  boolean  variable with the currently set  options.showClear  option.",
            "title": "showClear()"
        },
        {
            "location": "/Options/#showclearboolean",
            "text": "Takes a  boolean  variable to set if the clear date button will appear on the widget",
            "title": "showClear(boolean)"
        },
        {
            "location": "/Options/#showclose",
            "text": "Default: false  Show the \"Close\" button in the icon toolbar.  Clicking the \"Close\" button will call  hide()",
            "title": "showClose"
        },
        {
            "location": "/Options/#showclose_1",
            "text": "Returns a  boolean  variable with the currently set  options.showClose  option.",
            "title": "showClose()"
        },
        {
            "location": "/Options/#showcloseboolean",
            "text": "Takes a  boolean  value.  If  true , an icon will be displayed on the toolbar that will hide the picker",
            "title": "showClose(boolean)"
        },
        {
            "location": "/Options/#widgetpositioning",
            "text": "Default: {\n            horizontal: 'auto'\n            vertical: 'auto'\n         }\nAccepts: object with the all or one of the parameters above\n         horizontal: 'auto', 'left', 'right'\n         vertical: 'auto', 'top', 'bottom'",
            "title": "widgetPositioning"
        },
        {
            "location": "/Options/#widgetpositioning_1",
            "text": "Returns the currently set  options.widgetPositioning  object containing two keys  horizontal  and  vertical",
            "title": "widgetPositioning()"
        },
        {
            "location": "/Options/#widgetpositioningpositioningobject",
            "text": "Takes an object parameter that can contain two keys  vertical  and  horizontal  each having a value of  'auto', 'top', 'bottom'  for  vertical  and  'auto', 'left', 'right'  for  horizontal  which defines where the dropdown with the widget will appear relative to the input element the component is attached to.  'auto'  is the default value for both  horizontal  and  vertical  keys and it tries to automatically place the dropdown in a position that is visible to the user. Usually you should not override those options unless you have a special need in your layout.",
            "title": "widgetPositioning(positioningObject)"
        },
        {
            "location": "/Options/#widgetparent",
            "text": "Default: null\nAccepts: string or jQuery object  On picker show, places the widget at the identifier (string) or jQuery object  if  the element has css  position: 'relative'",
            "title": "widgetParent"
        },
        {
            "location": "/Options/#widgetparent_1",
            "text": "Returns a  $(element)  variable with the currently set  options.widgetParent  option.",
            "title": "widgetParent()"
        },
        {
            "location": "/Options/#widgetparentwidgetparent",
            "text": "Takes a  string  or  $(element)  value.",
            "title": "widgetParent(widgetParent)"
        },
        {
            "location": "/Options/#keepopen",
            "text": "Default: false  Will cause the date picker to stay open after selecting a date.",
            "title": "keepOpen"
        },
        {
            "location": "/Options/#keepopen_1",
            "text": "Returns a  boolean  variable with the currently set  options.keepOpen  option.",
            "title": "keepOpen()"
        },
        {
            "location": "/Options/#keepopenboolean",
            "text": "Takes a  boolean  value.",
            "title": "keepOpen(boolean)"
        },
        {
            "location": "/Options/#inline",
            "text": "Default: false  Will display the picker inline without the need of a input field. This will also hide borders and shadows.",
            "title": "inline"
        },
        {
            "location": "/Options/#inline_1",
            "text": "Returns a  boolean  variable with the currently set  options.inline  option.",
            "title": "inline()"
        },
        {
            "location": "/Options/#inlineboolean",
            "text": "Takes a  boolean  value.",
            "title": "inline(boolean)"
        },
        {
            "location": "/Options/#keepinvalid",
            "text": "4.7.14  Default: false  Will cause the date picker to  not  revert or overwrite invalid dates.",
            "title": "keepInvalid"
        },
        {
            "location": "/Options/#keepinvalid_1",
            "text": "Returns a  string  variable with the currently set  options.keepInvalid  option.",
            "title": "keepInvalid()"
        },
        {
            "location": "/Options/#keepinvalidboolean",
            "text": "Takes a  boolean  value.  If  true , invalid dates will not be reverted to a previous selection or changed.",
            "title": "keepInvalid(boolean)"
        },
        {
            "location": "/Options/#keybinds",
            "text": "Default: up: function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().subtract(7, 'd'));\n            } else {\n                this.date(this.date().clone().add(1, 'm'));\n            }\n        },\n        down: function (widget) {\n            if (!widget) {\n                this.show();\n            }\n            else if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().add(7, 'd'));\n            } else {\n                this.date(this.date().clone().subtract(1, 'm'));\n            }\n        },\n        'control up': function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().subtract(1, 'y'));\n            } else {\n                this.date(this.date().clone().add(1, 'h'));\n            }\n        },\n        'control down': function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().add(1, 'y'));\n            } else {\n                this.date(this.date().clone().subtract(1, 'h'));\n            }\n        },\n        left: function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().subtract(1, 'd'));\n            }\n        },\n        right: function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().add(1, 'd'));\n            }\n        },\n        pageUp: function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().subtract(1, 'M'));\n            }\n        },\n        pageDown: function (widget) {\n            if (widget.find('.datepicker').is(':visible')) {\n                this.date(this.date().clone().add(1, 'M'));\n            }\n        },\n        enter: function () {\n            this.hide();\n        },\n        escape: function () {\n            this.hide();\n        },\n        'control space': function (widget) {\n            if (widget.find('.timepicker').is(':visible')) {\n                widget.find('.btn[data-action=\"togglePeriod\"]').click();\n            }\n        },\n        t: function () {\n            this.date(moment());\n        },\n        'delete': function () {\n            this.clear();\n        }  Allows for custom events to fire on keyboard press.",
            "title": "keyBinds"
        },
        {
            "location": "/Options/#keybinds_1",
            "text": "Returns a  string  variable with the currently set  options.keyBinds  option.",
            "title": "keyBinds()"
        },
        {
            "location": "/Options/#keybindsobject",
            "text": "Takes an  object  value.  Allows for several keyBinding functions to be specified for ease of access or accessibility. See the options page for defaults.",
            "title": "keyBinds(object)"
        },
        {
            "location": "/Options/#debug",
            "text": "4.7.14  Default: false  Will cause the date picker to stay open after a  blur  event.",
            "title": "debug"
        },
        {
            "location": "/Options/#ignorereadonly",
            "text": "4.7.14  Default: false  Allow date picker show event to fire even when the associated input element has the  readonly=\"readonly\" property.",
            "title": "ignoreReadonly"
        },
        {
            "location": "/Options/#ignorereadonly_1",
            "text": "Returns a  boolean  variable with the currently set  options.ignoreReadonly  option.",
            "title": "ignoreReadonly()"
        },
        {
            "location": "/Options/#ignorereadonlyboolean",
            "text": "Takes a  boolean  value.  Set this to  true  to allow the picker to be used even if the input field is  readonly . This will  not  bypass the  disabled  property",
            "title": "ignoreReadonly(boolean)"
        },
        {
            "location": "/Options/#disabledtimeintervals",
            "text": "4.14.30  Default: false  Disables time selection between the given  moments .",
            "title": "disabledTimeIntervals"
        },
        {
            "location": "/Options/#disabledtimeintervals_1",
            "text": "Returns an  array  variable with the currently set  options.disabledTimeIntervals  option.",
            "title": "disabledTimeIntervals()"
        },
        {
            "location": "/Options/#disabledtimeintervalsarray",
            "text": "Takes a  array  value.  The array  must  be in the following format  [moment(),moment()]  For example:  disabledTimeIntervals: [[moment({ h: 0 }), moment({ h: 8 })], [moment({ h: 18 }), moment({ h: 24 })]]  Will disable times between 12-8am and 6-12pm today",
            "title": "disabledTimeIntervals(array)"
        },
        {
            "location": "/Options/#allowinputtoggle",
            "text": "4.14.30  Default: false  If  true , the picker will show on textbox focus and icon click when used in a button group.",
            "title": "allowInputToggle"
        },
        {
            "location": "/Options/#allowinputtoggle_1",
            "text": "Returns a  boolean  variable with the currently set  options.allowInputToggle  option.",
            "title": "allowInputToggle()"
        },
        {
            "location": "/Options/#allowinputtoggleboolean",
            "text": "Takes a  boolean  value.  If  true , the picker will show on textbox focus and icon click when used in a button group",
            "title": "allowInputToggle(boolean)"
        },
        {
            "location": "/Options/#focusonshow",
            "text": "4.14.30  Default: true  If  false , the textbox will not be given focus when the picker is shown.",
            "title": "focusOnShow"
        },
        {
            "location": "/Options/#focusonshow_1",
            "text": "Returns a  boolean  variable with the currently set  options.focusOnShow  option.",
            "title": "focusOnShow()"
        },
        {
            "location": "/Options/#focusonshowboolean",
            "text": "Takes a  boolean  value.  If  false , the textbox will not be given focus when the picker is shown",
            "title": "focusOnShow(boolean)"
        },
        {
            "location": "/Options/#endisabledhours",
            "text": "4.14.30  Issue: #851  Default: false",
            "title": "en/disabledHours"
        },
        {
            "location": "/Options/#disabledhours",
            "text": "Returns an  array  variable with the currently set  options.en/disabledHours  option.",
            "title": "disabledHours()"
        },
        {
            "location": "/Options/#disabledhoursboolean",
            "text": "Takes a  array  value.  Must be in 24 hour format. Will allow or disallow hour selections (much like  disabledTimeIntervals ) but will affect all days.  Like  en/disabledDates , these options are mutually exclusive and will reset one of the options back to false.  disabledHours: [0, 1, 2, 3, 4, 5, 6, 7, 8, 18, 19, 20, 21, 22, 23, 24]\nenabledHours: [9, 10, 11, 12, 13, 14, 15, 16]",
            "title": "disabledHours(boolean)"
        },
        {
            "location": "/Options/#viewdate",
            "text": "4.14.30  Default: false  This will change the  viewDate  without changing or setting the selected date.",
            "title": "viewDate"
        },
        {
            "location": "/Options/#parseinputdate",
            "text": "4.14.30  Issue #1095",
            "title": "parseInputDate"
        },
        {
            "location": "/Options/#parseinputdate_1",
            "text": "Returns a  function  with the currently set  options.parseInputDate",
            "title": "parseInputDate()"
        },
        {
            "location": "/Options/#parseinputdatefunction",
            "text": "Takes a  function  Allows custom input formatting For example: the user can enter 'yesterday' or '30 days ago'.  Example:  var parseRelativeDate = function(relativeDate) {\n\n    switch (relativeDate) {\n        case 'today':\n            return moment()\n        case 'yesterday':\n            return moment().subtract(1, 'day');\n        default:\n            return moment()\n                .subtract(Number(relativeDate.replace(\"days ago\", \"\").trim()), 'days');\n    }\n}\n\nvar parseInputDate = function(inputDate) {\n    var relativeDatePattern = /today|yesterday|[0-9]+\\s+(days ago)/,\n        resultDate;\n\n    if (moment.isMoment(inputDate) || inputDate instanceof Date) {\n        resultDate = moment(inputDate);\n    } else {\n        var relativeDate = inputDate.match(relativeDatePattern),\n            parseDate = null;\n\n        if (relativeDate !== null) \n          parseDate = this.parseRelativeDate(inputDate.match(relativeDatePattern)[0]);\n        else \n          parseDate = moment();\n\n        resultDate = moment(parseDate, \"YYYY-MM-DD\");\n    }\n\n    return resultDate;\n}",
            "title": "parseInputDate(function)"
        },
        {
            "location": "/Options/#tooltips",
            "text": "4.15.35  tooltips: {\n    today: 'Go to today',\n    clear: 'Clear selection',\n    close: 'Close the picker',\n    selectMonth: 'Select Month',\n    prevMonth: 'Previous Month',\n    nextMonth: 'Next Month',\n    selectYear: 'Select Year',\n    prevYear: 'Previous Year',\n    nextYear: 'Next Year',\n    selectDecade: 'Select Decade',\n    prevDecade: 'Previous Decade',\n    nextDecade: 'Next Decade',\n    prevCentury: 'Previous Century',\n    nextCentury: 'Next Century'\n}  This will change the  tooltips  over each icon to a custom string.",
            "title": "tooltips"
        },
        {
            "location": "/Options/#tooltips_1",
            "text": "Returns an  Ojbect  of  options.tooltips",
            "title": "tooltips()"
        },
        {
            "location": "/Options/#tooltipstooltips",
            "text": "Takes an  Ojbect  of  strings .",
            "title": "tooltips(tooltips)"
        },
        {
            "location": "/Options/#throws_6",
            "text": "TypeError  - if tooltips parameter is not an  Ojbect",
            "title": "Throws"
        },
        {
            "location": "/Options/#timezone",
            "text": "4.17.37  timeZone: ''  Allows the setting of the Time Zone. You must include  moment-timezone.js  and  moment-timzone  data. See moment timezone documentation for usage.",
            "title": "timeZone"
        },
        {
            "location": "/Options/#timezone_1",
            "text": "Returns an  string  of  options.timeZone",
            "title": "timeZone()"
        },
        {
            "location": "/Options/#timezonetimezone",
            "text": "Takes an  string  of a valid timezone.",
            "title": "timeZone(timeZone)"
        },
        {
            "location": "/Options/#throws_7",
            "text": "TypeError  - if tooltips parameter is not an  string",
            "title": "Throws"
        },
        {
            "location": "/Events/",
            "text": "Events\n\n\ndp.hide\n\n\nFired when the widget is hidden.\n\n\nParameters:\n\n\ne = {\n    date //the currently set date. Type: moment object (clone)\n}\n\n\n\n\nEmitted from:\n\n\n\n\ntoggle()\n\n\nhide()\n\n\ndisable()\n\n\n\n\n\n\ndp.show\n\n\nFired when the widget is shown.\n\n\nParameters:\n\n\nNo parameters are include, listen to \ndp.change\n instead\n\n\nEmitted from:\n\n\n\n\ntoggle()\n\n\nshow()\n\n\n\n\n\n\ndp.change\n\n\nFired when the date is changed, including when changed to a non-date (e.g. When keepInvalid=true).\n\n\nParameters:\n\n\ne = {\n    date, //date the picker changed to. Type: moment object (clone)\n    oldDate //previous date. Type: moment object (clone) or false in the event of a null\n}\n\n\n\n\nEmitted from:\n\n\n\n\ntoggle() \nNote\n: Only fired when using \nuseCurrent\n\n\nshow() \nNote\n: Only fired when using \nuseCurrent\n or when or the date is changed to comply with date rules (min/max etc)\n\n\ndate(newDate)\n\n\nminDate(minDate)\n\n\nmaxDate(maxDate)\n\n\ndaysOfWeekDisabled()\n\n\n\n\n\n\ndp.error\n\n\nFired when a selected date fails to pass validation.\n\n\nParameters:\n\n\ne = {\n    date //the invalid date. Type: moment object (clone)\n    oldDate //previous date. Type: moment object (clone) or false in the event of a null\n}\n\n\n\n\nEmmited from:\n\n\n\n\nminDate(minDate)\n\n\nmaxDate(maxDate)\n\n\ndaysOfWeekDisabled()\n\n\nsetValue() \nprivate function\n\n\n\n\n\n\ndp.update\n\n\n4.14.30\n\n\nFired (in most cases) when the \nviewDate\n changes. E.g. Next and Previous buttons, selecting a year.\n\n\nParameters:\n\n\ne = {\n   change, //Change type as a momentjs format token. Type: string e.g. yyyy on year change\n   viewDate //new viewDate. Type: moment object\n}",
            "title": "Events"
        },
        {
            "location": "/Events/#events",
            "text": "",
            "title": "Events"
        },
        {
            "location": "/Events/#dphide",
            "text": "Fired when the widget is hidden.  Parameters:  e = {\n    date //the currently set date. Type: moment object (clone)\n}  Emitted from:   toggle()  hide()  disable()",
            "title": "dp.hide"
        },
        {
            "location": "/Events/#dpshow",
            "text": "Fired when the widget is shown.  Parameters:  No parameters are include, listen to  dp.change  instead  Emitted from:   toggle()  show()",
            "title": "dp.show"
        },
        {
            "location": "/Events/#dpchange",
            "text": "Fired when the date is changed, including when changed to a non-date (e.g. When keepInvalid=true).  Parameters:  e = {\n    date, //date the picker changed to. Type: moment object (clone)\n    oldDate //previous date. Type: moment object (clone) or false in the event of a null\n}  Emitted from:   toggle()  Note : Only fired when using  useCurrent  show()  Note : Only fired when using  useCurrent  or when or the date is changed to comply with date rules (min/max etc)  date(newDate)  minDate(minDate)  maxDate(maxDate)  daysOfWeekDisabled()",
            "title": "dp.change"
        },
        {
            "location": "/Events/#dperror",
            "text": "Fired when a selected date fails to pass validation.  Parameters:  e = {\n    date //the invalid date. Type: moment object (clone)\n    oldDate //previous date. Type: moment object (clone) or false in the event of a null\n}  Emmited from:   minDate(minDate)  maxDate(maxDate)  daysOfWeekDisabled()  setValue()  private function",
            "title": "dp.error"
        },
        {
            "location": "/Events/#dpupdate",
            "text": "4.14.30  Fired (in most cases) when the  viewDate  changes. E.g. Next and Previous buttons, selecting a year.  Parameters:  e = {\n   change, //Change type as a momentjs format token. Type: string e.g. yyyy on year change\n   viewDate //new viewDate. Type: moment object\n}",
            "title": "dp.update"
        },
        {
            "location": "/Changelog/",
            "text": "Version 4\n\n\n4.17.42\n\n\nBug Squashing\n\n\n\n\nfixed moment dependencies to all be the same\n\n\ndefaulted \noption.timeZone\n to \n''\n instead of UTC. This way it will default to the local timezone if it's not set.\n\n\nfixed #959\n\n\nfixed #1311 internal \ngetMoment\n function no longer sets \nstartOf('d')\n\n\nfixed #935\n\n\n\n\nOther\n\n\n\n\nmoved some (will move the rest soon) inline docs to JSDoc now that ReSharper supports it.\n\n\nmoved getter/setter functions to options page instead. #1313\n\n\n\n\n4.17.37\n\n\nNew Features\n\n\n\n\nMomentjs TZ intergration #1242 thanks @bodrick\n\n\nIndependent CSS file, in case you don't want bootstrap for some reason\n\n\n\n\nBug Squashing\n\n\n\n\nSlight changes decade view\n\n\nMoved all tooltip text to \ntooltips\n\n\nfixed #1212\n\n\n\n\n4.15.35\n\n\nNew Features\n\n\ntooltips\n allows custom, localized text to be included for icon tooltips\n\n\nBug Squashing\n\n\nfixed #1066\n\n\nfixed #1087 \nsideBySide\n properly supports \ntoolbarPlacement [top, bottom]\n\n\nfixed #1119 \n\n\nfixed #1069 added input.blur()\n\n\nfixed #1049 fixed doc example \n\n\nfixed #999 picker now looks for an element with \n.input-group-addon\n\n\n4.14.30\n\n\nNew Features\n\n\ndisabledTimeIntervals\n #644\n\n\nallowInputToggle\n #929\n\n\nfocusOnShow\n #884\n\n\npublic \nviewDate\n function #872\n\n\nenabledHours\n and \ndisabledHours\n.\n\n\ndp.update\n fires when \nviewDate\n is changed (in most cases) #937\n\n\nviewMode\n now supports a decades view. \n\n\nNote\n: because the year picker shows 12 years at a time, I've elected to make this view show blocks of 12 years\n\n\nNote\n: when selecting a decade the \nviewDate\n will change to the \ncenter\n of the selected years\n\n\nparseInputDate\n #1095\n\n\nBug Squashing\n\n\nfixed #815 by adding \n.wider\n when using both seconds and am/pm.\n\n\nfixed #816 changed both min/max date to move the selected date inside.\n\n\nfixed #855 #881 \nfillDate\n, \nfillMonths\n, \nfillDow\n uses \nstartOf('day')\n, which will hopefully fix the DST issues.\n\n\nfixed #885 \ndaysOfWeekDisabled\n will move the date to a valid date if \nuseCurrent\n is \ntrue\n. Today button will check if the DoW is disabled.\n\n\nfixed #906\n\n\nfixed #912 if \nuseCurrent:false\n month and year view will no longer have the current month/year selected.\n\n\nfixed #914 \nuse24hours\n will ignore anything in side of \n[]\n in the format string.\n\n\nfixed #916 added titles to all icons. At some point the text should be moved to the icon's array, but this would probably be a breaking change.\n\n\nfixed #940 added -1 tab index to am/pm selector\n\n\nOther Changes\n\n\nchanged in/decrement behavior to check if the new date is valid at that granularity (hours, minutes, seconds). will also validate as before\n\n\n4.7.14\n\n\nAdded several in new features:\n\n\n`keybinds`, `inline`, `debug`, `clear()`, `showClose`, `ingoreReadOnly`, `datepickerInput` and `keepInvalid`.\n\n\n\nBug squashing\n\n\n4.0.0\n\n\nChanges for using the component\n\n\n\n\n\n\nDefined a \nPublic API\n and hidden rest of functions, variables so that all configuration options can be changed dynamically.\n\n\n\n\n\n\nset/getDate()\n is now replaced with an overloaded \ndate()\n function. Use it without a parameter to get the currently set date or with a parameter to set the date.\n\n\n\n\n\n\nhide()\n, \nshow()\n, \ntoggle()\n, \nenable()\n, \ndisable()\n and the rest of setter functions now support chaining. ie \n$('#id').data('DateTimePicker').format('DD-MM-YYYY').minDate(moment()).defaultDate(moment()).show()\n works\n\n\n\n\n\n\nReplaced previous - next buttons in Date subviews with configurable icons\n\n\n\n\n\n\nChanged \nlanguage\n option name to \nlocale\n to be inline with moment naming\n\n\n\n\n\n\nImplemented #402 all data-date-* variables are more readable and also match with the ones in the configuration object\n\n\n\n\n\n\noptions.direction\n and \noptions.orientation\n were merged into a single object \noptions.widgetPositioning\n with \nvertical\n and \nhorizontal\n keys that take a string value of \n'auto', 'top', 'bottom'\n and \n'auto', 'left', 'right'\n respectively. Note that the \n'up'\n option was renamed to \n'top'\n\n\n\n\n\n\nAdded functionality\n\n\n\n\n\n\nadded a second way to define options as data attributes. Instead of adding distinct \ndata-date-*\n config options you can now also pass a \ndata-date-options\n attribute containing an object just the same as the options object that \nelement.datetimepicker\n constructor call takes\n\n\n\n\n\n\nalso added a \noptions()\n public api function to get/set that takes an option object and applies it to the component in one call\n\n\n\n\n\n\nImplemented \n#130\n by introducing a boolean \noptions.calendarWeeks\n and \ncalendarWeeks()\n api function\n\n\n\n\n\n\nImplemented \n#328\n, \n#426\n\n\n\n\n\n\nImplemented \n#432\n. Widget DOM element is now lazily added only when shown and removed from the document when hidden.\n\n\n\n\n\n\nImplemented \n#141\n and \n#283\n\n\n\n\n\n\nContributors related internal code changes\n\n\n\n\n\n\nRefactor all UI click functions and put them as functions in the actions array private variable\n\n\n\n\n\n\nRefactor template building process to seperate functions according to what they do\n\n\n\n\n\n\nRemove some styles that where hardcoded in the javascript code\n\n\n\n\n\n\nRefactor all code that changes the picker.date to change it through the setValue function to allow one place for validation logic (min/max/weekdaysenabled etc) and also one place for emmiting dp.change events\n\n\n\n\n\n\nThe v4beta branch code includes all fixes up to v.3.1.2\n\n\n\n\n\n\nAdded \ntoggle()\n to the public API which toggles the visibility of the DateTimePicker\n\n\n\n\n\n\nRefactored set function to be included in the setValue function\n\n\n\n\n\n\nAdded a testing framework using jasmine and phantom.js\n\n\n\n\n\n\nVersion 3\n\n\n3.0.0\n\n\n\n\nFix for #170, #179, #183: Changed event to \ndp.-\n. This should fix the double change event firing.\n\n\nFix for #192: \nsetDate\n now fires \ndp.change\n\n\nFix for #182: Picker will \nnot\n set the default date if the input field has a value\n\n\nFix for #169: Seconds doesn't get reset when changing the date (Thanks to PR #174)\n\n\nFix for #168 z-index fix for BS modal\n\n\nFix for #155 Picker properly displays the active year and month\n\n\nFix for #154 CSS update to fix the collapse jump\n\n\nFix for #150 and #75 \nminViewMode\n and \nviewMode\n work properly\n\n\nFix for #147 AM/PM won't toggle when selecting a value from the hours grid\n\n\nFix for #44 Finally! It's here!! Thanks to @ruiwei and his code on #210 picker will adjust the positioning of the widget.\n\n\n\n\nManually merged PR\n\n\n\n\nPR #178 When using \nminuteStepping\n the minute select grid will only show available steppings\n\n\nPR #195, #197 Using the \ndata-OPTION\n has been changed to \ndata-date-OPTION\n. These options are expected to be on the \ninput-group\n if you're using the \ninput-group\n \nor\n the a bare input field if you're not using the \ninput-group\n\n\nPR #184 The option \nsideBySide\n change be used to display both the d and the timepicker side by side\n\n\nPR #143 Added option \ndaysOfWeekDisabled: []\n. For example, use \ndaysOfWeekDisabled: [0,6]\n to disable Sunday and Saturday\n\n\n\n\nOther Changes\n\n\n\n\nChanged picker width to 300px if using seconds and am/pm\n\n\nAdded option \nuseCurrent\n, thanks to @ruiwei. When true, picker will set the value to the current date/time (respects picker's format)\n\n\nAdded option \nshowToday\n, thanks to @ruiwei. When true, picker will display a small arrow to indicate today's date.\n\n\nChanged \nstartDate\n to \nminDate\n and \nendDate\n to \nmaxDate\n to make it more clear what these options do.\n\n\n\n\nVersion 2\n\n\n2.1.32 (Hotfix)\n\n\n\n\nFix for #151: When a bad date value or the picker is cleared, the plugin will not longer attempt to reset it back to the previous date\n\n\nFix for #140: \nsetDate\n can be given \nnull\n to force clear the picker\n\n\n\n\n2.1.30\n\n\nImportant! \nbuild.less\n file name has been been changed to \nbootstrap-datetimepicker-build.less\n to prevent collisions\n\n\n\n\nFix for #135: \nsetStartDate\n and \nsetEndDate\n should now properly set.\n\n\nFix for #133: Typed in date now respects en/disabled dates\n\n\nFix for #132: En/disable picker function works again\n\n\nFix for #117, #119, #128, #121: double event \nchange\n event issues should be fixed\n\n\n\n\nFix for #112: \nchange\n function no longer sets the input to a blank value if the passed in date is invalid\n\n\n\n\n\n\nEnhancement for #103: Increated the \nz-index\n of the widget\n\n\n\n\n\n\n2.1.20\n\n\n\n\nFix for #83: Changes to the picker should fire native \nchange\n event for knockout and the like as well as \nchange.dp\n which contains the old date and the new date\n\n\nFix for #78: Script has been update for breaking changes in Moment 2.4.0\n\n\n\n\nFix for #73: IE8 should be working now\n\n\n\n\n\n\nEnhancement for #79: \nminuteStepping\n option takes a number (default is 1). Changing the minutes in the time picker will step by this number.\n\n\n\n\nEnhancement for #74 and #65: \nuseMinutes\n and \nuseSeconds\n are now options. Disabling seconds will hide the seconds spinner. Disabling minutes will display \n00\n and hide the arrows\n\n\nEnhancement for #67: Picker will now attempt to convert all \ndata-OPTION\n into its appropriate option\n\n\n\n\n2.1.11\n\n\n\n\nFix for #51, #60\n\n\nFix for #52: Picker has its own \nmoment\n object since moment 2.4.0 has removed global reference\n\n\nFix for #57: New option for \nuseStrict\n. When validating dates in \nupdate\n and \nchange\n, the picker can use a stricter formatting validation\n\n\nFix for #61: Picker should now properly take formatted date. Should also have correct start of the week for locales.\n\n\nFix for #62: Default format will properly validate time picker only.\n\n\n\n\n2.1.5\n\n\n\n\nCustom icons, such as Font Awesome, are now supported. (#49)\n\n\nIf more then one \ninput-group-addon\n is present use \ndatepickerbutton\n to identify where the picker should popup from. (#48)\n\n\nNew Event: \nerror.dp\n. Fires when Moment cannot parse the date or when the timepicker cannot change because of a \ndisabledDates\n setting. Returns a Moment date object. The specific error can be found be using \ninvalidAt()\n. For more information see \nMoment's docs\n\n\nFix for #42, plugin will now check for \nA\n or \na\n in the format string to determine if the AM/PM selector should display.\n\n\nFix for #45, fixed null/empty and invalid dates\n\n\nFix for #46, fixed active date highlighting\n\n\nFix for #47, \nchange.dp\n event to also include the previous date.\n\n\n\n\n2.0.1\n\n\n\n\nNew event \nerror.dp\n fires when plugin cannot parse date or when increase/descreasing hours/minutes to a disabled date.\n\n\nMinor fixes\n\n\n\n\n2.0.0\n\n\n\n\ndisabledDates\n is now an option to set the disabled dates. It accepts date objects like \nnew Date(\"November 12, 2013 00:00:00\")\n and \n12/25/2013' and\nmoment` date objects\n\n\nEvents are easier to use",
            "title": "Change Log"
        },
        {
            "location": "/Changelog/#version-4",
            "text": "",
            "title": "Version 4"
        },
        {
            "location": "/Changelog/#41742",
            "text": "",
            "title": "4.17.42"
        },
        {
            "location": "/Changelog/#bug-squashing",
            "text": "fixed moment dependencies to all be the same  defaulted  option.timeZone  to  ''  instead of UTC. This way it will default to the local timezone if it's not set.  fixed #959  fixed #1311 internal  getMoment  function no longer sets  startOf('d')  fixed #935",
            "title": "Bug Squashing"
        },
        {
            "location": "/Changelog/#other",
            "text": "moved some (will move the rest soon) inline docs to JSDoc now that ReSharper supports it.  moved getter/setter functions to options page instead. #1313",
            "title": "Other"
        },
        {
            "location": "/Changelog/#41737",
            "text": "",
            "title": "4.17.37"
        },
        {
            "location": "/Changelog/#new-features",
            "text": "Momentjs TZ intergration #1242 thanks @bodrick  Independent CSS file, in case you don't want bootstrap for some reason",
            "title": "New Features"
        },
        {
            "location": "/Changelog/#bug-squashing_1",
            "text": "Slight changes decade view  Moved all tooltip text to  tooltips  fixed #1212",
            "title": "Bug Squashing"
        },
        {
            "location": "/Changelog/#41535",
            "text": "",
            "title": "4.15.35"
        },
        {
            "location": "/Changelog/#new-features_1",
            "text": "tooltips  allows custom, localized text to be included for icon tooltips",
            "title": "New Features"
        },
        {
            "location": "/Changelog/#bug-squashing_2",
            "text": "fixed #1066  fixed #1087  sideBySide  properly supports  toolbarPlacement [top, bottom]  fixed #1119   fixed #1069 added input.blur()  fixed #1049 fixed doc example   fixed #999 picker now looks for an element with  .input-group-addon",
            "title": "Bug Squashing"
        },
        {
            "location": "/Changelog/#41430",
            "text": "",
            "title": "4.14.30"
        },
        {
            "location": "/Changelog/#new-features_2",
            "text": "disabledTimeIntervals  #644  allowInputToggle  #929  focusOnShow  #884  public  viewDate  function #872  enabledHours  and  disabledHours .  dp.update  fires when  viewDate  is changed (in most cases) #937  viewMode  now supports a decades view.   Note : because the year picker shows 12 years at a time, I've elected to make this view show blocks of 12 years  Note : when selecting a decade the  viewDate  will change to the  center  of the selected years  parseInputDate  #1095",
            "title": "New Features"
        },
        {
            "location": "/Changelog/#bug-squashing_3",
            "text": "fixed #815 by adding  .wider  when using both seconds and am/pm.  fixed #816 changed both min/max date to move the selected date inside.  fixed #855 #881  fillDate ,  fillMonths ,  fillDow  uses  startOf('day') , which will hopefully fix the DST issues.  fixed #885  daysOfWeekDisabled  will move the date to a valid date if  useCurrent  is  true . Today button will check if the DoW is disabled.  fixed #906  fixed #912 if  useCurrent:false  month and year view will no longer have the current month/year selected.  fixed #914  use24hours  will ignore anything in side of  []  in the format string.  fixed #916 added titles to all icons. At some point the text should be moved to the icon's array, but this would probably be a breaking change.  fixed #940 added -1 tab index to am/pm selector",
            "title": "Bug Squashing"
        },
        {
            "location": "/Changelog/#other-changes",
            "text": "changed in/decrement behavior to check if the new date is valid at that granularity (hours, minutes, seconds). will also validate as before",
            "title": "Other Changes"
        },
        {
            "location": "/Changelog/#4714",
            "text": "Added several in new features:  `keybinds`, `inline`, `debug`, `clear()`, `showClose`, `ingoreReadOnly`, `datepickerInput` and `keepInvalid`.  Bug squashing",
            "title": "4.7.14"
        },
        {
            "location": "/Changelog/#400",
            "text": "",
            "title": "4.0.0"
        },
        {
            "location": "/Changelog/#changes-for-using-the-component",
            "text": "Defined a  Public API  and hidden rest of functions, variables so that all configuration options can be changed dynamically.    set/getDate()  is now replaced with an overloaded  date()  function. Use it without a parameter to get the currently set date or with a parameter to set the date.    hide() ,  show() ,  toggle() ,  enable() ,  disable()  and the rest of setter functions now support chaining. ie  $('#id').data('DateTimePicker').format('DD-MM-YYYY').minDate(moment()).defaultDate(moment()).show()  works    Replaced previous - next buttons in Date subviews with configurable icons    Changed  language  option name to  locale  to be inline with moment naming    Implemented #402 all data-date-* variables are more readable and also match with the ones in the configuration object    options.direction  and  options.orientation  were merged into a single object  options.widgetPositioning  with  vertical  and  horizontal  keys that take a string value of  'auto', 'top', 'bottom'  and  'auto', 'left', 'right'  respectively. Note that the  'up'  option was renamed to  'top'",
            "title": "Changes for using the component"
        },
        {
            "location": "/Changelog/#added-functionality",
            "text": "added a second way to define options as data attributes. Instead of adding distinct  data-date-*  config options you can now also pass a  data-date-options  attribute containing an object just the same as the options object that  element.datetimepicker  constructor call takes    also added a  options()  public api function to get/set that takes an option object and applies it to the component in one call    Implemented  #130  by introducing a boolean  options.calendarWeeks  and  calendarWeeks()  api function    Implemented  #328 ,  #426    Implemented  #432 . Widget DOM element is now lazily added only when shown and removed from the document when hidden.    Implemented  #141  and  #283",
            "title": "Added functionality"
        },
        {
            "location": "/Changelog/#contributors-related-internal-code-changes",
            "text": "Refactor all UI click functions and put them as functions in the actions array private variable    Refactor template building process to seperate functions according to what they do    Remove some styles that where hardcoded in the javascript code    Refactor all code that changes the picker.date to change it through the setValue function to allow one place for validation logic (min/max/weekdaysenabled etc) and also one place for emmiting dp.change events    The v4beta branch code includes all fixes up to v.3.1.2    Added  toggle()  to the public API which toggles the visibility of the DateTimePicker    Refactored set function to be included in the setValue function    Added a testing framework using jasmine and phantom.js",
            "title": "Contributors related internal code changes"
        },
        {
            "location": "/Changelog/#version-3",
            "text": "",
            "title": "Version 3"
        },
        {
            "location": "/Changelog/#300",
            "text": "Fix for #170, #179, #183: Changed event to  dp.- . This should fix the double change event firing.  Fix for #192:  setDate  now fires  dp.change  Fix for #182: Picker will  not  set the default date if the input field has a value  Fix for #169: Seconds doesn't get reset when changing the date (Thanks to PR #174)  Fix for #168 z-index fix for BS modal  Fix for #155 Picker properly displays the active year and month  Fix for #154 CSS update to fix the collapse jump  Fix for #150 and #75  minViewMode  and  viewMode  work properly  Fix for #147 AM/PM won't toggle when selecting a value from the hours grid  Fix for #44 Finally! It's here!! Thanks to @ruiwei and his code on #210 picker will adjust the positioning of the widget.",
            "title": "3.0.0"
        },
        {
            "location": "/Changelog/#manually-merged-pr",
            "text": "PR #178 When using  minuteStepping  the minute select grid will only show available steppings  PR #195, #197 Using the  data-OPTION  has been changed to  data-date-OPTION . These options are expected to be on the  input-group  if you're using the  input-group   or  the a bare input field if you're not using the  input-group  PR #184 The option  sideBySide  change be used to display both the d and the timepicker side by side  PR #143 Added option  daysOfWeekDisabled: [] . For example, use  daysOfWeekDisabled: [0,6]  to disable Sunday and Saturday",
            "title": "Manually merged PR"
        },
        {
            "location": "/Changelog/#other-changes_1",
            "text": "Changed picker width to 300px if using seconds and am/pm  Added option  useCurrent , thanks to @ruiwei. When true, picker will set the value to the current date/time (respects picker's format)  Added option  showToday , thanks to @ruiwei. When true, picker will display a small arrow to indicate today's date.  Changed  startDate  to  minDate  and  endDate  to  maxDate  to make it more clear what these options do.",
            "title": "Other Changes"
        },
        {
            "location": "/Changelog/#version-2",
            "text": "",
            "title": "Version 2"
        },
        {
            "location": "/Changelog/#2132-hotfix",
            "text": "Fix for #151: When a bad date value or the picker is cleared, the plugin will not longer attempt to reset it back to the previous date  Fix for #140:  setDate  can be given  null  to force clear the picker",
            "title": "2.1.32 (Hotfix)"
        },
        {
            "location": "/Changelog/#2130",
            "text": "",
            "title": "2.1.30"
        },
        {
            "location": "/Changelog/#important-buildless-file-name-has-been-been-changed-to-bootstrap-datetimepicker-buildless-to-prevent-collisions",
            "text": "Fix for #135:  setStartDate  and  setEndDate  should now properly set.  Fix for #133: Typed in date now respects en/disabled dates  Fix for #132: En/disable picker function works again  Fix for #117, #119, #128, #121: double event  change  event issues should be fixed   Fix for #112:  change  function no longer sets the input to a blank value if the passed in date is invalid    Enhancement for #103: Increated the  z-index  of the widget",
            "title": "Important! build.less file name has been been changed to bootstrap-datetimepicker-build.less to prevent collisions"
        },
        {
            "location": "/Changelog/#2120",
            "text": "Fix for #83: Changes to the picker should fire native  change  event for knockout and the like as well as  change.dp  which contains the old date and the new date  Fix for #78: Script has been update for breaking changes in Moment 2.4.0   Fix for #73: IE8 should be working now    Enhancement for #79:  minuteStepping  option takes a number (default is 1). Changing the minutes in the time picker will step by this number.   Enhancement for #74 and #65:  useMinutes  and  useSeconds  are now options. Disabling seconds will hide the seconds spinner. Disabling minutes will display  00  and hide the arrows  Enhancement for #67: Picker will now attempt to convert all  data-OPTION  into its appropriate option",
            "title": "2.1.20"
        },
        {
            "location": "/Changelog/#2111",
            "text": "Fix for #51, #60  Fix for #52: Picker has its own  moment  object since moment 2.4.0 has removed global reference  Fix for #57: New option for  useStrict . When validating dates in  update  and  change , the picker can use a stricter formatting validation  Fix for #61: Picker should now properly take formatted date. Should also have correct start of the week for locales.  Fix for #62: Default format will properly validate time picker only.",
            "title": "2.1.11"
        },
        {
            "location": "/Changelog/#215",
            "text": "Custom icons, such as Font Awesome, are now supported. (#49)  If more then one  input-group-addon  is present use  datepickerbutton  to identify where the picker should popup from. (#48)  New Event:  error.dp . Fires when Moment cannot parse the date or when the timepicker cannot change because of a  disabledDates  setting. Returns a Moment date object. The specific error can be found be using  invalidAt() . For more information see  Moment's docs  Fix for #42, plugin will now check for  A  or  a  in the format string to determine if the AM/PM selector should display.  Fix for #45, fixed null/empty and invalid dates  Fix for #46, fixed active date highlighting  Fix for #47,  change.dp  event to also include the previous date.",
            "title": "2.1.5"
        },
        {
            "location": "/Changelog/#201",
            "text": "New event  error.dp  fires when plugin cannot parse date or when increase/descreasing hours/minutes to a disabled date.  Minor fixes",
            "title": "2.0.1"
        },
        {
            "location": "/Changelog/#200",
            "text": "disabledDates  is now an option to set the disabled dates. It accepts date objects like  new Date(\"November 12, 2013 00:00:00\")  and  12/25/2013' and moment` date objects  Events are easier to use",
            "title": "2.0.0"
        },
        {
            "location": "/ContributorsGuide/",
            "text": "This guide is aimed to contributors wishing to understand the internals of the code in order to change/evolve the component. \n\n\nNote:\n this guide refers to \nversion 4\n which is currently in beta and will be updated as we progress\n\n\nIntroduction\n\n\nThis component consists actually of 2 subcomponent UI widgets one for the date and one for the time selection process. The developers can configure which of those are needed and also the granularity that the component will allow the users to select a date/time. Developers also choose the format that the selected datetime will be displayed in the input field.\nThe component uses on \njQuery\n, \nmoment.js\n and \nbootstrap\n libraries.\n\n\nCode\n\n\nPrivate variables\n\n\n\n\n\n\nelement\n - Holds the DOM element this instance is attached to\n\n\n\n\n\n\noptions\n - Holds an object with the curently set options for the specific instance of the component. Don't directly change the properties of that object use the public API methods instead. DO NOT expose this object or its properties outside of the component.\n\n\n\n\n\n\npicker\n - Reference variable to the created instance \n(this)\n\n\n\n\n\n\ndate\n - Holds the moment object for the model value of the component. \nDON'T\n directly change this variable unless you \nREALLY\n know what you are doing. Use \nsetValue()\n function to set it. It handles all component logic for updating the model value and emitting all the appropriate events\n\n\n\n\n\n\nviewDate\n - Holds the currently selected value that the user has selected through the widget. This is not the model value this is the view value. Changing this usually requires a subsequent call to \nupdate()\n function\n\n\n\n\n\n\nunset\n - A \nboolean\n variable that holds wheather the components model value is set or not. Model's value starts as \nunset = true\n and if is either set by the user or programmatically through the api to a valid value then it is set to \nfalse\n. If subsequent events lead to an invalid value then this variable is set to \ntrue\n again. Setting this variable usually takes place in the \nsetValue()\n function.\n\n\n\n\n\n\ninput\n - Hold the DOM input element this instance is attached to\n\n\n\n\n\n\ncomponent\n - Holds a reference to the .input-group DOM element that the widget is attached or false if it is attached directly on an input field\n\n\n\n\n\n\nwidget\n - Holds a reference to the DOM element containing the widget or \nfalse\n if the widget is hidden\n\n\n\n\n\n\nuse24hours\n - Holds whether the component uses 24 hours format or not. This is initialized on the \nformat()\n function\n\n\n\n\n\n\nminViewModeNumber\n - Holds the Numeric equivelant of the options.minViewMode parameter\n\n\n\n\n\n\nformat\n - Holds the current format string that is used for formating the date model value. Note this is not the same thing as the \noptions.format\n as the second could be set to \nfalse\n in which case the first takes the locale's \nL\n or \nLT\n value\n\n\n\n\n\n\ncurrentViewMode\n - Hold the state of the current viewMode for the DatePicker subcomponent\n\n\n\n\n\n\nactions\n - An object containing all the functions that can be called when the users clicks on the widget\n\n\n\n\n\n\ndatePickerModes\n - An array of objects with configuration parameters for the different views of the DatePicker subcomponent\n\n\n\n\n\n\nviewModes\n - An array of strings containing all the possible strings that \noptions.viewMode\n can take through \nviewMode()\n public api function\n\n\n\n\n\n\ndirectionModes\n - An array of strings containing all the possible strings that \noptions.direction\n can take through \ndirection()\n public api function\n\n\n\n\n\n\norientationModes\n - An array of strings containing all the possible strings that \noptions.orientation\n can take through \norientation()\n public api function\n\n\n\n\n\n\nPrivate functions\n\n\nWidget related\n\n\n\n\n\n\ngetDatePickerTemplate()\n - returns a string containing the html code for the date picker subcomponent\n\n\n\n\n\n\ngetTimePickerTemplate()\n - returns a string containing the html code for the time picker subcomponent\n\n\n\n\n\n\ngetTemplate()\n - returns a string with containing the html code for all the DateTimePicker component\n\n\n\n\n\n\nplace()\n - handles the placement of the widget's dropdown\n\n\n\n\n\n\nupdateMonths()\n - updates the html subpage related to the months for Date picker view\n\n\n\n\n\n\nupdateYears()\n - updates the html subpage related to the years for Date picker view\n\n\n\n\n\n\nfillDate()\n - updates the html subpage related to the days for Date picker view\n\n\n\n\n\n\nfillHours()\n - Creates the hours spans for the hours subview of the Time subcomponent\n\n\n\n\n\n\nfillMinutes()\n - Creates the minutes spans for the hours subview of the Time subcomponent\n\n\n\n\n\n\nfillSeconds()\n - Creates the seconds spans for the hours subview of the Time subcomponent\n\n\n\n\n\n\nfillTime()\n - Creates the main subview of the Time subcomponent\n\n\n\n\n\n\nupdate()\n - updates the UI of part of the widget\n\n\n\n\n\n\nfillDow()\n - Creates the day names in the days subview on the Date subcomponent\n\n\n\n\n\n\nfillMonths()\n - Creates the month spans for the months subview of the Date subcomponent\n\n\n\n\n\n\ncreateWidget()\n - creates the UI widget end attaches widget event listeners\n\n\n\n\n\n\ndestroyWidget()\n - destroys the UI widget DOM element and detaches widget event listeners\n\n\n\n\n\n\nshowMode(dir)\n - toggles between the various subpage related views of the DateTimePicker\n\n\n\n\n\n\nEvents related\n\n\n\n\n\n\nnotifyEvent(e)\n - Use this function when you want to send en event to listener this could be used as a filter later\n\n\n\n\n\n\nstopEvent(e)\n - Shortcut for stopping propagation of events\n\n\n\n\n\n\ndoAction(e)\n - Proxy function to call all the UI related click events\n\n\n\n\n\n\nkeydown(e)\n - Function to trap \n\n\n\n\n\n\nchange(e)\n - Listener function to track change events occuring on the \ninput\n dom element the component is attached to\n\n\n\n\n\n\nattachDatePickerElementEvents()\n - Attaches listeners to the existing DOM elements the component is attached to. Called upon construction of each datetimepicker instance\n\n\n\n\n\n\ndetachDatePickerElementEvents()\n - Detaches listeners from the DOM element the component is attached to. Called on \ndestroy()\n\n\n\n\n\n\nattachDatePickerWidgetEvents()\n - Attaches listeners on the components widget. Called on \nshow()\n\n\n\n\n\n\ndetachDatePickerWidgetEvents()\n - Detaches listeners on the components widget. Called on \nhide()\n\n\n\n\n\n\nModel related\n\n\n\n\n\n\nsetValue(targetMoment)\n - Sets the model value of the component takes a moment object. An \nerror\n event will be emmited if the \ntargetMoment\n does not pass the configured validations. Otherwise the \ndate\n variable will be set and the relevant events will be fired.\n\n\n\n\n\n\nisValid(targetMoment, granularity)\n - returns \ntrue\n if the \ntargetMoment\n moment object is valid according to the components set validation rules (\nmin/maxDates\n, \ndisabled/enabledDates\n and \ndaysOfWeekDisabled\n). You may pass a second variable to check only up the the specific granularity \nyear, month, day, hour, minute, second\n\n\n\n\n\n\nUtilities\n\n\n\n\n\n\nindexGivenDates (givenDatesArray)\n - Function that takes the array from \nenabledDates()\n and \ndisabledDates()\n public functions and stores them as object keys to enable quick lookup\n\n\n\n\n\n\nisInEnableDates(date)\n - Checks whether if the given moment object exists in the \noptions.enabledDates\n object\n\n\n\n\n\n\nisInDisableDates(date)\n - Checks whether if the given moment object exists in the \noptions.disabledDates\n array\n\n\n\n\n\n\ndataToOptions()\n - Parses \ndata-date-*\n options set on the input dom element the component is attached to and returns an object with them\n\n\n\n\n\n\nisInFixed()\n - Checks if the dom element or its parents has a fixed position css rule.\n\n\n\n\n\n\nparseInputDate(date)\n - Parses a date parameter with moment using the component's \noptions.format\n and \noptions.useStrict\n. It returns a \nmoment\n object or false if \nparsedMoment#isValid()\n returns \nfalse\n. Use this to parse date inputs from outside the component (public API calls).\n\n\n\n\n\n\ninit()\n - Initializes the component. Called when the component instance is created",
            "title": "Dev Guide"
        },
        {
            "location": "/ContributorsGuide/#introduction",
            "text": "This component consists actually of 2 subcomponent UI widgets one for the date and one for the time selection process. The developers can configure which of those are needed and also the granularity that the component will allow the users to select a date/time. Developers also choose the format that the selected datetime will be displayed in the input field.\nThe component uses on  jQuery ,  moment.js  and  bootstrap  libraries.",
            "title": "Introduction"
        },
        {
            "location": "/ContributorsGuide/#code",
            "text": "",
            "title": "Code"
        },
        {
            "location": "/ContributorsGuide/#private-variables",
            "text": "element  - Holds the DOM element this instance is attached to    options  - Holds an object with the curently set options for the specific instance of the component. Don't directly change the properties of that object use the public API methods instead. DO NOT expose this object or its properties outside of the component.    picker  - Reference variable to the created instance  (this)    date  - Holds the moment object for the model value of the component.  DON'T  directly change this variable unless you  REALLY  know what you are doing. Use  setValue()  function to set it. It handles all component logic for updating the model value and emitting all the appropriate events    viewDate  - Holds the currently selected value that the user has selected through the widget. This is not the model value this is the view value. Changing this usually requires a subsequent call to  update()  function    unset  - A  boolean  variable that holds wheather the components model value is set or not. Model's value starts as  unset = true  and if is either set by the user or programmatically through the api to a valid value then it is set to  false . If subsequent events lead to an invalid value then this variable is set to  true  again. Setting this variable usually takes place in the  setValue()  function.    input  - Hold the DOM input element this instance is attached to    component  - Holds a reference to the .input-group DOM element that the widget is attached or false if it is attached directly on an input field    widget  - Holds a reference to the DOM element containing the widget or  false  if the widget is hidden    use24hours  - Holds whether the component uses 24 hours format or not. This is initialized on the  format()  function    minViewModeNumber  - Holds the Numeric equivelant of the options.minViewMode parameter    format  - Holds the current format string that is used for formating the date model value. Note this is not the same thing as the  options.format  as the second could be set to  false  in which case the first takes the locale's  L  or  LT  value    currentViewMode  - Hold the state of the current viewMode for the DatePicker subcomponent    actions  - An object containing all the functions that can be called when the users clicks on the widget    datePickerModes  - An array of objects with configuration parameters for the different views of the DatePicker subcomponent    viewModes  - An array of strings containing all the possible strings that  options.viewMode  can take through  viewMode()  public api function    directionModes  - An array of strings containing all the possible strings that  options.direction  can take through  direction()  public api function    orientationModes  - An array of strings containing all the possible strings that  options.orientation  can take through  orientation()  public api function",
            "title": "Private variables"
        },
        {
            "location": "/ContributorsGuide/#private-functions",
            "text": "",
            "title": "Private functions"
        },
        {
            "location": "/ContributorsGuide/#widget-related",
            "text": "getDatePickerTemplate()  - returns a string containing the html code for the date picker subcomponent    getTimePickerTemplate()  - returns a string containing the html code for the time picker subcomponent    getTemplate()  - returns a string with containing the html code for all the DateTimePicker component    place()  - handles the placement of the widget's dropdown    updateMonths()  - updates the html subpage related to the months for Date picker view    updateYears()  - updates the html subpage related to the years for Date picker view    fillDate()  - updates the html subpage related to the days for Date picker view    fillHours()  - Creates the hours spans for the hours subview of the Time subcomponent    fillMinutes()  - Creates the minutes spans for the hours subview of the Time subcomponent    fillSeconds()  - Creates the seconds spans for the hours subview of the Time subcomponent    fillTime()  - Creates the main subview of the Time subcomponent    update()  - updates the UI of part of the widget    fillDow()  - Creates the day names in the days subview on the Date subcomponent    fillMonths()  - Creates the month spans for the months subview of the Date subcomponent    createWidget()  - creates the UI widget end attaches widget event listeners    destroyWidget()  - destroys the UI widget DOM element and detaches widget event listeners    showMode(dir)  - toggles between the various subpage related views of the DateTimePicker",
            "title": "Widget related"
        },
        {
            "location": "/ContributorsGuide/#events-related",
            "text": "notifyEvent(e)  - Use this function when you want to send en event to listener this could be used as a filter later    stopEvent(e)  - Shortcut for stopping propagation of events    doAction(e)  - Proxy function to call all the UI related click events    keydown(e)  - Function to trap     change(e)  - Listener function to track change events occuring on the  input  dom element the component is attached to    attachDatePickerElementEvents()  - Attaches listeners to the existing DOM elements the component is attached to. Called upon construction of each datetimepicker instance    detachDatePickerElementEvents()  - Detaches listeners from the DOM element the component is attached to. Called on  destroy()    attachDatePickerWidgetEvents()  - Attaches listeners on the components widget. Called on  show()    detachDatePickerWidgetEvents()  - Detaches listeners on the components widget. Called on  hide()",
            "title": "Events related"
        },
        {
            "location": "/ContributorsGuide/#model-related",
            "text": "setValue(targetMoment)  - Sets the model value of the component takes a moment object. An  error  event will be emmited if the  targetMoment  does not pass the configured validations. Otherwise the  date  variable will be set and the relevant events will be fired.    isValid(targetMoment, granularity)  - returns  true  if the  targetMoment  moment object is valid according to the components set validation rules ( min/maxDates ,  disabled/enabledDates  and  daysOfWeekDisabled ). You may pass a second variable to check only up the the specific granularity  year, month, day, hour, minute, second",
            "title": "Model related"
        },
        {
            "location": "/ContributorsGuide/#utilities",
            "text": "indexGivenDates (givenDatesArray)  - Function that takes the array from  enabledDates()  and  disabledDates()  public functions and stores them as object keys to enable quick lookup    isInEnableDates(date)  - Checks whether if the given moment object exists in the  options.enabledDates  object    isInDisableDates(date)  - Checks whether if the given moment object exists in the  options.disabledDates  array    dataToOptions()  - Parses  data-date-*  options set on the input dom element the component is attached to and returns an object with them    isInFixed()  - Checks if the dom element or its parents has a fixed position css rule.    parseInputDate(date)  - Parses a date parameter with moment using the component's  options.format  and  options.useStrict . It returns a  moment  object or false if  parsedMoment#isValid()  returns  false . Use this to parse date inputs from outside the component (public API calls).    init()  - Initializes the component. Called when the component instance is created",
            "title": "Utilities"
        },
        {
            "location": "/Extras/",
            "text": "Extras\n\n\nGuides for making the picker work better with rails, IE, etc\n\n\nRails 3\n\n\nby \ndhulihan\n\n\nYou can easily override the default rails form helpers (\ndate_select\n and \ndatetime_select\n) with bootstrap-datetimepicker for a much nicer experience. \n\n\n# Add to config/initializers/form.rb or the end of app/helpers/application_helper.rb\nmodule ActionView\n  module Helpers\n    class FormBuilder \n      def date_select(method, options = {}, html_options = {})\n        existing_date = @object.send(method) \n        formatted_date = existing_date.to_date.strftime(\"%F\") if existing_date.present?\n        @template.content_tag(:div, :class => \"input-group\") do    \n          text_field(method, :value => formatted_date, :class => \"form-control datepicker\", :\"data-date-format\" => \"YYYY-MM-DD\") +\n          @template.content_tag(:span, @template.content_tag(:span, \"\", :class => \"glyphicon glyphicon-calendar\") ,:class => \"input-group-addon\")\n        end\n      end\n\n      def datetime_select(method, options = {}, html_options = {})\n        existing_time = @object.send(method) \n        formatted_time = existing_time.to_time.strftime(\"%F %I:%M %p\") if existing_time.present?\n        @template.content_tag(:div, :class => \"input-group\") do    \n          text_field(method, :value => formatted_time, :class => \"form-control datetimepicker\", :\"data-date-format\" => \"YYYY-MM-DD hh:mm A\") +\n          @template.content_tag(:span, @template.content_tag(:span, \"\", :class => \"glyphicon glyphicon-calendar\") ,:class => \"input-group-addon\")\n        end\n      end\n    end\n  end\nend\n\n\n\n\nThe time format used here is ActiveRecord-friendly, which means it will be parsed correctly when passed in through \nparams\n to your record.\n\n\nThat's all there is to it! Now all of your forms that use \ndatetime_select\n or \ndate_select\n will be automatically updated:\n\n\n<% form_for @post do |f| %>\n    <div class=\"form-group\">\n        <label>Published At</label>\n        <%= f.datetime_select :published_at %>\n    </div>\n<% end %>\n\n\n\n\nIE 7\n\n\nby \nEquilibriumCST\n\n\nI succeed to run this widget under IE7.\nHere is what I did.\n\n\n\n\n\n\ngliphicons are not working under IE7 so add \nthis css file\n. And this enables the icons.\n\n\n\n\n\n\nZ-index problem with IE 7. I added position: relative and \nz-index: 10\n to the parent container. Otherwise popup is shown under the next elements.\n\n\n\n\n\n\nJS events were not working well. \n\n\n\n\n\n\nIf you open the datetimepicker widget and click on some button or date inside it, widget is automatically closed.\nSo I added \ndebug: true\n as an option when initializing the widget. Why I did this? I saw on line 1121 from bootsrap-datetimepicker.js the code \n'blur': options.debug ? '' : hide\n. \nAnd now widget window is not closed on every click inside it, but now you can't close it anyway :) \nAnd closing should be done manually. I've added this document click handler. If you click something outside the widget, now closing works.\n\n\n$(document).click(function(e){\n            var target = $(e.target);\n            if(target.parents('.bootstrap-datetimepicker-widget').length < 1 && !target.hasClass('datetimepickerInput') && !target.hasClass('datepickerIcon') && !target.hasClass('clockpickerIcon')){\n                if($('.bootstrap-datetimepicker-widget').length > 0){\n                    $('#startDate').data('DateTimePicker').hide();\n                    $('#startTime').data('DateTimePicker').hide();\n                    $('.datetimepickerInput').blur();\n                }\n            }\n        });\n\n\n\n\nBut if you have more than one widget on the page like I did, clicking on one widget does'n close the other. Added below lines and now all works fine.\n\n\n$('#widget1').on(\"dp.show\",function (e) {\n    $('#widget2).data('DateTimePicker').hide();\n});\n\n$('#widget2').on(\"dp.show\",function (e) {\n    $('#widget1).data('DateTimePicker').hide();\n});\n\n\n\n\nI hope this will help to the others who are fighting with the old IE versions :)",
            "title": "Extras"
        },
        {
            "location": "/Extras/#extras",
            "text": "Guides for making the picker work better with rails, IE, etc",
            "title": "Extras"
        },
        {
            "location": "/Extras/#rails-3",
            "text": "by  dhulihan  You can easily override the default rails form helpers ( date_select  and  datetime_select ) with bootstrap-datetimepicker for a much nicer experience.   # Add to config/initializers/form.rb or the end of app/helpers/application_helper.rb\nmodule ActionView\n  module Helpers\n    class FormBuilder \n      def date_select(method, options = {}, html_options = {})\n        existing_date = @object.send(method) \n        formatted_date = existing_date.to_date.strftime(\"%F\") if existing_date.present?\n        @template.content_tag(:div, :class => \"input-group\") do    \n          text_field(method, :value => formatted_date, :class => \"form-control datepicker\", :\"data-date-format\" => \"YYYY-MM-DD\") +\n          @template.content_tag(:span, @template.content_tag(:span, \"\", :class => \"glyphicon glyphicon-calendar\") ,:class => \"input-group-addon\")\n        end\n      end\n\n      def datetime_select(method, options = {}, html_options = {})\n        existing_time = @object.send(method) \n        formatted_time = existing_time.to_time.strftime(\"%F %I:%M %p\") if existing_time.present?\n        @template.content_tag(:div, :class => \"input-group\") do    \n          text_field(method, :value => formatted_time, :class => \"form-control datetimepicker\", :\"data-date-format\" => \"YYYY-MM-DD hh:mm A\") +\n          @template.content_tag(:span, @template.content_tag(:span, \"\", :class => \"glyphicon glyphicon-calendar\") ,:class => \"input-group-addon\")\n        end\n      end\n    end\n  end\nend  The time format used here is ActiveRecord-friendly, which means it will be parsed correctly when passed in through  params  to your record.  That's all there is to it! Now all of your forms that use  datetime_select  or  date_select  will be automatically updated:  <% form_for @post do |f| %>\n    <div class=\"form-group\">\n        <label>Published At</label>\n        <%= f.datetime_select :published_at %>\n    </div>\n<% end %>",
            "title": "Rails 3"
        },
        {
            "location": "/Extras/#ie-7",
            "text": "by  EquilibriumCST  I succeed to run this widget under IE7.\nHere is what I did.    gliphicons are not working under IE7 so add  this css file . And this enables the icons.    Z-index problem with IE 7. I added position: relative and  z-index: 10  to the parent container. Otherwise popup is shown under the next elements.    JS events were not working well.     If you open the datetimepicker widget and click on some button or date inside it, widget is automatically closed.\nSo I added  debug: true  as an option when initializing the widget. Why I did this? I saw on line 1121 from bootsrap-datetimepicker.js the code  'blur': options.debug ? '' : hide . \nAnd now widget window is not closed on every click inside it, but now you can't close it anyway :) \nAnd closing should be done manually. I've added this document click handler. If you click something outside the widget, now closing works.  $(document).click(function(e){\n            var target = $(e.target);\n            if(target.parents('.bootstrap-datetimepicker-widget').length < 1 && !target.hasClass('datetimepickerInput') && !target.hasClass('datepickerIcon') && !target.hasClass('clockpickerIcon')){\n                if($('.bootstrap-datetimepicker-widget').length > 0){\n                    $('#startDate').data('DateTimePicker').hide();\n                    $('#startTime').data('DateTimePicker').hide();\n                    $('.datetimepickerInput').blur();\n                }\n            }\n        });  But if you have more than one widget on the page like I did, clicking on one widget does'n close the other. Added below lines and now all works fine.  $('#widget1').on(\"dp.show\",function (e) {\n    $('#widget2).data('DateTimePicker').hide();\n});\n\n$('#widget2').on(\"dp.show\",function (e) {\n    $('#widget1).data('DateTimePicker').hide();\n});  I hope this will help to the others who are fighting with the old IE versions :)",
            "title": "IE 7"
        },
        {
            "location": "/FAQ/",
            "text": "FAQs\n\n\nHow do I disable the date or time element\n\n\nHow do I format ...; How do I add seconds; etc.\n\n\nThe picker uses the \nformat\n option to decide what components to show. Set \nformat\n to \nLT\n, \nLTS\n or another valid \nMomentJs format string\n to display certain components\n\n\nHow do I change the language/locale\n\n\nThe picker uses MomentJs to determine the language string. You can use \nmoment-with-locales\n or you can include whatever local file you need. Set the picker's \nlocale\n option to \nde\n or whatever the locale string is.\n\n\nHow do I change the styles? The picker closes.\n\n\nSet \ndebug:true\n which will force the picker to stay open, even \nonBlur\n. You can hide the picker manually by calling \nhide()\n\n\nHow do I change the start of the week?\n\n\nStart of the week is based on the \nlocale\n provided\n. This is defined by moment's locales. If you want to change it, create your own locale file or override. \nSee moment's docs\n.\n\n\nHow I use the picker as birthday picker?\n\n\nUse the \nviewMode\n option to \n'years'",
            "title": "FAQs"
        },
        {
            "location": "/FAQ/#faqs",
            "text": "",
            "title": "FAQs"
        },
        {
            "location": "/FAQ/#how-do-i-disable-the-date-or-time-element",
            "text": "How do I format ...; How do I add seconds; etc.  The picker uses the  format  option to decide what components to show. Set  format  to  LT ,  LTS  or another valid  MomentJs format string  to display certain components",
            "title": "How do I disable the date or time element"
        },
        {
            "location": "/FAQ/#how-do-i-change-the-languagelocale",
            "text": "The picker uses MomentJs to determine the language string. You can use  moment-with-locales  or you can include whatever local file you need. Set the picker's  locale  option to  de  or whatever the locale string is.",
            "title": "How do I change the language/locale"
        },
        {
            "location": "/FAQ/#how-do-i-change-the-styles-the-picker-closes",
            "text": "Set  debug:true  which will force the picker to stay open, even  onBlur . You can hide the picker manually by calling  hide()",
            "title": "How do I change the styles? The picker closes."
        },
        {
            "location": "/FAQ/#how-do-i-change-the-start-of-the-week",
            "text": "Start of the week is based on the  locale  provided . This is defined by moment's locales. If you want to change it, create your own locale file or override.  See moment's docs .",
            "title": "How do I change the start of the week?"
        },
        {
            "location": "/FAQ/#how-i-use-the-picker-as-birthday-picker",
            "text": "Use the  viewMode  option to  'years'",
            "title": "How I use the picker as birthday picker?"
        }
    ]
}