diff --git a/public/vendor/attrchange/js/attrchange.js b/public/vendor/attrchange/js/attrchange.js new file mode 100644 index 00000000..00878d30 --- /dev/null +++ b/public/vendor/attrchange/js/attrchange.js @@ -0,0 +1,124 @@ +/* +A simple jQuery function that can add listeners on attribute change. +http://meetselva.github.io/attrchange/ + +About License: +Copyright (C) 2013-2014 Selvakumar Arumugam +You may use attrchange plugin under the terms of the MIT Licese. +https://github.com/meetselva/attrchange/blob/master/MIT-License.txt + */ +(function($) { + function isDOMAttrModifiedSupported() { + var p = document.createElement('p'); + var flag = false; + + if (p.addEventListener) { + p.addEventListener('DOMAttrModified', function() { + flag = true + }, false); + } else if (p.attachEvent) { + p.attachEvent('onDOMAttrModified', function() { + flag = true + }); + } else { return false; } + p.setAttribute('id', 'target'); + return flag; + } + + function checkAttributes(chkAttr, e) { + if (chkAttr) { + var attributes = this.data('attr-old-value'); + + if (e.attributeName.indexOf('style') >= 0) { + if (!attributes['style']) + attributes['style'] = {}; //initialize + var keys = e.attributeName.split('.'); + e.attributeName = keys[0]; + e.oldValue = attributes['style'][keys[1]]; //old value + e.newValue = keys[1] + ':' + + this.prop("style")[$.camelCase(keys[1])]; //new value + attributes['style'][keys[1]] = e.newValue; + } else { + e.oldValue = attributes[e.attributeName]; + e.newValue = this.attr(e.attributeName); + attributes[e.attributeName] = e.newValue; + } + + this.data('attr-old-value', attributes); //update the old value object + } + } + + //initialize Mutation Observer + var MutationObserver = window.MutationObserver + || window.WebKitMutationObserver; + + $.fn.attrchange = function(a, b) { + if (typeof a == 'object') {//core + var cfg = { + trackValues : false, + callback : $.noop + }; + //backward compatibility + if (typeof a === "function") { cfg.callback = a; } else { $.extend(cfg, a); } + + if (cfg.trackValues) { //get attributes old value + this.each(function(i, el) { + var attributes = {}; + for ( var attr, i = 0, attrs = el.attributes, l = attrs.length; i < l; i++) { + attr = attrs.item(i); + attributes[attr.nodeName] = attr.value; + } + $(this).data('attr-old-value', attributes); + }); + } + + if (MutationObserver) { //Modern Browsers supporting MutationObserver + var mOptions = { + subtree : false, + attributes : true, + attributeOldValue : cfg.trackValues + }; + var observer = new MutationObserver(function(mutations) { + mutations.forEach(function(e) { + var _this = e.target; + //get new value if trackValues is true + if (cfg.trackValues) { + e.newValue = $(_this).attr(e.attributeName); + } + if ($(_this).data('attrchange-status') === 'connected') { //execute if connected + cfg.callback.call(_this, e); + } + }); + }); + + return this.data('attrchange-method', 'Mutation Observer').data('attrchange-status', 'connected') + .data('attrchange-obs', observer).each(function() { + observer.observe(this, mOptions); + }); + } else if (isDOMAttrModifiedSupported()) { //Opera + //Good old Mutation Events + return this.data('attrchange-method', 'DOMAttrModified').data('attrchange-status', 'connected').on('DOMAttrModified', function(event) { + if (event.originalEvent) { event = event.originalEvent; }//jQuery normalization is not required + event.attributeName = event.attrName; //property names to be consistent with MutationObserver + event.oldValue = event.prevValue; //property names to be consistent with MutationObserver + if ($(this).data('attrchange-status') === 'connected') { //disconnected logically + cfg.callback.call(this, event); + } + }); + } else if ('onpropertychange' in document.body) { //works only in IE + return this.data('attrchange-method', 'propertychange').data('attrchange-status', 'connected').on('propertychange', function(e) { + e.attributeName = window.event.propertyName; + //to set the attr old value + checkAttributes.call($(this), cfg.trackValues, e); + if ($(this).data('attrchange-status') === 'connected') { //disconnected logically + cfg.callback.call(this, e); + } + }); + } + return this; + } else if (typeof a == 'string' && $.fn.attrchange.hasOwnProperty('extensions') && + $.fn.attrchange['extensions'].hasOwnProperty(a)) { //extensions/options + return $.fn.attrchange['extensions'][a].call(this, b); + } + } +})(jQuery); \ No newline at end of file diff --git a/public/vendor/attrchange/js/attrchange_ext.js b/public/vendor/attrchange/js/attrchange_ext.js new file mode 100644 index 00000000..d761892f --- /dev/null +++ b/public/vendor/attrchange/js/attrchange_ext.js @@ -0,0 +1,97 @@ +/* +An extension for attrchange jQuery plugin +http://meetselva.github.io/attrchange/ + +About License: +Copyright (C) 2013-2014 Selvakumar Arumugam +You may use attrchange ext plugin under the terms of the MIT Licese. +https://github.com/meetselva/attrchange/blob/master/MIT-License.txt + */ +$.fn.attrchange.extensions = { /*attrchange option/extension*/ + disconnect: function (o) { + if (typeof o !== 'undefined' && o.isPhysicalDisconnect) { + return this.each(function() { + var attrchangeMethod = $(this).data('attrchange-method'); + if (attrchangeMethod == 'propertychange' || attrchangeMethod == 'DOMAttrModified') { + $(this).off(attrchangeMethod); + } else if (attrchangeMethod == 'Mutation Observer') { + $(this).data('attrchange-obs').disconnect(); + } else if (attrchangeMethod == 'polling') { + clearInterval($(this).data('attrchange-polling-timer')); + } + }).removeData(['attrchange-method', 'attrchange-status']); + } else { //logical disconnect + return this.data('attrchange-status', 'disconnected'); //set a flag that prevents triggering callback onattrchange + } + }, + remove: function (o) { + return $.fn.attrchange.extensions['disconnect'].call(this, {isPhysicalDisconnect: true}); + }, + getProperties: function (o) { + var attrchangeMethod = $(this).data('attrchange-method'); + var pollInterval = $(this).data('attrchange-pollInterval'); + return { + method: attrchangeMethod, + isPolling: (attrchangeMethod == 'polling'), + pollingInterval: (typeof pollInterval === 'undefined')?0:parseInt(pollInterval, 10), + status: (typeof attrchangeMethod === 'undefined')?'removed': $(this).data('attrchange-status') + } + }, + reconnect: function (o) {//reconnect possible only when there is a logical disconnect + return this.data('attrchange-status', 'connected'); + }, + polling: function (o) { + if (o.hasOwnProperty('isComputedStyle') && o.isComputedStyle == 'true') { /* extensive and slow - polling to check on computed style properties */ + return this.each(function(i, _this) { + if (!o.hasOwnProperty('properties') || + Object.prototype.toString.call(o.properties) !== '[object Array]' || + o.properties.length == 0) { return false; } //return if no properties found + var attributes = {}; //store computed properties + for (var i = 0; i < o.properties.length; i++) { + attributes[o.properties[i]] = $(this).css(o.properties[i]); + } + var _this = this; + $(this).data('attrchange-polling-timer', setInterval(function () { + var changes = {}, hasChanges = false; // attrName: { oldValue: xxx, newValue: yyy} + for (var comuptedVal, i = 0; i < o.properties.length; i++){ + comuptedVal = $(_this).css(o.properties[i]); + if (attributes[o.properties[i]] !== comuptedVal) { + hasChanges = true; + changes[o.properties[i]] = {oldValue: attributes[o.properties[i]], newValue: comuptedVal}; + attributes[o.properties[i]] = comuptedVal //add the attribute to the orig + } + } + if (hasChanges && $(_this).data('attrchange-status') === 'connected') { //disconnected logically + o.callback.call(_this, changes); + } + }, (o.pollInterval)?o.pollInterval: 1000)).data('attrchange-method', 'polling').data('attrchange-pollInterval', o.pollInterval).data('attrchange-status', 'connected'); + }); + } else { + return this.each(function(i, _this) { /* this one is programmatic polling */ + var attributes = {}; + for (var attr, i=0, attrs=_this.attributes, l=attrs.length; i" + days[dhead] + ""; -} - -dataHead += ""; -tableHeaderMonth.innerHTML = dataHead; -showCalendar(currentMonth, currentYear); - -nextBtn.addEventListener("click", next, false); -previousBtn.addEventListener("click", previous, false); - -function yearRange(start, end) { - var years = ""; - - for (var year = start; year <= end; year++) { - years += ""; - } - - return years; -} - -var createYear = yearRange(1970, 2050); -selectYear.innerHTML = createYear; - -function next() { - currentYear = currentMonth === 11 ? currentYear + 1 : currentYear; - currentMonth = (currentMonth + 1) % 12; - showCalendar(currentMonth, currentYear); -} - -function previous() { - currentYear = currentMonth === 0 ? currentYear - 1 : currentYear; - currentMonth = currentMonth === 0 ? 11 : currentMonth - 1; - showCalendar(currentMonth, currentYear); -} - -function jump() { - currentYear = parseInt(selectYear.value); - currentMonth = parseInt(selectMonth.value); - showCalendar(currentMonth, currentYear); -} - -function showCalendar(month, year) { - var firstDay = new Date(year, month).getDay(); - var monthString = monthsArr[month]; - - table = document.getElementById("calendar-body"); - table.innerHTML = ""; - monthHeader.innerHTML = monthString.substring(0, 3); - yearHeader.innerHTML = year; - selectYear.value = year; - selectMonth.value = month; - - var date = 1; - - for (var i = 0; i < 6; i++ ) { - var row = document.createElement("tr"); - - for (var j = 0; j < 7; j++) { - if (i === 0 && j < firstDay) { - cell = document.createElement("td"); - cellText = document.createTextNode(""); - cell.appendChild(cellText); - row.appendChild(cell); - } else if (date > daysInMonth(month, year)) { - break; - } else { - cell = document.createElement("td"); - cell.setAttribute("data-date", date); - cell.setAttribute("data-month", month + 1); - cell.setAttribute("data-year", year); - cell.setAttribute("data-month-name", months[month]); - cell.className = "date-picker"; - cell.innerHTML = "" + date + ""; - cell.onclick = function(event) { - var dates = document.querySelectorAll(".date-picker"); - var currentTarget = event.currentTarget; - var date = currentTarget.dataset.date; - var month = currentTarget.dataset.month - 1; - var year = currentTarget.dataset.year; - - for (var i = 0; i < dates.length; i++) { - dates[i].classList.remove("selected"); - } - - currentTarget.classList.add("selected"); - datePicked.innerHTML = date + " " + monthsArr[month] + " " + year; - } - - if (date === today.getDate() && year === today.getFullYear() && month === today.getMonth()) { - cell.className = "date-picker selected"; - } - - row.appendChild(cell); - date++; - } - } - - table.appendChild(row); - } -} - -function daysInMonth(month, year) { - return 32 - new Date(year, month, 32).getDate(); -} diff --git a/public/vendor/simpleDP/web/open-sans/regular.ttf b/public/vendor/simpleDP/web/open-sans/regular.ttf deleted file mode 100644 index 29bfd35a..00000000 Binary files a/public/vendor/simpleDP/web/open-sans/regular.ttf and /dev/null differ diff --git a/resources/views/desktop/Pages/EventsPage.blade.php b/resources/views/desktop/Pages/EventsPage.blade.php index 551eea91..14ca5379 100644 --- a/resources/views/desktop/Pages/EventsPage.blade.php +++ b/resources/views/desktop/Pages/EventsPage.blade.php @@ -52,7 +52,7 @@ + src="{{ asset('vendor/attrchange/js/attrchange.js') }}">