/*js
//==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>
//
// CssHidex v1.16 [ Commercial Version ]
// Copyright (c) phpkobo.com ( http://www.phpkobo.com/ )
// Email : admin@phpkobo.com
// ID : HDXCS-116
// URL : http://www.phpkobo.com/csshidex
//
//==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<
*/
////////////////////////////////////////////////////////////////////
// $shorthands
function $(selector,el_ref){
return (el_ref?el_ref:document).querySelector(selector);
};
function $$(selector,el_ref){
return (el_ref?el_ref:document).querySelectorAll(selector);
};
function $id(id){
return document.getElementById(id);
};
function $ce(tagName){
return document.createElement(tagName);
};
////////////////////////////////////////////////////////////////////
// jQuery.offset
function jqOffset(el){
var rect=el.getBoundingClientRect();
var el_body=document.documentElement;
return {
x:rect.left+el_body.scrollLeft,
y:rect.top+el_body.scrollTop
};
};
////////////////////////////////////////////////////////////////////
// ajaxCall
function ajaxCall(url_server,requ,callback,auxproc,errproc){
const xhr=new XMLHttpRequest();
xhr.open("POST",url_server,true);
xhr.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded; charset=UTF-8");
xhr.addEventListener("load",function(){
if (xhr.status==200){
let str=xhr.responseText;
const sig="[!json!]";
const pos=str.indexOf(sig);
if(pos!=-1){
if(pos>0){
const pretext=str.substr(0,pos);
if(errproc){errproc("SBL",pretext);}
}
str=str.substr(pos+sig.length);
const resp=JSON.parse(str);
if (resp.result=="OK"){
if(callback){callback(resp);}
}else{
if(errproc){errproc("NOR",resp.result);}
}
}else{
if(errproc){errproc("SMS",str);}
}
}else{
let s="";
s+="status:"+xhr.status+"\n";
s+="statusText:"+xhr.statusText;
if(errproc){errproc("N2H",s);}
}
});
if(auxproc){auxproc(xhr);}
xhr.send("requ="+encodeURIComponent(JSON.stringify(requ)));
return xhr;
};
////////////////////////////////////////////////////////////////////
// protect a webpage form drag-and-drop
function preventFileDrop(){
document.addEventListener("dragover",function(e){
e.preventDefault();
});
document.addEventListener("drop",function(e){
e.preventDefault();
});
};
preventFileDrop();
////////////////////////////////////////////////////////////////////
// end events
function onEnd(el,callback,ename){
const func=function(e){
if(el==e.srcElement){
el.removeEventListener(ename,func);
if(callback){callback(e);}
}
};
el.addEventListener(ename,func);
};
function onTransitionEnd(el,callback){
onEnd(el,callback,"transitionend");
};
function onAnimationEnd(el,callback){
onEnd(el,callback,"animationend");
};
////////////////////////////////////////////////////////////////////
// createElementFromHTML
function createElementFromHTML(html){
const el=document.createElement("div");
el.innerHTML=html;
return el.firstElementChild;
}
////////////////////////////////////////////////////////////////////
// browser detection
function isSafari(){
return (window.safari!==undefined);
};
function isFireFox(){
return (navigator.userAgent.toLowerCase().indexOf('firefox')>-1);
};
function isIE(){
var ua=window.navigator.userAgent;
var msie=ua.indexOf("MSIE ");
// Trident/7.0; rv:11.0
return ((msie>0)||!!ua.match(/Trident.*rv\:11\./));
};
////////////////////////////////////////////////////////////////////
// send enter & space to click
function esToClick(el){
el.addEventListener("keydown",function(e){
if((e.key=="Enter")||(e.key==" ")){
e.preventDefault();
this.click();
}
});
return el;
};
"use strict";
function CUiControl(px){
var el_control=px.el_control;
function enable(){
el_control.classList.remove("uic-disable");
};
function disable(){
el_control.classList.add("uic-disable");
};
function init(){
enable();
};
init();
return {
enable:enable,
disable:disable
};
};
"use strict";
function CSvgBtnControl(px){
// elements
var el_control=px.el_control;
// parameters
var btntype=px.btntype?px.btntype:"check";
// function closures
var fcl=null;
// button data
var btndata={
"check":{
scale:20,
code:`
`},
"x":{
scale:25,
code:`
`},
"threedots":{
scale:20,
code:`
`},
"threelines":{
scale:20,
code:`
`},
"folder":{
scale:20,
code:`
`}
};
function setBtn(btntype){
el_control.innerHTML=btndata[btntype].code;
var el_svg=el_control.querySelector(".sbc-svg");
var scale=btndata[btntype].scale;
el_svg.style.top=el_svg.style.bottom=
el_svg.style.left=el_svg.style.right=scale+"%";
if(px.style){
for(var key in px.style){
el_control.style[key]=px.style[key];
}
}
};
function init(){
setBtn(btntype);
// events
var style_focus=true;
el_control.addEventListener("pointerdown",function(e){
style_focus=false;
});
el_control.addEventListener("click",function(e){
style_focus=true;
});
el_control.addEventListener("keydown",function(e){
if((e.key=="Enter")||(e.key==" ")){
e.preventDefault();
this.click();
}
});
el_control.addEventListener("focus",function(e){
if(style_focus){
el_control.classList.add("sbc-focus");
}
});
el_control.addEventListener("blur",function(e){
el_control.classList.remove("sbc-focus");
});
// call base class
fcl=CUiControl({
el_control:el_control
});
};
init();
return fcl;
};
"use strict";
////////////////////////////////////////////////////////////////////
// CFileViewControl
function CFileViewControl(px){
// elements
var el_control=px.el_control;
var el_fileboard=null;
function show(){
el_control.classList.remove("fvc-hide");
enable();
};
function hide(){
el_control.classList.add("fvc-hide");
disable();
};
function enable(){
el_control.classList.remove("fvc-disable");
};
function disable(){
el_control.classList.add("fvc-disable");
};
function setPicture(data){
el_fileboard.style["background-image"]="url("+data.dataurl+")";
};
function clearFile(){
el_fileboard.style["background-image"]="none";
// dispatch event
el_control.dispatchEvent(new Event("fileviewclear"));
};
function init(){
// build droparea
var el_checkboard=document.createElement("div");
el_checkboard.className="fvc-checkboard";
el_fileboard=document.createElement("div");
el_fileboard.className="fvc-fileboard";
var el_close=document.createElement("div");
el_close.className="fvc-close";
el_close.classList.add("sbc-control");
el_close.setAttribute("tabindex","0");
el_control.appendChild(el_checkboard);
el_control.appendChild(el_fileboard);
el_control.appendChild(el_close);
CSvgBtnControl({
el_control:el_close,
btntype:"x"
});
// events
el_close.addEventListener("click",function(e){
clearFile();
});
// call base class
CUiControl({
el_control:el_control
});
};
init();
return {
show:show,
hide:hide,
enable:enable,
disable:disable,
setPicture:setPicture
};
};