if(window.ActiveXObject&&!window.XMLHttpRequest){window.XMLHttpRequest=function(){var msxmls=new Array('Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP');for(var i=0;i<msxmls.length;i++){try{return new ActiveXObject(msxmls[i]);}catch(e){}}
return null;};}
if(window.opera&&!window.XMLHttpRequest){window.XMLHttpRequest=function(){this.readyState=0;this.status=0;this.statusText='';this._headers=[];this._aborted=false;this._async=true;this._defaultCharset='ISO-8859-1';this._getCharset=function(){var charset=_defaultCharset;var contentType=this.getResponseHeader('Content-type').toUpperCase();val=contentType.indexOf('CHARSET=');if(val!=-1){charset=contentType.substring(val);}
val=charset.indexOf(';');if(val!=-1){charset=charset.substring(0,val);}
val=charset.indexOf(',');if(val!=-1){charset=charset.substring(0,val);}
return charset;};this.abort=function(){this._aborted=true;};this.getAllResponseHeaders=function(){return this.getAllResponseHeader('*');};this.getAllResponseHeader=function(header){var ret='';for(var i=0;i<this._headers.length;i++){if(header=='*'||this._headers[i].h==header){ret+=this._headers[i].h+': '+this._headers[i].v+'\n';}}
return ret;};this.getResponseHeader=function(header){var ret=getAllResponseHeader(header);var i=ret.indexOf('\n');if(i!=-1){ret=ret.substring(0,i);}
return ret;};this.setRequestHeader=function(header,value){this._headers[this._headers.length]={h:header,v:value};};this.open=function(method,url,async,user,password){this.method=method;this.url=url;this._async=true;this._aborted=false;this._headers=[];if(arguments.length>=3){this._async=async;}
if(arguments.length>3){opera.postError('XMLHttpRequest.open() - user/password not supported');}
this.readyState=1;if(this.onreadystatechange){this.onreadystatechange();}};this.send=function(data){if(!navigator.javaEnabled()){alert("XMLHttpRequest.send() - Java must be installed and enabled.");return;}
if(this._async){setTimeout(this._sendasync,0,this,data);}else{this._sendsync(data);}}
this._sendasync=function(req,data){if(!req._aborted){req._sendsync(data);}};this._sendsync=function(data){this.readyState=2;if(this.onreadystatechange){this.onreadystatechange();}
var url=new java.net.URL(new java.net.URL(window.location.href),this.url);var conn=url.openConnection();for(var i=0;i<this._headers.length;i++){conn.setRequestProperty(this._headers[i].h,this._headers[i].v);}
this._headers=[];if(this.method=='POST'){conn.setDoOutput(true);var wr=new java.io.OutputStreamWriter(conn.getOutputStream(),this._getCharset());wr.write(data);wr.flush();wr.close();}
var gotContentEncoding=false;var gotContentLength=false;var gotContentType=false;var gotDate=false;var gotExpiration=false;var gotLastModified=false;for(var i=0;;i++){var hdrName=conn.getHeaderFieldKey(i);var hdrValue=conn.getHeaderField(i);if(hdrName==null&&hdrValue==null){break;}
if(hdrName!=null){this._headers[this._headers.length]={h:hdrName,v:hdrValue};switch(hdrName.toLowerCase()){case'content-encoding':gotContentEncoding=true;break;case'content-length':gotContentLength=true;break;case'content-type':gotContentType=true;break;case'date':gotDate=true;break;case'expires':gotExpiration=true;break;case'last-modified':gotLastModified=true;break;}}}
var val;val=conn.getContentEncoding();if(val!=null&&!gotContentEncoding)this._headers[this._headers.length]={h:'Content-encoding',v:val};val=conn.getContentLength();if(val!=-1&&!gotContentLength)this._headers[this._headers.length]={h:'Content-length',v:val};val=conn.getContentType();if(val!=null&&!gotContentType)this._headers[this._headers.length]={h:'Content-type',v:val};val=conn.getDate();if(val!=0&&!gotDate)this._headers[this._headers.length]={h:'Date',v:(new Date(val)).toUTCString()};val=conn.getExpiration();if(val!=0&&!gotExpiration)this._headers[this._headers.length]={h:'Expires',v:(new Date(val)).toUTCString()};val=conn.getLastModified();if(val!=0&&!gotLastModified)this._headers[this._headers.length]={h:'Last-modified',v:(new Date(val)).toUTCString()};var reqdata='';var stream=conn.getInputStream();if(stream){var reader=new java.io.BufferedReader(new java.io.InputStreamReader(stream,this._getCharset()));var line;while((line=reader.readLine())!=null){if(this.readyState==2){this.readyState=3;if(this.onreadystatechange){this.onreadystatechange();}}
reqdata+=line+'\n';}
reader.close();this.status=200;this.statusText='OK';this.responseText=reqdata;this.readyState=4;if(this.onreadystatechange){this.onreadystatechange();}
if(this.onload){this.onload();}}else{this.status=404;this.statusText='Not Found';this.responseText='';this.readyState=4;if(this.onreadystatechange){this.onreadystatechange();}
if(this.onerror){this.onerror();}}};};}
var ec3={version:'3.2.beta2',today:new Date(),calendars:[],allday:'all day',ELEMENT_NODE:1,TEXT_NODE:3,init:function()
{ec3.today_day_num=ec3.today.getDate();ec3.today_month_num=ec3.today.getMonth()+1;ec3.today_year_num=ec3.today.getFullYear();ec3.imgwait=new Image(14,14);ec3.imgwait.src=ec3.myfiles+'/ec_load.gif';ec3.viewpostsfor=ec3.unencode(ec3.viewpostsfor);for(var i=0;i<ec3.month_of_year.length;i++)
ec3.month_of_year[i]=ec3.unencode(ec3.month_of_year[i]);for(var j=0;j<ec3.month_abbrev.length;j++)
ec3.month_abbrev[j]=ec3.unencode(ec3.month_abbrev[j]);},do_onload:function(fn)
{var prev=window.onload;window.onload=function(){if(prev)prev();fn();}},new_calendar:function(cal_id,options)
{var cal=new ec3.Calendar(cal_id);if(options&&options.hasOwnProperty('hide_logo'))
cal.hide_logo=options.hide_logo;ec3.do_onload(function(){cal.init();});ec3.calendars[cal_id]=cal;return cal;},unencode:function(text)
{if(!ec3.unencodeDiv)
ec3.unencodeDiv=document.createElement('div');ec3.unencodeDiv.innerHTML=text;return(ec3.unencodeDiv.innerText||ec3.unencodeDiv.firstChild.nodeValue);},get_child_by_tag_name:function(element,tag_name)
{var results=element.getElementsByTagName(tag_name);if(results)
for(var i=0;i<results.length;i++)
if(results[i].parentNode==element)
return results[i];return 0;},calc_day_id:function(day_num,month_num,year_num)
{if(ec3.today_day_num==day_num&&ec3.today_month_num==month_num&&ec3.today_year_num==year_num)
{return'today';}
else
{return'ec3_'+year_num+'_'+month_num+'_'+day_num;}},add_class:function(element,new_class_name)
{if(element.className.length==0)
{element.className=new_class_name;}
else if(-1==element.className.indexOf(new_class_name))
{element.className+=' '+new_class_name;}
else
{var classes=element.className.split(' ');for(var i=0,len=classes.length;i<len;i++)
if(classes[len-i-1]==new_class_name)
return;element.className+=' '+new_class_name;}},parse_datetime:function(s)
{if(s&&s.length)
{var dt=s.split(' ');var ymd=dt[0].split('-');var hms=dt[1].split(':');return new Date(parseInt(ymd[0],10),parseInt(ymd[1],10)-1,parseInt(ymd[2],10),parseInt(hms[0],10),parseInt(hms[1],10),parseInt(hms[2],10));}
return null;},attr2bool:function(element,attrname)
{var val;if(typeof element.getAttributeNode=='function')
{var n=element.getAttributeNode(attrname);return(n&&n.specified&&n.value=='1')?true:false;}
else
{var a=element.getAttribute(attrname);return(a&&a=='1')?true:false;}},extend:function(dest,src)
{for(k in src)
dest[k]=src[k];}}
ec3.do_onload(function(){ec3.init();});ec3.Calendar=function(cal_id)
{this.cal_id=cal_id;}
ec3.Calendar.prototype={hide_logo:false,full_id:function(short_id)
{return this.cal_id+'-'+short_id;},short_id:function(full_id)
{return full_id.substr(this.cal_id.length);},getElementById:function(short_id)
{return document.getElementById(this.full_id(short_id));},init:function()
{this.reqs=new Array();this.div=document.getElementById(this.cal_id);var prev=this.getElementById('ec3_prev');var next=this.getElementById('ec3_next');if(prev&&next)
{var xCat=new RegExp('[&?]ec3_listing=[eE].*$');var match=xCat.exec(prev.href);if(match)
this.is_listing=true;var self=this;prev.onclick=function(){self.go_prev();return false;}
next.onclick=function(){self.go_next();return false;}
prev.href='#';next.href='#';}
if(typeof ec3_Popup!='undefined')
{var cals=this.get_calendars();if(cals)
{for(var i=0,len=cals.length;i<len;i++)
ec3_Popup.add_tbody(ec3.get_child_by_tag_name(cals[i],'tbody'));}}},create_calendar:function(table_cal,month_num,year_num)
{var table=table_cal.cloneNode(1);var month_num0=month_num-1;var caption=ec3.get_child_by_tag_name(table,'caption');if(caption)
{var c=ec3.get_child_by_tag_name(caption,'a');var caption_text=ec3.month_of_year[month_num0]+' '+year_num;if(c&&c.firstChild&&c.firstChild.nodeType==ec3.TEXT_NODE)
{if(month_num<10)
{c.href=ec3.home+'/?m='+year_num+'0'+month_num;}
else
{c.href=ec3.home+'/?m='+year_num+month_num;}
if(this.is_listing)
c.href+='&ec3_listing=events';c.title=ec3.viewpostsfor;c.title=c.title.replace(/%1\$s/,ec3.month_of_year[month_num0]);c.title=c.title.replace(/%2\$s/,year_num);c.firstChild.data=caption_text;}}
if(caption&&caption.firstChild&&caption.firstChild.nodeType==ec3.TEXT_NODE)
{caption.firstChild.data=ec3.month_of_year[month_num0]+' '+year_num;}
var tbody=ec3.get_child_by_tag_name(table,'tbody');while(tbody.lastChild)
tbody.removeChild(tbody.lastChild);var date=new Date(year_num,month_num0,1,12,00,00);var tr=document.createElement('tr');var td,div;tbody.appendChild(tr);var day_count=0
var col=0;while(date.getMonth()==month_num0&&day_count<40)
{var day=(date.getDay()+7-ec3.start_of_week)%7;if(col>6)
{tr=document.createElement('tr');tbody.appendChild(tr);col=0;}
if(col<day)
{td=document.createElement('td');td.colSpan=day-col;td.className='pad';tr.appendChild(td);col=day;}
td=document.createElement('td');td.ec3_daynum=date.getDate();var short_id=ec3.calc_day_id(date.getDate(),month_num,year_num);td.id=this.full_id(short_id);if(short_id=='today')
td.className='ec3_today';this.new_day(td);tr.appendChild(td);col++;day_count++;date.setDate(date.getDate()+1);}
if(col<7)
{td=document.createElement('td');td.colSpan=7-col;td.className='pad';tr.appendChild(td);}
if((7-col)>1&&!this.hide_logo)
{a=document.createElement('a');a.href='http://blog.firetree.net/?ec3_version='+ec3.version;a.title='Event Calendar '+ec3.version;td.style.verticalAlign='bottom';td.appendChild(a);div=document.createElement('div');div.className='ec3_ec';div.align='right';a.appendChild(div);}
table.id=this.full_id('ec3_'+year_num+'_'+month_num);return table;},loadDates:function(month_num,year_num)
{var req=new XMLHttpRequest();if(req)
{this.reqs.push(req);var self=this;req.onreadystatechange=function(){self.process_xml();};var url=ec3.home+'/?feed=ec3xml&year='+year_num+'&monthnum='+month_num;if(this.is_listing)
url+='&ec3_listing=events';req.open("GET",url,true);this.set_spinner(1);req.send(null);}},get_calendars:function()
{var result=new Array();for(var i=0;i<this.div.childNodes.length;i++)
{var c=this.div.childNodes[i];if(c.id&&c.id.search(this.full_id('ec3_[0-9]'))==0&&c.style.display!='none')
{result.push(this.div.childNodes[i]);}}
if(result.length>0)
return result;else
return 0;},rewrite_controls:function(prev_month0,next_month0)
{var prev=this.getElementById('ec3_prev');if(prev&&prev.firstChild&&prev.firstChild.nodeType==ec3.TEXT_NODE)
prev.firstChild.data='\u00ab\u00a0'+ec3.month_abbrev[prev_month0%12];var next=this.getElementById('ec3_next');if(next&&next.firstChild&&next.firstChild.nodeType==ec3.TEXT_NODE)
next.firstChild.data=ec3.month_abbrev[next_month0%12]+'\u00a0\u00bb';},set_spinner:function(on)
{var spinner=this.getElementById('ec3_spinner');var publish=this.getElementById('ec3_publish');if(spinner)
{if(on)
{spinner.style.display='inline';if(publish)
publish.style.display='none';}
else
{spinner.style.display='none';if(publish)
publish.style.display='inline';}}},go_prev:function()
{var calendars=this.get_calendars();if(!calendars)
return;var pn=calendars[0].parentNode;var id_array=this.short_id(calendars[0].id).split('_');if(id_array.length<3)
return;var year_num=parseInt(id_array[1]);var month_num=parseInt(id_array[2])-1;if(month_num==0)
{month_num=12;year_num--;}
var newcal=this.getElementById('ec3_'+year_num+'_'+month_num);if(newcal)
{newcal.style.display=this.calendar_display;}
else
{newcal=this.create_calendar(calendars[0],month_num,year_num);pn.insertBefore(newcal,calendars[0]);this.loadDates(month_num,year_num);}
this.calendar_display=calendars[calendars.length-1].style.display;calendars[calendars.length-1].style.display='none';this.rewrite_controls(month_num+10,month_num+calendars.length-1);},go_next:function()
{var calendars=this.get_calendars();if(!calendars)
return;var pn=calendars[0].parentNode;var last_cal=calendars[calendars.length-1];var id_array=this.short_id(last_cal.id).split('_');if(id_array.length<3)
return;var year_num=parseInt(id_array[1]);var month_num=1+parseInt(id_array[2]);if(month_num==13)
{month_num=1;year_num++;}
var newcal=this.getElementById('ec3_'+year_num+'_'+month_num);if(newcal)
{newcal.style.display=this.calendar_display;}
else
{newcal=this.create_calendar(calendars[0],month_num,year_num);if(last_cal.nextSibling)
pn.insertBefore(newcal,last_cal.nextSibling);else
pn.appendChild(newcal);this.loadDates(month_num,year_num);}
this.calendar_display=calendars[0].style.display;calendars[0].style.display='none';this.rewrite_controls(month_num-calendars.length+11,month_num);},process_xml:function()
{var busy=0;for(var i=0;i<this.reqs.length;i++)
{var req=this.reqs[i];if(req)
{if(req.readyState==4)
{this.reqs[i]=0;if(req.status==200)
this.update_days(new ec3.xml.Calendar(req.responseXML));}
else
busy=1;}}
if(!busy)
{while(this.reqs.shift&&this.reqs.length&&!this.reqs[0])
this.reqs.shift();this.set_spinner(0);}},update_days:function(xcal)
{for(var i=0,len=xcal.day.length;i<len;i++)
{var td=this.getElementById(xcal.day[i].id());if(td&&td.ec3_daynum)
{this.update_day(td,xcal.day[i]);}}
if(typeof ec3_Popup!='undefined')
{var month=this.getElementById(xcal.id());if(month)
ec3_Popup.add_tbody(ec3.get_child_by_tag_name(month,'tbody'));}},new_day:function(td)
{td.appendChild(document.createTextNode(td.ec3_daynum));},update_day:function(td,day)
{ec3.add_class(td,'ec3_postday');var txt=td.removeChild(td.firstChild);var a=document.createElement('a');a.href=day.link();a.title=day.titles();if(day.is_event())
{ec3.add_class(td,'ec3_eventday');a.className='eventday';}
a.appendChild(txt);td.appendChild(a);}}
ec3.xml={details:[]}
ec3.xml.Calendar=function(element)
{this.element=element;this.init();}
ec3.xml.Calendar.prototype={day:[],init:function()
{var days=this.element.getElementsByTagName('day');for(var i=0,len=days.length;i<len;i++)
{this.day[i]=new ec3.xml.Day(this,days[i]);}},id:function()
{var months=this.element.getElementsByTagName('month');if(months)
return months[0].getAttribute('id');else
return'';},_detail:function(post_id)
{if(!ec3.xml.details[post_id])
{var details=this.element.getElementsByTagName('detail');for(var i=0,len=details.length;i<len;i++)
{var pid=details[i].getAttribute('id');if(pid)
ec3.xml.details[pid]=details[i];}}
return ec3.xml.details[post_id];}}
ec3.xml.Day=function(calendar,element)
{this.calendar=calendar;this.element=element;}
ec3.xml.Day.prototype={id:function(){return this.element.getAttribute('id');},link:function(){return this.element.getAttribute('link');},titles:function(){return this.element.getAttribute('titles');},is_event:function(){return ec3.attr2bool(this.element,'is_event');},date:function()
{var d=this.element.getAttribute('date').split('-');return new Date(parseInt(d[0],10),parseInt(d[1],10)-1,parseInt(d[2],10));},_events:function(result)
{var all=this.element.getElementsByTagName('event');if(all)
{for(var i=0,len=all.length;i<len;i++)
result.push(new ec3.xml.Event(this,all[i]));}
return result;},_posts:function(result)
{var all=this.element.getElementsByTagName('post');if(all)
{for(var i=0,len=all.length;i<len;i++)
result.push(new ec3.xml.Post(this,all[i]));}
return result;},events:function(result){return this._events([]);},posts:function(result){return this._posts([]);},posts_and_events:function()
{var result=[];result=this._posts(result);result=this._events(result);return result;}}
ec3.xml.Post=function(day,element)
{this.day=day;this.element=element;}
ec3.xml.Post.prototype={kind:'post',brief:function(){return'';},link:function(){return this._detail().getAttribute('link');},title:function(){return this._detail().getAttribute('title');},excerpt:function()
{var excerpts=this._detail().getElementsByTagName('excerpt');if(excerpts)
return excerpts[0].firstChild.data;else
return'';},_detail:function()
{return this.day.calendar._detail(this.element.getAttribute('post_id'));}}
ec3.xml.Event=function(day,element)
{this.day=day;this.element=element;}
ec3.extend(ec3.xml.Event.prototype,ec3.xml.Post.prototype);ec3.extend(ec3.xml.Event.prototype,{kind:'event',allday:function(){return ec3.attr2bool(this.element,'allday');},brief:function()
{if(this.allday())
return ec3.allday;var result='';var starts=this.element.getElementsByTagName('start');var ends=this.element.getElementsByTagName('end');if(starts&&starts.length)
{result=starts[0].getAttribute('time');if(ends&&ends.length)
result+=' - '+ends[0].getAttribute('time');else
result+='...';}
else
{if(ends&&ends.length)
result='...'+ends[0].getAttribute('time');else
result='...'+ec3.allday+'...';}
return result;}});