You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iota.apache.org by no...@apache.org on 2016/05/11 11:34:29 UTC

[05/21] incubator-iota-site git commit: Website Upload

http://git-wip-us.apache.org/repos/asf/incubator-iota-site/blob/9b5251fe/js/jquery.rd-google-map.js
----------------------------------------------------------------------
diff --git a/js/jquery.rd-google-map.js b/js/jquery.rd-google-map.js
new file mode 100644
index 0000000..c5c86bb
--- /dev/null
+++ b/js/jquery.rd-google-map.js
@@ -0,0 +1,138 @@
+/*
+ *  RD-Google Map - v0.1
+ *  Easy as hell Google Map Api Jquery plugin.
+ *
+ *  Made by Evgeniy Gusarov (Stmechanus || Diversant)
+ *
+ *  Under MIT License
+ */
+
+
+;
+(function ($) {
+    'use strict'
+
+    var def_settings = {
+            cntClass: 'map',
+            mapClass: 'map_model',
+            locationsClass: 'map_locations',
+            marker: {
+                basic: 'images/gmap_marker.png',
+                active: 'images/gmap_marker_active.png'
+            },
+            styles: []
+        },
+
+        defaults = {
+            map: {
+                x: -73.9924068,
+                y: 40.646197,
+                zoom: 14
+            },
+            locations: []
+        };
+
+
+    var getLocations = function ($map, settings) {
+        var $locations = $map.parent().find('.' + settings.locationsClass).find('li');
+
+        var locations = [];
+
+
+        if ($locations.length > 0) {
+            $locations.each(function (i) {
+                var $loc = $(this);
+
+                if ($loc.data('x') && $loc.data('y')) {
+                    locations[i] = {
+                        x: $loc.data('x'),
+                        y: $loc.data('y'),
+                        basic: $loc.data('basic') ? $loc.data('basic') : settings.marker.basic,
+                        active: $loc.data('active') ? $loc.data('active') : settings.marker.active
+                    }
+
+                    if (!$.trim($loc.html())) {
+                        locations[i].content = false;
+                    } else {
+                        locations[i].content = '<div class="iw-content">' + $loc.html() + '</div>';
+                    }
+                }
+            });
+        }
+        return locations;
+    }
+
+    $.fn.googleMap = function (settings) {
+
+        settings = $.extend(true, {}, def_settings, settings);
+
+        $(this).each(function () {
+            var $this = $(this);
+
+            var options = $.extend(
+                true, {}, defaults,
+                {
+                    map: {
+                        x: $this.data('x'),
+                        y: $this.data('y'),
+                        zoom: $this.data('zoom')
+                    },
+                    locations: getLocations($this, settings)
+                }
+            );
+
+            var map = new google.maps.Map(this, {
+                    center: new google.maps.LatLng(
+                        parseFloat(options.map.y),
+                        parseFloat(options.map.x)
+                    ),
+                    scrollwheel: false,
+                    styles: settings.styles,
+                    zoom: options.map.zoom
+                }),
+                infowindow = new google.maps.InfoWindow(),
+                markers = [];
+
+            for (var i in options.locations) {
+                markers[i] = new google.maps.Marker(
+                    {
+                        position: new google.maps.LatLng(
+                            parseFloat(options.locations[i].y),
+                            parseFloat(options.locations[i].x)),
+                        map: map,
+                        icon: options.locations[i].basic,
+                        index: i
+                    }
+                );
+
+
+                if (options.locations[i].content) {
+                    google.maps.event.addListener(markers[i], 'click', function () {
+                        for (var j in markers) {
+                            markers[j].setIcon(options.locations[j].basic);
+                        }
+
+                        infowindow.setContent(options.locations[this.index].content);
+                        infowindow.open(map, this);
+                        $('.gm-style-iw').parent().parent().addClass("gm-wrapper");
+                        this.setIcon(options.locations[this.index].active);
+                    });
+                    google.maps.event.addListener(infowindow, 'closeclick', function () {
+                        for (var j in markers) {
+                            markers[j].setIcon(options.locations[j].basic);
+                        }
+                    });
+                }
+            }
+
+            google.maps.event.addDomListener(window, 'resize', function() {
+                map.setCenter(new google.maps.LatLng(
+                    parseFloat(options.map.y),
+                    parseFloat(options.map.x)
+                ));
+            });
+        });
+    };
+
+
+})(jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-iota-site/blob/9b5251fe/js/jquery.rd-google-map.min.js
----------------------------------------------------------------------
diff --git a/js/jquery.rd-google-map.min.js b/js/jquery.rd-google-map.min.js
new file mode 100644
index 0000000..2ddf250
--- /dev/null
+++ b/js/jquery.rd-google-map.min.js
@@ -0,0 +1,7 @@
+/**
+ * @module       RD-Google Map
+ * @author       Evgeniy Gusarov
+ * @see          https://ua.linkedin.com/pub/evgeniy-gusarov/8a/a40/54a
+ * @version      0.1.4
+ */
+!function(a){"use strict";var o={cntClass:"rd-google-map",mapClass:"rd-google-map__model",locationsClass:"rd-google-map__locations",marker:{basic:"images/gmap_marker.png",active:"images/gmap_marker_active.png"},styles:[]},t={map:{x:-73.9924068,y:40.646197,zoom:14},locations:[]},e=function(o,t){var e=o.parent().find("."+t.locationsClass).find("li"),n=[];return e.length>0&&e.each(function(o){var e=a(this);e.data("x")&&e.data("y")&&(n[o]={x:e.data("x"),y:e.data("y"),basic:e.data("basic")?e.data("basic"):t.marker.basic,active:e.data("active")?e.data("active"):t.marker.active},n[o].content=a.trim(e.html())?'<div class="iw-content">'+e.html()+"</div>":!1)}),n};a.fn.googleMap=function(n){n=a.extend(!0,{},o,n),a(this).each(function(){var o=a(this),s=a.extend(!0,{},t,{map:{x:o.data("x"),y:o.data("y"),zoom:o.data("zoom")},locations:e(o,n)}),i=new google.maps.Map(this,{center:new google.maps.LatLng(parseFloat(s.map.y),parseFloat(s.map.x)),scrollwheel:!1,styles:n.styles,zoom:s.map.zoom}),c=new 
 google.maps.InfoWindow,l=[];for(var r in s.locations)l[r]=new google.maps.Marker({position:new google.maps.LatLng(parseFloat(s.locations[r].y),parseFloat(s.locations[r].x)),map:i,icon:s.locations[r].basic,index:r}),s.locations[r].content&&(google.maps.event.addListener(l[r],"click",function(){for(var o in l)l[o].setIcon(s.locations[o].basic);c.setContent(s.locations[this.index].content),c.open(i,this),a(".gm-style-iw").parent().parent().addClass("gm-wrapper"),this.setIcon(s.locations[this.index].active)}),google.maps.event.addListener(c,"closeclick",function(){for(var a in l)l[a].setIcon(s.locations[a].basic)}));google.maps.event.addDomListener(window,"resize",function(){i.setCenter(new google.maps.LatLng(parseFloat(s.map.y),parseFloat(s.map.x)))})})}}(jQuery);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-iota-site/blob/9b5251fe/js/jquery.rd-mailform.min.js
----------------------------------------------------------------------
diff --git a/js/jquery.rd-mailform.min.js b/js/jquery.rd-mailform.min.js
new file mode 100644
index 0000000..a93ac57
--- /dev/null
+++ b/js/jquery.rd-mailform.min.js
@@ -0,0 +1,508 @@
+/**
+ * @module       RD Mail Form
+ * @version      1.1.0
+ * @author       Evgeniy Gusarov
+ * @see          https://ua.linkedin.com/pub/evgeniy-gusarov/8a/a40/54a
+ */
+!function (e) {
+    function t(o, s, n) {
+        i = e.extend(!0, {}, i, n), this.options = e.extend(!0, {}, t.Defaults, s), this.$element = e(o), this._plugins = {}, this._handlers = {
+            "mf.success mf.fail": e.proxy(this.update, this),
+            "mf.process": e.proxy(this.process, this),
+            reset: e.proxy(this.reset, this)
+        }, e.each(t.Plugins, e.proxy(function (e, t) {
+            this._plugins[e[0].toLowerCase() + e.slice(1)] = new t(this)
+        }, this)), this.initialize()
+    }
+
+    var i;
+    i = {
+        MF000: "Sent",
+        MF001: "Recipients are not set!",
+        MF002: "Form will not work locally!",
+        MF003: "Please, define email field in your form!",
+        MF004: "Please, define type of your form!",
+        MF254: "Something went wrong with PHPMailer!",
+        MF255: "Aw, snap! Something went wrong."
+    }, t.Defaults = {baseClass: "rd-mailform"}, t.Plugins = {}, t.prototype.initialize = function () {
+        this.$element.trigger("mf.initialize"), this.$element.addClass(this.options.baseClass).trigger("reset"), this.create(), this.watch(), this.$element.trigger("mf.initialized")
+    }, t.prototype.create = function () {
+    }, t.prototype.watch = function () {
+        var e = this;
+        e.$element.ajaxForm({
+            beforeSubmit: function () {
+                e.$element.trigger("mf.process")
+            }, error: function (t) {
+                e.$element.trigger("mf.fail", {code: t, message: i[t]})
+            }, success: function (t) {
+                console.log(t), "MF000" == t ? e.$element.trigger("mf.success", {
+                    code: t,
+                    message: i[t]
+                }) : (t = 5 == t.length ? t : "MF255", e.$element.trigger("mf.fail", {code: t, message: i[t]}))
+            }
+        }).on(this._handlers)
+    }, t.prototype.process = function () {
+        this.$element.addClass("process")
+    }, t.prototype.update = function (t, i) {
+        this.$element.removeClass("process"), this.$element.addClass("MF000" === i.code ? "success" : "fail"), setTimeout(e.proxy(function () {
+            this.$element.trigger("reset")
+        }, this), 3e3)
+    }, t.prototype.reset = function () {
+        this.$element.removeClass("success"), this.$element.removeClass("fail"), this.$element.trigger("mf.reset")
+    }, e.fn.rdMailForm = function (i, o) {
+        return this.each(function () {
+            e(this).data("rdMailForm") || e(this).data("rdMailForm", new t(this, i, o))
+        })
+    }, e.fn.rdMailForm.Constructor = t
+}(window.jQuery, window, document), function (e) {
+    var t = e.fn.rdMailForm.Constructor.Plugins.Validator = function (i) {
+        this._core = i, this._handlers = {
+            "mfValidator.validate": this.validate,
+            "mfValidator.error": this.error,
+            "mfValidator.valid": this.valid,
+            "mfValidator.reset": this.reset,
+            "mfValidator.click": e.noop()
+        }, this._core.options = e.extend(!0, {}, t.Defaults, this._core.options), this.initialize()
+    };
+    t.Defaults = {
+        validator: {
+            applyTo: "[data-constraints]",
+            "class": "mfValidation",
+            constraints: {
+                "@LettersOnly": {
+                    rule: "^([a-zA-Z\u0430-\u044f\u0410-\u042f\u0456\u0457\u0451\u0406\u0407\u0401\u0454\u0404\u0490\u0491\\s]{0,})$",
+                    message: "Please use letters only!"
+                },
+                "@NumbersOnly": {rule: "^-?\\d*\\.?\\d*$", message: "Please use numbers only!"},
+                "@NotEmpty": {rule: "([^\\s])", message: "Field should not be empty!"},
+                "@Email": {
+                    rule: "^(([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)){0,}$",
+                    message: "Enter valid e-mail address!"
+                },
+                "@Phone": {
+                    rule: "^(\\+?\\d{0,3}\\s*\\(?\\d{1,3}\\)?\\s*\\d{3}\\s*\\d{4}){0,}$",
+                    message: "Enter valid phone number!"
+                },
+                "@Date": {
+                    rule: function (e) {
+                        return navigator.userAgent.match(/(iPod|iPhone|iPad)/) ? !0 : new RegExp("^($)|(((0[13578]|10|12)(-|\\/)((0[1-9])|([12])([0-9])|(3[01]?))(-|\\/)((19)([2-9])(\\d{1})|(20)([01])(\\d{1})|([8901])(\\d{1}))|(0?[2469]|11)(-|/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[0]?))(-|/)((19)([2-9])(\\d{1})|(20)([01])(\\d{1})|([8901])(\\d{1}))))$").test(e.val())
+                    }, message: "Use MM/DD/YYYY format!"
+                },
+                "@SelectRequired": {
+                    rule: function (e) {
+                        return 0 !== e.find("option:selected").index()
+                    }, message: "Please choose an option!"
+                }
+            }
+        }
+    }, t.prototype.initialize = function () {
+        this._core.$element.trigger("mfValidator.initialize"), this.create(), this.watch(), this._core.$element.trigger("mfValidator.initialized")
+    }, t.prototype.create = function () {
+        var t = this;
+        this._core.$element.find(this._core.options.validator.applyTo).each(function () {
+            e(this).parent().append(e("<span/>", {"class": t._core.options.validator["class"]}))
+        })
+    }, t.prototype.watch = function () {
+        var t = this;
+        this._core.$element.find(this._core.options.validator.applyTo).on("keyup", function () {
+            (e(this).is("input") || e(this).is("textarea")) && e(this).parent().find(".mfValidation").hasClass("error") && e(this).parent().trigger("mfValidator.validate", {options: t._core.options.validator})
+        }).on("blur", function () {
+            (e(this).is("input") || e(this).is("textarea")) && e(this).parent().trigger("mfValidator.validate", {options: t._core.options.validator})
+        }).on("change", function () {
+            e(this).is("select") && e(this).parent().trigger("mfValidator.validate", {options: t._core.options.validator})
+        }).parent().on(this._handlers).find("." + this._core.options.validator["class"]).on("click", function () {
+            e(this).removeClass("error").removeClass("show").addClass("hide").parent().trigger("mfValidator.click").find(t._core.options.validator.applyTo).focus()
+        }), this._core.$element.on("submit", e.proxy(function (i) {
+            return this._core.$element.find(this._core.options.validator.applyTo).each(function () {
+                e(this).parent().trigger("mfValidator.validate", {options: t._core.options.validator})
+            }), this._core.$element.find(".error").length ? (i.preventDefault(), !1) : void 0
+        }, this)).on("mf.reset", e.proxy(function () {
+            this._core.$element.find(this._core.options.validator.applyTo).each(function () {
+                e(this).parent().trigger("mfValidator.reset", {options: t._core.options.validator})
+            })
+        }, this))
+    }, t.prototype.validate = function (t, i) {
+        var o, s = [], n = [], a = e(this), r = a.find(i.options.applyTo), l = r.data("constraints").match(/\@\w+/g), c = r.val();
+        for (var d in l)if (i.options.constraints[l[d]]) {
+            switch (typeof i.options.constraints[l[d]].rule) {
+                case"function":
+                    i.options.constraints[l[d]].rule(r) ? a.find(".mfValidation") && a.find(".mfValidation").attr("data-index") === d && (o = !0, a.find(".mfValidation").attr("data-index", -1)) : (s.push(i.options.constraints[l[d]].message), n.push(d), o = !0);
+                    break;
+                default:
+                    new RegExp(i.options.constraints[l[d]].rule).test(c) ? a.find(".mfValidation").attr("data-index") && a.find(".mfValidation").attr("data-index") == d && (o = !0, a.find(".mfValidation").attr("data-index", -1)) : (s.push(i.options.constraints[l[d]].message), n.push(d), o = !0)
+            }
+            if (o)break
+        }
+        s.length ? e(this).trigger("mfValidator.error", {
+            options: i.options,
+            errors: s,
+            indexes: n
+        }) : e(this).trigger("mfValidator.valid", {options: i.options})
+    }, t.prototype.error = function (t, i) {
+        e(this).find("." + i.options["class"]).removeClass("valid").removeClass("hide").addClass("show").addClass("error").attr("data-index", i.indexes[0]).text(i.errors)
+    }, t.prototype.valid = function (t, i) {
+        var o = e(this).find("." + i.options["class"]);
+        o.hasClass("error") && o.removeClass("error").addClass("hide"), o.find("." + i.options["class"]).removeClass("show").addClass("valid").text(i.errors)
+    }, t.prototype.reset = function (t, i) {
+        var o = e(this).find("." + i.options["class"]);
+        o.hasClass("error") && o.removeClass("error").addClass("hide"), e(this).find("." + i.options["class"]).removeClass("show")
+    }
+}(window.jQuery, window, document), function (e) {
+    var t = e.fn.rdMailForm.Constructor.Plugins.Input = function (i) {
+        this._core = i, this._handlers = {
+            "mfInput.focus": this.focus,
+            "mfInput.blur": this.blur,
+            "mfInput.type": this.type,
+            "mfInput.delete": this["delete"],
+            "mfInput.fill": this.fill,
+            "mfInput.empty": this.empty,
+            "mfInput.idle": this.idle,
+            "mfInput.reset": this.reset,
+            click: function (e) {
+                return e.preventDefault(), !1
+            }
+        }, this._core.options = e.extend(!0, {}, t.Defaults, this._core.options), this.initialize()
+    };
+    t.Defaults = {
+        input: {
+            applyto: 'input[type="text"], input[type="date"], textarea',
+            "class": "mfInput"
+        }
+    }, t.prototype.initialize = function () {
+        this._core.$element.trigger("mfInput.initialize"), this.create(), this.watch(), this._core.$element.trigger("mfInput.initialized")
+    }, t.prototype.create = function () {
+        this._core.$element.find(this._core.options.input.applyto).parent().addClass(this._core.options.input["class"])
+    }, t.prototype.watch = function () {
+        this._core.$element.find(this._core.options.input.applyto).on("focus", function () {
+            e(this).parent().trigger("mfInput.focus")
+        }).on("blur", function () {
+            e(this).parent().trigger("mfInput.blur"), "" === e(this).val() && e(this).parent().trigger("mfInput.void")
+        }).on("keydown", this, function (t) {
+            t.data.ignore(t) || ((8 === t.keyCode || 46 === t.keyCode) && e(this).parent().trigger("mfInput.delete"), (32 === t.keyCode || t.keyCode > 46) && e(this).parent().trigger("mfInput.type"))
+        }).on("keyup", this, function (t) {
+            var i = e(this);
+            t.data.ignore(t) || ("" === i.val() && i.parent().trigger("mfInput.empty"), 8 === t.keyCode || 46 === t.keyCode ? (self.timer && clearTimeout(self.timer), self.timer = setTimeout(function () {
+                i.parent().trigger("mfInput.idle")
+            }, 1e3)) : (i.parent().trigger("mfInput.fill"), i.parent().trigger("mfInput.type"), self.timer && clearTimeout(self.timer), self.timer = setTimeout(function () {
+                i.parent().trigger("mfInput.idle")
+            }, 1e3)))
+        }).on("keypress", this, function (t) {
+            if (!t.data.ignore(t.keyCode)) {
+                var i = e(this);
+                self.timer && clearTimeout(self.timer), self.timer = setTimeout(function () {
+                    i.parent().trigger("mfInput.idle")
+                }, 1e3)
+            }
+        }).parent().on(this._handlers), this._core.$element.on("mf.reset", this, function (t) {
+            e(this).find("." + t.data._core.options.input["class"]).each(function () {
+                e(this).trigger("mfInput.reset")
+            })
+        })
+    }, t.prototype.focus = function () {
+        e(this).addClass("focused")
+    }, t.prototype.blur = function () {
+        e(this).removeClass("focused")
+    }, t.prototype.type = function () {
+        e(this).removeClass("deleting"), e(this).addClass("typing")
+    }, t.prototype["delete"] = function () {
+        e(this).removeClass("typing"), e(this).addClass("deleting")
+    }, t.prototype.fill = function () {
+        e(this).addClass("filled")
+    }, t.prototype.empty = function () {
+        e(this).removeClass("filled")
+    }, t.prototype.idle = function () {
+        e(this).removeClass("typing"), e(this).removeClass("deleting")
+    }, t.prototype.reset = function () {
+        e(this).removeClass("focused"), e(this).removeClass("deleting"), e(this).removeClass("filled"), e(this).removeClass("typing"), e(this).removeClass("error")
+    }, t.prototype.ignore = function (e) {
+        return 144 === e.keyCode || 20 === e.keyCode || 17 === e.keyCode || 37 === e.keyCode || 38 === e.keyCode || 39 === e.keyCode || 40 === e.keyCode || 112 === e.keyCode || 113 === e.keyCode || 114 === e.keyCode || 115 === e.keyCode || 116 === e.keyCode || 117 === e.keyCode || 118 === e.keyCode || 119 === e.keyCode || 120 === e.keyCode || 121 === e.keyCode || 122 === e.keyCode || 123 === e.keyCode || 9 === e.keyCode || e.ctrlKey ? !0 : !1
+    }
+}(window.jQuery, window, document), function (e) {
+    var t = e.fn.rdMailForm.Constructor.Plugins.Select = function (i) {
+        this._core = i, this._handlers = {
+            "mfSelect.close": this.close,
+            "mfSelect.open": this.open,
+            "mfSelect.select": this.select,
+            click: function (e) {
+                e.preventDefault(), e.stopPropagation()
+            }
+        }, this._core.options = e.extend(!0, {}, t.Defaults, this._core.options), this.initialize()
+    };
+    t.Defaults = {select: {applyTo: "select", "class": "mfSelect"}}, t.prototype.initialize = function () {
+        this._core.$element.trigger("mfSelect.initialize"), this.create(), this.watch(), this._core.$element.trigger("mfSelect.initialized")
+    }, t.prototype.create = function () {
+        this._core.$element.find(this._core.options.select.applyTo).each(function () {
+            var t = e(this);
+            t.css({
+                position: "absolute",
+                left: "50%",
+                width: "0",
+                height: "0",
+                overflow: "hidden",
+                opacity: "0"
+            }).parent().append(e("<div/>", {
+                "class": "value",
+                text: t.find("option:selected").text()
+            })).append(e("<ul/>", {"class": "dropdown"})).end().find("option").each(function (t) {
+                if (0 != t) {
+                    var i = e(this);
+                    i.parent().parent().find(".dropdown").append(e("<li/>", {
+                        "class": "option",
+                        text: i.text()
+                    }).addClass(i.is(":selected") ? "selected" : ""))
+                }
+            })
+        }).parent().addClass(this._core.options.select["class"])
+    }, t.prototype.watch = function () {
+        var t = this;
+        this._core.$element.find(t._core.options.select.applyTo).on("focus", this.focus).on("blur", function () {
+            e(this).parent().trigger("mfSelect.close").removeClass("focus")
+        }).on("keydown", function (t) {
+            38 == t.keyCode && e(this).val(e(this).find("option").eq(e(this).find("option:selected").index() > 0 ? e(this).find("option:selected").index() - 1 : 0).text()).trigger("change"), 40 == t.keyCode && e(this).val(e(this).find("option").eq(e(this).find("option:selected").index() < e(this).find("option").length - 1 ? e(this).find("option:selected").index() + 1 : e(this).find("option").length - 1).text()).trigger("change"), 13 == t.keyCode && e(this).parent().trigger(e(this).parent().hasClass("show") ? "mfSelect.close" : "mfSelect.open"), (32 == t.keyCode || 37 == t.keyCode || 38 == t.keyCode || 39 == t.keyCode || 40 == t.keyCode || 13 == t.keyCode) && t.preventDefault()
+        }).on("change", function () {
+            e(this).parent().trigger("mfSelect.open").find(".value").text(e(this).val());
+            var t = e(this).find("option:selected").index(), i = e(this).parent().find(".option").removeClass("selected");
+            t > 0 && i.eq(t - 1).addClass("selected")
+        }).parent().on(this._handlers).find(".value").on("click", function () {
+            var i = e(this), o = i.parent().find("select"), s = o.find("option").eq(0).text();
+            if (i.text(s), o.trigger("focus").off("focus", t.focus), !e(this).parent().hasClass("show")) {
+                o.on("focus", t.focus);
+                var n = e(this).parent().find(".option.selected");
+                n.length && i.text(n.text())
+            }
+        }).parent().find(".option").on("click", function () {
+            e(this).parent().find(".option").removeClass("selected"), e(this).addClass("selected"), e(this).parent().parent().find("select").focus().on("focus", t.focus), e(this).parent().parent().trigger("mfSelect.select", {
+                options: t._core.options.select,
+                value: e(this).text()
+            })
+        }).parents("body").on("click", function (i) {
+            var o = t._core.$element.find("." + t._core.options.select["class"]);
+            o.length && (o.is(i.target) || 0 !== o.has(i.target).length || o.find("select").each(function () {
+                var t = e(this).parent().find(".option.selected");
+                t.length && e(this).parent().find(".value").text(t.text())
+            }).on("focus", t.focus))
+        }), this._core.$element.on("mf.reset", function () {
+            e(this).find(t._core.options.select.applyTo).each(function () {
+                e(this).parent().find(".value").text(e(this).prop("selectedIndex", 0).val()), e(this).parent().find(".option").removeClass("selected")
+            })
+        })
+    }, t.prototype.focus = function () {
+        e(this).parent().trigger("mfSelect.open").addClass("focus")
+    }, t.prototype.close = function () {
+        navigator.userAgent.match(/(iPod|iPhone|iPad)/) || e(this).hasClass("show") && e(this).removeClass("show")
+    }, t.prototype.open = function () {
+        navigator.userAgent.match(/(iPod|iPhone|iPad)/) || e(this).hasClass("show") || e(this).addClass("show")
+    }, t.prototype.select = function (t, i) {
+        e(this).find(i.options.applyTo).val(i.value).trigger("change"), e(this).trigger("mfSelect.close")
+    }
+}(window.jQuery, window, document), function (e) {
+    var t = e.fn.rdMailForm.Constructor.Plugins.DatePicker = function (i) {
+        this._core = i, this._handlers = {
+            "mfDatePicker.close": this.close,
+            "mfDatePicker.open": this.open,
+            "mfDatePicker.next": this.next,
+            "mfDatePicker.prev": this.prev,
+            "mfDatePicker.update": this.update,
+            "mfDatePicker.refresh": this.refresh,
+            "mfDatePicker.pick": this.pick
+        }, this._core.options = e.extend(!0, {}, t.Defaults, this._core.options), this.initialize()
+    };
+    t.Defaults = {
+        datepicker: {
+            applyTo: 'input[type="date"]',
+            "class": "mfDatePicker",
+            days: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+            months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+            format: "MM-DD-YYYY",
+            prevMonth: "",
+            nextMonth: ""
+        }
+    }, t.prototype.initialize = function () {
+        this._core.$element.trigger("mfDatePicker.initialize"), this.create(), this.watch(), this._core.$element.trigger("mfDatePicker.initialized")
+    }, t.prototype.create = function () {
+        var t = this;
+        t._core.$element.find(t._core.options.datepicker.applyTo).each(function () {
+            e(this).attr({
+                type: navigator.userAgent.match(/(iPod|iPhone|iPad)/) ? "date" : "text",
+                "data-type": "date"
+            }).after(e("<div/>", {"class": t._core.options.datepicker["class"]}).data("date", new Date))
+        }).parent().find("." + t._core.options.datepicker["class"]).each(function () {
+            e.proxy(t.update, this, {}, t._core.options.datepicker).call(), e.proxy(t.refresh, this, {}, t._core.options.datepicker).call()
+        })
+    }, t.prototype.watch = function () {
+        var t = this;
+        t._core.$element.find("." + t._core.options.datepicker["class"]).on("click", "." + t._core.options.datepicker["class"] + "_next", function () {
+            var i = e(this).parents("." + t._core.options.datepicker["class"]);
+            i.trigger("mfDatePicker.next"), i.trigger("mfDatePicker.update", t._core.options.datepicker), i.trigger("mfDatePicker.refresh", t._core.options.datepicker)
+        }).on("click", "." + t._core.options.datepicker["class"] + "_prev", function () {
+            var i = e(this).parents("." + t._core.options.datepicker["class"]);
+            i.trigger("mfDatePicker.prev"), i.trigger("mfDatePicker.update", t._core.options.datepicker), i.trigger("mfDatePicker.refresh", t._core.options.datepicker)
+        }).on("click", ".dp-day", function () {
+            var i = e(this).parents("." + t._core.options.datepicker["class"]);
+            i.trigger("mfDatePicker.pick", {
+                opt: t._core.options.datepicker,
+                day: e(this)
+            }), i.parent().find("input").on("blur", t.blur).trigger("blur").trigger("keyup")
+        }).on("click", function () {
+        }).on(this._handlers).parent().on("click", function (e) {
+            return e.preventDefault(), !1
+        }).find("input").on("focus", function () {
+            e(this).parent().find("." + t._core.options.datepicker["class"]).trigger("mfDatePicker.open")
+        }).on("blur", this.blur).on("keydown", function (i) {
+            (9 == i.keyCode || i.shiftKey && 9 == i.keyCode) && e(this).on("blur", t.blur)
+        }).parents("body").on("mousedown", function (e) {
+            var i = t._core.$element.find("." + t._core.options.datepicker["class"]).parent();
+            i.length && (i.is(e.target) || 0 !== i.has(e.target).length ? i.find("input").off("blur", t.blur) : i.find("input").on("blur", t.blur).trigger("blur"))
+        }), t._core.$element.on("mf.reset", function () {
+            e(this).find("." + t._core.options.datepicker["class"]).each(function () {
+                e(this).trigger("mfDatePicker.close")
+            })
+        })
+    }, t.prototype.blur = function () {
+        e(this).parent().find(".mfDatePicker").trigger("mfDatePicker.close")
+    }, t.prototype.close = function () {
+        navigator.userAgent.match(/(iPod|iPhone|iPad)/) || e(this).hasClass("open") && e(this).removeClass("open")
+    }, t.prototype.open = function () {
+        navigator.userAgent.match(/(iPod|iPhone|iPad)/) || e(this).hasClass("open") || e(this).addClass("open")
+    }, t.prototype.next = function () {
+        var t = e(this), i = t.data("date");
+        i = 11 == i.getMonth() ? new Date(i.getFullYear() + 1, 0, 1) : new Date(i.getFullYear(), i.getMonth() + 1, 1), t.data("date", i)
+    }, t.prototype.prev = function () {
+        var t = e(this), i = t.data("date");
+        i = 0 == i.getMonth() ? new Date(i.getFullYear() - 1, 11, 1) : new Date(i.getFullYear(), i.getMonth() - 1, 1), t.data("date", i)
+    }, t.prototype.pick = function (t, i) {
+        var o = e(this);
+        o.data("pickedDate", i.day.addClass("dp-selected").data("date")), o.find(".dp-day").not(i.day).removeClass("dp-selected"), o.parent().find("input").val((o.data("pickedDate").getMonth() + 1 < 10 ? "0" + (o.data("pickedDate").getMonth() + 1) : o.data("pickedDate").getMonth() + 1) + "/" + (o.data("pickedDate").getDate() < 10 ? "0" + o.data("pickedDate").getDate() : o.data("pickedDate").getDate()) + "/" + o.data("pickedDate").getFullYear())
+    }, t.prototype.update = function (t, i) {
+        var o = e(this), s = e("<div/>", {"class": i["class"] + "_panel"});
+        s.append(e("<a/>", {
+            "class": i["class"] + "_prev",
+            text: i.prevMonth
+        })), s.append(e("<a/>", {
+            "class": i["class"] + "_next",
+            text: i.nextMonth
+        })), s.append(e("<div/>", {
+            "class": i["class"] + "_title",
+            text: i.months[o.data("date").getMonth()] + " " + o.data("date").getFullYear()
+        }));
+        var n = o.find("." + i["class"] + "_panel");
+        n.length ? n.replaceWith(s) : s.appendTo(o)
+    }, t.prototype.refresh = function (t, i) {
+        for (var o = e(this), s = e("<table/>"), n = e("<tr/>"), a = 0; a < i.days.length; a++)n.append(e("<th/>", {
+            "class": "dp-weekday",
+            text: i.days[a]
+        }));
+        s.append(n);
+        for (var r = o.data("date"), l = o.data("pickedDate"), c = new Date(r.getFullYear(), r.getMonth() + 1, 0).getDate(), d = new Date(r.getFullYear(), r.getMonth(), 0).getDate(), p = new Date(r.getFullYear(), r.getMonth(), 1).getDay(), f = 1, a = 0; 7 > a; a++) {
+            n = e("<tr/>");
+            for (var h = 0; 7 > h; h++) {
+                var u, m = 7 * a + h + 1, g = e("<td/>", {"class": "dp-day"}), y = new Date;
+                if (y.setHours(0), y.setMinutes(0), y.setSeconds(0), y.setMilliseconds(0), 0 == h && m > c + p)break;
+                1 > m - p ? (g.text(d + (m - p)).addClass("dp-offset"), u = new Date(r.getFullYear(), r.getMonth() - 1, d + (m - p))) : c + p >= m ? (g.text(m - p), u = new Date(r.getFullYear(), r.getMonth(), m - p)) : (g.text(f).addClass("dp-offset"), u = new Date(r.getFullYear(), r.getMonth() + 1, f++)), u.valueOf() == y.valueOf() && g.addClass("dp-today"), l && u.valueOf() == l.valueOf() && g.addClass("dp-selected"), n.append(g.data("date", u))
+            }
+            "" != n.html() && s.append(n)
+        }
+        var v = o.find("table");
+        v.length ? v.replaceWith(s) : s.appendTo(o)
+    }
+}(window.jQuery, window, document), function (e) {
+    var t = e.fn.rdMailForm.Constructor.Plugins.Icon = function (i) {
+        this._core = i, this._core.options = e.extend(!0, {}, t.Defaults, this._core.options), this.initialize()
+    };
+    this._handlers = {"mfIcon.change": this.change}, t.Defaults = {
+        icon: {
+            applyTo: "[data-add-icon]",
+            "class": "mfIcon",
+            states: {
+                ".mfInput": {
+                    "mfIcon.default": ["mfInput.blur", "mfInput.idle", "mfInput.reset"],
+                    "mfIcon.state-1": ["mfInput.type"],
+                    "mfIcon.state-2": ["mfInput.delete"]
+                }
+            }
+        }
+    }, t.prototype.initialize = function () {
+        this._core.$element.trigger("mfIcon.initialize"), this.create(), this.watch(), this._core.$element.trigger("mfIcon.initialized")
+    }, t.prototype.create = function () {
+        var t = this;
+        t._core.$element.find(t._core.options.icon.applyTo).each(function () {
+            var i = e(this);
+            i.append(e("<span/>", {"class": t._core.options.icon["class"]}).append(e("<span/>")))
+        })
+    }, t.prototype.watch = function () {
+        var t = this;
+        t._core.$element.find("." + t._core.options.icon["class"]).on(t._handlers);
+        for (var i in t._core.options.icon.states) {
+            var o = t._core.$element.find(i);
+            for (var s in t._core.options.icon.states[i])for (var n in t._core.options.icon.states[i][s])o.on(t._core.options.icon.states[i][s][n], {state: s}, function (i) {
+                e(this).find("." + t._core.options.icon["class"]).attr("class", i.data.state.replace(".", " "))
+            })
+        }
+    }
+}(window.jQuery, window, document), function (e) {
+    var t = e.fn.rdMailForm.Constructor.Plugins.Placeholder = function (i) {
+        this._core = i, this._core.options = e.extend(!0, {}, t.Defaults, this._core.options), this.initialize()
+    };
+    this._handlers = {"mfIcon.change": this.change}, t.Defaults = {
+        placeholder: {
+            applyTo: "[data-add-placeholder]",
+            "class": "mfPlaceHolder",
+            states: {
+                ".mfInput": {
+                    "mfPlaceHolder.default": ["mfInput.void", "mfInput.reset"],
+                    "mfPlaceHolder.state-1": ["mfInput.fill", "mfInput.focus"]
+                }
+            }
+        }
+    }, t.prototype.initialize = function () {
+        this._core.$element.trigger("mfPlaceHolder.initialize"), this.create(), this.watch(), this._core.$element.trigger("mfPlaceHolder.initialized")
+    }, t.prototype.create = function () {
+        var t = this;
+        t._core.$element.find(t._core.options.placeholder.applyTo).each(function () {
+            var i = e(this);
+            i.append(e("<span/>", {
+                "class": t._core.options.placeholder["class"],
+                text: i.find("[placeholder]").attr("placeholder") ? i.find("[placeholder]").attr("placeholder") : i.find("[data-placeholder]").attr("data-placeholder")
+            })).find("[placeholder]").removeAttr("placeholder").removeAttr("data-placeholder")
+        })
+    }, t.prototype.watch = function () {
+        var t = this;
+        t._core.$element.find("." + t._core.options.placeholder["class"]).on("click", function () {
+            e(this).parent().find("input, textarea").trigger("focus")
+        }).on(t._handlers);
+        for (var i in t._core.options.icon.states) {
+            var o = t._core.$element.find(i);
+            for (var s in t._core.options.placeholder.states[i])for (var n in t._core.options.placeholder.states[i][s])o.on(t._core.options.placeholder.states[i][s][n], {state: s}, function (i) {
+                e(this).find("." + t._core.options.placeholder["class"]).attr("class", i.data.state.replace(".", " "))
+            })
+        }
+    }
+}(window.jQuery, window, document), function (e) {
+    var t = e.fn.rdMailForm.Constructor.Plugins.Progress = function (i) {
+        this._core = i, this._core.options = e.extend(!0, {}, t.Defaults, this._core.options), this.initialize()
+    };
+    t.Defaults = {progress: {applyTo: ".mfInfo", "class": "mfProgress"}}, t.prototype.initialize = function () {
+        this._core.$element.trigger("mfProgress.initialize"), this.create(), this.watch(), this._core.$element.trigger("mfProgress.initialized")
+    }, t.prototype.create = function () {
+        var t = this;
+        t._core.$element.find(t._core.options.progress.applyTo).each(function () {
+            var i = e(this);
+            i.addClass(t._core.options.progress["class"]).wrapInner(e("<span/>", {"class": "cnt"})).append(e("<span/>", {"class": "loader"})).append(e("<span/>", {"class": "msg"}))
+        })
+    }, t.prototype.watch = function () {
+        var t = this;
+        t._core.$element.on("mf.process", function () {
+            e(this).find("." + t._core.options.progress["class"]).removeClass("hide").addClass("sending").find(".msg").text("Loading...")
+        }).on("mf.fail", function (i, o) {
+            e(this).find("." + t._core.options.progress["class"]).removeClass("sending").addClass("fail").find(".msg").text(o.message), setTimeout(e.proxy(function () {
+                e(this).find("." + t._core.options.progress["class"]).removeClass("fail").addClass("hide").find(".msg")
+            }, this), 3e3)
+        }).on("mf.success", function (i, o) {
+            e(this).find("." + t._core.options.progress["class"]).removeClass("sending").addClass("success").find(".msg").text(o.message), setTimeout(e.proxy(function () {
+                e(this).find("." + t._core.options.progress["class"]).removeClass("success").addClass("hide").find(".msg")
+            }, this), 1500)
+        }).on("mf.reset", function () {
+            e(this).find("." + t._core.options.progress["class"]).removeClass("sending").removeClass("fail").removeClass("success").find(".msg")
+        })
+    }
+}(window.jQuery, window, document);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-iota-site/blob/9b5251fe/js/jquery.rd-navbar.min.js
----------------------------------------------------------------------
diff --git a/js/jquery.rd-navbar.min.js b/js/jquery.rd-navbar.min.js
new file mode 100644
index 0000000..08821e5
--- /dev/null
+++ b/js/jquery.rd-navbar.min.js
@@ -0,0 +1,25 @@
+/**
+ * @module       RD Navbar
+ * @author       Evgeniy Gusarov
+ * @see          https://ua.linkedin.com/pub/evgeniy-gusarov/8a/a40/54a
+ * @version      2.1.0
+ */
+(function(){var f;f="ontouchstart"in window;(function(c,n,m){var l;l=function(){function d(a,b){this.options=c.extend(!1,{},this.Defaults,b);this.$element=c(a);this.$clone=null;this.$win=c(m);this.$doc=c(n);this.currentLayout=this.options.layout;this.loaded=!1;this.focusOnHover=this.options.focusOnHover;this.isStuck=this.cloneTimer=this.focusTimer=!1;this.initialize()}d.prototype.Defaults={layout:"rd-navbar-static",deviceLayout:"rd-navbar-fixed",focusOnHover:!0,focusOnHoverTimeout:800,linkedElements:["html"],
+    domAppend:!0,stickUp:!0,stickUpClone:!0,stickUpOffset:"100%",anchorNavSpeed:400,anchorNavOffset:0,anchorNavEasing:"swing",responsive:{0:{layout:"rd-navbar-fixed",focusOnHover:!1,stickUp:!1},992:{layout:"rd-navbar-static",focusOnHover:!0,stickUp:!0}},callbacks:{onToggleSwitch:!1,onToggleClose:!1,onDomAppend:!1,onDropdownOver:!1,onDropdownOut:!1,onDropdownToggle:!1,onDropdownClose:!1,onStuck:!1,onUnstuck:!1,onAnchorChange:!1}};d.prototype.initialize=function(){this.$element.addClass("rd-navbar").addClass(this.options.layout);
+    f&&this.$element.addClass("rd-navbar--is-touch");this.options.domAppend&&this.createNav(this);this.options.stickUpClone&&this.createClone(this);this.applyHandlers(this);this.offset=this.$element.offset().top;this.height=this.$element.outerHeight();this.loaded=!0;return this};d.prototype.resize=function(a,b){var e,h;h=f?a.getOption("deviceLayout"):a.getOption("layout");e=a.$element.add(a.$clone);h===a.currentLayout&&a.loaded||(a.switchClass(e,a.currentLayout,h),null!=a.options.linkedElements&&c.grep(a.options.linkedElements,
+    function(b,c){return a.switchClass(b,a.currentLayout+"-linked",h+"-linked")}),a.currentLayout=h);a.focusOnHover=a.getOption("focusOnHover");return a};d.prototype.stickUp=function(a,b){var e,h,d,g;h=a.getOption("stickUp");e=a.$doc.scrollTop();g=null!=a.$clone?a.$clone:a.$element;d=a.getOption("stickUpOffset");d="string"===typeof d?0<d.indexOf("%")?parseFloat(d)*a.height/100:parseFloat(d):d;if(h){if(e>=d&&!a.isStuck||e<d&&a.isStuck)if(a.$element.add(a.$clone).find("[data-rd-navbar-toggle]").each(function(){c.proxy(a.closeToggle,
+        this)(a,!1)}).end().find(".rd-navbar-submenu").removeClass("opened").removeClass("focus"),e>=d&&!a.isStuck)"resize"===b.type?a.switchClass(g,"","rd-navbar--is-stuck"):g.addClass("rd-navbar--is-stuck"),a.isStuck=!0,a.options.callbacks.onStuck&&a.options.callbacks.onStuck.call(a);else{if("resize"===b.type)a.switchClass(g,"rd-navbar--is-stuck","");else g.removeClass("rd-navbar--is-stuck").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",c.proxy(a.resizeWrap,a,b));a.isStuck=!1;a.options.callbacks.onUnstuck&&
+a.options.callbacks.onUnstuck.call(a)}}else a.isStuck&&(a.switchClass(g,"rd-navbar--is-stuck",""),a.isStuck=!1,a.resizeWrap(b));return a};d.prototype.resizeWrap=function(a){var b;if(null==this.$clone&&!this.isStuck)return b=this.$element.parent(),this.height=this.$element.outerHeight(),"resize"===a.type?(b.addClass("rd-navbar--no-transition").css("height",this.height),b[0].offsetHeight,b.removeClass("rd-navbar--no-transition")):b.css("height",this.height)};d.prototype.createNav=function(a){a.$element.find(".rd-navbar-dropdown, .rd-navbar-megamenu").each(function(){var a;
+    a=c(this);return a.hasClass("rd-navbar-megamenu")?a.parent().addClass("rd-navbar--has-megamenu"):a.parent().addClass("rd-navbar--has-dropdown")}).parents("li").addClass("rd-navbar-submenu").append(c("<span/>",{"class":"rd-navbar-submenu-toggle"}));a.options.callbacks.onDomAppend&&a.options.callbacks.onDomAppend.call(this);return a};d.prototype.createClone=function(a){a.$clone=a.$element.clone().insertAfter(a.$element).addClass("rd-navbar--is-clone");return a};d.prototype.closeToggle=function(a,b){var e,
+    d,f;e=c(b.target);d=!1;b.target!==this&&!e.parents("[data-rd-navbar-toggle]").length&&(f=this.getAttribute("data-rd-navbar-toggle"))&&(e=c(this).parents(".rd-navbar").find(f).add(c(this).parents(".rd-navbar")[0]),e.each(function(){if(!d)return d=!0===(b.target===this||c.contains(this,b.target))}),d||(e.add(this).removeClass("active"),a.options.callbacks.onToggleClose&&a.options.callbacks.onToggleClose.call(this,a)));return this};d.prototype.switchToggle=function(a,b){var e;b.preventDefault();if(e=
+        this.getAttribute("data-rd-navbar-toggle"))c("[data-rd-navbar-toggle]").not(this).each(function(){var a;if(a=this.getAttribute("data-rd-navbar-toggle"))return c(this).parents(".rd-navbar").find(a).add(this).add(-1<c.inArray(".rd-navbar",a.split(/\s*,\s*/i))?c(this).parents(".rd-navbar")[0]:!1).removeClass("active")}),c(this).parents(".rd-navbar").find(e).add(this).add(-1<c.inArray(".rd-navbar",e.split(/\s*,\s*/i))?c(this).parents(".rd-navbar")[0]:!1).toggleClass("active"),a.options.callbacks.onToggleSwitch&&
+a.options.callbacks.onToggleSwitch.call(this,a);return this};d.prototype.dropdownOver=function(a,b){var e;a.focusOnHover&&!f&&(e=c(this),clearTimeout(b),e.addClass("focus").siblings().removeClass("opened").each(a.dropdownUnfocus),a.options.callbacks.onDropdownOver&&a.options.callbacks.onDropdownOver.call(this,a));return this};d.prototype.dropdownOut=function(a,b){var e;a.focusOnHover&&!f&&(e=c(this),e.one("mouseenter.navbar",function(){return clearTimeout(b)}),clearTimeout(b),b=setTimeout(c.proxy(a.dropdownUnfocus,
+    this,a),a.options.focusOnHoverTimeout),a.options.callbacks.onDropdownOut&&a.options.callbacks.onDropdownOut.call(this,a));return this};d.prototype.dropdownUnfocus=function(a){c(this).find("li.focus").add(this).removeClass("focus");return this};d.prototype.dropdownClose=function(a,b){var e;b.target===this||c(b.target).parents(".rd-navbar-submenu").length||(e=c(this),e.find("li.focus").add(this).removeClass("focus").removeClass("opened"),a.options.callbacks.onDropdownClose&&a.options.callbacks.onDropdownClose.call(this,
+    a));return this};d.prototype.dropdownToggle=function(a){c(this).toggleClass("opened").siblings().removeClass("opened");a.options.callbacks.onDropdownToggle&&a.options.callbacks.onDropdownToggle.call(this,a);return this};d.prototype.goToAnchor=function(a,b){var e,d;d=this.hash;e=c(d);e.length&&(b.preventDefault(),c("html, body").stop().animate({scrollTop:e.offset().top+a.getOption("anchorNavOffset")+1},a.getOption("anchorNavSpeed"),a.getOption("anchorNavEasing"),function(){return a.changeAnchor(d)}));
+    return this};d.prototype.activateAnchor=function(a){var b,e,d,f,g,k;k=this.$doc.scrollTop();g=this.$win.height();b=this.$doc.height();a=this.getOption("anchorNavOffset");if(k+g>b-50)return b=c('[data-type="anchor"]').last(),b.length&&b.offset().top>=k&&(f="#"+b.attr("id"),e=c('.rd-navbar-nav a[href^="'+f+'"]').parent(),e.hasClass("active")||(e.addClass("active").siblings().removeClass("active"),this.options.callbacks.onAnchorChange&&this.options.callbacks.onAnchorChange.call(b[0],this))),b;g=c('.rd-navbar-nav a[href^="#"]').get();
+    for(e in g)b=g[e],d=c(b),f=d.attr("href"),b=c(f),b.length&&b.offset().top+a<=k&&b.offset().top+b.outerHeight()>k&&(d.parent().addClass("active").siblings().removeClass("active"),this.options.callbacks.onAnchorChange&&this.options.callbacks.onAnchorChange.call(b[0],this));return null};d.prototype.getAnchor=function(){return history&&history.state?history.state.id:null};d.prototype.changeAnchor=function(a){history&&(history.state?history.state.id!==a?history.replaceState({anchorId:a},null,a):history.pushState({anchorId:a},
+    null,a):history.pushState({anchorId:a},null,a));return this};d.prototype.applyHandlers=function(a){null!=a.options.responsive&&a.$win.on("resize.navbar",c.proxy(a.resize,a.$win[0],a)).on("resize.navbar",c.proxy(a.resizeWrap,a)).on("resize.navbar",c.proxy(a.stickUp,null!=a.$clone?a.$clone:a.$element,a)).on("orientationchange.navbar",c.proxy(a.resize,a.$win[0],a)).trigger("resize.navbar");a.$doc.on("scroll.navbar",c.proxy(a.stickUp,null!=a.$clone?a.$clone:a.$element,a)).on("scroll.navbar",c.proxy(a.activateAnchor,
+    a));a.$element.add(a.$clone).find("[data-rd-navbar-toggle]").each(function(){var b;b=c(this);b.on(f?"touchstart":"click",c.proxy(a.switchToggle,this,a));return b.parents("body").on(f?"touchstart":"click",c.proxy(a.closeToggle,this,a))});a.$element.add(a.$clone).find(".rd-navbar-submenu").each(function(){var b,d;b=c(this);d=b.parents(".rd-navbar--is-clone").length?a.cloneTimer:a.focusTimer;b.on("mouseleave.navbar",c.proxy(a.dropdownOut,this,a,d));b.find("> a").on("mouseenter.navbar",c.proxy(a.dropdownOver,
+    this,a,d));b.find("> .rd-navbar-submenu-toggle").on(f?"touchstart":"click",c.proxy(a.dropdownToggle,this,a));return b.parents("body").on(f?"touchstart":"click",c.proxy(a.dropdownClose,this,a))});a.$element.add(a.$clone).find('.rd-navbar-nav a[href^="#"]').each(function(){return c(this).on(f?"touchstart":"click",c.proxy(a.goToAnchor,this,a))});return a};d.prototype.switchClass=function(a,b,d){a=a instanceof jQuery?a:c(a);a.addClass("rd-navbar--no-transition").removeClass(b).addClass(d);a[0].offsetHeight;
+    return a.removeClass("rd-navbar--no-transition")};d.prototype.getOption=function(a){var b,c;for(b in this.options.responsive)b<=this.$win.width()&&(c=b);return null!=this.options.responsive[c][a]?this.options.responsive[c][a]:this.options[a]};return d}();c.fn.extend({RDNavbar:function(d){var a;a=c(this);if(!a.data("RDNavbar"))return a.data("RDNavbar",new l(this,d))}});return m.RDNavbar=l})(window.jQuery,document,window);"undefined"!==typeof module&&null!==module?module.exports=window.RDNavbar:"function"===
+typeof define&&define.amd&&define(["jquery"],function(){return window.RDNavbar})}).call(this);

http://git-wip-us.apache.org/repos/asf/incubator-iota-site/blob/9b5251fe/js/jquery.rd-parallax.min.js
----------------------------------------------------------------------
diff --git a/js/jquery.rd-parallax.min.js b/js/jquery.rd-parallax.min.js
new file mode 100644
index 0000000..b1e9591
--- /dev/null
+++ b/js/jquery.rd-parallax.min.js
@@ -0,0 +1,29 @@
+/**
+ * @module       RD Parallax
+ * @author       Evgeniy Gusarov
+ * @see          https://ua.linkedin.com/pub/evgeniy-gusarov/8a/a40/54a
+ * @version      3.5.0 
+ */  
+(function(){(function(n,l,e){var u,w,x,p,m,h,v,r;h=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);x=/Chrome/.test(navigator.userAgent);r=/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)||/Safari/.test(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor);p=h&&/crios/i.test(navigator.userAgent);v=/iPhone|iPad|iPod/i.test(navigator.userAgent)&&!!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/);m=-1!==navigator.appVersion.indexOf("MSIE")||
+0<navigator.appVersion.indexOf("Trident/");w=null!=l.body.classList;(function(){var h,m,l,b,a;m=0;a=["ms","moz","webkit","o"];h=0;for(l=a.length;h<l;h++)b=a[h],e.requestAnimationFrame=e[b+"RequestAnimationFrame"],e.cancelAnimationFrame=e[b+"CancelAnimationFrame"]||e[b+"CancelRequestAnimationFrame"];e.requestAnimationFrame||(e.requestAnimationFrame=function(a,c){var d,b,g;d=(new Date).getTime();g=Math.max(0,16-(d-m));b=e.setTimeout(function(){a(d+g)},g);m=d+g;return b});if(!e.cancelAnimationFrame)return e.cancelAnimationFrame=
+function(a){return clearTimeout(a)}});u=function(){function t(b){this.options=n.extend(!0,{},this.Defaults,b);this.scenes=[];this.initialize();this.scrollY=e.scrollY||e.pageYOffset;this.lastScrollY=-1;this.inputFocus=!1}var y,u;y=function(){function b(a,f,c,d,b,g,k){this.amend=r||m||h?60:0;this.element=a;this.aliases=f;this.type=a.getAttribute("data-type")||"html";"html"===this.type&&(this.holder=this.createHolder());this.direction="normal"===a.getAttribute("data-direction")||null==a.getAttribute("data-direction")?
+1:-1;this.fade="true"===a.getAttribute("data-fade");this.blur="true"===a.getAttribute("data-blur");this.boundTo=l.querySelector(a.getAttribute("data-bound-to"));"media"===this.type&&(this.url=a.getAttribute("data-url"));this.responsive=this.getResponsiveOptions();this.element.style.position=!m&&!h||p?"absolute":"fixed";switch(this.type){case "media":null!=this.url&&(this.element.style["background-image"]="url("+this.url+")");break;case "html":m&&h&&(this.element.style["z-index"]=1)}this.refresh(c,
+d,b,g,k)}b.prototype.refresh=function(a,f,c,d,b){this.speed=this.getOption("speed",a)||0;this.offset=this.getOption("offset",a)||0;!m&&!h||p||(this.element.style.position=b?"fixed":"absolute");switch(this.type){case "media":return this.offsetHeight=this.getMediaHeight(f,d,this.speed,this.direction),this.element.style.height=this.offsetHeight+"px";case "html":this.element.style.width=this.holder.offsetWidth+"px";this.offsetHeight=this.element.offsetHeight;this.holder.style.height=this.offsetHeight+
+"px";if(!m&&!h||p)return this.element.style.left=0,this.element.style.top=0;if(b)return this.element.style.left=this.getOffset(this.holder).left+"px",this.element.style.top=this.getOffset(this.holder).top-c+"px",this.holder.style.position="static";this.element.style.left=0;this.element.style.top=0;return this.holder.style.position="relative";case "custom":return this.offsetHeight=this.element.offsetHeight}};b.prototype.createHolder=function(){var a;a=l.createElement("div");w?a.classList.add("rd-parallax-layer-holder"):
+a.className="rd-parallax-layer-holder";this.element.parentNode.insertBefore(a,this.element);a.appendChild(this.element);if(!m&&!h||p)a.style.position="relative";return a};b.prototype.getOption=function(a,f){var c,d;for(c in this.responsive)c<=f&&(d=c);return this.responsive[d][a]};b.prototype.getResponsiveOptions=function(){var a,f,c,d,b,g,k,e,h;e={};k=[];f=[];d=this.aliases;for(c in d)a=d[c],k.push(c),f.push(a);c=d=0;for(b=k.length;d<b;c=++d)for(g=k[c],e[g]={};-1<=(a=c);)!e[g].speed&&(h=this.element.getAttribute("data"+
+f[a]+"speed"))&&(e[g].speed=this.getSpeed(h)),!e[g].offset&&(h=this.element.getAttribute("data"+f[a]+"offset"))&&(e[g].offset=parseInt(h)),c--;return e};b.prototype.fuse=function(a,f){var c,d,b;c=this.getOffset(this.element).top+this.element.getBoundingClientRect().top;d=a+f/2;c+=this.offsetHeight/2;b=f/6;d+b>c&&d-b<c?this.element.style.opacity=1:(d=d-b<c?1+(d+b-c)/f/3*10:1-(d-b-c)/f/3*10,this.element.style.opacity=0>d?0:1<d?1:d.toFixed(2))};b.prototype.move=function(a,f,c,d,b,g,e,q,l){e?(e=!m&&!h||
+"html"===this.type&&l||p?this.speed*this.direction:this.speed*this.direction-1,f=this.offsetHeight,null!=q?g=(d+c-(q+c))/(c-b):"media"!==this.type?d<c||d>g-c?(g=d<c?d/(c-b):(d+c-g)/(c-b),isFinite(g)||(g=0)):g=.5:g=.5,a=p?(b-f)/2+(c-b)*g*e+this.offset:-(d-a)*e+(b-f)/2+(c-b)*g*e+this.offset,(m||h)&&null!=q&&(this.element.style.top=d-q+"px"),v&&l&&(a+=d),r&&(this.element.style["-webkit-transform"]="translate3d(0,"+a+"px,0)"),this.element.style.transform="translate3d(0,"+a+"px,0)"):(r&&(this.element.style["-webkit-transform"]=
+"translate3d(0,0,0)"),this.element.style.transform="translate3d(0,0,0)")};b.prototype.getSpeed=function(a){return Math.min(Math.max(parseFloat(a),0),2)};b.prototype.getMediaHeight=function(a,b,c,d){return b+(-1===d?(b+a)*c:0)+(1>=c?Math.abs(a-b)*c:a*c)+2*this.amend};b.prototype.getOffset=function(a){a=a.getBoundingClientRect();return{top:a.top+(e.scrollY||e.pageYOffset),left:a.left+(e.scrollX||e.pageXOffset)}};return b}();u=function(){function b(a,b,c,d){this.amend=r?60:0;this.element=a;this.aliases=
+b;this.on=!0;this.agent=l.querySelector(a.getAttribute("data-agent"));this.anchor=this.findAnchor();this.canvas=this.createCanvas();this.layers=this.createLayers(c);this.fitTo=this.getFitElement();this.responsive=this.getResponsiveOptions();this.refresh(c,d)}b.prototype.getFitElement=function(){var a;return null!=(a=this.element.getAttribute("data-fit-to"))?"parent"===a?this.element.parentNode:l.querySelector(a):null};b.prototype.findAnchor=function(){var a;for(a=this.element.parentNode;null!=a&&
+a!==l;){if(this.isTransformed.call(a))return a;a=a.parentNode}return null};b.prototype.createCanvas=function(){var a;a=l.createElement("div");w?a.classList.add("rd-parallax-inner"):a.className="rd-parallax-inner";for(this.element.appendChild(a);this.element.firstChild!==a;)a.appendChild(this.element.firstChild);this.element.style.position="relative";this.element.style.overflow="hidden";m||h?(a.style.position="absolute",a.style.clip="rect(0, auto, auto, 0)",a.style.transform=m?"translate3d(0,0,0)":
+"none"):a.style.position="fixed";a.style.left=this.offsetLeft+"px";a.style.top=0;r&&(a.style["margin-top"]="-"+this.amend+"px",a.style.padding=this.amend+"px 0",this.element.style["z-index"]=0);return a};b.prototype.getOption=function(a,b){var c,d;for(c in this.responsive)c<=b&&(d=c);return this.responsive[d][a]};b.prototype.getResponsiveOptions=function(){var a,b,c,d,e,g,k,h,l;h={};k=[];b=[];d=this.aliases;for(c in d)a=d[c],k.push(c),b.push(a);c=d=0;for(e=k.length;d<e;c=++d)for(g=k[c],h[g]={};-1<=
+(a=c);)h[g].on||null==(l=this.element.getAttribute("data"+b[a]+"on"))||(h[g].on="false"!==l),null==h[g].on&&0===a&&(h[g].on=!0),c--;return h};b.prototype.createLayers=function(a,b){var c,d,e,g,k;d=n(this.element).find(".rd-parallax-layer").get();g=[];c=e=0;for(k=d.length;e<k;c=++e)c=d[c],g.push(new y(c,this.aliases,a,b,this.offsetTop,this.offsetHeight,this.on));return g};b.prototype.move=function(a){a=null!=this.anchor?this.positionTop:this.offsetTop-a;r&&(this.canvas.style["-webkit-transform"]="translate3d(0,"+
+a+"px,0)");return this.canvas.style.transform="translate3d(0,"+a+"px,0)"};b.prototype.refresh=function(a,b){var c,d,e,g,k;g=[];this.on=this.getOption("on",a);this.offsetTop=this.getOffset(this.element).top;this.offsetLeft=this.getOffset(this.element).left;this.width=this.element.offsetWidth;this.canvas.style.width=this.width+"px";null!=this.anchor&&(this.positionTop=this.element.offsetTop);null!=this.agent?(this.agentOffset=this.getOffset(this.agent).top,this.agentHeight=this.agent.offsetHeight):
+this.agentOffset=this.agentHeight=null;k=this.layers;c=0;for(e=k.length;c<e;c++)d=k[c],"media"===d.type?g.push(d):d.refresh(a,b,this.offsetTop,this.offsetHeight,this.on);this.offsetHeight=this.canvas.offsetHeight-2*this.amend;this.element.style.height=this.offsetHeight+"px";c=0;for(e=g.length;c<e;c++)d=g[c],d.refresh(a,b,this.offsetTop,this.offsetHeight,this.on)};b.prototype.update=function(a,b,c,d,e){var g,k,l,n,p,r,t;t=this.offsetTop;r=this.offsetHeight;m||h||this.move(a);n=this.layers;p=[];g=0;
+for(l=n.length;g<l;g++)k=n[g],k.move(a,b,c,t,r,d,this.on,this.agentOffset,e),k.fade&&!h?p.push(k.fuse(t,r)):p.push(void 0);return p};b.prototype.isTransformed=function(){var a,b,c;c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};for(a in c)c.hasOwnProperty(a)&&null!=this.style[a]&&(b=e.getComputedStyle(this).getPropertyValue(c[a]));return null!=b&&0<b.length&&"none"!==b?!0:!1};b.prototype.getOffset=function(a){a=
+a.getBoundingClientRect();return{top:a.top+(e.scrollY||e.pageYOffset),left:a.left+(e.scrollX||e.pageYOffset)}};return b}();t.prototype.Defaults={selector:".rd-parallax",screenAliases:{0:"-",480:"-xs-",768:"-sm-",992:"-md-",1200:"-lg-",1920:"-xl-",2560:"-xxl-"}};t.prototype.initialize=function(){var b,a,f,c,d,h,g;b=this;f=l.querySelectorAll(b.options.selector);g=e.innerWidth;h=e.innerHeight;a=c=0;for(d=f.length;c<d;a=++c)a=f[a],b.scenes.push(new u(a,b.options.screenAliases,g,h));n(e).on("resize",n.proxy(b.resize,
+b));if(v)n("input").on("focusin focus",function(a){a.preventDefault();b.activeOffset=n(this).offset().top;return e.scrollTo(e.scrollX||e.pageXOffset,b.activeOffset-this.offsetHeight-100)});n(e).trigger("resize");b.update()};t.prototype.resize=function(){var b,a,f,c;if((b=e.innerWidth)!==this.windowWidth||!h){this.windowWidth=b;this.windowHeight=e.innerHeight;this.documentHeight=l.body.offsetHeight;f=this.scenes;b=0;for(a=f.length;b<a;b++)c=f[b],c.refresh(this.windowWidth,this.windowHeight);return this.update(!0)}};
+t.prototype.update=function(b){var a,f,c,d,m,g,k,q,n,p;f=this;b||requestAnimationFrame(function(){f.update()});q=e.scrollY||e.pageYOffset;v&&null!=(a=l.activeElement)&&(a.tagName.match(/(input)|(select)|(textarea)/i)?(f.activeElement=a,f.inputFocus=!0):(f.activeElement=null,f.inputFocus=!1,b=!0));h&&x&&(a=e.innerHeight-f.windowHeight,f.deltaHeight=a,q-=f.deltaHeight);if((q!==f.lastScrollY||b)&&!f.isActing){f.isActing=!0;p=f.windowWidth;n=f.windowHeight;c=f.documentHeight;a=q-f.lastScrollY;v&&null!=
+f.activeElement&&(f.activeElement.value+=" ",f.activeElement.value=f.activeElement.value.trim());g=f.scenes;d=0;for(m=g.length;d<m;d++)k=g[d],(f.inputFocus||b||q+n>=(k.agentOffset||k.offsetTop)+a&&q<=(k.agentOffset||k.offsetTop)+(k.agentHeight||k.offsetHeight)+a)&&k.update(q,p,n,c,f.inputFocus);f.lastScrollY=q;return f.isActing=!1}};return t}();n.RDParallax=function(e){var h;h=n(l);if(!h.data("RDParallax"))return h.data("RDParallax",new u(e))};return e.RDParallax=u})(window.jQuery,document,window);
+"undefined"!==typeof module&&null!==module?module.exports=window.RDParallax:"function"===typeof define&&define.amd&&define(["jquery"],function(){return window.RDParallax})}).call(this);
+

http://git-wip-us.apache.org/repos/asf/incubator-iota-site/blob/9b5251fe/js/jquery.search.min.js
----------------------------------------------------------------------
diff --git a/js/jquery.search.min.js b/js/jquery.search.min.js
new file mode 100644
index 0000000..22cdc94
--- /dev/null
+++ b/js/jquery.search.min.js
@@ -0,0 +1,36 @@
+/**
+ * RD Search
+ * @version 1.0.0
+ * @author Evgeniy Gusarov (Stmechanus | Diversant)
+ * @license CC3.0 Non-Comercial License
+ */
+!function (t, e, a, n) {
+    var r = function (e, a) {
+        this.$element = t(e), this.options = t.extend({}, r.Defaults, a), this.initialize()
+    };
+    r.Defaults = {handler: "bat/rd-search.php", maxLive: 5}, r.prototype.initialize = function () {
+        function e(t) {
+            n.html(t)
+        }
+
+        var a = this, n = t(".rd-navbar-search-results");
+        if (t(".rd-navbar-search-form-input").find("input").val("").on("keyup input propertychange", function () {
+                var e = t(this).val().trim();
+                "" !== e ? t.get(a.options.handler, {
+                    s: e,
+                    liveSearch: "true",
+                    liveCount: a.options.maxLive,
+                    dataType: "html"
+                }, function (e) {
+                    t(".rd-navbar-live-search-results").html(e).addClass("not-empty")
+                }) : t(".rd-navbar-live-search-results").html("").removeClass("not-empty")
+            }), n.length) {
+            var r = location.search.replace(/^\?.*s=([^&]+)/, "$1");
+            t.get(a.options.handler, {s: decodeURI(r), liveSearch: "false", dataType: "html"}, e)
+        }
+    }, t.fn.RDSearch = function (e) {
+        return this.each(function () {
+            t(this).data("rdsearch") || t(this).data("rdsearch", new r(this, e))
+        })
+    }, t.fn.RDSearch.Constructor = r
+}(window.jQuery, window, document);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-iota-site/blob/9b5251fe/js/jquery.stacktable.min.js
----------------------------------------------------------------------
diff --git a/js/jquery.stacktable.min.js b/js/jquery.stacktable.min.js
new file mode 100644
index 0000000..54df994
--- /dev/null
+++ b/js/jquery.stacktable.min.js
@@ -0,0 +1,13 @@
+/**
+ * @module       Stacktable
+ * @author       John Polacek
+ * @see          http://johnpolacek.github.com/stacktable.js
+ * @license      MIT & GPL license
+ */
+(function(a){a.fn.cardtable=function(b){var c=a.extend({},{id:"stacktable small-only",hideOriginal:!0,headIndex:0},b);headIndex=b&&b.headIndex?b.headIndex:0;return this.each(function(){$table=a(this);if(!$table.hasClass("stacktable")){var k=a(this).prop("class"),d=a("<div></div>");"undefined"!==typeof c.myClass&&d.addClass(c.myClass);var b="";$table.addClass("stacktable large-only");$caption=$table.find("caption").clone();$topRow=$table.find("tr").eq(0);$table.find("tbody tr").each(function(d,h){bodyMarkup=
+headMarkup="";tr_class=a(this).prop("class");a(this).find("td,th").each(function(b,c){""!==a(this).html()&&(bodyMarkup+='<tr class="'+tr_class+'">',bodyMarkup=$topRow.find("td,th").eq(b).html()?bodyMarkup+('<td class="st-key">'+$topRow.find("td,th").eq(b).html()+"</td>"):bodyMarkup+'<td class="st-key"></td>',bodyMarkup+='<td class="st-val '+a(this).prop("class")+'">'+a(this).html()+"</td>",bodyMarkup+="</tr>")});b+='<table class=" '+k+" "+c.id+'"><tbody>'+headMarkup+bodyMarkup+"</tbody></table>"});
+$table.find("tfoot tr td").each(function(d,h){""!==a.trim(a(h).text())&&(b+='<table class="'+k+" "+c.id+'"><tbody><tr><td>'+a(h).html()+"</td></tr></tbody></table>")});d.prepend($caption);d.append(a(b));$table.before(d);c.hideOriginal||$table.show()}})};a.fn.stacktable=function(b){var c=a.extend({},{id:"stacktable small-only",hideOriginal:!0,headIndex:0},b);headIndex=b&&b.headIndex?b.headIndex:0;return this.each(function(){var b=a(this).prop("class"),b=a('<table class="'+b+" "+c.id+'"><tbody></tbody></table>');
+"undefined"!==typeof c.myClass&&b.addClass(c.myClass);var d="";$table=a(this);$table.addClass("stacktable large-only");$caption=$table.find("caption").clone();$topRow=$table.find("tr").eq(0);$table.find("tr").each(function(b,c){bodyMarkup=headMarkup="";tr_class=a(this).prop("class");0===b?d+='<tr class=" '+tr_class+' "><th class="st-head-row st-head-row-main" colspan="2">'+a(this).find("th,td").eq(headIndex).html()+"</th></tr>":(a(this).find("td,th").each(function(b,c){b===headIndex?headMarkup='<tr class="'+
+tr_class+'"><th class="st-head-row" colspan="2">'+a(this).html()+"</th></tr>":""!==a(this).html()&&(bodyMarkup+='<tr class="'+tr_class+'">',bodyMarkup=$topRow.find("td,th").eq(b).html()?bodyMarkup+('<td class="st-key">'+$topRow.find("td,th").eq(b).html()+"</td>"):bodyMarkup+'<td class="st-key"></td>',bodyMarkup+='<td class="st-val '+a(this).prop("class")+'">'+a(this).html()+"</td>",bodyMarkup+="</tr>")}),d+=headMarkup+bodyMarkup)});b.prepend($caption);b.append(a(d));$table.before(b);c.hideOriginal||
+$table.show()})};a.fn.stackcolumns=function(b){var c=a.extend({},{id:"stacktable small-only",hideOriginal:!0},b);return this.each(function(){$table=a(this);var b=$table.find("tr").eq(0).find("td,th").length;if(!(3>b)){var d=a('<table class="'+c.id+'"></table>');"undefined"!==typeof c.myClass&&d.addClass(c.myClass);$table.addClass("stacktable large-only");for(var l=a("<tbody></tbody>"),e=1;e<b;)$table.find("tr").each(function(b,c){var d=a("<tr></tr>");0===b&&d.addClass("st-head-row st-head-row-main");
+first=a(this).find("td,th").eq(0).clone().addClass("st-key");var g=e;if(a(this).find("*[colspan]").length){var f=0;a(this).find("td,th").each(function(b,d){var c=a(this).attr("colspan");c?(c=parseInt(c,10),g-=c-1,f+c>e&&(g+=f+c-e-1),f+=c):f++;if(f>e)return!1})}second=a(this).find("td,th").eq(g).clone().addClass("st-val").removeAttr("colspan");d.append(first,second);l.append(d)}),++e;d.append(a(l));$table.before(d);c.hideOriginal||$table.show()}})}})(jQuery);