
var QUOTE_CH='"';var CR="\n";var BTAG="<";var CAT_ELM_SELECTED=0x0001;var CAT_ELM_DISABLED=0x0002;var CAT_ELM_OVERRIDE=0x0004;var CAT_ELM_OPEN_IN_NEW_WIN=0x0008;var HORZ_IMG_FLAG=0x0001;var VERT_IMG_FLAG=0x0002;var HAS_TN_IMG_FLAG=0x0004;var HAS_IMG_FLAG=0x0008;var HDR_ELM_TYPE=0;var TEXT_ELM_TYPE=1;var PIC_ELM_TYPE=2;function HdrElm(text)
{this.type=HDR_ELM_TYPE;this.text=text;}
function TextElm(text)
{this.type=TEXT_ELM_TYPE;this.text=text;}
function PicElm(fname,caption_str,first_text,subq_text,flags)
{this.type=PIC_ELM_TYPE;this.fname=fname;this.caption_str=caption_str;this.first_text=first_text;this.subq_text=subq_text;this.flags=flags;}
function CatElm(title,list,class_str,flags)
{this.title=title;this.list=list;this.class_str=class_str;this.flags=flags;}
function TOCObj(title,pic_prefix,pic_suffix,tn_prefix,tn_suffix,class_str,list)
{this.title=title;this.pic_prefix=pic_prefix;this.pic_suffix=pic_suffix;this.tn_prefix=tn_prefix;this.tn_suffix=tn_suffix;this.class_str=class_str;this.list=list;}
function is_link_enabled(toc,cat_idx)
{var elm=toc.list[cat_idx];return!(elm.flags&CAT_ELM_DISABLED)||(elm.flags&CAT_ELM_OVERRIDE);}
function get_cat_link(toc,cat_idx)
{var elm=toc.list[cat_idx];var s="?cat="+cat_idx;if(elm.flags&CAT_ELM_OVERRIDE)
s+="&override";return s;}
function get_list_nav_str(toc,cat_idx)
{var s=BTAG+"table class='cat_nav'>";s+=BTAG+"tr>";s+=BTAG+"td>";s+=BTAG+"a href='javascript:scroll(0, 0)'>";s+="Top of page";s+=BTAG+"/a>";s+=BTAG+"/td>";var has_link=cat_idx>0&&is_link_enabled(toc,cat_idx-1);var cur_elm=toc.list[cat_idx-1];s+=BTAG+"td>";if(has_link)
s+=BTAG+"a href='"+get_cat_link(toc,cat_idx-1)+"'>";s+="Prev";if(has_link)
s+=" ("+cur_elm.title+")";if(has_link)
s+=BTAG+"/a>";s+=BTAG+"/td>";has_link=cat_idx<toc.list.length-1&&is_link_enabled(toc,cat_idx+1);cur_elm=toc.list[cat_idx+1];s+=BTAG+"td>";if(has_link)
s+=BTAG+"a href='"+get_cat_link(toc,cat_idx+1)+"'>";s+="Next";if(has_link)
s+=" ("+cur_elm.title+")";if(has_link)
s+=BTAG+"/a>";s+=BTAG+"/td>";s+=BTAG+"/tr>";s+=BTAG+"/table>";return s;}
function render_toc(placeholder,toc,cat_idx)
{var s=BTAG+"table class='"+toc.class_str+"'>";s+=BTAG+"tr>";for(var i=0;i<toc.list.length;++i)
{var elm=toc.list[i];var enabled_flag=is_link_enabled(toc,i);var td_class_str="";if(!enabled_flag)
{td_class_str="disabled";}
if(i==cat_idx)
td_class_str="selected";s+=BTAG+"td class='"+td_class_str+"'>";if(enabled_flag)
s+=BTAG+"a href='"+get_cat_link(toc,i)+"'>";s+=elm.title;if(enabled_flag)
s+=BTAG+"/a>";s+=BTAG+"/td>";}
s+=BTAG+"/tr>";s+=BTAG+"/table>";placeholder.innerHTML=s;}
function render_list(placeholder,toc,cat_idx)
{var NUM_PIC_COL=2;var list=toc.list[cat_idx];if(!is_link_enabled(toc,cat_idx))
{placeholder.innerHTML="This category is disabled.";return;}
var s=BTAG+"table class='"+list.class_str+"'>";for(var i=0;i<NUM_PIC_COL;++i)
s+=BTAG+"col class='col"+(i+1)+"'>";for(var i in list.list)
{var elm=list.list[i];var cur_line=BTAG+"tr>";if(elm.type==HDR_ELM_TYPE)
{cur_line+=BTAG+"td colspan='"+NUM_PIC_COL+"' class='hdr'>";cur_line+=elm.text;}
else if(elm.type==TEXT_ELM_TYPE)
{cur_line+=BTAG+"td colspan='"+NUM_PIC_COL+"' class='text'>";cur_line+=elm.text;}
else if(elm.type==PIC_ELM_TYPE)
{cur_line+=BTAG+"td class='tn'>";if(elm.flags&HAS_IMG_FLAG)
{var url="'viewer.html?mode=pic&cat="+cat_idx+"&pic="+i+"'";if(list.flags&CAT_ELM_OPEN_IN_NEW_WIN)
{var onclick_str=" onclick=\"window.open("+url+", '_target', "+"'menubar=0,resizable=1,scrollbars=1')\"";cur_line+=BTAG+"a href='javascript:void(0)'"+onclick_str+">";}
else
cur_line+=BTAG+"a href="+url+">";}
if(elm.flags&HAS_TN_IMG_FLAG)
{cur_line+=BTAG+"img src='"+toc.tn_prefix+elm.fname+
toc.tn_suffix+"' alt='"+elm.caption_str+"'>";}
if(elm.flags&HAS_IMG_FLAG)
cur_line+=BTAG+"/a>";if(elm.caption_str!="")
cur_line+=BTAG+"br>"+elm.caption_str;cur_line+=BTAG+"/td>";cur_line+=BTAG+"/td>";cur_line+=BTAG+"td>";cur_line+=elm.first_text+elm.subq_text;}
cur_line+=BTAG+"/td>";cur_line+=BTAG+"/tr>";s+=cur_line;}
s+=BTAG+"/table>";s+="<p>";s+=get_list_nav_str(toc,cat_idx);placeholder.innerHTML=s;}
function render_pic(placeholder,toc,cat_idx,pic_idx)
{var elm=toc.list[cat_idx].list[pic_idx];var s="";if(elm.caption_str)
s+=BAG+"h2>"+elm.caption_str+BTAG+"/h2>"+BTAG+"p>";s+=BTAG+"div class='standalone_pic'>"+BTAG+"img src='"+
toc.pic_prefix+elm.fname+toc.pic_suffix+"' alt='"+elm.caption_str+"'>"+BTAG+"/div>";if(elm.first_text||elm.subq_text)
s+=BTAG+"p>"+elm.first_text+elm.subq_text;placeholder.innerHTML=s;}