<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Calendar </title>
    <link rel="stylesheet" href="../css/wondrous/styles.css" type="text/css" />
</head>

<body>
    <div id="container">
        <div id="header">
            <h1><a href="../index.html">Rivet</a></h1>
            <h2 id="slogan">Webscripting for Tcl'ers</h2>
            <div class="clear"></div>
        </div>
        <div id="body">
            <div id="content">
                <h2><headline>Calendar </headline>
</h2>
                <div class="example">
 <!-- p class="title"><b>Example 7. The Calendar package</b></p -->
 <p>
                Rivet comes with a <b>Calendar</b>
 package that provides 3 classes for printing 
		          calendar tables in various forms.       		
      		 </p>
 <p>
					The <b>Calendar</b>
 class prints ascii calendar tables
					<pre class="programlisting">package require Calendar

set c [Calendar #auto]
set c_txt [$c emit]
puts $c_txt
      Jul 2010
 Su Mo Tu We Th Fr Sa 
              1  2  3
  4  5  6  7  8  9 10
 11 12 13 14 15 16 17
 18 19 20 21 22 23 24
 25 26 27 28 29 30 31
</pre>
 </p>
 <p>
						When it comes to writing web pages <b>HtmlCalendar</b>
 is much fancier than 
						Calendar. <b>HtmlCalendar</b>
 allows output customization of the cal table
						by controlling the markup and its attributes. 
				 </p>
 <pre class="programlisting">package require Calendar

proc ::cal_cell_attributes { day month year weekday } {
    if {$weekday == 3} {
        return [list class curr_wkday]
    }
}

set htmlc [HtmlCalendar #auto]
set html_txt [$htmlc emit -container {table class calendar} -current_weekday 3 \
                          -cell_function cal_cell_attributes ]
puts $html_txt
</pre>
 <p>
					with some CSS styling would print
				</p>
 <p>
  <img src="../picts/calendar.png"/>
 </p>
 <p>
				   Almost the whole HTML of <b>HtmlCalendar</b>
 can be customized.
					See the <a href="../manual/calendar_package.html">manual page</a>
 for package Calendar for further reading						
				 </p>
</div>



                <div class="contentbottom">
                    <div id="last_modified">Last Modified: 06-11-2011 11:47:35 UTC</div>
                </div>
            </div>

            <div class="sidebar">
                <ul>
                    <li id="rivetexamples">
    <h4 class="">Examples</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a href="hello_world.html" class="">Hello world!</a>
        </li>
        <li class="navitem">
            <a href="shaded_table.html" class="">A shaded table</a>
        </li>
        <li class="navitem">
            <a href="var_access.html" class="">Variable Access</a>
        </li>
        <li class="navitem">
            <a href="file_upload.html" class="">File Upload</a>
        </li>
        <li class="navitem">
            <a href="file_download.html" class="">File Download</a>
        </li>
        <li class="navitem">
            <a href="ajax.html" class="">XML and Ajax</a>
        </li>
        <li class="navitem">
            <a href="calendar.html" class="">Calendar</a>
        </li>
    </ul>
</li>
<li id="main">
    <h4 class="">Rivet</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a href="../index.html" class="">Rivet Homepage</a>
        </li>
        <li class="navitem">
            <a href="http://tcl.apache.org/" target="asf">Apache Tcl Home</a>
        </li>
        <li class="navitem">
            <a href="download.html" class="">Getting Rivet</a>
        </li>
        <li class="navitem">
            <a href="hello_world.html" class="">Examples</a>
        </li>
        <li class="navitem">
            <a href="about.html" class="">About Us - Contact</a>
        </li>
    </ul>
</li>
<li id="manual">
    <h4 class="">Manuals</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a href="http://tcl.apache.org/rivet/manual2.0/" target="rivetman2.0">Rivet 2.0 Manual</a>
        </li>
        <li class="navitem">
            <a href="http://tcl.apache.org/rivet/manual2.1/" target="rivetman2.1">Rivet 2.1 Manual</a>
        </li>
    </ul>
</li>

 
                </ul> 
            </div>
            <div class="clear"></div>
        </div>
    </div>
    <div id="footer">
        <div class="footer-content">
            <p><a href="http://www.apache.org/">Apache Software Foundation</a> | Design by <a href="http://www.spyka.net">Free CSS Templates</a> | <a href="http://www.justfreetemplates.com">Free Web Templates</a></p>
        </div>
    </div>
    <div style="text-align: center; font-size: 0.75em;">Design downloaded from <a href="http://www.freewebtemplates.com/">free website templates</a>.</div></body>
</html>

