The enclosed code works fine if I use:
        [* if ((($daycnt-1) % 7) == 0) { *] 
however if I make it
        [$ if ((($daycnt-1) % 7) == 0) $]
it seems to execute (at least partially, it's not clear that everything inside gets 
executed) every time.

Am I missing something about variable scope?  Or is something wrong here?  Note that 
the [$ is being executed within a [* loop.

I've stripped a bunch out of the code, so do't expect it to make a lot of sense 
otherwise.

<HEAD><TITLE>Monthly Calendar</TITLE>
    <script language="JavaScript">
<!--
function MM_displayStatusMsg(msgStr) { //v1.2
  status=msgStr;
  document.MM_returnValue = true;
}
//-->
</script>

</HEAD>

<body>

<CENTER>


<P>

<FONT SIZE="-1">


Choose your view:
    <A HREF="calendar.html?CurView=dayview&time=">Today's Events</A> |
    <FONT COLOR="#555555">This Month's Calendar</FONT> |
    <A HREF="calendar.html?CurView=listview&time=&month=&year=">This Month's 
Listing</A> <BR>
    </FONT>


<TABLE BORDER="1" CELLPADDING="4" WIDTH=100%>

<TR>

<TD COLSPAN=14 ALIGN=CENTER>

</TD>

</TR>

<TR>

<TD COLSPAN=14 ALIGN=CENTER>

<FONT SIZE="+2" COLOR="#800000"></FONT>

</TD>

</TR>


<tr>
        <th align=center colspan=2>[+ 7 +]</th>
        <th align=center colspan=2>[+ 1 +]</th>
        <th align=center colspan=2>[+ 2 +]</th>
        <th align=center colspan=2>[+ 3 +]</th>
        <th align=center colspan=2>[+ 4 +]</th>
        <th align=center colspan=2>[+ 5 +]</th>
        <th align=center colspan=2>[+ 6 +]</th>
</tr>

[-
    $NDays = 31;
    # Mon=1, Sun=7
    $FirstDOW = 3;
    if ($FirstDOW == 7) {
        $Offset = 0;
    } else {
        $Offset = $FirstDOW;
    }
    $EndPoint = ($NDays + $Offset) - (($NDays + $Offset) % 7);
    $EndPoint += $Offset + 1;
    $BegPoint = 0 - $Offset;
    #$dbgEval = 1;
-]

<tr>
[* for ($i = 0; $i < 7; ++$i) { *]
    <td align=left width="4%" bgcolor="#EEEEEE"> </td>
    <td align=left width="10%"> </td>
[* } *]
</tr>

[* for ($daycnt = 1, $i = $BegPoint+1; $i <= $EndPoint; ++$i, ++$daycnt) { *]
    [# The following line executes sometimes when it should not when using
     # the [$ directive.
     # However, if you change the line to use [ * (and change the
     # corresponding endif, it works fine.
     #]
    [# if ((($daycnt-1) % 7) == 0) #]
    [* if ((($daycnt-1) % 7) == 0) { *]
        <tr>
            [* for ($j = 0; $j < 7; ++$j) { *]
                [$ if ($i+$j < 1 || $i+$j > $NDays) $]
                    <td align=left valign=top colspan=2 bgcolor="#EEEEEE">
                        <font size=1>x</font>
                    </td>
                [$ else $]
                    <td valign=top align=left width="4%" bgcolor="#EEEEEE">
                        <a 
href="calendar.html?CurView=dayview&time=[+time()+]&day=[+$i+$j+]&year=[+$SWCCal::CurYear+]&month=[+$SWCCal::CurMonth+]">
 [+$i+$j+]</a>
                    </td>
                    <td align=left width="10%"></td>
                [$ endif $]
            [* } *]
        </tr>
        <tr>
    [* } *]
    [# endif #]

    [$ if ($i < 1 || $i > $NDays) $]
            <td align=left valign=top colspan=2 bgcolor="#EEEEEE">
                <font size=1>[+ $EndPoint +]<br><br><br><br><br></font>
            </td>
    [$ else $]
            <td align=left valign=top colspan=2>
                <font size=1>
                    <a 
href="calendar.html?CurView=detail&time=[+time()+]&UID=[+$titleUID+]" 
onMouseOver="MM_displayStatusMsg('[+$titleLongTmp+]');return 
document.MM_returnValue">[+$titleTmp+]</a><br>
                </font>
            </td>
    [$ endif $]

    [$ if (($daycnt % 7) == 0) $]
        </tr>
    [$ endif $]
[* } *]


</TABLE>
</CENTER>
</body>


Kee Hinckley    Somewhere Consulting Group - Consultants without the cubes(tm)

I'm not sure which upsets me more: that people are so unwilling to accept
responsibility for their own actions, or that they are so eager to regulate
everyone else's.

Reply via email to