-
Notifications
You must be signed in to change notification settings - Fork 0
/
modalDialogue.js
41 lines (40 loc) · 1.18 KB
/
modalDialogue.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
Free Software: see license.txt Copyright (c) 2011 Rich Boakes
*/
var modalDialogue = (function () {
"use strict";
var body, console, modal, overlay, openDialogue, closeDialogue, loader, message;
openDialogue = function (url) {
body = document.querySelector("body");
modal = document.createElement("div");
modal.setAttribute("class", "modal");
overlay = document.createElement("div");
overlay.setAttribute("class", "overlay");
overlay.appendChild(modal);
overlay.addEventListener("click", closeDialogue, false);
body.appendChild(overlay);
loader(url);
};
closeDialogue = function () {
body.removeChild(overlay);
overlay.removeEventListener("click", closeDialogue, false);
};
loader = function (url) {
var xhr, changeListener;
xhr = new XMLHttpRequest();
changeListener = function () {
if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 0)) {
modal.innerHTML = xhr.responseText;
} else {
modal.innerHTML = "<p>Message could not be retrieved. Please click to cancel.<\/p>";
}
};
xhr.open("GET", url, true);
xhr.onreadystatechange = changeListener;
xhr.send();
};
return {
open: openDialogue,
close: closeDialogue
};
}());