PageSourceSearch

https://www.liuc.it/wp-content/themes/LIUC-2021/lib/caleandar-master/js/caleandar.js

js liuc.it collected 2026-10-02 04:17:29 UTC 12,099 bytes, 299 lines download raw bytes

1/*
2  Author: Jack Ducasse;
3  Version: 0.1.0;
4  (◠‿◠✿)
5*/
6var Calendar = function(model, options, date){
7  // Default Values
8  this.Options = {
9    Color: '',
10    LinkColor: '',
11    NavShow: true,
12    NavVertical: false,
13    NavLocation: '',
14    DateTimeShow: true,
15    DateTimeFormat: 'mmm, yyyy',
16    DatetimeLocation: '',
17    EventClick: '',
18    EventTargetWholeDay: true,
19    DisabledDays: [],
20    ModelChange: model
21  };
22  // Overwriting default values
23  for(var key in options){
24    this.Options[key] = typeof options[key]=='string'?options[key].toLowerCase():options[key];
25  }
26
27  model?this.Model=model:this.Model={};
28  this.Today = new Date();
29
30  this.Selected = this.Today
31  this.Today.Month = this.Today.getMonth();
32  this.Today.Year = this.Today.getFullYear();
33  if(date){this.Selected = date}
34  this.Selected.Month = this.Selected.getMonth();
35  this.Selected.Year = this.Selected.getFullYear();
36
37  this.Selected.Days = new Date(this.Selected.Year, (this.Selected.Month + 1), 0).getDate();
38  this.Selected.FirstDay = new Date(this.Selected.Year, (this.Selected.Month), 1).getDay();
39  this.Selected.LastDay = new Date(this.Selected.Year, (this.Selected.Month + 1), 0).getDay();
40
41  this.Prev = new Date(this.Selected.Year, (this.Selected.Month - 1), 1);
42  if(this.Selected.Month==0){this.Prev = new Date(this.Selected.Year-1, 11, 1);}
43  this.Prev.Days = new Date(this.Prev.getFullYear(), (this.Prev.getMonth() + 1), 0).getDate();
44};
45
46function createCalendar(calendar, element, adjuster){
47  if(typeof adjuster !== 'undefined'){
48    var newDate = new Date(calendar.Selected.Year, calendar.Selected.Month + adjuster, 1);
49    calendar = new Calendar(calendar.Model, calendar.Options, newDate);
50    element.innerHTML = '';
51  }else{
52    for(var key in calendar.Options){
53      typeof calendar.Options[key] != 'function' && typeof calendar.Options[key] != 'object' && calendar.Options[key]?element.className += " " + key + "-" + calendar.Options[key]:0;
54    }
55  }
56  var months = ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"];
57
58  function AddSidebar(){
59    var sidebar = document.createElement('div');
60    sidebar.className += 'cld-sidebar';
61
62    var monthList = document.createElement('ul');
63    monthList.className += 'cld-monthList';
64
65    for(var i = 0; i < months.length - 3; i++){
66      var x = document.createElement('li');
67      x.className += 'cld-month';
68      var n = i - (4 - calendar.Selected.Month);
69      // Account for overflowing month values
70      if(n<0){n+=12;}
71      else if(n>11){n-=12;}
72      // Add Appropriate Class
73      if(i==0){
74        x.className += ' cld-rwd cld-nav';
75        x.addEventListener('click', function(){
76          typeof calendar.Options.ModelChange == 'function'?calendar.Model = calendar.Options.ModelChange():calendar.Model = calendar.Options.ModelChange;
77          createCalendar(calendar, element, -1);});
78        x.innerHTML += '<svg height="15" width="15" viewBox="0 0 100 75" fill="rgba(255,255,255,0.5)"><polyline points="0,75 100,75 50,0"></polyline></svg>';
79      }
80      else if(i==months.length - 4){
81        x.className += ' cld-fwd cld-nav';
82        x.addEventListener('click', function(){
83          typeof calendar.Options.ModelChange == 'function'?calendar.Model = calendar.Options.ModelChange():calendar.Model = calendar.Options.ModelChange;
84          createCalendar(calendar, element, 1);} );
85        x.innerHTML += '<svg height="15" width="15" viewBox="0 0 100 75" fill="rgba(255,255,255,0.5)"><polyline points="0,0 100,0 50,75"></polyline></svg>';
86      }
87      else{
88        if(i < 4){x.className += ' cld-pre';}
89        else if(i > 4){x.className += ' cld-post';}
90        else{x.className += ' cld-curr';}
91
92        //prevent losing var adj value (for whatever reason that is happening)
93        (function () {
94          var adj = (i-4);
95          //x.addEventListener('click', function(){createCalendar(calendar, element, adj);console.log('kk', adj);} );
96          x.addEventListener('click', function(){
97            typeof calendar.Options.ModelChange == 'function'?calendar.Model = calendar.Options.ModelChange():calendar.Model = calendar.Options.ModelChange;
98            createCalendar(calendar, element, adj);} );
99          x.setAttribute('style', 'opacity:' + (1 - Math.abs(adj)/4));
100          x.innerHTML += months[n].substr(0,3);
101        }()); // immediate invocation
102
103        if(n==0){
104          var y = document.createElement('li');
105          y.className += 'cld-year';
106          if(i<5){
107            y.innerHTML += calendar.Selected.Year;
108          }else{
109            y.innerHTML += calendar.Selected.Year + 1;
110          }
111          monthList.appendChild(y);
112        }
113      }
114      monthList.appendChild(x);
115    }
116    sidebar.appendChild(monthList);
117    if(calendar.Options.NavLocation){
118      document.getElementById(calendar.Options.NavLocation).innerHTML = "";
119      document.getElementById(calendar.Options.NavLocation).appendChild(sidebar);
120    }
121    else{element.appendChild(sidebar);}
122  }
123
124  var mainSection = document.createElement('div');
125  mainSection.className += "cld-main";
126
127  function AddDateTime(){
128      var datetime = document.createElement('div');
129      datetime.className += "cld-datetime";
130      if(calendar.Options.NavShow && !calendar.Options.NavVertical){
131        var rwd = document.createElement('div');
132        rwd.className += " cld-rwd cld-nav";
133        rwd.addEventListener('click', function(){createCalendar(calendar, element, -1);} );
134        rwd.innerHTML = '<svg height="15" width="15" viewBox="0 0 75 100" fill="rgba(0,0,0,0.5)"><polyline points="0,50 75,0 75,100"></polyline></svg>';
135        datetime.appendChild(rwd);
136      }
137      var today = document.createElement('div');
138      today.className += ' today';
139      today.innerHTML = months[calendar.Selected.Month] + ", " + calendar.Selected.Year;
140      datetime.appendChild(today);
141      if(calendar.Options.NavShow && !calendar.Options.NavVertical){
142        var fwd = document.createElement('div');
143        fwd.className += " cld-fwd cld-nav";
144        fwd.addEventListener('click', function(){createCalendar(calendar, element, 1);} );
145        fwd.innerHTML = '<svg height="15" width="15" viewBox="0 0 75 100" fill="rgba(0,0,0,0.5)"><polyline points="0,0 75,50 0,100"></polyline></svg>';
146        datetime.appendChild(fwd);
147      }
148      if(calendar.Options.DatetimeLocation){
149        document.getElementById(calendar.Options.DatetimeLocation).innerHTML = "";
150        document.getElementById(calendar.Options.DatetimeLocation).appendChild(datetime);
151      }
152      else{mainSection.appendChild(datetime);}
153  }
154
155  function AddLabels(){
156    var labels = document.createElement('ul');
157    labels.className = 'cld-labels';
158    var labelsList = ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"];
159    for(var i = 0; i < labelsList.length; i++){
160      var label = document.createElement('li');
161      label.className += "cld-label";
162      label.innerHTML = labelsList[i];
163      labels.appendChild(label);
164    }
165    mainSection.appendChild(labels);
166  }
167  function AddDays(){
168    // Create Number Element
169    function DayNumber(n){
170      var number = document.createElement('p');
171      number.className += "cld-number";
172      number.innerHTML += n;
173      return number;
174    }
175    var days = document.createElement('ul');
176    days.className += "cld-days";
177    // Previous Month's Days
178    for(var i = 0; i < (calendar.Selected.FirstDay); i++){
179      var day = document.createElement('li');
180      day.className += "cld-day prevMonth";
181      //Disabled Days
182      var d = i%7;
183      for(var q = 0; q < calendar.Options.DisabledDays.length; q++){
184        if(d==calendar.Options.DisabledDays[q]){
185          day.className += " disableDay";
186        }
187      }
188
189      var number = DayNumber((calendar.Prev.Days - calendar.Selected.FirstDay) + (i+1));
190      day.appendChild(number);
191
192      days.appendChild(day);
193    }
194    // Current Month's Days
195    for(var i = 0; i < calendar.Selected.Days; i++){
196      var day = document.createElement('li');
197      day.className += "cld-day currMonth";
198      //Disabled Days
199      var d = (i + calendar.Selected.FirstDay)%7;
200      for(var q = 0; q < calendar.Options.DisabledDays.length; q++){
201        if(d==calendar.Options.DisabledDays[q]){
202          day.className += " disableDay";
203        }
204      }
205      var number = DayNumber(i+1);
206      // Check Date against Event Dates
207      for(var n = 0; n < calendar.Model.length; n++){
208        var evDate = calendar.Model[n].Date;
209        var toDate = new Date(calendar.Selected.Year, calendar.Selected.Month, (i+1));
210        if(evDate.getTime() == toDate.getTime()){
211          number.className += " eventday";
212          var title = document.createElement('span');
213          title.className += "cld-title";
214          if(typeof calendar.Model[n].Link == 'function' || calendar.Options.EventClick){
215            var a = document.createElement('a');
216            a.setAttribute('href', '#');
217            a.innerHTML += calendar.Model[n].Title;
218            if(calendar.Options.EventClick){
219              var z = calendar.Model[n].Link;
220              if(typeof calendar.Model[n].Link != 'string'){
221                  a.addEventListener('click', calendar.Options.EventClick.bind.apply(calendar.Options.EventClick, [null].concat(z)) );
222                  if(calendar.Options.EventTargetWholeDay){
223                    day.className += " clickable";
224                    day.addEventListener('click', calendar.Options.EventClick.bind.apply(calendar.Options.EventClick, [null].concat(z)) );
225                  }
226              }else{
227                a.addEventListener('click', calendar.Options.EventClick.bind(null, z) );
228                if(calendar.Options.EventTargetWholeDay){
229                  day.className += " clickable";
230                  day.addEventListener('click', calendar.Options.EventClick.bind(null, z) );
231                }
232              }
233            }else{
234              a.addEventListener('click', calendar.Model[n].Link);
235              if(calendar.Options.EventTargetWholeDay){
236                day.className += " clickable";
237                day.addEventListener('click', calendar.Model[n].Link);
238              }
239            }
240            title.appendChild(a);
241          }else{
242            title.innerHTML += '<a href="' + calendar.Model[n].Link + '">' + calendar.Model[n].Title + '</a>';
243          }
244          number.appendChild(title);
245        }
246      }
247      day.appendChild(number);
248      // If Today..
249      if((i+1) == calendar.Today.getDate() && calendar.Selected.Month == calendar.Today.Month && calendar.Selected.Year == calendar.Today.Year){
250        day.className += " today";
251      }
252      days.appendChild(day);
253    }
254    // Next Month's Days
255    // Always same amount of days in calander
256    var extraDays = 13;
257    if(days.children.length>35){extraDays = 6;}
258    else if(days.children.length<29){extraDays = 20;}
259
260    for(var i = 0; i < (extraDays - calendar.Selected.LastDay); i++){
261      var day = document.createElement('li');
262      day.className += "cld-day nextMonth";
263      //Disabled Days
264      var d = (i + calendar.Selected.LastDay + 1)%7;
265      for(var q = 0; q < calendar.Options.DisabledDays.length; q++){
266        if(d==calendar.Options.DisabledDays[q]){
267          day.className += " disableDay";
268        }
269      }
270
271      var number = DayNumber(i+1);
272      day.appendChild(number);
273
274      days.appendChild(day);
275    }
276    mainSection.appendChild(days);
277  }
278  if(calendar.Options.Color){
279    mainSection.innerHTML += '<style>.cld-main{color:' + calendar.Options.Color + ';}</style>';
280  }
281  if(calendar.Options.LinkColor){
282    mainSection.innerHTML += '<style>.cld-title a{color:' + calendar.Options.LinkColor + ';}</style>';
283  }
284  element.appendChild(mainSection);
285
286  if(calendar.Options.NavShow && calendar.Options.NavVertical){
287    AddSidebar();
288  }
289  if(calendar.Options.DateTimeShow){
290    AddDateTime();
291  }
292  AddLabels();
293  AddDays();
294}
295
296function caleandar(el, data, settings){
297  var obj = new Calendar(data, settings);
298  createCalendar(obj, el);
299}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.