Вход Регистрация
Файл: Jalendar2/js/jalendar.js
Строк: 879
<?php
////////////////////////////////
// Author: Bora DAN — http://codecanyon.net/user/bqra
// 13 February 2016
// E-mail: bora_dan@hotmail.com
// Twitter: http://twitter.com/bqra
// Dribbble: http://dribbble.com/bqra
// Website: http://pikselmatik.com
// Version: 1.4
////////////////////////////////
(function($) {
    $.
fn.jalendar = function(options) {
        var 
settings = $.extend({
            
customDay: new Date(),
            
color: "#3aa4d1",
            
color2: "",
            
lang: "EN",
            
type: "",
            
customUrl: "#",
            
dateType: "dd-mm-yyyy",
            
sundayStart: false,
            
dayColor: null,
            
titleColor: null,
            
weekColor: null,
            
todayColor: null,
            
selectingBeforeToday: false,
            
done: null
        
}, options);
        
// Languages            
        
var dayNames = {};
        var 
monthNames = {};
        var 
lEvent = {};
        var 
lClose = {}; 

        
dayNames.EN = new Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun");
        
dayNames.TR = new Array("Pzt", "Sal", "Çar", "Per", "Cum", "Cmt", "Pzr");
        
dayNames.ES = new Array("Lun", "Mar", "Mié", "Jue", "Vie", "Såb", "Dom");
        
dayNames.DE = new Array("Mon", "Die", "Mit", "Don", "Fre", "Sam", "Son");
        
dayNames.FR = new Array("Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim");
        
dayNames.IT = new Array("Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dim");
        
dayNames.FIL = new Array("Lun", "Mar", "Miy", "Huw", "Biy", "Sab", "Lin");
        
dayNames.RU = new Array("Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс");
        
dayNames.NL = new Array("Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo");
        
dayNames.ZH = new Array("星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天");
        
dayNames.HI = new Array("रविवार", "सोमवार", "मंगलवार", "बुधवार", "गुरुवार", "शुक्रवार", "शनिवार");
        
dayNames.PT = new Array("Se", "Te", "Qu", "Qu", "Se", "Sa", "Do");
        
dayNames.PL = new Array("po", "wt", "sr", "cz", "pi", "so", "ni");

        
monthNames.EN = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
        
monthNames.TR = new Array("Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık");
        
monthNames.ES = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
        
monthNames.DE = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
        
monthNames.FR = new Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aoút", "Septembre", "Octobre", "Novembre", "Décembre");
        
monthNames.IT = new Array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Guigno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre");
        
monthNames.FIL = new Array("Enero", "Pebrero", "Marso", "Abril", "Mayo", "Hunyo", "Hulyo", "Agosto", "Setyembre", "Oktubre", "Nobyembre", "Disyembre");
        
monthNames.RU = new Array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь");
        
monthNames.NL = new Array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
        
monthNames.ZH = new Array("一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月");
        
monthNames.HI = new Array("जनवरी", "फरवरी", "मार्च", "अप्रैल", "मई", "जून", "जुलाई", "अगस्त", "सितंबर", "अक्टूबर", "नवंबर", "दिसंबर");
        
monthNames.PT = new Array("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro");
        
monthNames.PL = new Array("styczen", "luty", "marzec", "kwiecien", "maj", "czerwiec", "lipiec", "sierpien", "wrzesien", "pazdziernik", "listopad", "grudzien");

        
lEvent.EN = "Event(s)";
        
lEvent.TR = "Etkinlik";
        
lEvent.ES = "Evento(s)";
        
lEvent.DE = "Tätigkeit";
        
lEvent.FR = "Activité(s)";
        
lEvent.IT = "Attività";
        
lEvent.FIL = "Aktibidad";
        
lEvent.RU = "Деятельность";
        
lEvent.NL = "Activiteit(en)";
        
lEvent.ZH = "事件";
        
lEvent.HI = "परिणाम";
        
lEvent.PT = "Eventos";
        
lEvent.PL = "Działalność";
        
        
lClose.EN = "Close";
        
lClose.TR = "Kapat";
        
lClose.ES = "Cerrar";
        
lClose.DE = "Schließen";
        
lClose.FR = "Fermer";
        
lClose.IT = "Chiudere";
        
lClose.FIL = "Isara";
        
lClose.RU = "Закрывать";
        
lClose.NL = "Sluiten";
        
lClose.ZH = "關閉";
        
lClose.HI = "बंद करे";
        
lClose.PT = "Fechar";
        
lClose.PL = "Zamknąć";

        var 
bt = new Date(),
        
btDate = bt.getDate(),
        
btMonth = bt.getMonth(),
        
btYear = bt.getFullYear();

        var 
$this = $(this);
        var 
div = function(e, classN) {
            return $(
document.createElement(e)).addClass(classN);
        };
        
// HTML Tree
        
var color2 = settings.color2 === "" ? settings.color : settings.color2;
        
$this.append($('<input type="hidden" class="data1" /><input type="hidden" class="data2" />'), div("div", "jalendar-container").append(div("div", "jalendar-pages").append(div("div", "header").append(div("a", "prv-m").append(div("i", "fa fa-angle-left")), div("h1"), div("a", "nxt-m").append(div("i", "fa fa-angle-right")), div("div", "day-names")), div("div", "days"), div("div", "add-event").append(div("div", "events").append(div("h3", "").html("<span></span> " + lEvent[settings.lang]), div("div", "events-list")), div("div", "close-button").text(lClose[settings.lang]))).attr("style", "background-color:" + settings.color + "; background: -webkit-gradient(linear, left top, left bottom, from(" + settings.color + "), to(" + color2 + ")); background: -webkit-linear-gradient(top, " + settings.color + ", " + color2 + "); background : -moz-linear-gradient(top, " + settings.color + ", " + color2 + "); background: -ms-linear-gradient(top, " + settings.color + ", " + color2 + "); background: -o-linear-gradient(top, " + settings.color + ", " + color2 + ");")));
        if (
settings.type == "range") {
            
$this.find(".jalendar-pages").addClass("range").append(div("input", "first-range-data").attr({
                
type: "hidden"
            
}), div("input", "last-range-data").attr({
                
type: "hidden"
            
}));
        }
        
// Adding day boxes
        
for (var i = 0; i < 42; i++) {
            
$this.find(".days").append(div("div", "day"));
        }
        
// Adding day names fields
        
var sunday = 0;
        if ( 
settings.sundayStart == true ) {
            
$this.find(".day-names").append(div("h2").text(dayNames[settings.lang][6])); 
            
sunday = 1;
        }
        for (var 
i = sunday; i < 7; i++) {
            
$this.find(".day-names").append(div("h2").text(dayNames[settings.lang][i-sunday]));
        }
        var 
d = new Date(settings.customDay);
        var 
year = d.getFullYear();
        var 
date = d.getDate();
        var 
month = d.getMonth();
        var 
isLeapYear = function(year1) {
            var 
f = new Date();
            
f.setYear(year1);
            
f.setMonth(1);
            
f.setDate(29);
            return 
f.getDate() == 29;
        };
        var 
feb;
        var 
febCalc = function(feb) {
            if (
isLeapYear(year) === true) {
                
feb = 29;
            } else {
                
feb = 28;
            }
            return 
feb;
        };
        var 
monthDays = new Array(31, febCalc(feb), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
        var 
firstRangeIndex = null, lastRangeIndex = null, firstRangeMonthIndex = null, lastRangeMonthIndex = null, firstRangeYearIndex = null, lastRangeYearIndex = null;
        function 
calcMonth() {
            
monthDays[1] = febCalc(feb);
            var 
weekStart = new Date();
            
weekStart.setFullYear(year, month, 0);
            var 
startDay = weekStart.getDay() + sunday;
            
$this.find(".header h1").html(monthNames[settings.lang][month] + " " + year + '<div class="total-bar"></div>');
            
$this.find(".day").html("&nbsp;").removeAttr("data-date").removeClass("this-month have-event disable-selecting");
            for (var 
i = 0; i < 42 - (startDay + monthDays[month]); i++) {
                
$this.find(".day").eq(startDay + monthDays[month] + i ).html("<span>" + (i + 1) + "</span>");
            }
            for (var 
i = 0; i < startDay; i++) {
                var 
december = monthDays[month - 1] == undefined ? monthDays[11] : monthDays[month - 1];
                
$this.find(".day").eq(i).html("<span>" + (december - startDay + (i + 1)) + "</span>");
            }
            for (var 
i = 1; i <= monthDays[month]; i++) {
                
startDay++;
                var 
dateTypeUse;
                if (
settings.dateType == "dd-mm-yyyy") {
                    
dateTypeUse = i + "-" + (month + 1) + "-" + year;
                } else if (
settings.dateType == "mm-dd-yyyy") {
                    
dateTypeUse = month + 1 + "-" + i + "-" + year;
                } else if (
settings.dateType == "yyyy-mm-dd") {
                    
dateTypeUse = year + "-" + (month + 1) + "-" + i;
                } else if (
settings.dateType == "yyyy-dd-mm") {
                    
dateTypeUse = year + "-" + i + "-" + (month + 1);
                }
                if (
settings.type == "linker") {
                    
$this.find(".day").eq(startDay - 1).addClass("this-month").attr("data-date", dateTypeUse).html('<span><a href="' + settings.customUrl + dateTypeUse + '">' + i + "</a></span>");
                } else {
                    
$this.find(".day").eq(startDay - 1).addClass("this-month").attr("data-date", dateTypeUse).html("<span>" + i + "</span>");
                }

                if ( 
settings.selectingBeforeToday == true ) {
                    var 
btShowingDates = (Math.round(new Date(year + '/' + month + '/' + i + ' 00:00:00').getTime()/1000));
                    var 
btToday = (Math.round(new Date(btYear + '/' + btMonth + '/' + btDate + ' 00:00:00').getTime()/1000));
                    if ( 
btShowingDates > btToday ) {
                        
$this.find(".day").eq(startDay - 1).addClass("disable-selecting");
                    }
                }

            }
            if (
month == d.getMonth() && year == d.getFullYear() ) {
                
$this.find(".day.this-month").removeClass("today").eq(date - 1).addClass("today");
            } else {
                
$this.find(".day.this-month").removeClass("today").attr("style", "");
            }
            
$this.find(".days").attr("data-month", month + 1).attr("data-year", year);
            
// added event
            
$this.find(".added-event").each(function(i) {
                $(
this).attr("data-id", i);
                
$this.find('.this-month[data-date="' + $(this).attr("data-date") + '"]').append(
                    
div("div", "event-single").attr("data-id", i).append(
                        
div("a", "").attr('href', $(this).attr('data-link')).attr('target', 'blank').text($(this).attr("data-title"))
                    )
                );
                
$this.find(".day").has(".event-single").addClass("have-event");
            });
            
calcTotalDayAgain();
            if (
settings.dayColor !== null ) {
                
$this.find(".day span, .day span a").css({
                    
color: settings.dayColor
                
});
            }
            if (
settings.titleColor !== null ) {
                
$this.find(".header h1, .header .prv-m, .header .nxt-m, .event-single p, h3, .close-button").css({
                    
color: settings.titleColor
                
});
            }
            if (
settings.weekColor !== null ) {
                
$this.find("h2").css({
                    
color: settings.weekColor
                
});
            }
            if (
settings.todayColor !== null ) {
                
$this.find(".day.this-month.today span, .day.this-month.today span a").css({
                    
color: settings.todayColor
                
});
            }
            if (
settings.color == "#fff" || settings.color == "#ffffff" || settings.color == "white") {
                
$this.find(".header h1, .header .prv-m, .header .nxt-m, .day.today span, h2, .event-single p, h3, .close-button").css({
                    
"text-shadow": "none"
                
});
            }
        }
        
calcMonth();
        var 
arrows = new Array($this.find(".prv-m"), $this.find(".nxt-m"));
        var 
$close = $this.find(".jalendar .close-button");
        
// Calculate total event again
        
function calcTotalDayAgain() {
            var 
eventCount = $this.find(".this-month .event-single").length;
            if (
eventCount == 0) {
                
$this.find(".total-bar").hide(0);
            }
            
$this.find(".total-bar").text(eventCount);
            
$this.find(".events h3 span").text($(".jalendar .day.selected .event-single").length);
        }
        function 
prevAddEvent() {
            
$this.find(".day").removeClass("selected").removeAttr("style");
            
$this.find(".add-event").removeClass("selected").height(0);
        }
        function 
isFirstIndexNull() {
            
$this.find(".day").removeClass("first-range range last-range");
            if (
firstRangeIndex !== null ) {
                if (
$this.find('[data-date="' + rangeFirstRange.val() + '"]').length == 0) {
                    if (
firstRangeMonthIndex < $this.find(".days").attr("data-month") && firstRangeYearIndex >= $this.find(".days").attr("data-year") || firstRangeYearIndex < $this.find(".days").attr("data-year")) {
                        
firstRangeIndex = 0;
                    } else if (
firstRangeMonthIndex > $this.find(".days").attr("data-month") && firstRangeYearIndex <= $this.find(".days").attr("data-month") || firstRangeYearIndex > $this.find(".days").attr("data-year")) {
                        
firstRangeIndex = 42;
                    }
                    if (
lastRangeIndex !== null ) {
                        if (
firstRangeYearIndex == lastRangeYearIndex && firstRangeMonthIndex == lastRangeMonthIndex) {
                            return 
false;
                        }
                        var 
nowYear = parseInt($this.find(".days").attr("data-year"), 10), nowMonth = parseInt($this.find(".days").attr("data-month"), 10);
                        if (
firstRangeYearIndex < nowYear && lastRangeYearIndex > nowYear || lastRangeMonthIndex > nowMonth && lastRangeYearIndex >= nowYear && firstRangeYearIndex < nowYear || firstRangeMonthIndex < nowMonth && firstRangeYearIndex == nowYear && lastRangeMonthIndex > nowMonth && lastRangeYearIndex == nowYear || firstRangeMonthIndex < nowMonth && lastRangeYearIndex > nowYear && firstRangeYearIndex == nowYear || firstRangeMonthIndex < nowMonth && firstRangeYearIndex == nowYear && lastRangeMonthIndex > nowMonth && lastRangeYearIndex >= nowYear) {
                            
$this.find(".day").addClass("range");
                        }
                    }
                } else {
                    
firstRangeIndex = $this.find('[data-date="' + rangeFirstRange.val() + '"]').index();
                }
            }
        }
        function 
selectedDays() {
            
$this.find('.day[data-date="' + rangeFirstRange.val() + '"]').addClass("first-range");
            
$this.find('.day[data-date="' + rangeLastRange.val() + '"]').addClass("last-range");
            
$this.find('.day[data-date="' + rangeFirstRange.val() + '"]').nextUntil('.day[data-date="' + rangeLastRange.val() + '"]').addClass("range");
            if (
$this.find('.day[data-date="' + rangeLastRange.val() + '"]').length > 0) {
                if (
$this.find(".day.first-range").length > 0) {
                    
$this.find(".day.first-range").nextUntil(".day.last-range").addClass("range");
                } else {
                    
$this.find(".day.last-range").prevUntil(".day:eq(0)").addClass("range");
                }
            }
        }
        var 
rangeFirstRange = $this.find("input.first-range-data"), rangeLastRange = $this.find("input.last-range-data");
        
// next month click action
        
arrows[1].on("click", function() {
            if (
month >= 11) {
                
month = 0;
                
year++;
            } else {
                
month++;
            }
            
calcMonth();
            
prevAddEvent();
            if (
settings.type == "range") {
                
isFirstIndexNull();
                
selectedDays();
            }
        });
        
// prev month click action
        
arrows[0].on("click", function() {
            
dayClick = $this.find(".this-month");
            if (
month === 0) {
                
month = 11;
                
year--;
            } else {
                
month--;
            }
            
calcMonth();
            
prevAddEvent();
            if (
settings.type == "range") {
                
isFirstIndexNull();
                
selectedDays();
            }
        });
        
$this.on("click", ".close-button", function(event) {
            
event.preventDefault();
            
$this.find(".add-event").removeClass("selected").height(0);
            
$this.find(".this-month.selected").removeClass("selected");
        });
        
$this.on("click", ".this-month:not(.disable-selecting)", function() {
            if (
settings.type == "selector") {
                
$this.find("input.data1").val($(this).data("date"));
                $(
this).parent().find(".selected").removeClass("selected");
                $(
this).addClass("selected");
                if (
$this.parent().is(".jalendar-input")) {
                    
$this.parent().find("input").removeClass("selected");
                    
$this.parent(".jalendar-input").find("input").val($(this).data("date"));
                }
                if (
settings.done !== null ) {
                    
settings.done.call(this);
                }
                return 
false;
            }
            if (
settings.type == "range") {
                var 
firstRange = $(this).parent().find(".first-range"), lastRange = $(this).parent().find(".last-range");
                function 
firstDateSelecting(that) {
                    
that.parent().find(".day").removeClass("first-range").removeClass("range").removeClass("last-range");
                    
that.addClass("first-range");
                    
rangeFirstRange.val(that.attr("data-date"));
                    
firstRangeIndex = $this.find('[data-date="' + $this.find(".first-range").attr("data-date") + '"]').index();
                    
firstRangeMonthIndex = $this.find(".days").attr("data-month");
                    
firstRangeYearIndex = $this.find(".days").attr("data-year");
                    
lastRangeIndex = null;
                    
rangeLastRange.val("");
                }
                function 
lastDateSelecting(that) {
                    
that.addClass("last-range");
                    
rangeLastRange.val(that.attr("data-date"));
                    
lastRangeIndex = $this.find(".last-range").index();
                    
lastRangeMonthIndex = $this.find(".days").attr("data-month");
                    
lastRangeYearIndex = $this.find(".days").attr("data-year");
                }
                if (
firstRangeIndex !== null ) {
                    if (
lastRangeIndex !== null ) {
                        
firstDateSelecting($(this));
                    } else {
                        if (
firstRangeIndex > $(this).index()) {
                            
firstDateSelecting($(this));
                            return 
false;
                        }
                        
lastDateSelecting($(this));
                        
$this.find("input.data1").val(rangeFirstRange.val());
                        
$this.find("input.data2").val(rangeLastRange.val());
                        if (
$this.parent().is(".jalendar-input")) {
                            
$this.parent().find("input").removeClass("selected");
                            
$this.parent(".jalendar-input").find("input").val($this.find("input.data1").val() + ", " + $this.find("input.data2").val());
                        }
                        if (
settings.done !== null ) {
                            
settings.done.call(this);
                        }
                    }
                } else {
                    
firstDateSelecting($(this));
                }
                
$this.on({
                    
mouseenter: function() {
                        if (
firstRangeIndex === null) {
                            return 
false;
                        }
                        if (
rangeLastRange.val() === "") {
                            
$this.find(".day").removeClass("range last-range");
                            if ($(
this).index() > firstRangeIndex) {
                                if ($(
this).hasClass("this-month")) {
                                    $(
this).addClass("last-range");
                                    $(
this).parent().find(".day:eq(" + firstRangeIndex + ")").nextUntil(".this-month.last-range").addClass("range");
                                }
                            }
                        }
                    },
                    
mouseleave: function() {
                        if (
rangeLastRange.val() === "") {
                            $(
this).parent().find(".day").removeClass("last-range").removeClass("range");
                        }
                    }
                }, 
".range .day.this-month");
                return 
false;
            }
            var 
eventSingle = $(this).find(".event-single");
            
$this.find(".events .event-single").remove();
            
prevAddEvent();
            if (
settings.type === "") {
                
$this.find("input.data1").val($(this).data("date"));
                $(
this).addClass("selected");
                
$this.find(".add-event").find(".events-list").html(eventSingle.clone());
                if (
$this.parent().is(".jalendar-input")) {
                    
$this.parent(".jalendar-input").find("input").val($(this).data("date"));
                }
                if (
$this.find(".events .event-single").length >= 0) {
                    
$this.find(".events h3 span").html($this.find(".events .event-single").size());
                }
                
$this.find(".add-event").addClass("selected").height($this.find(".add-event .events").height() + 59);
            }
        });
        if (
$this.parent().is(".jalendar-input")) {
            
$this.parent(".jalendar-input").find('input[type="text"], .jalendar').on("click", function(event) {
                
event.stopPropagation();
                $(
this).addClass("selected");
            });
        }
        $(
"html").on("click", function() {
            $(
".jalendar-input input").removeClass("selected");
        });
    };
})(
jQuery);
?>
Онлайн: 0
Реклама