jQuery.easing._dd_easing = function(x, t, b, c, d) { return -c * ((t = t / d - 1) * t * t * t - 1) + b; }; (function($) { $.fn.dateDropper = function(options) { return $(this).each(function() { if ($(this).is('input') && $(this).attr('type') == "text") { var t_y_cur = new Date().getFullYear(), t_d_cur = new Date().getDate(), t_m_cur = new Date().getMonth(); var _dd_m, _dd_d, _dd_y, _dd_sub_y; var _dd_id = $('.dd-w').length; var _structure = '
'; $('body').append(_structure); var _dd_input = $(this), _dd = $('#dd-w-' + _dd_id), _dd_isB = function(y) { return !((y % 4) || (!(y % 100) && (y % 400))) }, _dd_0 = function(n) { return n < 10 ? '0' + n : n }, _dd_settings = $.extend({ animate: true, init_animation: "fadein", format: "m/d/Y", lang: "en", lock: false, maxYear: t_y_cur, minYear: 1970, yearsRange: 10, //CSS PRIOPRIETIES// dropPrimaryColor: "#01CEFF", dropTextColor: "#333333", dropBackgroundColor: "#FFFFFF", dropBorder: "1px solid #08C", dropBorderRadius: 8, dropShadow: "0 0 10px 0 rgba(0, 136, 204, 0.45)", dropWidth: 124, dropTextWeight: 'bold' }, options), _dd_event = null, _dd_init_state = false, _dd_buffer = false; var _dd_color = function (col, amt) { var usePound = false; if (col[0] == "#") { col = col.slice(1); usePound = true; } var num = parseInt(col,16); var r = (num >> 16) + amt; if (r > 255) r = 255; else if (r < 0) r = 0; var b = ((num >> 8) & 0x00FF) + amt; if (b > 255) b = 255; else if (b < 0) b = 0; var g = (num & 0x0000FF) + amt; if (g > 255) g = 255; else if (g < 0) g = 0; return (usePound?"#":"") + (g | (b << 8) | (r << 16)).toString(16); }; var _dd_c_invert = function (hexTripletColor) { var color = hexTripletColor; color = color.substring(1); // remove # color = parseInt(color, 16); // convert to integer color = 0xFFFFFF ^ color; // invert three bytes color = color.toString(16); // convert to hex color = ("000000" + color).slice(-6); // pad with leading zeros color = "#" + color; // prepend # return color; } $('').appendTo('head'); switch (_dd_settings.lang) { //Arabic case 'ar': var mn = [ "جانفي", "فيفري", "مارس", "أفريل", "ماي", "جوان", "جويلية", "أوت", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر" ]; var dn = [ 'الأحد', 'الإثنين', 'الثلثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت' ]; break; //italian case 'it': var mn = [ "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" ]; var dn = [ 'Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato' ]; break; //hungarian case 'hu': var mn = [ "január", "február", "március", "április", "május", "június", "július", "augusztus", "szeptember", "október", "november", "december" ]; var dn = [ 'vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat' ]; break; //greek case 'gr': var mn = [ "Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος" ]; var dn = [ 'Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο' ]; break; //espanol case 'es': var mn = [ "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" ]; var dn = [ 'Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado' ]; break; //dansk case 'da': var mn = [ "januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december" ]; var dn = [ 'søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag' ]; break; //deutsch case 'de': var mn = [ "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" ]; var dn = [ 'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag' ]; break; //dutch case 'nl': var mn = [ "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" ]; var dn = [ 'zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag' ]; break; //francais case 'fr': var mn = [ "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" ]; var dn = [ 'Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi' ]; break; //polski case 'pl': var mn = [ "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień" ]; var dn = [ 'niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota' ]; break; //portuguese case 'pt': var mn = [ "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" ]; var dn = [ "Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado" ]; break; //slovenian case 'si': var mn = [ "januar", "februar", "marec", "april", "maj", "junij", "julij", "avgust", "september", "oktober", "november", "december" ]; var dn = [ 'nedelja', 'ponedeljek', 'torek', 'sreda', 'četrtek', 'petek', 'sobota' ]; break; //ukrainian case 'uk': var mn = [ "січень", "лютий", "березень", "квітень", "травень", "червень", "липень", "серпень", "вересень", "жовтень", "листопад", "грудень" ]; var dn = [ 'неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'п\'ятниця', 'субота' ]; break; //russian case 'ru': var mn = [ "январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь" ]; var dn = [ 'воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота' ]; break; //turkish case 'tr': var mn = [ "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" ]; var dn = [ 'Pazar', 'Pazartesi', 'Sali', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi' ]; break; //korean case 'ko': var mn = [ "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월" ]; var dn = [ '일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일' ]; break; //finnish case 'fi': var mn = [ "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu" ]; var dn = [ 'Sunnuntai', 'Maanantai', 'Tiistai', 'Keskiviikko', 'Torstai', 'Perjantai', 'Lauantai' ]; break; // Chinese case 'zh': var mn = [ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" ]; var dn = [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ]; break; //english default: var mn = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; var dn = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ]; break; }; var _dd_init = function() { _dd.find('.dd-d li,.dd-s-b li').show(); if (_dd_isB(_dd_y) && _dd_m == 2) { _dd.find('.dd-d ul').width(29 * _dd_settings.dropWidth); if (_dd_d == 30 || _dd_d == 31) { _dd_d = 29; } _dd.find('li[data-id=30],li[data-id=31]').hide(); } else if (!_dd_isB(_dd_y) && _dd_m == 2) { _dd.find('.dd-d ul').width(28 * _dd_settings.dropWidth); if (_dd_d == 29 || _dd_d == 30 || _dd_d == 31) { _dd_d = 28; } _dd.find('li[data-id=29],li[data-id=30],li[data-id=31]').hide(); } else if (_dd_m == 4 || _dd_m == 6 || _dd_m == 9 || _dd_m == 11) { _dd.find('.dd-d ul').width(30 * _dd_settings.dropWidth); if (_dd_d == 31) { _dd_d = 30; } _dd.find('li[data-id=31]').hide(); } else { _dd.find('.dd-d ul').width(31 * _dd_settings.dropWidth); } _dd.find('.dd-d li').each(function(index, element) { var _d = $(this).attr('data-id'), _d = new Date(_dd_m + "/" + _d + "/" + _dd_y), _d = _d.getDay(); if (_d == 0 || _d == 6) $(this).addClass('dd-sun'); else $(this).removeClass('dd-sun'); $(this).find('span').html(dn[_d]); }); _dd.find('.dd-s-b-d li').each(function(index, element) { var _d = $(this).attr('data-id'), _d = new Date(_dd_m + "/" + _d + "/" + _dd_y), _d = _d.getDay(); if (_d == 0 || _d == 6) $(this).addClass('dd-sun'); else $(this).removeClass('dd-sun'); $(this).find('span').html(dn[_d].substr(0, 3)); }); _dd.find('.dd-s-b li').removeClass('dd-on'); _dd.find('.dd-s-b-d li[data-id="' + _dd_d + '"],.dd-s-b-m li[data-id="' + _dd_m + '"],.dd-s-b-s-y li[data-id="' + _dd_y + '"],.dd-s-b-y li[data-id="' + _dd_sub_y + '"]').addClass('dd-on'); if (!_dd_settings.animate) { setTimeout(function(){ _dd.find('.dd-d .dd-ul').scrollLeft(_dd.find('.dd-d li[data-id="' + _dd_d + '"]').index() * _dd_settings.dropWidth); _dd.find('.dd-m .dd-ul').scrollLeft(_dd.find('.dd-m li[data-id="' + _dd_m + '"]').index() * _dd_settings.dropWidth); _dd.find('.dd-y .dd-ul').scrollLeft(_dd.find('.dd-y li[data-id="' + _dd_y + '"]').index() * _dd_settings.dropWidth); _dd.find('.dd-sub-y .dd-ul').scrollLeft(_dd.find('.dd-sub-y li[data-id="' + _dd_sub_y + '"]').index() * _dd_settings.dropWidth); },1); if (_dd.hasClass('dd-init')) { _dd.removeClass('dd-init'); _dd_init_state = true; } } else { if (_dd.hasClass('dd-init')) { _dd.find('.dd-m .dd-ul').animate({ scrollLeft: _dd.find('.dd-m li[data-id="' + _dd_m + '"]').index() * _dd_settings.dropWidth }, 1200, 'swing'); setTimeout(function() { _dd.find('.dd-d .dd-ul').animate({ scrollLeft: _dd.find('.dd-d li[data-id="' + _dd_d + '"]').index() * _dd_settings.dropWidth }, 1200, 'swing'); setTimeout(function() { _dd.find('.dd-y .dd-ul').animate({ scrollLeft: _dd.find('.dd-y li[data-id="' + _dd_y + '"]').index() * _dd_settings.dropWidth }, 1200, 'swing',function(){ _dd_init_state = true; _dd.removeClass('dd-init'); }); }, 200); }, 400); } else { _dd.find('.dd-d .dd-ul').stop().animate({ scrollLeft: _dd.find('.dd-d li[data-id="' + _dd_d + '"]').index() * _dd_settings.dropWidth }, 260); _dd.find('.dd-m .dd-ul').stop().animate({ scrollLeft: _dd.find('.dd-m li[data-id="' + _dd_m + '"]').index() * _dd_settings.dropWidth }, 260); _dd.find('.dd-y .dd-ul').stop().animate({ scrollLeft: _dd.find('.dd-y li[data-id="' + _dd_y + '"]').index() * _dd_settings.dropWidth }, 260); _dd.find('.dd-sub-y .dd-ul').stop().animate({ scrollLeft: _dd.find('.dd-sub-y li[data-id="' + _dd_sub_y + '"]').index() * _dd_settings.dropWidth }, 260); } } _dd_calculate(_dd_sub_y); }, _dd_placement = function() { /* var l1 = _dd_input.offset().top + _dd_input.innerHeight() + _dd.find('.dd-c').innerHeight(), l2 = $(window).scrollTop() + $(window).height(), dd_top, dd_left; _dd.removeClass('dd-top dd-bottom'); if (l1 > l2) { dd_top = _dd_input.offset().top - (_dd.find('.dd-c').innerHeight()) - 6; _dd.addClass('dd-top'); } else { dd_top = _dd_input.offset().top + (_dd_input.innerHeight()) - 6; _dd.addClass('dd-bottom'); } */ _dd.addClass('dd-bottom'); _dd.find('.dd-c').css({ 'top': _dd_input.offset().top + (_dd_input.innerHeight()) - 6, 'left': (_dd_input.offset().left + ((_dd_input.innerWidth() / 2) - (_dd_settings.dropWidth / 2))) }).addClass('dd-' + _dd_settings.init_animation); }, _dd_alert = function() { _dd.find('.dd-c').addClass('dd-alert').removeClass('dd-' + _dd_settings.init_animation); setTimeout(function() { _dd.find('.dd-c').removeClass('dd-alert'); }, 500); }, _dd_submit = function() { if (_dd_settings.lock) { var d1 = Date.parse(t_y_cur + "-" + (t_m_cur + 1) + "-" + t_d_cur) / 1000, d2 = Date.parse(_dd_y + "-" + _dd_m + "-" + _dd_d) / 1000; if (_dd_settings.lock == 'from') { if (d2 < d1) { _dd_alert(); return false; } } else { if (d2 > d1) { _dd_alert(); return false; } } } var x = new Date(_dd_m + "/" + _dd_d + "/" + _dd_y), x = x.getDay(); var str = _dd_settings.format .replace(/\b(d)\b/g, _dd_0(_dd_d)) .replace(/\b(m)\b/g, _dd_0(_dd_m)) .replace(/\b(Y)\b/g, _dd_y) .replace(/\b(D)\b/g, dn[x].substr(0, 3)) .replace(/\b(l)\b/g, dn[x]) .replace(/\b(F)\b/g, mn[_dd_m - 1]) .replace(/\b(M)\b/g, mn[_dd_m - 1].substr(0, 3)) .replace(/\b(n)\b/g, _dd_m) .replace(/\b(j)\b/g, _dd_d); _dd_input.val(str); _dd.find('.dd-c') .addClass('dd-fadeout') .removeClass('dd-' + _dd_settings.init_animation); _dd_event = setTimeout(function() { _dd.hide() _dd.find('.dd-c').removeClass('dd-fadeout'); }, 400); _dd_input.change(); }, _dd_calculate = function(y) { _dd.find('.dd-s-b-s-y ul').empty(); var _i = parseInt(y), _i_max = _i + (_dd_settings.yearsRange - 1); if (_i_max > _dd_settings.maxYear) _i_max = _dd_settings.maxYear; for (var i = _i; i <= _i_max; i++) { if (i % _dd_settings.yearsRange == 0) var _d_c_y = i; _dd.find('.dd-s-b-s-y ul').append('