~firefoxphpworknotesjs
3 itemsDownload ./*

..
calc.js
clock.js
main.js


jsclock.js
30 KB• 3•  1 day ago•  DownloadRawClose
1 day ago•  3

{}
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=\"&lt;\" />";
    html+="<input type=\"button\" style=\"float: right;\" class=\"nbtn nright\" onclick=\"nextMonth();\" value=\"&gt;\" />";
    html+=str_month_long[month]+" "+year+"<input type=\"button\" style=\"float: right;\" value=\"&nbsp;\" 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+="&nbsp;";
                }
            }

            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
©twily.info 2013 - 2025
twily at twily dot info



2 530 886 visits
... ^ v