
var BTAG="<";var CR="\n";var PAGE_HEADER_FLAG_IS_HTML4_COMPLIANT=0x0001;function get_email_addr()
{return"nhy_web"+"@"+"smallapple.net";}
var isOpera=window.opera!=null;var isIE=document.all&&!isOpera;function gE(obj)
{return document.getElementById(obj);}
function cE(obj)
{return document.createElement(obj);}
function cT(obj)
{return document.createTextNode(obj);}
function gA(obj,attr)
{if(isIE)
{if(attr=="class")
attr="className";else if(attr=="name")
attr="id";}
return obj.getAttribute(attr);}
function sA(obj,attr,v)
{if(isIE)
{if(attr=="name")
attr="id";}
obj.setAttribute(attr,v);if(isIE)
{if(attr=="class")
obj.setAttribute("className",v);}}
function aC(obj,v)
{obj.appendChild(v);}
function gP(obj)
{return obj.getParentNode?obj.getParentNode:document.body;}
function rC(obj,new_obj)
{gP(obj).replaceChild(new_obj,obj);}
function set_html_by_str(obj,str)
{obj.innerHTML=str;}
function is_defined_gen(obj,v)
{return typeof(eval(obj)[v])!="undefined";}
function is_defined(v)
{return typeof(window[v])!="undefined";}
function takeYear(theDate)
{var y=theDate.getYear()%100;return y+(y<38?2000:1900);}
function get_doc_last_modified_date_fmt_str(flags)
{var mth_str=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var mod_date=new Date(new Date(document.lastModified).toGMTString());var year=takeYear(mod_date);var month=mod_date.getMonth();var day=mod_date.getDate();var mod_in_days=Date.UTC(year,month,day,0,0,0)/86400000;var today=new Date(new Date().toGMTString());var today_year=takeYear(today);var today_month=today.getMonth();var today_day=today.getDate();var now=Date.UTC(today_year,today_month,today_day,0,0,0)/86400000;var days_ago=now-mod_in_days;var s=day+" "+mth_str[month]+" "+year+" (";if(days_ago<0)
s+="in the future!";else if(days_ago==0)
s+="today";else if(days_ago==1)
s+="yesterday";else if(days_ago<=21)
s+=days_ago+" days ago";else if(days_ago<=12*7)
s+=Math.floor(days_ago/7)+" weeks ago";else
s+=Math.floor(days_ago/30.5)+" months ago";s+=")";return s;}
function get_nv_pair_list(arg_list)
{var list=new Array();for(var i in arg_list)
{var nv_pair=arg_list[i].split("=");if(typeof(nv_pair[1])!="undefined")
list[nv_pair[0]]=nv_pair[1];else
list[nv_pair[0]]=1;}
return list;}
function get_str_args(arg_str)
{return get_nv_pair_list(arg_str.substring(1).split("&"));}
function get_url_args()
{return get_str_args(location.search);}
function write_page_header(id_str,counter_id,pre_counter_str,post_counter_str,rev_str,flags)
{var ph=gE(id_str);var str=BTAG+"table class='page_info'>"+CR+
BTAG+"tr>"+CR;str+=BTAG+"td class='rev_history'>"+CR+"Last updated "+get_doc_last_modified_date_fmt_str(0);if(rev_str)
{str+=BTAG+"br>"+CR+rev_str;}
str+=BTAG+"/td>"+CR;if(counter_id)
{str+=BTAG+"td class='visit_counter'>"+CR+
pre_counter_str+
BTAG+"img src='/cgi-sys/Count.cgi?df="+counter_id+".dat|display=Counter|ft=0|md=5|dd=G' alt='Visits Counter'>"+
post_counter_str+
BTAG+"/td>"+CR;}
if(flags&PAGE_HEADER_FLAG_IS_HTML4_COMPLIANT)
{str+=BTAG+"td class='html_logo'>"+CR+
BTAG+"a href='http://validator.w3.org/check/referer'>"+
BTAG+"img src='/html4/valid-html401.gif' alt='Valid HTML 4.01!'>"+
BTAG+"/a>"+CR+
BTAG+"/td>"+CR;}
str+=BTAG+"/tr>"+CR+
BTAG+"/table>"+CR;sA(ph,"class","page_header");set_html_by_str(ph,str);}
function write_page_footer(id_str,flags)
{var ph=gE(id_str);var str=BTAG+"p>"+"The author of this webpage can be contacted at "+
BTAG+"a href='mailto:"+get_email_addr()+"'>"+get_email_addr()+
BTAG+"/a>."+get_url()+CR;sA(ph,"class","page_footer");set_html_by_str(ph,str);function get_url(){var elems=document.getElementsByTagName("h1");if(elems.length==0)
return"";var title=elems[0].innerHTML;var url="/forum/articlett="+encodeURIComponent(title).replace("'","%27")+"?text="+encodeURIComponent(window.location);return" [<a href='"+url+"' class='page-comment-link'>Comment</a>] ";}}
function write_author_contact(id_str,flags)
{var ph=gE(id_str);var str=BTAG+"a href='mailto:"+get_email_addr()+"'>"+"Contact"+
BTAG+"/a>"+CR;sA(ph,"class","page_footer");set_html_by_str(ph,str);}
function write_sub_page_header(id_str,rev_str,flags)
{write_page_header(id_str,"","","",rev_str,flags);}
function write_sub_page_footer(id_str,flags)
{write_page_footer(id_str,flags);}
function get_num_bits(v)
{var num=0;for(;v!=0;v/=2)
num+=v&1;return num;}