{"id":1123,"date":"2020-11-20T12:15:32","date_gmt":"2020-11-20T11:15:32","guid":{"rendered":"https:\/\/www.bampi.it\/en\/?page_id=1123"},"modified":"2020-12-07T08:42:02","modified_gmt":"2020-12-07T07:42:02","slug":"calendario","status":"publish","type":"page","link":"https:\/\/www.bampi.it\/en\/calendario\/","title":{"rendered":"Calendario"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1123\" class=\"elementor elementor-1123\" data-elementor-settings=\"[]\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f815f8a breadcrumbs-outer elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f815f8a\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-80616c7\" data-id=\"80616c7\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ac411f1 elementor-widget elementor-widget-shortcode\" data-id=\"ac411f1\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"breadcrumbs-new\">\n\n      <a href=\"https:\/\/www.bampi.it\/en\">Home<\/a> \n      <\/a> \n   > <b> Calendario<\/b>               \n   \n<\/div>\n\t\t<div class=\"elementor-shortcode\"><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1aa563a7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1aa563a7\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1299a2bf\" data-id=\"1299a2bf\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6c658207 elementor-widget elementor-widget-heading\" data-id=\"6c658207\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Calendario<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1a05d91 calendario-outer elementor-reverse-mobile elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1a05d91\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-c1e7ab1\" data-id=\"c1e7ab1\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ccbfd1f elementor-widget elementor-widget-shortcode\" data-id=\"ccbfd1f\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"all-events\">\n               \n   <div class=\"event-box-outer\">\n    <br\/> <\/div>\n        \n<\/div>\n\t\t<div class=\"elementor-shortcode\"> <\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-426efd3 page-sidebar\" data-id=\"426efd3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-a3fc524 page-sidebar-in elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a3fc524\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-d6cbcd2\" data-id=\"d6cbcd2\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3c9a3e9 elementor-widget elementor-widget-shortcode\" data-id=\"3c9a3e9\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"calendar\" id=\"calendar-app\">\n  <div class=\"calendar--day-view\" id=\"day-view\">\n    <span class=\"day-view-exit\" id=\"day-view-exit\">&times;<\/span>\n    <span class=\"day-view-date\" id=\"day-view-date\">MAY 29 2016<\/span>\n    <div class=\"day-view-content\">\n      <div class=\"day-highlight\">\n        You <span class=\"day-events\" id=\"day-events\">had no events for today<\/span>. &nbsp; <span tabindex=\"0\" onkeyup=\"if(event.keyCode != 13) return; this.click();\" class=\"day-events-link\" id=\"add-event\" data-date>Add a new event?<\/span>\n      <\/div>\n      <div class=\"day-add-event\" id=\"add-day-event-box\" data-active=\"false\">\n        <div class=\"row\">\n          <div class=\"half\">\n            <label class=\"add-event-label\">\n               Name of event\n              <input type=\"text\" class=\"add-event-edit add-event-edit--long\" placeholder=\"New event\" id=\"input-add-event-name\">\n             \n            <\/label>\n          <\/div>\n          <div class=\"qtr\">\n            <label class=\"add-event-label\">\n          Start Time\n              <input type=\"text\" class=\"add-event-edit\" placeholder=\"8:15\" id=\"input-add-event-start-time\" data-options=\"1,2,3,4,5,6,7,8,9,10,11,12\" data-format=\"datetime\">\n              <input type=\"text\" class=\"add-event-edit\" placeholder=\"am\" id=\"input-add-event-start-ampm\" data-options=\"a,p,am,pm\">\n            <\/label>\n          <\/div>\n          <div class=\"qtr\">\n            <label class=\"add-event-label\">\n          End Time\n              <input type=\"text\" class=\"add-event-edit\" placeholder=\"9\" id=\"input-add-event-end-time\" data-options=\"1,2,3,4,5,6,7,8,9,10,11,12\" data-format=\"datetime\">\n              <input type=\"text\" class=\"add-event-edit\" placeholder=\"am\" id=\"input-add-event-end-ampm\" data-options=\"a,p,am,pm\">\n            <\/label>\n          <\/div>\n          <div class=\"half\">\n            <a onkeyup=\"if(event.keyCode != 13) return; this.click();\" tabindex=\"0\" id=\"add-event-save\" class=\"event-btn--save event-btn\">save<\/a>\n            <a tabindex=\"0\" id=\"add-event-cancel\" class=\"event-btn--cancel event-btn\">cancel<\/a>\n          <\/div>\n        <\/div>\n        \n      <\/div>\n      <div id=\"day-events-list\" class=\"day-events-list\">\n        \n      <\/div>\n      <div class=\"day-inspiration-quote\" id=\"inspirational-quote\">\n        Every child is an artist.  The problem is how to remain an artist once he grows up. \u2013Pablo Picasso\n      <\/div>\n    <\/div>\n  <\/div>\n  <div class=\"calendar--view\" id=\"calendar-view\">\n    <div class=\"cview__month\">\n      <span class=\"cview__month-last\" id=\"calendar-month-last\">Apr<\/span>\n      <span class=\"cview__month-current\" id=\"calendar-month\">May<\/span>\n      <span class=\"cview__month-next\" id=\"calendar-month-next\">Jun<\/span>\n    <\/div>\n     <div class=\"cview_day_name\">\n    <div class=\"cview__header\">L<\/div>\n    <div class=\"cview__header\">M<\/div>\n    <div class=\"cview__header\">M<\/div>\n    <div class=\"cview__header\">G<\/div>\n    <div class=\"cview__header\">V<\/div>\n    <div class=\"cview__header\">S<\/div>\n    <div class=\"cview__header\">D<\/div>\n    <\/div>\n    <div class=\"calendar--view\" id=\"dates\">\n    <\/div>\n  <\/div>\n  <div class=\"footer\">\n    <span><span id=\"footer-date\" class=\"footer__link\">Today is May 30<\/span><\/span>    \n  <\/div>\n<\/div>\n<script>\njQuery( document ).ready(function() {\nfunction CalendarApp(date) {\n  \n  if (!(date instanceof Date)) {\n    date = new Date();\n  }\n  \n  this.days = ['domenica', 'luned\u00ec', 'marted\u00ec', 'mercoled\u00ec', 'gioved\u00ec', 'venerd\u00ec', 'sabato'];\n  this.months = ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre'];\n  this.quotes = ['Whatever the mind of man can conceive and believe, it can achieve. \u2013Napoleon Hill', 'Strive not to be a success, but rather to be of value. \u2013Albert Einstein', 'Two roads diverged in a wood, and I\u2014I took the one less traveled by, And that has made all the difference.  \u2013Robert Frost', 'I attribute my success to this: I never gave or took any excuse. \u2013Florence Nightingale', 'You miss 100% of the shots you don\u2019t take. \u2013Wayne Gretzky', 'The most difficult thing is the decision to act, the rest is merely tenacity. \u2013Amelia Earhart', 'Every strike brings me closer to the next home run. \u2013Babe Ruth', 'Definiteness of purpose is the starting point of all achievement. \u2013W. Clement Stone', 'Life isn\u2019t about getting and having, it\u2019s about giving and being. \u2013Kevin Kruse', 'Life is what happens to you while you\u2019re busy making other plans. \u2013John Lennon', 'We become what we think about. \u2013Earl Nightingale', 'Life is 10% what happens to me and 90% of how I react to it. \u2013Charles Swindoll', 'The most common way people give up their power is by thinking they don\u2019t have any. \u2013Alice Walker', 'The mind is everything. What you think you become.  \u2013Buddha', 'Winning isn\u2019t everything, but wanting to win is. \u2013Vince Lombardi', 'Every child is an artist.  The problem is how to remain an artist once he grows up. \u2013Pablo Picasso', ' You can never cross the ocean until you have the courage to lose sight of the shore. \u2013Christopher Columbus', 'I\u2019ve learned that people will forget what you said, people will forget what you did, but people will never forget how you made them feel. \u2013Maya Angelou', 'Either you run the day, or the day runs you. \u2013Jim Rohn', 'Whether you think you can or you think you can\u2019t, you\u2019re right. \u2013Henry Ford', 'The two most important days in your life are the day you are born and the day you find out why. \u2013Mark Twain', 'Whatever you can do, or dream you can, begin it.  Boldness has genius, power and magic in it. \u2013Johann Wolfgang von Goethe', 'The best revenge is massive success. \u2013Frank Sinatra', 'People often say that motivation doesn\u2019t last. Well, neither does bathing.  That\u2019s why we recommend it daily. \u2013Zig Ziglar', 'Life shrinks or expands in proportion to one\u2019s courage. \u2013Anais Nin', 'If you hear a voice within you say \u201cyou cannot paint,\u201d then by all means paint and that voice will be silenced. \u2013Vincent Van Gogh', 'There is only one way to avoid criticism: do nothing, say nothing, and be nothing. \u2013Aristotle', 'Ask and it will be given to you; search, and you will find; knock and the door will be opened for you. \u2013Jesus', 'The only person you are destined to become is the person you decide to be. \u2013Ralph Waldo Emerson', 'Go confidently in the direction of your dreams.  Live the life you have imagined. \u2013Henry David Thoreau',  'Few things can help an individual more than to place responsibility on him, and to let him know that you trust him.  \u2013Booker T. Washington'];\n  this.apts = [\n    {\n      name: 'Finish this web app',\n      endTime: new Date(2016, 4, 30, 23),\n      startTime: new Date(2016, 4, 30, 21),\n      day: new Date(2016, 4, 30).toString()\n    },\n     {\n      name: 'My Birthday!',\n      endTime: new Date(2016, 4, 1, 23, 59),\n      startTime: new Date(2016, 4, 1, 0),\n      day: new Date(2016, 4, 1).toString()\n    },\n    \n  ];\n  \n  this.aptDates = [new Date(2016, 4, 30).toString(),new Date(2016, 4, 1).toString()];\n  this.eles = {\n  };\n  this.calDaySelected = null;\n  \n  this.calendar = document.getElementById(\"calendar-app\");\n  \n  this.calendarView = document.getElementById(\"dates\");\n  \n  this.calendarMonthDiv = document.getElementById(\"calendar-month\");\n  this.calendarMonthLastDiv = document.getElementById(\"calendar-month-last\");\n  this.calendarMonthNextDiv = document.getElementById(\"calendar-month-next\");\n  \n  this.dayInspirationalQuote = document.getElementById(\"inspirational-quote\");\n   \n  this.todayIsSpan = document.getElementById(\"footer-date\");\n  \/\/ this.eventsCountSpan = document.getElementById(\"footer-events\");\n  this.dayViewEle = document.getElementById(\"day-view\");\n  this.dayViewExitEle = document.getElementById(\"day-view-exit\");\n  this.dayViewDateEle = document.getElementById(\"day-view-date\");\n  this.addDayEventEle = document.getElementById(\"add-event\");\n  this.dayEventsEle = document.getElementById(\"day-events\");\n  \n  this.dayEventAddForm = {\n    cancelBtn: document.getElementById(\"add-event-cancel\"),\n    addBtn: document.getElementById(\"add-event-save\"),\n    nameEvent:  document.getElementById(\"input-add-event-name\"),\n    startTime:  document.getElementById(\"input-add-event-start-time\"),\n    endTime:  document.getElementById(\"input-add-event-end-time\"),\n    startAMPM:  document.getElementById(\"input-add-event-start-ampm\"),\n    endAMPM:  document.getElementById(\"input-add-event-end-ampm\")\n  };\n  this.dayEventsList = document.getElementById(\"day-events-list\");\n  this.dayEventBoxEle = document.getElementById(\"add-day-event-box\");\n  \n  \/* Start the app *\/\n  this.showView(date);\n  this.addEventListeners();\n  this.todayIsSpan.textContent = \"Today is \" + this.months[date.getMonth()] + \" \" + date.getDate();  \n}\n\nCalendarApp.prototype.addEventListeners = function(){\n  \n  this.calendar.addEventListener(\"click\", this.mainCalendarClickClose.bind(this));\n  this.todayIsSpan.addEventListener(\"click\", this.showView.bind(this));\n  this.calendarMonthLastDiv.addEventListener(\"click\", this.showNewMonth.bind(this));\n  this.calendarMonthNextDiv.addEventListener(\"click\", this.showNewMonth.bind(this));\n  this.dayViewExitEle.addEventListener(\"click\", this.closeDayWindow.bind(this));\n  this.dayViewDateEle.addEventListener(\"click\", this.showNewMonth.bind(this));\n  this.addDayEventEle.addEventListener(\"click\", this.addNewEventBox.bind(this));\n  this.dayEventAddForm.cancelBtn.addEventListener(\"click\", this.closeNewEventBox.bind(this));\n  this.dayEventAddForm.cancelBtn.addEventListener(\"keyup\", this.closeNewEventBox.bind(this));\n  \n  this.dayEventAddForm.startTime.addEventListener(\"keyup\",this.inputChangeLimiter.bind(this));\n  this.dayEventAddForm.startAMPM.addEventListener(\"keyup\",this.inputChangeLimiter.bind(this));\n  this.dayEventAddForm.endTime.addEventListener(\"keyup\",this.inputChangeLimiter.bind(this));\n  this.dayEventAddForm.endAMPM.addEventListener(\"keyup\",this.inputChangeLimiter.bind(this));\n  this.dayEventAddForm.addBtn.addEventListener(\"click\",this.saveAddNewEvent.bind(this));\n\n};\nCalendarApp.prototype.showView = function(date){\n  if ( !date || (!(date instanceof Date)) ) date = new Date();\n  var now = new Date(date),\n      y = now.getFullYear(),\n      m = now.getMonth();\n  var today = new Date();\n  \n  var lastDayOfM = new Date(y, m + 1, 0).getDate();\n  var startingD = new Date(y, m, 1).getDay();\n  startingD = startingD - 1;\n  var lastM = new Date(y, now.getMonth()-1, 1);\n  var nextM = new Date(y, now.getMonth()+1, 1);\n \n  this.calendarMonthDiv.classList.remove(\"cview__month-activate\");\n  this.calendarMonthDiv.classList.add(\"cview__month-reset\");\n  \n  while(this.calendarView.firstChild) {\n    this.calendarView.removeChild(this.calendarView.firstChild);\n  }\n  \n    \/\/ build up spacers\n  \/*for ( var x = 0; x < startingD; x++ ) {\n    var spacer = document.createElement(\"div\");\n    spacer.className = \"cview--spacer\";\n    this.calendarView.appendChild(spacer);\n  }*\/\n  var lastDayOfLastM = new Date(y, now.getMonth(), 0).getDate();\n\tvar spacerStartFlag = startingD\n\tif(startingD != 0) spacerStartFlag = startingD -1\n\tvar spacerStart = lastDayOfLastM - spacerStartFlag;\n\t\/\/console.log(spacerStart, 'lastDayOfLastM', lastDayOfLastM);\n    for ( var x = 0; x < startingD; x++ ) {\n   \n    var _date = new Date(y,now.getMonth()-1 ,spacerStart);\n    var day = document.createElement(\"div\");\n    day.className = \"cview--date faded\";\n    day.textContent = spacerStart;\n    day.setAttribute(\"data-date\", _date);\n    \n\t\/*day.onclick = this.showDay.bind(this);\n    \n     \/\/ check if has events to show\n    if ( this.aptDates.indexOf(_date.toString()) !== -1 ) {\n      day.classList.add(\"has-events\");\n    }*\/\n    \n    this.calendarView.appendChild(day);\n\tspacerStart++\n  }\n  \n  var eventdates=[];\n  jQuery('.event-box-outer').find('.event-box').each(function(){\n    var itemId = jQuery(this).data('date')\t\n\teventdates.push(itemId);\n}); \n  \/\/console.log(eventdates);\n  \n  for ( var z = 1; z <= lastDayOfM; z++ ) {\n   \n    var _date = new Date(y, m ,z);\n    var day = document.createElement(\"div\");\n    day.className = \"cview--date\";\n    day.setAttribute(\"data-date\", _date);\n    day.onclick = this.showDay.bind(this);\n\t\n\tvar newZ = z <= 9 ? '0'+z : z\n\tvar newM = + m + 1\n\tnewM = newM <= 9 ? '0'+newM : newM\n\tvar caldate=newZ+'\/'+newM+'\/'+y;\n   \n    \/\/ check if todays date\n    \/\/if ( z == today.getDate() && y == today.getFullYear() && m == today.getMonth() ) {\n     \/\/ day.classList.add(\"today\");\n    \/\/}\n\t\/\/console.log(caldate);\n\tvar dateindex=eventdates.indexOf(caldate);\n\tif(dateindex!=-1) {\n\t\t\/\/console.log('date found in arr', dateindex)\n\t\tday.classList.add(\"activeevent\");\n\t\t\/\/day.innerHTML  = \"<a href='#event-\"+caldate+\"' onclick='onclikevent('event-\"+caldate+\"');'>\"+z+\"<\/a>\";\n\t\tvar tsets = \"'\"+caldate+\"'\";\n\t\tday.innerHTML  = '<a href=\"#event-'+caldate+'\" onclick=\"onclikevent('+tsets+');\">'+z+'<\/a>'\n\t} else {\n\t\tday.textContent = z;\n\t}\n\t\n\t\n     \/\/ check if has events to show\n   \/\/ if ( this.aptDates.indexOf(_date.toString()) !== -1 ) {\n     \/\/ day.classList.add(\"has-events\");\n    \/\/}\n    \n    this.calendarView.appendChild(day);\n  }\n  \n\n  var nextDayOfNextM = new Date(y, now.getMonth()+1, 1).getDate();\n  var nextDayOfNextMStartingD = new Date(y, now.getMonth()+1, 1).getDay();\n  if(nextDayOfNextMStartingD != 1) {\n\t\t var endLoop = 1\n\t\tfor ( var spacerStart = nextDayOfNextMStartingD; spacerStart <= 7; spacerStart++ ) {\n\t   \n\t\t\tvar _date = new Date(y,now.getMonth()+1 ,endLoop);\n\t\t\tvar day = document.createElement(\"div\");\n\t\t\tday.className = \"cview--date faded\";\n\t\t\tday.textContent = endLoop;\n\t\t\tday.setAttribute(\"data-date\", _date);\n\t\t\t\n\t\t\tthis.calendarView.appendChild(day);\n\t\t\tendLoop++;\n\t  }\n  }\n\n  \n  var _that = this;\n  setTimeout(function(){\n    _that.calendarMonthDiv.classList.add(\"cview__month-activate\");\n  }, 50);\n  \n  this.calendarMonthDiv.textContent = this.months[now.getMonth()] + \" \" + now.getFullYear();\n  this.calendarMonthDiv.setAttribute(\"data-date\", now);\n\n  \n  \/\/this.calendarMonthLastDiv.textContent = \"\u2190 \" + this.months[lastM.getMonth()];\n  this.calendarMonthLastDiv.setAttribute(\"data-date\", lastM);\n  \n  \/\/this.calendarMonthNextDiv.textContent = this.months[nextM.getMonth()] + \" \u2192\";\n  this.calendarMonthNextDiv.setAttribute(\"data-date\", nextM);\n  \n}\nCalendarApp.prototype.showDay = function(e, dayEle) {\n  e.stopPropagation();\n  if ( !dayEle ) {\n    dayEle = e.currentTarget;\n  }\n  var dayDate = new Date(dayEle.getAttribute('data-date'));\n  \n  this.calDaySelected = dayEle;\n  \n  this.openDayWindow(dayDate);\n  \n\n  \n};\nCalendarApp.prototype.openDayWindow = function(date){\n  \n this.dayViewEle.classList.add(\"datecliked\");\n\n};\n\nCalendarApp.prototype.showEventsCreateElesView = function(events) {\n  var ul = document.createElement(\"ul\");\n  ul.className = 'day-event-list-ul';\n  events = this.sortEventsByTime(events);\n  var _this = this;\n  events.forEach(function(event){\n    var _start = new Date(event.startTime);\n    var _end = new Date(event.endTime);\n    var idx = event.index;\n    var li = document.createElement(\"li\");\n    li.className = \"event-dates\";\n    \/\/ li.innerHtml\n    var html = \"<span class='start-time'>\" + _start.toLocaleTimeString(navigator.language,{hour: '2-digit', minute:'2-digit'}) + \"<\/span> <small>through<\/small> \";\n    html += \"<span class='end-time'>\" + _end.toLocaleTimeString(navigator.language,{hour: '2-digit', minute:'2-digit'}) + ( (_end.getDate() != _start.getDate()) ? ' <small>on ' + _end.toLocaleDateString() + \"<\/small>\" : '') +\"<\/span>\";\n    \n\n    html += \"<span class='event-name'>\" + event.name + \"<\/span>\";\n    \n    var div = document.createElement(\"div\");\n    div.className = \"event-dates\";\n    div.innerHTML = html;\n    \n    var deleteBtn = document.createElement(\"span\");\n    var deleteText = document.createTextNode(\"delete\");\n    deleteBtn.className = \"event-delete\";\n    deleteBtn.setAttribute(\"data-idx\", idx);\n    deleteBtn.appendChild(deleteText);\n    deleteBtn.onclick = _this.deleteEvent.bind(_this);\n    \n    div.appendChild(deleteBtn);\n    \n    li.appendChild(div);\n    ul.appendChild(li);\n  });\n  return ul;\n};\nCalendarApp.prototype.deleteEvent = function(e) {\n  var deleted = this.apts.splice(e.currentTarget.getAttribute(\"data-idx\"),1);\n  var deletedDate = new Date(deleted[0].day);\n  var anyDatesLeft = this.showEventsByDay(deletedDate);\n  if ( anyDatesLeft === false ) {\n    \/\/ safe to remove from array\n    var idx = this.aptDates.indexOf(deletedDate.toString());\n    if (idx >= 0) {\n       this.aptDates.splice(idx,1);\n      \/\/ remove dot from calendar view\n      var ele = document.querySelector('.cview--date[data-date=\"'+ deletedDate.toString() +'\"]');\n      if ( ele ) {\n        ele.classList.remove(\"has-events\");\n      }\n    }\n  }\n  this.openDayWindow(deletedDate);;\n};\nCalendarApp.prototype.sortEventsByTime = function(events) {\n  if (!events) return [];\n  return events.sort(function compare(a, b) {\n    if (new Date(a.startTime) < new Date(b.startTime)) {\n      return -1;\n    }\n    if (new Date(a.startTime) > new Date(b.startTime)) {\n      return 1;\n    }\n    \/\/ a must be equal to b\n    return 0;\n  });\n};\nCalendarApp.prototype.showEventsByDay = function(day) {\n  var _events = [];\n  this.apts.forEach(function(apt, idx){\n    if ( day.toString() == apt.day.toString() ) {\n      apt.index = idx;\n      _events.push(apt);\n    }\n  });\n  return (_events.length) ? _events : false;\n};\nCalendarApp.prototype.closeDayWindow = function(){\n  this.dayViewEle.classList.remove(\"calendar--day-view-active\");\n  this.closeNewEventBox();\n};\nCalendarApp.prototype.mainCalendarClickClose = function(e){\n  if ( e.currentTarget != e.target ) {\n    return;\n  }\n  \n  this.dayViewEle.classList.remove(\"calendar--day-view-active\");\n  this.closeNewEventBox();\n};\nCalendarApp.prototype.addNewEventBox = function(e){\n  var target = e.currentTarget;\n  this.dayEventBoxEle.setAttribute(\"data-active\", \"true\"); \n  this.dayEventBoxEle.setAttribute(\"data-date\", target.getAttribute(\"data-date\"));\n  \n};\nCalendarApp.prototype.closeNewEventBox = function(e){\n  \n  if (e && e.keyCode && e.keyCode != 13) return false;\n  \n  this.dayEventBoxEle.setAttribute(\"data-active\", \"false\");\n  \/\/ reset values\n  this.resetAddEventBox();\n  \n};\nCalendarApp.prototype.saveAddNewEvent = function() {\n  var saveErrors = this.validateAddEventInput();\n  if ( !saveErrors ) {\n    this.addEvent();\n  }\n};\n\nCalendarApp.prototype.addEvent = function() {\n  \n  var name = this.dayEventAddForm.nameEvent.value.trim();\n  var dayOfDate = this.dayEventBoxEle.getAttribute(\"data-date\");\n  var dateObjectDay =  new Date(dayOfDate);\n  var cleanDates = this.cleanEventTimeStampDates();\n  \n  this.apts.push({\n    name: name,\n    day: dateObjectDay,\n    startTime: cleanDates[0],\n    endTime: cleanDates[1]\n  });\n  this.closeNewEventBox();\n  this.openDayWindow(dayOfDate);\n  this.calDaySelected.classList.add(\"has-events\");\n  \/\/ add to dates\n  if ( this.aptDates.indexOf(dateObjectDay.toString()) === -1 ) {\n    this.aptDates.push(dateObjectDay.toString());\n  }\n  \n};\nCalendarApp.prototype.convertTo23HourTime = function(stringOfTime, AMPM) {\n  \/\/ convert to 0 - 23 hour time\n  var mins = stringOfTime.split(\":\");\n  var hours = stringOfTime.trim();\n  if ( mins[1] && mins[1].trim() ) {\n    hours = parseInt(mins[0].trim());\n    mins = parseInt(mins[1].trim());\n  } else {\n    hours = parseInt(hours);\n    mins = 0;\n  }\n  hours = ( AMPM == 'am' ) ? ( (hours == 12) ? 0 : hours ) : (hours <= 11) ? parseInt(hours) + 12 : hours;\n  return [hours, mins];\n};\nCalendarApp.prototype.cleanEventTimeStampDates = function() {\n  \n  var startTime = this.dayEventAddForm.startTime.value.trim() || this.dayEventAddForm.startTime.getAttribute(\"placeholder\") || '8';\n  var startAMPM = this.dayEventAddForm.startAMPM.value.trim() || this.dayEventAddForm.startAMPM.getAttribute(\"placeholder\") || 'am';\n  startAMPM = (startAMPM == 'a') ? startAMPM + 'm' : startAMPM;\n  var endTime = this.dayEventAddForm.endTime.value.trim() || this.dayEventAddForm.endTime.getAttribute(\"placeholder\") || '9';\n  var endAMPM = this.dayEventAddForm.endAMPM.value.trim() || this.dayEventAddForm.endAMPM.getAttribute(\"placeholder\") || 'pm';\n  endAMPM = (endAMPM == 'p') ? endAMPM + 'm' : endAMPM;\n  var date = this.dayEventBoxEle.getAttribute(\"data-date\");\n  \n  var startingTimeStamps = this.convertTo23HourTime(startTime, startAMPM);\n  var endingTimeStamps = this.convertTo23HourTime(endTime, endAMPM);\n  \n  var dateOfEvent = new Date(date);\n  var startDate = new Date(dateOfEvent.getFullYear(), dateOfEvent.getMonth(), dateOfEvent.getDate(), startingTimeStamps[0], startingTimeStamps[1]);\n  var endDate = new Date(dateOfEvent.getFullYear(), dateOfEvent.getMonth(), dateOfEvent.getDate(), endingTimeStamps[0], endingTimeStamps[1]);\n  \n  \/\/ if end date is less than start date - set end date back another day\n  if ( startDate > endDate ) endDate.setDate(endDate.getDate() + 1);\n  \n  return [startDate, endDate];\n  \n};\nCalendarApp.prototype.validateAddEventInput = function() {\n\n  var _errors = false;\n  var name = this.dayEventAddForm.nameEvent.value.trim();\n  var startTime = this.dayEventAddForm.startTime.value.trim();\n  var startAMPM = this.dayEventAddForm.startAMPM.value.trim();\n  var endTime = this.dayEventAddForm.endTime.value.trim();\n  var endAMPM = this.dayEventAddForm.endAMPM.value.trim();\n  \n  if (!name || name == null) {\n    _errors = true;\n    this.dayEventAddForm.nameEvent.classList.add(\"add-event-edit--error\");\n    this.dayEventAddForm.nameEvent.focus();\n  } else {\n     this.dayEventAddForm.nameEvent.classList.remove(\"add-event-edit--error\");\n  }\n  \n\/\/   if (!startTime || startTime == null) {\n\/\/     _errors = true;\n\/\/     this.dayEventAddForm.startTime.classList.add(\"add-event-edit--error\");\n\/\/   } else {\n\/\/      this.dayEventAddForm.startTime.classList.remove(\"add-event-edit--error\");\n\/\/   }\n  \n  return _errors;\n  \n  \n};\nvar timeOut = null;\nvar activeEle = null;\nCalendarApp.prototype.inputChangeLimiter = function(ele) {\n  \n  if ( ele.currentTarget ) {\n    ele = ele.currentTarget;\n  }\n  if (timeOut && ele == activeEle){\n    clearTimeout(timeOut);\n  }\n  \n  var limiter = CalendarApp.prototype.textOptionLimiter;\n\n  var _options = ele.getAttribute(\"data-options\").split(\",\");\n  var _format = ele.getAttribute(\"data-format\") || 'text';\n  timeOut = setTimeout(function(){\n    ele.value = limiter(_options, ele.value, _format);\n  }, 600);\n  activeEle = ele;\n  \n};\nCalendarApp.prototype.textOptionLimiter = function(options, input, format){\n  if ( !input ) return '';\n  \n  if ( input.indexOf(\":\") !== -1 && format == 'datetime' ) {\n \n    var _splitTime = input.split(':', 2);\n    if (_splitTime.length == 2 && !_splitTime[1].trim()) return input;\n    var _trailingTime = parseInt(_splitTime[1]);\n    \/* Probably could be coded better -- a block to clean up trailing data *\/\n    if (options.indexOf(_splitTime[0]) === -1) {\n      return options[0];\n    }\n    else if (_splitTime[1] == \"0\" ) {\n      return input;\n    }\n    else if (_splitTime[1] == \"00\" ) {\n      return _splitTime[0] +  \":00\";\n    }\n    else if (_trailingTime < 10 ) {\n      return _splitTime[0] + \":\" + \"0\" + _trailingTime;\n    }\n    else if ( !Number.isInteger(_trailingTime) || _trailingTime < 0 || _trailingTime > 59 )  {\n      return _splitTime[0];\n    } \n    return _splitTime[0] + \":\" + _trailingTime;\n  }\n  if ((input.toString().length >= 3) ) {\n    var pad = (input.toString().length - 4) * -1;\n    var _hour, _min;\n    if (pad == 1) {\n      _hour = input[0];\n      _min = input[1] + input[2];\n    } else {\n      _hour = input[0] + input[1];\n      _min = input[2] + input[3];\n    }\n    \n    _hour = Math.max(1,Math.min(12,(_hour)));\n    _min = Math.min(59,(_min));\n    if ( _min < 10 ) { \n      _min = \"0\" + _min;\n    }\n    _min = (isNaN(_min)) ? '00' : _min;\n    _hour = (isNaN(_hour)) ? '9' : _hour ;\n\n    return _hour + \":\" + _min;\n    \n  }\n\n  if (options.indexOf(input) === -1) {\n    return options[0];\n  }\n  \n  return input;\n};\nCalendarApp.prototype.resetAddEventBox = function(){\n  this.dayEventAddForm.nameEvent.value = '';\n  this.dayEventAddForm.nameEvent.classList.remove(\"add-event-edit--error\");\n  this.dayEventAddForm.endTime.value = '';\n  this.dayEventAddForm.startTime.value = '';\n  this.dayEventAddForm.endAMPM.value = '';\n  this.dayEventAddForm.startAMPM.value = '';\n};\nCalendarApp.prototype.showNewMonth = function(e){\n  var date = e.currentTarget.dataset.date;\n  var newMonthDate = new Date(date);\n  this.showView(newMonthDate);\n  this.closeDayWindow();\n  return true;\n};\n\nvar calendar = new CalendarApp();\n\/\/console.log(calendar);\n\n\n\n});\n\n<\/script>\n\t\t<div class=\"elementor-shortcode\"><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f71e5de button-on-click open-calendar elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-text-editor\" data-id=\"f71e5de\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0cb843d button-on-click open-calendar elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-html\" data-id=\"0cb843d\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<a href=\"javascript:void(0);\"><span>Apri Calendario<\/span> <span>Chiudi Calendario<\/span><\/a>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Calendario Apri Calendario Chiudi Calendario<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Calendario - Bampi EN<\/title>\n<meta name=\"description\" content=\"Calendario      Apri Calendario Chiudi Calendario\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.bampi.it\/en\/calendario\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calendario - Bampi EN\" \/>\n<meta property=\"og:description\" content=\"Calendario      Apri Calendario Chiudi Calendario\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bampi.it\/en\/calendario\/\" \/>\n<meta property=\"og:site_name\" content=\"Bampi EN\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-07T07:42:02+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Calendario - Bampi EN","description":"Calendario      Apri Calendario Chiudi Calendario","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.bampi.it\/en\/calendario\/","og_locale":"it_IT","og_type":"article","og_title":"Calendario - Bampi EN","og_description":"Calendario      Apri Calendario Chiudi Calendario","og_url":"https:\/\/www.bampi.it\/en\/calendario\/","og_site_name":"Bampi EN","article_modified_time":"2020-12-07T07:42:02+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/www.bampi.it\/en\/#website","url":"https:\/\/www.bampi.it\/en\/","name":"Bampi EN","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.bampi.it\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/www.bampi.it\/en\/calendario\/#webpage","url":"https:\/\/www.bampi.it\/en\/calendario\/","name":"Calendario - Bampi EN","isPartOf":{"@id":"https:\/\/www.bampi.it\/en\/#website"},"datePublished":"2020-11-20T11:15:32+00:00","dateModified":"2020-12-07T07:42:02+00:00","description":"Calendario Apri Calendario Chiudi Calendario","breadcrumb":{"@id":"https:\/\/www.bampi.it\/en\/calendario\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bampi.it\/en\/calendario\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.bampi.it\/en\/calendario\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.bampi.it\/en\/"},{"@type":"ListItem","position":2,"name":"Calendario"}]}]}},"_links":{"self":[{"href":"https:\/\/www.bampi.it\/en\/wp-json\/wp\/v2\/pages\/1123"}],"collection":[{"href":"https:\/\/www.bampi.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bampi.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bampi.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bampi.it\/en\/wp-json\/wp\/v2\/comments?post=1123"}],"version-history":[{"count":61,"href":"https:\/\/www.bampi.it\/en\/wp-json\/wp\/v2\/pages\/1123\/revisions"}],"predecessor-version":[{"id":2787,"href":"https:\/\/www.bampi.it\/en\/wp-json\/wp\/v2\/pages\/1123\/revisions\/2787"}],"wp:attachment":[{"href":"https:\/\/www.bampi.it\/en\/wp-json\/wp\/v2\/media?parent=1123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}