Pathologic was missing because of a .git folder inside.
[yaffs-website] / web / modules / contrib / eu_cookie_compliance / js / eu_cookie_compliance.js
1 /**
2  * @file eu_cookie_compliance.js
3  *
4  * Defines the behavior of the eu cookie compliance popup.
5  */
6
7 (function ($, Drupal, drupalSettings) {
8
9   'use strict';
10
11   Drupal.behaviors.euCookieCompliancePopup = {
12     attach: function (context) {
13       $('body', context).once('sliding-popup').each(function () {
14         var settings = drupalSettings.eu_cookie_compliance;
15         try {
16           var enabled = settings.popup_enabled;
17
18           if (!enabled) {
19             return;
20           }
21
22           if (!Drupal.eu_cookie_compliance.cookiesEnabled()) {
23             return;
24           }
25
26           var status = Drupal.eu_cookie_compliance.getCurrentStatus();
27           var clicking_confirms = settings.popup_clicking_confirmation;
28           var agreed_enabled = settings.popup_agreed_enabled;
29           var popup_hide_agreed = settings.popup_hide_agreed;
30
31           if (status === 0) {
32             var next_status = 1;
33             if (!clicking_confirms) {
34               $('a, input[type=submit]').bind('click.eu_cookie_compliance', function () {
35                 if (!agreed_enabled) {
36                   Drupal.eu_cookie_compliance.setStatus(1);
37                   next_status = 2;
38                 }
39                 Drupal.eu_cookie_compliance.changeStatus(next_status);
40               });
41             }
42             $('.agree-button').click(function () {
43               if (!agreed_enabled) {
44                 Drupal.eu_cookie_compliance.setStatus(1);
45                 next_status = 2;
46               }
47               Drupal.eu_cookie_compliance.changeStatus(next_status);
48             });
49
50             Drupal.eu_cookie_compliance.createPopup(settings.popup_html_info);
51           }
52           else if (status === 1) {
53             Drupal.eu_cookie_compliance.createPopup(settings.popup_html_agreed);
54             if (popup_hide_agreed) {
55               $('a, input[type=submit]').bind('click.eu_cookie_compliance_hideagreed', function () {
56                 Drupal.eu_cookie_compliance.changeStatus(2);
57               });
58             }
59           }
60         }
61         catch (e) {
62           // Nothing to show here.
63         }
64       });
65     }
66   };
67
68   Drupal.eu_cookie_compliance = {};
69
70   Drupal.eu_cookie_compliance.createPopup = function (html) {
71     var popup = $(html)
72       .attr({id: 'sliding-popup'})
73       .height(drupalSettings.eu_cookie_compliance.popup_height)
74       .width(drupalSettings.eu_cookie_compliance.popup_width)
75       .hide();
76     var height = popup.height();
77     if (drupalSettings.eu_cookie_compliance.popup_position) {
78       popup.prependTo('body');
79       popup.show()
80         .attr({class: 'sliding-popup-top clearfix'})
81         .css({
82           top: -1 * height
83         })
84         .animate({top: 0}, drupalSettings.eu_cookie_compliance.popup_delay);
85     }
86     else {
87       popup.appendTo('body');
88       popup.show()
89         .attr({class: 'sliding-popup-bottom'})
90         .css({
91           bottom: -1 * height
92         })
93         .animate({bottom: 0}, drupalSettings.eu_cookie_compliance.popup_delay);
94     }
95     popup.css({
96       background: '#' + drupalSettings.eu_cookie_compliance.popup_bg_hex
97     }).find('h2, p').css('color', '#' + drupalSettings.eu_cookie_compliance.popup_text_hex);
98     Drupal.eu_cookie_compliance.attachEvents();
99   };
100
101   Drupal.eu_cookie_compliance.attachEvents = function () {
102     var clicking_confirms = drupalSettings.eu_cookie_compliance.popup_clicking_confirmation;
103     var agreed_enabled = drupalSettings.eu_cookie_compliance.popup_agreed_enabled;
104     $('.find-more-button').bind('click', function () {
105       if (drupalSettings.eu_cookie_compliance.popup_link_new_window) {
106         window.open(drupalSettings.eu_cookie_compliance.popup_link);
107       }
108       else {
109         window.location.href = drupalSettings.eu_cookie_compliance.popup_link;
110       }
111     });
112     $('.agree-button').bind('click', function () {
113       var next_status = 1;
114       if (!agreed_enabled) {
115         Drupal.eu_cookie_compliance.setStatus(1);
116         next_status = 2;
117       }
118       if (clicking_confirms) {
119         $('a, input[type=submit]').unbind('click.eu_cookie_compliance');
120       }
121       Drupal.eu_cookie_compliance.changeStatus(next_status);
122     });
123     $('.hide-popup-button').bind('click', function () {
124       Drupal.eu_cookie_compliance.changeStatus(2);
125     });
126   };
127
128   Drupal.eu_cookie_compliance.getCurrentStatus = function () {
129     var name = 'cookie-agreed';
130     var result = Drupal.eu_cookie_compliance.getCookie(name);
131
132     return parseInt(result);
133   };
134
135   Drupal.eu_cookie_compliance.changeStatus = function (value) {
136     var status = Drupal.eu_cookie_compliance.getCurrentStatus();
137     if (status === value) {
138       return;
139     }
140     if (drupalSettings.eu_cookie_compliance.popup_position) {
141       $('.sliding-popup-top').animate({top: $('#sliding-popup').height() * -1}, drupalSettings.eu_cookie_compliance.popup_delay, function () {
142         if (status === 0) {
143           $('#sliding-popup').html(drupalSettings.eu_cookie_compliance.popup_html_agreed).animate({top: 0}, drupalSettings.eu_cookie_compliance.popup_delay);
144           Drupal.eu_cookie_compliance.attachEvents();
145         }
146         if (status === 1) {
147           $('#sliding-popup').remove();
148         }
149       });
150     }
151     else {
152       $('.sliding-popup-bottom').animate({bottom: $('#sliding-popup').height() * -1}, drupalSettings.eu_cookie_compliance.popup_delay, function () {
153         if (status === 0) {
154           $('#sliding-popup').html(drupalSettings.eu_cookie_compliance.popup_html_agreed).animate({bottom: 0}, drupalSettings.eu_cookie_compliance.popup_delay);
155           Drupal.eu_cookie_compliance.attachEvents();
156         }
157         if (status === 1) {
158           $('#sliding-popup').remove();
159         }
160       });
161     }
162     Drupal.eu_cookie_compliance.setStatus(value);
163   };
164
165   Drupal.eu_cookie_compliance.setStatus = function (status) {
166     var date = new Date();
167     date.setDate(date.getDate() + 100);
168     var cookie = 'cookie-agreed=' + status + ';expires=' + date.toUTCString() + ';path=' + drupalSettings.path.baseUrl;
169     if (drupalSettings.eu_cookie_compliance.domain) {
170       cookie += ';domain=' + drupalSettings.eu_cookie_compliance.domain;
171     }
172     document.cookie = cookie;
173   };
174
175   Drupal.eu_cookie_compliance.hasAgreed = function () {
176     var status = Drupal.eu_cookie_compliance.getCurrentStatus();
177     if (status === 1 || status === 2) {
178       return true;
179     }
180     return false;
181   };
182
183   /**
184    * Verbatim copy of Drupal.comment.getCookie().
185    */
186   Drupal.eu_cookie_compliance.getCookie = function (name) {
187     var search = name + '=';
188     var returnValue = '0';
189
190     if (document.cookie.length > 0) {
191       var offset = document.cookie.indexOf(search);
192       if (offset !== -1) {
193         offset += search.length;
194         var end = document.cookie.indexOf(';', offset);
195         if (end === -1) {
196           end = document.cookie.length;
197         }
198         returnValue = decodeURIComponent(document.cookie.substring(offset, end).replace(/\+/g, '%20'));
199       }
200     }
201     return returnValue;
202   };
203
204   Drupal.eu_cookie_compliance.cookiesEnabled = function () {
205     var cookieEnabled = (navigator.cookieEnabled);
206     if (typeof navigator.cookieEnabled === 'undefined' && !cookieEnabled) {
207       document.cookie = 'testcookie';
208       cookieEnabled = (document.cookie.indexOf('testcookie') !== -1);
209     }
210     return (cookieEnabled);
211   };
212
213 })(jQuery, Drupal, drupalSettings);