function ZoomGrid(a){this.rows=this.columns=0;this.zoomOnClick=false;this.foldedSize={width:0,height:0};this.paddingMarginBorder={width:0,height:0};this.timeout=50;this.tagName="DIV";this.container=null;this.cells=[];this.moveTimer=this.active=0;if(a){this.assignProperties(a);this.container&&this.create(this.container)}}
ZoomGrid.prototype.create=function(a){if(a){if(a.style.position!="absolute")a.style.position="relative";this.container=a;for(var b=0;b<a.childNodes.length;b++)if(a.childNodes[b].tagName==this.tagName)this.cells[this.cells.length]=a.childNodes[b];if(this.cells.length){if(this.columns>0){if(isNaN(this.rows)||this.rows<1)this.rows=Math.round(this.cells.length/this.columns)}else this.columns=this.rows>0?this.cells.length:this.rows=Math.round(Math.sqrt(this.cells.length));if(!(this.columns+this.rows<2)){for(;this.columns*
this.rows<this.cells.length;)this.columns++;for(b=0;b<this.cells.length;b++){this.cells[b].zoomGrid={zoomGrid:this};this.cells[b].style.position="absolute";this.cells[b].style.overflow="hidden";if(this.zoomOnClick)this.cells[b].onclick=this.enterCell;else this.cells[b].onmouseover=this.enterCell}a.zoomGrid={zoomGrid:this};if(!this.zoomOnClick)a.onmouseout=this.leaveContainer;if(!this.foldedSize.width||!this.foldedSize.height){this.foldedSize.width=this.columns>1?Math.round(this.container.offsetWidth*
0.2/(this.columns-1)):0;this.foldedSize.height=this.rows>1?Math.round(this.container.offsetHeight*0.2/(this.rows-1)):0}this.restore(true)}}}};ZoomGrid.prototype.leaveContainer=function(a){var b;if(this.zoomGrid&&(b=this.zoomGrid.zoomGrid)){if(a||(a=window.event))for(a=a.relatedTarget?a.relatedTarget:a.toElement;a;a=a.parentNode)if(a==b.container)return;b.restore()}};ZoomGrid.prototype.enterCell=function(){var a;if(this.zoomGrid&&(a=this.zoomGrid.zoomGrid))a.active!=this&&a.zoom(this)};
ZoomGrid.prototype.restore=function(a){var b=Math.round(this.container.offsetWidth/this.columns),c=Math.round(this.container.offsetHeight/this.rows),e=0,d=0,g=0;this.clearMoveTimer();this.startMove();for(var f=this.active=0;f<this.cells.length;f++){this.cells[f].zoomGrid.left=e;this.cells[f].zoomGrid.top=d;this.cells[f].scrollLeft="0px";this.cells[f].scrollTop="0px";this.cells[f].zoomGrid.targetWidth=b;this.cells[f].zoomGrid.targetHeight=c;if(a){this.cells[f].style.left=this.cells[f].zoomGrid.left+
"px";this.cells[f].style.top=this.cells[f].zoomGrid.top+"px";this.cells[f].style.width=b-this.paddingMarginBorder.width+"px";this.cells[f].style.height=c-this.paddingMarginBorder.height+"px"}e+=b;if(++g>=this.columns){e=0;d+=c;g=0}}if(!a){var h=this;this.moveTimer=setTimeout(function(){h.move()},this.timeout)}};
ZoomGrid.prototype.zoom=function(a){var b=0,c=0,e=0,d=0,g=-1,f=-1;this.clearMoveTimer();this.startMove();this.active=0;e=this.columns-1;d=this.rows-1;b=this.foldedSize.width;c=this.foldedSize.height;e=Math.round(this.container.offsetWidth-e*b);d=Math.round(this.container.offsetHeight-d*c);for(var h=0,i=0,k=0;k<this.cells.length;k++){if(this.cells[k]==a){this.active=a;g=h;f=i;break}if(++h>=this.columns){h=0;i++}}var j=a=0;for(k=i=h=0;k<this.cells.length;k++){var l=h==g?e:b,m=i==f?d:c;this.cells[k].zoomGrid.left=
a;this.cells[k].zoomGrid.top=j;this.cells[k].scrollLeft="0px";this.cells[k].scrollTop="0px";this.cells[k].zoomGrid.targetWidth=l;this.cells[k].zoomGrid.targetHeight=m;a+=l;if(++h>=this.columns){a=0;j+=m;h=0;i++}}var n=this;this.moveTimer=setTimeout(function(){n.move()},this.timeout)};ZoomGrid.prototype.startMove=function(){if(this.active)this.active.style.overflow="hidden"};ZoomGrid.prototype.moving=function(){};ZoomGrid.prototype.stopMove=function(){if(this.active)this.active.style.overflow="auto"};
ZoomGrid.prototype.move=function(){for(var a=false,b=0,c=0,e=this.columns-1;b<this.columns;b++,c++){var d;if((d=this.cells[c].zoomGrid.left-this.cells[c].offsetLeft)!=0)if(d=this.calculateStep(d)){this.setStack(c,this.columns,this.rows,"left",this.cells[c].offsetLeft+d+"px");a=true}else this.setStack(c,this.columns,this.rows,"left",this.cells[c].zoomGrid.left+"px");if(c>0){d=c-1;this.setStack(d,this.columns,this.rows,"width",this.cells[c].offsetLeft-this.cells[d].offsetLeft-this.paddingMarginBorder.width+
"px")}b>=e&&this.setStack(c,this.columns,this.rows,"width",this.container.offsetWidth-this.cells[c].offsetLeft-this.paddingMarginBorder.width+"px")}c=b=0;for(e=this.rows-1;b<this.rows;b++,c+=this.columns){if(c>=this.cells.length)break;if((d=this.cells[c].zoomGrid.top-this.cells[c].offsetTop)!=0)if(d=this.calculateStep(d)){this.setStack(c,1,this.columns,"top",this.cells[c].offsetTop+d+"px");a=true}else this.setStack(c,1,this.columns,"top",this.cells[c].zoomGrid.top+"px");if(c>0){d=c-this.columns;this.setStack(d,
1,this.columns,"height",this.cells[c].offsetTop-this.cells[d].offsetTop-this.paddingMarginBorder.height+"px")}if(b==e||c+this.columns>=this.cells.length)this.setStack(c,1,this.columns,"height",this.container.offsetHeight-this.cells[c].offsetTop-this.paddingMarginBorder.height+"px")}this.moving();if(a){var g=this;this.moveTimer=setTimeout(function(){g.move()},this.timeout)}else{this.clearMoveTimer();this.stopMove()}};
ZoomGrid.prototype.calculateStep=function(a){a=Math.round(a/2);if(Math.abs(a)<8)a=0;return a};ZoomGrid.prototype.assignProperties=function(a){for(var b in a)this[b]=a[b]};ZoomGrid.prototype.parsePatterns=function(a){for(var b=[],c=0;c<a.length;c++){var e;if((e=a[c].indexOf("."))>-1){var d=a[c].substr(0,e);e=a[c].substr(e+1);b.push({tagName:d,className:e})}else if((e=a[c].indexOf("#"))>-1){d=a[c].substr(0,e);e=a[c].substr(e+1);b.push({tagName:d,id:e})}else b.push({tagName:a[c]})}return b};
ZoomGrid.prototype.setStack=function(a,b,c,e,d){for(a=a;c>0;a+=b,c--){if(a>=this.cells.length)return;this.cells[a].style[e]=d}};ZoomGrid.prototype.clearMoveTimer=function(){clearTimeout(this.moveTimer);this.moveTimer=0};ZoomGrid.prototype.opacityFocused=0.98;ZoomGrid.prototype.opacityUnfocused=0.5;ZoomGrid.prototype.opacityFolded=0.2;ZoomGrid.prototype.isIE=document.all&&!window.opera;
ZoomGrid.prototype.addTransparency=function(){this.transparencyOldStartMove=this.startMove;this.startMove=function(){this.invalidateOpacity();this.transparencyOldStartMove()};this.transparencyOldStopMove=this.stopMove;this.stopMove=function(){this.invalidateOpacity();this.transparencyOldStopMove()};this.transparencyOldMoving=this.moving;this.moving=function(){this.transparencyOldMoving();if(!(this.cells.length<1||this.rows<1)){if(!this.cells[0].zoomGrid.opacity)for(var b=0;b<this.cells.length;b++){var c=
Math.abs(this.cells[b].offsetWidth-this.cells[b].zoomGrid.targetWidth)+Math.abs(this.cells[b].offsetHeight-this.cells[b].zoomGrid.targetHeight),e=this.cells[b].zoomGrid.currentOpacity>0?this.cells[b].zoomGrid.currentOpacity:this.opacityFocused,d;d=this.cells[b]==this.active?this.opacityFocused:this.active?this.opacityFolded:this.opacityUnfocused;this.cells[b].zoomGrid.opacity={max:c,offset:e,target:d,factor:c>0?Math.abs(d-e)/c:1}}for(b=0;b<this.cells.length;b++){e=(this.cells[b].zoomGrid.opacity.max-
(Math.abs(this.cells[b].offsetWidth-this.cells[b].zoomGrid.targetWidth)+Math.abs(this.cells[b].offsetHeight-this.cells[b].zoomGrid.targetHeight)))*this.cells[b].zoomGrid.opacity.factor;e=this.cells[b].zoomGrid.opacity.target>this.cells[b].zoomGrid.opacity.offset?this.cells[b].zoomGrid.opacity.offset+e:this.cells[b].zoomGrid.opacity.offset-e;this.setOpacity(this.cells[b],e)}}};for(var a=0;a<this.cells.length;a++)this.setOpacity(this.cells[a],this.opacityUnfocused);return true};
ZoomGrid.prototype.setOpacity=function(a,b){if(this.isIE)a.style.filter="alpha(opacity="+Math.ceil(100*b)+")";else a.style.opacity=b;a.zoomGrid.currentOpacity=b};ZoomGrid.prototype.invalidateOpacity=function(){if(this.cells.length>0)this.cells[0].zoomGrid.opacity=0};ZoomGrid.prototype.opacityHighlighted=0.75;
ZoomGrid.prototype.addHighlight=function(){if(!this.opacityFocused)return false;this.zoomOnClick=true;this.container.onmouseout=null;var a=this.container.parentNode;if(!a)a=this.container.parentElement;a.onclick=this.leaveContainer;for(a=0;a<this.cells.length;a++){this.cells[a].onclick=this.enterCell;this.cells[a].onmouseover=this.highlightCell;this.cells[a].onmouseout=this.dimCell}return true};
ZoomGrid.prototype.addHighlightOnClick=function(){if(this.zoomOnClick)return false;for(var a=0;a<this.cells.length;a++)this.cells[a].onclick=this.addHighlightToCell;this.highlightOldRestore=this.restore;this.restore=function(){if(this.zoomOnClick){this.zoomOnClick=false;this.container.onmouseout=this.leaveContainer;for(var b=0;b<this.cells.length;b++){this.cells[b].onclick=this.addHighlightToCell;this.cells[b].onmouseover=this.enterCell}}this.highlightOldRestore()};return true};
ZoomGrid.prototype.highlightCell=function(){var a;!this.zoomGrid||!(a=this.zoomGrid.zoomGrid)||a.active==this||a.moveTimer||a.setOpacity(this,a.opacityHighlighted)};
ZoomGrid.prototype.dimCell=function(a){for(var b=null,c=null,e=this;e;e=e.parentNode)if(e.zoomGrid){c=e;break}if(!(!c||!(b=c.zoomGrid.zoomGrid)||b.active==this||b.moveTimer)){var d=null;if(a||(a=window.event))try{for(e=a.relatedTarget?a.relatedTarget:a.toElement;e;e=e.parentNode)if(e.zoomGrid){d=e;break}}catch(g){}if(c!=d)b.setOpacity(c,b.active?b.opacityFolded:b.opacityUnfocused)}};
ZoomGrid.prototype.addHighlightToCell=function(){var a;if(!this.zoomGrid||!(a=this.zoomGrid.zoomGrid))return false;a.addHighlight();return true};
ZoomGrid.prototype.addMaxChildWidth=function(a){var b=Math.round(this.container.offsetWidth-(this.columns-1)*(this.paddingMarginBorder.width+(this.frameSize?this.frameSize.width:0)+this.foldedSize.width))-24;for(var c in a)for(var e=this.parsePatterns(a[c]),d=0;d<this.cells.length;d++)for(var g=0;g<e.length;g++){var f=this.cells[d].getElementsByTagName(e[g].tagName);if(!e[g].className&&!e[g].id)for(var h=0;h<f.length;h++)f[h].style[c]=b+"px";else for(h=0;h<f.length;h++)if(f[h].className==e[g].className||
f[h].id==e[g].id)f[h].style[c]=b+"px"}return true};ZoomGrid.prototype.frameSize={width:16,height:16};
ZoomGrid.prototype.addFrame=function(a){if(a)for(var b=0;b<this.cells.length;b++){for(var c=this.cells[b].getElementsByTagName("div"),e=0;e<c.length;e++)if(c[e].className==a){this.cells[b].zoomGrid.frameScrollDivision=c[e];break}if(!this.cells[b].zoomGrid.frameScrollDivision)return false}else{a=function(g,f){for(var h=0;h<f.length;h++){var i=document.createElement("div");i.className=f[h];g.appendChild(i);g=i}return g};for(b=0;b<this.cells.length;b++){c=this.cells[b];var d=c.className;e=c.innerHTML;
c.innerHTML="";c.className="Frame";a(c,["TopLeft","TopRight"]);d=a(c,["Left","Right",d]);a(c,["BottomLeft","BottomRight"]);if(d){d.innerHTML=e;this.cells[b].zoomGrid.frameScrollDivision=d}}}this.adjustScrollDivision();this.frameOldStartMove=this.startMove;this.startMove=function(){if(!this.active||!this.active.zoomGrid||!this.active.zoomGrid.frameScrollDivision)this.frameOldStartMove();else{this.active.zoomGrid.frameScrollDivision.scrollLeft="0px";this.active.zoomGrid.frameScrollDivision.scrollTop=
"0px";var g=this.active;this.active=this.active.zoomGrid.frameScrollDivision;this.frameOldStartMove();this.active=g}};this.frameOldStopMove=this.stopMove;this.stopMove=function(){if(!this.active||!this.active.zoomGrid||!this.active.zoomGrid.frameScrollDivision)this.frameOldStopMove();else{var g=this.active;this.active=this.active.zoomGrid.frameScrollDivision;this.frameOldStopMove();this.active=g}};this.frameOldMoving=this.moving;this.moving=function(){this.frameOldMoving();this.adjustScrollDivision()};
return true};ZoomGrid.prototype.adjustScrollDivision=function(){for(var a=0;a<this.cells.length;a++)this.cells[a].zoomGrid.frameScrollDivision.style.height=this.cells[a].offsetHeight-this.frameSize.height+"px"};ZoomGrid.prototype.restoreButton=null;
ZoomGrid.prototype.addRestoreButton=function(){this.restoreButtonOldStartMove=this.startMove;this.startMove=function(){this.hideRestoreButton();this.restoreButtonOldStartMove()};this.restoreButtonOldStopMove=this.stopMove;this.stopMove=function(){this.showRestoreButton();this.restoreButtonOldStopMove()};this.restoreButtonOldAddHighlight=this.addHighlight;this.addHighlight=function(){this.restoreButtonOldAddHighlight();this.showRestoreButton();return true};return true};
ZoomGrid.prototype.hideRestoreButton=function(){if(!this.restoreButton)this.restoreButton=this.createRestoreButton();this.restoreButton.style.visibility="hidden"};
ZoomGrid.prototype.showRestoreButton=function(){if(this.zoomOnClick&&this.active){if(!this.restoreButton)this.restoreButton=this.createRestoreButton();for(var a=0,b=0,c=this.active;c;c=c.parentNode){isNaN(c.offsetLeft)||(a+=c.offsetLeft);isNaN(c.offsetTop)||(b+=c.offsetTop)}this.restoreButton.style.left=a+"px";this.restoreButton.style.top=b+"px";this.restoreButton.style.visibility="visible"}};
ZoomGrid.prototype.createRestoreButton=function(){var a=document.createElement("a"),b=document.createElement("div");a.className="ZoomGridRestoreButton";a.href="#";a.innerHTML="Close";var c=this;a.onclick=function(){c.hideRestoreButton();c.restore();return false};b.style.position="absolute";b.style.left="0";b.style.top="0";b.style.zIndex="1";b.style.visibility="hidden";b.appendChild(a);if((a=document.getElementsByTagName("body"))&&a.length){a[0].appendChild(b);return b}};
ZoomGrid.prototype.addDisableFoldedLinks=function(){for(var a=0;a<this.cells.length;a++){var b=this.cells[a].getElementsByTagName("a");if(b&&b.length)for(var c=0;c<b.length;c++){b[c].disableZoomGrid=this;b[c].disableCell=this.cells[a];b[c].disableFoldedOldClick=b[c].onclick;b[c].onclick=function(){if(this.disableCell!=this.disableZoomGrid.active)return false;return this.disableFoldedOldClick?this.disableFoldedOldClick():true}}}return true};
function WebPieIcon(a,b){this.cellSize=this.size=this.weight=this.y=this.x=0;this.action=b;this.div=this.image=null;this.createIcon(a)}WebPieIcon.prototype.execute=function(a){if(!this.action)return false;return this.action(a)};
WebPieIcon.prototype.draw=function(){var a=Math.round(this.size)>>1<<1,b=this.x-(a>>1),c=this.y-(a>>1);this.image.style.width=a+"px";this.image.style.height=a+"px";this.div.style.left=Math.round(b)+"px";this.div.style.top=Math.round(c)+"px";this.div.style.width=a+"px";this.div.style.height=a+"px";this.div.style.visibility="visible"};WebPieIcon.prototype.hide=function(){this.div.style.visibility="hidden"};
WebPieIcon.prototype.createIcon=function(a){var b=document.getElementsByTagName("div").length,c=document.createElement("img");c.id="WebPieIconImage"+b;c.src=a;a=document.createElement("div");a.id="WebPieIconObject"+b;a.style.position="absolute";a.style.left="0px";a.style.top="0px";a.style.visibility="hidden";a.appendChild(c);if((b=document.getElementsByTagName("body"))&&b.length){b[0].appendChild(a);this.div=a;this.image=c}};
function WebPie(a){this.size=320;this.startRadius=0.75;this.showOnMouseDown=this.fitts=false;this.isOpera=window.opera?1:0;this.isIE=document.all&&!window.opera?1:0;this.isMozilla=window.innerWidth&&!window.opera&&!document.layers?1:0;this.y=this.x=this.centerY=this.centerX=this.twist=this.radius=this.maxRadius=0;this.radiansPerCircle=Math.PI+Math.PI;this.pi2=Math.PI/2;this.icons=[];this.timerId=0;this.selectedIcon=-1;a&&this.assignProperties(a)}
WebPie.prototype.create=function(a){a||(a=document);a.webPie=this;if(this.showOnMouseDown)a.onmousedown=this.showHide;a.onmouseup=this.showHide};
WebPie.prototype.showHide=function(a){var b=this.webPie,c=0;if(b){c=b.isIE?event.button:a.which;if(b.timerId){if(!b.preHide(this))return false;if(b.selectedIcon>-1&&b.selectedIcon<b.icons.length&&b.icons[b.selectedIcon].execute(b))return true;b.hide();b.postHide(this);return true}else if(c==1){if(!b.preShow(this))return false;b.setCursor(a);b.show();b.postShow(this);return true}return false}};
WebPie.prototype.mouseMove=function(a){var b=this.webPie;if(b){b.setCursor(a);if(!b.fitts){a=b.x-b.centerX;var c=b.y-b.centerY;Math.sqrt(a*a+c*c)>b.size>>1&&b.hide()}}};
WebPie.prototype.show=function(){if(!this.timerId){document.webPie=this;this.saveOnMouseMove=document.onmousemove;document.onmousemove=this.mouseMove;this.maxRadius=this.size-0.3*this.size>>1;this.radius=Math.round(this.startRadius*this.maxRadius);this.twist=-0.05*(this.maxRadius-this.radius>>1);this.centerX=this.x;this.centerY=this.y;this.draw()}};
WebPie.prototype.hide=function(){document.onmousemove=this.saveOnMouseMove;for(var a=0;a<this.icons.length;a++)this.icons[a].hide();clearTimeout(this.timerId);this.timerId=0};WebPie.prototype.preHide=function(){return true};WebPie.prototype.postHide=function(){};WebPie.prototype.preShow=function(){return true};WebPie.prototype.postShow=function(){};
WebPie.prototype.setCursor=function(a){var b=0,c=0;if(this.isOpera){b=a.clientX;c=a.clientY}else if(this.isIE)if(document.documentElement&&document.documentElement.scrollTop){b=event.clientX+document.documentElement.scrollLeft;c=event.clientY+document.documentElement.scrollTop}else{b=event.clientX+document.body.scrollLeft;c=event.clientY+document.body.scrollTop}else if(this.isMozilla){b=a.pageX;c=a.pageY}else return;this.x=b;this.y=c};
WebPie.prototype.draw=function(){var a=this.icons.length,b=0;this.selectedIcon=-1;if(a){var c=Math.PI*(this.radius<<1),e=this.radiansPerCircle/c,d=this.y-this.centerY,g=this.x-this.centerX,f=Math.atan2(d,g),h=this.radiansPerCircle/a,i=0,k=0,j=0.8*this.radius,l=Math.sqrt(d*d+g*g),m=this.radius>>1,n=false,o=l/m;if(l<m){d=c/a*0.75;if(d<j)j=d+(j-d)*o;n=true}var r=this.radiansPerCircle,p=this.twist,s=j*e/h;g=this.pi2+Math.pow(Math.PI,s);for(d=0;d<a;d++){var q=Math.abs(this.getAngleDifference(p,f));if(q<
r){r=q;b=d;i=p}if(l<m)q*=o;this.icons[d].weight=this.pi2+Math.pow(Math.PI-q,s);k+=this.icons[d].weight;if((p+=h)>Math.PI)p-=this.radiansPerCircle}if(!n)this.selectedIcon=b;c=c/k;for(d=a;d--;)this.icons[d].size=this.icons[d].cellSize=c*this.icons[d].weight;d=c*g;if(d>j){o=j/d;for(d=a;d--;)this.icons[d].size*=o}d=this.getAngleDifference(f,i);d=this.getValidAngle(f-e*this.icons[b].cellSize/h*d);this.icons[b].x=this.centerX+Math.round(this.radius*Math.cos(d));this.icons[b].y=this.centerY+Math.round(this.radius*
Math.sin(d));h=f=d;b=c=j=i=b;for(d=0;;d++){if(--i<0)i=a-1;if(j==i)break;if(++j>=a)j=0;f=this.getValidAngle(f-(0.5*this.icons[b].cellSize+0.5*this.icons[i].cellSize)*e);this.icons[i].x=this.centerX+Math.round(this.radius*Math.cos(f));this.icons[i].y=this.centerY+Math.round(this.radius*Math.sin(f));if(i==j)break;h=this.getValidAngle(h+(0.5*this.icons[c].cellSize+0.5*this.icons[j].cellSize)*e);this.icons[j].x=this.centerX+Math.round(this.radius*Math.cos(h));this.icons[j].y=this.centerY+Math.round(this.radius*
Math.sin(h));c=j;b=i}for(d=0;d<a;d++){if(!this.icons[d].div.webPie){this.icons[d].div.webPie=this;this.icons[d].div.onmouseup=this.showHide}this.icons[d].draw()}if(this.radius<this.maxRadius){if((this.radius+=2)>this.maxRadius)this.radius=this.maxRadius;if((this.twist+=0.05)>this.radiansPerCircle)this.twist-=this.radiansPerCircle}var t=this;this.timerId=setTimeout(function(){t.draw()},10)}};
WebPie.prototype.getAngleDifference=function(a,b){var c=a-b,e;e=a>b?a-(b+this.radiansPerCircle):a-(b-this.radiansPerCircle);if(Math.abs(c)<Math.abs(e))return c;return e};WebPie.prototype.getValidAngle=function(a){if(a<-Math.PI)a+=this.radiansPerCircle;else if(a>Math.PI)a-=this.radiansPerCircle;return a};WebPie.prototype.assignProperties=function(a){for(var b in a)this[b]=a[b]};
function ImageViewer(a){this.loadingText=a?a:"<div><p>Loading ...</p></div>";this.isOpera=window.opera?1:0;this.isIE=document.all&&!window.opera?1:0;this.isMozilla=window.innerWidth&&!window.opera&&!document.layers?1:0;this.imageBuffer=new Image;this.loadingTimer=0;this.shownUrl=null;if(this.div=document.createElement("div")){a={visibility:"hidden",position:"absolute",left:"0",top:"0",zIndex:"1"};for(var b in a)this.div.style[b]=a[b];this.div.imageViewer=this;this.div.className="ImageViewer";this.div.onmouseout=
this.leaveThumbnail;(b=document.getElementsByTagName("body"))&&b.length&&b[0].appendChild(this.div)}}ImageViewer.prototype.createForClasses=function(a){for(var b=document.getElementsByTagName("div"),c=0;c<b.length;c++)b[c].className.indexOf(a)>-1&&this.create(b[c])};
ImageViewer.prototype.create=function(a){for(var b=0;b<a.childNodes.length;b++)if(a.childNodes[b].tagName=="A"){a.childNodes[b].onclick=function(){return false};var c=a.childNodes[b].getElementsByTagName("img");if(c.length>0){c[0].onmouseover=this.enterThumbnail;c[0].onmouseout=this.leaveThumbnail;c[0].imageViewer=this;c[0].imageViewerSrc=a.childNodes[b].href}}};
ImageViewer.prototype.enterThumbnail=function(a){var b;if(!(b=this.imageViewer)||b.shownUrl==this.imageViewerSrc)return true;b.show(b.getPosition(a),this.imageViewerSrc,this.alt);return false};ImageViewer.prototype.leaveThumbnail=function(a){var b;if(!(b=this.imageViewer))return true;if(a||(a=window.event)){a=a.relatedTarget?a.relatedTarget:a.toElement;if(a.imageViewerSrc&&b.shownUrl==a.imageViewerSrc)return false;for(;a;a=a.parentNode)if(a==b.div)return false}b.hide();return false};
ImageViewer.prototype.show=function(a,b,c){if(this.shownUrl!=b){this.shownUrl=b;this.imageBuffer.src=b;this.div.innerHTML=this.loadingText;this.div.style.left=a.x+"px";this.div.style.top=a.y+"px";this.div.style.visibility="visible"}if(this.imageBuffer.complete)this.div.innerHTML='<div><img src="'+b+'"/>'+(c?"<p>"+c+"</p>":"")+"</div>";else{this.clearTimer();var e=this;this.loadingTimer=setTimeout(function(){e.show(a,b,c)},250)}};
ImageViewer.prototype.hide=function(){this.shownUrl=null;this.clearTimer();this.div.style.visibility="hidden"};ImageViewer.prototype.clearTimer=function(){if(this.loadingTimer){clearTimeout(this.loadingTimer);this.loadingTimer=0}};
ImageViewer.prototype.getPosition=function(a){var b=0,c=0;if(this.isOpera){b=a.clientX;c=a.clientY}else if(this.isIE)if(document.documentElement&&document.documentElement.scrollTop){b=event.clientX+document.documentElement.scrollLeft;c=event.clientY+document.documentElement.scrollTop}else{b=event.clientX+document.body.scrollLeft;c=event.clientY+document.body.scrollTop}else if(this.isMozilla){b=a.pageX;c=a.pageY}return{x:b,y:c}};
var DemoZoomGrid={zoomGrid:null,serial:0,create:function(a){for(var b="",c=9;c--;){DemoZoomGrid.serial++;b+='<div id="DemoCell'+DemoZoomGrid.serial.toString()+'">'+DemoZoomGrid.createCell(DemoZoomGrid.serial)+"</div>"}a.style.height="240px";a.innerHTML=b;DemoZoomGrid.zoomGrid=new ZoomGrid({paddingMarginBorder:{width:11,height:11},container:a})},addCell:function(a){a=document.getElementById(a);if(!a||!DemoZoomGrid.zoomGrid)return true;var b=document.createElement("div");DemoZoomGrid.serial++;b.id=
"DemoCell"+DemoZoomGrid.serial.toString();b.innerHTML=DemoZoomGrid.createCell(DemoZoomGrid.serial);DemoZoomGrid.zoomGrid.container.insertBefore(b,a);DemoZoomGrid.resetZoomGrid();return false},removeCell:function(a){a=document.getElementById(a);if(!a||!DemoZoomGrid.zoomGrid)return true;a.style.visibility="hidden";DemoZoomGrid.zoomGrid.container.removeChild(a);DemoZoomGrid.resetZoomGrid();return false},createCell:function(a){return"<h3>"+a.toString()+'</h3><a href="#" onclick="return DemoZoomGrid.addCell( \'DemoCell'+
a.toString()+'\' );">Add</a><br/><a href="#" onclick="return DemoZoomGrid.removeCell( \'DemoCell'+a.toString()+"' );\">Remove</a>"},resetZoomGrid:function(){DemoZoomGrid.zoomGrid.columns=0;DemoZoomGrid.zoomGrid.rows=0;DemoZoomGrid.zoomGrid.cells.length=0;DemoZoomGrid.zoomGrid.create(DemoZoomGrid.zoomGrid.container)}},DemoWebPie={webPie:null,create:function(a){a.innerHTML="<p>Click anywhere within this field to open a sample pie menu.</p>";DemoWebPie.webPie=new WebPie({icons:[new WebPieIcon("images/webpie/piedock.png",
function(){App.zoom("PieDockChapter")}),new WebPieIcon("images/webpie/webpie.png",function(){App.zoom("WebPieChapter")}),new WebPieIcon("images/webpie/zoomgrid.png",function(){App.zoom("ZoomGridChapter")}),new WebPieIcon("images/webpie/cpprc.png",function(){App.zoom("CpprcChapter")}),new WebPieIcon("images/webpie/readmail.png",function(){App.zoom("ReadmailChapter")}),new WebPieIcon("images/webpie/about.png",function(){App.zoom("AboutChapter")}),new WebPieIcon("images/webpie/plus.png",function(){DemoWebPie.webPie.icons.push(new WebPieIcon("images/webpie/minus.png",
function(){var b=DemoWebPie.webPie.icons.pop();b.hide();delete b;return true}));return true})]});DemoWebPie.webPie.create(a)}},Demos={setup:function(){Demos.add("DemoWebPie",DemoWebPie.create);Demos.add("DemoZoomGrid",DemoZoomGrid.create)},add:function(a,b){var c=document.getElementById(a);if(!c)return null;var e=document.createElement("a");e.href="#";e.onclick=function(){return false};e.className="Demo";e.innerHTML="Click here for a demo";c.onclick=function(){this.onclick=null;b(this)};c.appendChild(e);
return c}},App={zoomGrid:null,load:function(){var a=document.getElementById("MarkusFisch");if(a){if(!App.zoomGrid){var b=App.getZoomGridContainer();if(!b)return;a.className="Dynamic";b.innerHTML="<div id=\"PieDockChapter\" class=\"Chapter\">\n<h1>PieDock</h1>\n<div class=\"ChapterContent\">\n	<h2>Description</h2>\n	<p>PieDock is a task bar and application launcher in shape of\n		a pie menu. It feels a little bit like the famous OS X dock\n		in a circle. Here are some screenshots:</p>\n	<div class=\"ImageGallery\">\n		<a href=\"images/screenshot-piedock-1.jpg\"><img\n			src=\"images/screenshot-piedock-1-thumb.jpg\"\n			alt=\"Focusing The GIMP in Fluxbox\"/></a>\n		<a href=\"images/screenshot-piedock-2.jpg\"><img\n			src=\"images/screenshot-piedock-2-thumb.jpg\"\n			alt=\"Real transparency over a video in Xfce4\"/></a>\n		<a href=\"images/screenshot-piedock-3.jpg\"><img\n			src=\"images/screenshot-piedock-3-thumb.jpg\"\n			alt=\"Managing a window in Fluxbox\"/></a>\n		<a href=\"images/screenshot-piedock-4.jpg\"><img\n			src=\"images/screenshot-piedock-4-thumb.jpg\"\n			alt=\"Launching GoogleEarth in Fluxbox\"/></a>\n	</div>\n	<p>To see the idea in action, try the WebPie demo or watch\n		this <a href=\"http://vimeo.com/21360384\"\n			class=\"External\">video</a>.</p>\n	<h2>Download</h2>\n	<p>Latest version:\n		<a href=\"downloads/PieDock-1.4.3.tar.bz2\"\n			class=\"Download\">PieDock-1.4.3.tar.bz2</a></p>\n	<p>Options:</p>\n	<ul>\n		<li><p>For the impatient, there are pre-compiled binaries that\n				should work on any modern Linux:</p>\n			<ul>\n				<li><p><a href=\"downloads/PieDockInstant-i686.bin\"\n					class=\"Download\">PieDockInstant-i686.bin</a></p></li>\n				<li><p><a href=\"downloads/PieDockInstant-x86_64.bin\"\n					class=\"Download\">PieDockInstant-x86_64.bin</a></p></li>\n			</ul>\n			<p>Give it a try with just one line:</p>\n			<pre>\$ curl piedock.markusfisch.de/try.sh | sh</pre>\n			<p>Or, if you don't have curl,\n				download the one that matches your architecture, open a\n				terminal, navigate to where you saved the file and\n				type (replace ARCH with your architecture):</p>\n			<pre>\$ chmod a+x PieDockInstant-ARCH.bin\n\$ ./PieDockInstant-ARCH.bin</pre>\n			<p>Those versions are configured to use your local icon resources,\n				so it may very well be possible, that you encounter some\n				question marks (place holder for missing icons).\n				You may deal with that by the way it is described under\n				Configuration.</p>\n			</li>\n		<li><p>Automatic install or update:</p>\n			<pre>\$ curl piedock.markusfisch.de/install.sh | sh</pre>\n			<p>If you don't have curl, just download the source tarball,\n			extract it, change into the new directory and type:</p>\n			<pre>\$ sh/deploy</pre>\n			<p>This will configure, build, install and run PieDock.</p></li>\n		<li><p>If you&#39;re on <a href=\"http://www.gentoo.org/\"\n				class=\"External\">Gentoo</a> Linux, you may use emerge:</p>\n			<pre>\$ emerge piedock</pre>\n			<p>This may not always be the latest version.</p></li>\n		<li><p>The development version is available on\n			<a class=\"External\"\n				href=\"https://github.com/markusfisch/PieDock\">GitHub</a>.<br/>\n			You may easily clone the project by running:</p>\n			<pre>\$ git clone git://github.com/markusfisch/PieDock</pre></li>\n	</ul>\n	<h2>Requirements</h2>\n	<p>Requires a C++ compiler, headers and libraries of X11 and libpng.\n		Xft and the X Rendering Extension\n		(to make use of a compositing manager)\n		are optional.</p>\n	<p>Runs on Linux, BSD and Solaris.</p>\n	<h2>Installation</h2>\n	<ol>\n		<li><p>Download tarball above</p></li>\n		<li><p>Unpack tarball:</p>\n			<pre>\$ tar xjvf PieDock-x.x.x.tar.bz2</pre></li>\n		<li><p>Change into the new directory \"PieDock-x.x.x\" and\n			compile it:</p>\n			<pre>\$ cd PieDock-x.x.x\n\$ ./configure\n\$ make</pre></li>\n		<li><p>If everything went well, install as root:</p>\n			<pre># make install</pre></li>\n		<li><p>Now you need to set up your configuration, either manually\n			(see below) or by running the enclosed setup script:</p>\n			<pre>\$ sh/setup</pre></li>\n	</ol>\n	<h2>Configuration</h2>\n	<ol>\n		<li><p>Find some icons\n			(approx. 128x128 Pixels) in PNG format.\n			I&#39;d recommend those places:</p>\n			<ul>\n				<li><p><a href=\"http://www.iconfinder.com/\"\n					class=\"External\">\n					http://www.iconfinder.com/</a></p></li>\n				<li><p><a href=\"http://www.iconarchive.com/\"\n					class=\"External\">\n					http://www.iconarchive.com/</a></p></li>\n				<li><p><a href=\"http://findicons.com/\"\n					class=\"External\">\n					http://findicons.com/</a></p></li>\n				<li><p><a href=\"http://www.iconfactory.com/\"\n					class=\"External\">\n					http://www.iconfactory.com</a></p></li>\n				<li><p><a href=\"http://www.smashingmagazine.com/tag/icons/\"\n					class=\"External\">\n					http://www.smashingmagazine.com/tag/icons/</a></p></li>\n				<li><p><a href=\"http://tango.freedesktop.org/\"\n					class=\"External\">\n					http://tango.freedesktop.org/</a></p></li>\n				<li><p><a href=\"http://www.kde-look.org/\"\n					class=\"External\">\n					http://www.kde-look.org</a></p></li>\n				<li><p><a href=\"http://search.deviantart.com/?q=Dock+Icons\"\n					class=\"External\">\n					http://www.deviantart.com</a></p></li>\n				<li><p><a href=\"http://www.pixelgirlpresents.com/icons\"\n					class=\"External\">\n					http://www.pixelgirlpresents.com/icons</a></p></li>\n				<li><p><a href=\"http://interfacelift.com/icons\"\n					class=\"External\">\n					http://interfacelift.com/icons</a></p></li>\n			</ul>\n			<p>You may use\n			<a href=\"http://www.gimp.org\" class=\"External\">GIMP</a>\n			to convert XP icons; OS X icons can be converted by\n			<a href=\"http://gthumb.sourceforge.net\"\n				class=\"External\">gthumb</a> or\n			<a href=\"http://www.imagemagick.org\"\n				class=\"External\">ImageMagick</a>.</p></li>\n		<li><p>Create a directory named \".PieDock\" in your home\n			directory:</p>\n			<pre>\$ mkdir ~/.PieDock</pre></li>\n		<li><p>Place all your PNG icons into this directory</p></li>\n		<li><p>Create a \".PieDockrc\" configuration file in\n			your home directory; you may use the enclosed\n			\"res/PieDockrc.sample\" as a template:</p>\n			<pre>\$ cp res/PieDockrc.sample ~/.PieDockrc</pre></li>\n		<li><p>Edit \".PieDockrc\" to meet your requirements.\n			The format of the file is very simple:\n			Each line begins with a statement and continues with\n			space-seperated arguments to this statement.\n			If an argument has spaces, it must be enclosed\n			in quotes, just like you do on the command line.\n			There are only two statements that are important:\n			<em>icon</em> and <em>alias</em>.</p>\n			<p>Use the <em>icon</em> statement to specify persistent\n			icons in the menu. Normally an icon would only appear\n			if there is a corresponding window. <em>icon</em> icons\n			do always appear. The statement accepts two arguments:\n			the name of the application (which must also be the name\n			of the icon in \"~/.PieDock/\")\n			and, optionally, a string to launch the application if\n			the first argument isn&#39;t enough to do that (i.e. a path\n			is required or you want to give some arguments).</p>\n			<p>The <em>alias</em> directive allows you to recognize\n			windows that do not give the correct name of their\n			corresponding executable. Every application window\n			in X11 should have a resource with it&#39;s name in it\n			(the so-called class hints for the interested).</p>\n			<p>Unfortunately, this name may differ from the name of\n			the executable which is where <em>alias</em> comes in.\n			<em>alias</em> accepts two arguments: a string for\n			recognition and the true name of the executable.\n			The recognition string may be prefixed by another\n			argument (either name, class or title) to specifiy\n			the property which the string is checked against.</p>\n			<p>There is a \"utils\" subdirectory which contains a\n			helpful utitlity to find the right settings.\n			Just change into this directory and do:</p>\n			<pre>\$ ./PieDockUtils -l</pre>\n			<p>A list of all open windows with their properties will\n			be displayed. Now you can use those values (always\n			prefer the class or name property) to set up\n			aliases for windows which doesn&#39;t get recognized\n			the right way.</p></li>\n		<li><p>If you have some unused button on your mouse, I suggest\n			you specify its number to the <em>trigger button</em>\n			directive like this:</p>\n			<pre>trigger button (number of mouse button)</pre>\n			<p>You may find the right number by using the\n			xev utitlity. Then you can open the\n			pie menu by clicking that button.</p></li>\n	</ol>\n	<h2>Documentation</h2>\n	<p>Browse source code <a href=\"doc/PieDock/html\"\n		class=\"Documentation\">documentation</a>.</p>\n	<h2>License</h2>\n	<p>PieDock is open source and licensed under the\n		<a href=\"http://www.opensource.org/licenses/mit-license.php\"\n			class=\"External\">MIT license</a>.</p>\n</div>\n</div>\n<div id=\"WebPieChapter\" class=\"Chapter\">\n<h1>WebPie</h1>\n<div class=\"ChapterContent\">\n	<h2>Description</h2>\n	<p>WebPie is a pie menu for web pages.\n		Its appearance is very similar to PieDock.\n		Image and animation quality depend heavily on client and\n		platform.</p>\n	<div id=\"DemoWebPie\" class=\"Demo\"></div>\n	<h2>Download</h2>\n	<p>Latest version:\n		<a href=\"js/src/WebPieIcon.js\"\n			class=\"Download\">WebPieIcon.js</a> and\n		<a href=\"js/src/WebPie.js\"\n			class=\"Download\">WebPie.js</a></p>\n	<p>Those files are uncompressed. To get production\n		libraries, use a\n		<a href=\"http://www.google.com/search?q=javascript+compressor+closure+compiler\"\n			class=\"External\">compressor</a>.</p>\n	<p>The development version is available on\n		<a class=\"External\"\n			href=\"https://github.com/markusfisch/WebPie\">GitHub</a>.<br/>\n		You may easily clone the project by running:</p>\n		<pre>\$ git clone git://github.com/markusfisch/WebPie</pre>\n	<h2>How to use</h2>\n	<ol>\n		<li><p>Place both files somewhere in your web project and\n			add those two lines to the &lt;head/&gt; element of\n			your web page:</p>\n			<pre>&lt;script type=\"text/javascript\"\n	src=\"path/to/WebPieIcon.js\"&gt;&lt;/script&gt;\n&lt;script type=\"text/javascript\"\n	src=\"path/to/WebPie.js\"&gt;&lt;/script&gt;</pre></li>\n		<li><p>Next you&#39;ll have to set up the menu, for example:</p>\n			<pre>&lt;script type=\"text/javascript\"&gt;\n&lt;!--\nvar p = new WebPie( {\n	icons: [\n		new WebPieIcon(\n			\"path/to/icon.png\",\n			function(){ alert( \"First\" ); } ),\n		new WebPieIcon(\n			\"path/to/icon.png\",\n			function(){ alert( \"Second\" ); } ),\n		new WebPieIcon(\n			\"path/to/icon.png\",\n			function(){ alert( \"Third\" ); } )\n		] } );\np.create();\n--&gt;\n&lt;/script&gt;</pre>\n			<p>For more information browse the script files.\n				For a full sample see <a class=\"External\"\n					href=\"js/src/DemoWebPie.js\">DemoWebPie.js</a>.</p></li>\n		<li><p>If you want to extend WebPie, you may want to subclass it.\n			For example:</p>\n			<pre>&lt;script type=\"text/javascript\"&gt;\n&lt;!--\nWebPie2.prototype = new WebPie();\nWebPie2.prototype.constructor = WebPie2;\nfunction WebPie2( p )\n{\n	WebPie.call( this, p );\n}\nWebPie2.prototype.preShow = function( e )\n{\n	// do here what you want to do before the menu opens\n	return true;\n}\nvar p = new WebPie2( {\n	icons: [\n		new WebPieIcon(\n			\"path/to/icon.png\",\n			function(){ alert( \"First\" ); } ),\n		new WebPieIcon(\n			\"path/to/icon.png\",\n			function(){ alert( \"Second\" ); } ),\n		new WebPieIcon(\n			\"path/to/icon.png\",\n			function(){ alert( \"Third\" ); } )\n		] } );\np.create();\n--&gt;\n&lt;/script&gt;</pre></li>\n	</ol>\n	<h2>Compatibilty</h2>\n	<p>Works with the latest versions of\n		<a class=\"External\" href=\"http://www.opera.com\">Opera</a>,\n		<a class=\"External\" href=\"http://www.mozilla.com\">Firefox</a>,\n		<a class=\"External\" href=\"http://www.google.com/chrome\">Chrome</a>,\n		<a class=\"External\" href=\"http://www.apple.com/safari/\">Safari</a>\n		and Internet Explorer.</p>\n	<h2>License</h2>\n	<p>WebPie is licensed under the\n		<a href=\"http://www.opensource.org/licenses/mit-license.php\"\n			class=\"External\">MIT license</a>.</p>\n</div>\n</div>\n<div id=\"ZoomGridChapter\" class=\"Chapter\">\n<h1>ZoomGrid</h1>\n<div class=\"ChapterContent\">\n	<h2>Description</h2>\n	<p>ZoomGrid is a grid which can zoom its cells.\n		In other words, it's a two-dimensional accordion menu\n		inside a fixed rectangle.</p>\n	<div id=\"DemoZoomGrid\" class=\"Demo\"></div>\n	<h3>Alternatives:</h3>\n	<ul>\n		<li><p>Recently <a class=\"External\"\n				href=\"http://twitter.com/chriscoyier\">Chris Coyier</a>\n			did something very similar: the\n			<a class=\"External\"\n				href=\"http://css-tricks.com/examples/NineImages/\">Nine\n			Image Expander Thing</a>.</p></li>\n		<li><p>If you're looking for a traditional accordion that expands\n			both vertically and horizontally, you should have a look at\n			<a class=\"External\"\n				href=\"http://css-tricks.com/examples/InfoGrid/\">InfoGrid</a>.</p></li>\n		<li><p>Another great alternative are\n			<a class=\"External\"\n				href=\"http://css-tricks.com/examples/RotatingBlocks/\">Rotating Blocks</a>\n			(almost pure CSS 3).</p></li>\n	</ul>\n	<h2>Download</h2>\n	<p>Latest version:\n		<a href=\"js/src/ZoomGrid.js\"\n			class=\"Download\">ZoomGrid.js</a>.</p>\n	<p>Extensions:</p>\n	<ul>\n		<li><p><a href=\"js/src/ZoomGridTransparency.js\"\n				class=\"Download\">ZoomGridTransparency.js</a>\n			- make cells transparent</p></li>\n		<li><p><a href=\"js/src/ZoomGridHighlight.js\"\n				class=\"Download\">ZoomGridHighlight.js</a>\n			- add highlighting</p></li>\n		<li><p><a href=\"js/src/ZoomGridFrame.js\"\n				class=\"Download\">ZoomGridFrame.js</a>\n			- add ornament frames around each cell</p></li>\n		<li><p><a href=\"js/src/ZoomGridMaxChildWidth.js\"\n				class=\"Download\">ZoomGridMaxChildWidth.js</a>\n			- maximize width of child elements</p></li>\n		<li><p><a href=\"js/src/ZoomGridDisableFoldedLinks.js\"\n				class=\"Download\">ZoomGridDisableFoldedLinks.js</a>\n			- disable links in folded cells</p></li>\n		<li><p><a href=\"js/src/ZoomGridUnfocusedHide.js\"\n				class=\"Download\">ZoomGridUnfocusedHide.js</a>\n			- hide contents of unfocused cells</p></li>\n		<li><p><a href=\"js/src/ZoomGridRestoreButton.js\"\n				class=\"Download\">ZoomGridRestoreButton.js</a>\n			- show a button to unfocus all cells</p></li>\n		<li><p><a href=\"js/src/ZoomGridContainerFade.js\"\n				class=\"Download\">ZoomGridContainerFade.js</a>\n			- fade out unfocused grid when mouse is inactive</p></li>\n	</ul>\n	<p>Those files are uncompressed. To get production\n		libraries, use a\n		<a href=\"http://www.google.com/search?q=javascript+compressor+closure+compiler\"\n			class=\"External\">compressor</a>.</p>\n	<p>The development version is available on\n		<a class=\"External\"\n			href=\"https://github.com/markusfisch/ZoomGrid\">GitHub</a>.<br/>\n		You may easily clone the project by running:</p>\n		<pre>\$ git clone git://github.com/markusfisch/ZoomGrid</pre>\n	<h2>How to use</h2>\n	<ol>\n		<li><p>Copy ZoomGrid.js (along with any optional extension) into\n			your web folder and add a corresponding &lt;script/&gt;\n			tag for each file to the &lt;head/&gt; element of your\n			page.</p>\n			<pre>&lt;script type=\"text/javascript\"\n	src=\"path/to/ZoomGrid.js\"&gt;&lt;/script&gt;\n&lt;script type=\"text/javascript\"\n	src=\"path/to/ZoomGridTransparency.js\"&gt;&lt;/script&gt;\n...</pre></li>\n		<li><p>Then invoke the grid:</p>\n			<pre>&lt;script type=\"text/javascript\"&gt;\n&lt;!--\nvar z = new ZoomGrid(\n	{ container: document.getElementById( \"Contents\" ) } );</pre>\n			<p>In this case, you should have a\n			&lt;div id=\"Contents\"/&gt; somewhere\n			on your page, of course.</p></li>\n		<li><p>After that, you need to activate the\n			extensions you want to use. For example, to activate\n			the transparency extension do:</p>\n			<pre>z.addTransparency();\n--&gt;\n&lt;/script&gt;</pre>\n			<p>Some extensions may require attributes. Just\n				look at the corresponding source file.\n				For a full sample see <a class=\"External\"\n					href=\"js/src/DemoZoomGrid.js\">DemoZoomGrid.js</a>.</p></li>\n	</ol>\n	<h2>Compatibilty</h2>\n	<p>Works with the latest versions of\n		<a class=\"External\" href=\"http://www.opera.com\">Opera</a>,\n		<a class=\"External\" href=\"http://www.mozilla.com\">Firefox</a>,\n		<a class=\"External\" href=\"http://www.google.com/chrome\">Chrome</a>,\n		<a class=\"External\" href=\"http://www.apple.com/safari/\">Safari</a>\n		and Internet Explorer.</p>\n	<h2>License</h2>\n	<p>ZoomGrid is licensed under the\n		<a href=\"http://www.opensource.org/licenses/mit-license.php\"\n			class=\"External\">MIT license</a>.</p>\n</div>\n</div>\n<div id=\"CpprcChapter\" class=\"Chapter\">\n<h1>cpprc</h1>\n<div class=\"ChapterContent\">\n	<h2>Description</h2>\n	<p>C++ resource compiler.\n		cpprc will generate a C++ source file (along with\n		the corresponding header file) that embeds any given\n		data file and provides a Resource class which gives\n		access to this data.\n		The Resource class can be created in two flavours: one\n		using STL streams, the other is using\n		<a href=\"http://www.wxwidgets.org\"\n			class=\"External\">WxWidgets</a> streams.</p>\n	<p>If you know \"qtrc\" of the famous\n		<a href=\"http://www.trolltech.com\"\n			class=\"External\">QT</a> toolkit, then\n		you know what this tool is doing too.</p>\n	<h2>Download</h2>\n	<p>Latest version:\n		<a href=\"downloads/cpprc-0.4.2.tar.bz2\"\n			class=\"Download\">cpprc-0.4.2.tar.bz2</a></p>\n	<p>The development version is available on\n		<a class=\"External\"\n			href=\"https://github.com/markusfisch/cpprc\">GitHub</a>.<br/>\n		You may easily clone the project by running:</p>\n		<pre>\$ git clone git://github.com/markusfisch/cpprc</pre>\n	<h2>Requirements</h2>\n	<p>This tool should run on any system that has a decent\n		C++ compiler.</p>\n	<h2>Installation</h2>\n	<ol>\n		<li><p>Download tarball above</p></li>\n		<li><p>Unpack tarball:</p>\n			<pre>\$ tar xjvf cpprc-x.x.x.tar.bz2</pre></li>\n		<li><p>Change into the new directory \"cpprc\"\n			and compile it by:</p>\n			<pre>\$ cd cpprc\n\$ make</pre></li>\n		<li><p>Place the executable somewhere in your path, i.e. for\n			a local install try:</p>\n			<pre>\$ mv cpprc ~/bin</pre>\n			<p>Or, if you want to make the program available for all\n			users, do this as root:</p>\n			<pre>\$ mv cpprc /usr/local/bin</pre></li>\n	</ol>\n	<h2>Configuration</h2>\n	<p>There is no configuration necessary.</p>\n	<p>If you are using Makefiles and (at least) a *nix-like environment\n		and have your resources in a subdirectory called say \"data\",\n		you can do something like this in your Makefile:</p>\n	<pre>resources:\n	if ! [ -f Resources.cpp ] || \\\n		[ \"\`find data/ -newer Resources.cpp\`\" ]; then \\\n		cpprc -f wxWidgets -o Resources \`find data/ -type f\`; \\\n	fi</pre>\n	<h2>License</h2>\n	<p>Cpprc is open source and licensed under the\n		<a href=\"http://www.opensource.org/licenses/mit-license.php\"\n			class=\"External\">MIT license</a>.</p>\n</div>\n</div>\n<div id=\"ReadmailChapter\" class=\"Chapter\">\n<h1>readmail</h1>\n<div class=\"ChapterContent\">\n	<h2>Description</h2>\n	<p><a href=\"http://en.wikipedia.org/wiki/Bash_(Unix_shell)\"\n			class=\"External\">BASH</a> eMail client.\n		Only <a href=\"http://en.wikipedia.org/wiki/Post_Office_Protocol\"\n			class=\"External\">POP</a> and\n		<a href=\"http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol\"\n			class=\"External\">SMTP</a> are supported.</p>\n	<h2>Download</h2>\n	<p>Latest version:\n		<a href=\"downloads/readmail\"\n			class=\"Download\">readmail</a></p>\n	<p>The development version is available on\n		<a class=\"External\"\n			href=\"https://github.com/markusfisch/readmail\">GitHub</a>.<br/>\n		You may easily clone the project by running:</p>\n		<pre>\$ git clone git://github.com/markusfisch/readmail</pre>\n	<h2>Requirements</h2>\n	<p>A working GNU environment having\n		bash, cat, clear, date, echo, grep, kill, less, mv,\n		printf and rm.</p>\n	<h2>Installation</h2>\n	<ol>\n		<li><p>Download the file above</p></li>\n		<li><p>Make it executable:</p>\n			<pre>\$ chmod a+x readmail</pre></li>\n		<li><p>Place the script somewhere in your path, i.e. for\n			a local install do:</p>\n			<pre>\$ mv readmail ~/bin/readmail</pre></li>\n		<li><p>Set up your configuration, see below</p></li>\n	</ol>\n	<h2>Configuration</h2>\n	<ol>\n		<li><p>Create \".readmailrc\" in your home directory:</p>\n			<pre>\$ vi ~/.readmailrc</pre></li>\n		<li><p>Put the following lines into it\n			(fill in the values in brackets):</p>\n			<pre>POP_HOST='(your POP3 server)'\nPOP_PORT=110\nPOP_ACCOUNT='(your POP3 account)'\nPOP_PASSWORD='(your POP3 password)'</pre></li>\n		<li><p>Append this block to configure your SMTP settings:</p>\n			<pre>SMTP_HOST='(your SMTP server)'\nSMTP_PORT=25\nSMTP_ACCOUNT='(your SMTP account)'\nSMTP_PASSWORD='(your SMTP password, this is optional)'</pre></li>\n		<li><p>You may also add a optional notification command:</p>\n			<pre>NOTIFICATION='xmessage \"You&#39;ve got mail\" &amp;'</pre>\n			<p>Alternatively, if you want xmessage to display\n				the new messages:</p>\n			<pre>NOTIFICATION='readmail n q | xmessage -file - -center -buttons \"\" -title \"Mail\" &amp;'</pre>\n			</li>\n		<li><p><strong>TIP:</strong> If you use \"@\" for\n			the name of the script, you have always quick\n			access and can query your eMails by:</p>\n			<pre>\$ @ n q</pre>\n			<p>In this case your configuration file must read\n			\".@rc\", of course.</p></li>\n	</ol>\n	<h2>License</h2>\n	<p>readmail is licensed under the\n		<a href=\"http://www.opensource.org/licenses/mit-license.php\"\n			class=\"External\">MIT license</a>.</p>\n</div>\n</div>\n<div id=\"AboutChapter\" class=\"Chapter\">\n<h1>About</h1>\n<div class=\"ChapterContent\">\n	<img src=\"images/photos.jpg\"\n		alt=\"Some photos of Markus Fisch\"\n		class=\"Photo\"/>\n	<p>Hi, I'm Markus and I push buttons for a living.</p>\n	<h2>This and that</h2>\n	<ul>\n		<li><p><a class=\"External\"\n			href=\"http://twitter.com/markusfisch\">Twitter</a><br/>\n			News and noise.</p></li>\n		<li><p><a class=\"External\"\n			href=\"https://github.com/markusfisch\">GitHub</a><br/>\n			Find more sources on my GitHub account.</p></li>\n		<li><p><a class=\"External\"\n			href=\"https://gist.github.com/markusfisch\">Gists</a><br/>\n			Some gists on GitHub. Mostly BASH scripts.</p></li>\n		<li><p><a class=\"External\"\n			href=\"http://kartpokal.de\">Kartpokal</a><br/>\n			A local indoor karting championship.</p></li>\n		<li><p><a class=\"External\"\n			href=\"http://striker.markusfisch.de\">Striker</a><br/>\n			A (very old) vertical shooter.</p></li>\n	</ul>\n	<h2 class=\"German\">For my dear fellow krauts:<br/>\n		Warum ist hier alles in Englisch?</h2>\n	<p>Darum:</p>\n	<p><a href=\"http://www3.clustrmaps.com/counter/maps.php?url=http://markusfisch.de\"\n		id=\"clustrMapsLink\">\n		<img src=\"http://www3.clustrmaps.com/counter/index2.php?url=http://markusfisch.de\"\n			style=\"border:0px;\"\n			alt=\"Locations of visitors to this page\"\n			title=\"Locations of visitors to this page\"\n			id=\"clustrMapsImg\"/></a>\n	</p>\n</div>\n</div>\n";App.zoomGrid=App.createZoomGrid(b);document.body.style.overflow="hidden"}Demos.setup();var c=new ImageViewer;c.showOriginal=c.show;c.show=function(e,d,g){App.zoomGrid.moveTimer||!App.zoomGrid.active||App.zoomGrid.active.id!="PieDockChapter"||this.showOriginal(e,d,g)};c.createForClasses("ImageGallery");
App.zoomGrid.imageViewerRestore=App.zoomGrid.restore;App.zoomGrid.restore=function(e){c.shownUrl||App.zoomGrid.imageViewerRestore(e)};a.style.visibility="visible";a=window.location.pathname.split("/");if(a.length>0)if(a=document.getElementById(a[a.length-1]+"Chapter")){App.zoomGrid.addHighlight();App.zoomGrid.zoom(a)}}},resize:function(){App.zoomGrid&&App.getZoomGridContainer()&&App.zoomGrid.restore()},zoom:function(a){a=document.getElementById(a);if(!a||!App.zoomGrid)return true;App.zoomGrid.zoom(a);
return false},restore:function(){if(!App.zoomGrid)return true;App.zoomGrid.restore();return false},createZoomGrid:function(a){a=new ZoomGrid({foldedSize:{width:82,height:82},paddingMarginBorder:{width:0,height:0},frameSize:{width:12,height:14},container:a,opacityFocused:0.85,opacityUnfocused:0.06,opacityFolded:0.15,opacityHighlighted:0.35});a.addTransparency();a.addHighlightOnClick();a.addMaxChildWidth({maxWidth:["h1"],width:["div.ChapterContent"]});a.addFrame();a.addRestoreButton();a.addDisableFoldedLinks();
return a},getZoomGridContainer:function(){var a=document.getElementById("Contents");if(!a)return null;if(/ipad|ipod|iphone|android|blackberry|windows\sce|mini|palm/i.test(navigator.userAgent.toLowerCase()))return null;var b=App.getSize();if(screen.width<400||screen.height<400||b.width<400||b.height<400)return null;if(b.width>800)b.width=800;b.width-=16;b.height-=16;a.style.maxWidth=b.width+"px";a.style.width=b.width+"px";a.style.height=b.height+"px";return a},getSize:function(){var a,b;if(self.innerWidth){a=
self.innerWidth;b=self.innerHeight}else if(document.documentElement&&document.documentElement.clientWidth){a=document.documentElement.clientWidth;b=document.documentElement.clientHeight}else{a=document.body.clientWidth;b=document.body.clientHeight}return{width:a,height:b}}};window.onload=function(){App.load()};if(window.opera||!document.all)window.onresize=App.resize;

