/*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 CFinpControl(px){ // elements var el_control=px.el_control; var el_overlay=null; var el_dialog=null; var el_input=null; // parameters var inival=(px.inival!==undefined)?px.inival:""; // callbacks var isValidKey=px.isValidKey?px.isValidKey:function(key){return true;}; var normalize=px.normalize?px.normalize:function(val){return val;}; var displayVal=px.displayVal?px.displayVal:function(val){return val;}; // variables var value=null; // viewport offset function vpOffset(el){ var rect=el.getBoundingClientRect(); return { x:rect.left, y:rect.top }; }; function getValue(){ return value; }; function setValue(val){ value=val; el_control.innerHTML=displayVal(val); }; function copyStyle(el_src,el_des,ls){ var style=window.getComputedStyle(el_src); for(var i=0;imaxval)){v=minval} if((minval!=null)&&(vmaxval)){v=maxval} if((minval!=null)&&(v>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>> // // //==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<< */ function CDateTblControl(px){ // elements var el_control=px.el_control; // parameters var inival=px.inival; var b_6rows=px.b_6rows; var fdow=px.fdow; var dowsx=px.dowsx; // value(dr_selected) var value=null; // variables var el_selday=null; var heading=null; var dr_today=null; var dr_viewed=null; function getValue(){ return value; }; function setValue(val){ value={...val}; // are year and month the same as previous? if(!dr_viewed||!((dr_viewed.y==value.y)&&(dr_viewed.m==value.m))){ // currently viewed year and month dr_viewed={ y:value.y, m:value.m }; updateDateTbl(); } }; function createHeadingData(dowsx,fdow){ var rx=[]; for(var i=0;i<7;i++){ rx.push(dowsx[(i+fdow)%7]); } return rx; }; function createBodyData(dr_viewed,dr_selected,dr_today,b_6rows,fdow){ function buildDayClassList(dr_this,dr_viewed,dr_selected,dr_today){ // initialize class list var cx=["day"]; // is in the month or before/after the month? if(dr_this.m==dr_viewed.m){ cx.push("inday"); }else{ cx.push("outday"); } // weekend or weedkay? if((dr_this.w==0)||(dr_this.w==6)){ cx.push("wend"); } else { cx.push("wday"); } // is today? if((dr_this.y==dr_today.y)&& (dr_this.m==dr_today.m)&& (dr_this.d==dr_today.d)){ cx.push("today"); } // is selected day? if((dr_this.y==dr_selected.y)&& (dr_this.m==dr_selected.m)&& (dr_this.d==dr_selected.d)){ cx.push("selday"); } // return return cx; }; function dt2dr(dt){ return{ y:dt.getFullYear(), m:dt.getMonth(), d:dt.getDate(), w:dt.getDay() }; }; fdow=parseInt(fdow); var dt_1st_of_month=new Date(dr_viewed.y,dr_viewed.m,1); var dt_1st_of_table=new Date(dt_1st_of_month); var n=(dt_1st_of_month.getDay()-fdow+7)%7; dt_1st_of_table.setDate(dt_1st_of_table.getDate()-n); var dt_this=new Date(dt_1st_of_table); var dr_this=dt2dr(dt_this); var wx=[]; var mx=[]; var week=0; var b_exit=false; while(!b_exit){ var clist=buildDayClassList( dr_this, dr_viewed, dr_selected, dr_today); wx.push({ date:dr_this.d, clist:clist }); if((dr_this.w-fdow+7)%7==6){ mx.push(wx); wx=[]; week++; if(week==6){ b_exit=true; } } // increment date by 1 dt_this.setDate(dt_this.getDate()+1); // make dr_this form dt_this dr_this=dt2dr(dt_this); // if no 6-rows table, then... if(!b_6rows){ var b_overday=(dr_this.m>dr_viewed.m)|| ((dr_this.m==0)&&(dr_viewed.m==11)); if((dr_this.w==fdow)&&b_overday){ b_exit=true; } } } return mx; }; function unmarkSelDay(){ if(el_selday){ el_selday.classList.remove("datbl-selday"); el_selday=null; } }; function markSelDay(el){ unmarkSelDay(); el_selday=el; el_selday.classList.add("datbl-selday"); }; function setSelDay(d){ var backup={...getValue()}; var newval={ y:dr_viewed.y, m:dr_viewed.m, d:d }; if(!((newval.y==backup.y)&& (newval.m==backup.m)&& (newval.d==backup.d))){ setValue(newval); el_control.dispatchEvent(new CustomEvent("change",{detail:newval})); } }; function createDateTbl(hx,mx){ unmarkSelDay(); function createHeadingElement(hx){ var el_week=document.createElement("div"); el_week.className="datbl-week"; for(var i=0;i>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>> // // //==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<< */ function CDateControl(px){ // elements var el_control=px.el_control; var el_year=el_control.querySelector(".daco-year"); var el_month=el_control.querySelector(".daco-month"); var el_datetbl=el_control.querySelector(".daco-datetbl"); // parameters var inival=px.inival; var b_6rows=px.b_6rows; var fdow=px.fdow; var dowsx=px.dowsx; // function closures var fcl_year; var fcl_month; var fcl_date; function pad0(n){return ('00'+n.toString()).slice(-2);}; function drToStr(dr){return dr.y+"-"+pad0(dr.m+1)+"-"+pad0(dr.d);}; function isValidDate(d){ return(!isNaN(d.getTime())); } function strToDate(str){ var pat="^\\s*"+ "([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2})"+ "\\s*$"; var re=new RegExp(pat); var mx=str.match(re); var year,month,date; if(mx){ year=parseInt(mx[1]); month=parseInt(mx[2]); date=parseInt(mx[3]); if((1000<=year)&&(year<3000)&& (1<=month)&&(month<=12)&& (1<=date)&&(date<=31)){ const d=new Date(year,month-1,date); if(isValidDate(d)){ return d; } } } return false; }; function getValue(){ return drToStr(fcl_date.getValue()); }; function setValue(val){ var dt=strToDate(val); if(dt!==false){ fcl_year.setValue(dt.getFullYear()); fcl_month.setValue(dt.getMonth()); fcl_date.setValue({ y:dt.getFullYear(), m:dt.getMonth(), d:dt.getDate() }); } }; function getIniDate(){ var inidt=false; if(inival){ inidt=strToDate(inival); } if(inidt===false){ inidt=new Date(); } return { y:inidt.getFullYear(), m:inidt.getMonth(), d:inidt.getDate() }; }; function init(){ // get inidate var inidate=getIniDate(); // year fcl_year=CStepControl({ el_control:el_year, inival:inidate.y, minval:1000, maxval:2999, maxlen:5, repat_allowed_chars:'^[0-9]$', repat_validate_value:'^[12][0-9]{3}$' }); // month fcl_month=CStepControl({ el_control:el_month, inival:inidate.m, loop:true }); // date fcl_date=CDateTblControl({ el_control:el_datetbl, inival:{y:inidate.y,m:inidate.m,d:inidate.d}, b_6rows:b_6rows, fdow:fdow, dowsx:dowsx }); // events el_year.addEventListener("change",function(e){ el_datetbl.dispatchEvent(new CustomEvent( "view-year",{detail:e.detail})); }); el_month.addEventListener("change",function(e){ el_datetbl.dispatchEvent(new CustomEvent( "view-month",{detail:e.detail})); }); el_datetbl.addEventListener("change",function(e){ el_control.dispatchEvent(new CustomEvent( "change",{detail:drToStr(e.detail)})); }); // call base class CUiControl({ el_control:el_control }); } init(); return { getValue:getValue, setValue:setValue }; };