<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. https://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="https://www.livejournal.com" xmlns:idx="urn:atom-extension:indexing" idx:index="no">
  <id>urn:lj:livejournal.com:atom1:s2ljdotcom</id>
  <title>S2 Layouts on LiveJournal.com</title>
  <subtitle>S2 Layouts on LiveJournal.com</subtitle>
  <author>
    <name>S2 Layouts on LiveJournal.com</name>
  </author>
  <link rel="alternate" type="text/html" href="https://s2ljdotcom.livejournal.com/"/>
  <link rel="self" type="text/xml" href="https://s2ljdotcom.livejournal.com/data/atom"/>
  <updated>2006-03-25T22:12:37Z</updated>
  <lj:journal userid="7618127" username="s2ljdotcom" type="community"/>
  <link rel="service.feed" type="application/x.atom+xml" href="https://s2ljdotcom.livejournal.com/data/atom" title="S2 Layouts on LiveJournal.com"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:s2ljdotcom:1255</id>
    <author>
      <name>kunzite</name>
    </author>
    <lj:poster user="kunzite1" userid="956023"/>
    <link rel="alternate" type="text/html" href="https://s2ljdotcom.livejournal.com/1255.html"/>
    <link rel="self" type="text/xml" href="https://s2ljdotcom.livejournal.com/data/atom/?itemid=1255"/>
    <title>a moony kunundrum</title>
    <published>2005-08-17T20:18:44Z</published>
    <updated>2006-03-25T22:12:37Z</updated>
    <category term="moony kunundrum"/>
    <category term="novel conundrum"/>
    <content type="html">changes:&lt;br /&gt;property-ified hard-coded english&lt;br /&gt;added tag support&lt;br /&gt;linkbar for all entries&lt;br /&gt;local vars in &lt;code&gt;print_entry()&lt;/code&gt; for selecting recent/friends/day/entry/reply userpics&lt;a name='cutid1-end'&gt;&lt;/a&gt;&lt;hr /&gt;todo:&lt;br /&gt;ajax comments&lt;br /&gt;quick reply&lt;a name='cutid2-end'&gt;&lt;/a&gt;&lt;hr /&gt;&lt;pre&gt;&lt;code&gt;# -*-s2-*-

layerinfo "type"            = "layout";
layerinfo "name"            = "A Moony Kunundrum";
layerinfo "source_viewable" = 1;
layerinfo "redist_uniq"     = "anovelconundrum/layout";
layerinfo "author_name"     = "taion/edited by kunzite1";

propgroup colors {
  property Color page_back {
    des = "Page background";
  }
  property Color entry_text {
    des = "Entry text color";
  }
  property Color text_weaker {
    des = "Weaker text color";
  }
  property Color page_link {
    des = "Link color";
  }
  property Color page_vlink {
    des = "Visited link color";
  }
  property Color page_alink {
    des = "Active link color";
  }
}

# From my last e-mail with Taion, the plan was to rasterize the leading fonts so that
# appearance issues could be avoided. However, I don't have access to many of the fonts
# that he tested with, so I'll have to put that off for later.

# You will need access to Microsoft provided fonts for most accurate rendering, but
# we are working on specifying usable alternatives that are cross platform friendly.
propgroup fonts {
  property use font_base;
  property string font_fallback {
    des = "Alternative font style";
  }
  property string font_type {
    des = "Body font type";
    note = "General font class for body text";
  }
  property int font_size {
    des = "Body font size (points)";
  }
  property int font_leading {
    des = "Body font leading (points)";
  }
  property string title_letterspacing {
    des = "Letterspacing in titles";
  }
  property bool title_smallcaps {
    des = "Smallcaps in titles";
  }
  property bool title_underline {
    des = "Underlined titles";
  }
  property string font_flourish_base {
    des = "Font face for decorative flourishes";
  }
  property string font_flourish_fallback {
    des = "Alternate font face for decorative flourishes";
  }
  property string font_flourish_type {
    des = "Font type for decorative flourishes";
  }
  property string font_secondary_base {
    des = "Font face for secondary text";
  }
  property string font_secondary_fallback {
    des = "Alternate font face for secondary text";
  }
  property string font_secondary_type {
    des = "Font type for secondary text";
  }
  property int font_secondary_size {
    des = "Secondary font size (points)";
    note = "For best results, match optical x-height with the body font";
  }
  property string flourish_rm {
    des = "Right margin for flourishes";
  }
  property string dc_rm {
    des = "Right margin for drop caps";
  }
}

propgroup presentation {
  property string dingbar_url { 
    des = "URL to spacer image between portions of content";
    note = "A default will be chosen for you if left blank.";
  }

  property use page_recent_items;
  property use page_friends_items;
  property use tags_aware;

  property string body_width {
    des = "Text body width";
  }

  property int dcLen {
    des = "Minimum length in characters before using drop caps";
  }

  property use view_entry_disabled;
  property use use_shared_pic;
  property use comment_userpic_style;
  property bool show_entrynav_icons {
    des = "Toggle to show the next, memory, edit, etc icons on the entry view page";
  }
  property string page_background_image {
    des = "URL to an image to be used for the page background";
  }
  property use external_stylesheet;
}

propgroup text {
  property use text_post_comment;
  property use text_read_comments;
  property use text_post_comment_friends;
  property use text_read_comments_friends;
  property use text_meta_music;
  property use text_meta_mood;
  property string text_seperator {
    des = "Text used to seperate stuff";
  }
  property string text_years_header {
    des = "Text used for Years header";
  }
  property string text_comment_screened {
    des = "Text used for donoting a screened comment";
  }
  property string text_comment_commented {
    des = "Text used for 'commented'";
  }
  property string text_comment_replied {
    des = "Text used for 'replied'";
  }
  property string text_comment_on {
    des = "Text used for 'on'";
  }
  property string text_reply_reply {
    des = "Text used for 'Reply'";
  }
  property string text_reply_entry {
    des = "Text used for 'to this entry'";
  }
  property string text_reply_comment {
    des = "Text used for 'to this comment'";
  }
  property string text_dingbar_alt {
    des = "Alternative text for dingbar images";
    noui = 1;
  }
}

# Set default colors
set entry_text              = "#000000";
set text_weaker             = "#666666";
set page_alink              = "#333333";
set page_back               = "#f5f5dc";
set page_link               = "#000000";
set page_vlink              = "#666666";

set body_width              = "35em";
set dcLen                   = 200;
set show_entrynav_icons     = true;
set page_background_image   = "";
set tags_aware              = true;

set dc_rm                   = "0.2em";
set dingbar_url             = "";
set flourish_rm             = "0.093em";
set font_base               = "Palatino Linotype";
set font_fallback           = "Book Antiqua";
set font_flourish_base      = "Edwardian Script ITC\", \"Edwardian Script ITC Semi-Expanded";
set font_flourish_fallback  = "Zapfino\", \"Viner Hand ITC";
set font_flourish_type      = "cursive";
set font_leading            = 14;
set font_secondary_base     = "Frutiger Linotype";
set font_secondary_fallback = "Tahoma";
set font_secondary_size     = 9;
set font_secondary_type     = "sans-serif";
set font_size               = 10;
set font_type               = "serif";
set title_letterspacing     = "0.08em";
set title_smallcaps         = true;
set title_underline         = false;

set text_dingbar_alt        = "* * *";
set text_meta_mood          = "Current Mood:";
set text_meta_music         = "Current Music:";
set text_poster_anonymous   = "an anonymous reader";
set text_seperator          = " &amp;amp;middot; ";
set text_view_archive       = "Archive";
set text_view_friends       = "Friends";
set text_view_recent        = "Entries";
set text_view_userinfo      = "Profile";
set text_years_header       = "Years";
set text_comment_screened   = "(Screened)";
set text_comment_commented  = "commented";
set text_comment_replied    = "replied";
set text_comment_on         = "&amp;amp;mdash;&amp;amp;thinsp;On";
set text_reply_reply        = "Reply";
set text_reply_entry        = "to this entry";
set text_reply_comment      = "to this comment";

function prop_init() {
  var PalItem start = PalItem(0, $*entry_text);
  var PalItem end   = PalItem(13, $*page_back);
    if ($*dingbar_url == "") { $*dingbar_url = palimg_gradient("anovelconundrum/dingbar.gif", $start, $end); }
}

function print_stylesheet() {
  print clean_url($*page_background_image) != "" ? "body { background-image: url($*page_background_image); }" : "";
"""
body {
  margin-top:    1in;
  margin-bottom: 0.6in;
}

body, td, h2, .caption, h1, h3 {
""";
if ($*font_base != "" or $*font_fallback != "" or $*font_type != "") {
    "font-family: ";
    if ($*font_base != "") {
        "\"$*font_base\"";
        if ($*font_fallback != "" or $*font_type != "") {
            ", ";
        }
    }
    if ($*font_fallback != "") {
        "\"$*font_fallback\"";
        if ($*font_type != "") {
            ", ";
        }
    }
    if ($*font_type != "") {
        "$*font_type";
    }
    ";\n";
}
"""
  font-size:   ${*font_size}pt;
  line-height: ${*font_leading}pt;
  font-weight: normal;
}

.caption, h1, h3 {
"""; if($*title_smallcaps) {"""
  font-variant:   small-caps;
  text-transform: lowercase;
"""; }
"""  letter-spacing: $*title_letterspacing;
}
h1 { font-size: 16pt; }
h3 { font-size: 12pt; }
h2, .noul, .ult {
  font-style: italic;
  margin:     0px;
}

.caption {
"""; if($*title_underline) {"""
  text-decoration: underline;
"""; }
""" }

.flourish, .bodyl:first-letter {
""";
if ($*font_flourish_base != "" or $*font_flourish_fallback != "" or $*font_flourish_type != "") {
    "font-family: ";
    if ($*font_flourish_base != "") {
        "\"$*font_flourish_base\"";
        if ($*font_flourish_fallback != "" or $*font_flourish_type != "") {
            ", ";
        }
    }
    if ($*font_flourish_fallback != "") {
        "\"$*font_flourish_fallback\"";
        if ($*font_flourish_type != "") {
            ", ";
        }
    }
    if ($*font_flourish_type != "") {
        "$*font_flourish_type";
    }
    ";\n";
}
"""
}

.flourish {
  margin-right:   ${*flourish_rm};
  z-index:        1;
  font-size:      34pt;
  position:       relative;
  top:            0.1em;
  text-transform: uppercase;
}

.sfon, .index, .author, select, input {
""";
if ($*font_secondary_base != "" or $*font_secondary_fallback != "" or $*font_secondary_type != "") {
    "font-family: ";
    if ($*font_secondary_base != "") {
        "\"$*font_secondary_base\"";
        if ($*font_secondary_fallback != "" or $*font_secondary_type != "") {
            ", ";
        }
    }
    if ($*font_secondary_fallback != "") {
        "\"$*font_secondary_fallback\"";
        if ($*font_secondary_type != "") {
            ", ";
        }
    }
    if ($*font_secondary_type != "") {
        "$*font_secondary_type";
    }
    ";\n";
}
""" font-size: ${*font_secondary_size}pt;

  line-height: ${*font_leading}pt;
}

.index {
  width:        10em;
  margin-right:  1.2em;
}

.bodybox { width: $*body_width; }

.body, .bodyl, .bodyns {
  text-align: justify;
}
.bodyl:first-letter {
  font-size:      """ + (2* $*font_leading) + """pt;
  margin-bottom:  -""" + $*font_size + """pt;
  margin-right:   ${*dc_rm};
  float:          left;
  border-bottom:  none;
  text-transform: uppercase;
  line-height:    """ + (2* $*font_leading) + """pt;
}
.bodyns:first-line, .sc, small, .sct {
"""; if($*title_smallcaps) {"""
  font-variant:   small-caps;
  text-transform: lowercase;
"""; }
    if($*title_underline) {"""
  text-decoration: underline;
"""; }
"""  letter-spacing: 0.05em;
}

.sct {
  letter-spacing: $*title_letterspacing;
  text-align:     center;
}

.author {
  float:         right;
  text-align:    center;
  margin-left:   1.5em;
  margin-bottom: 0.5em;
}

.ywp {
  width:          2em;
  margin-left:  0.5em;
  margin-right: 0.5em;
}

blockquote {
  margin-top:    ${*font_leading}pt;
  margin-bottom: ${*font_leading}pt;
  margin-left:   2em;
}

tt, pre, textarea {
  font-family: "Lucida Console", monospace;
  font-size:"""+ ((${*font_size}*4)/5) + """pt;
}

a {text-decoration: none;}
.body a, .bodyl a, .bodyns a, .bodynsl a, .author a, .ult a, .uts a { border-bottom: 1px dotted; }
.ljuser a, a img, .smallbar a, .noul a { border-bottom: none; }
a:hover, .ljuser a:hover { border-bottom: 1px solid; }

p {
  text-indent: 1.5em;
  margin:        0px;
  padding:       0px;
}

blockquote + p { text-indent: 0px; }

.uts {
  font-size:     80%;
  font-style:    italic;
  text-align:    center;
  line-height:   """ + $*font_size + """pt;
  margin-bottom: """ + ($*font_leading-$*font_size) + """pt;
}

.smallbar {
  font-size:   80%;
  font-style:  italic;
  text-align:  center;
  line-height: """ + (2*$*font_leading) + """pt;
  clear:       right;
}

.ljcomsel {
  position:     relative;
  top:          0.75pt;
  height:       7.5pt;
  padding-left: 1pt;
}
input#username, input#password { margin-right: 0.5em; }

.bs {
  margin-top:    """ + (2*$*font_leading) + """pt;
  margin-bottom: """ + (2*$*font_leading) + """pt;
  text-align:    center;
  line-height:   ${*font_leading}pt;
}

select, input, textarea {
  background-color: $*page_back;
  color:            $*entry_text;
""";
if ($*font_base != "" or $*font_fallback != "" or $*font_type != "") {
    "font-family: ";
    if ($*font_base != "") {
        "\"$*font_base\"";
        if ($*font_fallback != "" or $*font_type != "") {
            ", ";
        }
    }
    if ($*font_fallback != "") {
        "\"$*font_fallback\"";
        if ($*font_type != "") {
            ", ";
        }
    }
    if ($*font_type != "") {
        "$*font_type";
    }
    ";\n";
}
"""
  font-size:   ${*font_size}pt;
  line-height: ${*font_leading}pt;
  font-weight: normal;
}
""";
}

function find_lpar(string t) : int {
  foreach var int i (reverse (0 .. ($t-&amp;gt;length()-1))) {
    if($t-&amp;gt;substr($i,1)=="(") { return $i; }
  }
  return -1;
}

function render_title(string t, int len) {
  foreach var int i (0 .. ($len-1)) {
    var string pc = $t-&amp;gt;substr($i-1,1);
    var string cc = $t-&amp;gt;substr($i,1);
    if($cc==" ") { "$*text_seperator"; }
      elseif( $i &amp;gt; 0 and $pc != " ") { "$cc"; }
        elseif ($cc=="A" or $cc=="B" or $cc=="C" or $cc=="D" or $cc=="E" or $cc=="F" or $cc=="G" or $cc=="H" or $cc=="I" or $cc=="J" or $cc=="K" or $cc=="L" or $cc=="M" or $cc=="N" or $cc=="O" or $cc=="P" or $cc=="Q" or $cc=="R" or $cc=="S" or $cc=="T" or $cc=="U" or $cc=="V" or $cc=="W" or $cc=="X" or $cc=="Y" or $cc=="Z") {
          "&amp;lt;span class='flourish'&amp;gt;$cc&amp;lt;/span&amp;gt;";
        }
      else { "$cc"; }
  }
}

# if we've got the voicepost player, print text using trusted function
# else, use render_body() to make pretty formatting
function print_text(EntryLite e) {
  if(not $e.text-&amp;gt;contains("http://stat.livejournal.com/pp_play_mp3.swf")) {
    render_body($e.text);
  } else {
    $e-&amp;gt;print_text();
  }
}

function render_body(string t) {
  var int str=0;
  var bool par=false;
  var bool pars=false;
  $str = ($t-&amp;gt;substr(0,6) == "&amp;lt;br /&amp;gt;" ? 6 : 0);
  if($t-&amp;gt;substr(0,3) == "&amp;lt;p&amp;gt;") { $str = 3; $pars=true; }
  foreach var int i ($str .. ($t-&amp;gt;length()-1)) {
    if($t-&amp;gt;substr($i,12) == "&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;") {
      $str=$i+12;
      if($par) { "&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;"; }
        else { "&amp;lt;p&amp;gt;"; $par=true; }
      }
      elseif($pars and $t-&amp;gt;substr($i,4) == "&amp;lt;/p&amp;gt;") { $str=$i+4; $pars=false; }
      elseif($i &amp;gt;= $str) { print $t-&amp;gt;substr($i,1); }
  }
  if($par) { "&amp;lt;/p&amp;gt;"; }
}

function display_title(Page p) {
  var string dtitle = $p.global_title;
  var string stitle = $p-&amp;gt;view_title();
  $stitle = ($p.view == "recent" ? $p.global_subtitle : $stitle);
  var int lenm=$stitle-&amp;gt;length()-1;
  var int i=$dtitle-&amp;gt;length()+1;
  if ($dtitle == "") {
    $dtitle = $p.journal.name;
    $i=$dtitle-&amp;gt;length()+1;
  }
  if ($p.view == "friends") {
    $dtitle = $p-&amp;gt;view_title();
    $i=find_lpar($dtitle);
    if($i==-1) { $i = $lenm+2; }
  }

"""&amp;lt;div align="center"&amp;gt;
&amp;lt;h1&amp;gt;"""; render_title($dtitle,$i-1); """&amp;lt;/h1&amp;gt;""";
if($p.view != "friends" and $stitle != "") { """&amp;lt;br /&amp;gt;&amp;lt;h3 style="margin-top:-1em;"&amp;gt;$stitle&amp;lt;/h3&amp;gt;"""; }
elseif($p.view == "friends" and $i&amp;lt;$lenm) { "&amp;lt;br /&amp;gt;&amp;lt;h3 style='margin-top:-1em;'&amp;gt;" + $dtitle-&amp;gt;substr($i+1,($lenm-$i)-1) + "&amp;lt;/h3&amp;gt;"; }
"""&amp;lt;/div&amp;gt;""";
}

function Page::print() {
  var string title = $this-&amp;gt;title();

  var string links;
  var bool firstlink = true;
  foreach var string v ($.views_order) {
    if ($firstlink == false) {
      $links = "$links$*text_seperator";
    }
      else {
      $firstlink = false;
    }
    $links = $links + ("&amp;lt;a href='$.view_url{$v}'&amp;gt;"+lang_viewname($v)+"&amp;lt;/a&amp;gt;");
  }

"""&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;\n&amp;lt;html&amp;gt;\n&amp;lt;head&amp;gt;\n""";

    if ($*external_stylesheet) {
        println """&amp;lt;link rel="stylesheet" href="$.stylesheet_url" type="text/css" /&amp;gt;""";
    } else {
        println """&amp;lt;style type="text/css"&amp;gt;"""; print_stylesheet(); "&amp;lt;/style&amp;gt;";
    }
    $this-&amp;gt;print_head();

"""&amp;lt;title&amp;gt;$title&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body bgcolor="$*page_back" text="$*entry_text" link="$*page_link" vlink="$*page_vlink" alink="$*page_alink"&amp;gt;""";
display_title($this);
"""&amp;lt;div style="text-align:center; margin-bottom: ${*font_leading}pt;"&amp;gt;
&amp;lt;h2&amp;gt;$links&amp;lt;/h2&amp;gt;
&amp;lt;/div&amp;gt;
""";
$this-&amp;gt;print_body();
"""
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
""";
}

function Entry::print_linkbar() {
  var string   link_seperator = "&amp;lt;br /&amp;gt;"; # seperator for links

  # initialize array/hashes
  var string[] link_keyseq    = [""];
  var string{} link_url       = {"" =&amp;gt; ""};
  var string{} link_caption   = {"" =&amp;gt; ""};
  var string{} link_image     = {"" =&amp;gt; ""};

  var string print           = "";                                         # var for printing
  var Page   p               = get_page();                                 # page handle to determine interentry
  var bool   show_interentry = ($p.view == "entry" or $p.view == "reply"); # if entry/reply view, show interentry
  var int    keyseq_index    = 0;                                          # set index point for new link_keyseq array

  if($show_interentry) {
    # if show interentry, put previous entry link first
    $link_keyseq[$keyseq_index++] = "nav_prev";

    # get previous entry link information
    var Link prev             = $this-&amp;gt;get_link("nav_prev");
    $link_url{"nav_prev"}     = $prev.url;
    $link_caption{"nav_prev"} = $prev.caption;
    $link_image{"nav_prev"}   = $prev.icon.url;

    # get next entry link information
    var Link next             = $this-&amp;gt;get_link("nav_next");
    $link_url{"nav_next"}     = $next.url;
    $link_caption{"nav_next"} = $next.caption;
    $link_image{"nav_next"}   = $next.icon.url;
  }

  # gather current linkbar
  foreach var string link_key ($.link_keyseq) {
    var Link  link            = $this-&amp;gt;get_link($link_key);
    $link_url{$link_key}      = $link.url;
    $link_caption{$link_key}  = $link.caption;
    $link_image{$link_key}    = $link.icon.url;
    $link_keyseq[$keyseq_index++] = $link_key; # add this to new link_keyseq array
  }
  if($show_interentry) {
    # if show interentry, put next entry link last
    $link_keyseq[$keyseq_index++] = "nav_next";
  }

  #################################################################################################################
  # by now, the above hashes should look something like:                                                          #
  #                                                                                                               #
  # If interentry:                                                                                                #
  #   Previous Entry:                                                                                             # 
  #    $link_url{"nav_prev"}     = http://www.livejournal.com/go.bml?journal=exampleusername&amp;amp;itemid=256&amp;amp;dir=prev  #
  #    $link_caption{"nav_prev"} = Previous Entry                                                                 #
  #    $link_image{"nav_prev"}   = http://stat.livejournal.com/img/btn_prev.gif                                   #
  #                                                                                                               #
  # Edit Entry:                                                                                                   # 
  #  $link_url{"edit_entry"}     = http://www.livejournal.com/editjournal.bml?journal=exampleusername&amp;amp;itemid=256  #
  #  $link_caption{"edit_entry"} = Edit Entry                                                                     #
  #  $link_image{"edit_entry"}   = http://stat.livejournal.com/img/btn_edit.gif                                   #
  #                                                                                                               #
  # Edit Tags:                                                                                                    # 
  #  $link_url{"edit_tags"}      = http://www.livejournal.com/edittags.bml?journal=exampleusername&amp;amp;itemid=256     #
  #  $link_caption{"edit_tags"}  = Edit Tags                                                                      #
  #  $link_image{"edit_tags"}    = http://stat.livejournal.com/img/btn_edittags.gif                               #
  #                                                                                                               #
  # Add to Memories:                                                                                              # 
  #  $link_url{"mem_add"}        = http://www.livejournal.com/tools/memadd.bml?journal=exampleusername&amp;amp;itemid=256 #
  #  $link_caption{"mem_add"}    = Add to Memories                                                                #
  #  $link_image{"mem_add"}      = http://stat.livejournal.com/img/btn_memories.gif                               #
  #                                                                                                               #
  # If interentry:                                                                                                #
  #   Next Entry:                                                                                                 #
  #    $link_url{"nav_next"}     = http://www.livejournal.com/go.bml?journal=exampleusername&amp;amp;itemid=256&amp;amp;dir=next  #
  #    $link_caption{"nav_next"} = Next Entry                                                                     #
  #    $link_image{"nav_next"}   = http://stat.livejournal.com/img/btn_next.gif                                   #
  #################################################################################################################

  # alter data here
  $link_image{"nav_prev"}   = "";
  $link_image{"edit_entry"} = "";
  $link_image{"mem_add"}    = "";
  $link_image{"edit_tags"}  = "";
  $link_image{"nav_next"}   = "";

  # $link_keyseq[size($link_keyseq)] = "permalink";      # add a permalink to end of linkbar
  # $link_url{"permalink"}           = $.permalink_url;
  # $link_caption{"permalink"}       = $*text_permalink;
  # $link_image{"permalink"}         = "";

  $print = $link_seperator;

  # loop thru linkbar and add links to print var
  foreach var string link_key ($link_keyseq) {
    # if we can do performed action, url will be present
    if($link_url{$link_key} != "") {
      $print = $print + """&amp;lt;a href="$link_url{$link_key}"&amp;gt;""";
      # if image url available, use it
      if($link_image{$link_key} != "") {
        $print = $print + """&amp;lt;img src="$link_image{$link_key}" alt="$link_caption{$link_key}" title="$link_caption{$link_key}" border="0" /&amp;gt;""";
      } else {
        # else, just use text
        $print = $print + "$link_caption{$link_key}";
      }
      # add a seperator
      $print = $print + "&amp;lt;/a&amp;gt;$link_seperator";
    }
  }

  # hack off last seperator
  $print = $print-&amp;gt;substr(0, $print-&amp;gt;length() - $link_seperator-&amp;gt;length());

  # we're done! let's print it!
  print $print;
}

function Entry::print_metadata() {
  var string tags_header          = "Current Tags";
  var string tags_joiner          = ":";
  var Link   edit_tags            = $this-&amp;gt;get_link("edit_tags");
  if ((size $.metadata &amp;gt; 0) or ((size $.tags &amp;gt; 0) and ($*tags_aware))){
    var string currents = "";
    $currents = """&amp;lt;div style="margin-top:${*font_leading}pt;"&amp;gt;&amp;lt;table cellspacing="0" cellpadding="0" border="0"&amp;gt;""";
    foreach var string k ($.metadata){
      var string text = $k;
      var string val = $.metadata{$k};
      if ($k == "mood"){
        $text = $*text_meta_mood;
      } 
      elseif ($k == "music") {
        $text = $*text_meta_music;
      }
      if ($k == "mood" and defined $.mood_icon){
        var Image i = $.mood_icon;
        $val = "&amp;lt;img src='$i.url' width='$i.width' height='$i.height' align='middle' alt='' /&amp;gt; $val";
      }
      $currents = $currents + """&amp;lt;tr&amp;gt;&amp;lt;td align="right"&amp;gt;&amp;lt;div class="sc" style="margin-right:1em;"&amp;gt;$text&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td align="left"&amp;gt;$val&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;\n""";
    }
    if ((size $.tags &amp;gt; 0) and $*tags_aware) {
      var int    tcount               = 0;
      if($edit_tags.url != "") {
        $tags_header = """&amp;lt;a href="$edit_tags.url"&amp;gt;$tags_header&amp;lt;/a&amp;gt;""";
      }
      $currents = $currents + """&amp;lt;tr&amp;gt;&amp;lt;td align="right"&amp;gt;&amp;lt;div class="sc" style="margin-right:1em;"&amp;gt;$tags_header$tags_joiner&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td align="left"&amp;gt;""";
      foreach var Tag t ($.tags) {
        $currents = $currents + """&amp;lt;a rel="tag" href="$t.url"&amp;gt;$t.name&amp;lt;/a&amp;gt;""";
        $tcount++;
        if ($tcount != size $.tags) { $currents = $currents + ", "; }
      }
    }
    $currents = $currents + "&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;\n&amp;lt;/table&amp;gt;"; 
    println "$currents";
  }
}

function print_entry(Page p, Entry e) {
  var bool show_recent_userpic  = ($p.view == "recent")  and (true);
  var bool show_friends_userpic = ($p.view == "friends") and (true);
  var bool show_day_userpic     = ($p.view == "day")     and (true);
  var bool show_entry_userpic   = ($p.view == "entry")   and (true);
  var bool show_reply_userpic   = ($p.view == "reply")   and (true);
  var bool show_userpic         = $show_recent_userpic or $show_friends_userpic or $show_day_userpic or $show_entry_userpic or $show_reply_userpic;

  var string date=$e.time-&amp;gt;date_format("short");
  var string time=$e.time-&amp;gt;time_format();
  """
&amp;lt;table cellpadding='0' cellspacing='0' border='0' align='center'&amp;gt;
&amp;lt;tr&amp;gt;&amp;lt;td align="center" colspan="2"&amp;gt;&amp;lt;img
src="$*dingbar_url" alt="$*text_dingbar_alt" class="bs"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
    &amp;lt;td align="right" valign="top" width="100"&amp;gt;&amp;lt;div class="index"&amp;gt;""";
"""        &amp;lt;a href="$e.permalink_url"&amp;gt;$time&amp;lt;br /&amp;gt;
        $date&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;
    """;
    $e.comments-&amp;gt;print();
    $e-&amp;gt;print_linkbar();

"""    &amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;
    &amp;lt;td valign="top"&amp;gt;
        &amp;lt;div class="bodybox"&amp;gt;
        &amp;lt;div class="author"&amp;gt;""";

    if (defined $e.userpic and $show_userpic) {
        """&amp;lt;a href="$*SITEROOT/allpics.bml?user=$e.poster.username"&amp;gt;&amp;lt;img border="0" src="$e.userpic.url" width="$e.userpic.width" height="$e.userpic.height" alt="$e.poster.name" title="$e.poster.name" border="0" /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;""";
    }
    if ($e.poster.username != $e.journal.username and $e.journal.journal_type =="C") {
      """$e.journal&amp;lt;br /&amp;gt;""";
    }
    if(($e.poster.username != $e.journal.username) or $p.view == "friends") { print $e.poster; }
    if ($e.security != "") {
        $e.security_icon-&amp;gt;print();
    }
        
    var string subject=$e.subject;
    if($p.view=="entry") { $subject=""; }
"""&amp;lt;/div&amp;gt;
        &amp;lt;div class="caption"&amp;gt;
            $subject
        &amp;lt;/div&amp;gt;""";
    if ($subject == "" and $p.view!="entry") {"&amp;lt;div class='bodyns'&amp;gt;";}
    elseif ($e.text-&amp;gt;length() &amp;gt; $*dcLen) {"&amp;lt;div class='bodyl'&amp;gt;";}
    else {"&amp;lt;div class='body'&amp;gt;";}
    print_text($e);

    $e-&amp;gt;print_metadata();

"""&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;""";
"&amp;lt;/table&amp;gt;";
} # print_entry(Page,Entry,Color,Color)

function Page::print_entry(Entry e) {
   print_entry($this, $e);
}

function FriendsPage::print_entry(Entry e) {
   print_entry($this, $e);
}

function RecentPage::print_body() {
  var string previous = get_plural_phrase($.nav.backward_count, "text_skiplinks_back");
  var string next     = get_plural_phrase($.nav.forward_count, "text_skiplinks_forward");
    foreach var Entry e ($.entries) {
        $this-&amp;gt;print_entry($e);
    }
"""
&amp;lt;div align="center" class="bs" style="line-height: ${*font_leading}pt;"&amp;gt;&amp;lt;img
src="$*dingbar_url" style="text-align:center;" alt="$*text_dingbar_alt" /&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div align="center"&amp;gt;&amp;lt;h2&amp;gt;
""";

    # go forward/backward if possible
    if ($.nav.forward_url != "" or $.nav.backward_url != "") {
        var string sep;
        var string back;
        var string forward;
        if ($.nav.backward_url != "") {
            $back = """&amp;lt;a href="$.nav.backward_url"&amp;gt;$previous&amp;lt;/a&amp;gt;""";
        }
        if ($.nav.forward_url != "") {
            $forward = """&amp;lt;a href="$.nav.forward_url"&amp;gt;$next&amp;lt;/a&amp;gt;""";
        }
        if ($back != "" and $forward != "") { $sep = "$*text_seperator"; }
        "$back$sep$forward";
    }
    "&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;";
}

function CommentInfo::print() {
    if (not $.enabled) { return; }
    if ($.count &amp;gt; 0 or $.screened) {
        $this-&amp;gt;print_readlink(); "&amp;lt;br /&amp;gt;";
    }
    $this-&amp;gt;print_postlink();
}

function YearPage::print_year_links() {
    """&amp;lt;div class="bs"&amp;gt;
    &amp;lt;img src="$*dingbar_url" alt="$*text_dingbar_alt" /&amp;gt;
    &amp;lt;/div&amp;gt;&amp;lt;div class="sct"&amp;gt;$*text_years_header&amp;lt;/div&amp;gt;&amp;lt;h2 style="text-align:center;"&amp;gt;""";
    
    var bool d=false;
    foreach var YearYear y ($.years) {
        if($d) { "$*text_seperator"; }
        else { $d=true; }
        if ($y.displayed) {
            "$y.year";
        } else {
            "&amp;lt;a href=\"$y.url\"&amp;gt;$y.year&amp;lt;/a&amp;gt;";
        }
    }
    "&amp;lt;/h2&amp;gt;";
}

function YearPage::print_month(YearMonth m) {
    if (not $m.has_entries) { return; }

 """&amp;lt;div class="bs"&amp;gt;
&amp;lt;table cellpadding="0" cellspacing="0" border="0" summary="" align="center"&amp;gt;
&amp;lt;tr&amp;gt;&amp;lt;center class="noul"&amp;gt;
&amp;lt;a href="$m.url"&amp;gt;""";
        print $m-&amp;gt;month_format();
        """&amp;lt;/a&amp;gt;
&amp;lt;!-- now the headings for the week --&amp;gt;
&amp;lt;table align="center" cellpadding="0" cellspacing="0" border="0" summary=""&amp;gt;
&amp;lt;tr align="center"&amp;gt;
""";
    foreach var int d (weekdays()) {
        "&amp;lt;td align='center'&amp;gt;"+$*lang_dayname_short[$d]+"&amp;lt;/td&amp;gt;\n";
    }
    "&amp;lt;/tr&amp;gt;";
    foreach var YearWeek w ($m.weeks) {
        $w-&amp;gt;print();
    }

    """&amp;lt;/table&amp;gt;&amp;lt;/center&amp;gt;""";
}

function YearWeek::print() {
    "&amp;lt;tr valign='top'&amp;gt;";
    if ($.pre_empty) { "&amp;lt;td colspan='$.pre_empty'&amp;gt;&amp;lt;/td&amp;gt;"; }
    foreach var YearDay d ($.days) {
        """&amp;lt;td&amp;gt;&amp;lt;div class="ywp"&amp;gt;&amp;lt;div class="sfon"&amp;gt;$d.day&amp;lt;/div&amp;gt;""";
        if ($d.num_entries) {
            """&amp;lt;div class="uts"&amp;gt;&amp;lt;a href="$d.url"&amp;gt;$d.num_entries&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;""";
        } else {
            "&amp;amp;nbsp;";
        }
        "&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;";
    }
    if ($.post_empty) { "&amp;lt;td colspan='$.post_empty'&amp;gt;&amp;lt;/td&amp;gt;"; }
    "&amp;lt;/tr&amp;gt;";
}

function DayPage::print_body() {
    if (not $.has_entries) { print "&amp;lt;div class='sct'&amp;gt;" + ehtml($*text_noentries_day) + "&amp;lt;/div&amp;gt;"; }

    foreach var Entry e ($.entries) {
        $this-&amp;gt;print_entry($e);
    }

    """&amp;lt;div class="bs"&amp;gt;
    &amp;lt;img src="$*dingbar_url" alt="$*text_dingbar_alt" /&amp;gt;
    &amp;lt;/div&amp;gt;""";
    var string tprev = ehtml($*text_day_prev);
    var string tnext = ehtml($*text_day_next);
    """&amp;lt;center&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;a href="$.prev_url"&amp;gt;$tprev&amp;lt;/a&amp;gt;$*text_seperator&amp;lt;a href="$.next_url"&amp;gt;$tnext&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;&amp;lt;/center&amp;gt;""";

}

function MonthPage::print_body() {
    """&amp;lt;div class="bs"&amp;gt;
    &amp;lt;img src="$*dingbar_url" alt="$*text_dingbar_alt" /&amp;gt;
    &amp;lt;/div&amp;gt;""";
    "&amp;lt;center&amp;gt;&amp;lt;div class='bodybox'&amp;gt;&amp;lt;center&amp;gt;&amp;lt;table border='0' cellspacing='0' cellpadding='0'&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;dl&amp;gt;";
    foreach var MonthDay d ($.days) {
        if ($d.has_entries) {
            "&amp;lt;dt&amp;gt;&amp;lt;a href=\"$d.url\"&amp;gt;&amp;lt;i&amp;gt;";
            print lang_ordinal($d.day);
            "&amp;lt;/i&amp;gt;&amp;lt;/a&amp;gt;:&amp;lt;/dt&amp;gt;\n&amp;lt;dd&amp;gt;";
            $d-&amp;gt;print_subjectlist();
            "&amp;lt;/dd&amp;gt;\n";
        }
    }
    "&amp;lt;/dl&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/center&amp;gt;\n";
    """&amp;lt;div class="bs"&amp;gt;
    &amp;lt;img src="$*dingbar_url" alt="$*text_dingbar_alt" /&amp;gt;
    &amp;lt;/div&amp;gt;""";
    "&amp;lt;form method='post' action='$.redir.url'&amp;gt;&amp;lt;center&amp;gt;";
    $.redir-&amp;gt;print_hiddens();
    if ($.prev_url != "") { "&amp;lt;a href='$.prev_url' style='font-size:12pt;'&amp;gt;&amp;amp;#9756;&amp;lt;/a&amp;gt; "; }
    if (size $.months &amp;gt; 1) {
        "&amp;lt;select name='redir_key'&amp;gt;\n";
        foreach var MonthEntryInfo mei ($.months) {
            var string sel;
            if ($mei.date.year == $.date.year and $mei.date.month == $.date.month) {
                $sel = " selected='selected'";
            }
            "&amp;lt;option value='$mei.redir_key'$sel&amp;gt;" + $mei.date-&amp;gt;date_format($*lang_fmt_month_long) + "&amp;lt;/option&amp;gt;";
        }
        "&amp;lt;/select&amp;gt;\n&amp;lt;input type='submit' value='View' /&amp;gt;";
    }
    if ($.next_url != "") { " &amp;lt;a href='$.next_url' style='font-size:12pt;'&amp;gt;&amp;amp;#9758;&amp;lt;/a&amp;gt;\n"; }
    "&amp;lt;/center&amp;gt;&amp;lt;/form&amp;gt;";
}

function EntryPage::print_body() {
    print_entry($this, $.entry);

    if ($.entry.comments.enabled and $.comment_pages.total_subitems &amp;gt; 0) {
        $.comment_pages-&amp;gt;print();

        $this-&amp;gt;print_multiform_start();
        "&amp;lt;div style='margin-top: 7pt;'&amp;gt;&amp;lt;/div&amp;gt;";
        "&amp;lt;table align='center' cellspacing='0' border='0' cellpadding='0' style='display: none;'&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;";
        $this-&amp;gt;print_comments($.comments);
        "&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;";

        $.comment_pages-&amp;gt;print();

        if ($this.multiform_on) {"""
            &amp;lt;div class="bs"&amp;gt;
            &amp;lt;img src="$*dingbar_url" alt="$*text_dingbar_alt" /&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div style="text-align: center;"&amp;gt;""";
            $this-&amp;gt;print_multiform_actionline();
            $this-&amp;gt;print_multiform_end();
            "&amp;lt;/div&amp;gt;";
        }
    }
}

function ItemRange::print() {
    if ($.all_subitems_displayed) { return; }
    """&amp;lt;div class="bs"&amp;gt;
    &amp;lt;img src="$*dingbar_url" alt="$*text_dingbar_alt" /&amp;gt;
    &amp;lt;/div&amp;gt;""";
    "&amp;lt;center&amp;gt;";
    "&amp;lt;a name='comments'&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;div style='width: $*body_width; text-align:center;'&amp;gt;";
    "&amp;lt;h2&amp;gt;" + lang_page_of_pages($.current, $.total) + "&amp;lt;/h2&amp;gt;";
    var string url_prev = $this-&amp;gt;url_of($.current - 1);
    "&amp;lt;table cellspacing='0' cellpadding='0' border='0' align='center'&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td align='center' style='font-size: 14pt'&amp;gt;";
    if ($.current != 1) {
        print "&amp;lt;a href='$url_prev#comments'&amp;gt;&amp;amp;#9756;&amp;lt;/a&amp;gt;";
    } else {
        print "&amp;amp;#9756;";
    }
    print " &amp;lt;/td&amp;gt;&amp;lt;td align='center'&amp;gt;";
    foreach var int i (1..$.total) {
        if ($i == $.current) { "$i"; }
        else {
            var string url_of = $this-&amp;gt;url_of($i);
            "&amp;lt;a href='$url_of#comments'&amp;gt;$i&amp;lt;/a&amp;gt;";
        }
        if ($i != $.total) { ", "; }
    }
    "&amp;lt;/td&amp;gt;&amp;lt;td align='center' style='font-size: 14pt'&amp;gt; ";
    var string url_next = $this-&amp;gt;url_of($.current + 1);
    if ($.current != $.total) {
        print "&amp;lt;a href='$url_next#comments'&amp;gt;&amp;amp;#9758;&amp;lt;/a&amp;gt;";
    } else {
        print "&amp;amp;#9758;";
    }
    "&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/center&amp;gt;";
}

function EntryPage::print_comments(Comment[] cs) {
    if (size $cs == 0) { return; }
    foreach var Comment c ($cs) {
        if($c.depth==1) {
            "&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;";
            """&amp;lt;div class="bs"&amp;gt;
              &amp;lt;img src="$*dingbar_url" alt="$*text_dingbar_alt" /&amp;gt;
            &amp;lt;/div&amp;gt;""";
            "&amp;lt;table align='center' cellspacing='0' border='0' cellpadding='0'&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;";
        }
        var int indent = ($c.depth - 1) * 21;
        "&amp;lt;div style='margin-left: ${indent}pt;'&amp;gt;\n";
        if ($c.full) {
            $this-&amp;gt;print_comment($c);
        } else {
            $this-&amp;gt;print_comment_partial($c);
        }
        "&amp;lt;/div&amp;gt;";
        $this-&amp;gt;print_comments($c.replies);
    }
}

function EntryPage::print_comment(Comment c) {
    var string poster = defined $c.poster ? $c.poster-&amp;gt;as_string() : $*text_poster_anonymous;
    var string sub_icon;
    if (defined $c.subject_icon) {
        $sub_icon = $c.subject_icon-&amp;gt;as_string();
    }
    "&amp;lt;a name='$c.anchor'&amp;gt;&amp;lt;/a&amp;gt;";
    "&amp;lt;div class='bodybox'" + ($c.depth&amp;gt;1? " style='margin-top:${*font_leading}pt;'" : "") + "&amp;gt;";
    if (defined $c.userpic and $*comment_userpic_style != "off") { 
        var int w = $c.userpic.width;
        var int h = $c.userpic.height;
        # WARNING: this will later be done by the system (it'll be a
        # constructional property), so don't copy this hack into your
        # layout layers or you'll be messed up later.
        if ($*comment_userpic_style == "small") {
            $w = $w / 2;
            $h = $h / 2;
        }
        "&amp;lt;img src='$c.userpic.url' width='$w' height='$h' alt='$c.poster.username' style='float: right;' class='author' /&amp;gt;";
    }

    ### From, date, etc
    "&amp;lt;div class='noul'&amp;gt;";
    if ($c.screened) { "&amp;lt;span style='color:$*text_weaker;'&amp;gt;$*text_comment_screened &amp;lt;/span&amp;gt;"; }
    "On " + $c.time-&amp;gt;date_format("long") + ", " + $c.time-&amp;gt;time_format() + ", $poster ";
    if ($c.metadata{"poster_ip"}) { "(" + $c.metadata{"poster_ip"} + ") "; }
    "&amp;lt;a href='$c.permalink_url'&amp;gt;";
    if ($c.depth == 1) { "$*text_comment_commented"; }
    else { "$*text_comment_replied"; }
    "&amp;lt;/a&amp;gt;:&amp;lt;/div&amp;gt;";

    print (defined $c.subject_icon or $c.subject != "") ? "&amp;lt;div class='caption'&amp;gt;$c.subject_icon $c.subject&amp;lt;/div&amp;gt;" : "";

    "&amp;lt;div class='body'&amp;gt;";
    print_text($c);
    print "&amp;lt;/div&amp;gt;&amp;lt;div class='smallbar'&amp;gt;";
    if ($c.frozen) { 
        "$*text_comment_frozen";
    } else {
        "&amp;lt;a href='$c.reply_url'&amp;gt;$*text_comment_reply&amp;lt;/a&amp;gt;";
    }
    if ($c.parent_url != "") { "$*text_seperator&amp;lt;a href='$c.parent_url'&amp;gt;$*text_comment_parent&amp;lt;/a&amp;gt;"; }
    if ($c.thread_url != "") { "$*text_seperator&amp;lt;a href='$c.thread_url'&amp;gt;$*text_comment_thread&amp;lt;/a&amp;gt;"; }
    $c-&amp;gt;print_linkbar();
    if ($this.multiform_on) {
        "$*text_seperator";
        "&amp;lt;label for='ljcomsel_$c.talkid'&amp;gt;$*text_multiform_check&amp;lt;/label&amp;gt;";
        $c-&amp;gt;print_multiform_check();
    }
    "&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;";
}


function EntryPage::print_comment_partial(Comment c) {
    var string poster = defined $c.poster ? $c.poster-&amp;gt;as_string() : $*text_poster_anonymous;
    var bool subj = $c.subject != "";
    "&amp;lt;div class='ult' style='width:$*body_width; margin-top:${*font_leading}pt;'&amp;gt;";
    "On$*text_comment_on " + $c.time-&amp;gt;date_format("long") + ", " + $c.time-&amp;gt;time_format() + ", $poster ";
    if ($c.metadata{"poster_ip"}) { "(" + $c.metadata{"poster_ip"} + ") "; }
    if($subj) { """$*text_comment_replied, &amp;lt;a href="$c.permalink_url"&amp;gt;&amp;amp;ldquo;$c.subject&amp;amp;rdquo;&amp;lt;/a&amp;gt;"""; }
    else { """posted &amp;lt;a href="$c.permalink_url"&amp;gt;a reply&amp;lt;/a&amp;gt;"""; }
    ".&amp;lt;/div&amp;gt;";
}

function Comment::print_linkbar() {
    var Link link;
    foreach var string k ($.link_keyseq) {
        $link = $this-&amp;gt;get_link($k);
        ($link.caption != "") ? "$*text_seperator&amp;lt;a href='$link.url'&amp;gt;$link.caption&amp;lt;/a&amp;gt;" : "";
    }
}

function ReplyPage::print_body() {
    var bool ent = $.replyto.permalink_url == $.entry.permalink_url;

    if($ent) {
        print_entry($this, $.entry);
    }
    else {
        """&amp;lt;div class="bs"&amp;gt;
        &amp;lt;img src="$*dingbar_url" alt="$*text_dingbar_alt" /&amp;gt;
        &amp;lt;/div&amp;gt;""";
    
        var EntryLite c = $.replyto;
        var string poster = defined $c.poster ? $c.poster-&amp;gt;as_string() : $*text_poster_anonymous;
        "&amp;lt;center&amp;gt;&amp;lt;div style='width: $*body_width;'&amp;gt;";

        if (defined $c.userpic and $*comment_userpic_style != "off") { 
            var int w = $c.userpic.width;
            var int h = $c.userpic.height;
            # WARNING: this will later be done by the system (it'll be a
            # constructional property), so don't copy this hack into your
            # layout layers or you'll be messed up later.
            if ($*comment_userpic_style == "small") {
                $w = $w / 2;
                $h = $h / 2;
            }
            "&amp;lt;img src='$c.userpic.url' width='$w' height='$h' alt='$c.poster.name' style='float: right;' class='author' /&amp;gt;";

        }
    
        ### From, date, etc

        "&amp;lt;div class='noul'&amp;gt;";
        "On " + $c.time-&amp;gt;date_format("long") + ", " + $c.time-&amp;gt;time_format() + ", $poster ";
        if ($c.metadata{"poster_ip"}) { "(" + $c.metadata{"poster_ip"} + ") "; }
        "&amp;lt;a href='$c.permalink_url'&amp;gt;$*text_comment_commented:&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;";
    
        print ($c.subject != "") ? "&amp;lt;div class='caption'&amp;gt;$c.subject&amp;lt;/div&amp;gt;" : "";
    
        "&amp;lt;div class='body'&amp;gt;";
        print_text($c);
        "&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/center&amp;gt;";
    }

    """&amp;lt;div class="bs"&amp;gt;
    &amp;lt;img src="$*dingbar_url" alt="$*text_dingbar_alt" /&amp;gt;
    &amp;lt;/div&amp;gt;""";
    "&amp;lt;div style='text-align:center;'&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;a href='$.entry.comments.read_url'&amp;gt;$*text_reply_back&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;";
    """&amp;lt;div class="bs"&amp;gt;
    &amp;lt;img src="$*dingbar_url" alt="$*text_dingbar_alt" /&amp;gt;
    &amp;lt;/div&amp;gt;""";

    if (not $.entry.comments.enabled) {
        print "&amp;lt;div class='sct'&amp;gt;$*text_reply_nocomments&amp;lt;/div&amp;gt;";
        return;
    }


    "&amp;lt;center&amp;gt;&amp;lt;h3 style='margin-top:0px; line-height:" + (2*$*font_leading) + "pt;'&amp;gt;$*text_reply_reply " + ($ent ? "$*text_reply_entry" : "$*text_reply_comment") + ":&amp;lt;/h3&amp;gt;";
    $.form-&amp;gt;print();
    "&amp;lt;/center&amp;gt;";
}&lt;/code&gt;&lt;/pre&gt;&lt;a name='cutid3-end'&gt;&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:s2ljdotcom:940</id>
    <author>
      <name>kunzite</name>
    </author>
    <lj:poster user="kunzite1" userid="956023"/>
    <link rel="alternate" type="text/html" href="https://s2ljdotcom.livejournal.com/940.html"/>
    <link rel="self" type="text/xml" href="https://s2ljdotcom.livejournal.com/data/atom/?itemid=940"/>
    <title>tranqunzy1</title>
    <published>2005-07-04T16:17:03Z</published>
    <updated>2006-03-25T22:07:51Z</updated>
    <category term="tranqunzy1"/>
    <category term="tranquilityii"/>
    <content type="html">property declarations prettyified.&lt;br /&gt;added properties for frozen comment colors.&lt;br /&gt;sidebar stuffs turned into own functions.&lt;br /&gt;tags list box added.&lt;br /&gt;disable reply link for frozen comments.&lt;br /&gt;stylesheet MUCH easier to read.&lt;br /&gt;ajax comments.&lt;br /&gt;added tags to Entry::print_metadata()&lt;a name='cutid1-end'&gt;&lt;/a&gt;&lt;hr /&gt;&lt;pre&gt;# LAYER INFO
layerinfo "redist_uniq" = "tranquilityii/layout";
layerinfo "type"        = "layout";
layerinfo "name"        = "Tranquility II";
layerinfo "des"         = "XHTML/CSS Compliant layout.  Relax./Heavily edited by lj:kunzite1";
layerinfo "author_name" = "Matthew Vince/Mike Trethewey";
layerinfo "lang"        = "en";

set tags_aware = true;

# PROPERTIES: COLORS
propgroup Colors {
  # odd
  property Color c_main_border {
    des = "Border color of main column";
  }
  property Color c_main_background {
  des = "Background color of main column";
  }
  property Color c_menu_border {
  des = "Border color of menu";
  }
  property Color c_header_background {
  des = "Header background color";
  }
  property Color c_header_border {
  des = "Header border color";
  }
  # page
  property Color c_page_background {
    des = "Page background color";
  }
  property Color c_page_title {
    des = "Page title color";
  }
  property Color c_page_text {
    des = "Page text color";
  }
  property Color c_page_link {
    des = "Page link color";
  }
  property Color c_page_link_visited {
    des = "Page visited link color";
  }
  property Color c_page_link_hover {
    des = "Page hover link color";
  }
  property Color c_page_link_active {
    des = "Page active link color";
  }
  # menu
  property Color c_menu_background {
    des = "Side Menu background color";
  }
  property Color c_menu_link {
    des = "Side Menu link color";
  }
  property Color c_menu_link_visited {
    des = "Side Menu visited link color";
  }
  property Color c_menu_link_hover {
    des = "Side Menu hover link color";
  }
  property Color c_menu_link_active {
    des = "Side Menu active link color";
  }
  property Color c_menu_text_color {
    des = "Side Menu text color";
  }
  property Color c_menu_header_color {
    des = "Side Menu header color";
  }
  property Color c_menu_current {
    des = "Current menu item color";
  }
  # entry
  property Color c_entry_background {
    des = "Entry background color";
  }
  property Color c_entry_link {
    des = "Entry link color";
  }
  property Color c_entry_link_visited {
    des = "Entry visited link color";
  }
  property Color c_entry_link_hover {
    des = "Entry hover link color";
  }
  property Color c_entry_link_active {
    des = "Entry active link color";
  }
  property Color c_entry_text_color {
    des = "Entry text color";
  }
  property Color c_entry_title_color {
    des = "Entry title color";
  }
  property Color c_entry_border {
    des = "Entry bottom border color";
  }
  # metadata
  property Color c_meta_background {
    des = "Entry metadata background color";
  }
  property Color c_meta_link {
    des = "Entry metadata link color";
  }
  property Color c_meta_link_visited {
    des = "Entry metadata visited link color";
  }
  property Color c_meta_link_hover {
    des = "Entry metadata hover link color";
  }
  property Color c_meta_link_active {
    des = "Entry metadata active link color";
  }
  property Color c_meta_text_color {
    des = "Entry metadata text color";
  }
  # footer
  property Color c_footer_background {
    des = "Page footer background color";
  }
  property Color c_footer_link {
    des = "Page footer link color";
  }
  property Color c_footer_link_visited {
    des = "Page footer visited link color";
  }
  property Color c_footer_link_hover {
    des = "Page footer hover link color";
  }
  property Color c_footer_link_active {
    des = "Page footer active link color";
  }
  property Color c_footer_text_color {
    des = "Page footer text color";
  }
  # comments
  property Color c_comment_one_link {
    des = "Comment one link color";
  }
  property Color c_comment_one_link_visited {
    des = "Comment one visited link color";
  }
  property Color c_comment_one_link_hover {
    des = "Comment one hover link color";
  }
  property Color c_comment_one_link_active {
    des = "Comment one active link color";
  }
  property Color c_comment_one_text_color {
    des = "Comment one text color";
  }
  property Color c_comment_one_title_color {
    des = "Comment one title color";
  }
  property Color c_comment_one_background {
    des = "Comment bar one background color";
  }
  property Color c_comment_one_border {
    des = "Comment one bottom border color";
  }
  property Color c_comment_two_link {
    des = "Comment two link color";
  }
  property Color c_comment_two_link_visited {
    des = "Comment two visited link color";
  }
  property Color c_comment_two_link_hover {
    des = "Comment two hover link color";
  }
  property Color c_comment_two_link_active {
    des = "Comment two active link color";
  }
  property Color c_comment_two_text_color {
    des = "Comment two text color";
  }
  property Color c_comment_two_title_color {
    des = "Comment two title color";
  }
  property Color c_comment_two_background {
    des = "Comment two background color";
  }
  property Color c_comment_two_border {
    des = "Comment two bottom border color";
  }
  property Color c_comment_screened_link {
    des = "Comment screened link color";
  }
  property Color c_comment_screened_link_visited {
    des = "Comment screened visited link color";
  }
  property Color c_comment_screened_link_hover {
    des = "Comment screened hover link color";
  }
  property Color c_comment_screened_link_active {
    des = "Comment screened active link color";
  }
  property Color c_comment_screened_text_color {
    des = "Comment screened text color";
  }
  property Color c_comment_screened_title_color {
    des = "Comment screened title color";
  }
  property Color c_comment_screened_background {
    des = "Comment screened background color";
  }
  property Color c_comment_screened_border {
    des = "Comment screened bottom border color";
  }
  property Color c_comment_frozen_link {
    des = "Comment frozen link color";
  }
  property Color c_comment_frozen_link_visited {
    des = "Comment frozen visited link color";
  }
  property Color c_comment_frozen_link_hover {
    des = "Comment frozen hover link color";
  }
  property Color c_comment_frozen_link_active {
    des = "Comment frozen active link color";
  }
  property Color c_comment_frozen_text_color {
    des = "Comment frozen text color";
  }
  property Color c_comment_frozen_title_color {
    des = "Comment frozen title color";
  }
  property Color c_comment_frozen_background {
    des = "Comment frozen background color";
  }
  property Color c_comment_frozen_border {
    des = "Comment frozen bottom border color";
  }
}


# PROPERTIES: FONTS
propgroup Fonts {
  # page
  property string f_page {
    des = "Generic font for use on the page";
  }
  property string f_page_size {
    des = "Generic font size for use on the page";
  }
  property string f_page_title {
    des = "Page title font";
  }
  property string f_page_title_size {
    des = "Page title font size";
  }
  property string f_page_link {
    des = "Generic font for links on the page";
  }
  property string f_page_link_size {
    des = "Generic font size for links on the page";
  }
  # menu
  property string f_menu_link {
    des = "Menu link font";
  }
  property string f_menu_link_size {
    des = "Menu link font size";
  }
  property string f_menu {
    des = "Menu font";
  }
  property string f_menu_size {
    des = "Menu font size";
  }
  property string f_menu_header {
    des = "Menu title font";
  }
  property string f_menu_header_size {
    des = "Menu title font size";
  }
  property string f_menu_current {
    des = "Current menu item font";
  }
  property string f_menu_current_size {
    des = "Current menu item font size";
  }
  # entry
  property string f_entry {
    des = "Entry font";
  }
  property string f_entry_size {
    des = "Entry font size";
  }
  property string f_entry_link {
    des = "Entry link font";
  }
  property string f_entry_link_size {
    des = "Entry link font size";
  }
  property string f_entry_title {
    des = "Entry title font";
  }
  property string f_entry_title_size {
    des = "Entry title font size";
  }
  # metadata
  property string f_meta {
    des = "Entry metadata font";
  }
  property string f_meta_size {
    des = "Entry metadata font size";
  }
  property string f_meta_link {
    des = "Entry metadata link font"; }
  property string f_meta_link_size {
    des = "Entry metadata link font size";
  }
  # footer
  property string f_footer {
    des = "Footer font";
  }
  property string f_footer_size {
    des = "Footer font size";
  }
  property string f_footer_link {
    des = "Footer link font";
  }
  property string f_footer_link_size {
    des = "Footer link font size";
  }
  # comments
  property string f_comment {
    des = "Comment font";
  }
  property string f_comment_size {
    des = "Comment font size";
  }
  property string f_comment_title {
    des = "Comment title font";
  }
  property string f_comment_title_size {
    des = "Comment title font size";
  }
  property string f_comment_link {
    des = "Comment link font";
  }
  property string f_comment_link_size {
    des = "Comment link font size";
  }
}


# PROPERTIES: PRESENTATION
propgroup Presentation {
  property use page_recent_items;
  property use page_friends_items;
  property use view_entry_disabled;
  property use use_shared_pic;
  property use comment_userpic_style;
  property bool show_recent_userpic {
    des = "Show userpic on Recent view?";
  }
  property bool show_entry_userpic {
    des = "Show userpic on Entry view?";
  }
  property bool show_day_userpic {
    des = "Show userpic on Day view?";
  }
  property bool show_entrynav_icons {
    des = "Toggle to show the next, memory, edit, etc icons on the entry view page";
  }
  property string time_format {
    des = "Format for the time";
    example = "%%hh%%:%%min%%:%%sec%% %%a%%m";
  }
  property string date_format {
    des = "Format for the date";
    example = "%%m%%/%%d%%/%%yy%%";
  }
  property bool menu_disable_userpic {
    des = "Disable menu userpic";
  }
  property bool menu_disable_navigation {
    des = "Disable menu navigation";
  }
  property bool menu_disable_summary {
    des = "Disable menu summary view";
  }
  property bool menu_disable_linklist {
    des = "Disable menu linklist";
  }
  property bool menu_disable_tag_list {
    des = "Disable menu tag list";
  }
  property string tags_sidebar_height {
    des = "Height of Tags sidebar box";
  }
  property string css_page_width {
    des = "Width of the main page (increasing this will increase the main column's width)";
  }
  property string css_style_overrides {
    des = "include any CSS here to override the default CSS";
  }
}


# PROPERTIES: TEXT
propgroup Text {
  property use text_post_comment;
  property use text_read_comments;
  property use text_post_comment_friends;
  property use text_read_comments_friends;
  property use text_meta_music;
  property use text_meta_mood;
  property string text_meta_tags_header {
    des = "Text for Tags header";
    example = "Tags";
  }
  property string text_meta_tags_joiner {
    des = "Text for Tags joiner";
    example = ":";
  }
  property use text_permalink;
  property use text_view_recent;
  property use text_view_friends;
  property use text_view_archive;
  property use text_view_userinfo;
  property use text_reply_nocomments_header;
  property use text_reply_nocomments;
  property use text_comment_from;
  property use text_comment_ipaddr;
  property use text_comment_parent;
  property use text_comment_reply;
  property use text_comment_thread;
  property use text_nosubject;
  property use text_post_comment;
  property use text_post_comment_friends;
  property use text_max_comments;
  property use text_view_month;
  property use text_poster_anonymous;
  property string text_comment_viewall {
    des = "Text for view all comments";
  }
  property string text_links_header {
    des = "Sidebar links header text";
  }
  property string text_summary_header {
    des = "Page summary text header";
  }
  property string text_links_spacer {
    des = "String to act as links list spacer";
  }
}


# -------------------------------
# default property settings
# -------------------------------
# ODD
set c_comment_one_background        = "#ffffff";
set c_comment_one_border            = "#999999";
set c_comment_one_link              = "#5ab300";
set c_comment_one_link_active       = "#336600";
set c_comment_one_link_hover        = "#336600";
set c_comment_one_link_visited      = "#5ab300";
set c_comment_one_text_color        = "#333333";
set c_comment_one_title_color       = "#333333";
set c_comment_frozen_background     = "#aaaaff";
set c_comment_frozen_border         = "#999999";
set c_comment_frozen_text_color     = "#333333";
set c_comment_frozen_title_color    = "#333333";
set c_comment_frozen_link           = "#eeeeff";
set c_comment_frozen_link_visited   = "#eeeeff";
set c_comment_frozen_link_hover     = "#eeeeff";
set c_comment_frozen_link_active    = "#eeeeff";
set c_comment_screened_background   = "#ffaaaa";
set c_comment_screened_border       = "#999999";
set c_comment_screened_link         = "#ffeeee";
set c_comment_screened_link_active  = "#ffeeee";
set c_comment_screened_link_hover   = "#ffeeee";
set c_comment_screened_link_visited = "#ffeeee";
set c_comment_screened_text_color   = "#000000";
set c_comment_screened_title_color  = "#000000";
set c_comment_two_background        = "#ffffff";
set c_comment_two_border            = "#999999";
set c_comment_two_link              = "#5ab300";
set c_comment_two_link_active       = "#336600";
set c_comment_two_link_hover        = "#336600";
set c_comment_two_link_visited      = "#5ab300";
set c_comment_two_text_color        = "#333333";
set c_comment_two_title_color       = "#333333";
set c_entry_background              = "#ffffff";
set c_entry_border                  = "#cccccc";
set c_entry_link                    = "#5ab300";
set c_entry_link_active             = "#336600";
set c_entry_link_hover              = "#336600";
set c_entry_link_visited            = "#5ab300";
set c_entry_text_color              = "#333333";
set c_entry_title_color             = "#333333";
set c_footer_background             = "#333333";
set c_footer_link                   = "#ffffff";
set c_footer_link_active            = "#ffffff";
set c_footer_link_hover             = "#ffffff";
set c_footer_link_visited           = "#ffffff";
set c_footer_text_color             = "#ffffff";
set c_header_background             = "#333333";
set c_header_border                 = "#333333";
set c_main_background               = "#ffffff";
set c_main_border                   = "#000000";
set c_menu_background               = "#333333";
set c_menu_border                   = "#333333";
set c_menu_current                  = "#ffffff";
set c_menu_header_color             = "#ffffff";
set c_menu_link                     = "#999999";
set c_menu_link_active              = "#ffffff";
set c_menu_link_hover               = "#ffffff";
set c_menu_link_visited             = "#999999";
set c_menu_text_color               = "#ffffff";
set c_meta_background               = "#ffffff";
set c_meta_link                     = "#5ab300";
set c_meta_link_active              = "#336600";
set c_meta_link_hover               = "#336600";
set c_meta_link_visited             = "#5ab300";
set c_meta_text_color               = "#000000";
set c_page_background               = "#333333";
set c_page_link                     = "#5ab300";
set c_page_link_active              = "#336600";
set c_page_link_hover               = "#336600";
set c_page_link_visited             = "#5ab300";
set c_page_text                     = "#333333";
set c_page_title                    = "#ffffff";
# FONTS
set f_comment            = "Georgia, serif";
set f_comment_link       = "Georgia, serif";
set f_comment_link_size  = "100%";
set f_comment_size       = "100%";
set f_comment_title      = "Georgia, serif";
set f_comment_title_size = "130%";
set f_entry              = "Georgia, serif";
set f_entry_link         = "Georgia, serif";
set f_entry_link_size    = "100%";
set f_entry_size         = "100%";
set f_entry_title        = "Georgia, serif";
set f_entry_title_size   = "150%";
set f_footer             = "Georgia, serif";
set f_footer_link        = "Georgia, serif";
set f_footer_link_size   = "100%";
set f_footer_size        = "100%";
set f_menu               = "Georgia, serif";
set f_menu_current       = "Verdana, Helvetica, sans-serif";
set f_menu_current_size  = "80%";
set f_menu_header        = "Georgia, serif";
set f_menu_header_size   = "120%";
set f_menu_link          = "Verdana, Helvetica, sans-serif";
set f_menu_link_size     = "80%";
set f_menu_size          = "100%";
set f_meta               = "Verdana, Helvetica, sans-serif";
set f_meta_link          = "Verdana, Helvetica, sans-serif";
set f_meta_link_size     = "100%";
set f_meta_size          = "80%";
set f_page               = "Georgia, serif";
set f_page_link          = "Georgia, serif";
set f_page_link_size     = "100%";
set f_page_size          = "12px";
set f_page_title         = "Georgia, serif";
set f_page_title_size    = "190%";

# OTHER
set show_recent_userpic     = false;
set show_day_userpic        = true;
set show_entry_userpic      = true;
set show_entrynav_icons     = true;
set time_format             = "%%hh%%:%%min%% %%a%%m";
set date_format             = "%%mon%%. %%dayord%%, %%yyyy%%";
set menu_disable_userpic    = false;
set menu_disable_navigation = false;
set menu_disable_summary    = false;
set menu_disable_linklist   = false;
set menu_disable_tag_list   = false;
set tags_sidebar_height     = "";
set css_style_overrides     = "";
set css_page_width          = "800px";

# TEXT
set text_meta_music            = "music";
set text_links_header          = "links";
set text_meta_mood             = "mood";
set text_meta_tags_header      = "tags";
set text_meta_tags_joiner      = ":";
set text_read_comments         = "{#}";
set text_read_comments_friends = "{#}";
set text_poster_anonymous     = "anonymous";
set text_comment_viewall       = "view all comments";
set text_links_header          = "Links";
set text_summary_header        = "Page Summary";
set text_links_spacer          = "_______________";



# ========================================
# METHODS
# ========================================


# -------------------------------
# stylesheet
# -------------------------------
function print_stylesheet() {
"""
@media screen, print {
  * {
    margin:  0;
    padding: 0;
  }
  hr {
    display: none;
  }
  body {
    background-color: $*c_page_background;
    font-family:      $*f_page;
    font-size:        $*f_page_size;
    line-height:      125%;
    color:            $*c_page_text;
    text-align:       center;
  }
  a {
    font-family:     $*f_page_link;
    font-size:       $*f_page_link_size;
    color:           $*c_page_link;
    text-decoration: none;
  }
  a:visited { color: $*c_page_link_visited; }
  a:hover, a:visited:hover { color: $*c_page_link_hover; text-decoration: underline; }
  a:active { color: $*c_page_link_active; }
  a img { border: none; }
  p {
    margin:  5px;
    padding: 5px;
  }
  form {
    display: inline;
    margin:  0px;
    padding: 0px;
  }
  input, select, textarea {
    font-family: $*f_meta;
    font-size:   $*f_meta_size;
    color:       $*c_meta_text_color;
    padding:     2px;
    margin:      3px;
  }
  #container {
    position:   relative;
    width:      $*css_page_width;
    margin:     0 auto;
    text-align: left;
  }
  #header {
    margin-bottom:    15px;
    border:            1px solid $*c_header_border;
    background-color: $*c_header_background;
  }
  #header h1 {
    padding:     20px;
    font-family: $*f_page_title;
    font-size:   $*f_page_title_size;
    color:       $*c_page_title;
  }
  #menu {
    position:         relative;
    background-color: $*c_menu_background;
    float:            left;
    width:            150px;
    font-family:      $*f_menu;
    font-size:        $*f_menu_size;
    color:            $*c_menu_text_color;
    border:           1px solid $*c_menu_border;
    padding:          4px;
  }
  #content {
    position:    relative;
    margin-left: 160px;
  }
  #entries {
    border:            1px solid $*c_main_border;
    padding:          15px;
    background-color: $*c_main_background;
  }
  #menu h2 {
    margin:      20px 0;
    font-family: $*f_menu_header;
    font-size:   $*f_menu_header_size;
    color:       $*c_menu_header_color;
  }
  #menu h2.userpic {
    text-align: center;
  }
  #menu a {
    font-family: $*f_menu_link;
    font-size:   $*f_menu_link_size;
    color:       $*c_menu_link;
  }
  #menu a:visited { color: $*c_menu_link_visited; }
  #menu a:hover, #menu a:visited:hover { color: $*c_menu_link_hover; }
  #menu a:active { color: $*c_menu_link_active; }
  #menu ul {
    margin:     3px;
    list-style: none;
  }
  #menu ul li {
    margin:     3px;
    padding:    2px;
    list-style: none;
  }
  #menu ul li.active {
    font-family: $*f_menu_current;
    font-size:   $*f_menu_current_size;
    color:       $*c_menu_current;
    font-weight: bold;
  }
  #content h2 {
    margin: 20px 0;
  }
  #entries, #comments {
    margin: 10px;
  }
  .ind-entry {
    padding: 5px;
    padding-bottom:   15px;
    border-bottom:     1px solid $*c_entry_border;
    background-color: $*c_entry_background;
  }
  .ind-entry h3 img, .ind-comment-one h3 img, .ind-comment-two h3 img, .ind-comment-screened h3 img {
    position: relative;
    float:    right;
    padding:  5px;
  }
  .ind-entry h2 {
    font-family: $*f_entry_title;
    font-size:   $*f_entry_title_size;
    color:       $*c_entry_title_color;
    margin:      20px 0px;
    line-height: 140%;
  }
  .ind-entry h4, .ind-comment-one h4, .ind-comment-two h4, .ind-comment-screened h4 {
    font-family: $*f_meta;
    font-size:   $*f_meta_size;
    color:       $*c_meta_text_color;
  }
  .ind-entry h4 {
    background-color: $*c_meta_background;
  }
  .ind-entry h4 a, .ind-comment-one h4 a, .ind-comment-two h4 a, .ind-comment-screened h4 a {
    font-family:     $*f_meta_link;
    font-size:       $*f_meta_link_size;
    color:           $*c_meta_link;
    text-decoration: underline;
  }
  .ind-entry h4 a:visited, .ind-comment-one h4 a:visited, .ind-comment-two h4 a:visited, .ind-comment-screened h4 a:visited { color: $*c_meta_link_visited; }
  .ind-entry h4 a:hover, .ind-comment-one h4 a:hover, .ind-comment-two h4 a:hover, .ind-comment-screened h4 a:hover { color: $*c_meta_link_hover; }
  .ind-entry h4 a:visited:hover, .ind-comment-one h4 a:visited:hover, .ind-comment-two h4 a:visited:hover, .ind-comment-screened h4 a:visited:hover { color: $*c_meta_link_hover; }
  .ind-entry h4 a:active, .ind-comment-one h4 a:active, .ind-comment-two h4 a:active, .ind-comment-screened h4 a:active { color: $*c_meta_link_active; }
  .ind-entry div.entry-item, .ind-entry div.month-entries {
    font-family: $*f_entry;
    font-size:   $*f_entry_size;
    color:       $*c_entry_text_color;
    margin:      15px 0px;
  }
  .ind-entry div.entry-item a, .ind-entry div.month-entries a {
    font-family:     $*f_entry_link;
    font-size:       $*f_entry_link_size;
    color:           $*c_entry_link;
    text-decoration: underline;
  }
  .ind-entry div.entry-item a:visited, .ind-entry div.month-entries a:visited { color: $*c_entry_link_visited; }
  .ind-entry div.entry-item a:hover, .ind-entry div.entry-item a:visited:hover { color: $*c_entry_link_hover; }
  .ind-entry div.month-entries a:hover, .ind-entry div.month-entries a:visited:hover { color: $*c_entry_link_hover; }
  .ind-entry div.entry-item a:active, .ind-entry div.month-entries a:active { color: $*c_entry_link_active; }
  .ind-comment-one, .ind-comment-two, .ind-comment-screened {
    margin:  10px 0;
    padding:  5px;
  }
  .ind-comment-one { background-color: $*c_comment_one_background; border-bottom: 1px solid $*c_comment_one_border; }
  .ind-comment-two { background-color: $*c_comment_two_background; border-bottom: 1px solid $*c_comment_two_border; }
  .ind-comment-screened { background-color: $*c_comment_screened_background; border-bottom: 1px solid $*c_comment_screened_border; }
  .ind-comment-one h2 {
    font-family: $*f_comment_title;
    font-size:   $*f_comment_title_size;
    color:       $*c_comment_one_title_color;
    margin:      20px 0px;
  }
  .ind-comment-one div.entry-item {
    font-family: $*f_comment;
    font-size:   $*f_comment_size;
    color:       $*c_comment_one_text_color;
    margin:      15px 0px;
  }
  .ind-comment-one div.entry-item a {
    font-family:     $*f_comment_link;
    font-size:       $*f_comment_link_size;
    color:           $*c_comment_one_link;
    text-decoration: underline;
  }
  .ind-comment-one div.entry-item a:visited { color: $*c_comment_one_link_visited; }
  .ind-comment-one div.entry-item a:hover, .ind-comment-one div.entry-item a:visited:hover { color: $*c_comment_one_link_hover; }
  .ind-comment-one div.entry-item a:active { color: $*c_comment_one_link_active; }
  .ind-comment-two h2 {
    font-family: $*f_comment_title;
    font-size:   $*f_comment_title_size;
    color:       $*c_comment_two_title_color;
    margin:      20px 0px;
    line-height: 140%;
  }
  .ind-comment-two div.entry-item {
    font-family: $*f_comment;
    font-size:   $*f_comment_size;
    color:       $*c_comment_two_text_color;
    margin:      10px 0px;
  }
  .ind-comment-two div.entry-item a {
    font-family:     $*f_comment_link;
    font-size:       $*f_comment_link_size;
    color:           $*c_comment_two_link;
    text-decoration: underline;
  }
  .ind-comment-two div.entry-item a:visited { color: $*c_comment_two_link_visited; }
  .ind-comment-two div.entry-item a:hover, .ind-comment-two div.entry-item a:visited:hover { color: $*c_comment_two_link_hover; }
  .ind-comment-two div.entry-item a:active { color: $*c_comment_two_link_active; }
  .ind-comment-screened h2 {
    font-family: $*f_comment_title;
    font-size:   $*f_comment_title_size;
    color:       $*c_comment_screened_title_color;
    margin:      20px 0px;
  }
  .ind-comment-screened div.entry-item {
    font-family: $*f_comment;
    font-size:   $*f_comment_size;
    color:       $*c_comment_screened_text_color;
    margin:      10px 0px;
  }
  .ind-comment-screened div.entry-item a {
    font-family:     $*f_comment_link;
    font-size:       $*f_comment_link_size;
    color:           $*c_comment_screened_link;
    text-decoration: underline;
  }
  .ind-comment-screened div.entry-item a:visited { color: $*c_comment_screened_link_visited; }
  .ind-comment-screened div.entry-item a:hover, .ind-comment-screened div.entry-item a:visited:hover { color: $*c_comment_screened_link_hover; }
  .ind-comment-screened div.entry-item a:active { color: $*c_comment_screened_link_active; }

.ind-comment-screened h3 img {
  position: relative;
  float:    right;
  padding:  5px;
}
.ind-comment-screened h4 {
  font-family: $*f_meta;
  font-size:   $*f_meta_size;
  color:       $*c_comment_screened_text_color;
}
.ind-comment-screened h4 a {
  font-family:     $*f_meta_link;
  font-size:       $*f_meta_link_size;
  color:           $*c_comment_screened_link;
  text-decoration: underline;
}
.ind-comment-screened h4 a:visited {
  color: $*c_comment_screened_link_visited;
}
.ind-comment-screened h4 a:hover {
  color: $*c_comment_screened_link_hover;
}
.ind-comment-screened h4 a:visited:hover {
  color: $*c_comment_screened_link_hover;
}
.ind-comment-screened h4 a:active {
  color: $*c_comment_screened_link_active;
}
.ind-comment-screened {
  margin:  10px 0;
  padding: 5px;
}
.ind-comment-screened {
  background-color: $*c_comment_screened_background;
  border-bottom:    1px solid $*c_comment_screened_border;
}
.ind-comment-screened h2 {
  font-family: $*f_comment_title;
  font-size:   $*f_comment_title_size;
  color:       $*c_comment_screened_title_color;
  margin:      20px 0px;
}
.ind-comment-screened div.entry-item {
  font-family: $*f_comment;
  font-size:   $*f_comment_size;
  color:       $*c_comment_screened_text_color;
  margin:      10px 0px;
}
.ind-comment-screened div.entry-item a {
  font-family:     $*f_comment_link;
  font-size:       $*f_comment_link_size;
  color:           $*c_comment_screened_link;
  text-decoration: underline;
}
.ind-comment-screened div.entry-item a:visited {
  color: $*c_comment_screened_link_visited;
}
.ind-comment-screened div.entry-item a:hover, .ind-comment-screened div.entry-item a:visited:hover {
  color: $*c_comment_screened_link_hover;
}
.ind-comment-screened div.entry-item a:active {
  color: $*c_comment_screened_link_active;
}
.ind-comment-frozen h3 img {
  position: relative;
  float:    right;
  padding:  5px;
}
.ind-comment-frozen h4 {
  font-family: $*f_meta;
  font-size:   $*f_meta_size;
  color:       $*c_comment_frozen_text_color;
}
.ind-comment-frozen h4 a {
  font-family:     $*f_meta_link;
  font-size:       $*f_meta_link_size;
  color:           $*c_comment_frozen_link;
  text-decoration: underline;
}
.ind-comment-frozen h4 a:visited {
  color: $*c_comment_frozen_link_visited;
}
.ind-comment-frozen h4 a:hover {
  color: $*c_comment_frozen_link_hover;
}
.ind-comment-frozen h4 a:visited:hover {
  color: $*c_comment_frozen_link_hover;
}
.ind-comment-frozen h4 a:active {
  color: $*c_comment_frozen_link_active;
}
.ind-comment-frozen {
  margin:  10px 0;
  padding: 5px;
}
.ind-comment-frozen {
  background-color: $*c_comment_frozen_background;
  border-bottom:    1px solid $*c_comment_frozen_border;
}
.ind-comment-frozen h2 {
  font-family: $*f_comment_title;
  font-size:   $*f_comment_title_size;
  color:       $*c_comment_frozen_title_color;
  margin:      20px 0px;
}
.ind-comment-frozen div.entry-item {
  font-family: $*f_comment;
  font-size:   $*f_comment_size;
  color:       $*c_comment_frozen_text_color;
  margin:      10px 0px;
}
.ind-comment-frozen div.entry-item a {
  font-family:     $*f_comment_link;
  font-size:       $*f_comment_link_size;
  color:           $*c_comment_frozen_link;
  text-decoration: underline;
}
.ind-comment-frozen div.entry-item a:visited {
  color: $*c_comment_frozen_link_visited;
}
.ind-comment-frozen div.entry-item a:hover, .ind-comment-frozen div.entry-item a:visited:hover {
  color: $*c_comment_frozen_link_hover;
}
.ind-comment-frozen div.entry-item a:active {
  color: $*c_comment_frozen_link_active;
}
#postform, #commenttext {
  width: 90%;
}

  .month-entries {
    margin: 10px 0;
  }
  .month-entries ul {
    list-style: none;
    margin:     10px;
  }
  .month-entries ul li {
    list-style: none;
    padding: 3px;
  }
  #footer {
    position: relative;
    font-family:      $*f_footer;
    font-size:        $*f_footer_size;
    color:            $*c_footer_text_color;
    background-color: $*c_footer_background;
  }
  #footer p {
    padding: 20px;
  }
  #footer a {
    font-family: $*f_footer_link;
    font-size:   $*f_footer_link_size;
    color:       $*c_footer_link;
  }
  #footer a:visited { color: $*c_footer_link_visited; }
  #footer a:hover, #footer a:visited:hover { color: $*c_footer_link_hover; }
  #footer a:active { color: $*c_footer_link_active; }
}

@media print {
  #menu {
    display: none;
  }
  #content {
    margin-left: 0px;
  }
  #entries, .ind-entry, .ind-comment, #footer, #header {
    border: none;
  }
}

$*css_style_overrides

""";
}

function print_sidebar_box(string class, string header, string content) {
  if($header != "") {
    "&amp;lt;h2"; if($class != "") { " class=\"$class\""; } "&amp;gt;";
    print safe $header;
    "&amp;lt;/h2&amp;gt;";
  }
  if($content != "") {
    print safe $content;
  }
  "&amp;lt;hr /&amp;gt;";
}

function print_sidebar_box(string header, string content) {
  print_sidebar_box("", $header, $content);
}

# -------------------------------
# user pic main page
# -------------------------------
function Page::lay_top_userpic() {
  var Image up_img = $.journal.default_pic;
  if ( defined $up_img ) {
    print_sidebar_box( "userpic", "&amp;lt;a href=\"$*SITEROOT/allpics.bml?user=$.journal.username\"&amp;gt;&amp;lt;img border=\"0\" src=\"$up_img.url\" height=\"$up_img.height\" width=\"$up_img.width\" alt=\"$.journal.name\" /&amp;gt;&amp;lt;/a&amp;gt;", "" );
  }
}


# -------------------------------
# returns a permalink link based on
# the url passed
# -------------------------------
function get_permalink ( string url ) : string {	
  return("&amp;lt;a href=\"$url\" title=\"permalink\" class=\"$*text_permalink\"&amp;gt;$*text_permalink&amp;lt;/a&amp;gt;");
}


# -------------------------------
# prints the user's 'link-list'
# -------------------------------
function Page::print_linklist() {
  var string header  = "";
  var string content = "";
  if ( size $.linklist &amp;gt; 0 ) {
    $header  = $*text_links_header;
    $content = $content + "&amp;lt;ul id=\"user-links\"&amp;gt;";
    foreach var UserLink l ( $.linklist ) {
      if ( $l.title == "spacer" ) {
        $content = $content + "&amp;lt;li&amp;gt;$*text_links_spacer&amp;lt;/li&amp;gt;";
      } elseif ($l.is_heading) {
        $content = $content + "&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;$l.title&amp;lt;/b&amp;gt;&amp;lt;/li&amp;gt;";
      } elseif ( $l.title ) {
        $content = $content + "&amp;lt;li&amp;gt;&amp;lt;a href=\"$l.url\" title=\"$l.title\"&amp;gt;$l.title&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;";
      }
    }
    $content = $content + "&amp;lt;/ul&amp;gt;";
    print_sidebar_box($header, $content);
  }
}


# -------------------------------
# prints the LJ specific links (recent, friends, etc)
# -------------------------------
function print_lj_links ( Page p ) {
  var string links;
  var string[] views_order = $p.views_order; # view order
                                                                           # "recent"   = recent   view
                                                                           # "friends"  = friends  view
                                                                           # "archive"  = calendar view
                                                                           # "userinfo" = userinfo link
  var string{} view_text   = { # build text hash
                              "recent"   =&amp;gt; $*text_view_recent,
                              "friends"  =&amp;gt; $p.journal_type != "C" ? $*text_view_friends : $*text_view_friends_comm,
                              "archive"  =&amp;gt; $*text_view_archive,
                              "userinfo" =&amp;gt; $*text_view_userinfo
                             };
  var string   base_url    = $p.journal-&amp;gt;base_url(); # get base url
  var string{} view_url    = { # build url hash
                              "recent"   =&amp;gt; "$base_url/",
                              "friends"  =&amp;gt; "$base_url/friends/",
                              "archive"  =&amp;gt; "$base_url/calendar/",
                              "userinfo" =&amp;gt; "$*SITEROOT/userinfo.bml?user=$p.journal.username&amp;amp;mode=full"
                             };
  foreach var string v ($views_order) {
    $links = $links + """&amp;lt;li&amp;gt;&amp;lt;a href="$view_url{$v}"&amp;gt;$view_text{$v}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;""";
  }
  if($p.journal.website_url != "") {
    $links = $links + """&amp;lt;li&amp;gt;&amp;lt;a href="$p.journal.website_url"&amp;gt;""" + ($p.journal.website_name != "" ? $p.journal.website_name : $*text_website_default_name) + """&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;""";
  }
  $links = "&amp;lt;ul id=\"lj-links\"&amp;gt;" + $links + "&amp;lt;/ul&amp;gt;";
  print_sidebar_box("", $links);
}

function Page::lay_sidebar_view_summary() : string {
  return("");
}

function print_tag_list(Page p) {
  var string header  = "";
  var string content = "";
  var Tag[] tags = $p-&amp;gt;visible_tag_list();
  if(size $tags) {
    $header = "$*text_meta_tags_header$*text_meta_tags_joiner";
    var string height = $*tags_sidebar_height;
    if($height != "") {
      $content = $content + """&amp;lt;div style="position:relative; height:$height; overflow: auto;"&amp;gt;""";
    }
    $content = $content + "&amp;lt;ul&amp;gt;";
    foreach var Tag tag ($tags) {
      $content = $content + """&amp;lt;li&amp;gt;&amp;lt;a href="$tag.url"&amp;gt;$tag.name&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;""";
    }
    $content = $content + "&amp;lt;/ul&amp;gt;";
    if($height != "") {
      $content = $content + "&amp;lt;/div&amp;gt;";
    }
    print_sidebar_box($header, $content);
  }
}

function print_sidebar(Page p) {
  # print userpic
  if(not $*menu_disable_userpic) {
    $p-&amp;gt;lay_top_userpic();
  }

  if(not $*menu_disable_navigation) {
    # print navigation
    print_lj_links($p);
  }

  # print summary
  print($p-&amp;gt;lay_sidebar_view_summary());

  if(not $*menu_disable_linklist) {
    # print linklist
    $p-&amp;gt;print_linklist();
  }
              
  if(not $*menu_disable_tag_list) {
    # print tag list
    print_tag_list($p);
  }
}

# -------------------------------
# main page layout
# -------------------------------
function Page::print() {
  var string title = $this-&amp;gt;title();

  # generate page id:
  var string current_view = $.view;
  if ( $.view == "month" or $.view == "day" ) {
    $current_view = "archive";	
  }
  if ( $.view == "entry" or $.view == "reply" ) {
    $current_view = "recent";	
  }

  # begin main page html:
  print "&amp;lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"&amp;gt;\n";
  print "&amp;lt;html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"\"&amp;gt;\n";
    print "&amp;lt;head&amp;gt;\n";
      print "&amp;lt;meta name=\"resource-type\" content=\"Document\" /&amp;gt;\n";
      print "&amp;lt;meta name=\"type\" content=\"index\" /&amp;gt;\n";
      print "&amp;lt;link rel=\"stylesheet\" type=\"text/css\" href=\"$.stylesheet_url\" /&amp;gt;\n";
      $this-&amp;gt;print_head();
      print "&amp;lt;link rel=\"bookmark\" href=\"#header\" title=\"Top of the Page\" /&amp;gt;\n";
      print "&amp;lt;link rel=\"bookmark\" href=\"#menu\" title=\"Main Menu\" /&amp;gt;\n";
      print "&amp;lt;link rel=\"bookmark\" href=\"#summary\" title=\"Page Summary\" /&amp;gt;\n";
      print "&amp;lt;link rel=\"bookmark\" href=\"#content\" title=\"Entries\" /&amp;gt;\n";
      print "&amp;lt;title&amp;gt;$title&amp;lt;/title&amp;gt;\n";
    print "&amp;lt;/head&amp;gt;\n";
    print "&amp;lt;body id=\"$current_view\"&amp;gt;\n";
      print "&amp;lt;div id=\"container\"&amp;gt;\n";
        print "&amp;lt;div id=\"header\"&amp;gt;\n";
          print "&amp;lt;div id=\"banner\"&amp;gt;\n";
            print "&amp;lt;h1&amp;gt;$title&amp;lt;/h1&amp;gt;\n";
            print "&amp;lt;hr /&amp;gt;";
          print "&amp;lt;/div&amp;gt;\n";
        print "&amp;lt;/div&amp;gt;\n";
        print "&amp;lt;div id=\"menu\"&amp;gt;\n";
          print_sidebar($this);
        print "&amp;lt;/div&amp;gt;\n";
        print "&amp;lt;div id=\"content\"&amp;gt;\n";
          $this-&amp;gt;print_body();
        print "&amp;lt;/div&amp;gt;\n";
      print "&amp;lt;/div&amp;gt;\n";
    print "&amp;lt;/body&amp;gt;\n";
  print "&amp;lt;/html&amp;gt;\n";
}

# -------------------------------
# main page display entries and
# footer
# -------------------------------
function RecentPage::print_body() {
  # print all entries
  print "&amp;lt;div id=\"entries\"&amp;gt;\n";
  foreach var Entry e ( $.entries ) {
    $this-&amp;gt;print_entry($e);
  }
  print "&amp;lt;/div&amp;gt;";

  var string range = "most recent entries";
  if ( $.nav.skip &amp;gt; 0 ) {
    $range = "$.nav.skip entries back";
  }

  print "&amp;lt;div id=\"footer\"&amp;gt;&amp;lt;p&amp;gt;";
  print "&amp;lt;b&amp;gt;viewing:&amp;lt;/b&amp;gt; $range&amp;lt;br /&amp;gt;";
  # go forward/backward if possible
  if ( $.nav.forward_url != "" or $.nav.backward_url != "" ) {
    var string sep;
    var string back;
    var string forward;
    if ( $.nav.backward_url != "" ) {
      $back = "&amp;lt;a href=\"$.nav.backward_url\" title=\"go earlier\"&amp;gt;earlier&amp;lt;/a&amp;gt;";
    }
    if ( $.nav.forward_url != "" ) {
      $forward = "&amp;lt;a href=\"$.nav.forward_url\" title=\"go later\"&amp;gt;later&amp;lt;/a&amp;gt;";
    }
    if ( $back != "" and $forward != "" ) { 
      $sep = " | ";
    }
    print "&amp;lt;b&amp;gt;go&amp;lt;/b&amp;gt;: $back$sep$forward&amp;lt;br /&amp;gt;";
  }
  print "&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;";
}


# -------------------------------
# entry view (show comments)
# -------------------------------
function EntryPage::print_body() {
  print "&amp;lt;div id=\"entries\"&amp;gt;\n";
    $this-&amp;gt;print_entry ( $.entry );
    if ( $.entry.comments.enabled ) {
      print "&amp;lt;h2&amp;gt;Comments {$.entry.comments.count}&amp;lt;/h2&amp;gt;";
      print "&amp;lt;div id=\"comments\"&amp;gt;";
        if ( $.comment_pages.total_subitems &amp;gt; 0 ) {
          if ( $this.multiform_on ) {
            $this-&amp;gt;print_multiform_start();
          }
          $.comment_pages-&amp;gt;print();
          set_handler("unscreen_comment_#", [
                                             [ "style_bgcolor", "cmtbar#", "$*c_comment_one_background",      ],
                                             [ "style_color",   "cmtbar#", "$*c_comment_one_text_color",      ],
                                            ]);
          set_handler("screen_comment_#",   [
                                             [ "style_bgcolor", "cmtbar#", "$*c_comment_screened_background", ],
                                             [ "style_color",   "cmtbar#", "$*c_comment_screened_text_color", ],
                                            ]);
          set_handler("unfreeze_comment_#", [
                                             [ "style_bgcolor", "cmtbar#", "$*c_comment_one_background",      ],
                                             [ "style_color",   "cmtbar#", "$*c_comment_one_text_color",      ],
                                            ]);
          set_handler("freeze_comment_#",   [
                                             [ "style_bgcolor", "cmtbar#", "$*c_comment_frozen_background", ],
                                             [ "style_color",   "cmtbar#", "$*c_comment_frozen_text_color",      ],
                                            ]);
          $this-&amp;gt;print_comments($.comments);
          if ( $this.multiform_on ) {
            $this-&amp;gt;print_multiform_actionline();
            $this-&amp;gt;print_multiform_end();
          }
        }
      print "&amp;lt;/div&amp;gt;";
    }
  print "&amp;lt;/div&amp;gt;";
  print "&amp;lt;div id=\"footer\"&amp;gt;&amp;lt;p&amp;gt;";
    print "&amp;lt;a href=\"$.entry.comments.post_url\" title=\"$*text_post_comment\"&amp;gt;$*text_post_comment&amp;lt;/a&amp;gt;\n";
  print "&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;";	
}

# -------------------------------
# day view
# -------------------------------
function DayPage::print_body() {
  if ( not $.has_entries ) {
    print "&amp;lt;div id=\"entries\"&amp;gt;\n";
    print "&amp;lt;div class=\"ind-entry\"&amp;gt;\n";
    print "&amp;lt;h2&amp;gt;" + $.date-&amp;gt;date_format("long") + "&amp;lt;/h2&amp;gt;";
    print "&amp;lt;p&amp;gt;$*text_noentries_day&amp;lt;/p&amp;gt;";
    print "&amp;lt;/div&amp;gt;";
    print "&amp;lt;/div&amp;gt;";
    print "&amp;lt;hr /&amp;gt;";
  } else {
    print "&amp;lt;div id=\"entries\"&amp;gt;\n";
    foreach var Entry e ( $.entries ) {
      $this-&amp;gt;print_entry($e);
    }
    print "&amp;lt;/div&amp;gt;";
  }

  var string tprev = ehtml($*text_day_prev);
  var string tnext = ehtml($*text_day_next);

  print "&amp;lt;div id=\"footer\"&amp;gt;&amp;lt;p&amp;gt;";
  print "&amp;lt;a href=\"$.prev_url\" title=\"laquo; $tprev\"&amp;gt;&amp;amp;laquo; $*text_day_prev&amp;lt;/a&amp;gt; | &amp;lt;a href=\"$.next_url\" title=\"$tnext &amp;amp;raquo;\"&amp;gt;$*text_day_next &amp;amp;raquo;&amp;lt;/a&amp;gt;";
  print "&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;";
}


# -------------------------------
# year view
# -------------------------------
function YearPage::print_body() {
  print "&amp;lt;div id=\"entries\"&amp;gt;\n";
  $this-&amp;gt;print_year_links();
  foreach var YearMonth m ($.months) {
    $this-&amp;gt;print_month($m);
  }
  print "&amp;lt;/div&amp;gt;";
}


# -------------------------------
# page summary for recent page
# -------------------------------
function RecentPage::lay_sidebar_view_summary() : string {
  var string return;
  if ( not $*menu_disable_summary ) {
    foreach var Entry e ( $.entries ) {
      $return = $return + "&amp;lt;li&amp;gt;$e.security_icon &amp;lt;a href=\"#$e.journal.username$e.itemid\"&amp;gt;" + ($e.subject != "" ? "$e.subject" : "$*text_nosubject") + "&amp;lt;/a&amp;gt; [&amp;lt;a href=\"$e.permalink_url\"&amp;gt;" + (($e.comments.count &amp;gt; 0) ? $e.comments.count + "" : "#") + "&amp;lt;/a&amp;gt;]&amp;lt;/li&amp;gt;";
    }
  }
  if ( $return != "" ) {
    $return = "&amp;lt;h2&amp;gt;$*text_summary_header&amp;lt;/h2&amp;gt;&amp;lt;ul id=\"lj-summary\"&amp;gt;" + $return + "&amp;lt;/ul&amp;gt;&amp;lt;hr /&amp;gt;"; 
  }
  return($return);
}


# -------------------------------
# page summary for day page
# -------------------------------
function DayPage::lay_sidebar_view_summary() : string {
  var string return;
  if ( not $*menu_disable_summary ) {
    foreach var Entry e ( $.entries ) {
      $return = $return + "&amp;lt;li&amp;gt;$e.security_icon &amp;lt;a href=\"#$e.journal.username$e.itemid\"&amp;gt;" + ($e.subject != "" ? "$e.subject" : "$*text_nosubject") + "&amp;lt;/a&amp;gt; [&amp;lt;a href=\"$e.permalink_url\"&amp;gt;" + (($e.comments.count &amp;gt; 0) ? $e.comments.count + "" : "#") + "&amp;lt;/a&amp;gt;]&amp;lt;/li&amp;gt;";
    }
  }
  if ( $return != "" ) {
    $return = "&amp;lt;h2&amp;gt;$*text_summary_header&amp;lt;/h2&amp;gt;&amp;lt;ul id=\"lj-summary\"&amp;gt;" + $return + "&amp;lt;/ul&amp;gt;&amp;lt;hr /&amp;gt;"; 
  }
  return($return);
}


# -------------------------------
# page summary for entry page
# -------------------------------
function EntryPage::lay_sidebar_view_summary() : string {
  var string return;
  if ( not $*menu_disable_summary ) {
    foreach var Comment c ( $.comments ) {
      if ( $c.depth == 1 ) {
        $return = $return + "&amp;lt;li&amp;gt;&amp;lt;a href=\"#c.anchor\"&amp;gt;" + ($c.subject != "" ? "$c.subject" : "$*text_nosubject") + "&amp;lt;/a&amp;gt; [&amp;lt;a href=\"$c.permalink_url\"&amp;gt;#&amp;lt;/a&amp;gt;]&amp;lt;/li&amp;gt;";	
      }
    }
  }
  if ( $return != "" ) {
    $return = "&amp;lt;h2&amp;gt;$*text_summary_header&amp;lt;/h2&amp;gt;&amp;lt;ul id=\"lj-summary\"&amp;gt;" + $return + "&amp;lt;/ul&amp;gt;&amp;lt;hr /&amp;gt;"; 
  }
  return($return);
}


function Entry::print_metadata() {
  var string tags_header          = $*text_meta_tags_header;
  var string tags_joiner          = $*text_meta_tags_joiner;
  var Link   edit_tags            = $this-&amp;gt;get_link("edit_tags");
  if ((size $.metadata &amp;gt; 0) or ((size $.tags &amp;gt; 0) and ($*tags_aware))){
    var string currents = "";
    $currents = """&amp;lt;div class="currents"&amp;gt;""";
    foreach var string k ($.metadata){
      var string text = $k;
      var string val = $.metadata{$k};
      if ($k == "mood"){
        $text = $*text_meta_mood;
      } 
      elseif ($k == "music") {
        $text = $*text_meta_music;
      }
      if ($k == "mood" and defined $.mood_icon){
        var Image i = $.mood_icon;
        $val = "&amp;lt;img src='$i.url' width='$i.width' height='$i.height' align='middle' alt='' /&amp;gt; $val";
      }
      $currents = $currents + """&amp;lt;div class="current$k"&amp;gt;&amp;lt;strong&amp;gt;$text:&amp;lt;/strong&amp;gt; $val&amp;lt;/div&amp;gt;""";        
    }
    if ((size $.tags &amp;gt; 0) and $*tags_aware) {
      var int    tcount               = 0;
      if($edit_tags.url != "") {
        $tags_header = """&amp;lt;a href="$edit_tags.url"&amp;gt;$tags_header&amp;lt;/a&amp;gt;""";
      }
      $currents = $currents + """&amp;lt;span class="tags_header"&amp;gt;$tags_header$tags_joiner&amp;lt;/span&amp;gt; """;
      foreach var Tag t ($.tags) {
        $currents = $currents + """&amp;lt;a rel="tag" href="$t.url"&amp;gt;$t.name&amp;lt;/a&amp;gt;""";
        $tcount++;
        if ($tcount != size $.tags) { $currents = $currents + ", "; }
      }
    }
    $currents = $currents + "&amp;lt;/div&amp;gt;"; 
    println "$currents";
  }
}

# -------------------------------
# display an entry (all views )
# -------------------------------
function print_entry ( Page p, Entry e ) {
  # get date/time
  var string datetime;
  $datetime = $e.time-&amp;gt;date_format($*date_format) + " | " + $e.time-&amp;gt;time_format($*time_format);

  # get any extra user info (if posting to community, etc)
  var string poster = "";
  var string userpic = "";
  if ( $p.view == "friends" or $p.journal_type == "C" or $e.poster.username != $e.journal.username ) {
    if ( $e.poster.username != $e.journal.username ) {
      $poster = "$e.poster in $e.journal";
    } else {
      $poster =  $e.poster-&amp;gt;as_string();
    }
    $poster = "&amp;lt;b&amp;gt;posted by:&amp;lt;/b&amp;gt; $poster";
  }
  if ( defined $e.userpic and ( ($p.view == "recent" and $*show_recent_userpic) or ($p.view == "day" and $*show_day_userpic) or ($p.view == "entry" and $*show_entry_userpic) or ($p.view == "friends") ) ) {
    $userpic = """&amp;lt;h3 class="userpic"&amp;gt;&amp;lt;a href="$*SITEROOT/allpics.bml?user=$e.poster.username" target="_blank"&amp;gt;&amp;lt;img border="0" src="$e.userpic.url" width="$e.userpic.width" height="$e.userpic.height" alt="$e.poster.username's user pictures" title="$e.poster.username's user pictures" /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;""";
  }

  # print the entry now:
  print "&amp;lt;div id=\"$e.journal.username$e.itemid\" class=\"ind-entry\"&amp;gt;";

    # print icon (if needed)
    if ( $userpic != "" ) {
      print "$userpic";	
    }

    print "&amp;lt;h2&amp;gt;";
      if ( $e.security != "" ) {
        $e.security_icon-&amp;gt;print();
        print " ";
      }
      if ( $e.subject == "" ) {
        print "&amp;lt;i&amp;gt;$*text_nosubject&amp;lt;/i&amp;gt;";
      } else {
        print "$e.subject";
      }
    print "&amp;lt;/h2&amp;gt;";

    print "&amp;lt;h4&amp;gt;";
      if ( $p.view == "entry" and $*show_entrynav_icons ) {
        var string item_link = "";
        foreach var string key (["nav_prev","nav_next"]) {
          var Link link = $e-&amp;gt;get_link($key);
          if ( $link ) { 
            if ( $key == "nav_prev" ) {
              $item_link = $item_link + "&amp;lt;a href=\"$link.url\" title=\"" + $link.caption-&amp;gt;lower() + "\"&amp;gt;&amp;amp;laquo; " + $link.caption-&amp;gt;lower() + "&amp;lt;/a&amp;gt; | ";
            } elseif ( $key == "nav_next" ) {
              $item_link = $item_link + "&amp;lt;a href=\"$link.url\" title=\"" + $link.caption-&amp;gt;lower() + "\"&amp;gt;" + $link.caption-&amp;gt;lower() + " &amp;amp;raquo;&amp;lt;/a&amp;gt;";
            }
          }
        }
        print $item_link;
        print "&amp;lt;br /&amp;gt;";
      }
      print "&amp;lt;b&amp;gt;$datetime&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;";
      $e-&amp;gt;print_metadata();
      if ( $poster != "" ) {
        print "$poster";	
      }
    print "&amp;lt;/h4&amp;gt;";

    print "&amp;lt;div class=\"entry-item\"&amp;gt;"; $e-&amp;gt;print_text(); "&amp;lt;/div&amp;gt;\n";

    print "&amp;lt;h4&amp;gt;";
#		print get_permalink($e.permalink_url);
      if ( $p.view != "entry" and $p.view != "reply" ) {
#			print " | ";
        $e.comments-&amp;gt;print();
      } elseif ( $e.comments.enabled ) {
#			print " | ";
        $e.comments-&amp;gt;print_postlink();
      }
      var Link tmp;
      var string[] link_keyseq = $e.link_keyseq;
      foreach var string key ($link_keyseq) {
        $tmp = $e-&amp;gt;get_link($key);
        if($tmp.caption != "" and $tmp.url != "") {
          print """ | &amp;lt;a href="$tmp.url" title="$tmp.caption"&amp;gt;$tmp.caption&amp;lt;/a&amp;gt;""";
        }
      }
      print """ | &amp;lt;a href="$e.permalink_url" title="$*text_permalink"&amp;gt;$*text_permalink&amp;lt;/a&amp;gt;""";
    print "&amp;lt;/h4&amp;gt;";
  print "&amp;lt;/div&amp;gt;";
  print "&amp;lt;hr /&amp;gt;";
}


# -------------------------------
# entry wrapper for main page
# -------------------------------
function Page::print_entry(Entry e) {
  print_entry($this, $e);
}


# -------------------------------
# entry wrapper for friends page
# -------------------------------
function FriendsPage::print_entry(Entry e) {
   print_entry($this, $e);
}


function EntryPage::print_entry(Entry e) {
  print_entry($this, $e);
}


# -------------------------------
# comments
# -------------------------------
function CommentInfo::print() {
  if ( not $.enabled ) {
    return;
  }

  $this-&amp;gt;print_postlink();
  if ( $.count &amp;gt; 0 or $.screened ) {
    print " ";
    print "&amp;lt;b&amp;gt;";
    $this-&amp;gt;print_readlink();
    print "&amp;lt;/b&amp;gt;";
  }
}


# -------------------------------
# comment post link
# -------------------------------
function CommentInfo::print_postlink() {
  var Page p = get_page();
  var string linktext = ( $p.view == "friends" ? $*text_post_comment_friends : $*text_post_comment );
  if ( $.maxcomments ) {
    "$*text_max_comments";
  } else {
    "&amp;lt;a href=\"$.post_url\" title=\"$linktext\" class=\"comments\"&amp;gt;$linktext&amp;lt;/a&amp;gt;";
  }
}


# -------------------------------
# print comment
# -------------------------------
function EntryPage::print_comment(Comment c) {
  var string comment_class = "";   
  if ( $c.screened ) {
    $comment_class = "ind-comment-screened";
  } elseif ( $c.frozen ) {
    $comment_class = "ind-comment-frozen";
  } elseif ( $c.depth % 2 == 0 ) {
    $comment_class = "ind-comment-two";
  } else {
    $comment_class = "ind-comment-one";
  }

  var string poster = defined $c.poster ? $c.poster-&amp;gt;as_string() : "&amp;lt;i&amp;gt;$*text_poster_anonymous&amp;lt;/i&amp;gt;";
  var string poster_text = defined $c.poster ? $c.poster.name : "&amp;lt;i&amp;gt;$*text_poster_anonymous&amp;lt;/i&amp;gt;";
  var string sub_icon;
  var int indent = (($c.depth - 1) * 5);
  if ( defined $c.subject_icon ) {
    $sub_icon = $c.subject_icon-&amp;gt;as_string();
  }

  print "&amp;lt;div class=\"$comment_class\" id=\"cmtbar$c.talkid\" style=\"margin-left: ${indent}px;\"&amp;gt;\n";

    var string userpic;
    if ( defined $c.userpic and $*comment_userpic_style != "off" ) {
      $userpic = """&amp;lt;h3 class="userpic"&amp;gt;&amp;lt;a href="$*SITEROOT/allpics.bml?user=$c.poster.username" target="_blank"&amp;gt;&amp;lt;img border="0" src="$c.userpic.url" width="$c.userpic.width" height="$c.userpic.height" alt="$c.poster.username's user pictures" title="$c.poster.username's user pictures" /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;""";
    }
    var string commentdate = "";
    $commentdate = $c.time-&amp;gt;date_format($*date_format) + " - " + $c.time-&amp;gt;time_format($*time_format);

    #userpic
    print "$userpic\n";

    # subject:
    if ( $c.subject == "" ) {
      print "&amp;lt;h2 name=\"$c.anchor\" id=\"$c.anchor\"&amp;gt;$c.subject_icon &amp;lt;i&amp;gt;$*text_nosubject&amp;lt;/i&amp;gt;&amp;lt;/h2&amp;gt;";
    } else {
      print "&amp;lt;h2 name=\"$c.anchor\" id=\"$c.anchor\"&amp;gt;$c.subject_icon $c.subject&amp;lt;/h2&amp;gt;";
    }

    print "&amp;lt;h4&amp;gt;";
      print "&amp;lt;b&amp;gt;$*text_comment_from&amp;lt;/b&amp;gt; $poster&amp;lt;br /&amp;gt;\n";
      print "&amp;lt;b&amp;gt;$*text_comment_date&amp;lt;/b&amp;gt; $commentdate&amp;lt;br /&amp;gt;\n";
      if ( $c.metadata{"poster_ip"} ) {
        print "&amp;lt;b&amp;gt;$*text_comment_ipaddr&amp;lt;/b&amp;gt; " + $c.metadata{"poster_ip"} + "&amp;lt;br /&amp;gt;";
      }
      print get_permalink($c.permalink_url) + "&amp;lt;br /&amp;gt;\n";
      var Link lnk;
      foreach var string key ($c.link_keyseq) {
        $lnk = $c-&amp;gt;get_link($key); 
        if ( $lnk.url != "" ) { if($lnk.icon.url != "") { print """&amp;lt;a href="$lnk.url"&amp;gt;&amp;lt;img src="$lnk.icon.url" width="$lnk.icon.width" height="$lnk.icon.height" alt="$lnk.caption" title="$lnk.caption" border="0" /&amp;gt;&amp;lt;/a&amp;gt; """; } }
      }
    print "&amp;lt;/h4&amp;gt;\n";

    if ( $this.multiform_on ) {
      print "&amp;lt;label for=\"ljcomsel_$c.talkid\"&amp;gt;$*text_multiform_check&amp;lt;/label&amp;gt;";
      $c-&amp;gt;print_multiform_check();
    }

    print "&amp;lt;div class=\"entry-item\"&amp;gt;"; $c-&amp;gt;print_text(); "&amp;lt;/div&amp;gt;\n";
    print "&amp;lt;h4&amp;gt;";
      if ( not $c.frozen       ) { print "&amp;lt;a href=\"$c.reply_url\" title=\"$*text_comment_reply\"&amp;gt;$*text_comment_reply&amp;lt;/a&amp;gt;";       } else { print $*text_comment_frozen; }
      if ( $c.parent_url != "" ) { print " | &amp;lt;a href=\"$c.parent_url\" title=\"$*text_comment_parent\"&amp;gt;$*text_comment_parent&amp;lt;/a&amp;gt;"; }
      if ( $c.thread_url != "" ) { print " | &amp;lt;a href=\"$c.thread_url\" title=\"$*text_comment_thread\"&amp;gt;$*text_comment_thread&amp;lt;/a&amp;gt;"; }
    print "&amp;lt;/h4&amp;gt;";
  print "&amp;lt;/div&amp;gt;\n\n";
  print "&amp;lt;hr /&amp;gt;";
}

function EntryPage::print_comment_partial (Comment c) {
  var string poster = defined $c.poster ? $c.poster-&amp;gt;as_string() : "&amp;lt;i&amp;gt;$*text_poster_anonymous&amp;lt;/i&amp;gt;";
  var string subj = $c.subject != "" ? $c.subject : $*text_nosubject;
  print """&amp;lt;a href="$c.permalink_url" name="$c.anchor" id="$c.anchor"&amp;gt;$subj&amp;lt;/a&amp;gt; - $poster""";
}

# -------------------------------
# print reply form page
# -------------------------------
function ReplyPage::print_body() {
  if ( not $.entry.comments.enabled ) {
    print "&amp;lt;div id=\"entries\"&amp;gt;\n";
      print "&amp;lt;div class=\"ind-entry\"&amp;gt;";
        print "&amp;lt;h2&amp;gt;$*text_reply_nocomments_header&amp;lt;/h2&amp;gt;";
        print "$*text_reply_nocomments";
      print "&amp;lt;/div&amp;gt;";
    print "&amp;lt;/div&amp;gt;";
  } else {
    print "&amp;lt;div id=\"entries\"&amp;gt;\n";

      # get date
      var string datetime;
      $datetime = $.replyto.time-&amp;gt;date_format($*date_format) + " | " + $.replyto.time-&amp;gt;time_format($*time_format);

      # get any extra user info (if posting to community, etc)
      var string poster = "";
      var string userpic = "";
      if ( defined $.replyto.poster ) {
        $poster = $.replyto.poster-&amp;gt;as_string();
        if ( defined $.replyto.userpic ) {
          $userpic = """&amp;lt;h3 class="userpic"&amp;gt;&amp;lt;a href="$*SITEROOT/allpics.bml?user=$.replyto.poster.username" target="_blank"&amp;gt;&amp;lt;img border="0" src="$.replyto.userpic.url" width="$.replyto.userpic.width" height="$.replyto.userpic.height" alt="$.replyto.poster.username's user pictures" title="$.replyto.poster.username's user pictures" /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;""";
        }
      } else {
        $poster = "&amp;lt;i&amp;gt;$*text_poster_anonymous&amp;lt;/i&amp;gt;";
      }

      # print the entry now:
      print "&amp;lt;div class=\"ind-entry\"&amp;gt;";
        # print icon (if needed)
        if ( $userpic != "" ) {
          print "$userpic";	
        }
        print "&amp;lt;h2&amp;gt;";
          if ( $.replyto.subject == "" ) {
            print "&amp;lt;i&amp;gt;$*text_nosubject&amp;lt;/i&amp;gt;";
          } else {
            print "$.replyto.subject";
          }
        print "&amp;lt;/h2&amp;gt;";

        print "&amp;lt;h4&amp;gt;\n";
          print "&amp;lt;b&amp;gt;$datetime&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;";
          print "&amp;lt;b&amp;gt;$*text_comment_from&amp;lt;/b&amp;gt; $poster";
          if ( $.replyto.metadata{"poster_ip"} ) {
            print "&amp;lt;b&amp;gt;$*text_comment_ipaddr&amp;lt;/b&amp;gt; " + $.replyto.metadata{"poster_ip"} + "&amp;lt;br /&amp;gt;";
          }
        print "&amp;lt;/h4&amp;gt;";
        print "&amp;lt;div class=\"entry-item\"&amp;gt;"; $.replyto-&amp;gt;print_text(); "&amp;lt;/div&amp;gt;\n";
        print "&amp;lt;h4&amp;gt;";
          print get_permalink($.replyto.permalink_url) + " | &amp;lt;a href=\"$.entry.comments.read_url\" title=\"$*text_comment_viewall\"&amp;gt;$*text_comment_viewall&amp;lt;/a&amp;gt;\n";
        print "&amp;lt;/h4&amp;gt;";
      print "&amp;lt;/div&amp;gt;\n";
      print "&amp;lt;hr /&amp;gt;";
      print "&amp;lt;div class=\"entry-form\"&amp;gt;\n";
        print "&amp;lt;h2&amp;gt;Reply&amp;lt;/h2&amp;gt;\n";
        $.form-&amp;gt;print();
      print "&amp;lt;/div&amp;gt;";
    print "&amp;lt;/div&amp;gt;";
  }
}

# -------------------------------
# print available years
# -------------------------------
function YearPage::print_year_links() {
  print "&amp;lt;h4&amp;gt;";
    print "&amp;lt;b&amp;gt;available years:&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;";
    foreach var YearYear y ($.years) {
      if ($y.displayed) {
        print "&amp;lt;b&amp;gt;$y.year&amp;lt;/b&amp;gt; ";
      } else {
        print "&amp;lt;a href=\"$y.url\" title=\"$y.year\"&amp;gt;$y.year&amp;lt;/a&amp;gt; ";
      }
    }
  print "&amp;lt;/h4&amp;gt;";
}


# -------------------------------
# print available month
# -------------------------------
function YearPage::print_month ( YearMonth m ) {
  if ( not $m.has_entries ) { 
    return;
  }

  print "&amp;lt;div class=\"ind-entry\"&amp;gt;\n";
    print "&amp;lt;h2&amp;gt;" + $m-&amp;gt;month_format() + "&amp;lt;/h2&amp;gt;\n";
    print "&amp;lt;h4&amp;gt;&amp;lt;a href=\"$m.url\" title=\"$*text_view_month\"&amp;gt;$*text_view_month&amp;lt;/a&amp;gt;&amp;lt;/h4&amp;gt;";
    print "&amp;lt;div style=\"month\"&amp;gt;";
      foreach var YearWeek w ( $m.weeks ) {
        foreach var YearDay d ( $w.days ) {
          if ( $d.num_entries &amp;gt; 0 ) {
            var string date = $d.date-&amp;gt;date_format("%%dayord%%");
            print "&amp;lt;b&amp;gt;$date&amp;lt;/b&amp;gt; {&amp;lt;a href=\"$d.url\" title=\"d.num_entries comments\"&amp;gt;$d.num_entries&amp;lt;/a&amp;gt;}&amp;lt;br /&amp;gt;\n";
          }
        }
      }
      print "&amp;lt;/div&amp;gt;\n";
    print "&amp;lt;/div&amp;gt;\n";
  print "&amp;lt;hr /&amp;gt;";
}


# -------------------------------
# month view
# -------------------------------
function MonthPage::print_body() {
  print "&amp;lt;div id=\"entries\"&amp;gt;";
    print "&amp;lt;div class=\"ind-entry\"&amp;gt;\n";
      print "&amp;lt;h2&amp;gt;" + $.date-&amp;gt;date_format($*lang_fmt_month_long) + "&amp;lt;/h2&amp;gt;";

      print "&amp;lt;form method=\"post\" action=\"$.redir.url\"&amp;gt;";
        $.redir-&amp;gt;print_hiddens();
        if ( $.prev_url != "" ) { 
          print "[&amp;lt;a href=\"$.prev_url\" title=\"&amp;amp;laquo;\"&amp;gt;&amp;amp;laquo;&amp;lt;/a&amp;gt;]\n";
        }
        if ( size $.months &amp;gt; 1 ) {
          print "&amp;lt;select name=\"redir_key\"&amp;gt;\n";
            foreach var MonthEntryInfo mei ( $.months ) {
              var string sel;
              if ( $mei.date.year == $.date.year and $mei.date.month == $.date.month ) {
                $sel = " selected=\"selected\"";
              }
              print "&amp;lt;option value=\"$mei.redir_key\" label=\"" + $mei.date-&amp;gt;date_format($*lang_fmt_month_long) + "\" $sel&amp;gt;" + $mei.date-&amp;gt;date_format($*lang_fmt_month_long) + "&amp;lt;/option&amp;gt;";
            }
          print "&amp;lt;/select&amp;gt;\n&amp;lt;input type=\"submit\" value=\"View\" /&amp;gt;";
        }
        if ( $.next_url != "" ) { 
          print "\n[&amp;lt;a href=\"$.next_url\" title=\"&amp;amp;raquo;\"&amp;gt;&amp;amp;raquo;&amp;lt;/a&amp;gt;]\n";
        }
      print "&amp;lt;/form&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;";

      # print dates:
      foreach var MonthDay d ( $.days ) {
        if ( $d.has_entries ) {
          print "&amp;lt;div class=\"month-entries\"&amp;gt;\n";
            print "&amp;lt;a href=\"$d.url\" title=\"" + lang_ordinal($d.day) + "\"&amp;gt;&amp;lt;b&amp;gt;" + lang_ordinal($d.day) + "&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;";
            print "&amp;lt;ul&amp;gt;";
              foreach var Entry e ( $d.entries ) {
                print "&amp;lt;li&amp;gt;";
                  print "" + $e.time-&amp;gt;time_format("short") + " ";
                  if ( $e.poster.username != $e.journal.username ) {
                    $e.poster-&amp;gt;print(); " : ";
                  }
                  "$e.security_icon ";
                  if ( $e.subject == "" ) {
                    print "&amp;lt;a href=\"$e.permalink_url\" title=\"$*text_nosubject\"&amp;gt;&amp;lt;i&amp;gt;$*text_nosubject&amp;lt;/i&amp;gt;&amp;lt;/a&amp;gt;";
                  } else {
                    print "&amp;lt;a href=\"$e.permalink_url\" title=\"$e.subject\"&amp;gt;$e.subject&amp;lt;/a&amp;gt;";
                  }
                  if ( $e.comments.count &amp;gt; 0 ) {
                    print " {" + $e.comments.count + "}";
                  }
                  print "&amp;lt;/li&amp;gt;";
                }
            print "&amp;lt;/ul&amp;gt;";
          print "&amp;lt;/div&amp;gt;";
          print "&amp;lt;hr /&amp;gt;";
        }
      }
    print "&amp;lt;/div&amp;gt;\n";
  print "&amp;lt;/div&amp;gt;";
}&lt;/pre&gt;&lt;a name='cutid2-end'&gt;&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:s2ljdotcom:763</id>
    <author>
      <name>kunzite</name>
    </author>
    <lj:poster user="kunzite1" userid="956023"/>
    <link rel="alternate" type="text/html" href="https://s2ljdotcom.livejournal.com/763.html"/>
    <link rel="self" type="text/xml" href="https://s2ljdotcom.livejournal.com/data/atom/?itemid=763"/>
    <title>3kunumn1</title>
    <published>2005-07-03T17:00:52Z</published>
    <updated>2006-03-25T22:10:02Z</updated>
    <category term="3kunumn1"/>
    <category term="3 column"/>
    <category term="3column"/>
    <content type="html">changes:&lt;br /&gt;property declarations prettyified.&lt;br /&gt;stylesheet MUCH easier to read.&lt;br /&gt;&lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s for sidebars changed to table cells.&lt;br /&gt;&lt;span style="text-decoration:line-through;"&gt;commented out images that don't work right.&lt;br /&gt;hard coded text for images that don't work right.&lt;/span&gt;&lt;br /&gt;added tags to &lt;code&gt;Entry::print_metadata()&lt;/code&gt;&lt;br /&gt;fixed header image&lt;br /&gt;k1-ified &lt;code&gt;Entry::print_linkbar()&lt;/code&gt; and added image toggle for links&lt;br /&gt;image toggle for comment links&lt;br /&gt;new text properties for edit entry, add to mem, edit tags, tell friend text&lt;a name='cutid1-end'&gt;&lt;/a&gt;&lt;hr /&gt;todo:&lt;br /&gt;ajax comments&lt;br /&gt;quick reply comments&lt;a name='cutid2-end'&gt;&lt;/a&gt;&lt;hr /&gt;&lt;pre&gt;&lt;code&gt;layerinfo "type"            = "layout";
layerinfo "name"            = "3 column";
layerinfo "author_name"     = "Louise (unfloopy)/Kunzite (kunzite1)";
layerinfo "author_email"    = "unfloopy@gmail.com/kunzite1@livejournal.com";
layerinfo "des"             = "3 column layout by Louise (/~unfloopy)./Edited greatly by Kunzite (/~kunzite1)";
layerinfo "redist_uniq"     = "3column/layout";
layerinfo "source_viewable" = 1;

################################## PROPERTIES ####################################

propgroup prez = "Presentation";
propgroup prez {
  property bool show_entry_userpic {
    des = "Always display userpic?";
  }
  property bool color_forms {
    des  = "Form Elements";
    note = "Select No to disable the customized form elements.";
  }
  property bool image_links {
    des  = "Use Images for comment links";
  }
  property use  use_shared_pic;
  property use  view_entry_disabled;
  property use  page_recent_items;
  property use  page_friends_items;
  property use  tags_aware;

  set show_entry_userpic = true;
  set color_forms        = true;
  set image_links        = true;
  set page_recent_items  = 10;
  set page_friends_items = 20;
  set tags_aware         = true;
}

propgroup text = "Text";
propgroup text {
  property use text_skiplinks_forward;
  property use text_skiplinks_back;
  property use text_post_comment;
  property use text_reply_back;
  property use text_permalink;
  property string t_divider {
    des = "Entries Navigation: Links divider";
  }
  property string t_edit_entry {
    des = "Text used for Edit Entry link/caption";
  }
  property string t_mem_add {
    des = "Text used for Add to Memories link/caption";
  }
  property string t_edit_tags {
    des = "Text used for Edit Tags link/caption";
  }
  property string t_tell_friend {
    des = "Text used for Tell a Friend link/caption";
  }
  property use text_comment_reply;
  property use text_read_comments;
  property use text_view_recent;
  property use text_view_archive;
  property use text_view_userinfo;
  property use text_view_friends;
  property use text_nosubject;
  property use text_noentries_day;
  property use text_meta_music;
  property use text_meta_mood;
  property use text_view_month;
  property use text_read_comments_friends;
  property string links_header {
    des = "Links header";
  }
  property string about_title {
    des = "About box title";
  }
  property string nav_title {
    des = "Navigation title";
  }
  property string blurb_title {
    des = "Blurb Title";
  }
  property string blurb_text {
    des = "Blurb Text";
  }

  set text_skiplinks_forward     = "forward &amp;gt;";
  set text_skiplinks_back        = "&amp;lt; back";
  set text_post_comment          = "reply";
  set text_reply_back            = "comments";
  set text_permalink             = "link";
  set t_divider                  = " ";	
  set t_edit_entry               = "edit entry";
  set t_mem_add                  = "mem";
  set t_edit_tags                = "edit tags";
  set t_tell_friend              = "tell friend";
  set text_comment_reply         = "reply";
  set text_read_comments         = "#";
  set text_view_recent           = "recent";
  set text_view_archive          = "archive";
  set text_view_userinfo         = "userinfo";
  set text_view_friends          = "friends";
  set text_nosubject             = "nothing";
  set text_noentries_day         = "I didn't post on this day. Sorry!";
  set text_meta_music            = "current song:";
  set text_meta_mood             = "current mood:";
  set text_view_month            = "view all";
  set text_read_comments_friends = "#";
  set links_header               = "links";
  set about_title                = "about";
  set nav_title                  = "navigate";
  set blurb_title                = "blurb";
  set blurb_text                 = "you can write here about anything you want.";
}	

propgroup images = "Images";
propgroup images {
  property string bg_image {
    des = "Background Image URL [optional]";
  }
  property string bg_repeat {
    des = "Background Image Repeat [either repeat or no-repeat]";
  }
  property string header_image {
    des = "Header: Image URL [optional]";
  }
  property string header_height {
    des = "Header: Height [a must IF you have a header image]";
  }
  property string i_comment {
    des = "Icon: Comments";
  }
  property string i_perma {
    des = "Icon: PermaLink";
  }
  property string i_mem {
    des = "Icon: Add To Memories";
  }
  property string i_leave {
    des = "Icon: Leave A Comment";
  }
  property string i_edit {
    des = "Icon: Edit Entry";
  }
  property string i_tags {
    des = "Icon: Edit Tags";
  }

  set bg_image      = "";
  set bg_repeat     = "repeat";
  set header_image  = "";
  set header_height = "0px";
  set i_comment     = "";
  set i_perma       = "";
  set i_mem         = "";
  set i_leave       = "";
  set i_edit        = "";
  set i_tags        = "";
}

propgroup stylesheet = "Stylesheet";
propgroup stylesheet {
  property string font_size {
    des = "Overall: Font Size";
  }
  property string font_family {
    des = "Overall: Font Family";
  }
  property string link_weight {
    des = "Overall: Link Weight [either normal or bold]";
  }
  property string link_side_w {
    des = "Sidebar: Link weight [normal or bold]";
  }
  property string side_h_size {
    des = "Sidebar: Header Size";
  }
  property string entries_size {
    des = "Entries: Font Size";
  }
  property string sub_size {
    des = "Entries: Subject Text Size";
  }
  property string c_sub_size {
    des = "Comments: Subject Text Size";
  }

  set font_size    =  "8pt";
  set font_family  = "arial";
  set link_weight  = "normal";
  set link_side_w  = "normal";
  set entries_size =  "9pt";
  set c_sub_size   = "10pt";
  set side_h_size  = "13px";
  set sub_size     = "15pt";
}

propgroup colors = "Color";
propgroup colors {
  property Color color_bg {
    des = "Background Color";
  }
  property Color font_color {
    des = "Overall: Font Color";
  }
  property Color link_color {
    des = "Overall: Link Color";
  }
  property Color link_hover {
    des = "Overall: Link Hover Color";
  }
  property Color link_side {
    des = "Sidebar: Link color";
  }
  property Color link_side_h {
    des = "Sidebar: Link hover color";
  }
  property Color side_bg {
    des = "Sidebar: Background color";
  }
  property Color side_t_color {
    des = "Sidebar: Text color";
  }
  property Color side_border {
    des = "Sidebar: Borders";
  }
  property Color side_h_color {
    des = "Sidebar: Header Color";
  }
  property Color side_h_border {
    des = "Sidebar: Header Border";
  }
  property Color side_h_bg {
    des = "Sidebar: Header Background";
  }
  property Color entries_bg {
    des = "Entries: Background color";
  }
  property Color entries_border {
    des = "Entries: Border color";
  }
  property Color button_bg {
    des = "Entries: Buttons background";
  }
  property Color button_bg_h {
    des = "Entries: Buttons Background hover";
  }
  property Color entries_font_color {
    des = "Entries: Font Color";
  }
  property Color sub_color {
    des = "Entries: Subject Color";
  }
  property Color c_sub_color {
    des = "Comments: Subject Text Color";
  }
  property Color c_sub_bg {
    des = "Comments: Subject Background";
  }

  set color_bg           = "#e6cabe";
  set font_color         = "#4b3730";
  set link_color         = "#78534b";
  set link_hover         = "#78534b";
  set link_side          = "#4b3730";
  set link_side_h        = "#4b3730";
  set side_bg            = "#e6cabe";
  set side_t_color       = "#4b3730";
  set side_border        = "#dab5ac";
  set side_h_color       = "#333333";
  set side_h_border      = "#333333";
  set side_h_bg          = "#dab5ac";
  set entries_bg         = "#e6cabe";
  set entries_border     = "#dab5ac";
  set button_bg          = "#e6cabe";
  set button_bg_h        = "#ecd7c7";
  set entries_font_color = "#4b3730";
  set sub_color          = "#78534b";
  set c_sub_color        = "#4b3730";
  set c_sub_bg           = "#dab5ac";
}


####################################### STYLESHEET #######################################

function print_stylesheet ()  {"""
body {
  background: $*color_bg;
  font:       $*font_size $*font_family;
  color:      $*font_color; 
""";
if (clean_url($*bg_image) != "") {
  """  background-image:  url($*bg_image);
  background-repeat: $*bg_repeat;
  """; } """}
a {
  color:       $*link_color;
  font-weight: $*link_weight;
}
a:hover {
  color:       $*link_hover;
  font-weight: $*link_weight;
}
.currenttags a {
  font-weight: bold;
}
h1 {
  color:         $*sub_color;
  font-size:     $*sub_size;
  text-align:    left;
  padding:       5px;
  margin:        0px;
  border-bottom: 1px dashed $*entries_border;
}
h2 {
  border:           1px solid $*side_h_border;
  font-size:        $*side_h_size;
  text-align:       center;
  margin:           3px 0px;
  padding:          0px;
  background-color: $*side_h_bg;
  color:            $*side_h_color;
}
h3 {
  color:      $*sub_color;
  text-align: left;
  font:       bold arial;
  padding:    5px;
  margin:     0px;
  border-top: solid 1px $*entries_border;
}
ul.links {
  margin:          1px 0px;
  padding:         3px;
  color:           $*side_t_color;
  list-style-type: none;
}
li.links {
  margin-left: 5px;
}
li.links a {
  text-decoration: none;
}
li.links_header {
  font:          11px;
  border-bottom:  1px solid $*side_t_color;
  padding-top:    7px;
}
""";
if($*color_forms) {
"""
select, input, textarea {
  background-color: $*entries_bg;
  color:            $*font_color;
}
""";
}
"""
#container{
/*  position: absolute;
  top:      $*header_height; */
}
#leftbar{
/*  position: absolute;
  top:       10px;
  left:      10px; */
  width:    170px;
}
#rightbar{
/*  position: absolute;
  top:       10px;
  right:      0px; */
  width:    170px;
}
#leftbar a, #rightbar a {
  color:       $*link_side;
  font-weight: $*link_side_w;
}
#leftbar a:hover, #rightbar a:hover {
  color: $*link_side_h;
}
#entries{
  margin:     10px 0px 10px 0px;
  text-align: center;
  background: $*entries_bg;
  border:      3px double $*entries_border;
  padding:    10px;
}
#readme {
  text-align: justify;
  padding:    2px;
}
#header {
position: absolute;
width:    100%;
top:      0px;
left:     0px;
height:   $*header_height;
"""; if (clean_url($*header_image) != "") {
  """  background-image:  url($*header_image);
  background-repeat: no-repeat;
  background-align:  center;
"""; } """ }

div.entrylinks {
  font:           8pt Verdana;
  text-align:    right;
  padding:        2px 10px 2px 10px;
  line-height:   20px;
  margin-bottom:  0px;
  margin-top:     5px;
  border-top:     1px dashed $*entries_border;
}
div.entrylinks a {
  background-color: $*button_bg;
  text-decoration:  none;
  margin:           2px;
  padding:          2px;
}
div.entrylinks a:hover {
  background-color: $*button_bg_h;
}
div.entrylinks img {
  border:          0px;
  text-decoration: none;
}
div.entry{
  margin-bottom: 35px;
}

.entrytext{
  font:       $*entries_size Arial;
  text-align: justify;
  color:      $*entries_font_color;
}
.aboutentry{
  text-align:   left;
  margin-right: 10px;
}
.userpic{
  margin: 5px;
}
.sidebox{
  border:      3px double $*side_border;
  background: $*side_bg;
  margin:     10px;
  padding:     5px;
}
.userpic2{
  position: relative;
  float:    left;
  padding:  5px;
  margin:   0px 0px 0px 0px;
}
.userpic_reply{
  position: relative;
  float:    left;
  padding:  5px;
}
.moodpic{
  position:     relative;
  float:        right;
  padding:        0px;
  padding-left:   5px;
  margin:         0px;
  margin-top:   -10px;
  margin-right:  -5px;
}
.calendarActive{
  font-weight: bold;
}
.blurb {
  color: $*side_t_color;
}
.nosubject {
  font-style: italic;
}
.replyform {
  text-align: left;
}
.comment_postedby {
  text-align:  left;
  font-weight: bold;
}
.comment_date{
  text-align: left;
}
.comment_subject {
  color:          $*c_sub_color;
  background:     $*c_sub_bg;
  font:           $*c_sub_size;
  font-weight:    bold;
  letter-spacing: 1.5px;
  text-align:     left;
  padding:        3px;
  margin-right:   0;
}
.comment_wrapper{
  border:     1px solid $*entries_border;
  background: $*entries_bg;
  padding:    5px;
  margin:     0px 0px 5px 0px;
}
.comment_info {
  width: 95%;
}
.comment_links {
  text-align: right;
  padding:    3px;
  margin:     0px;
  border-top: 1px dashed $*entries_border;
}
.comment_links a {
  padding:         2px;
  text-decoration: none;
}
.comment_child {
  margin: 0px 0px 0px 20px;
}
.minicomment {
  padding: 4px;
  border:  1px solid $*entries_border;
}
.minicommentholder {
  border: 1px solid $*entries_border;
}
"""; }

############################# FUNCTIONS ########################################

function prop_init() {
  if ($*i_comment == "") { $*i_comment = "$*IMGDIR/style/3column/comments.gif"; }
  if ($*i_perma == "")   { $*i_perma   = "$*IMGDIR/style/3column/permalink.gif"; }
  if ($*i_mem == "")     { $*i_mem     = "$*IMGDIR/style/3column/memories.gif"; }
  if ($*i_leave == "")   { $*i_leave   = "$*IMGDIR/style/3column/leavecomment.gif"; }
  if ($*i_edit == "")    { $*i_edit    = "$*IMGDIR/style/3column/editentry.gif"; }
  if ($*i_tags == "")    { $*i_tags    = "$*IMGDIR/style/3column/edittags.gif"; }
}

function replace_text(string text, string find, string replacement) : string "Search within \$text and replaces any occurences of \$find with \$replacement." {
#######################################################
# from lj:mageboltrat's industrial nippon (id=533012) #
#######################################################
  var string[] findarray;
  var int pos = 1;
  foreach var string findcharacter($find) {
    $findarray[$pos] = $findcharacter;
    $pos             = $pos + 1;
  }
  var int    place         = 1;
  var bool   found         = false;
  var string completedtext = "";
  var string foundtext     = "";
  foreach var string searchcharacter($text) {
    if  ($searchcharacter == $findarray[$place]) {
      if ($place == $find-&amp;gt;length()) {
        $foundtext =  $replacement;
        $place     = 1;
      } else {
        $foundtext = $foundtext + $searchcharacter;
        $place     = $place + 1;
      }  
    } else {
      $completedtext = $completedtext + $foundtext + $searchcharacter;
      $foundtext     = "";  
      $place         = 1;    
    }
  }
  $completedtext = $completedtext + $foundtext;
  return $completedtext;
}

function rehtml(string text) : string "Unescape html in \$text by replacing &amp;amp;gt; with &amp;gt; and &amp;amp;lt; with &amp;lt;." {
####################################################################
# by lj:masterslacker using lj:mageboltrat's replace_text function #
####################################################################
  return replace_text(replace_text(replace_text(replace_text($text, "&amp;amp;lt;", "&amp;lt;"), "&amp;amp;gt;", "&amp;gt;"), "&amp;amp;amp;lt;", "&amp;lt;"), "&amp;amp;amp;gt;", "&amp;gt;");
}

function generateDots (string un)  : string {
  var string dots;
  if($un != "") {
    foreach var string s ($un)  {
      if($s == "a" or $s == "c" or $s == "e" or $s == "f" or $s == "h" or $s == "k" or $s == "m" or $s == "n" or $s == "p" or $s == "r" or $s == "t" or $s == "v" or $s == "x" or $s == "z") {
        $dots = $dots + ":";
      } elseif($s == " ") {
        $dots = $dots + " ";
      } else {
        $dots = $dots + ".";
      }
    }
  }
  return $dots;
}

function print_linkbox (string header, string text)  {
  """&amp;lt;div class="sidebox"&amp;gt;\n""";
  print safe "&amp;lt;h2&amp;gt;$header&amp;lt;/h2&amp;gt;\n";
  print safe """&amp;lt;ul class="links"&amp;gt;\n$text\n&amp;lt;/ul&amp;gt;\n""";
  "&amp;lt;/div&amp;gt;\n";
}

function box_item (string text) : string {
  return "$text\n";
}

function print_box (string header, string text) {
  """&amp;lt;div class="sidebox"&amp;gt;""";
  print safe """&amp;lt;h2&amp;gt;$header&amp;lt;/h2&amp;gt;""";
  print safe "$text\n";
  "&amp;lt;/div&amp;gt;";
}

function Page::lay_print_userpic() : string {
  var string return = "";
  if(defined $.journal.default_pic) {
    $return = """&amp;lt;div id="userpic"&amp;gt;&amp;lt;a href="$*SITEROOT/allpics.bml?user=$.journal.username"&amp;gt;&amp;lt;img src="$.journal.default_pic.url" width="$.journal.default_pic.width" height="$.journal.default_pic.height" alt="$.journal.name" title="$.journal.name" border="0" /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;""";
  }
  return $return;
}

function Page::lay_print_calendar ()  {
  var YearMonth m    = $this-&amp;gt;get_latest_month();
  var string    mon  = $m-&amp;gt;month_format();
  var string    text = "";
  $text = """&amp;lt;table cellspacing="2" cellpadding="2" border="0" width="100%"&amp;gt;""";
  foreach var YearWeek w ($m.weeks) {
    $text = $text + """&amp;lt;tr&amp;gt;""";
    if($w.pre_empty &amp;gt; 0) {
      foreach var int empty (1..$w.pre_empty)  {
        $text = $text + """&amp;lt;td class="calempty"&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;""";
      }
    }
    foreach var YearDay d ($w.days) {
      if($d.num_entries &amp;gt; 0) {
        $text = $text + """&amp;lt;td class="calendarActive"&amp;gt;&amp;lt;a href="$d.url"&amp;gt;$d.day&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;""";
      } else {
        $text = $text + """&amp;lt;td class="calendarInactive"&amp;gt;$d.day&amp;lt;/td&amp;gt;""";
      }
    }
    $text = $text + "&amp;lt;/tr&amp;gt;\n";
  }
  $text = $text + "&amp;lt;/table&amp;gt;";
  print_box($mon, $text);
}

function print_left_bar() {
  var Page   p       = get_page();
  var string header  = "";
  var string content = "";
  """
        &amp;lt;td id="leftbar" valign="top"&amp;gt;
          &amp;lt;div&amp;gt;
  """;

  $header  = $*about_title;
  $content = """&amp;lt;div align="center"&amp;gt;""" + $p-&amp;gt;lay_print_userpic() + "&amp;lt;br /&amp;gt;" + $p.journal-&amp;gt;as_string() + "&amp;lt;br /&amp;gt;" + """&amp;lt;a href="$*SITEROOT/friends/add.bml?user=$p.journal.username"&amp;gt;&amp;lt;img src="$*IMGDIR/btn_addfriend.gif" alt="Friend Me" title="Friend Me" width="22" height="20" style="border: 0;" /&amp;gt;&amp;lt;/a&amp;gt; &amp;lt;a href="$*SITEROOT/todo/?user=$p.journal.username"&amp;gt;&amp;lt;img src="$*IMGDIR/btn_todo.gif" alt="My To-do List" title="My To-do List" width="22" height="20" style="border: 0;" /&amp;gt;&amp;lt;/a&amp;gt; &amp;lt;a href="$*SITEROOT/tools/memories.bml?user=$p.journal.username"&amp;gt;&amp;lt;img src="$*IMGDIR/btn_memories.gif" alt="Memories" title="Memories" width="22" height="20" style="border: 0;" /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;""";
  print_box($header, $content);

  if($*blurb_text != "") {
    $header  = $*blurb_title;
    $content = rehtml($*blurb_text);
    print_box($header, $content);
  }

  $p-&amp;gt;lay_print_calendar();
  """
          &amp;lt;/div&amp;gt;
        &amp;lt;/td&amp;gt;
  """;
}

function print_right_bar() {
  var Page   p       = get_page();
  var string header  = "";
  var string content = "";
  """
        &amp;lt;td id="rightbar" valign="top"&amp;gt;
          &amp;lt;div&amp;gt;
  """;

  $header  = $*nav_title;
  $content = """&amp;lt;ul class="links"&amp;gt;""";
  var string[] views_order = ["recent", "friends", "archive", "userinfo"]; # view order
                                                                           # "recent"   = recent   view
                                                                           # "friends"  = friends  view
                                                                           # "archive"  = calendar view
                                                                           # "userinfo" = userinfo link
  var string{} view_text   = { # build text hash
                              "recent"   =&amp;gt; $*text_view_recent,
                              "friends"  =&amp;gt; $p.journal_type != "C" ? $*text_view_friends : $*text_view_friends_comm,
                              "archive"  =&amp;gt; $*text_view_archive,
                              "userinfo" =&amp;gt; $*text_view_userinfo
                             };
  var string   base_url    = $p.journal-&amp;gt;base_url(); # get base url
  var string{} view_url    = { # build url hash
                              "recent"   =&amp;gt; "$base_url/",
                              "friends"  =&amp;gt; "$base_url/friends/",
                              "archive"  =&amp;gt; "$base_url/calendar/",
                              "userinfo" =&amp;gt; "$*SITEROOT/userinfo.bml?user=$p.journal.username&amp;amp;mode=full"
                             };
  foreach var string v ($views_order) {
    $content = $content + """&amp;lt;li class="links"&amp;gt;&amp;lt;a href="$view_url{$v}"&amp;gt;$view_text{$v}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n""";
  }
  $content = $content + "&amp;lt;/ul&amp;gt;";
  print_box($header, $content);

  $p-&amp;gt;print_linklist();

  """
          &amp;lt;/div&amp;gt;
        &amp;lt;/td&amp;gt;
  """;
}

function num_comments_in_thread (Comment[] comments) : int {
  var int total = 0;
  foreach var Comment c ($comments) {
    $total = $total + 1;
    if (size $c.replies &amp;gt; 0) {
      $total = $total + num_comments_in_thread($c.replies);
    }
  }
  return $total;
}

function Page::print_linklist() {
  if (size $.linklist &amp;lt;= 0) {
    return;
  }
  var string links;
  foreach var UserLink l ($.linklist) {
    if ($l.title) {
      if ($l.is_heading) {
        $links = $links + """&amp;lt;li class="links_header"&amp;gt;$l.title&amp;lt;/li&amp;gt;\n""";
      } else {
        $links = $links + box_item("""&amp;lt;li class="links"&amp;gt;&amp;lt;a href="$l.url"&amp;gt;$l.title&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n""");
      }
    }
  }
  print_linkbox($*links_header, $links); 
}

function Page::lay_print_calendar ()  {
  var YearMonth m = $this-&amp;gt;get_latest_month();
  var string mon = $m-&amp;gt;month_format();
  var string text;
  $text = """&amp;lt;table cellspacing="2" cellpadding="2" border="0" width="100%"&amp;gt;\n""";
  foreach var YearWeek w ($m.weeks) {
    $text = $text + "&amp;lt;tr&amp;gt;\n";
    if($w.pre_empty &amp;gt; 0) {
      foreach var int empty (1..$w.pre_empty)  {
        $text = $text + """&amp;lt;td class="calempty"&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;\n""";
      }
    }
    foreach var YearDay d ($w.days) {
      if($d.num_entries &amp;gt; 0) {
        $text = $text + """&amp;lt;td class="calendarActive"&amp;gt;&amp;lt;a href="$d.url"&amp;gt;$d.day&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;\n""";
      } else {
        $text = $text + """&amp;lt;td class="calendarInactive"&amp;gt;$d.day&amp;lt;/td&amp;gt;\n""";
      }
    }
    $text = $text + "&amp;lt;/tr&amp;gt;\n";
  }
  $text = $text + "&amp;lt;/table&amp;gt;";
  print_box($mon, $text);
}


function Page::lay_print_subnav ()  { }

function RecentPage::lay_print_subnav ()  {
  var string back;
  if($.nav.backward_url != "") {
    $back = """&amp;lt;a href="$.nav.backward_url"&amp;gt;""" + rehtml(get_plural_phrase($.nav.backward_skip, "text_skiplinks_back")) + "&amp;lt;/a&amp;gt;";
  } else {
    $back = "&amp;amp;nbsp;";
  }
  var string forward;
  if($.nav.forward_url != "") {
    $forward = """&amp;lt;a href="$.nav.forward_url"&amp;gt;""" + rehtml(get_plural_phrase($.nav.forward_skip, "text_skiplinks_forward")) + "&amp;lt;/a&amp;gt;";
  } else {
    $forward = "&amp;amp;nbsp;";
  }
  var int    start = $.nav.skip;
  var int    end   = $.nav.skip + size $.entries;
  var string text  = "$start - $end";
  print """&amp;lt;div class="systemmessage"&amp;gt;""" + rehtml($back) + " | $text | " + rehtml($forward) + "&amp;lt;/div&amp;gt;";
}

function FriendsPage::lay_make_username (Entry e) {
  var Friend f = $.friends{$e.journal.username};
  var string url = $e.poster-&amp;gt;base_url();
  """&amp;lt;a href="$url" class="friendname" style="color: $f.fgcolor; background-color: $f.bgcolor;"&amp;gt;$e.poster.username&amp;lt;/a&amp;gt;""";
  if($e.poster.username != $e.journal.username) {
    """ $e.journal""";
  }
}

function EntryPage::print_body() {
  $this-&amp;gt;print_entry($.entry);
  if ($this.multiform_on) {
    $this-&amp;gt;print_multiform_start();
  }

  if ($.entry.comments.count &amp;gt; 0) {
    """&amp;lt;h3&amp;gt;Comments&amp;lt;/h3&amp;gt;\n""";
  }
	
  if ($.comment_pages.total_subitems &amp;gt; 0) {
    $.comment_pages-&amp;gt;print();
  }

  if ($.entry.comments.enabled) {
    $this-&amp;gt;print_comments($.comments);
  }

  if ($.entry.comments.count &amp;gt; 0) {
    """&amp;lt;div class="systemmessage"&amp;gt;\n""";
    $.entry.comments-&amp;gt;print();
    """&amp;lt;/div&amp;gt;""";
  }

  if ($.comment_pages.total_subitems &amp;gt; 0) {
    $.comment_pages-&amp;gt;print();
  }

  if ($this.multiform_on and ($.entry.comments.count &amp;gt; 0)) {
    """&amp;lt;div class="replyform"&amp;gt;\n""";
    $this-&amp;gt;print_multiform_actionline();
    """&amp;lt;/div&amp;gt;\n""";
    $this-&amp;gt;print_multiform_end();
  }
}

function EntryPage::print_comments(Comment[] cs) {
  if (size $cs == 0) { return; }
  foreach var Comment c ($cs) {
    if ($c.full) {
      $this-&amp;gt;print_comment($c);
    } else {
      $this-&amp;gt;print_comment_partial($c);
    }
  }
}

function EntryPage::print_comment(Comment c) {
  var string datetime;
  $datetime = $c.time-&amp;gt;date_format("long")+", " + $c.time-&amp;gt;time_format();
  var string picword;
  if (defined $c.userpic and $*comment_userpic_style !="off") {
    $picword = $c.metadata{"picture_keyword"};

  }
  var string parent;
  var string thread;
  if($c.parent_url != "") {
    $parent = """&amp;lt;a href="$c.parent_url"&amp;gt;$*text_comment_parent&amp;lt;/a&amp;gt;$*t_divider""";
  }
  if($c.thread_url != "") {
    $thread = """&amp;lt;a href="$c.thread_url"&amp;gt;$*text_comment_thread&amp;lt;/a&amp;gt;$*t_divider""";
  }
  var string subjecticon;
  if (defined $c.subject_icon) {
    $subjecticon = """&amp;lt;img src="$c.subject_icon.url" width="$c.subject_icon.width" height="$c.subject_icon.height" alt="" /&amp;gt;""";
  }
  var string ip;
  if ($c.metadata{"poster_ip"}) { 
    $ip = """ &amp;amp;nbsp;  """ + $c.metadata{"poster_ip"}; 
  }
  var string poster = defined $c.poster ? $c.poster-&amp;gt;as_string() : "&amp;lt;b&amp;gt;(Anonymous)&amp;lt;/b&amp;gt;";
  var string poster_name; $poster_name= $c.poster.name;
  var string pic;
  if (defined $c.userpic and $*comment_userpic_style != "off") {
    $pic = """&amp;lt;img src="$c.userpic.url" width="$c.userpic.width" height="$c.userpic.height" alt="$picword" title="$picword" /&amp;gt;""";
  }
  var string indent = ($c.depth - 1) * 25 + "px";
  """
  &amp;lt;a name='$c.anchor'&amp;gt;&amp;lt;/a&amp;gt;
  &amp;lt;div class="comment_wrapper"&amp;gt;
    &amp;lt;table class="comment_info"&amp;gt;
      &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt;
          &amp;lt;div class="comment_postedby"&amp;gt;Posted by: $poster_name ($poster)  &amp;lt;span class="ip"&amp;gt;$ip&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
          &amp;lt;div class="comment_date"&amp;gt;Posted at: $subjecticon $datetime&amp;lt;/div&amp;gt;
  """;
	
  if ($.multiform_on) {
    """
          &amp;lt;div class="comment_date"&amp;gt;&amp;lt;label for="ljcomsel_$c.talkid"&amp;gt;$*text_multiform_check&amp;lt;/label&amp;gt;
    """; 
    $c-&amp;gt;print_multiform_check();
    "
          &amp;lt;/div&amp;gt;
    ";
  }
  """
          &amp;lt;div class="comment_subject"&amp;gt;$c.subject&amp;lt;/div&amp;gt;
        &amp;lt;/td&amp;gt;
        &amp;lt;td valign="top"&amp;gt;$pic&amp;lt;/td&amp;gt;
      &amp;lt;/tr&amp;gt;
    &amp;lt;/table&amp;gt;
    &amp;lt;div class="entrytext"&amp;gt;&amp;lt;p&amp;gt;"""; $c-&amp;gt;print_text(); """&amp;lt;/p&amp;gt; &amp;lt;/div&amp;gt;
    &amp;lt;div class="comment_links"&amp;gt; &amp;lt;a href="$c.reply_url"&amp;gt;$*text_comment_reply&amp;lt;/a&amp;gt;$*t_divider

      &amp;lt;a href="$c.permalink_url"&amp;gt;$*text_permalink&amp;lt;/a&amp;gt;$*t_divider $parent$thread
    &amp;lt;/div&amp;gt;
  """;

  if ((size $c.replies) &amp;gt; 0 and $c.replies[0].full == false) {
    """
    &amp;lt;div class="comment_child"&amp;gt;\n""";
    $this-&amp;gt;print_comments($c.replies);
    "
    &amp;lt;/div&amp;gt;\n";
  }

  """
  &amp;lt;/div&amp;gt;
  """;
  if ((size $c.replies) &amp;gt; 0 and $c.replies[0].full == true) {
    """
  &amp;lt;div class="comment_child"&amp;gt;
    """;
    $this-&amp;gt;print_comments($c.replies);
    """
  &amp;lt;/div&amp;gt;
    """;
  }
}

function EntryPage::print_comment_partial(Comment c) {
  var string poster = defined $c.poster ? $c.poster-&amp;gt;as_string() : "&amp;lt;i&amp;gt;(Anonymous)&amp;lt;/i&amp;gt;";
  var string subj   = $c.subject != "" ? $c.subject : """&amp;lt;i class="nosubject"&amp;gt;$*text_nosubject&amp;lt;/i&amp;gt;""";
  var string indent = ($c.depth - 1) * 25 + "px";
  """
  &amp;lt;div class="entry" style="margin-left: $indent;"&amp;gt;
    &amp;lt;div class="minicommentholder"&amp;gt;
      &amp;lt;div class="minicomment"&amp;gt;$poster - &amp;lt;a href="$c.permalink_url"&amp;gt;$subj&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  """;
  $this-&amp;gt;print_comments($c.replies);
}

function ItemRange::print() {
  if ($.all_subitems_displayed) { return; }
  """
  &amp;lt;div class="systemmessage"&amp;gt;
    &amp;lt;b&amp;gt;
  """;
  print lang_page_of_pages($.current, $.total);
  "&amp;lt;/b&amp;gt; &amp;amp;mdash; ";
  foreach var int i (1..$.total) {
    if ($i == $.current) {
      """&amp;lt;b class="systemtext"&amp;gt;[$i]&amp;lt;/b&amp;gt;""";
    } else { 
      var string url_of = $this-&amp;gt;url_of($i);
      "&amp;lt;a href='$url_of'&amp;gt;&amp;lt;b&amp;gt;[$i]&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;";
    }
  }
  """&amp;lt;/div&amp;gt;""";
}

function Entry::print_linkbar() {
  var string   link_seperator = $*t_divider; # seperator for links

  # initialize array/hashes
  var string[] link_keyseq    = [""];
  var string{} link_url       = {"" =&amp;gt; ""};
  var string{} link_caption   = {"" =&amp;gt; ""};
  var string{} link_image     = {"" =&amp;gt; ""};

  var string print           = "";                                         # var for printing
  var Page   p               = get_page();                                 # page handle to determine interentry
  var bool   show_interentry = ($p.view == "entry" or $p.view == "reply"); # if entry/reply view, show interentry
  var int    keyseq_index    = 0;                                          # set index point for new link_keyseq array

  if($show_interentry) {
    # if show interentry, put previous entry link first
    $link_keyseq[$keyseq_index++] = "nav_prev";

    # get previous entry link information
    var Link prev             = $this-&amp;gt;get_link("nav_prev");
    $link_url{"nav_prev"}     = $prev.url;
    $link_caption{"nav_prev"} = $prev.caption;
    $link_image{"nav_prev"}   = $prev.icon.url;

    # get next entry link information
    var Link next             = $this-&amp;gt;get_link("nav_next");
    $link_url{"nav_next"}     = $next.url;
    $link_caption{"nav_next"} = $next.caption;
    $link_image{"nav_next"}   = $next.icon.url;
  }

  # gather current linkbar
  foreach var string link_key ($.link_keyseq) {
    var Link  link            = $this-&amp;gt;get_link($link_key);
    $link_url{$link_key}      = $link.url;
    $link_caption{$link_key}  = $link.caption;
    $link_image{$link_key}    = $link.icon.url;
    $link_keyseq[$keyseq_index++] = $link_key; # add this to new link_keyseq array
  }
  if($show_interentry) {
    # if show interentry, put next entry link last
    $link_keyseq[$keyseq_index++] = "nav_next";
  }

  #################################################################################################################
  # by now, the above hashes should look something like:                                                          #
  #                                                                                                               #
  # If interentry:                                                                                                #
  #   Previous Entry:                                                                                             # 
  #    $link_url{"nav_prev"}     = http://www.livejournal.com/go.bml?journal=exampleusername&amp;amp;itemid=256&amp;amp;dir=prev  #
  #    $link_caption{"nav_prev"} = Previous Entry                                                                 #
  #    $link_image{"nav_prev"}   = http://stat.livejournal.com/img/btn_prev.gif                                   #
  #                                                                                                               #
  # Edit Entry:                                                                                                   # 
  #  $link_url{"edit_entry"}     = http://www.livejournal.com/editjournal.bml?journal=exampleusername&amp;amp;itemid=256  #
  #  $link_caption{"edit_entry"} = Edit Entry                                                                     #
  #  $link_image{"edit_entry"}   = http://stat.livejournal.com/img/btn_edit.gif                                   #
  #                                                                                                               #
  # Edit Tags:                                                                                                    # 
  #  $link_url{"edit_tags"}      = http://www.livejournal.com/edittags.bml?journal=exampleusername&amp;amp;itemid=256     #
  #  $link_caption{"edit_tags"}  = Edit Tags                                                                      #
  #  $link_image{"edit_tags"}    = http://stat.livejournal.com/img/btn_edittags.gif                               #
  #                                                                                                               #
  # Add to Memories:                                                                                              # 
  #  $link_url{"mem_add"}        = http://www.livejournal.com/tools/memadd.bml?journal=exampleusername&amp;amp;itemid=256 #
  #  $link_caption{"mem_add"}    = Add to Memories                                                                #
  #  $link_image{"mem_add"}      = http://stat.livejournal.com/img/btn_memories.gif                               #
  #                                                                                                               #
  # If interentry:                                                                                                #
  #   Next Entry:                                                                                                 #
  #    $link_url{"nav_next"}     = http://www.livejournal.com/go.bml?journal=exampleusername&amp;amp;itemid=256&amp;amp;dir=next  #
  #    $link_caption{"nav_next"} = Next Entry                                                                     #
  #    $link_image{"nav_next"}   = http://stat.livejournal.com/img/btn_next.gif                                   #
  #################################################################################################################

  $link_image{"edit_entry"} = $*i_edit;
  $link_image{"mem_add"}    = $*i_mem;
  $link_image{"edit_tags"}  = $*i_tags;

  $link_caption{"edit_entry"}  = $*t_edit_entry;
  $link_caption{"mem_add"}     = $*t_mem_add;
  $link_caption{"edit_tags"}   = $*t_edit_tags;
  $link_caption{"tell_friend"} = $*t_tell_friend;

  $link_keyseq[size($link_keyseq)] = "permalink";      # add a permalink to end of linkbar
  $link_url{"permalink"}           = $.permalink_url;
  $link_caption{"permalink"}       = $*text_permalink;
  $link_image{"permalink"}         = $*i_perma;

  # loop thru linkbar and add links to print var
  foreach var string link_key ($link_keyseq) {
    # if we can do performed action, url will be present
    if($link_url{$link_key} != "") {
      $print = $print + """&amp;lt;a href="$link_url{$link_key}" title="$link_caption{$link_key}"&amp;gt;""";
      # if image url available, use it
      if(($link_image{$link_key} != "") and ($*image_links == true)) {
        $print = $print + """&amp;lt;img src="$link_image{$link_key}" alt="$link_caption{$link_key}" title="$link_caption{$link_key}" border="0" /&amp;gt;""";
      } else {
        # else, just use text
        $print = $print + "$link_caption{$link_key}";
      }
      # add a seperator
      $print = $print + "&amp;lt;/a&amp;gt;$link_seperator";
    }
  }

  # hack off last seperator
  $print = $print-&amp;gt;substr(0, $print-&amp;gt;length() - $link_seperator-&amp;gt;length());

  # we're done! let's print it!
  print $print;
}

function Page::print_entry (Entry e)  {
  # Print an anchor
  """&amp;lt;a name="item$e.itemid" id="item$e.itemid"&amp;gt;&amp;lt;/a&amp;gt;""";
  # Get the right time and date of the post
  var string time = $e.time-&amp;gt;time_format();
  var string date = $e.time-&amp;gt;date_format("long");
  # Get the Locked or Private icon, if needed.
  var string security;
  if ($e.security != "") {
    $security =  """&amp;lt;img src="$e.security_icon.url" align="right" width="$e.security_icon.width" height="$e.security_icon.height" alt="[$e.security]" title="[$e.security]" /&amp;gt;""";
  }
  var string subject = ($e.subject != "") ? $e.subject : "&amp;lt;i&amp;gt;$*text_nosubject&amp;lt;/i&amp;gt;";

  var UserLite name;
  var string pname;
  var string poster_name = $e.poster.name;
  var string poster  = defined $e.poster ? $e.poster-&amp;gt;as_string() : "&amp;lt;b&amp;gt;$*text_poster_anonymous&amp;lt;/b&amp;gt;";
  var bool show_name = ($.view == "friends" or $e.poster.username != $.journal.username or $.view == "entry") ? true : false;
  var bool show_pic  = (defined $e.userpic and ($.view == "friends" or $*show_entry_userpic or $e.poster.username != $e.journal.username or $.view == "entry")) ? true : false;

  """
  &amp;lt;div class="comment_wrapper"&amp;gt;
  """;
  if($show_pic) {
    """
    &amp;lt;div class="userpic2"&amp;gt;
      &amp;lt;img src="$e.userpic.url" width="$e.userpic.width" height="$e.userpic.height" alt="$e.poster.name [userpic]" title="$e.poster.name [userpic]" border="0" /&amp;gt;
    &amp;lt;/div&amp;gt;
    """;
  }
  """
    &amp;lt;div class="comment_subject"&amp;gt;$security $subject&amp;lt;/div&amp;gt;
    &amp;lt;div class="comment_postedby"&amp;gt;
  """;
  if(true) {
    var string date_time = "$date ($time)";
    if($.view == "friends" or $e.journal.journal_type == "C") {
      $date_time = "at $date_time";
    }
    if($.view == "friends" or $e.journal.journal_type == "C") {
      if($e.journal.journal_type == "C") {
        """
    in $e.journal&amp;lt;br /&amp;gt;
        """;
      }
      """
    by $poster_name ($poster)
      """;
    }
    """
    &amp;lt;div class="comment_date"&amp;gt;$date_time&amp;lt;/div&amp;gt;
    """;  
  }
  $e-&amp;gt;print_metadata();
  """
    &amp;lt;/div&amp;gt;
  &amp;lt;div class="entrytext"&amp;gt;&amp;lt;p&amp;gt;"""; $e-&amp;gt;print_text(); """&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class="comment_links"&amp;gt;
  """;
  # Prints the row of comment links
  $e.comments-&amp;gt;print();
  $e-&amp;gt;print_linkbar();
  """
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
  """;
}

function CommentInfo::print() {
  if ($.enabled) {
    if ($.count &amp;gt; 0 or $.screened) {
      $this-&amp;gt;print_readlink();
    }
    $this-&amp;gt;print_postlink();
  }
}

function CommentInfo::print_postlink() {
  var Page p = get_page();
  var string alttext = $p.view == "friends" ? $*text_post_comment_friends : $*text_post_comment;
  """&amp;lt;a href="$.post_url"&amp;gt;""";
  if($*image_links) {
    """&amp;lt;img src="$*i_leave" border="0" title="$alttext" alt="$alttext" /&amp;gt;""";
  } else {
    print $alttext;
  }
  """&amp;lt;/a&amp;gt;$*t_divider""";
}

function CommentInfo::print_readlink {
  var Page p = get_page();
  var string alttext = get_plural_phrase($.count, $p.view == "friends" ? 
                               "text_read_comments_friends" :
                               "text_read_comments"
                     );
  """&amp;lt;a href="$.read_url"&amp;gt;""";
  if($*image_links) {
    """&amp;lt;img src="$*i_comment" border="0" title="$alttext" alt="$alttext" /&amp;gt;""";
  } else {
    print $alttext;
  }
  """&amp;lt;/a&amp;gt;$*t_divider""";
}

function DayPage::lay_print_subnav ()  {
  var string back;
  if($.prev_url != "") {
    $back = """&amp;lt;a href="$.prev_url"&amp;gt;""" + rehtml($*text_day_prev) + "&amp;lt;/a&amp;gt;";
  } else {
    $back = "&amp;amp;nbsp;";
  }
  var string forward;
  if($.next_url != "") {
    $forward = """&amp;lt;a href="$.next_url"&amp;gt;""" + rehtml($*text_day_next) + "&amp;lt;/a&amp;gt;";
  } else {
    $forward = "&amp;amp;nbsp;";
  }
  var string text = $.date-&amp;gt;date_format("long");
  """&amp;lt;div class="systemmessage"&amp;gt;$back | $text | $forward&amp;lt;/div&amp;gt;""";
}



############################# REPLY PAGE #########################################

function ReplyPage::print_body() {
  var EntryLite e     = $.replyto;
  var string poster   = defined $e.poster ? $e.poster-&amp;gt;as_string() : "&amp;lt;i&amp;gt;(Anonymous)&amp;lt;/i&amp;gt;";
  var string datetime;
  var string time     = $e.time-&amp;gt;time_format();
  var string date     = $e.time-&amp;gt;date_format("long");

  var UserLite name;
  """	
  &amp;lt;div class="entry"&amp;gt;
    &amp;lt;h3&amp;gt;$date&amp;lt;/h3&amp;gt;
  """;
  if(defined $e.userpic and $*comment_userpic_style != "off") {
    $name = $e.poster;
    """
      &amp;lt;div class="userpic_reply"&amp;gt;
    """;
    if (defined $e.userpic or (defined $e.userpic and $.view == "entry" and $*show_entry_userpic)) {
      """
        &amp;lt;img src="$e.userpic.url" width="$e.userpic.width" height="$e.userpic.height" alt="" /&amp;gt;
      """;
    }
    """
      &amp;lt;/div&amp;gt;
    """;
  }
  """
    &amp;lt;h1&amp;gt;$e.subject&amp;lt;/h1&amp;gt;
    &amp;lt;div class="entrytext"&amp;gt;
      &amp;lt;p&amp;gt;"""; $e-&amp;gt;print_text(); """&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="entrylinks"&amp;gt;
      Posted at $time $*t_divider &amp;lt;a href="$.entry.comments.read_url" class="comments"&amp;gt;$*text_reply_back&amp;lt;/a&amp;gt;
  """;
  foreach var string key (["edit_entry","mem_add","edit_tags"]) {
    var Link link = $e-&amp;gt;get_link($key);
    if ($link) {
      """$*t_divider &amp;lt;a href=\"$link.url\"&amp;gt;$link.caption&amp;lt;/a&amp;gt;""";
    }
  }
  """ $*t_divider &amp;lt;a href="$e.permalink_url"&amp;gt;$*text_permalink&amp;lt;/a&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="replyform"&amp;gt;
  """;
  $.form-&amp;gt;print();
  """
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  """;
}

function Entry::print_metadata() {
  var string tags_header = "tags";
  var string tags_joiner = ":";
  var Link   edit_tags   = $this-&amp;gt;get_link("edit_tags");
  var string currents    = "";
  if ((size $.metadata &amp;gt; 0) or ((size $.tags &amp;gt; 0) and ($*tags_aware))){
    $currents = $currents + """&amp;lt;div class="currents"&amp;gt;""";
    foreach var string k ($.metadata){
      var string text = $k;
      var string val = $.metadata{$k};
      if ($k == "mood"){
        $text = $*text_meta_mood;
      } 
      elseif ($k == "music") {
        $text = $*text_meta_music;
      }
      if ($k == "mood" and defined $.mood_icon){
        var Image i = $.mood_icon;
        $val = "&amp;lt;img src='$i.url' width='$i.width' height='$i.height' align='middle' alt='' /&amp;gt; $val";
      }
      $currents = $currents + """&amp;lt;div class="current$k"&amp;gt;&amp;lt;strong&amp;gt;$text&amp;lt;/strong&amp;gt; $val&amp;lt;/div&amp;gt;""";        
    }
    if ((size $.tags &amp;gt; 0) and $*tags_aware) {
      var int    tcount               = 0;
      if($edit_tags.url != "") {
        $tags_header = """&amp;lt;a href="$edit_tags.url"&amp;gt;$tags_header&amp;lt;/a&amp;gt;""";
      }
      $currents = $currents + """&amp;lt;div class="currenttags"&amp;gt;&amp;lt;strong&amp;gt;$tags_header$tags_joiner&amp;lt;/strong&amp;gt; """;
      var string tags_root = $.journal-&amp;gt;base_url() + "/tag";
      foreach var Tag t ($.tags) {
        $currents = $currents + """&amp;lt;a rel="tag" href="$tags_root/$t.name"&amp;gt;$t.name&amp;lt;/a&amp;gt;""";
        $tcount++;
        if ($tcount != size $.tags) { $currents = $currents + ", "; }
      }
      $currents = $currents + "&amp;lt;/div&amp;gt;";
    }
    $currents = $currents + "&amp;lt;/div&amp;gt;";
    println "$currents";
  }
}


################################ VIEWS #########################################

function RecentPage::print_body ()  {
  """
  &amp;lt;div class="entries"&amp;gt;
  """;
  foreach var Entry e ($.entries) {
    $this-&amp;gt;print_entry($e);
  }
  """
  &amp;lt;/div&amp;gt;
  """;
}

function DayPage::print_body() {
  """&amp;lt;div class="entries"&amp;gt;""";
  if ($.has_entries) {
    foreach var Entry e ($.entries) {
      $this-&amp;gt;print_entry($e);
    }
  } else {
    "&amp;lt;p&amp;gt;$*text_noentries_day&amp;lt;/p&amp;gt;";
  }
  "&amp;lt;/div&amp;gt;";
}

function MonthPage::view_title : string {
  return $.date-&amp;gt;date_format($*lang_fmt_month_long);
}

function MonthPage::print_body {
  "&amp;lt;form method='post' action='$.redir.url'&amp;gt;";
  $.redir-&amp;gt;print_hiddens();
  var string back;
  var string forward;
  if ($.prev_url != "") { $back = """&amp;lt;a href="$.prev_url"&amp;gt;back&amp;lt;/a&amp;gt;"""; }
  if ($.next_url != "") { $forward = """&amp;lt;a href="$.next_url"&amp;gt;forward&amp;lt;/a&amp;gt;"""; }
  var string select;
  if (size $.months &amp;gt; 1) {
    $select = "&amp;lt;select name='redir_key'&amp;gt;\n";
    foreach var MonthEntryInfo mei ($.months) {
      var string sel;
      if ($mei.date.year == $.date.year and $mei.date.month == $.date.month) {
        $sel = " selected='selected'";
      }
      $select = $select + "&amp;lt;option value='$mei.redir_key'$sel&amp;gt;" + $mei.date-&amp;gt;date_format($*lang_fmt_month_long) + "&amp;lt;/option&amp;gt;";
    }
    $select = $select + "&amp;lt;/select&amp;gt;\n&amp;lt;input type='submit' value='View' /&amp;gt;";
  }
  """
  &amp;lt;div class="messageholder"&amp;gt;
    &amp;lt;div class="systemmessage"&amp;gt;
      &amp;lt;table cellspacing="0" cellpadding="0" border="0" width="100%"&amp;gt;
        &amp;lt;tr&amp;gt;
          &amp;lt;td width="15%"&amp;gt;$back&amp;lt;/td&amp;gt;
          &amp;lt;td align="center" width="70%"&amp;gt;$select&amp;lt;/td&amp;gt;
          &amp;lt;td align="right" width="15%"&amp;gt;$forward&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
      &amp;lt;/table&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  """;
  "&amp;lt;/form&amp;gt;";
  foreach var MonthDay d ($.days) {
    if ($d.has_entries) {
      """
      &amp;lt;a name="anchor$d.day" id="achor$d.day"&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;div class="entry"&amp;gt;
          &amp;lt;div class="entrydivider"&amp;gt;&amp;lt;/div&amp;gt;
          &amp;lt;div class="entrylinks"&amp;gt;
            &amp;lt;a href=\"$d.url\"&amp;gt; &amp;amp;nbsp; &amp;lt;b&amp;gt;
      """;
      print lang_ordinal($d.day);
      """
            &amp;lt;/b&amp;gt; &amp;amp;nbsp; &amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class="entries"&amp;gt;
              &amp;lt;div class="entrytext"&amp;gt;
      """;
      $d-&amp;gt;print_subjectlist();
      """
              &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
          &amp;lt;/div&amp;gt;
      """;
    }
  }
}

function MonthDay::print_subjectlist() {
  foreach var Entry e ($.entries) {
    print $e.time-&amp;gt;time_format("short") + ": ";
    if ($e.poster.username != $e.journal.username) {
      $e.poster-&amp;gt;print(); " ";
    }
    "$e.security_icon";
    if ($e.subject != "") {
      " &amp;lt;a href=\"$e.permalink_url\"&amp;gt;$e.subject&amp;lt;/a&amp;gt;";
    } else {
      """ &amp;lt;a href="$e.permalink_url"&amp;gt;&amp;lt;i class="nosubject"&amp;gt;$*text_nosubject&amp;lt;/i&amp;gt;&amp;lt;/a&amp;gt;""";
    }
    if ($e.comments.count &amp;gt; 0) {
      " - " + get_plural_phrase($e.comments.count, "text_read_comments");
    }
    if ($e.comments.screened) {
      " &amp;lt;b&amp;gt;$*text_month_screened_comments&amp;lt;/b&amp;gt;";
    }
    "&amp;lt;br /&amp;gt;\n";
  }
}

function YearPage::print_body {
  $this-&amp;gt;print_year_links();
  """&amp;lt;div id="cal"&amp;gt;""";
  foreach var YearMonth m ($.months) {
    $this-&amp;gt;print_month($m);
  }
  """&amp;lt;/div&amp;gt;""";
}

function YearPage::print_year_links() {
  """&amp;lt;div class="systemmessage"&amp;gt;""";
  foreach var YearYear y ($.years) {
    if ($y.displayed) {
      """&amp;lt;b class="systemtext"&amp;gt;$y.year&amp;lt;/b&amp;gt;""";
    } else {
      """&amp;lt;b&amp;gt;$*t_divider&amp;lt;a href="$y.url"&amp;gt;$y.year&amp;lt;/a&amp;gt;$*t_divider&amp;lt;/b&amp;gt;""";
    }
  }
  """&amp;lt;/div&amp;gt;""";
}

function YearPage::print_month(YearMonth m) {
  if (not $m.has_entries) { return; }
  """
  &amp;lt;a name="anchor$m.month"&amp;gt;&amp;lt;/a&amp;gt;
  &amp;lt;div class="entry"&amp;gt;
    &amp;lt;div class="entrydivider"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div class="entryinfo"&amp;gt;
  """;
  print $m-&amp;gt;month_format();
  """
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="entrylinks"&amp;gt;&amp;lt;a href="$m.url"&amp;gt;$*text_view_month&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div class="entrytext"&amp;gt;
      &amp;lt;div align="center"&amp;gt;
        &amp;lt;table cellspacing="0" cellpadding="0" border="0" width="100%"&amp;gt;
          &amp;lt;tr&amp;gt;
  """;
  foreach var int d (weekdays()) {
    """
            &amp;lt;td width="14%"&amp;gt;&amp;lt;div class="calendarInactive"&amp;gt;$*lang_dayname_short[$d]&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;
    """;
  }
  """
          &amp;lt;/tr&amp;gt;
  """;
  foreach var YearWeek w ($m.weeks) {
    $w-&amp;gt;print();
  }
  """
        &amp;lt;/table&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  """;
}

function YearWeek::print() {
  """
          &amp;lt;tr&amp;gt;
  """;
  if ($.pre_empty &amp;gt; 0) {
    """
            &amp;lt;td colspan="$.pre_empty"&amp;gt;&amp;lt;/td&amp;gt;
    """;
  }

  foreach var YearDay d ($.days) {
    var string day = zeropad($d.day, 2);
    """
            &amp;lt;td&amp;gt;
              &amp;lt;div class="calendarInactive"&amp;gt;$day&amp;lt;/div&amp;gt;
    """;
    if ($d.num_entries &amp;gt; 0) {
      var string num = $d.num_entries &amp;lt; 10 ? "&amp;amp;nbsp;" + string($d.num_entries) : string($d.num_entries);
      """
              &amp;lt;div class="calendarActive"&amp;gt;&amp;lt;a href="$d.url"&amp;gt;$num&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;
      """;
    } else {
      """
              &amp;lt;div class="calendarInactive"&amp;gt; - &amp;lt;/div&amp;gt;
      """;
    }
    """
            &amp;lt;/td&amp;gt;
    """;
  }
  """
          &amp;lt;/tr&amp;gt;
  """;
}

############################## COMMON HTML ############################################

function Page::print() {
  var string title = $this-&amp;gt;title();
  """
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang=""&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;$title&amp;lt;/title&amp;gt;
    &amp;lt;link rel="stylesheet" href="$.stylesheet_url" type="text/css" /&amp;gt;
  """;
  $this-&amp;gt;print_head();
  """
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;a name="top"&amp;gt;&amp;lt;/a&amp;gt;
  """;
  if($*header_image != "") {
  """
    &amp;lt;div align="center"&amp;gt;&amp;lt;img src="$*header_image" alt="" title="" /&amp;gt;&amp;lt;/div&amp;gt;
  """;
  }
  """
    &amp;lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&amp;gt;
      &amp;lt;tr&amp;gt;
  """;
  print_left_bar();
  """
        &amp;lt;td id="container" valign="top"&amp;gt;
          &amp;lt;div&amp;gt;
            &amp;lt;div id="entries"&amp;gt;
  """;
  $this-&amp;gt;lay_print_subnav();
  $this-&amp;gt;print_body();
  $this-&amp;gt;lay_print_subnav();
  """
            &amp;lt;/div&amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/td&amp;gt;
  """;
  print_right_bar();
  """
      &amp;lt;/tr&amp;gt;
    &amp;lt;/table&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
  """;
}&lt;/code&gt;&lt;/pre&gt;&lt;a name='cutid3-end'&gt;&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:s2ljdotcom:366</id>
    <author>
      <name>kunzite</name>
    </author>
    <lj:poster user="kunzite1" userid="956023"/>
    <link rel="alternate" type="text/html" href="https://s2ljdotcom.livejournal.com/366.html"/>
    <link rel="self" type="text/xml" href="https://s2ljdotcom.livejournal.com/data/atom/?itemid=366"/>
    <title>first post</title>
    <published>2005-07-03T16:50:30Z</published>
    <updated>2005-07-04T01:53:56Z</updated>
    <category term="rules"/>
    <content type="html">&lt;span  class="ljuser  i-ljuser  i-ljuser-type-C     "  data-ljuser="s2ljdotcom" lj:user="s2ljdotcom" &gt;&lt;a href="https://s2ljdotcom.livejournal.com/profile/"  target="_self"  class="i-ljuser-profile" &gt;&lt;img  class="i-ljuser-userhead"  src="https://l-stat.livejournal.net/img/community.png?v=556&amp;v=923.1" /&gt;&lt;/a&gt;&lt;a href="https://s2ljdotcom.livejournal.com/" class="i-ljuser-username"   target="_self"   &gt;&lt;b&gt;s2ljdotcom&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; was created for me to post "fixed" versions of the layouts here on livejournal.com.&lt;br /&gt;&lt;br /&gt;If property names are changed, give a mapping diagram like:&lt;pre&gt;text:
nav_recent_text -&amp;gt; text_view_recent

colors:
calendar_fgcolor -&amp;gt; calendar_active_fgcolor &lt;/pre&gt;</content>
  </entry>
</feed>
