diff --git a/www/index.html b/www/index.html
new file mode 100644
index 0000000..4954e66
--- /dev/null
+++ b/www/index.html
@@ -0,0 +1,8 @@
+
+
+ FX | Rain
+
+
+
+
+
diff --git a/www/rain.js b/www/rain.js
new file mode 100644
index 0000000..c0f3a5e
--- /dev/null
+++ b/www/rain.js
@@ -0,0 +1,214 @@
+(function () {
+ var t = (function () {
+ var z = navigator.appVersion.toLowerCase();
+ z = (z.indexOf("msie") > -1) ? parseInt(z.replace(/.*msie[ ]/, "").match(/^[0-9]+/)) : 0;
+ return {
+ ltIE6: z <= 6 && z != 0,
+ ltIE7: z <= 7 && z != 0,
+ ltIE8: z <= 8 && z != 0,
+ ltIE9: z <= 9 && z != 0,
+ ie: z != 0,
+ firefox: window.globalStorage,
+ opera: window.opera,
+ webkit: !document.uniqueID && !window.opera && !window.globalStorage && window.localStorage,
+ mobile: /android|iphone|ipad|ipod/i.test(navigator.userAgent.toLowerCase())
+ }
+ })();
+ var o = "codes";
+ var g = 100;
+ var u = 2;
+ var s = 15;
+ var q = 3;
+ var w = 1;
+ var v = 0;
+ var y = "png";
+ var j = "http://htmlfreecodes.com/";
+ var b = j + o + "/";
+ var k = document.body;
+ var c = "giffy_bp_" + o;
+ var e = new Date().getTime();
+ var d = 10;
+ var f = 20;
+ var l = 50;
+ var p = 1000;
+ var a = false;
+ var r = new Array();
+ var n = new Array();
+ var x = 0;
+ var h = {
+ x: 0,
+ y: 0
+ };
+ window[c] = {
+ init: function () {
+ for (i = 0; i < g; i++) {
+ var A = document.createElement("div");
+ A.style.position = "fixed";
+ A.style.overflow = "hidden";
+ A.style.visibility = "hidden";
+ A.style.top = 0;
+ A.style.left = 0;
+ A.style.zIndex = p + i;
+ var z = document.createElement("img");
+ z.style.border = "0";
+ A.appendChild(z);
+ k.appendChild(A);
+ r[i] = {
+ obj: A,
+ img: z,
+ action: 0,
+ from: h,
+ to: h,
+ begin: 0,
+ duration: 0
+ }
+ }
+ for (i = 0; i < u; i++) {
+ n[i] = new Image();
+ n[i].src = b + "b" + (i + 1) + "." + y + (v == 1 ? "?" + e : "")
+ }
+ m.action();
+ x = setInterval(m.action, d)
+ },
+ action: function () {
+ if (!a) {
+ for (C = 0; C < u; C++) {
+ if (n[C].height == 0) {
+ return
+ }
+ }
+ a = true
+ }
+ var A = {
+ height: m.getViewHeight(),
+ width: m.getViewWidth(),
+ top: 0,
+ bottom: m.getViewHeight()
+ };
+ for (var C = 0; C < g; C++) {
+ switch (r[C].action) {
+ case 0:
+ if (m.getRandomNum(l) == 0) {
+ var B = n[m.getRandomNum(u)];
+ r[C].img.src = B.src;
+ var z = m.getRandomNum(A.width - B.width);
+ r[C].from = {
+ x: z,
+ y: 0
+ };
+ r[C].to = {
+ x: z,
+ y: A.height
+ };
+ r[C].begin = new Date() - 0;
+ r[C].duration = A.height * f / s;
+ if (q > 0) {
+ r[C].duration *= (1 + (0.1 * (m.getRandomNum(2) == 0 ? 1 : -1) * m.getRandomNum(q)))
+ }
+ r[C].action = 1;
+ m.move(r[C].obj, r[C].from);
+ m.setVisible(r[C].obj)
+ }
+ break;
+ case 1:
+ var D = new Date() - r[C].begin;
+ if (D < r[C].duration) {
+ m.move(r[C].obj, m.easingPos(D, r[C].from, r[C].to, r[C].duration))
+ } else {
+ m.setHidden(r[C].obj);
+ r[C].action = 0
+ }
+ break
+ }
+ }
+ },
+ getRandomNum: function (z) {
+ return Math.floor(Math.random() * z)
+ },
+ getViewHeight: function () {
+ if (window.innerHeight) {
+ return window.innerHeight
+ }
+ if (document.documentElement && document.documentElement.clientHeight) {
+ return document.documentElement.clientHeight
+ } else {
+ if (document.body && document.body.clientHeight) {
+ return document.body.clientHeight
+ }
+ }
+ return 0
+ },
+ getViewWidth: function () {
+ if (window.innerWidth) {
+ return window.innerWidth
+ }
+ if (document.documentElement && document.documentElement.clientWidth) {
+ return document.documentElement.clientWidth
+ } else {
+ if (document.body && document.body.clientWidth) {
+ return document.body.clientWidth
+ }
+ }
+ return 0
+ },
+ getViewTop: function () {
+ if (window.scrollY) {
+ return window.scrollY
+ }
+ if (window.pageYOffset) {
+ return window.pageYOffset
+ }
+ if (document.documentElement && document.documentElement.scrollTop) {
+ return document.documentElement.scrollTop
+ } else {
+ if (document.body && document.body.scrollTop) {
+ return document.body.scrollTop
+ }
+ }
+ return 0
+ },
+ getViewBottom: function () {
+ return m.getViewTop() + m.getViewHeight()
+ },
+ getViewLeft: function () {
+ if (window.scrollX) {
+ return window.scrollX
+ }
+ if (window.pageXOffset) {
+ return window.pageXOffset
+ }
+ if (document.documentElement && document.documentElement.scrollLeft) {
+ return document.documentElement.scrollLeft
+ } else {
+ if (document.body && document.body.scrollLeft) {
+ return document.body.scrollLeft
+ }
+ }
+ return 0
+ },
+ getViewRight: function () {
+ return m.getViewLeft() + m.getViewWidth()
+ },
+ easing: function (A, C, B, z) {
+ return (B - C) * A / z + C
+ },
+ easingPos: function (A, C, B, z) {
+ return {
+ x: m.easing(A, C.x, B.x, z),
+ y: m.easing(A, C.y, B.y, z)
+ }
+ },
+ move: function (z, A) {
+ z.style.top = A.y + "px";
+ z.style.left = A.x + "px"
+ },
+ setHidden: function (z) {
+ z.style.visibility = "hidden"
+ },
+ setVisible: function (z) {
+ z.style.visibility = "visible"
+ }
+ };
+ var m = window[c];
+ m.init()
+})();
\ No newline at end of file