
var containerOverlayImage='/~wesley/images/loading.gif';var bodyExtracter='/~wesley/bodyExtracter.php';var alerted=false;var Container=Class.create();Container.prototype={initialize:function(){this.refresh();},refresh:function(){if(!document.getElementsByTagName)return;var anchors=document.getElementsByTagName('a');for(var i=0;i<anchors.length;i++){var anchor=anchors[i];var hrefAttribute=String((anchor.hasAttribute('href'))?anchor.getAttribute('href'):'');var classAttribute=String((anchor.hasAttribute('class'))?anchor.getAttribute('class'):'');if(!hrefAttribute.empty()&&classAttribute.toLowerCase().match('container'))
{anchor.onclick=function(){myContainer.executeContainer(this.getAttribute('href'));return false;}}
else if(!hrefAttribute.empty()&&classAttribute.toLowerCase().match('content'))
{anchor.onclick=function(){myContainer.executeContent(this.getAttribute('href'));return false;}}}
var forms=document.getElementsByTagName('form');for(var i=0;i<forms.length;i++){var form=forms[i];var actionAttribute=String((form.hasAttribute('action'))?form.getAttribute('action'):'');var classAttribute=String((form.hasAttribute('class'))?form.getAttribute('class'):'');if(!actionAttribute.empty()&&classAttribute.toLowerCase().match('content'))
{if(!actionAttribute.match(/\/~wesley\/bodyExtracter\.php/))
form.setAttribute('action',bodyExtracter+'?id=content&url='+encodeURIComponent(actionAttribute));form.onsubmit=function(){myContainer.executeForm(this);return false;}}}
var existsObj=document.getElementById('container-loading');if(!existsObj){var objContainer=document.getElementById('container');var objOverlay=document.createElement('div');objOverlay.setAttribute('id','container-loading');objOverlay.setAttribute('style','display:none;');objContainer.appendChild(objOverlay);var objLoading=document.createElement('img');objLoading.setAttribute('id','container-loading-image');objLoading.setAttribute('src',containerOverlayImage);objOverlay.appendChild(objLoading);}},executeContainer:function(url){$('container-loading').show();var href=bodyExtracter+'?id=container&url='+encodeURIComponent(url);new Ajax.Updater('container',href,{method:'get',evalScripts:true,onComplete:function(){myContainer.refresh();if(myLightbox)myLightbox.updateImageList();if(myAppleSearch)myAppleSearch.refresh();}});},executeContent:function(url){$('container-loading').show();var href=bodyExtracter+'?id=content&url='+encodeURIComponent(url);new Ajax.Updater('content',href,{method:'get',evalScripts:true,onComplete:function(){$('container-loading').hide();myContainer.refresh();if(myLightbox)myLightbox.updateImageList();if(myAppleSearch)myAppleSearch.refresh();}});},executeForm:function(form){$('container-loading').show();$(form).updater('content',{evalScripts:true,onComplete:function(transport){$('container-loading').hide();myContainer.refresh();if(myLightbox)myLightbox.updateImageList();if(myAppleSearch)myAppleSearch.refresh();}});}}
function initContainer(){myContainer=new Container();}
Event.observe(window,'load',initContainer,false);
var BlindToggle=Class.create();BlindToggle.prototype={initialize:function(handleId,targetId,clazz,visible){this.targetId=targetId;this.visible=visible;var handle=document.getElementById(handleId);if(!handle)return;handle.onclick=this.toggle.bind(this);var clazzString=String(clazz);if(!clazzString.blank()){var elements=document.getElementsByClassName(clazzString);for(var i=0;i<elements.length;i++){elements[i].onclick=this.toggle.bind(this);}}},toggle:function(){if(this.visible){new Effect.BlindUp(this.targetId);this.visible=false;}else{new Effect.BlindDown(this.targetId);this.visible=true;}
return true;}}
function initBlindToggle(){categoriesBlindToggle=new BlindToggle('categories-title','categories-list','categories-item',false);archivesBlindToggle=new BlindToggle('archives-title','archives-list','archives-item',false);}
Event.observe(window,'load',initBlindToggle,false);var blogIndexId='blog-index';var currentOffset=10;var lastN=10;var dynamicUrl='/cgi-bin/mt/mt-view.cgi/1/embedded-dynamic.html';var ScrollObserver=Class.create();ScrollObserver.prototype=Object.extend(new Abstract.TimedObserver(),{getValue:function(){if(this.element&&this.element.scrollTop)
return this.element.scrollTop;return 0;}});function initBlogScrollObserver(){blogScrollObserver=new ScrollObserver('content',0.5,function(element,value){var blogIndex=$(blogIndexId);if(!blogIndex)return;var maxValue=element.scrollHeight-$('container').scrollHeight-1;if(value<maxValue)return;var href=dynamicUrl+'?dyn_offset='+currentOffset+'&lastn='+lastN;new Ajax.Updater(blogIndexId,href,{method:'get',evalScripts:true,insertion:Insertion.Bottom,onComplete:function(){element.scrollTop++;element.scrollTop--;if(myLightbox)myLightbox.updateImageList();if(myAppleSearch)myAppleSearch.refresh();}});currentOffset+=lastN;});}
Event.observe(window,'load',initBlogScrollObserver,false);
var fileLoadingImage="/~wesley/images/loading.gif";var fileBottomNavCloseImage="/~wesley/images/closelabel.gif";var overlayOpacity=0.8;var animate=true;var resizeSpeed=7;var borderSize=10;var imageArray=new Array;var activeImage;if(animate==true){overlayDuration=0.2;if(resizeSpeed>10){resizeSpeed=10;}
if(resizeSpeed<1){resizeSpeed=1;}
resizeDuration=(11-resizeSpeed)*0.15;}else{overlayDuration=0;resizeDuration=0;}
Object.extend(Element,{getWidth:function(element){element=$(element);return element.offsetWidth;},setWidth:function(element,w){element=$(element);element.style.width=w+"px";},setHeight:function(element,h){element=$(element);element.style.height=h+"px";},setTop:function(element,t){element=$(element);element.style.top=t+"px";},setLeft:function(element,l){element=$(element);element.style.left=l+"px";},setSrc:function(element,src){element=$(element);element.src=src;},setHref:function(element,href){element=$(element);element.href=href;},setInnerHTML:function(element,content){element=$(element);element.innerHTML=content;}});Array.prototype.removeDuplicates=function(){for(i=0;i<this.length;i++){for(j=this.length-1;j>i;j--){if(this[i][0]==this[j][0]){this.splice(j,1);}}}}
Array.prototype.empty=function(){for(i=0;i<=this.length;i++){this.shift();}}
var Lightbox=Class.create();Lightbox.prototype={initialize:function(){this.updateImageList();var objBody=document.getElementsByTagName("body").item(0);var objOverlay=document.createElement("div");objOverlay.setAttribute('id','overlay');objOverlay.style.display='none';objOverlay.onclick=function(){myLightbox.end();}
objBody.appendChild(objOverlay);var objLightbox=document.createElement("div");objLightbox.setAttribute('id','lightbox');objLightbox.style.display='none';objLightbox.onclick=function(e){if(!e)var e=window.event;var clickObj=Event.element(e).id;if(clickObj=='lightbox'){myLightbox.end();}};objBody.appendChild(objLightbox);var objOuterImageContainer=document.createElement("div");objOuterImageContainer.setAttribute('id','outerImageContainer');objLightbox.appendChild(objOuterImageContainer);if(animate){Element.setWidth('outerImageContainer',250);Element.setHeight('outerImageContainer',250);}else{Element.setWidth('outerImageContainer',1);Element.setHeight('outerImageContainer',1);}
var objImageContainer=document.createElement("div");objImageContainer.setAttribute('id','imageContainer');objOuterImageContainer.appendChild(objImageContainer);var objLightboxImage=document.createElement("img");objLightboxImage.setAttribute('id','lightboxImage');objImageContainer.appendChild(objLightboxImage);var objHoverNav=document.createElement("div");objHoverNav.setAttribute('id','hoverNav');objImageContainer.appendChild(objHoverNav);var objPrevLink=document.createElement("a");objPrevLink.setAttribute('id','prevLink');objPrevLink.setAttribute('href','#');objHoverNav.appendChild(objPrevLink);var objNextLink=document.createElement("a");objNextLink.setAttribute('id','nextLink');objNextLink.setAttribute('href','#');objHoverNav.appendChild(objNextLink);var objLoading=document.createElement("div");objLoading.setAttribute('id','loading');objImageContainer.appendChild(objLoading);var objLoadingLink=document.createElement("a");objLoadingLink.setAttribute('id','loadingLink');objLoadingLink.setAttribute('href','#');objLoadingLink.onclick=function(){myLightbox.end();return false;}
objLoading.appendChild(objLoadingLink);var objLoadingImage=document.createElement("img");objLoadingImage.setAttribute('src',fileLoadingImage);objLoadingLink.appendChild(objLoadingImage);var objImageDataContainer=document.createElement("div");objImageDataContainer.setAttribute('id','imageDataContainer');objLightbox.appendChild(objImageDataContainer);var objImageData=document.createElement("div");objImageData.setAttribute('id','imageData');objImageDataContainer.appendChild(objImageData);var objImageDetails=document.createElement("div");objImageDetails.setAttribute('id','imageDetails');objImageData.appendChild(objImageDetails);var objCaption=document.createElement("span");objCaption.setAttribute('id','caption');objImageDetails.appendChild(objCaption);var objNumberDisplay=document.createElement("span");objNumberDisplay.setAttribute('id','numberDisplay');objImageDetails.appendChild(objNumberDisplay);var objBottomNav=document.createElement("div");objBottomNav.setAttribute('id','bottomNav');objImageData.appendChild(objBottomNav);var objBottomNavCloseLink=document.createElement("a");objBottomNavCloseLink.setAttribute('id','bottomNavClose');objBottomNavCloseLink.setAttribute('href','#');objBottomNavCloseLink.onclick=function(){myLightbox.end();return false;}
objBottomNav.appendChild(objBottomNavCloseLink);var objBottomNavCloseImage=document.createElement("img");objBottomNavCloseImage.setAttribute('src',fileBottomNavCloseImage);objBottomNavCloseLink.appendChild(objBottomNavCloseImage);},updateImageList:function(){if(!document.getElementsByTagName){return;}
var anchors=document.getElementsByTagName('a');var areas=document.getElementsByTagName('area');for(var i=0;i<anchors.length;i++){var anchor=anchors[i];var relAttribute=String(anchor.getAttribute('rel'));if(anchor.getAttribute('href')&&(relAttribute.toLowerCase().match('lightbox'))){anchor.onclick=function(){myLightbox.start(this);return false;}}}
for(var i=0;i<areas.length;i++){var area=areas[i];var relAttribute=String(area.getAttribute('rel'));if(area.getAttribute('href')&&(relAttribute.toLowerCase().match('lightbox'))){area.onclick=function(){myLightbox.start(this);return false;}}}},start:function(imageLink){hideSelectBoxes();hideFlash();var arrayPageSize=getPageSize();Element.setWidth('overlay',arrayPageSize[0]);Element.setHeight('overlay',arrayPageSize[1]);new Effect.Appear('overlay',{duration:overlayDuration,from:0.0,to:overlayOpacity});imageArray=[];imageNum=0;if(!document.getElementsByTagName){return;}
var anchors=document.getElementsByTagName(imageLink.tagName);if((imageLink.getAttribute('rel')=='lightbox')){imageArray.push(new Array(imageLink.getAttribute('href'),imageLink.getAttribute('title')));}else{for(var i=0;i<anchors.length;i++){var anchor=anchors[i];if(anchor.getAttribute('href')&&(anchor.getAttribute('rel')==imageLink.getAttribute('rel'))){imageArray.push(new Array(anchor.getAttribute('href'),anchor.getAttribute('title')));}}
imageArray.removeDuplicates();while(imageArray[imageNum][0]!=imageLink.getAttribute('href')){imageNum++;}}
var arrayPageScroll=getPageScroll();var lightboxTop=arrayPageScroll[1]+(arrayPageSize[3]/10);var lightboxLeft=arrayPageScroll[0];Element.setTop('lightbox',lightboxTop);Element.setLeft('lightbox',lightboxLeft);Element.show('lightbox');this.changeImage(imageNum);},changeImage:function(imageNum){activeImage=imageNum;if(animate){Element.show('loading');}
Element.hide('lightboxImage');Element.hide('hoverNav');Element.hide('prevLink');Element.hide('nextLink');Element.hide('imageDataContainer');Element.hide('numberDisplay');imgPreloader=new Image();imgPreloader.onload=function(){Element.setSrc('lightboxImage',imageArray[activeImage][0]);myLightbox.resizeImageContainer(imgPreloader.width,imgPreloader.height);imgPreloader.onload=function(){};}
imgPreloader.src=imageArray[activeImage][0];},resizeImageContainer:function(imgWidth,imgHeight){this.widthCurrent=Element.getWidth('outerImageContainer');this.heightCurrent=Element.getHeight('outerImageContainer');var widthNew=(imgWidth+(borderSize*2));var heightNew=(imgHeight+(borderSize*2));this.xScale=(widthNew/this.widthCurrent)*100;this.yScale=(heightNew/this.heightCurrent)*100;wDiff=this.widthCurrent-widthNew;hDiff=this.heightCurrent-heightNew;if(!(hDiff==0)){new Effect.Scale('outerImageContainer',this.yScale,{scaleX:false,duration:resizeDuration,queue:'front'});}
if(!(wDiff==0)){new Effect.Scale('outerImageContainer',this.xScale,{scaleY:false,delay:resizeDuration,duration:resizeDuration});}
if((hDiff==0)&&(wDiff==0)){if(navigator.appVersion.indexOf("MSIE")!=-1){pause(250);}else{pause(100);}}
Element.setHeight('prevLink',imgHeight);Element.setHeight('nextLink',imgHeight);Element.setWidth('imageDataContainer',widthNew);this.showImage();},showImage:function(){Element.hide('loading');new Effect.Appear('lightboxImage',{duration:resizeDuration,queue:'end',afterFinish:function(){myLightbox.updateDetails();}});this.preloadNeighborImages();},updateDetails:function(){if(imageArray[activeImage][1]){Element.show('caption');Element.setInnerHTML('caption',imageArray[activeImage][1]);}
if(imageArray.length>1){Element.show('numberDisplay');Element.setInnerHTML('numberDisplay',"Image "+eval(activeImage+1)+" of "+imageArray.length);}
new Effect.Parallel([new Effect.SlideDown('imageDataContainer',{sync:true,duration:resizeDuration,from:0.0,to:1.0}),new Effect.Appear('imageDataContainer',{sync:true,duration:resizeDuration})],{duration:resizeDuration,afterFinish:function(){var arrayPageSize=getPageSize();Element.setHeight('overlay',arrayPageSize[1]);myLightbox.updateNav();}});},updateNav:function(){Element.show('hoverNav');if(activeImage!=0){Element.show('prevLink');document.getElementById('prevLink').onclick=function(){myLightbox.changeImage(activeImage-1);return false;}}
if(activeImage!=(imageArray.length-1)){Element.show('nextLink');document.getElementById('nextLink').onclick=function(){myLightbox.changeImage(activeImage+1);return false;}}
this.enableKeyboardNav();},enableKeyboardNav:function(){document.onkeydown=this.keyboardAction;},disableKeyboardNav:function(){document.onkeydown='';},keyboardAction:function(e){if(e==null){keycode=event.keyCode;escapeKey=27;}else{keycode=e.keyCode;escapeKey=e.DOM_VK_ESCAPE;}
key=String.fromCharCode(keycode).toLowerCase();if((key=='x')||(key=='o')||(key=='c')||(keycode==escapeKey)){myLightbox.end();}else if((key=='p')||(keycode==37)){if(activeImage!=0){myLightbox.disableKeyboardNav();myLightbox.changeImage(activeImage-1);}}else if((key=='n')||(keycode==39)){if(activeImage!=(imageArray.length-1)){myLightbox.disableKeyboardNav();myLightbox.changeImage(activeImage+1);}}},preloadNeighborImages:function(){if((imageArray.length-1)>activeImage){preloadNextImage=new Image();preloadNextImage.src=imageArray[activeImage+1][0];}
if(activeImage>0){preloadPrevImage=new Image();preloadPrevImage.src=imageArray[activeImage-1][0];}},end:function(){this.disableKeyboardNav();Element.hide('lightbox');new Effect.Fade('overlay',{duration:overlayDuration});showSelectBoxes();showFlash();}}
function getPageScroll(){var xScroll,yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;xScroll=self.pageXOffset;}else if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;xScroll=document.documentElement.scrollLeft;}else if(document.body){yScroll=document.body.scrollTop;xScroll=document.body.scrollLeft;}
arrayPageScroll=new Array(xScroll,yScroll)
return arrayPageScroll;}
function getPageSize(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=window.innerWidth+window.scrollMaxX;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}
var windowWidth,windowHeight;if(self.innerHeight){if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;}else{windowWidth=self.innerWidth;}
windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
if(yScroll<windowHeight){pageHeight=windowHeight;}else{pageHeight=yScroll;}
if(xScroll<windowWidth){pageWidth=xScroll;}else{pageWidth=windowWidth;}
arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight)
return arrayPageSize;}
function getKey(e){if(e==null){keycode=event.keyCode;}else{keycode=e.which;}
key=String.fromCharCode(keycode).toLowerCase();if(key=='x'){}}
function listenKey(){document.onkeypress=getKey;}
function showSelectBoxes(){var selects=document.getElementsByTagName("select");for(i=0;i!=selects.length;i++){selects[i].style.visibility="visible";}}
function hideSelectBoxes(){var selects=document.getElementsByTagName("select");for(i=0;i!=selects.length;i++){selects[i].style.visibility="hidden";}}
function showFlash(){var flashObjects=document.getElementsByTagName("object");for(i=0;i<flashObjects.length;i++){flashObjects[i].style.visibility="visible";}
var flashEmbeds=document.getElementsByTagName("embed");for(i=0;i<flashEmbeds.length;i++){flashEmbeds[i].style.visibility="visible";}}
function hideFlash(){var flashObjects=document.getElementsByTagName("object");for(i=0;i<flashObjects.length;i++){flashObjects[i].style.visibility="hidden";}
var flashEmbeds=document.getElementsByTagName("embed");for(i=0;i<flashEmbeds.length;i++){flashEmbeds[i].style.visibility="hidden";}}
function pause(ms){var date=new Date();curDate=null;do{var curDate=new Date();}
while(curDate-date<ms);}
function initLightbox(){myLightbox=new Lightbox();}
Event.observe(window,'load',initLightbox,false);
var searchFieldsID='search-fields';var searchFormID='search-form';var searchFieldID='search-field';var defaultLabel='Search';var appleSearchCSS='/~wesley/css/applesearch.css';var AppleSearch=Class.create();AppleSearch.prototype={initialize:function(){this.refresh();},refresh:function(){var form=document.getElementById(searchFormID);if(!form)return;this.labelText=this.getLabel();var searchFields=document.getElementById(searchFieldsID);if(!searchFields)return;var field=document.getElementById(searchFieldID);if(!field)return;if(navigator.userAgent.toLowerCase().indexOf('safari')<0){field.value=this.labelText;field.onkeyup=function(){myAppleSearch.onChange(searchFieldID,'search-clear');};field.onfocus=function(){if(this.value==myAppleSearch.labelText)
this.value='';};field.onblur=function(){if(this.value=='')
this.value=myAppleSearch.labelText;};field.onsubmit=function(){if(this.value==myAppleSearch.labelText)
return false;return true;};}
else{field.type='search';field.setAttribute('placeholder',this.labelText);field.setAttribute('autosave','bsn_srch');field.setAttribute('results','5');}},getLabel:function(){var form=document.getElementById(searchFormID);if(!form)return defaultLabel;var labels=form.getElementsByTagName('label');if(!labels)return defaultLabel;for(var i=0;i<labels.length;i++){var label=labels[i];if(label.getAttribute('for')!=searchFieldID)
continue;return label.firstChild.nodeValue;}
return defaultLabel;},onChange:function(fieldID,buttonID){var field=document.getElementById(fieldID);var button=document.getElementById(buttonID);if(!button)return;if(field.value.length>0&&field.value!=this.labelText&&!this.clearButton)
{button.className='clear-visible';button.onclick=function(){var field=document.getElementById(fieldID);field.value='';myAppleSearch.onChange(fieldID,buttonID);};}
else{button.className='clear-hidden';button.onclick=null;this.clearButton=false;}}}
function initAppleSearch(){myAppleSearch=new AppleSearch();}
Event.observe(window,'load',initAppleSearch,false);
function BlockToggle(objId,togId,display){var o=document.getElementById(objId),t=document.getElementById(togId);if(o.style.display=='none'){if(!display)display='block';if(display=='table-row'){var agent=navigator.userAgent.toLowerCase();if(agent.indexOf('msie')>=0&&agent.indexOf('opera')<0)display='block';}
o.style.display=display;if(t)t.innerHTML='-';}else{o.style.display='none';if(t)t.innerHTML='+';}}