<!DOCTYPE html><html><head><style>BODY{color:#202020; font-family:Helvetica, Arial, sans-serif; padding-top:24px; -webkit-text-size-adjust:100%;} H1,H3{margin-top:0px;} A{color:#202020; text-decoration:none; padding-left:2px; padding-right:4px;} A:hover{color:black;} A:active{color:DarkViolet;} .st_visit_td{width:4px;} .st_visit{border-radius:100%; width:4px; height:4px;} A:visited .st_visit, .st_item:hover A:visited .st_visit{background-color:#c0a0e0;} .st_item:hover, .st_item:hover .st_visit{background-color:Lavender;} .st_block{display:block;} .st_icon_box{width:16px; padding-right:4px;} .st_w100{width:100%;} .st_right_2{padding-right:2px;} .st_right_4{padding-right:4px;} .st_right_8{padding-right:8px;} .st_separator{background-color:Lavender; padding-top:4px; border-top:4px solid white; border-bottom:4px solid white;} .st_u{border-bottom:1px solid transparent; border-top:1px solid transparent;} .st_item:hover .st_u{border-bottom:1px solid DarkViolet;} .st_even, .st_even .st_visit{background-color:white;} .st_odd, .st_odd .st_visit{background-color:#f9f9f9;} .st_date{text-align:right; white-space:nowrap; width:148px;} .st_size{text-align:right;} .st_about{color:black; text-align:center; padding-top:16px;} .st_httpstorm{display:inline-block; -webkit-transition:all 0.5s ease-out; transition:all 0.5s ease-out;} .st_storm{display:inline-block; position:relative; top:4px;}</style><meta name="viewport" content="width=576, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" /><meta name="format-detection" content="date=no" /><meta name="format-detection" content="telephone=no" /><script type="text/javascript">if(!window.addEventListener && window.attachEvent) window.addEventListener = function(ev, m){ window.attachEvent("on".concat(ev), m); }; function get_offsetTop(obj){ var ot=0; do{ if(obj.offsetTop) ot += obj.offsetTop; obj = obj.offsetParent; } while (obj && (obj != document.body)); return ot; }; function is_in_view(obj){ return (window.innerHeight + window.scrollY > get_offsetTop(obj)); }; function light(){ if (is_in_view(el_httpstorm)) el_httpstorm.style.color = "DarkViolet"; setTimeout(dark, 500); }; function dark(){ el_httpstorm.style.color = "black"; setTimeout(light, 10000); }; function load_httpstorm_animation(){ window.el_httpstorm = document.getElementById("httpstorm"); setTimeout(light, 2000); }; window.addEventListener("load", load_httpstorm_animation, true);</script><title>download/</title></head><body><h1>download/</h1><table id="files" cellpadding="0" cellspacing="0"><tr class="st_item st_even"><td><a class="st_u st_block" name="links" href="../"><table cellpadding="0" cellspacing="0" class="st_w100"><tr><td class="st_icon_box"><img class="st_block" src="/httpstorm/icon.16/g-folder-h.png" srcset="/httpstorm/icon.32/g-folder-h.png 2x"/></td><td class="st_right_8">..</td><td class="st_visit_td"><div class="st_visit"></div></td></tr></table></a></td><td class="st_u st_right_4 st_size">&nbsp;</td><td class="st_u">&nbsp;</td><td class="st_u st_right_2 st_date" name="dates">2017-04-09 / 15:14</td></tr><tr class="st_item st_odd"><td><a class="st_u st_block" name="links" href="certificate/"><table cellpadding="0" cellspacing="0" class="st_w100"><tr><td class="st_icon_box"><img class="st_block" src="/httpstorm/icon.16/g-folder-h.png" srcset="/httpstorm/icon.32/g-folder-h.png 2x"/></td><td class="st_right_8">certificate</td><td class="st_visit_td"><div class="st_visit"></div></td></tr></table></a></td><td class="st_u st_right_4 st_size">&nbsp;</td><td class="st_u">&nbsp;</td><td class="st_u st_right_2 st_date" name="dates">2015-09-11 / 01:07</td></tr><tr class="st_item st_even"><td><a class="st_u st_block" name="links" href="gns/"><table cellpadding="0" cellspacing="0" class="st_w100"><tr><td class="st_icon_box"><img class="st_block" src="/httpstorm/icon.16/g-folder-h.png" srcset="/httpstorm/icon.32/g-folder-h.png 2x"/></td><td class="st_right_8">gns</td><td class="st_visit_td"><div class="st_visit"></div></td></tr></table></a></td><td class="st_u st_right_4 st_size">&nbsp;</td><td class="st_u">&nbsp;</td><td class="st_u st_right_2 st_date" name="dates">2015-09-11 / 01:07</td></tr><tr class="st_item st_odd"><td><a class="st_u st_block" name="links" href="linux/"><table cellpadding="0" cellspacing="0" class="st_w100"><tr><td class="st_icon_box"><img class="st_block" src="/httpstorm/icon.16/g-folder-h.png" srcset="/httpstorm/icon.32/g-folder-h.png 2x"/></td><td class="st_right_8">linux</td><td class="st_visit_td"><div class="st_visit"></div></td></tr></table></a></td><td class="st_u st_right_4 st_size">&nbsp;</td><td class="st_u">&nbsp;</td><td class="st_u st_right_2 st_date" name="dates">2017-04-09 / 15:14</td></tr><tr class="st_item st_even"><td><a class="st_u st_block" name="links" href="linux.g/"><table cellpadding="0" cellspacing="0" class="st_w100"><tr><td class="st_icon_box"><img class="st_block" src="/httpstorm/icon.16/g-folder-h.png" srcset="/httpstorm/icon.32/g-folder-h.png 2x"/></td><td class="st_right_8">linux.g</td><td class="st_visit_td"><div class="st_visit"></div></td></tr></table></a></td><td class="st_u st_right_4 st_size">&nbsp;</td><td class="st_u">&nbsp;</td><td class="st_u st_right_2 st_date" name="dates">2017-04-09 / 15:14</td></tr><tr class="st_item st_odd"><td><a class="st_u st_block" name="links" href="windows/"><table cellpadding="0" cellspacing="0" class="st_w100"><tr><td class="st_icon_box"><img class="st_block" src="/httpstorm/icon.16/g-folder-h.png" srcset="/httpstorm/icon.32/g-folder-h.png 2x"/></td><td class="st_right_8">windows</td><td class="st_visit_td"><div class="st_visit"></div></td></tr></table></a></td><td class="st_u st_right_4 st_size">&nbsp;</td><td class="st_u">&nbsp;</td><td class="st_u st_right_2 st_date" name="dates">2017-04-09 / 15:14</td></tr><tr class="st_item st_even"><td><a class="st_u st_block" name="links" href="windows.2k3/"><table cellpadding="0" cellspacing="0" class="st_w100"><tr><td class="st_icon_box"><img class="st_block" src="/httpstorm/icon.16/g-folder-h.png" srcset="/httpstorm/icon.32/g-folder-h.png 2x"/></td><td class="st_right_8">windows.2k3</td><td class="st_visit_td"><div class="st_visit"></div></td></tr></table></a></td><td class="st_u st_right_4 st_size">&nbsp;</td><td class="st_u">&nbsp;</td><td class="st_u st_right_2 st_date" name="dates">2015-09-11 / 01:07</td></tr><tr><td class="st_separator" colspan="4"></td></tr><tr><td colspan="4" class="st_about"><h3> 2015 George Valkov " <a href="http://httpstorm.com/" id="httpstorm" class="st_httpstorm">http<span class="st_storm">storm</span></a> web server</h3></td></tr></table><script type="text/javascript">var isMobile = (window.navigator.userAgent.toUpperCase().indexOf("MOBILE") != -1); var isFirefox = (window.navigator.userAgent.toUpperCase().indexOf("FIREFOX") != -1); var isIE = (window.navigator.userAgent.toUpperCase().indexOf("MSIE") != -1); var isEDGE = (window.navigator.userAgent.toUpperCase().indexOf("EDGE") != -1) || ((window.navigator.userAgent.toUpperCase().indexOf("TRIDENT") != -1) && !isIE); var isIE_ver = (function () { if (!isIE) return 0; with (window.navigator) { var a = userAgent.toUpperCase().indexOf("MSIE") + 5; var version = userAgent.substring(a, a + 6); return parseFloat(version.substring(0, version.indexOf(";"))); } })(); var isIE8_or_less = isIE && (isIE_ver <= 8); if (!window.g) window.g = new Object(); if (!g.eh) g.eh = new Object(); if (!g.el) g.el = new Object(); if (!g.ext) g.ext = new Object(); g.ext.audio = ["aif", "aiff", "m4a", "mp3", "mpa", "mpga", "ogg", "wav"]; g.ext.video = ["avi", "m4v", "mov", "mp2", "mp4", "mpeg", "mpg", "ogm", "ogv", "webm"]; g.ext.picture = ["bmp", "gif", "ico", "jpg", "jpeg", "png", "tga", "tif", "tiff"]; g.media = { eh: {} }; g.media.links = { eh: { click: {} }, run: -1, state: { _play: null, _pause: null, _stop: null, _error: null } }; g.media.audio = { eh: {} }; g.media.video = { eh: {} }; g.media.picture = { eh: {}, background: { eh: {} }, loading: { eh: {}, _timer: 0 }, navigator: { eh: {} } }; function get_textContent(obj) { return obj.textContent? obj.textContent: obj.innerText; } function set_textContent(obj, _value) { obj.textContent = obj.innerText = _value; } function copy_obj(dst, src) { for (var name in src) dst[name] = src[name]; } function create_elements(dst, src) { for (var name in src) dst[name] = document.createElement(src[name]); } with (g.media) { with (picture) { with (background) { // initialize picture.background background.init = function () { picture.el_bg = document.createElement("div"); copy_obj(el_bg, { onclick: eh.click, oncontextmenu: eh.click, onmousedown: eh.mousedown, onmousewheel: eh.scroll, _onresize: eh.resize, _visible: false, _timer: 0, _time_last_scroll: new Date() }); copy_obj(el_bg.style, { display: "none", backgroundColor: "rgba(0, 0, 0, 0.5)", position: "fixed", textAlign: "center", lineHeight: "100%", verticalAlign: "middle", top: "0px", left: "0px", width: "100%", height: "100%", userSelect: "none", WebkitUserSelect: "none" }); if (!el_bg.click) el_bg.click = el_bg.onclick; el_bg._onresize(); document.body.appendChild(el_bg); }; } with (navigator) { // initialize picture.navigator navigator.init = function () { create_elements(navigator, { el_frame: "div", el_table: "table", el_tbody: "tbody", el_tr: "tr", el_td_close: "td", el_td_prev: "td", el_td_next: "td"}); navigator.buttons = [el_td_close, el_td_prev, el_td_next]; copy_obj(el_frame, { _time_last_shown: new Date() }); copy_obj(el_frame, { onclick: stop_event, onmouseover: eh.mouseenter, onmouseout: eh.mouseleave }); copy_obj(el_table, { onclick: stop_event, oncontextmenu: stop_event, cellSpacing: "12px" }); copy_obj(el_frame.style, { opacity: 1, transition: "opacity 0.5s ease-out", cursor: "default", position: "fixed", textAlign: "center", bottom: "0px", left: "0px", width: "100%", height: "100px", padding: (isMobile ? "0px" : "16px"), paddingBottom: "16px" }); copy_obj(el_table.style, { backgroundColor: "rgba(75, 0, 130, 0.5)", borderRadius: "16px", color: "white", fontFamily: "Helvetica, Arial, sans-serif", fontSize: "32pt", tableLayout: "fixed", textAlign: "center", margin: "auto", width: "300px", height: "100%" }); //el_table.style.boxShadow = "0px 0px 8px 3px rgba(40, 0, 64, 0.9)"; for (var i = 0; i < buttons.length; i++) { copy_obj(buttons[i], { _index: i, onmouseup: eh.click, onmouseover: eh.mouseover, onmouseout: eh.mouseout }); buttons[i].style.borderRadius = "16px"; } set_textContent(el_td_close, ""); set_textContent(el_td_prev, "%"); set_textContent(el_td_next, "%"); el_bg.appendChild(el_frame); el_frame.appendChild(el_table); el_table.appendChild(el_tbody); el_tbody.appendChild(el_tr); el_tr.appendChild(el_td_close); el_tr.appendChild(el_td_prev); el_tr.appendChild(el_td_next); }; } with (loading) { // initialize picture.background loading.init = function () { picture.el_loading = document.createElement("span"); copy_obj(el_loading.style, { opacity: 0, transition: "opacity 0.2s ease-out", backgroundColor: "rgba(0, 0, 0, 0.5)", color: "white", position: "fixed", textAlign: "center", bottom: "16px", left: "16px", padding: "8px", paddingLeft: "12px", paddingRight: "12px", borderRadius: "16px", boxShadow: "0px 0px 8px 3px rgba(0, 0, 0, 0.5)" }); set_textContent(el_loading, "loading..."); el_bg.appendChild(el_loading); }; } // initialize picture.el_img picture.init = function () { background.init(); loading.init(); picture.el_img = document.createElement("img"); copy_obj(el_img, { _index: 0, _cx: 0, _cy: 0, _timer: 0, onclick: stop_event, oncontextmenu: eh.contextmenu, onmousedown: eh.mousedown, onmouseup: eh.click, onload: eh.load, _next_play: eh.next_play, _next: eh.next, _prev: eh.prev, _show: eh.show, _play_pause: eh.play_pause, _play: eh.play, _pause: eh.pause }); copy_obj(el_img.style, { opacity: 0, transition: "opacity 0.2s ease-out", verticalAlign: "middle", margin: "auto", borderRadius: "16px", boxShadow: "0px 0px 8px 3px rgba(0, 0, 0, 0.5)" }); el_bg.appendChild(el_img); //test2(picture.el_img); navigator.init(); }; // event handlers:picture eh.load = function (event) { if (!event) event = window.event; //console.info(this.src); //test2(this); loading.eh.end(); with (el_bg) { if ((clientWidth >= this.naturalWidth) && (clientHeight >= this.naturalHeight)) { this.style.width = isEDGE ? "".concat(this.naturalWidth, "px") : ""; this.style.height = isEDGE ? "".concat(this.naturalHeight, "px") : ""; } else { var aspect_img = this.naturalWidth / this.naturalHeight; var aspect_preview = clientWidth / clientHeight; if (aspect_img > aspect_preview) { this.style.width = "".concat(clientWidth, "px"); this.style.height = isEDGE ? "".concat(clientWidth / aspect_img, "px") : ""; } else { this.style.width = isEDGE ? "".concat(clientHeight * aspect_img, "px") : ""; this.style.height = "".concat(clientHeight, "px"); } } } this.style.opacity = 1; with (audio.el_audio) if (_visible) { style.transition = "opacity 0.5s ease-out"; if (this.offsetTop < clientHeight) { _hide = true; style.opacity = 0; } else { _hide = false; style.opacity = 1; } } }; eh.contextmenu = function (event) { if (!event) event = window.event; event.cancelBubble = true; if (event.shiftKey) return true; el_bg.click(); return false; }; eh.click = function (event, seek) { if (!event) event = window.event; event.cancelBubble = true; if (event.which == 3) return true; var j = (event.which == 2) ? -1 : 1; if (event.type && (event.which == 1)) { if (isMobile) { with (navigator.el_frame) if ((style.opacity == 1) || ((new Date() - _time_last_shown) < 10)) { style.opacity = 0; return true; } } var dx = Math.abs(this._cx - event.clientX); var dy = Math.abs(this._cy - event.clientY); if (((dx > 100) || (dy > 100)) && ((new Date() - el_bg._time_last_scroll) > 1000)) with (document) { if (_isFullScreen()) exitFullscreen(); else _requestFullscreen(el_bg); return false; } if ((dx > 10) || (dy > 10)) return false; if ((j == 1) && (event.clientX + (this.clientWidth >> 2) - (el_bg.clientWidth >> 1) < 0)) j = -1; } this._pause(); if (seek == undefined) seek = j; with (g.el.links) { var i = this._index + seek; if (!seek) { if (item(i)._type.picture) { item(i).click(); return false; } i++; } for (; i != this._index; i += j) { if (i >= length) i = 0; else if (i < 0) i = length - 1; if (item(i)._type.picture) { item(i).click(); break; } } } return false; }; eh.mousedown = function (event) { if (!event) event = window.event; this._cx = event.clientX; this._cy = event.clientY; return true; }; eh.next_play = function () { _timer = 0; el_img._next(); el_img._play(); }; eh.next = function () { el_img.onmouseup({ which: 1 }); }; eh.prev = function () { el_img.onmouseup({ which: 2 }); }; eh.show = function () { el_img.onmouseup({ which: 1 }, el_bg._visible ? 1 : 0); }; eh.play_pause = function () { with (el_img) if (_timer) _pause(); else _play(); }; eh.play = function () { //navigator.el_table.style.boxShadow = "0px 0px 8px 3px rgba(40, 0, 64, 0.9)"; set_textContent(navigator.el_td_next, "%%"); el_img._timer = setTimeout(el_img._next_play, 10000); }; eh.pause = function () { with (el_img) if (_timer) { //navigator.el_table.style.boxShadow = ""; set_textContent(navigator.el_td_next, "%"); clearTimeout(_timer); _timer = 0; return true; } return false; }; with (background) { // event handlers:picture.background eh.click = function (event) { //if (!event) event = window.event; document.body.style.overflow = ""; el_bg._visible = false; this.style.display = "none"; audio.el_audio._hide = false; audio.el_audio.style.opacity = 1; el_img.style.opacity = 0; el_img._pause(); g.el.links.item(el_img._index)._stop(); with (document) if (_isFullScreen()) exitFullscreen(); return false; }; eh.mousedown = function (event) { if (!event) event = window.event; if (event.altKey || event.ctrlKey || event.shiftKey) return true; event.cancelBubble = true; return false; }; eh.scroll = function (event) { if (!event) event = window.event; event.cancelBubble = true; var t = new Date(); var dt = t - this._time_last_scroll; if ((dt > 200) && (Math.abs(event.wheelDelta) > 3)) { this._time_last_scroll = t; el_img.onmouseup({ which: (event.wheelDelta < 0) ? 1 : 2 }); //console.info(event.wheelDelta); } return false; }; eh.resize = function () { if (!isMobile) return; with (this.style) { height = "".concat(window.innerHeight, "px"); width = "".concat(window.innerWidth, "px"); } }; } with (navigator) { eh.click = function (event) { if (!event) event = window.event; if (isMobile && ((new Date() - el_frame._time_last_shown) < 100)) return true; switch (this._index) { case 0: el_bg.click(); break; case 1: el_img._prev(); break; case 2: if (event.shiftKey || (event.which == 2)) el_img._play_pause(); else if (!el_img._pause()) el_img._next(); break; default: break; } } eh.mouseover = function (event) { if (!event) event = window.event; with (this) { style.backgroundColor = "rgba(0, 0, 0, 0.5)"; //style.color = "DarkViolet"; } }; eh.mouseout = function (event) { if (!event) event = window.event; with (this) { style.backgroundColor = ""; //style.color = ""; } }; eh.mouseenter = function (event) { if (!event) event = window.event; with (el_frame) if (style.opacity != 1) { style.opacity = 1; var t = new Date(); _time_last_shown = ((t - _time_last_shown) < 10)? 0: t; } }; eh.mouseleave = function (event) { if (!event) event = window.event; el_frame.style.opacity = 0; el_frame._time_last_shown = new Date(); }; } with (loading) { eh.schedule = function () { eh.end(); _timer = setTimeout(eh.show, 100); }; eh.show = function () { el_loading.style.opacity = 1; }; eh.end = function () { el_loading.style.opacity = 0; if (_timer) { clearTimeout(_timer); _timer = 0; } }; } } // end:picture with (audio) { audio.init = function () { audio.el_audio = document.createElement("audio"); copy_obj(el_audio, { controls: true, _index: 0, _changed: false, _visible: false, _hide: false, _reconnect_timer: 0, _reconnect_abort: false, _last_position: 0, _last_position_timer: 0 }); copy_obj(el_audio, { onmouseenter: eh.mouseenter, onmouseleave: eh.mouseleave, onloadedmetadata: eh.loadedmetadata, onplaying: eh.playing, onpause: eh.pause, onended: eh.ended, onerror: eh.error, _last_position_updater: eh.last_position_audio, _reconnect_server: eh.reconnect_audio, _stop: eh.stop_audio }); copy_obj(el_audio.style, { display: "none", opacity: 1, transition: "opacity 0.2s ease-out", position: "fixed", top: "0px", left: "0px", width: "100%", userSelect: "none", WebkitUserSelect: "none", zIndex: 1 }); document.body.insertBefore(el_audio, document.body.firstChild); }; // event handlers:audio eh.mouseenter = function (event) { if (!event) event = window.event; if (this._hide) { this.style.transition = "opacity 0.2s ease-out"; this.style.opacity = 1; } }; eh.mouseleave = function (event) { if (!event) event = window.event; if (this._hide) this.style.opacity = 0; }; eh.loadedmetadata = function (event) { if (!event) event = window.event; if (this._changed) { this._changed = false; with (audio.el_audio) currentTime = _last_position; } }; eh.playing = function (event) { if (!event) event = window.event; eh.last_position_stop(); this._last_position_timer = setInterval(this._last_position_updater, 3000); with (this) if (!_visible) { _visible = true; style.display = ""; } g.el.links.item(this._index)._play(); }; eh.pause = function (event) { if (!event) event = window.event; eh.last_position_stop(); with (g.el.links.item(this._index)) if (this._visible) _pause(); else _stop(); }; eh.ended = function (event) { if (!event) event = window.event; eh.last_position_stop(); this._last_position = 0; with (g.el.links) { item(this._index)._stop(); var i = this._index + 1; for (; i != this._index; i += 1) { if (i >= length) i = 0; else if (i < 0) i = length - 1; if (item(i)._type.audio || item(i)._type.video) { item(i).click(); break; } } } }; eh.error = function (event) { if (!event) event = window.event; eh.last_position_stop(); with (this.error) { var err_msg = ["", "Playback aborted", "Network error", "Unsupported type", "Cannot open"][code]; var err_code = code; if ((isEDGE || isFirefox) && (code == MEDIA_ERR_SRC_NOT_SUPPORTED) && !this.readyState && g.el.links.item(this._index)._user_click) err_code = MEDIA_ERR_DECODE; var force_download = (err_code == MEDIA_ERR_DECODE) && !this.readyState; switch (err_code) { case MEDIA_ERR_ABORTED: break; case MEDIA_ERR_NETWORK: case MEDIA_ERR_SRC_NOT_SUPPORTED: eh.reconnect_stop(); if (this._reconnect_abort) return; this._reconnect_timer = setTimeout(this._reconnect_server, 3000); break; case MEDIA_ERR_DECODE: break; default: err_msg = ""; break; } this._stop(true); g.el.links.item(this._index)._error(err_msg, force_download); } }; eh.last_position_audio = function () { audio.el_audio._last_position = audio.el_audio.currentTime; }; eh.last_position_video = function () { video.el_video._last_position = video.el_video.currentTime; }; eh.last_position_stop = function () { with (audio.el_audio) if (_last_position_timer) { clearInterval(_last_position_timer); _last_position_timer = 0; } with (video.el_video) if (_last_position_timer) { clearInterval(_last_position_timer); _last_position_timer = 0; } }; eh.reconnect_audio = function () { eh.reconnect_stop(); g.el.links.item(audio.el_audio._index).click(); }; eh.reconnect_video = function () { eh.reconnect_stop(); g.el.links.item(video.el_video._index).click(); }; eh.reconnect_stop = function () { with (audio.el_audio) if (_reconnect_timer) { clearTimeout(_reconnect_timer); _reconnect_timer = 0; } with (video.el_video) if (_reconnect_timer) { clearTimeout(_reconnect_timer); _reconnect_timer = 0; } }; eh.stop_audio = function (has_error) { with (audio.el_audio) if (_visible) { _visible = false; style.display = "none"; if (has_error) return; if (paused) onpause(); pause(); } }; eh.stop_video = function (has_error) { with (video.el_video) if (_visible) { _visible = false; video.el_vspace.style.display = "none"; if (isMobile && video.el_video.webkitDisplayingFullscreen) webkitExitFullscreen(); if (has_error) return; if (paused) onpause(); pause(); //test2(video.el_video); //if (!picture.el_bg._visible && _isFullScreen()); //document.body.style.overflow = "scroll"; //document.documentElement.style.overflow = "scroll"; //document.style.overflow = "scroll"; } }; } // end:audio with (video) { video.init = function () { video.el_vspace = document.createElement("div"); copy_obj(el_vspace.style, { display: "none", width: "100%", userSelect: "none", WebkitUserSelect: "none" }); video.el_video = document.createElement("video"); copy_obj(el_video, { controls: true, _index: 0, _changed: false, _visible: false, _sx: 0, _sy: 0, _time_last_fullscreen: new Date(), _time_last_scroll: new Date(), _time_last_seek: new Date(), _is_seeking: false, _reconnect_timer: 0, _reconnect_abort: false, _last_position: 0, _last_position_timer: 0 }); copy_obj(el_video, { onclick: eh.click, oncontextmenu: eh.contextmenu, ondblclick: eh.dblclick, onloadedmetadata: eh.loadedmetadata, onmousedown: eh.mousedown, onmouseup: eh.mouseup, onmousewheel: eh.scroll, onseeked: eh.seeked }); with (audio.eh) copy_obj(el_video, { onplaying: playing, onpause: pause, onended: ended, onerror: error, _last_position_updater: last_position_video, _reconnect_server: reconnect_video, _stop: stop_video }); copy_obj(el_video.style, { position: "fixed", bottom: "0px", right: "0px", width: "100%" }); el_vspace.appendChild(el_video); document.body.appendChild(el_vspace); //test2(document); }; // event handlers:video eh.loadedmetadata = function (event) { if (!event) event = window.event; if (this._changed) { this._changed = false; with (el_vspace) { el_video.currentTime = el_video._last_position; if (this._visible) { style.height = "".concat(this.clientHeight, "px"); } else { this._visible = true; style.display = ""; style.height = "".concat(this.clientHeight, "px"); with (g.el.links.item(el_video._index)) { // try to keep the link into view if (window.innerHeight - this.clientHeight < offsetHeight + offsetParent.offsetTop - window.scrollY) scrollIntoView(); } } } if (this.clientHeight > window.innerHeight) { copy_obj(this.style, { height: "100%", width: "" }); el_vspace.style.height = ""; } } }; // video click events eh.click = function (event) { if (!event) event = window.event; if (event.which == 2) return true; if (Math.abs(this._sx - event.screenX) > 10) return false; if (Math.abs(this._sy - event.screenY) > 10) return false; if (isMobile && (event.screenX < (this.clientWidth >> 2))) { el_video._stop(); return false; } with (el_video) if (paused) play(); else pause(); return false; }; eh.contextmenu = function (event) { if (!event) event = window.event; if (Math.abs(this._sx - event.screenX) > 10) return false; if (Math.abs(this._sy - event.screenY) > 10) return false; return true; }; eh.dblclick = function (event) { if (!event) event = window.event; var t = new Date(); var ignore = this._is_seeking || ((t - this._time_last_seek) < 100) || ((t - this._time_last_fullscreen) < 100); this._time_last_fullscreen = t; if ((isFirefox || isEDGE) && (event.type == "dblclick")) return true; event.cancelBubble = true; if (ignore) return false; with (document) { if (_isFullScreen()) exitFullscreen(); else _requestFullscreen(el_video); } return false; }; eh.mousedown = function (event) { if (!event) event = window.event; this._sx = event.screenX; this._sy = event.screenY; this._is_seeking = false; if (event.which == 2) return false; return true; }; eh.mouseup = function (event) { var bx = Math.abs(this._sx - event.screenX) < 100; var by = Math.abs(this._sy - event.screenY) < 100; if ((bx && by) || ((new Date() - this._time_last_scroll) < 100)) return true; if (event.which != 1) { if (event.which == 3) setTimeout(el_video._stop, 100); return true; } this.ondblclick(event); return true; }; eh.scroll = function (event) { if (!event) event = window.event; var wd = event.wheelDeltaX ? event.wheelDelta : event.wheelDelta; var w_abs = Math.abs(event.wheelDelta); var t = new Date(); var dt = t - this._time_last_scroll; if ((dt > 2000) && (w_abs < 2)) return false; this._time_last_scroll = t; if (event.wheelDeltaX || event.buttons || event.shiftKey) { if (w_abs == 120) wd *= -0.08; else wd = wd * 0.2; this.currentTime += wd; } else { if (w_abs == 120) wd *= -0.5; var vol = this.volume - wd * 0.002; if (vol < 0) vol = 0; if (vol > 1) vol = 1; this.volume = vol; } return false; }; eh.seeked = function (event) { if (!event) event = window.event; this._time_last_seek = new Date(); this._is_seeking = true; }; } // end:video with (links) { links.init = function () { g.el.files = document.getElementById("files"); g.el.dates = document.getElementsByName("dates"); g.el.links = document.getElementsByName("links"); if (!isNaN(g.urlparam.param) && (g.urlparam.param != null)) run = g.urlparam.param; if (!g.el.links.item) g.el.links.item = function (i) { return this[i]; }; with (g.el.links) for (var i = 0; i < length; i++) { item(i)._index = i; item(i)._user_click = false; item(i)._has_error = false; if (isIE8_or_less) { item(i).onclick = eh.click.unsupported; continue; } copy_obj(item(i), state); var src = item(i).href; if (src.indexOf("#") >= 0) item(i).href = src.replace(/#/g, escape("#")); if (src.substring(src.lastIndexOf("/") + 1) == g.urlparam.param) run = i; var j = src.lastIndexOf("."); if (j < 0) continue; var ext = src.substring(j + 1).toLowerCase(); if (!ext.length) continue; item(i)._type = { picture: false, audio: false, video: false }; for (var t in g.ext) { var ext_list = g.ext[t]; for (j = 0; j < ext_list.length; j++) if (ext == ext_list[j]) with (item(i)) { _type[t] = true; onclick = eh.click[t]; if (!item(i).click) item(i).click = onclick; break; } } } with (g.el.dates) for (var i = 0; i < length; i++) { item(i)._index = i; item(i)._original_content = get_textContent(item(i)); } }; links.autorun = function () { with (g.el.links) if ((run >= 0) && item(run).click) item(run).click(); }; with (state) { _play = function () { with (this) { _has_error = false; var el_date = g.el.dates.item(_index); style.backgroundColor = "rgba(255, 180, 255, 1)"; el_date.style.color = ""; firstChild.style.color = "black"; set_textContent(el_date, el_date._original_content); } }; _pause = function () { with (this) { style.backgroundColor = ""; firstChild.style.color = "DarkViolet"; } }; _stop = function () { with (this) { audio.eh.reconnect_stop(); var el_date = g.el.dates.item(_index); style.backgroundColor = ""; firstChild.style.color = _has_error ? "Sienna" : ""; } }; _error = function (err_msg, force_download) { with (this) { _has_error = true; var el_date = g.el.dates.item(_index); style.backgroundColor = ""; el_date.style.color = firstChild.style.color = "rgba(204, 0, 0, 1)"; set_textContent(el_date, err_msg); if (force_download) window.location.assign(href.concat("?down")); } }; } // event handlers:links eh.click.picture = function (event) { if (!event) event = window.event; if (event.altKey || event.ctrlKey || event.shiftKey) return true; if (event.which && (event.which != 1)) return true; this._user_click = (event.detail ? true : false) || (event.clientX > 0) && (event.clientY > 0); event.cancelBubble = true; with (picture) { document.body.style.overflow = "hidden"; var visible = el_bg._visible; el_bg._visible = true; el_bg.style.display = isMobile? "": "inline-flex"; with (el_img) { if (_index == this._index) style.opacity = 1; else { loading.eh.schedule(); g.el.links.item(_index)._stop(); _index = this._index; } this._play(); src = this.href; } with (navigator.el_frame) if (!visible && event.pageY) { style.opacity = 1; if (event.pageY < offsetTop) window.setTimeout(onmouseout, 100); } if (isMobile) el_bg.scrollIntoView(); } //console.info(this.innerText); return false; }; eh.click.audio = function (event) { if (!event) event = window.event; if (event.altKey || event.ctrlKey || event.shiftKey) return true; if (event.which && (event.which != 1)) return true; this._user_click = (event.detail ? true : false) || (event.clientX > 0) && (event.clientY > 0); event.cancelBubble = true; video.el_video._stop(); with (audio.el_audio) { _reconnect_abort = this._user_click && this._has_error; if (_reconnect_abort) { this._has_error = false; this._stop(); return false; } var track_changed = (_index != this._index); if (track_changed) _last_position = 0; if (this._has_error || track_changed) { g.el.links.item(_index)._stop(); g.el.links.item(_index)._has_error = false; _index = this._index; } _changed = true; src = this.href; play(); } return false; }; eh.click.video = function (event) { if (!event) event = window.event; if (event.altKey || event.ctrlKey || event.shiftKey) return true; if (event.which && (event.which != 1)) return true; this._user_click = (event.detail ? true : false) || (event.clientX > 0) && (event.clientY > 0); event.cancelBubble = true; audio.el_audio._stop(); with (video.el_video) { _reconnect_abort = this._user_click && this._has_error; if (_reconnect_abort) { this._has_error = false; this._stop(); return false; } var track_changed = (_index != this._index); if (track_changed) _last_position = 0; if (!this._has_error && !track_changed) style.opacity = 1; else { g.el.links.item(_index)._stop(); g.el.links.item(_index)._has_error = false; _index = this._index; } copy_obj(style, { height: "", width: "100%" }); _changed = true; src = this.href; play(); } return false; }; eh.click.unsupported = function (event) { if (!event) event = window.event; window.location = this.href; return false; }; } // end:links } with (g) { eh.keydown = function (event) { if (!event) event = window.event; with (g.media.picture) { var visible = el_bg._visible; var vol = 0.12; switch (event.keyCode) { case 13: // ENTER if (!_isFullScreen()) el_img._show(); break; case 27: // ESC case 81: // ESC if (visible) { el_bg.click(); } else with (g.media) { audio.el_audio._stop(); video.el_video._stop(); } break; case 32: // SPACE case 179:// MediaPlayPause // play/pause from keyboard, playback for pictures with SPACE: 10s with (g.media.audio) with (g.media.video) { if ((el_audio._visible || el_video._visible) && !event.shiftKey) { var el_player = el_audio._visible? el_audio: el_video; with (el_player) if (paused) play(); else pause(); } else if (el_bg._visible) el_img._play_pause(); } break; case 37: // LEFT with (g.media.video.el_video) if (_visible && !visible) { currentTime -= 10; break; } case 38: // UP if (!visible) return true; el_img._prev(); break; case 39: // RIGHT with (g.media.video.el_video) if (_visible && !visible) { currentTime += 10; break; } case 40: // DOWN if (!visible) return true; el_img._next(); break; case 107: // + KP case 187: // = vol *= -1; case 109: // - KP case 189: // - with (g.media) with (video.el_video._visible ? video.el_video : audio.el_audio) if (_visible) { vol += volume; if (vol < 0) vol = 0; if (vol > 1) vol = 1; volume = vol; } break; case 70: // F if (visible && !event.shiftKey) { if (_isFullScreen()) document.exitFullscreen(); else _requestFullscreen(el_bg); } else with (g.media.video) if (el_video._visible) { if (_isFullScreen()) document.exitFullscreen(); else _requestFullscreen(el_video); } break; default: //console.info(event.keyCode); return true; break; } } if (event.preventDefault) event.preventDefault(); return false; }; // corrects the picture size after the window is resized eh.resize = function (event) { if (!event) event = window.event; if (window._timer_resize) { clearTimeout(window._timer_resize); window._timer_resize = 0; } window._timer_resize = setTimeout(eh.resize_end, 200); return true; }; eh.resize_end = function () { window._timer_resize = 0; with (g.media.picture) el_bg._onresize(); with (g.media.picture) if (el_bg._visible) el_img.onload(); with (g.media.video) if (el_video._visible) el_video.onloadedmetadata(); }; } function stop_event(event) { event.cancelBubble = true; return false; } g.compatibillity = { add: null, add_var: null, empty_f: null, init: null }; with (g.compatibillity) { empty_f = function () { return false; }; add = function (obj, name, _list) { if (obj[name]) return; obj[name] = empty_f; for (var i = 0; i < _list.length; i++) if (obj[_list[i]]) { obj[name] = obj[_list[i]]; break; } }; add_var = function (obj, obj_name, name, _list) { if (window[name] != undefined) return; window[name] = empty_f; for (var i = 0; i < _list.length; i++) if (obj[_list[i]] != undefined) { eval("".concat("window.", name, "=", empty_f.toString().replace("false", "".concat(obj_name, ".", _list[i])))); break; } }; init = function () { window._requestFullscreen = function (obj) { add(obj, "requestFullscreen", ["webkitRequestFullscreen", "mozRequestFullScreen", "msRequestFullscreen"]); return obj.requestFullscreen(); } add(document, "exitFullscreen", ["webkitExitFullscreen", "mozCancelFullScreen", "msExitFullscreen"]); add_var(document, "document", "_isFullScreen", ["fullScreen", "webkitIsFullScreen", "mozFullScreen", "msFullScreen", "msFullscreenElement"]); if (isEDGE && (window._isFullScreen == empty_f)) window._isFullScreen = function () { return document.msFullscreenElement; }; }; } if (!g.urlparam) g.urlparam = { init: null, addr: null, param: null }; with (g.urlparam) { init = function () { with (location) { var i = href.indexOf("?"); if (i < 0) i = href.indexOf("#"); if (i < 0) { addr = href; } else { addr = href.substring(0, i); param = href.substring(i + 1); } } }; } function load() { with (g.media) { g.compatibillity.init(); g.urlparam.init(); if (!isIE8_or_less) { video.init(); picture.init(); audio.init(); } links.init(); window.addEventListener("keydown", g.eh.keydown, true); window.addEventListener("resize", g.eh.resize, true); links.autorun(); } //test2(window.g); //test2(g.el.links); } window.addEventListener("load", load, true); </script></body></html>