text: 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 = '<div class="dd-w dd-init" id="dd-w-' + _dd_id + '"><div class="dd-o"></div><div class="dd-c"><div class="dd-w-c"><div class="dd-b dd-m"><div class="dd-ul"><a class="dd-n dd-n-left"><i class="dd-icon-left" ></i></a><a class="dd-n dd-n-right"><i class="dd-icon-right" ></i></a><ul></ul></div></div><div class="dd-b dd-d"><div class="dd-ul"><a class="dd-n dd-n-left"><i class="dd-icon-left" ></i></a><a class="dd-n dd-n-right"><i class="dd-icon-right" ></i></a><ul></ul></div></div><div class="dd-b dd-y"><div class="dd-ul"><a class="dd-n dd-n-left"><i class="dd-icon-left" ></i></a><a class="dd-n dd-n-right"><i class="dd-icon-right" ></i></a><ul></ul></div></div><div class="dd-s-b dd-s-b-m dd-trans"><div class="dd-s-b-ul"><ul></ul></div></div><div class="dd-s-b dd-s-b-d dd-trans"><div class="dd-s-b-ul"><ul></ul></div></div><div class="dd-s-b dd-s-b-y dd-trans"><div class="dd-s-b-ul"><ul></ul></div></div><div class="dd-s-b dd-s-b-s-y dd-trans"><div class="dd-s-b-ul"><ul></ul></div></div><div class="dd-s-b-s"><i class="dd-icon-close" ></i></div><div class="dd-b dd-sub-y"><div class="dd-ul"><a class="dd-n dd-n-left"><i class="dd-icon-left" ></i></a><a class="dd-n dd-n-right"><i class="dd-icon-right" ></i></a><ul></ul></div></div><div class="dd-s"><a><i class="dd-icon-check" ></i></a></div></div></div></div>';
  
                  $('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;
                  }
  
  
                  $('<style>#dd-w-' + _dd_id + ' { font-weight: ' + _dd_settings.dropTextWeight + '; } #dd-w-' + _dd_id + ' .dd-w-c,#dd-w-' + _dd_id + ' .dd-ul li,#dd-w-' + _dd_id + ' .dd-s-b-ul ul { width:' + _dd_settings.dropWidth + 'px; } #dd-w-' + _dd_id + ' .dd-w-c{color:' + _dd_settings.dropTextColor + ';background:' + _dd_settings.dropBackgroundColor + ';border:' + _dd_settings.dropBorder + ';box-shadow:' + _dd_settings.dropShadow + ';border-radius:' + _dd_settings.dropBorderRadius + 'px}#dd-w-' + _dd_id + ' .dd-w-c,#dd-w-' + _dd_id + ' .dd-s-b{background:' + _dd_settings.dropBackgroundColor + '}#dd-w-' + _dd_id + ' .dd-sun,#dd-w-' + _dd_id + ' .dd-s-b-ul li.dd-on{color:' + _dd_settings.dropPrimaryColor + '}#dd-w-' + _dd_id + ' .dd-c .dd-s,#dd-w-' + _dd_id + ' .dd-s-b-s,#dd-w-' + _dd_id + ' .dd-s-b-sub-y,#dd-w-' + _dd_id + ' .dd-sub-y{background:' + _dd_settings.dropPrimaryColor + ';color:' + _dd_settings.dropBackgroundColor + '}#dd-w-' + _dd_id + ' .dd-c .dd-s a,#dd-w-' + _dd_id + ' .dd-c .dd-s a:hover{color:' + _dd_settings.dropBackgroundColor + '}#dd-w-' + _dd_id + ' .dd-c:after{border-left:' + _dd_settings.dropBorder + ';border-top:' + _dd_settings.dropBorder + '}#dd-w-' + _dd_id + '.dd-bottom .dd-c:after{background:' + _dd_settings.dropBackgroundColor + '}#dd-w-' + _dd_id + '.dd-top .dd-c:after{background:' + _dd_settings.dropPrimaryColor + '}#dd-w-' + _dd_id + ' .dd-n,#dd-w-' + _dd_id + ' .dd-sun{color:' + _dd_settings.dropPrimaryColor + '}#dd-w-' + _dd_id + ' .dd-sub-y .dd-n{color:' + _dd_settings.dropBackgroundColor + '} #dd-w-' + _dd_id + ' .dd-c .dd-s:hover,#dd-w-' + _dd_id + ' .dd-s-b-s:hover { background:' + _dd_color(_dd_settings.dropPrimaryColor, -20) + '; }</style>').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('<li data-id="' + i + '" data-filter="' + _d_c_y + '">' + i + '</li>');
  
                          }
  
                          _dd.find('.dd-s-b-s-y ul').append('<div class="dd-clear"></div>');
  
  
                          _dd_sub_y = parseInt(y);
  
                          _dd.find('.dd-sub-y .dd-ul')
                              .scrollLeft(_dd.find('.dd-sub-y li[data-id="' + _dd_sub_y + '"]').index() * _dd_settings.dropWidth);
  
                          _dd.find('.dd-s-b-s-y li').each(function (index, element) {
  
                              $(this).click(function () {
  
                                  _dd.find('.dd-s-b-s-y li').removeClass('dd-on');
                                  $(this).addClass('dd-on');
  
                                  _dd_y = parseInt($(this).attr('data-id'));
  
                                  _dd.find('.dd-s-b-y,.dd-s-b-s-y').removeClass('dd-show');
                                  _dd.find('.dd-s-b-s,.dd-sub-y').hide();
  
                                  _dd_init();
  
                              });
  
                          });
  
                      },
                      _dd_construct = function () {
  
                          _dd.find('.dd-s-b').each(function (index, element) {
  
                              var
                                  _dd_el = $(this),
                                  i_min = 0;
  
                              if (_dd_el.hasClass('dd-s-b-m') || _dd_el.hasClass('dd-s-b-d')) {
  
  
                                  if (_dd_el.hasClass('dd-s-b-m')) {
                                      var
                                          i_max = 12,
                                          _class = 'm';
  
                                      for (var i = i_min; i < i_max; i++) {
  
                                          _dd_el.find('ul')
                                              .append('<li data-id="' + (i + 1) + '">' + mn[i].substr(0, 3) + '<span>' + _dd_0(i + 1) + '</span></li>');
  
                                      }
                                  }
                                  if (_dd_el.hasClass('dd-s-b-d')) {
                                      var
                                          i_max = 31,
                                          _class = 'd';
  
                                      for (var i = i_min; i < i_max; i++) {
  
                                          _dd_el.find('ul')
                                              .append('<li data-id="' + (i + 1) + '">' + _dd_0(i + 1) + '<span></span></li>');
                                      }
                                  }
  
  
                              }
  
                              if (_dd_el.hasClass('dd-s-b-y')) {
  
                                  for (var i = _dd_settings.minYear; i <= _dd_settings.maxYear; i++) {
                                      if (i % _dd_settings.yearsRange == 0)
                                          _dd_el.find('ul').append('<li data-id="' + i + '">' + i + '</li>');
                                  }
                              }
  
                              _dd_el.find('ul').append('<div class="dd-clear"></div>');
  
                              _dd_el.find('ul li').click(function () {
  
                                  if (_dd_el.hasClass('dd-s-b-m') || _dd_el.hasClass('dd-s-b-d')) {
  
                                      if (_dd_el.hasClass('dd-s-b-m')) _dd_m = parseInt($(this).attr('data-id'));
                                      if (_dd_el.hasClass('dd-s-b-d')) _dd_d = parseInt($(this).attr('data-id'));
  
                                      _dd_init();
  
                                      _dd_el.removeClass('dd-show');
                                      _dd.find('.dd-s-b-s').hide();
  
                                  }
                                  if (_dd_el.hasClass('dd-s-b-y')) {
  
                                      _dd.find('.dd-sub-y').show();
                                      _dd_calculate($(this).attr('data-id'));
                                      _dd.find('.dd-s-b-s-y').addClass('dd-show');
  
                                  }
  
                              });
  
  
                              var
                                  top = 0,
                                  scroll = false;
  
                              _dd_el.on('mousewheel DOMMouseScroll', function (e) {
  
                                  scroll = true;
  
                                  if (e.originalEvent.wheelDeltaY < 0 || e.originalEvent.detail > 0)
  
                                      top = _dd_el.scrollTop() + 100;
  
                                  if (e.originalEvent.wheelDeltaY > 0 || e.originalEvent.detail < 0)
  
                                      top = _dd_el.scrollTop() - 100;
  
                                  _dd_el.stop().animate({
  
                                      scrollTop: top
  
                                  }, 600, '_dd_easing', function () {
  
                                      scroll = false;
  
                                  });
  
  
                              }).on('scroll', function () {
  
                                  if (!scroll) top = _dd_el.scrollTop();
  
                              });
  
                          });
  
  
                          _dd.find('.dd-b').each(function (index, element) {
  
                              var
                                  _dd_el = $(this),
                                  _d_ps = 0,
                                  _te_event;
  
                              if (_dd_el.hasClass('dd-m')) {
  
                                  for (var i = 0; i < 12; i++) {
                                      _dd_el.find('ul').append('<li data-id="' + (i + 1) + '">' + mn[i].substr(0, 3) + '</li>');
                                  }
  
                                  _dd_el.find('li').click(function () {
                                      if (_dd_settings.format == 'm' || _dd_settings.format == 'n' || _dd_settings.format == 'F' || _dd_settings.format == 'M')
                                          return false;
                                      _dd.find('.dd-s-b-m').addClass('dd-show');
                                  });
  
                              }
  
                              if (_dd_el.hasClass('dd-d')) {
  
                                  for (var i = 1; i <= 31; i++) {
                                      _dd_el.find('ul').append('<li data-id="' + i + '"><strong>' + _dd_0(i) + '</strong><br><span></span></li>');
                                  }
                                  _dd_el.find('li').click(function () {
                                      _dd.find('.dd-s-b-d').addClass('dd-show');
                                  });
                              }
  
                              if (_dd_el.hasClass('dd-y')) {
  
                                  for (var i = _dd_settings.minYear; i <= _dd_settings.maxYear; i++) {
  
                                      var _d_c_y;
                                      if (i % _dd_settings.yearsRange == 0) _d_c_y = 'data-filter="' + i + '"';
  
                                      _dd_el.find('ul').append('<li data-id="' + i + '" ' + _d_c_y + '>' + i + '</li>');
  
                                  }
  
                                  _dd_el.find('li').click(function () {
                                      if (_dd_settings.format == 'Y')
                                          return false;
                                      _dd.find('.dd-s-b-y').addClass('dd-show');
                                  });
  
                              }
                              if (_dd_el.hasClass('dd-sub-y')) {
  
                                  for (var i = _dd_settings.minYear; i <= _dd_settings.maxYear; i++) {
  
                                      if (i % _dd_settings.yearsRange == 0)
                                          _dd_el.find('ul').append('<li data-id="' + i + '">' + i + '</li>');
  
                                  }
  
                              }
  
                              _dd_el.find('ul').width(_dd_el.find('li').length * _dd_settings.dropWidth);
  
  
                              ////////////////////// NAV ///////////////////////
  
  
                              _dd_el.find('.dd-n').click(function () {
  
                                  clearInterval(_te_event);
  
                                  var
                                      __dd_el,
                                      x,
                                      y;
  
                                  if (_dd_el.hasClass('dd-y')) x = _dd_y;
                                  if (_dd_el.hasClass('dd-m')) x = _dd_m;
                                  if (_dd_el.hasClass('dd-d')) x = _dd_d;
                                  if (_dd_el.hasClass('dd-sub-y')) x = _dd_sub_y;
  
  
                                  if ($(this).hasClass('dd-n-left')) {
  
                                      __dd_el = _dd_el.find('li[data-id="' + x + '"]').prev('li');
  
                                      if (__dd_el.length && __dd_el.is(":visible"))
                                          y = parseInt(__dd_el.attr('data-id'));
  
                                      else
                                          y = parseInt(_dd_el.find('li:visible:last').attr('data-id'));
  
  
                                  } else {
  
                                      __dd_el = _dd_el.find('li[data-id="' + x + '"]').next('li');
  
                                      if (__dd_el.length && __dd_el.is(":visible"))
                                          y = parseInt(__dd_el.attr('data-id'));
                                      else
                                          y = parseInt(_dd_el.find('li:first').attr('data-id'));
                                  }
  
  
                                  if (_dd_el.hasClass('dd-y')) _dd_y = y;
                                  if (_dd_el.hasClass('dd-m')) _dd_m = y;
                                  if (_dd_el.hasClass('dd-d')) _dd_d = y;
                                  if (_dd_el.hasClass('dd-sub-y')) _dd_sub_y = y;
  
                                  _dd_init();
  
                              });
  
                              var _detect = function () {
  
                                  if (_dd_init_state) {
  
                                      _d_ps = Math.round(_dd_el.find('.dd-ul').scrollLeft() / _dd_settings.dropWidth);
                                      var value = parseInt(_dd_el.find('li').eq(_d_ps).attr('data-id'));
  
                                      if (_dd_el.hasClass('dd-y')) _dd_y = value;
                                      if (_dd_el.hasClass('dd-m')) _dd_m = value;
                                      if (_dd_el.hasClass('dd-d')) _dd_d = value;
                                      if (_dd_el.hasClass('dd-sub-y')) _dd_sub_y = value;
  
                                  }
  
                              };
  
                              _dd_el.find('.dd-ul').on('scroll', function () {
  
                                  _detect();
  
                              });
  
                              var _dd_user = false;
  
                              _dd_el.find('.dd-ul').on('mousedown touchstart', function () {
  
                                  if (!_dd_user) _dd_user = true;
                                  clearInterval(_te_event);
  
                                  $(window).on('mouseup touchend touchmove', function () {
  
                                      if (_dd_user) {
  
                                          clearInterval(_te_event);
                                          _te_event = setTimeout(function () {
  
                                              _dd_init();
                                              _dd_user = false;
  
                                          }, 780);
  
                                      }
  
                                  });
  
                              });
  
                              if (_dd_settings.format == 'Y') _dd.find('.dd-m,.dd-d').hide();
                              if (_dd_settings.format == 'm' || _dd_settings.format == 'n' || _dd_settings.format == 'F' || _dd_settings.format == 'M') _dd.find('.dd-y,.dd-d').hide();
  
                          });
  
                          _dd.find('.dd-b li').click(function () {
  
                              if (_dd_settings.format == 'm' || _dd_settings.format == 'n' || _dd_settings.format == 'F' || _dd_settings.format == 'M' || _dd_settings.format == 'Y')
                                  return false;
  
                              _dd.find('.dd-s-b-s').show();
  
                          });
  
                          _dd.find('.dd-s-b-s').click(function () {
  
                              _dd.find('.dd-s-b').removeClass('dd-show');
                              _dd.find('.dd-s-b-s').hide();
  
                          });
  
                          _dd.find('.dd-s').click(function () {
  
                              _dd_submit();
  
                          });
                          _dd.find('.dd-o').click(function () {
  
                              _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_init();
  
                      },
                      _dd_set = function () {
  
                          clearInterval(_dd_event);
  
                          if (_dd.hasClass('dd-init')) {
  
                              _dd_input
                                  .attr({
                                      'readonly': 'readonly'
                                  })
                                  .blur();
  
                              _dd_m = t_m_cur + 1,
                                  _dd_d = t_d_cur,
                                  _dd_y = t_y_cur;
  
                              if (parseInt(_dd_input.attr('data-d')) && parseInt(_dd_input.attr('data-d')) <= 31)
                                  _dd_d = parseInt(_dd_input.attr('data-d'));
  
                              if (parseInt(_dd_input.attr('data-m')) && parseInt(_dd_input.attr('data-m')) <= 11)
                                  _dd_m = parseInt(_dd_input.attr('data-m')) + 1;
  
                              if (parseInt(_dd_input.attr('data-y')) && _dd_input.attr('data-y').length == 4)
                                  _dd_y = parseInt(_dd_input.attr('data-y'));
  
                              if (_dd_y > _dd_settings.maxYear) _dd_settings.maxYear = _dd_y;
                              if (_dd_y < _dd_settings.minYear) _dd_settings.minYear = _dd_y;
  
                              _dd_construct();
  
                          }
  
                          _dd.show();
                          _dd_placement();
  
  
                      };
  
                  _dd_input.click(function () {
  
                      _dd_set();
  
                  });
  
                  _dd_input.bind('focusin focus', function (e) {
                      e.preventDefault();
                  })
  
                  $(window).resize(function () {
  
                      _dd_placement();
  
                  });
  
  
              }
          });
      };
  }(jQuery));