Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/clinic.corals.io/public/assets/front/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/clinic.corals.io/public/assets/front/js/jquery.calendario.js
/**
 * jquery.calendario.js v3.2.0
 * http://www.codrops.com
 *
 * Licensed under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Copyright 2014, Codrops
 * http://www.codrops.com
 *
 * || Notable Changes ||
 * Calendario gets more flexible : Boží Ďábel (https://github.com/deviprsd21) (https://github.com/codrops/Calendario/pull/11)
 * Multiple Events : Mattias Lyckne (https://github.com/olyckne) (https://github.com/codrops/Calendario/pull/22)
 * Flexibility In-built : Boží Ďábel (https://github.com/deviprsd21) (https://github.com/codrops/Calendario/pull/23)
 * Now with Time : Boží Ďábel (https://github.com/deviprsd21) (https://github.com/codrops/Calendario/pull/25)
 */
;(function ($, window, undefined) {
    'use strict';

    $.Calendario = function (options, element) {
        this.$el = $(element);
        this._init(options);
    };

    // the options
    $.Calendario.defaults = {
        /*
          you can also pass:
          month : initialize calendar with this month (1-12). Default is today.
          year : initialize calendar with this year. Default is today.
          caldata : initial data/content for the calendar.
          caldata format:
          {
            'MM-DD-YYYY' : 'HTML Content',
            'MM-DD-YYYY' : 'HTML Content',
              ...
          }
        */
        weeks: [
            'Sunday',
            'Monday',
            'Tuesday',
            'Wednesday',
            'Thursday',
            'Friday',
            'Saturday'],
        weekabbrs: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
        months: [
            'January',
            'February',
            'March',
            'April',
            'May',
            'June',
            'July',
            'August',
            'September',
            'October',
            'November',
            'December'],
        monthabbrs: [
            'Jan',
            'Feb',
            'Mar',
            'Apr',
            'May',
            'Jun',
            'Jul',
            'Aug',
            'Sep',
            'Oct',
            'Nov',
            'Dec'],
        displayWeekAbbr: false, // choose between values in options.weeks or options.weekabbrs
        displayMonthAbbr: false, // choose between values in options.months or options.monthabbrs
        startIn: 1, // left most day in the calendar (0 - Sunday, 1 - Monday, ... , 6 - Saturday)
        events: 'click',
        fillEmpty: true,
        feedParser: './feed/',
        zone: '00:00', // Ex: IST zone time is '+05:30' by default it is GMT, Sign is important.
        format: 'MM-DD-YYYY',
        checkUpdate: false, //Check if any new version of Calendario is released (Details will be in the browser console)
    };

    $.Calendario.prototype = {
        _init: function (options) {
            // options
            this.VERSION = '3.2.0';
            this.UNIQUE = '%{unique}%'; //UNIQUE helps us differentiate your js from others and help us keep a track of run time.
            this.options = $.extend(true, {}, $.Calendario.defaults, options);
            this.today = new Date();
            this.month = (isNaN(this.options.month) || this.options.month ===
                null) ? this.today.getMonth() : this.options.month - 1;
            this.year = (isNaN(this.options.year) || this.options.year === null)
                ? this.today.getFullYear()
                : this.options.year;
            this.caldata = this._processCaldata(this.options.caldata);
            // if hover is passed as an event then throw error if jQuery is 1.9 or above 1.9, because, hover psuedo name isn't supported
            if (parseFloat($().jquery) >= 1.9 &&
                this.options.events.indexOf('hover') != -1)
                this.logError('\'hover\' psuedo-name is not supported' +
                    ' in jQuery 1.9+. Use \'mouseenter\' \'mouseleave\' events instead.');

            this.options.events = this.options.events.split(',');
            this.options.zone = this.options.zone.charAt(0) != '+' &&
            this.options.zone.charAt(0) != '-'
                ? '+' + this.options.zone
                : this.options.zone;
            this._generateTemplate(true);
            this._initEvents();
        },

        _processCaldataObj: function (val, key) {
            if (typeof val !== 'object') val = {
                content: val,
                startTime: '00:00',
                endTime: '23:59',
                allDay: true,
            };
            if (!val.content) this.logError(
                'Content is missing in date ' + key);
            if (val.startTime && !val.endTime) val.endTime = parseInt(
                val.startTime.split(':')[0]) + 1 + ':' +
                val.startTime.split(':')[1];
            if (!val.startTime && !val.endTime) val = $.extend({}, val,
                { startTime: '00:00', endTime: '23:59', allDay: true });
            if (val.startTime && val.endTime && val.allDay ===
                undefined) val.allDay = false;
            if (/^\d{2}-DD-\d{4}/.test(key) || /^\d{2}-DD-YYYY/.test(key)) {
                var det = /^(\d{2})-DD-(\d{4})/.exec(key) ||
                    /^(\d{2})-DD-YYYY/.exec(key), chkDate;
                if (det.length == 3) chkDate = new Date(det[2], det[1], 0);
                else if (det.length == 2) chkDate = new Date(this.year, det[1],
                    0);
                if (!val.startDate) val.startDate = 1;
                if (!val.endDate && chkDate.getDate() !=
                    1) val.endDate = chkDate.getDate();
                if (!val.endDate && chkDate.getDate() == 1 && det.length ==
                    3) val.endDate = chkDate.getDate();
            }
            return val;
        },

        _processCaldata: function (caldata) {
            var self = this;
            caldata = caldata || {};
            $.each(caldata, function (key, val) {
                if (/^\d{2}-\d{2}-\d{4}/.test(key) ||
                    /^\d{2}-\d{2}-YYYY/.test(key) ||
                    /^\d{2}-DD-YYYY/.test(key) || /^MM-\d{2}-YYYY/.test(key) ||
                    /^\d{2}-DD-YYYY/.test(key) || /^MM-\d{2}-\d{4}/.test(key) ||
                    /^\d{2}-DD-\d{4}/.test(key) || key == 'TODAY') {} else
                    self.logError(key +
                        ' is an Invalid Date. Date should not contain spaces, should be separated by \'-\' and should be in the ' +
                        'format \'MM-DD-YYYY\'. That ain\'t that difficult!');
                if (Array.isArray(val)) {
                    $.each(val, function (i, c) {
                        val[i] = self._processCaldataObj(c, key);
                    });
                    caldata[key] = val;
                } else {
                    caldata[key] = self._processCaldataObj(val, key);
                }
            });
            return caldata;
        },

        _propDate: function ($cell, event) {
            var idx = $cell.index(),
                data = { allDay: [], content: [], endTime: [], startTime: [] },
                dateProp = {
                    day: $cell.children('span.fc-date').text(),
                    month: this.month + 1,
                    monthname: this.options.displayMonthAbbr
                        ? this.options.monthabbrs[this.month]
                        : this.options.months[this.month],
                    year: this.year,
                    weekday: idx + this.options.startIn,
                    weekdayname: this.options.weeks[(idx == 6 ? 0 : idx +
                        this.options.startIn)],
                };

            $cell.children('div.fc-calendar-events').
                children('div.fc-calendar-event').
                each(function (i, e) {
                    var $html = $('<div>' + $(e).html() + '</div>');
                    data.startTime[i] = new Date(
                        $html.find('time.fc-starttime').attr('datetime'));
                    data.endTime[i] = new Date(
                        $html.find('time.fc-endtime').attr('datetime'));
                    data.allDay[i] = $html.find('time.fc-allday').
                        attr('datetime') === 'true' ? true : false;
                    $html.find('time').remove();
                    data.content[i] = $html.html();
                });

            if (dateProp.day) this.options[event]($cell, data, dateProp);
        },

        _initEvents: function () {
            var self = this, event = [], calendarioEventNameFormat = [];
            for (var i = 0; i < self.options.events.length; i++) {
                event[i] = self.options.events[i].toLowerCase().trim();
                calendarioEventNameFormat[i] = 'onDay' +
                    event[i].charAt(0).toUpperCase() + event[i].slice(1);

                if (this.options[calendarioEventNameFormat[i]] === undefined)
                    this.options[calendarioEventNameFormat[i]] = function (
                        $el, $content, dateProperties) {return false;};

                this.$el.on(event[i] + '.calendario', 'div.fc-row > div',
                    function (e) {
                        if (e.type == 'mouseenter' || e.type ==
                            'mouseleave') e.type = $.inArray(e.type, event) ==
                        -1 ? 'hover' : e.type;
                        self._propDate($(this),
                            calendarioEventNameFormat[$.inArray(e.type,
                                event)]);
                    });
            }
            this.$el.on('shown.calendar.calendario', function (e, instance) {
                // If check update set to true, then contact calendario's update servers for details. We didn't want to slow down your code. So we
                // check after the calendar is rendered.
                if (instance &&
                    instance.options.checkUpdate) self._checkUpdate();
            });
            // newday trigger. This trigger is exactly triggered at 00:00 hours the next day with an uncertainty of 6ms.
            this.$el.delay(
                new Date(this.today.getFullYear(), this.today.getMonth(),
                    this.today.getDate() + 1, 0, 0, 0) - new Date().getTime()).
                queue(function () {
                    self.today = new Date();
                    if (self.today.getMonth() == self.month ||
                        self.today.getMonth() + 1 ==
                        self.month) self._generateTemplate(true);
                    self.$el.trigger($.Event('newday.calendar.calendario'));
                });
        },

        _checkUpdate: function () {
            var self = this;
            $.getScript('js/cal-update.js').done(function (script, textStatus) {
                if (calendario.current != self.version() &&
                    parseFloat(calendario.current) >=
                    parseFloat(self.version()))
                    console.info(calendario.msg);
            }).fail(function (jqxhr, settings, exception) {
                console.error(exception);
            });
        },

        // Calendar logic based on http://jszen.blogspot.pt/2007/03/how-to-build-simple-calendar-with.html
        _generateTemplate: function (firstRun, callback) {
            var head = this._getHead(),
                body = this._getBody(),
                rowClass;

            switch (this.rowTotal) {
                case 4 :
                    rowClass = 'fc-four-rows';
                    break;
                case 5 :
                    rowClass = 'fc-five-rows';
                    break;
                case 6 :
                    rowClass = 'fc-six-rows';
                    break;
            }

            this.$cal = $('<div class="fc-calendar ' + rowClass + '">').
                append(head, body);
            this.$el.find('div.fc-calendar').remove().end().append(this.$cal);
            this.$el.find('.fc-emptydate').
                parent().
                css({ 'background': 'transparent', 'cursor': 'default' });

            if (!firstRun) this.$el.trigger($.Event('shown.calendario'));
            if (callback) callback.call();
        },

        _getHead: function () {
            var html = '<div class="fc-head">';
            for (var i = 0; i <= 6; i++) {
                var pos = i + this.options.startIn,
                    j = pos > 6 ? pos - 6 - 1 : pos;
                html += '<div>' + (this.options.displayWeekAbbr
                    ? this.options.weekabbrs[j]
                    : this.options.weeks[j]) + '</div>';
            }
            return html + '</div>';
        },

        _parseDataToDay: function (data, day, other) {
            var content = '';
            if (!other) {
                if (Array.isArray(data)) content = this._convertDayArray(data,
                    day);
                else content = this._wrapDay(data, day, true);
            } else {
                if (!Array.isArray(data)) data = [data];
                for (var i = 0; i < data.length; i++) {
                    if (this.month != 1 && (day >= data[i].startDate) &&
                        (day <= data[i].endDate)) content += this._wrapDay(
                        data[i], day, true);
                    else if (this.month == 1 && (day >= data[i].startDate)) {
                        if (data[i].endDate &&
                            (day <= data[i].endDate)) content += this._wrapDay(
                            data[i], day, true);
                        else if (!data[i].endDate) content += this._wrapDay(
                            data[i], day, true);
                    }
                }
            }
            return content;
        },

        _toDateTime: function (time, day, start) {
            var zoneH = parseInt(this.options.zone.split(':')[0]),
                zoneM = parseInt(this.options.zone.charAt(0) +
                    this.options.zone.split(':')[1]),
                hour = parseInt(time.split(':')[0]) - zoneH,
                minutes = parseInt(time.split(':')[1]) - zoneM,
                d = new Date(
                    Date.UTC(this.year, this.month, day, hour, minutes, 0, 0));
            if (start) {
                var hStart = parseInt(start.split(':')[0]) - zoneH,
                    mStart = parseInt(start.split(':')[1]) - zoneM;
                if (d.getTime() - new Date(
                    Date.UTC(this.year, this.month, day, hStart, mStart, 0,
                        0)).getTime() < 0)
                    d = new Date(
                        Date.UTC(this.year, this.month, day + 1, hour, minutes,
                            0, 0));
            }
            return d.toISOString();
        },

        _timeHtml: function (day, date) {
            var content = day.content;
            content += '<time class="fc-allday" datetime="' + day.allDay +
                '"></time>';
            content += '<time class="fc-starttime" datetime="' +
                this._toDateTime(day.startTime, date) + '">' + day.startTime +
                '</time>';
            content += '<time class="fc-endtime" datetime="' +
                this._toDateTime(day.endTime, date, day.startTime) + '">' +
                day.endTime + '</time>';
            return content;
        },

        _wrapDay: function (day, date, wrap) {
            if (date) {
                if (wrap) return '<div class="fc-calendar-event">' +
                    this._timeHtml(day, date) + '</div>';
                else return this._timeHtml(day, date);
            } else return '<div class="fc-calendar-event">' + day + '</div>';
        },

        _convertDayArray: function (day, date) {
            var wrap_days = [];
            for (var i = 0; i < day.length; i++) {
                wrap_days[i] = this._wrapDay(day[i], date, false);
            }
            return this._wrapDay(
                wrap_days.join('</div><div class="fc-calendar-event">'));
        },

        _getBody: function () {
            var d = new Date(this.year, this.month + 1, 0),
                monthLength = d.getDate(), // number of days in the month
                firstDay = new Date(this.year, d.getMonth(), 1),
                pMonthLength = new Date(this.year, this.month, 0).getDate();

            // day of the week
            this.startingDay = firstDay.getDay();

            var html = '<div class="fc-body"><div class="fc-row">',
                day = 1; // fill in the days

            for (var i = 0; i < 7; i++) { // this loop is for weeks (rows)
                for (var j = 0; j <= 6; j++) { // this loop is for weekdays (cells)
                    var pos = this.startingDay - this.options.startIn,
                        p = pos < 0 ? 6 + pos + 1 : pos,
                        inner = '',
                        today = this.month === this.today.getMonth() &&
                            this.year === this.today.getFullYear() && day ===
                            this.today.getDate(),
                        past = this.year < this.today.getFullYear() ||
                            this.month < this.today.getMonth() && this.year ===
                            this.today.getFullYear() ||
                            this.month === this.today.getMonth() &&
                            this.year === this.today.getFullYear() && day <
                            this.today.getDate(),
                        content = '';

                    if (this.options.fillEmpty && (j < p || i > 0)) {
                        if (day > monthLength) {
                            inner = '<span class="fc-date fc-emptydate">' +
                                (day - monthLength) +
                                '</span><span class="fc-weekday">';
                            ++day;
                        } else if (day == 1) {
                            inner = '<span class="fc-date fc-emptydate">' +
                                (pMonthLength - p + 1) +
                                '</span><span class="fc-weekday">';
                            ++pMonthLength;
                        }
                        inner += this.options.weekabbrs[j +
                        this.options.startIn > 6 ? j + this.options.startIn -
                            6 - 1 : j + this.options.startIn] + '</span>';
                    }
                    if (day <= monthLength && (i > 0 || j >= p)) {
                        inner = '<span class="fc-date">' + day +
                            '</span><span class="fc-weekday">' +
                            this.options.weekabbrs[j +
                            this.options.startIn > 6 ? j +
                                this.options.startIn - 6 - 1 : j +
                                this.options.startIn] + '</span>';

                        var strdate = (this.month + 1 < 10 ? '0' +
                            (this.month + 1) : this.month + 1) + '-' +
                            (day < 10 ? '0' + day : day) + '-' + this.year,
                            dayData = this.caldata[strdate],
                            strdateyear = (this.month + 1 < 10 ? '0' +
                                (this.month + 1) : this.month + 1) + '-' +
                                (day < 10 ? '0' + day : day) + '-YYYY',
                            dayDataYear = this.caldata[strdateyear],
                            strdatemonth = 'MM-' +
                                (day < 10 ? '0' + day : day) + '-' + this.year,
                            dayDataMonth = this.caldata[strdatemonth],
                            strdatemonthyear = 'MM' + '-' +
                                (day < 10 ? '0' + day : day) + '-YYYY',
                            dayDataMonthYear = this.caldata[strdatemonthyear],
                            strdatemonthlyyear = (this.month + 1 < 10 ? '0' +
                                (this.month + 1) : this.month + 1) + '-DD-' +
                                this.year,
                            dayDataMonthlyYear = this.caldata[strdatemonthlyyear],
                            strdatemonthly = (this.month + 1 < 10 ? '0' +
                                (this.month + 1) : this.month + 1) + '-DD-YYYY',
                            dayDataMonthly = this.caldata[strdatemonthly];

                        if (today &&
                            this.caldata.TODAY) content += this._parseDataToDay(
                            this.caldata.TODAY, day);
                        if (dayData) content += this._parseDataToDay(dayData,
                            day);
                        if (dayDataMonth) content += this._parseDataToDay(
                            dayDataMonth, day);
                        if (dayDataMonthlyYear) content += this._parseDataToDay(
                            dayDataMonthlyYear, day, true);
                        if (dayDataMonthly) content += this._parseDataToDay(
                            dayDataMonthly, day, true);
                        if (dayDataMonthYear) content += this._parseDataToDay(
                            dayDataMonthYear, day);
                        if (dayDataYear) content += this._parseDataToDay(
                            dayDataYear, day);
                        if (content !==
                            '') inner += '<div class="fc-calendar-events">' +
                            content + '</div>';
                        ++day;
                    } else {
                        today = false;
                    }

                    var cellClasses = today ? 'fc-today ' : '';

                    if (past) cellClasses += 'fc-past ';
                    else cellClasses += 'fc-future ';

                    if (content !== '') cellClasses += 'fc-content';

                    html += (cellClasses !== '' ? '<div class="' +
                        cellClasses.trim() + '">' : '<div>') + inner + '</div>';
                }

                if (day > monthLength) { // stop making rows if we've run out of days
                    this.rowTotal = i + 1;
                    break;
                } else {
                    html += '</div><div class="fc-row">';
                }
            }
            return html + '</div></div>';
        },

        _move: function (period, dir, callback) {
            if (dir === 'previous') {
                if (period === 'month') {
                    this.year = this.month > 0 ? this.year : --this.year;
                    this.month = this.month > 0 ? --this.month : 11;
                } else if (period === 'year') this.year = --this.year;
            } else if (dir === 'next') {
                if (period === 'month') {
                    this.year = this.month < 11 ? this.year : ++this.year;
                    this.month = this.month < 11 ? ++this.month : 0;
                } else if (period === 'year') this.year = ++this.year;
            }
            this._generateTemplate(false, callback);
        },

        /*************************
         ***** PUBLIC METHODS *****
         **************************/
        option: function (option, value) {
            if (value) this.options[option] = value;
            else return this.options[option];
        },
        getYear: function () {
            return this.year;
        },
        getMonth: function () {
            return this.month + 1;
        },
        getMonthName: function () {
            return this.options.displayMonthAbbr
                ? this.options.monthabbrs[this.month]
                : this.options.months[this.month];
        },
        // gets the cell's content div associated to a day of the current displayed month
        // day : 1 - [28||29||30||31]
        getCell: function (day) {
            var row = Math.floor(
                (day + this.startingDay - this.options.startIn - 1) / 7),
                pos = day + this.startingDay - this.options.startIn -
                    (row * 7) - 1;
            return this.$cal.find('div.fc-body').
                children('div.fc-row').
                eq(row).
                children('div').
                eq(pos);
        },
        setData: function (caldata, clear) {
            caldata = this._processCaldata(caldata);
            if (clear) this.caldata = caldata;
            else $.extend(this.caldata, caldata);
            this._generateTemplate(false);
        },
        // goes to today's month/year
        gotoNow: function (callback) {
            this.month = this.today.getMonth();
            this.year = this.today.getFullYear();
            this._generateTemplate(false, callback);
        },
        // goes to month/year
        gotoMonth: function (month, year, callback) {
            this.month = month - 1;
            this.year = year;
            this._generateTemplate(false, callback);
        },
        gotoPreviousMonth: function (callback) {
            this._move('month', 'previous', callback);
        },
        gotoPreviousYear: function (callback) {
            this._move('year', 'previous', callback);
        },
        gotoNextMonth: function (callback) {
            this._move('month', 'next', callback);
        },
        gotoNextYear: function (callback) {
            this._move('year', 'next', callback);
        },
        feed: function (callback) {
            var self = this;
            $.post(self.options.feedParser, { dates: this.caldata }).
                always(function (data) {
                    if (callback) callback.call(this, JSON.parse(data).hevent);
                });
        },
        version: function () {
            return this.VERSION;
        },
    };

    var logError = function (message) {
        throw new Error(message);
    };

    $.fn.calendario = function (options) {
        var instance = $.data(this, 'calendario');
        if (typeof options === 'string') {
            var args = Array.prototype.slice.call(arguments, 1);
            this.each(function () {
                if (!instance) {
                    logError(
                        'Cannot call methods on calendario prior to initialization; Attempted to call method \'' +
                        options + '\'');
                    return;
                }
                if (!$.isFunction(instance[options]) || options.charAt(0) ===
                    '_') {
                    logError('No such method \'' + options +
                        '\' for calendario instance.');
                }
                instance[options].apply(instance, args);
            });
        } else {
            this.each(function () {
                if (instance) instance._init();
                else instance = $.data(this, 'calendario',
                    new $.Calendario(options, this));
            });
        }
        instance.$el.trigger($.Event('shown.calendar.calendario'), [instance]);
        return instance;
    };
})(jQuery, window);

Spamworldpro Mini