var getDaysInMonth=function(month,year) {
return new Date(year,month,0).getDate();
};
var getTimeToUnix=function(year,month,day,hour,minute,second,offset) {
return Math.round(Date.parse(year+"/"+(month+1)+"/"+day+" "+hour+":"+minute+":"+second+" "+offset)/1000);
};
var selTime=new Object();
selTime.year=1970;
selTime.month=1;
selTime.day=1;
selTime.hour=0;
selTime.minute=0;
selTime.second=0;
selTime.offset="+0000";
selTime.dest=0;
selTime.now=0;
selTime.fday=0;
selTime.tday=0;
function converttime(t) {
var neg=false;
if(t<0) {
neg=true;
t=Math.abs(t);
}
var init=t;
var days=Math.floor(init/(60*60*24));
var hours=Math.floor(((init/(60*60)%24)));
var minutes=Math.floor((init/60)%60);
var seconds=init%60;
hours=(hours.toString().length<2)?"0"+hours:hours;
minutes=(minutes.toString().length<2)?"0"+minutes:minutes;
seconds=(seconds.toString().length<2)?"0"+seconds:seconds;
var minus="";
if(neg) minus="-";
return minus+""+days+":"+hours+":"+minutes+":"+seconds;
}
var scolors={
colors1: [
[ 9, 10, 49], // 20% night
[ 9, 30, 79], // 40% night
[214,194, 95], // 60% morning cyan(yellow)
[233,104,172], // 80% afternoon pink
//[95,146,233], // 80% afternoon cyan
[183, 80,224], // 100% evening purple
],
colors2: [
[ 95,124,213], // 20% night blue?
[ 85,195,98], // 40% night green?
[214,176,105], // 60% morning cyan(yellow)
[233,93,155], // 80% afternoon pink
[173, 86,225], // 100% evening purple
],
colors3: [
[181,38,38], // 20% red
[106,181,38], // 40% green
[218,198,48], // 60% yellow
[48,193,185], // 80% cyan
[199,48,165], // 100% pink
],
};
function colorday(nsec,st=1) { // 0-86400 (60*60*24)
//var timespan=60*60*24*7*52;
//var timespan=60;
var timespan=60*60*24;
//var colors=[
// [ 9, 10, 49], // 20% night
// [ 9, 30, 79], // 40% night
// [214,194, 95], // 60% morning cyan(yellow)
// [233,104,172], // 80% afternoon pink
// //[95,146,233], // 80% afternoon cyan
// [183, 80,224], // 100% evening purple
//];
var colors=scolors['colors'+st];
//var c=colors.length-1;
var cObj={};
//cObj.red=colors[c][0];
//cObj.green=colors[c][1];
//cObj.blue=colors[c][2];
var tts=timespan;
var ttb=Math.floor(80*timespan/100);
//console.log(nsec);
//nsec=nsec*100/86400;
//nsec=nsec.toString().substr(-2);
//nsec=Math.floor(nsec*.6);
///console.log("n"+nsec);
var lighttext=false;
if(nsec<timespan) {
//var sel=[c-1,c];
var sel=[4,0]; // default
//var pR=Math.floor(20/3);
var pR=1;
var pG=Math.floor(20/3);
var pB=Math.floor(20/3)+pG;
var tsR=0;
var tsG=0;
var tsB=0;
if(nsec<(20*timespan/100)) {
tts=Math.floor(20*timespan/100);
ttb=0;
sel=[0,1];
} else if(nsec<(40*timespan/100)) {
tts=Math.floor(40*timespan/100);
ttb=Math.floor(20*timespan/100);
sel=[1,2];
} else if(nsec<(60*timespan/100)) {
tts=Math.floor(60*timespan/100);
ttb=Math.floor(40*timespan/100);
sel=[2,3];
} else if(nsec<(80*timespan/100)) {
tts=Math.floor(80*timespan/100);
ttb=Math.floor(60*timespan/100);
sel=[3,4];
} else {
// 100 = sel default 3,0
ttb=Math.floor(80*timespan/100);
}
var trang=tts-ttb;
var nrang=nsec-ttb;
tsR=Math.floor(((trang))/100);
tsG=Math.floor(((trang)*33)/100);
tsB=Math.floor(((trang)*66)/100);
//var p=nsec*100/tts;
var p=(nrang)*100/(trang);
var fP=nsec*100/timespan;
var ppR=0;
var ppG=0;
var ppB=0;
if(nrang>tsR) {
ppR=(nrang)*100/(tsG);
}
if(nrang>tsG) {
ppG=(nrang-tsG)*100/(tsG);
}
if(nrang>tsB) {
ppB=(nrang-tsB)*100/(tsG);
}
if(ppR>100) ppR=100;
if(ppG>100) ppG=100;
if(ppB>100) ppB=100;
if(fP>80 || fP<25) {
lighttext=true;
}
//parent.conlog("nsec="+nsec+" , timespan="+(timespan)+" , (100% = "+(60*60*24)+")")
;
//parent.conlog("tts="+tts+" , ttb="+ttb);
//parent.conlog("nrang="+nrang+" , trang="+trang);
//parent.conlog("p="+p+" , fP="+fP+" , lighttext="+lighttext);
//parent.conlog("pR="+pR+" , pG="+pG+" , pB="+pB);
//parent.conlog("tsR="+tsR+" , tsG="+tsG+" , tsB="+tsB);
//parent.conlog("ppR="+ppR+" , ppG="+ppG+" , ppB="+ppB);
if(colors[sel[0]][0]>colors[sel[1]][0]) {
cObj.red=colors[sel[0]][0]-Math.floor(ppR*(colors[sel[0]][0]-colors[sel[1]][0])/100);
} else if(colors[sel[0]][0]<colors[sel[1]][0]) {
cObj.red=colors[sel[0]][0]+Math.floor(ppR*(colors[sel[1]][0]-colors[sel[0]][0])/100);
} else {
cObj.red=colors[sel[1]][0];
}
if(colors[sel[0]][1]>colors[sel[1]][1]) {
cObj.green=colors[sel[0]][1]-Math.floor(ppG*(colors[sel[0]][1]-colors[sel[1]][1])/100);
} else if(colors[sel[0]][1]<colors[sel[1]][1]) {
cObj.green=colors[sel[0]][1]+Math.floor(ppG*(colors[sel[1]][1]-colors[sel[0]][1])/100);
} else {
cObj.green=colors[sel[1]][1];
}
if(colors[sel[0]][2]>colors[sel[1]][2]) {
cObj.blue=colors[sel[0]][2]-Math.floor(ppB*(colors[sel[0]][2]-colors[sel[1]][2])/100);
} else if(colors[sel[0]][2]<colors[sel[1]][2]) {
cObj.blue=colors[sel[0]][2]+Math.floor(ppB*(colors[sel[1]][2]-colors[sel[0]][2])/100);
} else {
cObj.blue=colors[sel[1]][2];
}
// cObj.red=colors[sel[0]][0]-Math.floor(p*(colors[sel[0]][0]-colors[sel[1]][0])/100);
//if(cObj.red<0) cObj.red=colors[sel[0]][0]+Math.floor(p*(colors[sel[1]][0]-colors[sel[0]][0])/100);
// cObj.green=colors[sel[0]][1]-Math.floor(p*(colors[sel[0]][1]-colors[sel[1]][1])/100);
//if(cObj.green<0) cObj.green=colors[sel[0]][1]+Math.floor(p*(colors[sel[1]][1]-colors[sel[0]][1])/100);
// cObj.blue=colors[sel[0]][2]-Math.floor(p*(colors[sel[0]][2]-colors[sel[1]][2])/100);
//if(cObj.blue<0) cObj.blue=colors[sel[0]][2]+Math.floor(p*(colors[sel[1]][2]-colors[sel[0]][2])/100);
if(nsec>=60*60*24*365) { nsec=Math.floor(nsec/365/24/60/60)+" year"; }
else if(nsec>=60*60*24*30) { nsec=Math.floor(nsec/30/24/60/60)+" month"; }
else if(nsec>=60*60*24*7) { nsec=Math.floor(nsec/7/24/60/60)+" week"; }
else if(nsec>=60*60*24) { nsec=Math.floor(nsec/24/60/60)+" day"; }
else if(nsec>=60*60) { nsec=Math.floor(nsec/60/60)+" hour"; }
else if(nsec>=60) { nsec=Math.floor(nsec/60)+" minute"; }
else { nsec=nsec+" second"; }
//nsec+=(nsec.substr(0,nsec.indexOf(" "))>1)?"s ago":" ago";
nsec+=(nsec.substr(0,nsec.indexOf(" "))>1)?"s":"";
} else {
nsec=Math.floor(nsec/365/24/60/60)+" year";
nsec+=(nsec.substr(0,nsec.indexOf(" "))>1)?"s":"";
}
//parent.conlog(""+cObj.red+","+cObj.green+","+cObj.blue+"");
return new Array(nsec,""+cObj.red+","+cObj.green+","+cObj.blue+"",lighttext);
}
var lastdegH=-1;
var lastdegM=-1;
var lastdegS=-1;
var csstrans="transform .5s ease";
var currentlightmode=0;
var srvDelta=30000; // init at sync time
var srvLTS=0;
var tmpservertime=0;
var evtHndIN=function(e) {
if(!ttplock) {
//ttplock=true;
//setTimeout(function() { ttplock=false; },100);
var img=false;
if(this.getAttribute('tx_img')) {
img=this.getAttribute('tx_img');
}
//parent.showcalclockinside('calclock',this.getAttribute('tx_note'),img,'tooltipb',0,this.offsetLeft-(window.innerWidth/2),this.offsetTop-24-window.scrollY);
}
}
var evtHndOUT=function(e) {
//parent.hidecalclockinside('calclock');
}
var uTCC;
var syncTCC=30;
var skipone=0;
async function updateTime() {
clearTimeout(uTCC);
var tbegin=new Date().getTime();
// for local instead of server set servertime to be javascript
// date time instead ~ remove uneccessary parts below;
//
if(srvDelta>=syncTCC*1000) {
synctime(); // main.js ajax
srvDelta=0;
srvLTS=tbegin;
skipone+=1000;
if(tmpservertime+Math.floor(skipone/1000)>servertime) {
servertime=tmpservertime+Math.floor(skipone/1000);
}
} else {
srvDelta+=tbegin-srvLTS;
srvLTS=tbegin;
if(tmpservertime+Math.floor(srvDelta/1000)>servertime) {
servertime=tmpservertime+Math.floor(srvDelta/1000);
}
skipone=srvDelta;
}
var diff=servertime+ntf;
var d=new Date(diff*1000);
//console.log("srvDelta="+srvDelta+", servertime="+servertime+", tmpserverime="+tmpservertime);
var html="";
var mid='m_cal_day_'+selTime.month+'_'+d.getDate();
if($(mid)) {
var tx4="";
if($(mid).getAttribute('addclass')) {
tx4=" "+$(mid).getAttribute('addclass');
}
if(d.getFullYear()==selTime.year && d.getMonth()==selTime.month && d.getDate()==selTime.day)
{
//console.log("selected "+d.getMonth());
//$(mid).className="cal_lnk marktoday markselected"+tx4;
$(mid).className="cal_lnk marktoday"+tx4;
if(tx4=="") {
$(mid).setAttribute('tx_note',"Todays date.");
}
//txdate=" onmouseover=\"parent.showcalclockinside('calclock','Todays date.',false,'tooltipb',0,this.offsetLeft-(window.innerWidth/2),this.offsetTop+28);\"";
if(tx4=="") {
if($(mid).getAttribute('data-evthndin')) {
$(mid).removeAttribute('data-evthndin');
$(mid).removeEventListener('mouseenter',evtHndIN);
}
if($(mid).getAttribute('data-evthndout')) {
$(mid).removeAttribute('data-evthndout');
$(mid).removeEventListener('mouseout',evtHndOUT);
}
$(mid).setAttribute('data-evthndin','1');
//$(mid).addEventListener('mouseenter',function evtHndIN(e) { parent.showcalclockinside('calclock','Todays date.',false,'tooltipb',0,this.offsetLeft-(window.innerWidth/2),this.offsetTop-24-window.scrollY)});
$(mid).addEventListener('mouseenter',evtHndIN);
var noclose=false;
if($(mid).getAttribute('tx_img')) {
if($(mid).getAttribute('tx_img')!="") {
noclose=true;
}
}
if(!noclose) {
$(mid).setAttribute('data-evthndout','1');
//$(mid).addEventListener('mouseout',function evtHndOUT(e) { parent.hidecalclockinside('calclock')});
$(mid).addEventListener('mouseout',evtHndOUT);
}
}
} else {
//$(mid).className="cal_lnk marktoday"+tx4;
$(mid).className="cal_lnk"+tx4;
}
}
items=$('cal_hours').getElementsByClassName('marktoday');
for(var i=0;i<items.length;i++) { items[i].className="citem"; }
var tdesc="night";
var tmpH=d.getHours();
var tmpM=d.getMinutes();
var tmpS=d.getSeconds();
if(tmpH>=18) {
tdesc="evening";
} else if(tmpH>=12) {
tdesc="afternoon";
} else if(tmpH>=6) {
tdesc="morning";
}
if($('tdesc')) {
$('tdesc').innerHTML="{"+tdesc+"-";
$('tdescb').innerHTML="-hours}";
}
var daysec=(tmpH*60*60)+(tmpM*60)+tmpS;
//daysec=tmpS;
//daysec=daysec.toString().substr(-2);
//daysec=Math.floor(daysec*.6);
var dayrgb=colorday(daysec);
//var fval=60;
var fval=86400;
var flipsec=daysec+((fval/8)*7);
if(flipsec>fval) {
flipsec=flipsec-fval;
}
var fliprgb=colorday(flipsec,2);
var cal_cb=$('cal_thismonth').getElementsByClassName('cal_cb');
for(var i=0;i<cal_cb.length;i++) {
cal_cb[i].style.background="rgba("+fliprgb[1]+",1)";
//if(fliprgb[2]==true) { // enable
// cal_cb[i].style.color="#dccbbe";
//} else {
cal_cb[i].style.color="#000099";
//}
//cal_cb[i].style.background="#1fd0b8";
}
var flip2sec=daysec+((fval/8)*4);
if(flip2sec>fval) {
flip2sec=flip2sec-fval;
}
var flip2rgb=colorday(flip2sec,2);
var cal_cd=$('cal_thismonth').getElementsByClassName('cal_cd');
for(var i=0;i<cal_cd.length;i++) {
//cal_cd[i].style.borderColor="rgba("+flip2rgb[1]+",1)";
//cal_cd[i].style.color="rgba("+flip2rgb[1]+",1)";
cal_cd[i].style.background="rgba("+flip2rgb[1]+",1)";
//if(flip2rgb[2]==true) { // enable
// cal_cd[i].style.color="#dccbbe";
//} else {
cal_cd[i].style.color="#000099";
//}
//cal_cd[i].style.color="#900";
//cal_cd[i].style.borderColor="#900";
}
var flip3sec=daysec+((fval/8)*6);
if(flip3sec>fval) {
flip3sec=flip3sec-fval;
}
var flip3rgb=colorday(flip3sec,2);
var cal_pb=$('cal_thismonth').getElementsByClassName('cal_pb');
for(var i=0;i<cal_pb.length;i++) {
cal_pb[i].style.background="rgba("+flip3rgb[1]+",1)";
//if(flip3rgb[2]==true) { // enable
// cal_pb[i].style.color="#dccbbe";
//} else {
cal_pb[i].style.color="#000099";
//}
//cal_pb[i].style.background="#d44108";
}
var flip4sec=daysec+((fval/8)*2);
if(flip4sec>fval) {
flip4sec=flip4sec-fval;
}
var flip4rgb=colorday(flip4sec,2);
var cal_pbv=$('cal_thismonth').getElementsByClassName('cal_pbv');
for(var i=0;i<cal_pbv.length;i++) {
cal_pbv[i].style.background="rgba("+flip4rgb[1]+",1)";
//if(flip4rgb[2]==true) { // enable
// cal_pbv[i].style.color="#dccbbe";
//} else {
cal_pbv[i].style.color="#000099";
//}
//cal_pbv[i].style.background="#d44108";
}
var flip5sec=daysec+((fval/8)*5);
if(flip5sec>fval) {
flip5sec=flip5sec-fval;
}
var flip5sec=daysec+((fval/8)*5);
if(flip5sec>fval) {
flip5sec=flip5sec-fval;
}
var flip5rgb=colorday(flip5sec,2);
var cal_pbp=$('cal_thismonth').getElementsByClassName('cal_pbp');
for(var i=0;i<cal_pbp.length;i++) {
cal_pbp[i].style.background="rgba("+flip5rgb[1]+",1)";
//if(flip5rgb[2]==true) { // enable
// cal_pbp[i].style.color="#dccbbe";
//} else {
cal_pbp[i].style.color="#000099";
//}
//cal_pbp[i].style.background="#d44108";
}
var flip6sec=daysec+((fval/8)*3);
if(flip6sec>fval) {
flip6sec=flip6sec-fval;
}
var flip6sec=daysec+((fval/8)*3);
if(flip6sec>fval) {
flip6sec=flip6sec-fval;
}
var flip6rgb=colorday(flip6sec,2);
var cal_ps=$('cal_thismonth').getElementsByClassName('cal_ps');
for(var i=0;i<cal_ps.length;i++) {
cal_ps[i].style.background="rgba("+flip6rgb[1]+",1)";
//if(flip6rgb[2]==true) { // enable
// cal_ps[i].style.color="#dccbbe";
//} else {
cal_ps[i].style.color="#000099";
//}
//cal_ps[i].style.background="#d44108";
}
var opa=62/100;
//if(typeof parent.pageopacity!=='undefined') {
// opa=parent.pageopacity/100;
//}
$('calclockinner').parentNode.style.background="rgba("+dayrgb[1]+","+opa+")";
//$('calclockinner').style.background="rgba("+dayrgb[1]+",0."+opa+")";
if(currentlightmode==0) {
if(dayrgb[2]==true) { // enable
var style = document.createElement('style');
style.type = 'text/css';
var styhtm="/* custom css dark mode */";
styhtm+=".calendar * { color: #dccbbe; }";
styhtm+=".calendar .cal_lnk, .calendar .citem { color: #dccbbe; border-color: #dccbbe; }";
styhtm+=".calendar .marktoday { background: #960; }";
style.innerHTML=styhtm;
document.getElementsByTagName('head')[0].appendChild(style);
currentlightmode=1;
}
} else {
if(dayrgb[2]==false) {
var styles=document.getElementsByTagName('style');
for(var i=0;i<styles.length;i++) {
if(styles[i].innerHTML.indexOf('/* custom css dark mode */')!=-1) {
styles[i].parentNode.removeChild(styles[i]);
break;
}
}
currentlightmode=0;
}
}
tmpH=tmpH%12 || 12;
var degH=tmpH*360/12; // 2*360=720/12=60 | 10*360=3600/12=300
var degM=tmpM*360/60; // 50*360=18000/60=300
var stepdegH=360/12; // 360/12=30deg
//degH+=degM*stepdegH/360; // 300*30=9000/360=25deg(+0-30)
var tmpdegH=degM*stepdegH/360; // 300*30=9000/360=25deg(0-30)
if(tmpdegH==0 && tmpH==1) tmpdegH=30; // fix for 0 at 12:59 to 1:00
var tmpstepdegH=Math.floor(tmpdegH/6);
degH+=(tmpstepdegH*6);
var degS=tmpS*360/60;
//if(tmpM>30) tmpH++; // round vs floor
if(tmpH>12) tmpH=1;
//parent.conlog(tmpH);
if($('cal_h_'+tmpH)) {
//if(tmpH==selTime.hour) $('cal_h_'+tmpH).className="citem marktoday markselected";
//else $('cal_h_'+tmpH).className="citem marktoday";
$('cal_h_'+tmpH).className="citem marktoday";
}
var resettrans=false;
if(degH<lastdegH) {
// short
$('cwshort_wrap').style.transform="rotateZ(360deg)";
resettrans=true;
}
if(degM<lastdegM) {
// long
$('cwlong_wrap').style.transform="rotateZ(360deg)";
resettrans=true;
}
if(degS<lastdegS) {
// sec
$('cwsec_wrap').style.transform="rotateZ(360deg)";
$('cwknob').style.transform="rotateZ(360deg)";
resettrans=true;
}
if(resettrans) {
await new Promise(resolve1 => setTimeout(async function() {
$('cwshort_wrap').style.transition="none";
$('cwlong_wrap').style.transition="none";
$('cwsec_wrap').style.transition="none";
$('cwknob').style.transition="none";
await new Promise(resolve2 => setTimeout(async function() {
if(degH<lastdegH) {
$('cwshort_wrap').style.transform="rotateZ(0deg)";
}
if(degM<lastdegM) {
$('cwlong_wrap').style.transform="rotateZ(0deg)";
}
if(degS<lastdegS) {
$('cwsec_wrap').style.transform="rotateZ(0deg)";
$('cwknob').style.transform="rotateZ(0deg)";
}
await new Promise(resolve3 => setTimeout(async function() {
$('cwshort_wrap').style.transition=csstrans;
$('cwlong_wrap').style.transition=csstrans;
$('cwsec_wrap').style.transition=csstrans;
$('cwknob').style.transition=csstrans;
$('cwshort_wrap').style.transform="rotateZ("+degH+"deg)";
$('cwlong_wrap').style.transform="rotateZ("+degM+"deg)";
$('cwsec_wrap').style.transform="rotateZ("+degS+"deg)";
$('cwknob').style.transform="rotateZ("+degS+"deg)";
resolve3();
},100));
resolve2();
}));
resolve1();
},600));
} else {
$('cwshort_wrap').style.transform="rotateZ("+degH+"deg)";
$('cwlong_wrap').style.transform="rotateZ("+degM+"deg)";
$('cwsec_wrap').style.transform="rotateZ("+degS+"deg)"
$('cwknob').style.transform="rotateZ("+degS+"deg)";
}
lastdegH=degH;
lastdegM=degM;
lastdegS=degS;
if(!firstloadcal) {
await new Promise(resolve => setTimeout(function() {
$('cwlong_wrap').style.transition=csstrans;
$('cwshort_wrap').style.transition=csstrans;
$('cwsec_wrap').style.transition=csstrans;
$('cwknob').style.transition=csstrans;
firstloadcal=true;
gotoDay(selTime.day);
resolve();
}));
}
// every second update
//scanMonthNotes();
var tend=new Date().getTime();
var tdelta=1000-(tend-tbegin);
//console.log(tdelta); // run in 1000ms-time spent
if(tdelta<0) tdelta=0;
uTCC=setTimeout(function() { updateTime(); },tdelta);
}
var currentMonth=0;
function nextMonth() {
currentMonth++;
printCalendar(currentMonth,false);
}
function prevMonth() {
currentMonth--;
printCalendar(currentMonth,false);
}
var clock1={};
clock1.num=12;
clock1.degree=360;
//clock1.degree=360*2;
clock1.radian=(Math.PI/180);
clock1.points=Math.round(clock1.degree/clock1.num);
clock1.radius=80-16;
function appendCumday(cbSel) {
if($(cbSel)) {
var cbyd=$(cbSel).getElementsByClassName('cumday');
for(var y=0;y<cbyd.length;y++) {
if(cbyd[y]) {
cbyd[y].parentNode.removeChild(cbyd[y]);
y--;
}
}
var cdy=document.createElement('div');
cdy.className="cumday";
$(cbSel).appendChild(cdy);
}
}
function highlightSelected() {
var x=noteDay;
var diff=servertime+ntf;
var d=new Date(diff*1000);
var citemclass="cal_lnk";
var elms=$('cal_thismonth').getElementsByClassName('cal_lnk');
var tries=100;
var i=0;
while(i<elms.length && tries>0) {
citemclass="cal_lnk";
if(selTime.day==(i+1) && d.getMonth()==selTime.month && d.getFullYear()==selTime.year) {
//if(selTime.day==(i+1) && selTime.month==noteMonth && selTime.year==noteYear) {
citemclass+=" marktoday";
} else if(x==(i+1) && selTime.month==noteMonth && selTime.year==noteYear) { // selected
citemclass+=" markselected";
} else {
citemclass+="";
}
elms[i].className=citemclass;
i++;
tries--;
}
if(tries<=0) console.log("exhausted 100 tries citemclass select");
}
var noteDay=0;
var noteMonth=0;
var noteYear=0;
function gotoDay(x) {
// load notes for date x
var datestr=selTime.year+"-"+(selTime.month+1)+"-"+x;
let stndrdth="th";
let sttest=x;
while(sttest>9) sttest-=10;
if(x==3) stndrdth="rd";
else if(x==2) stndrdth="nd";
else if(x==1) stndrdth="st";
noteYear=selTime.year;
noteMonth=selTime.month;
noteDay=x;
highlightSelected();
var dayw=x;
while(dayw>6) dayw-=7;
var humdatestr=str_day[dayw]+" "+str_month[selTime.month]+" "+x+stndrdth+" ("+selTime.year+")";
//alert(datestr);
$('selDate').innerHTML=humdatestr;
$('selDate').setAttribute('data-date',datestr);
// ie call to main.js for ajax
if(typeof loadnotes==='function') { // in main
loadnotes(datestr);
}
}
function scanMonthNotes() {
// after month change to mark days with notes
//
// ie call to main.js for ajax
if(typeof scannotes==='function') { // in main
scannotes(selTime.year,(selTime.month+1));
}
}
function daysInMonth(year, month) {
// Month is 0-indexed in JavaScript, so January is 0, February is 1, etc.
// To get the last day of the desired month, create a date for the
// first day of the *next* month and set the day to 0.
return new Date(year, month + 1, 0).getDate();
}
var str_day=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
var str_month=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var str_day_long=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var str_month_long=["January","February","March","April","May","June","July","August","September","October","November","December"];
var ttplock=false;
var hcciT;
async function printCalendar(mset=0,cc=true) {
var diff=servertime+ntf;
var mD=new Date(diff*1000);
var mmonth=mD.getMonth(); // 0-11
var myear=mD.getFullYear(); // yyyy
var thisyear=myear;
if(mset>0) { // month scroll
for(var i=0;i<mset;i++) {
if(mmonth>=11) {
mmonth=0;
myear++;
} else {
mmonth++;
}
}
} else if(mset<0) {
for(var i=0;i>mset;i--) {
if(mmonth<=0) {
mmonth=11;
myear--;
} else {
mmonth--;
}
}
}
var d=new Date(myear+"/"+(mmonth+1)+"/"+mD.getDate()+" "+mD.getHours()+":"+mD.getMinutes()+":"+mD.getSeconds());
//var d=new Date();
var year=d.getFullYear(); // yyyy
var month=d.getMonth(); // 0-11
var daym=d.getDate(); // 1-31
var dayw=d.getDay(); // 0-6
var hour=d.getHours(); // 0-23
var minute=d.getMinutes(); // 00-59
var cbmonth=month+":"+year;
selTime.year=year;
selTime.month=month;
selTime.day=daym;
selTime.hour=hour;
selTime.minute=minute;
selTime.tday=daysInMonth(year,month);
var thismonthdays=getDaysInMonth(month+1,year);
var nextmonthdays;
if(month<11) {
nextmonthdays=getDaysInMonth(month+2,year);
} else {
nextmonthdays=getDaysInMonth(1,year);
}
var firstday=(dayw<6)?str_day[dayw+1]:str_day[0];
var firstdayIdx=str_day.indexOf(firstday);
for(var i=daym;i>0;i--) {
if(firstdayIdx<=0) {
firstdayIdx=6;
} else {
firstdayIdx--;
}
firstday=str_day[firstdayIdx];
}
selTime.fday=firstdayIdx; // didnt need
var html;
var cols=7;
//var rows=Math.ceil(thismonthdays/cols)+1;
var rows=7;
var count=1;
var lockc=true;
// table 1
html="<div style=\"text-align: center;\">";
html+="<br />"
html+="<span style=\"width: 100%; display: inline-block;\"><input type=\"button\" style=\"float: left;\" class=\"nbtn nleft\" onclick=\"prevMonth();\" value=\"<\" />";
html+="<input type=\"button\" style=\"float: right;\" class=\"nbtn nright\" onclick=\"nextMonth();\" value=\">\" />";
html+=str_month_long[month]+" "+year+"<input type=\"button\" style=\"float: right;\" value=\" \" class=\"nbtn dummy\" /></span><br />";
html+="<br />"
html+="<div class=\"tbl wide\">";
for(var i=0;i<rows;i++) {
html+="<div class=\"tr\">";
for(var j=0;j<cols;j++) {
let jsel=j+1;
if(jsel>6) jsel=0;
if(i==0) {
// print title
html+="<div class=\"td\" style=\"width: 14%;\">";
html+=str_day[jsel];
} else {
// print days
var style="";
var style2="";
var txdate="";
if(count==daym) {
if(myear==new Date().getFullYear()) {
style=" marktoday";
}
}
html+="<div class=\"td\">";
if(jsel>=firstdayIdx) lockc=false;
if(count>thismonthdays) {
lockc=true;
firstdayIdx=str_day.indexOf(firstday);
}
if(!lockc) {
html+="<span id=\"m_cal_day_"+month+"_"+count+"\" class=\"cal_lnk"+style+"\""+txdate+" onclick=\"gotoDay("+count+");\">"+count+"</span>";
count++;
if(j==6) firstday=str_day[0];
else firstday=str_day[(j+1)];
} else {
html+=" ";
}
}
html+="</div>";
}
html+="</div>";
if(count>=thismonthdays) break;
}
html+="</div>"; // tbl end
html+="</div>";
$('cal_thismonth').innerHTML=html;
if(cc) { // clock draw
var msize=document.body.getElementsByClassName('cal_lnk');
var csizew=16+4;
var csizeh=16+4;
if(msize[0]) {
csizew=msize[0].clientWidth+4;
csizeh=msize[0].clientHeight+4;
}
var itostr="",html="",x,y,margin=77,cangle; // margin=radius
var printito="";
for(var i=0;i<clock1.num;i++) {
itostr=(i.toString().length<2)?"0"+i:i;
printito=itostr;
if(printito=='00') printito='12';
if(i<12 && !$('c1i'+itostr)) {
cangle=(i*clock1.points-90);
while(cangle>360) cangle-=360; // ex 630deg - 360 == 270deg
while(cangle<0) cangle+=360; // ex -90deg + 360 == 270deg
//if(i>11) margin=100;
x=Math.round(Math.cos((cangle)*clock1.radian)*margin);
y=Math.round(Math.sin((cangle)*clock1.radian)*margin)-5;
html+="<span class=\"citem\" id=\"cal_h_"+i+"\" style=\"top: "+(y+(clock1.radius+50))+"px; left: "+(x+clock1.radius+15)+"px; width: "+csizew+"px; height: "+csizeh+"px;\">"+printito+"</span>";
}
}
html+="<span style=\"display: inline-block; line-height: 250px; height: 100%; text-align: center; width: 100%; position: relative;\" id=\"cwcen\"><span id=\"cwknob\"></span><span id=\"cwlong_wrap\"><span id=\"cwlong\"></span></span><span id=\"cwshort_wrap\"><span id=\"cwshort\"></span></span><span id=\"cwsec_wrap\"><span id=\"cwsec\"></span></span><span id=\"tdesc\"></span><span id=\"tdescb\"></span></span>";
$('cal_hours').innerHTML=html;
} else {
highlightSelected();
}
//??html+="<span style=\"display: inline-block; line-height: 250px;\">Minute</span>";
//setTimeout(function() {
var cw=$('calclockinner').clientWidth;
var ch=$('calclockinner').clientHeight;
//console.log("calclockinner:"+ch);
// send size measure parenta
var parentmsg=['calclock',cw+":"+ch];
parent.postMessage(JSON.stringify(parentmsg),'*');
//},100);
updateTime();
// on month chage update
scanMonthNotes();
}
var firstloadcal=false;
/* calc */
function clickires() {
var t=prompt(oresdat,iresdat);
if(t != null && t != iresdat) {
iresdat=t;
$('output_result').innerHTML=iresdat;
}
}
Top