1/*Event Schedule Widget*/ 2 3(function ($) { 4 5 6 //Global variable for the widget function 7 function widgetDataService() { 8 9 this.getWidgetData = function () { 10 $.ajax({ 11 type:"POST", 12 dataType: "jsonp", 13 jsonpCallback: "saffireEvents", 14 contentType: "application/jsonp", 15 url: SITEBASEURL + "services/eventsservice.asmx/GetEventsJsonP", 16 error: function(results, error, thrown) { 17 18 19 }, 20 21 success: function(data){ 22 initialize(data); 23 24 } 25 26 }); 27 28 }; 29 }; 30 31 32 var detectIpad = false; 33 var eventScheduleLoaded = function(){}; 34 var customNumber = 4; 35 var customImageWidth = 200; 36 var customImageHeight = 200; 37 var showImage = true; // shows the event's featured image 38 var showDayName = false; // adds the day of the week to the event date 39 var showDescription = false; // short description of the event 40 var pagination = false; // shows (if true) the text "1 of x" along with the standard arrows 41 var useCropbox = true; 42 var noImageAvailableSrc = ''; 43 eventWidgetPageIndex = 1; 44 var dateFirst = true; 45 46 $.fn.eventScheduleWidget = function (options) { 47 48 var opts = $.extend({}, $.fn.eventScheduleWidget.defaultOptions, options); 49 50 widgetContainer = this; 51 widgetModuleItemID = opts.currentWidgetModuleItemID; 52 53 var widgetDataAdapter = new widgetDataService(); 54 55 widgetDataAdapter.getWidgetData(); 56 detectIpad = opts.detectIpad; 57 eventScheduleLoaded = opts.eventScheduleLoaded; 58 customNumber = opts.customNumber; 59 customImageWidth = opts.customImageWidth; 60 customImageHeight = opts.customImageHeight; 61 showImage = opts.showImage; 62 showDayName = opts.showDayName; 63 showDescription = opts.showDescription; 64 pagination = opts.pagination; 65 useCropbox = opts.useCropbox; 66 noImageAvailableSrc = opts.noImageAvailableSrc; 67 dateFirst = opts.dateFirst; 68 }; 69 70 //Default options for the constructor to be merged with send constructor data 71 $.fn.eventScheduleWidget.defaultOptions = { 72 detectIpad: false 73 , eventScheduleLoaded: function(){} 74 , customNumber: 4 75 , customImageWidth: 200 76 , customImageHeight: 200 77 , showImage: true 78 , showDayName: false 79 , showDescription: false 80 , pagination: false 81 , useCropbox: true 82 , noImageAvailableSrc: '' 83 , dateFirst: true 84 }; 85 86 87 //set up the ui 88 function initialize(data) { 89 90 var i, n, e; 91 for(i=0; i<data.length; i++){ // events without specific dates will not be used 92 var checkForDates = data[i].Date; 93 if(!checkForDates){ 94 data.splice(i,1); 95 i--; 96 } 97 } 98 99 var eventCount = data.length; 100 101 if (pagination === false) { 102 var countPages = 1; 103 } else { 104 var countPages = Math.ceil(eventCount/customNumber); 105 } 106 var imageHTML; 107 var eventDescription; 108 var dayName = ''; 109 var eventDateText = ''; 110 e = 0; 111 for(i=0; i<countPages; i++){ // iterate through pages 112 var p = i+1; 113 $('#eventScheduleWidget').append('<div class="eventScheduleWidgetPage eventScheduleWidgetPage'+p+'"></div>'); 114 for(n=0; n <= customNumber-1; n++){ // newest shows first 115 if(e<eventCount){ 116 if(showImage){ 117 var cropboxSettings, imageSrc; 118 if(useCropbox){ 119 cropboxSettings = "&cropbox=1&cropboxhpos=center"; 120 } else { 121 cropboxSettings = ""; 122 } 123 if(data[e].ImageURL == ''){ 124 imageSrc = noImageAvailableSrc; 125 } else { 126 imageSrc = data[e].ImageURL 127 } 128 129 var imageAlternateText = ""; 130 131 if (data[e].ImageAlternateText != null) { 132 imageAlternateText = (data[e].ImageAlternateText); 133 } 134 135 136 if(imageSrc != ''){ 137 imageHTML = '<div class="eventScheduleWidgetItemImage"><a href="' + data[e].URL + '"><img src="' + imageSrc + '&w=' + customImageWidth + cropboxSettings + '&h=' + customImageHeight + '&c=1" alt="' + imageAlternateText + '" /></a></div>'; 138 } else { 139 imageHTML = '<div class="eventScheduleWidgetItemImage"><a href="'+data[e].URL+'"><span class="eventScheduleDummyImageLink"></span></a></div>'; 140 } 141 142 } else { 143 imageHTML = ''; 144 } 145 146 if(showDayName){ // shows the event day of the week 147 var today = new Date(); 148 var todayDay = today.getDay(); 149 150 var oneDay = 24*60*60*1000; 151 152 var checkForRange = data[e].Date.indexOf(' - '); // remove second half of date range from calculations 153 var calcDate; 154 if(checkForRange > 0){ 155 var endOfRange = data[e].Date.indexOf(', 2'); 156 var removeLatter = data[e].Date.substring(checkForRange, endOfRange); 157 calcDate = data[e].Date.replace(removeLatter,''); 158 } else { 159 calcDate = data[e].Date; 160 } 161 162 var eventDate = new Date(calcDate); 163 var diffDays = Math.ceil(Math.abs((today - eventDate)/(oneDay))); 164 165 if(diffDays > 7){ 166 while(diffDays > 7){ 167 diffDays=diffDays-7; 168 } 169 } 170 171 var getDayOfWeek = todayDay + diffDays; 172 if(getDayOfWeek > 6){ 173 getDayOfWeek = getDayOfWeek-7; 174 } 175 176 var weekday = new Array(7); 177 weekday[0] = "Sunday, "; 178 weekday[1] = "Monday, "; 179 weekday[2] = "Tuesday, "; 180 weekday[3] = "Wednesday, "; 181 weekday[4] = "Thursday, "; 182 weekday[5] = "Friday, "; 183 weekday[6] = "Saturday, "; 184 var getDayOfWeek = weekday[getDayOfWeek]; 185 dayName = getDayOfWeek.toString(); 186 } else { 187 dayName = ''; 188 } 189 190 if(data[e].Description != null && showDescription){ 191 eventDescription = data[e].Description; 192 } else { 193 eventDescription = ''; 194 } 195 196 if(data[e].Date != null){ 197 eventDateText = data[e].Date.toString(); 198 } 199 200 if(dateFirst){ 201 $('.eventScheduleWidgetPage'+p).append('<div class="eventScheduleWidgetItem">'+imageHTML+'<div class="eventScheduleWidgetItemDate"><a href="'+data[e].URL+'"><span class="eventScheduleWidgetDayName">' + dayName + '</span>' + eventDateText + '</a></div><div class="eventScheduleWidgetItemText"><a href="'+data[e].URL+'"><span class="eventScheduleWidgetItemTitle">'+data[e].Name+'</span><span class="eventScheduleWidgetItemDescription">'+eventDescription+'</span></a></div></div>'); 202 } else { 203 $('.eventScheduleWidgetPage'+p).append('<div class="eventScheduleWidgetItem">'+imageHTML+'<div class="eventScheduleWidgetItemText"><a href="'+data[e].URL+'"><span class="eventScheduleWidgetItemTitle">'+data[e].Name+'</span><span class="eventScheduleWidgetItemDescription">'+eventDescription+'</span></a></div><div class="eventScheduleWidgetItemDate"><a href="'+data[e].URL+'"><span class="eventScheduleWidgetDayName">' + dayName + '</span>' + eventDateText + '</a></div></div>'); 204 } 205 206 e++; 207 } 208 209 } 210 } 211 212 if(countPages > 1){ // adding the page switcher mechanism 213 $('#eventScheduleWidget').addClass('eventScheduleWidgetMultiPage'); 214 $('#eventScheduleWidget').append('<div id="eventScheduleWidgetPaginationContainer"><a href="javascript:void(0);" onclick="eventScheduleWidgetBack('+countPages+')" id="eventScheduleWidgetBack" style="display:none;"></a><a href="javascript:void(0);" onclick="eventScheduleWidgetForward('+countPages+')" id="eventScheduleWidgetForward"></a></div>'); 215 var eventScheduleWidth = $('#eventScheduleWidget').width(); 216 var l = 0; 217 $('.eventScheduleWidgetPage').each(function(){ 218 $(this).css('left',l+'px'); 219 l = l+eventScheduleWidth; 220 }); 221 222 if(pagination){ // text version of page switcher 223 $('#eventScheduleWidgetPaginationContainer').prepend('<div id="eventScheduleWidgetTextPagination">1 of '+countPages+'</div>'); 224 } 225 } 226
227 eventScheduleLoaded(data); 228 229 if(isResponsive){ 230 var checkSwiping = $('#eventScheduleWidgetPaginationContainer').css('display'); 231 if(checkSwiping != 'none'){ 232 $('.eventScheduleWidgetPage').on("swipeleft",function(){ 233 var getParent = $(this).closest('#eventScheduleWidget').find('#eventScheduleWidgetForward').click(); 234 }); 235 236 $('.eventScheduleWidgetPage').on("swiperight",function(){ 237 var getParent = $(this).closest('#eventScheduleWidget').find('#eventScheduleWidgetBack').click(); 238 }); 239 } 240 241 } 242 } 243 244 245})(jQuery); 246 247var eventWidgetPageIndex; 248 249function eventScheduleWidgetForward(pageCount){ 250 $('#eventScheduleWidgetPaginationContainer').append('<div id="eventScheduleLinkMask" style="position:absolute; top:0; left:0; right:0; bottom:0; z-index:2000000000; background: none;"></div>') 251 var eventScheduleWidth = $('#eventScheduleWidget').width(); 252 var getNumber = $('.eventScheduleWidgetPage').length; 253 var currentPos = $('.eventScheduleWidgetPage'+getNumber).position().left; 254 255 if(currentPos == 0){ // we're at the end 256 $('#eventScheduleWidgetForward').css('display','none'); 257 $('#eventScheduleWidgetBack').css('display','block'); 258 $('#eventScheduleLinkMask').remove(); 259 } else { 260 eventWidgetPageIndex++; 261 $('.eventScheduleWidgetPage').animate({left: '-='+eventScheduleWidth+'px'},500, 'linear',function(){ 262 263 var lookForPagination = $('#eventScheduleWidgetTextPagination').length; 264 if(lookForPagination > 0){ 265 $('#eventScheduleWidgetTextPagination').text(eventWidgetPageIndex+' of '+pageCount); 266 } 267 268 var currentPos = $('.eventScheduleWidgetPage'+getNumber).position().left; 269 if(currentPos == 0){ 270 $('#eventScheduleWidgetForward').css('display','none'); 271 $('#eventScheduleWidgetBack').css('display','block'); 272 } 273 $('#eventScheduleLinkMask').remove(); 274 }); 275 $('#eventScheduleWidgetBack').css('display','block'); 276 } 277} 278 279function eventScheduleWidgetBack(pageCount){ 280 $('#eventScheduleWidgetPaginationContainer').append('<div id="eventScheduleLinkMask" style="position:absolute; top:0; left:0; right:0; bottom:0; z-index:2000000000; background: none;"></div>') 281 var eventScheduleWidth = $('#eventScheduleWidget').width(); 282 var getNumber = $('.eventScheduleWidgetPage').length; 283 var currentPos = $('.eventScheduleWidgetPage1').position().left; 284 if(currentPos == 0){ // we're at the start 285 $('#eventScheduleWidgetBack').css('display','none'); 286 $('#eventScheduleWidgetForward').css('display','block'); 287 $('#eventScheduleLinkMask').remove(); 288 } else { 289 eventWidgetPageIndex--; 290 $('.eventScheduleWidgetPage').animate({left: '+='+eventScheduleWidth+'px'},500,'linear',function(){ 291 292 var lookForPagination = $('#eventScheduleWidgetTextPagination').length; 293 if(lookForPagination > 0){ 294 $('#eventScheduleWidgetTextPagination').text(eventWidgetPageIndex+' of '+pageCount); 295 } 296 297 var currentPos = $('.eventScheduleWidgetPage1').position().left; 298 if(currentPos == 0){ 299 $('#eventScheduleWidgetBack').css('display','none'); 300 $('#eventScheduleWidgetForward').css('display','block'); 301 } 302 $('#eventScheduleLinkMask').remove(); 303 }); 304 $('#eventScheduleWidgetForward').css('display','block'); 305 } 306}
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.