]> git.quilime.com - plog_bk.git/commitdiff
first commit
authorGabriel Dunne <gdunne@quilime.com>
Wed, 11 Nov 2009 23:29:04 +0000 (15:29 -0800)
committerGabriel Dunne <gdunne@quilime.com>
Wed, 11 Nov 2009 23:29:04 +0000 (15:29 -0800)
27 files changed:
.htaccess [new file with mode: 0644]
index.php [new file with mode: 0644]
js/jquery-1.3.2.min.js [new file with mode: 0644]
lib/config [new file with mode: 0644]
lib/data.php [new file with mode: 0644]
lib/init.php [new file with mode: 0644]
lib/output.php [new file with mode: 0644]
style.css [new file with mode: 0644]
templates/404.html [new file with mode: 0644]
templates/_mus.html [new file with mode: 0644]
templates/aggregate.html [new file with mode: 0644]
templates/archive.html [new file with mode: 0644]
templates/bio.html [new file with mode: 0644]
templates/code.html [new file with mode: 0644]
templates/contact.html [new file with mode: 0644]
templates/cv.html [new file with mode: 0644]
templates/footer.html [new file with mode: 0644]
templates/header.html [new file with mode: 0644]
templates/index.html [new file with mode: 0644]
templates/links.html [new file with mode: 0644]
templates/log.html [new file with mode: 0644]
templates/mus.html [new file with mode: 0644]
templates/nav.html [new file with mode: 0644]
templates/photo.html [new file with mode: 0644]
templates/photo_bk.html [new file with mode: 0644]
templates/projects.html [new file with mode: 0644]
templates/text.html [new file with mode: 0644]

diff --git a/.htaccess b/.htaccess
new file mode 100644 (file)
index 0000000..bef083f
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,9 @@
+
+
+<IfModule mod_rewrite.c>
+RewriteEngine On
+RewriteBase /
+RewriteCond %{REQUEST_FILENAME} !-f
+#RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule . index.php [L]
+</IfModule>
diff --git a/index.php b/index.php
new file mode 100644 (file)
index 0000000..872da1d
--- /dev/null
+++ b/index.php
@@ -0,0 +1,24 @@
+<?php
+
+    require_once 'lib/init.php';
+    
+    $url_string = get_url_string();
+    
+    if (is_string($url_string)) {
+        if (is_file ( TEMPLATE_DIR . basename($url_string) . '.html' )) {
+            include ( TEMPLATE_DIR . basename($url_string) . '.html' );
+            exit;
+        }
+        else if (dirname($url_string) != '.' && is_dir(CONTENT_DIR . dirname($url_string))) {
+            include( TEMPLATE_DIR . dirname($url_string) . '.html' );
+            exit;
+        }
+        else  {
+            include( TEMPLATE_DIR . '404.html' );            
+            exit;
+        }
+    }
+    
+    include ( TEMPLATE_DIR . 'index.html' );
+                                                                                                                 
+?>
diff --git a/js/jquery-1.3.2.min.js b/js/jquery-1.3.2.min.js
new file mode 100644 (file)
index 0000000..b1ae21d
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
+ *
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
+ *
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
+ */
+(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
+/*
+ * Sizzle CSS Selector Engine - v0.9.3
+ *  Copyright 2009, The Dojo Foundation
+ *  Released under the MIT, BSD, and GPL Licenses.
+ *  More information: http://sizzlejs.com/
+ */
+(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
\ No newline at end of file
diff --git a/lib/config b/lib/config
new file mode 100644 (file)
index 0000000..01a826b
--- /dev/null
@@ -0,0 +1,4 @@
+LOCAL_ROOT      = /home/quilime/gabrieldunne.com/
+CONTENT_DIR     = content/
+TEMPLATE_DIR    = templates/
+SITE_TITLE      = Gabriel Dunne
diff --git a/lib/data.php b/lib/data.php
new file mode 100644 (file)
index 0000000..14cd16e
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+
+    function list_content($path, $args="")
+    {
+        list($list, $total) = get_content($path, $args);
+        
+        $ret = array();
+        foreach($list as $l)
+        {
+            $ret[] = '<li><a href="'. $l['href'] .'">' . $l['title'] . '</a></li>'; 
+        }
+        
+        return join("\n", $ret);
+    }
+
+
+
+    function get_content ($path, $args="")
+    {   
+        parse_str($args, $args);
+        
+        $type = isset($args['type']) ? $args['type'] : 'folder';
+        $config = $type == 'folder' ? $c . '/config' : $c;
+        
+        $content = array();
+        $glob = glob( CONTENT_DIR . $path . '/*' );
+        
+        foreach ($glob as $c) {
+            if (is_file($c . $config) || is_dir($c . $config)) {
+                $config_array = parse_config($c . $config);
+                if ($config_array['title'] && $config_array['hide'] != "true") {
+                    $content[] = $config_array;
+                }                    
+            }
+        }                
+        return array(array_reverse($content), count($content));
+    }
+    
+    
+    function parse_config ($config_file)
+    {
+        $config = array();   
+        
+        $config_settings = explode("\n", file_get_contents( $config_file , FILE_USE_INCLUDE_PATH ));
+
+        $break = false;
+        foreach ( $config_settings as $c ) 
+        {    
+            if ($c == '--') {
+                $break = true;
+                $config['inline_content'] = "";
+                continue;            
+            }
+            
+            if ($break) {
+                $config['inline_content'] .= $c;                
+            }
+            else {
+                $conf = explode("=", $c);
+                $config[trim($conf[0])] = trim($conf[1]);
+            }    
+        }
+        
+        $config['thumb'] = is_file( dirname($config_file) . '/' . $config['thumb'] ) ? 
+                                get_base_dir() . '/' . dirname($config_file) . '/' . $config['thumb'] : 
+                                get_base_dir() . '/' . dirname($config_file) . '/thumb.png';
+        
+        $config['timestamp'] = strtotime($config['date']);
+
+        $config['content'] = is_file( dirname($config_file) . '/' . $config['content'] ) ? 
+                                dirname($config_file) . '/' . $config['content'] : 
+                                dirname($config_file) . '/content.html';
+
+        $config['href'] = basename($config_file) == 'config' ? 
+                            get_base_dir() . '/' . str_replace(CONTENT_DIR, "", dirname($config_file)) : 
+                            get_base_dir() . '/' . str_replace(CONTENT_DIR, "", $config_file);
+                            
+        $config['base_dir'] = get_base_dir() . '/' . CONTENT_DIR . $config['href'];
+        
+        return $config;
+    }
+    
+    
+    
+    function define_constants($constants = 'config')
+    {
+        $config = explode("\n", file_get_contents( $constants , FILE_USE_INCLUDE_PATH ));
+        foreach($config as $c) {
+            $var = explode("=", $c);
+            define(trim($var[0]), trim($var[1]));
+        }        
+    }    
+    
+    
+
+
+?>
\ No newline at end of file
diff --git a/lib/init.php b/lib/init.php
new file mode 100644 (file)
index 0000000..b7599d4
--- /dev/null
@@ -0,0 +1,10 @@
+<?php 
+    
+    ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . LOCAL_ROOT . '/lib/');
+    
+    require_once 'data.php';
+    require_once 'output.php';
+    
+    define_constants();
+    
+?>
\ No newline at end of file
diff --git a/lib/output.php b/lib/output.php
new file mode 100644 (file)
index 0000000..2d82d83
--- /dev/null
@@ -0,0 +1,230 @@
+<?php
+
+
+   /**
+    * @param    string  $format     "text", "xml", etc.
+    * @param    string  $default    Default format
+    * @return   array   Format, mime-type
+    */
+    function parse_format($format, $default)
+    {
+        $types = array('html' => 'text/html',
+                       'text' => 'text/plain',
+                       'atom' => 'application/atom+xml',
+                       'json' => 'text/json',
+                       'js'   => 'application/x-javascript',
+                       'xspf' => 'application/xspf+xml',
+                       'xml'  => 'text/xml',
+                       'jpg'  => 'image/jpeg',
+                       'png'  => 'image/png',
+                       'm3u'  => 'audio/x-mpegurl');
+        $format = empty($format) ? $default : $format;
+        return array($format, $types[$format]);
+    }
+    
+    
+    function get_url_parts()
+    {        
+        $parts = explode('/', substr($_SERVER['SCRIPT_URL'], strlen(get_base_dir() . '/')));        
+        return $parts[0] ? $parts : 0;
+    }
+    
+    
+    function get_url_string()
+    {
+        return substr($_SERVER['SCRIPT_URL'], strlen(get_base_dir() . '/'));
+    }
+    
+    
+    function get_domain_name()
+    {
+        if(php_sapi_name() == 'cli') return CLI_DOMAIN_NAME;
+        return $_SERVER['SERVER_NAME'];
+    }
+    
+    
+    function get_base_dir()
+    {
+        if(php_sapi_name() == 'cli') return CLI_BASE_DIRECTORY;
+        return rtrim(dirname($_SERVER['SCRIPT_NAME']), DIRECTORY_SEPARATOR);
+    }
+    
+    
+    function get_site_root()
+    {
+            return LOCAL_SITE_ROOT;
+    }
+
+    
+    function get_base_href()
+    {
+        if(php_sapi_name() == 'cli')    return '';
+        $query_pos = strpos($_SERVER['REQUEST_URI'], '?');
+        return ($query_pos === false) ? $_SERVER['REQUEST_URI']
+                                      : substr($_SERVER['REQUEST_URI'], 0, $query_pos);
+    }
+    
+    function get_url_domain($url)
+    {
+        $parsed = parse_url($url);
+        return $parsed['host'];
+    }
+    
+    
+    function include_template($template)
+    {
+        include ( TEMPLATE_DIR . $template );
+    }    
+
+    
+       function exec_php( $matches ) 
+       {
+               try  {
+                       eval('ob_start();' . $matches[1] . '$inline_execute_output = ob_get_contents(); ob_end_clean();');
+               } 
+               catch (Exception $e) { }
+               return $inline_execute_output;
+       }
+    
+    function get_rss_feed( $url )
+    {
+        $ch = curl_init();
+        curl_setopt($ch, CURLOPT_URL, $url);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+        $feed = curl_exec($ch);
+        curl_close($ch);
+        $xml = new SimpleXMLElement($feed);
+        return $xml;        
+    }
+    
+    
+   /**
+    * @param    int     $seconds    Number of seconds to convert into a human-readable timestamp
+    * @return   tring   Human-readable approximate timestamp like "2 hours"
+    */
+    function approximate_time($seconds)
+    {
+        switch(true)
+        {
+            case abs($seconds) <= 90:
+                return 'moments';
+
+            case abs($seconds) <= 90 * 60:
+                return round(abs($seconds) / 60).' minutes';
+
+            case abs($seconds) <= 36 * 60 * 60:
+                return round(abs($seconds) / (60 * 60)).' hours';
+
+            default:
+                return round(abs($seconds) / (24 * 60 * 60)).' days';
+        }
+    }    
+    
+    
+   /**
+    * @param    int     $time   Unix timestamp
+    * @return   string  Relative time string like "2 hours earlier"
+    */
+    function get_relative_time($time)
+    {
+        $diff = $time - time();
+        return approximate_time($diff) . ($diff < 0 ? ' ago' : ' from now');
+    }
+    
+    
+    /**
+     * Replace line breaks with <br />.  I don't usr nl2br because it doesn't remove the line breaks, it just adds the <br />
+     * @param string $str
+     * @return string
+     */
+    function clean($str) 
+    {
+      $str = str_replace("\r", "", $str);  // Remove \r
+      $str = str_replace("\n", "<br />", $str);  // Replace \n with <br />
+      return $str;
+    }
+    
+    
+  /**
+   * This function cleans up a string and make it ready to be displayed in a textarea field.
+   * Replaces <br /> with line breaks which is easier to read for the user.
+   *
+   * @param string $str
+   * @return string
+   */
+    function clean_for_textarea($str) {
+        $str = clean($str);
+        $str = str_replace("<br />", "\n", $str);
+        return $str;
+    }
+
+
+    function die_with_code($code, $message)
+    {
+        header("HTTP/1.1 {$code}");
+        die($message);
+    }
+
+    
+    function print_pre($arr)
+    {
+        echo '<pre style="position:absolute;z-index:1000; background:#232323; padding:10px; ">';
+        print_r($arr);
+        echo '</pre>';
+    }
+
+    function generate_thumbs($src, $dest, $w, $h)
+    {
+        exec('ls -1 ' . $src, $files);
+       foreach ($files as $f) {
+               system("convert " . $src . $f . " -resize " . $w . "x" . $h . " " . $dest . $f);
+       }
+    }
+    
+    if(false)
+        generate_thumbs(
+            '/home/quilime/gabrieldunne.com/dev/projects/bay_area_transit/images/',
+            '/home/quilime/gabrieldunne.com/dev/projects/bay_area_transit/images/thumbs_lg/',
+            900,
+            800
+            );
+
+
+    function qt($args)
+    {
+       ?>
+               <object 
+                   classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" 
+                   id="qt_object" 
+                   width="<?=$args['width']?>" 
+                   height="<?=$args['height']?>" 
+                   codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0">
+                       <param name="type" value="video/quicktime"><param name="name" value="qt_object">
+                       <param name="nocache" value="true"><param name="false" value="true">
+                       <param name="controller" value="true">
+                       <param name="bgcolor" value="#000000">
+                       <param name="src" value="<?=$args['file']?>">
+                       <param name="pluginspage" value="http://www.apple.com/quicktime/download/indext.html">          
+                       <embed 
+                           name="qt_object" 
+                           width="<?=$args['width']?>" 
+                           height="<?=$args['height']?>" 
+                           controller="true" 
+                           autoplay="false" 
+                           src="<?=$args['file']?>" 
+                           nocache="true" 
+                           type="video/quicktime" 
+                           bgcolor="#000000" 
+                           border="0" 
+                           pluginspage="http://www.apple.com/quicktime/download/indext.html" 
+                           enablejavascript="true">
+                       </embed>
+               </object>
+       <?
+    }
+
+
+        
+    
+ ?>
\ No newline at end of file
diff --git a/style.css b/style.css
new file mode 100644 (file)
index 0000000..2e985d3
--- /dev/null
+++ b/style.css
@@ -0,0 +1,94 @@
+
+body { background:#121212; margin:10px 100px 50px 40px; }
+html, body, table { font-family: verdana; font-size:11px; line-height:1.6em; color:#666; }
+
+/*selection*/
+::-moz-selection {background: #ff8; !important} 
+::selection {background: #ff8; !important} 
+
+/*links*/
+a { color:#bbb; border:0; }
+a img { border:0; }
+a.mute { color:#555; text-decoration:none; }
+a:hover, a.mute:hover { color:#ff8;  text-decoration:none;  }
+.caption a { color:#888;}
+.caption a:hover { color:#905;}
+
+/*headings*/
+h1, h2, h3, h4, h5, h6 { color:#444; font-size:1em; }
+h1 { margin:0 0 3em 0; }
+h2 { margin:4em 0 0.5em 0; }
+h3 { font-size:1em; margin:0; }
+
+/*code*/
+pre, .code { font-family: Monaco, monospace; font-size:12px; line-height:1.4em; background:#0a0a0a; color:#ff8; padding:0.1em 0.5em; }
+span.code { padding:0.1em 0.5em; }
+iframe.code { border-color:#ddd; width:90%; height:400px; background:#000; padding:20px;}
+
+strong { color:#888; }
+
+.date   { }
+.medium { }
+.desc   { color:#757575; }
+
+blockquote { font-family:times; background:#000; color:#aaa;
+margin:0; font-size:15px; line-height:1.4em; padding:2em 4em; font-style:italic; line-height:1.45em; max-width:600px;}
+
+p { max-width:720px; }
+
+ul { margin:0; padding:0; list-style-type:none; }
+li { margin-bottom:1px; padding:1px; }
+table { margin:0; padding:0; border:0;  }
+table .column { padding-right:50px; min-width:120px; max-width:275px; }
+table .column h2 a { text-decoration:none; }
+table h2, table h3 { border-bottom:1px dotted #aaa; }
+table .video li, table .image li { margin-bottom:2em; }
+table .reader li, table .bookmarks li { margin-bottom:1em; padding-bottom:1em;  border-bottom:1px dotted #252525; }
+.reader_links li, .bookmark_links li { padding-top:.75em; margin-bottom:.75em; }
+.bookmark_links li a { display:block; }
+.bookmark_links li span { font-style: italic; color:#444; }
+
+.c_pop { position:absolute; display:none; background:#141414; border:5px outset #d44; padding:1em 2em; left:380px; z-index:5; } 
+
+#home_arrow { position: absolute; top:11px; left:23px; margin-left:250px; text-decoration:none; }
+
+#content { margin-left:250px; }
+    #content p {  }
+    ul.inline_content { border-top:10px solid #161616; }
+    ul.inline_content li { margin:50px 0; padding-bottom:50px; border-bottom:10px solid #161616; }    
+    ul.inline_content li div.content li { padding:0; border:0; margin:0; }
+    ul.thumbnails    { }
+    ul.thumbnails li { display:inline-block; margin: 0px 60px 60px 0px; }
+    ul.thumbnails .thumbnail { width:160px; height:240px; text-align:center; background:#888; }
+    ul.thumbnails a:hover img { 
+        filter:alpha(opacity=75);
+        -moz-opacity:0.75;
+        -khtml-opacity: 0.75;
+        opacity: 0.75;
+    }     
+    ul.thumbnails a { text-decoration:none;  }   
+    ul.thumbnails .title {  }
+
+    .text { font-family:serif; font-size:15px; line-height:2.2em;  margin-top:80px;}
+    .indent { text-indent:3em; }
+    
+.nav { position:absolute; top:1em; left:1em; line-height:1.1em;}
+.nav ul { margin-left:1em; }
+.nav a { text-decoration:none; color:#555; }
+.nav a:hover { color:#ff8; }
+.nav h3 { margin-bottom:0.4em; }
+.nav h3 a { font-weight:bold; }
+    
+.caption { font-style:italic; margin-top:5px; color:#444; }
+.more, .home { text-decoration:none; color:#666; }
+    
+/*download link, function link*/
+ul.dl {}
+ul.dl li, ul.func li { font-weight:bold; }
+ul.dl li a , ul.func li a { }
+ul.func { margin-bottom:3em; } 
+ul.dl li a { font-weight:bold; border-bottom:1px dotted #666; }
+
+#footer {  margin-top:120px; }    
+#footer .copy a { text-decoration:none; }
+
diff --git a/templates/404.html b/templates/404.html
new file mode 100644 (file)
index 0000000..5203044
--- /dev/null
@@ -0,0 +1,29 @@
+<html>
+
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    <title><?php echo SITE_TITLE; ?> - 404</title>
+    
+</head>
+
+<body>
+    
+    <?php include_once('templates/header.html'); ?>
+
+    <div id="content">
+        
+        <h1>oops</h1>
+        
+        <p>
+        404
+        </p>
+        
+    </div>
+
+    <?php include_once('templates/footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/_mus.html b/templates/_mus.html
new file mode 100644 (file)
index 0000000..d95f98b
--- /dev/null
@@ -0,0 +1,28 @@
+<html>
+
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    
+    <title><?php echo SITE_TITLE ?> - music</title>
+    
+</head>
+
+<body>
+    
+    <?php include_once('templates/header.html'); ?>
+
+    <div id="content">
+
+       <h1>music</h1>
+        
+               borked, bbl
+
+    </div>
+
+    <?php include_once('templates/footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/aggregate.html b/templates/aggregate.html
new file mode 100644 (file)
index 0000000..d13cf09
--- /dev/null
@@ -0,0 +1,122 @@
+<html>
+
+<head>
+    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    
+    <title><?php echo SITE_TITLE; ?> - aggregate</title>
+    
+</head>
+
+<body>
+    
+    <?php include_once('templates/header.html'); ?>
+
+    <div id="content">
+
+       <h1>aggregate</h1>
+    
+    <table border="0" id="agg"><tr>
+        
+        
+        
+        <td valign="top" class="column">
+        <?php $agg = get_rss_feed('http://quilime.com/aggregate/?return=rss'); ?>
+        <h2><a href="http://quilime.com/aggregate">image</a></h2>
+        <ul class="image">
+        <?php 
+        $count = 8;
+        foreach($agg->channel->item as $item) :  
+        if ($count-- == 0) break;
+        ?>    
+        <li title="<?php echo $item->title; ?>">
+            <a href="<?php echo $item->link; ?>">
+                <img src="<?php echo $item->thumb; ?>">
+            </a>
+        </li>
+        <? endforeach; ?>  
+        </ul>
+        <p>
+            <a class="more" href="http://quilime.com/aggregate" title="via quilime.com/aggregate">more &rarr;</a>            
+        </p>
+        </td>
+        
+
+
+        
+        <td valign="top" class="column">
+        <?php $tube = get_rss_feed('http://gdata.youtube.com/feeds/base/users/kabr/favorites?alt=rss&v=2&orderby=published&client=ytapi-youtube-profile'); ?>
+        <h2><a href="http://www.youtube.com/profile?user=kabr&view=favorites">video </a></h2>
+        <ul class="video">
+        <?php 
+        $count = 11;
+        foreach($tube->channel->item as $tube) :  
+        if ($count-- == 0) break;
+        ?>    
+        <li title="<?php echo str_replace('"', '\'', $tube->title); ?>">
+            <? 
+            $url = $tube->link;
+            $pattern = '/v=(.+?)&/';
+            preg_match($pattern, $url, $matches);
+            $id = $matches[1];
+            ?>
+            <a href="<?php echo $tube->link; ?>">
+            <img src="http://i3.ytimg.com/vi/<?=$id?>/default.jpg" />
+            </a>
+        </li>
+        <? endforeach; ?>  
+        </ul>
+        <p>
+            <a class="more" href="http://www.youtube.com/profile?user=kabr&view=favorites" title="via youtube">more &rarr;</a>            
+        </p>
+        </td>
+        
+
+        
+
+
+        <td valign="top" class="column">
+        <?php  $feed = get_rss_feed('http://feeds.delicious.com/v2/rss/quilime?count=20'); ?>
+        <h2><a href="http://delicious.com/quilime/">links </a></h2>
+        <ul class="bookmarks">
+        <?php foreach($feed->channel->item as $item) : ?>
+        <li>
+            <a href="<?=$item->link?>"><?=$item->title?></a>
+            <br/>
+            <span class="desc"><?=$item->description;?></span>
+        </li>
+        <? endforeach; ?>       
+        </ul>
+        <p>
+            <a class="more" href="http://delicious.com/quilime/" title="via delicious">more &rarr;</a>            
+        </p>
+        </td>
+
+        <td valign="top" class="column">
+        <?php $read = get_rss_feed('http://www.google.com/reader/public/atom/user%2F10925293898931913532%2Fstate%2Fcom.google%2Fbroadcast'); ?>
+        <h2><a href="http://www.google.com/reader/shared/10925293898931913532">reader </a></h2>
+        <ul class="reader">
+        <?php foreach($read->entry as $item) :  ?>    
+        <li>
+            <a href="<?php echo $item->link['href']; ?>"><?php echo $item->title; ?></a>
+        </li>
+        <? endforeach; ?>  
+        </ul>
+        <p>
+            <a class="more" href="http://www.google.com/reader/shared/10925293898931913532" title="via google reader">more &rarr;</a>            
+        </p>
+        </td>
+
+
+        
+
+        </tr></table>
+        
+    </div>
+
+    <?php include_once('templates/footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/archive.html b/templates/archive.html
new file mode 100644 (file)
index 0000000..76a5995
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+//    list($content, $total) = get_content( get_site_root() . get_base_dir() .'/'. CONTENT_DIR . $url_string );
+
+?>
+
+<html>
+
+<head>
+    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    
+    <title><?php echo SITE_TITLE; ?> - content</title>
+    
+</head>
+
+<body>
+    
+    <?php include_once('templates/header.html'); ?>
+
+    <div id="content">
+
+        <table cellspacing=0 cellpadding=0><tr>
+                
+                <?php list($archive, $total) = list_content( 'archive' ); ?>
+                <td valign=top class="column">
+                    <h2><a href="<? echo get_base_dir(); ?>/archive/">archive</a></h2>
+                        <ul>
+                        <?php foreach ($archive as $p) : ?>
+                            <li><div class="img"></div><a href="<?php echo $p['href']; ?>"><?php echo $p['title']; ?></a></li>
+                        <?php endforeach; ?>
+                        </ul>
+
+
+                        <ul>
+                            <li><a href="http://portfolio.quilime.com/2008/">works 4</a></li>
+                            <li><a href="http://portfolio.quilime.com/new/port.php">works 3</a></li>
+                            <li><a href="http://portfolio.quilime.com/recent.html">works 2</a></li>
+                            <li><a href="http://quilime.com/content/archive/">1999 - 2004</a></li>
+                        </ul>
+                    </div>
+                </td>
+                
+                
+                
+                
+            </tr>
+        </table>
+        
+        
+    </div>
+
+    <?php include_once('templates/footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/bio.html b/templates/bio.html
new file mode 100644 (file)
index 0000000..18df49a
--- /dev/null
@@ -0,0 +1,38 @@
+<html>
+
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    
+    <title><?php echo SITE_TITLE ?> - bio</title>
+    
+</head>
+
+<body>
+    
+    <?php include_once('templates/header.html'); ?>
+
+    <div id="content">
+
+       <h1>bio</h1>
+        
+               <p>
+               born 1981 in San Francisco
+               <br/><br/>
+               currently lives/works in San Francisco
+               </p>
+               
+               <br/>
+               
+               <p>
+               <a href="/cv/">c/v</a>
+               </p>
+
+    </div>
+
+    <?php include_once('templates/footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/code.html b/templates/code.html
new file mode 100644 (file)
index 0000000..c8983c3
--- /dev/null
@@ -0,0 +1,126 @@
+<?php
+
+    $items = array();
+    $single = false;
+    
+    if (is_dir(CONTENT_DIR . $url_string) && !is_file(CONTENT_DIR . $url_string . '/config') ) {
+        list($items_list, $total) = get_content(basename($url_string));
+    }
+    else {
+        $config = parse_config(CONTENT_DIR . $url_string . '/config');
+        $items = $config;
+        $single = true;
+    }
+
+       $inline = isset($_GET['inline']) ? false : true;
+
+
+?>
+<html>
+
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    <title><?php echo SITE_TITLE; ?> - code<?php if (sizeof($items) > 0 ) : ?>: <?echo strtolower($items['title']); ?> [<?php echo $items['medium']; ?>]<?php endif; ?></title>
+    <script src="/js/jquery-1.3.2.min.js"></script>
+</head>
+
+<body>
+    
+    <?php 
+        include_template('nav.html');         
+    ?>
+
+    <div id="content">
+
+        <?php if ($single) : ?>
+
+                   <h1><a href="/code/">code</a> / <?php echo $items['title']; ?>   <small class="medium">[<?php echo $items['medium']; ?>]</small></h1>
+
+               
+            <div class="content">
+                <?php 
+                    $base_dir = $items['base_dir'];
+                    include_once($items['content']); 
+                ?>
+            </div>
+                   
+       
+        <?php elseif ($inline): ?>
+
+            <h1>code</h1>         
+            
+            <p>
+                code notes
+            </p>   
+                          
+            <ul class="func">            
+                   <li><a class="func" href="/code/?inline=1">view as list</a></a></li>
+           </ul>
+
+            <ul class="inline_content">
+            <?php foreach($items_list as $items): ?>
+                   <li>
+                           <a href="<?php echo $items['href']?>"><?php echo $items['title']; ?></a>
+                    <small class="medium">[<?php echo $items['medium']; ?>]</small>                                    
+                    <div class="content">
+                    <?php 
+                        $base_dir = $items['base_dir'];
+                        include( $items['content'] ); 
+                    ?>
+                    </div>
+                </li>
+            <?  endforeach; ?>
+            </ul>        
+            
+            
+            
+
+        <?php else: ?>
+
+    
+
+            
+            <h1>code</h1>    
+
+
+            <p>
+                code notes
+            </p>   
+            
+            
+            <ul class="func">
+                       <li><a href="/code/">view inline</a></li>
+               </ul>
+           
+            <table class="archive" cellspacing="0" cellpadding="0">
+                <?php
+                $c = 1; 
+                foreach($items_list as $items): ?>
+                       <tr>
+                    <td style="text-align:right; padding-right:1em;">
+                        <small class="medium">[<?php echo $items['medium']; ?>]</small>
+                    </td>
+                    <td>
+                                   <a onmouseout="$('.c_pop').hide();" onmouseover="$('.c_pop').hide(); $('#c_<?php echo $c; ?>').show();" href="<?php echo $items['href']?>"><?php echo $items['title']; ?></a>
+                        
+                        <div id="c_<?php echo $c; ?>" class="c_pop">
+                        <?php 
+                            $base_dir = $items['base_dir'];
+                            include( $items['content'] ); 
+                        ?>
+                        </div>
+                    </td>
+                    </tr>
+                <? $c++;  endforeach; ?>
+            </table>          
+
+        <?php endif; ?>
+        
+    </div>
+
+    <?php include_once( TEMPLATE_DIR . 'footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/contact.html b/templates/contact.html
new file mode 100644 (file)
index 0000000..6a53ed5
--- /dev/null
@@ -0,0 +1,61 @@
+<html>
+
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    
+    <title><?php echo SITE_TITLE ?> - contact</title>
+    
+       <style>
+
+       #message { width:300px; height:100px; padding:0.25em; font-size:1em; }
+       input[type='text'] { width:300px; font-family:monospace; }
+
+       </style>
+
+</head>
+
+<body>
+    
+    <?php include_once('templates/header.html'); ?>
+
+    <div id="content">
+
+       <h1>contact</h1>
+        
+               <p>
+               studio@gabrieldunne.com
+               </p>
+
+               <br/>
+
+               <p>
+        <form name="contact" style="display:none;">
+
+                   <label>message</label><br/>
+                       <textarea id="message"></textarea>
+
+                       <br/><br/>        
+
+            <label>reply to email</label><br/>
+            <input type="text">            
+
+                       <br/><br/>                      
+
+            <input type="submit" value="send">
+            
+                       <br/><br/><br/>
+
+        </form>
+
+               </p>
+               
+
+    </div>
+
+    <?php include_once('templates/footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/cv.html b/templates/cv.html
new file mode 100644 (file)
index 0000000..f95e842
--- /dev/null
@@ -0,0 +1,191 @@
+<html>
+
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    
+    <title><?php echo SITE_TITLE ?> - c/v</title>
+    
+    <style>
+        small { color:#aaa; font-weight:bold;  }
+    </style>
+    
+</head>
+
+<body>
+    
+    <?php include_once('templates/header.html'); ?>
+
+    <div id="content">
+
+       <h1>Gabriel Dunne</h1>
+    <p> 
+        http://gabrieldunne.com<br/>
+    </p>
+
+    <br/><br/>
+
+
+
+<h3>edu</h3>
+2004 B.A. Design | Media Arts, UCLA
+<br/>
+2002 Pont Avent School of Art, France
+<br/>
+1999 Architecture, Art Foundation, College of Marin
+
+<br/><br/><br/><br/>
+
+<h3>selected exhibitions / conferences</h3>
+
+<small>2008</small><br/>
+“Design and the Elastic Mind”, MoMA NYC (w/Stamen Design). Permanent Collection.<br/>
+<small>2006</small><br/>
+Interferenze: Naturalis Electronica, Valle Caudina, Italy <br/>
+Japan Media Arts Festival, Tokyo, Japan (collab.) <br/>
+Festival Sonar, Barcelona, Spain <br/>
+SIGGRAPH, Boston<br/>
+<small>2005</small><br/>
+New Wight Gallery MFA Show, UCLA, Los Angeles, CA (collab.)<br/>
+SIGGRAPH, Los Angeles<br/>
+<small>2004</small> <br/>
+:Output International Design Competition, Amsterdam, Netherlands <br/>
+CiberArt: International Festival of New Technologies, Bilbao, Spain <br/>
+Traffic, New Wight Gallery, UCLA, Los Angeles, CA (collab.) <br/>
+<small>2003</small> <br/>
+narr@tive: Digital Storytelling, Hammer Museum, Los Angeles<br/>
+Sur(Face), Design Media Arts EDA, Los Angeles, CA <br/>
+Eyberrations Digital Film Festival, Irvine, CA<br/>
+<small>2002</small><br/>
+Text + Architecture & Writing in Architecture, SCIARC, Los Angeles, CA <br/>
+Melbourne International Film Festival, Melbourne, Australia<br/>
+Experimental Works On Paper, Paris, France<br/>
+Experimental Works On Paper, Rennes, France<br/>
+Jaquez Gallery Collection, Pont Aven, France. Permanent  Collection.<br/>
+
+
+<br/><br/><br/><br/>
+
+
+<h3>teaching</h3>
+<small>2009</small><br/>
+Creative Coding (series), Gray Area Foundation for the Arts, San Francisco<br/>
+<small>2006</small>
+<br/>
+Programming and Design, UCLA, Los Angeles<br/>
+Video, UCLA Summer Institute, Guest Lecturer, UCLA, Los Angeles<br/>
+<small>2004</small><br/>
+Processing Workshop, Makers Faire, San Jose<br/>
+<small>2005</small><br/>
+UCLA, Artist Symposium. Los Angeles<br/>
+<small>2003</small><br/>
+Maya Workshop Series, UCLA, Los Angeles <br/>
+Typography Workshop Series, UCLA, Los Angeles<br/>
+<small>2002</small><br/>
+Adobe Design Workshops, UCLA, Los Angeles<br/>
+<small>2001</small><br/>
+Macromedia Design Student Workshops, UCLA, Los Angeles
+
+
+<br/><br/><br/><br/>
+
+<h3>selected projects</h3>
+"Daschtein"<br/>
+The Daschtein Ice Cave Project facilitates a global dialogue about clean energy. The public interacts with the installation by sending messages via SMS, and can view real-time display of the public discourse projected on the inside of the Dachstein Ice Cave in Austria. Created with TheGreenEyl and Club of Pioneers in Berlin. Developed in Processing, C++, Max/MSP.
+
+<br/><br/>
+"Celestial Mechanics"</strong>"<br/>
+A planetarium dome artwork that visualizes statistics, data, and protocols of man-made aerial technologies animated with Processing, Java, Maya/MEL with 5 channel surround sound. Featured in numerous international exhibitions, including Interferense Festival, Italy, Japan Media Arts festival, SIGGRAPH, and :Output Design Competition in the Netherlands.
+
+
+<br/><br/><br/><br/>
+
+
+       
+       
+
+
+       
+
+  
+       
+<h3>press</h3>
+<small>2008</small><br/>
+MIT Aerospace Annual, featuring imagery from Celestial Mechanics<br/>
+<small>2007</small><br/>
+a mínima #17, cover image <a href="http://www.flickr.com/photos/44694989@N00/2088945508/" title="view via a minima onflickr">&rarr;</a><br/>
+Contemporary Art of Science and Technology, Zhang Yanxiang, ISBN# 978-7-03-020415-8<br/>
+<small>2006</small><br/>
+AD: Architectural Digest, Featuring excerpts from Celestial Mechanic. Sep Issue<br/>
+FOCUS Italia, May Issue<br/>
+Discover Magazine, Imagery from Celestial Mechanics, Apr Issue <br/>
+Wired, Interview, March Issue<br/>
+HDRI, Interview, Feb Issue<br/>
+
+<br/><br/><br/>    <br/>   
+       
+<!--
+<h3>awards</h3>
+<small>2005</small><br/>
+Creative Review Best in Show  – Beck ‘Girl’ Music Video (w/Motion Theory)<br/>
+Type Directors Award – Nike ‘Golf’ (w/Motion Theory)<br/>
+<small>2004</small><br/>
+AIGA – HP ‘It Consolidates’ (w/Motion Theory)<br/>
+AICP – HP ‘Hands’ (w/Motion Theory)<br/>
+<small>2003</small><br/>
+Screen Network Australia<br/>
+<small>2002</small><br/>
+Shorttakes Film Festival<br/>
+
+
+<br/><br/><br/><br/>   
+-->
+
+<h3>professional / residencies</h3>
+
+
+<small>2008 - Current</small>
+<br/>
+<strong>Gray Area Foundation for the Arts</strong>, San Francisco CA (Residency, Studio Director)
+<br/>
+
+<small>2004 - Current</small>
+<br/>
+<strong>Tessellated Group</strong>, Napa CA (Partner, Designer)
+<br/>
+Presentation, modeling, and display of material designs and machinery used in creating industrial  
+material formations for structure, aerospace, and packaging. Built a variety of tools, processes, and presentation with Maya, Rhino, CAD/CAM, AS3, Processing/Java, C++.
+
+<br/>
+
+<small>2008</small>
+<br/>
+<strong>Stamen Design</strong>, San Francisco CA  (Designer, Programmer)
+<br/>
+Worked on a variety of data visualization software design projects, ranging in scope from real-time interactive displays for digg.com to architectural media installations for SOM, written in AS3, Java, Processing.  Re-engineered a version of Cabspotting: a visualization of GPS locations of taxi activity in San Francisco,   acquired by MoMA NYC for the permanent collection.<br/>
+
+<small>2007</small>
+<br/>
+<strong>Google Inc</strong>, Mountain View CA (Designer, Developer)
+<br/>
+Designed and engineered visualizations of Google’s information, such as search, activity, and real time statistics, displayed internally on an international network. Software developed in Python, AS3, Java, C++, PHP.
+
+<br/>
+
+<small>2004 - 2006</small>
+<br/>
+<strong>Motion Theory</strong>, Los Angeles CA (VFX Supervisor, Designer)
+<br/>
+Animation, compositing, programmatic animation, R+D, concept development, and proposals for award winning commercials and music videos. Managed teams of designers, animators, and programmers for effects sequences, motion control sequences. Custom visual effects written in C++, Maya/MEL, Processing. 
+
+
+
+
+    </div>
+
+    <?php include_once('templates/footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/footer.html b/templates/footer.html
new file mode 100644 (file)
index 0000000..1fbb7a6
--- /dev/null
@@ -0,0 +1,5 @@
+<div id="footer">
+
+   
+
+</div>
\ No newline at end of file
diff --git a/templates/header.html b/templates/header.html
new file mode 100644 (file)
index 0000000..4ac161f
--- /dev/null
@@ -0,0 +1 @@
+<a href="/" id="home_arrow">&#x2b05;</a>
\ No newline at end of file
diff --git a/templates/index.html b/templates/index.html
new file mode 100644 (file)
index 0000000..4abc14b
--- /dev/null
@@ -0,0 +1,33 @@
+<html>
+
+<head>
+    
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    
+    <title><?php echo SITE_TITLE; ?></title>
+    
+</head>
+
+<?php
+
+    $bg = array(
+        'http://farm4.static.flickr.com/3599/3369443370_68ee7df73a_o.jpg',
+        'http://farm3.static.flickr.com/2568/3928515082_bd4e37902f.jpg',
+        'http://gabrieldunne.com/img/bg2.png'
+        );
+                
+?>
+
+<!--style="background:url('<?php echo $bg[rand(0, sizeof($bg) - 1)]; ?>');" --> 
+
+<body>
+    
+    <? include_template('nav.html'); ?>
+    
+    <div id="content">
+
+    </div>
+    
+</body>
+</html>
\ No newline at end of file
diff --git a/templates/links.html b/templates/links.html
new file mode 100644 (file)
index 0000000..b52d31c
--- /dev/null
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    
+    <title><?php echo SITE_TITLE ?> - links</title>
+    
+</head>
+
+<body>
+    
+    <?php include_once('templates/header.html'); ?>
+
+    <div id="content">
+
+       <h1>links</h1>
+    
+        <?php
+        
+            function linklist($links)
+            { ?>
+                <?php foreach($links as $l) : ?>
+               <li><a href="<?php echo $l[0];?>"><?php echo $l[1];?></a></li>
+                <?php endforeach; ?>                
+            <?php 
+            }
+        
+           $links = array(
+                    array('http://aaronkoblin.com', 'aaron koblin'),
+                    array('http://universaloscillation.com', 'aaron meyers'),
+                    array('http://ripevessel.com', 'adam roth'),
+                    array('http://reas.com/', 'casey reas'),
+                    array('http://cenizal.com', 'cj cenizal'),
+                    array('http://www.oddsympathy.com/', 'daniel massey'),
+                    array('http://davidrager.org', 'david rager'),
+                    array('http://fredericeyl.de', 'frédéric eyl'),
+                    array('http://dabkitsch.com/jml', 'jeff lubow'),
+                    array('http://jtnimoy.net', 'joshua nimoy'),
+                    array('http://keithpasko.com', 'keith pasko'),
+                    array('http://digitanalog.net', 'marc nimoy'),
+                    array('http://makaga.com', 'matthew gale'),
+                    array('http://davidmichaeldunne.com', 'michael dunne'),                    
+                    array('http://mike.teczno.com', 'michal migurski'),
+                    array('http://mylinhtrieu.com', 'mylinh trieu'),
+                    array('http://renataraksha.com', 'renata raksha'),
+                    array('http://onecm.com', 'ryan alexander'),
+                    array('http://pohflepp.com', 'sascha pohflepp'),
+                    array('http://ssherriff.com', 'stephanie sherriff'),
+                    array('http://www.thegreeneyl.com/', 'the green eyl'),
+                    array('http://tom-carden.co.uk', 'tom carden')
+                    );    
+        ?>
+    
+
+        <ul style="list-style-type:none;";>
+            <?php linklist($links); ?>
+        </ul>
+
+    </div>
+
+    <?php include_once('templates/footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/log.html b/templates/log.html
new file mode 100644 (file)
index 0000000..16ea6b0
--- /dev/null
@@ -0,0 +1,129 @@
+<?php
+
+    $single = false;
+    
+    if (is_dir(CONTENT_DIR . $url_string) && !is_file(CONTENT_DIR . $url_string . '/config') ) {
+        list($log_list, $total) = get_content(basename($url_string), "type=flat");
+    }
+    else {
+        $config = parse_config(CONTENT_DIR . $url_string);
+        $log = $config;
+        $base_dir = $log['base_dir'];        
+        $single = true;        
+    }
+    
+    $list = isset($_GET['list']) ? $_GET['list'] : false;
+    
+?>
+<html>
+
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    
+    <title><?php echo SITE_TITLE; ?><?php if ($single) : ?> - <?php echo date("Y M d", strtotime($log['date']));?> - <?echo strtolower($log['title']); ?><? else: ?> - log<? endif; ?></title>
+
+    <script src="/js/jquery-1.3.2.min.js"></script>
+
+</head>
+
+<body>
+    
+    <?php include_template('nav.html'); ?>
+
+    <div id="content">
+
+        <?php if ($single) : ?>
+
+               <h1><a href="/log/">log</a> / <?php echo $log['title']; ?> <small class="date"><?php echo date("M d Y", $log['timestamp']); ?></small></h1>    
+            
+            <div class="content">
+            <?php echo $log['inline_content']; ?>
+            </div>
+            
+            <p>
+            <a href="/log/" class="back">&larr; back to log</a>
+            </p>
+                    
+        <?php elseif ($list): ?>
+
+            <h1>log</h1>
+
+            <ul class="func">            
+                       <li><a class="func" href="/log/">view inline</a></li>
+               </ul>            
+
+        
+           <table class="archive" cellspacing="0" cellpadding="0">
+                <tr>
+                <td style="text-align:right; padding-right:1em;">
+             
+                </td>
+                <td>
+                </td>
+                <?php 
+                    $c = 1; 
+                    foreach($log_list as $log): 
+                ?>
+                <tr>
+                <td style="text-align:right; padding-right:1em;">
+                <small class="medium"><?php echo date("M d Y", $log['timestamp']); ?></small>
+                </td>
+                <td>
+                                   <a onmouseout="$('.c_pop').hide();" onmouseover="$('.c_pop').hide(); $('#c_<?php echo $c; ?>').show();" href="<?php echo $log['href']?>"><?php echo $log['title']; ?></a>
+                    <div id="c_<?php echo $c; ?>" class="c_pop">
+                    <?php 
+                        $base_dir = $log['base_dir'];
+                        echo $log['inline_content']; 
+                        ?>
+                    </div>
+                </td>
+                </tr>
+            <?  $c++;  endforeach; ?>
+            </table> 
+            
+
+
+            
+        <?php else: ?>
+
+
+
+
+
+            
+            <h1>log</h1>
+            
+            <ul class="func">            
+                   <li><a class="func" href="/log/?list=1">view archive</a></a></li>
+           </ul>            
+
+            <ul class="inline_content log">
+            <?php foreach($log_list as $log): ?>
+                   <li>
+                       <h3>
+                           <a title="<?php echo get_relative_time($log['timestamp']); ?>" href="<?php echo $log['href'];?>">
+                               <?php echo $log['title']; ?></a> 
+                                               <small class="date"><?php echo date("M d Y", $log['timestamp']); ?></small>
+                       </h3>
+                    <br/>
+                    <?php echo $log['inline_content']; ?>
+                </li>
+            <? endforeach; ?>
+            </ul>
+
+
+
+
+
+            
+        <?php endif; ?>
+                
+    </div>
+
+    <?php include_once( TEMPLATE_DIR . 'footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/mus.html b/templates/mus.html
new file mode 100644 (file)
index 0000000..61ce4d1
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+
+    $projects = array();
+    $single = false;
+    
+    if (is_dir(CONTENT_DIR . $url_string) && !is_file(CONTENT_DIR . $url_string . '/config') ) {
+        list($projects_list, $total) = list_content(basename($url_string));
+    }
+    else {
+        $config = parse_config(CONTENT_DIR . $url_string . '/config');
+        $project = $config;
+        $single = true;
+    }
+
+?>
+<html>
+
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    
+    <title><?php echo SITE_TITLE; ?> - projects<?php if (sizeof($projects) > 0 ) : ?>: <?echo strtolower($project['title']); ?> [<?php echo $project['medium']; ?>]<?php endif; ?></title>
+    
+</head>
+
+<body>
+    
+    <?php include_once(TEMPLATE_DIR . 'header.html'); ?>
+
+    <div id="content">
+    
+       
+        
+        <?php if ($single) : ?>
+
+           <h1><a href="<?php echo get_base_dir(); ?>/projects">projects</a> / <?php echo $project['title']; ?></h1>    
+            <?php 
+                $base_dir = $project['base_dir']; 
+                include_once($project['content']); 
+            ?>
+            
+        
+        <?php elseif ($list): ?>
+        
+        <?php else: ?>
+        
+             <h1>projects</h1>
+
+            <ul class="thumbnails">
+            <?php foreach($projects_list as $project): 
+            ?>
+                   <li>
+                           <div class="title"><? echo $project['title']; ?></div>
+                           <p>
+                               <? include ($project['content']);?>
+                       </p>
+                </li>
+            <? endforeach; ?>
+            </ul>
+        <?php endif; ?>
+        
+    </div>
+
+    <?php include_once( TEMPLATE_DIR . 'footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/nav.html b/templates/nav.html
new file mode 100644 (file)
index 0000000..3285395
--- /dev/null
@@ -0,0 +1,41 @@
+
+
+<ul class="nav">          
+    
+    <h3>
+        <strong><a href="/"><? echo SITE_TITLE; ?></a></strong>
+    </h3>
+    
+    <br/>
+
+    <h3><a href="/projects/">projects</a></h3>
+    <ul>
+        <?php echo list_content('projects', array()); ?>
+    </ul>
+    
+    <br/>
+    
+    <h3><a href="/code/">code</a></h3>
+    <ul>
+        <?php echo list_content('code', array()); ?>
+    </ul>
+    
+    <br/>
+
+    <!--
+    <ul>
+        <li><a href="/log/">log</a></li>
+
+    </ul>
+    -->
+
+       <li><a href="/log/">log</a></li>        
+       <li><a href="/photo/">photo</a></li>            
+       <li><a href="/text/">text</a></li>              
+       <li><a href="/mus/">music</a></li>
+    <li><a href="/bio/">bio</a></li>
+    <li><a href="/contact/">contact</a></li>           
+    <li><a href="/aggregate/">aggregate</a></li>
+    <li><a href="/links/">links</a></li> 
+    
+</ul>  
diff --git a/templates/photo.html b/templates/photo.html
new file mode 100644 (file)
index 0000000..0fdb7fb
--- /dev/null
@@ -0,0 +1,54 @@
+<?php 
+
+$img = get_rss_feed('http://api.flickr.com/services/feeds/photos_public.gne?id=28394478@N00&lang=en-us&format=rss_200'); 
+
+?>
+
+<html>
+
+<head>
+    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    
+    <title><?php echo SITE_TITLE; ?> :photo</title>
+    
+    <style>
+    
+        ul.image li { float:left; width:240px; height:240px; text-align:center; margin:0 50px 50px 0;}    
+        
+    </style>
+    
+</head>
+
+<body>
+    
+    <?php include_template('nav.html'); ?>
+
+    <div id="content">
+
+       <h1>images</h1>
+    
+        <ul class="image">
+        <?php foreach($img->channel->item as $item) : ?>
+        <li>
+            <?
+                $subject = $item->description;
+                $pattern = '/<a href="http:\/\/www\.flickr\.com\/photos\/quilime\/(.*) \/><\/a><\/p>/';
+                preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
+                echo $matches[0][0];
+            ?>
+        </li>
+        <?endforeach; ?> 
+        
+        <div style="clear:both;"></div>
+        
+        <a href="http://www.flickr.com/photos/quilime/" title="via flickr" class="more">more via flickr &rarr;</a>            
+    </div>
+
+    <?php include_once('templates/footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/photo_bk.html b/templates/photo_bk.html
new file mode 100644 (file)
index 0000000..e0ad96a
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+
+    $photo = array();
+    $single = false;
+    
+    if (is_dir(CONTENT_DIR . $url_string) && !is_file(CONTENT_DIR . $url_string . '/config') ) {
+        list($photo_list, $total) = list_content(basename($url_string));
+    }
+    else {
+        $config = parse_config(CONTENT_DIR . $url_string . '/config');
+        $photo_single = $config;
+        $single = true;
+    }
+
+?>
+<html>
+
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    
+    <title><?php echo SITE_TITLE; ?> - photo<?php if (sizeof($photo) > 0 ) : ?>: <?echo strtolower($photo_single['title']); ?> [<?php echo $photo_single['medium']; ?>]<?php endif; ?></title>
+    
+</head>
+
+<body>
+    
+    <?php include_once(TEMPLATE_DIR . 'header.html'); ?>
+
+    <div id="content">
+    
+       
+        
+        <?php if ($single) : ?>
+
+           <h1><a href="<?php echo get_base_dir(); ?>/photo">photo</a> / <?php echo $photo_single['title']; ?></h1>    
+            <?php 
+                $base_dir = $photo_single['base_dir']; 
+                include_once($photo_single['content']); 
+            ?>
+            
+        
+        <?php elseif ($list): ?>
+        
+        <?php else: ?>
+        
+             <h1>photo</h1>
+            <ul class="thumbnails">
+            <?php foreach($photo_list as $photo_single): ?>
+                   <li>
+                       <a href="<?php echo $photo_single['href']?>">
+                           <div class="thumbnail" title="<? echo $photo_single['title'] ?>"><img src="<?php echo $photo_single['thumb']; ?>" /></div>
+                           <div class="title"><? echo $photo_single['title']; ?></div>
+                       </a>
+                </li>
+            <? endforeach; ?>
+            </ul>
+
+        <?php endif; ?>
+        
+    </div>
+
+    <?php include_once( TEMPLATE_DIR . 'footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/projects.html b/templates/projects.html
new file mode 100644 (file)
index 0000000..331b803
--- /dev/null
@@ -0,0 +1,106 @@
+<?php
+
+    $projects = array();
+    $single = false;
+    
+    if (is_dir(CONTENT_DIR . $url_string) && !is_file(CONTENT_DIR . $url_string . '/config') ) {
+        list($projects_list, $total) = get_content(basename($url_string));
+    }
+    else {
+        $config = parse_config(CONTENT_DIR . $url_string . '/config');
+        $project = $config;
+        $single = true;
+    }
+
+?>
+<html>
+
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    
+    <title><?php echo SITE_TITLE; ?> - projects<?php if (sizeof($projects) > 0 ) : ?>: <?echo strtolower($project['title']); ?> [<?php echo $project['medium']; ?>]<?php endif; ?></title>
+    
+</head>
+
+<body>
+    
+    <?php
+        include_template('nav.html');         
+    ?>
+
+    <div id="content">
+    
+       
+        
+        <?php if ($single) : ?>
+
+           <h1><a href="<?php echo get_base_dir(); ?>/projects">projects</a> / <?php echo $project['title']; ?></h1>    
+            <?php 
+                $base_dir = $project['base_dir']; 
+                include_once($project['content']); 
+            ?>
+            
+        
+        <?php elseif ($list): ?>
+        
+        <?php else: ?>
+        
+             <h1>projects</h1>
+
+            <ul class="thumbnails">
+            <?php foreach($projects_list as $project): ?>
+                   <li>
+                       <a href="<?php echo $project['href']?>">
+                           <div class="thumbnail" title="<? echo $project['title'] ?>"><img src="<?php echo $project['thumb']; ?>" /></div>
+                           <div class="title"><? echo $project['title']; ?></div>
+                       </a>
+                </li>
+            <? endforeach; ?>
+            </ul>
+
+            
+            <ul>
+                <li><a href="http://portfolio.quilime.com/2008/?p=tessellated">Tessellated Group</a></li>
+                <li><a href="http://portfolio.quilime.com/2008/?p=rattle">Rattles</a></li>
+                <li><a href="http://portfolio.quilime.com/2008/?p=sempernull">Sempernull</a></li>
+                <li><a href="http://portfolio.quilime.com/2008/?p=synonymovement">Synonymovement</a></li>
+                <li><a href="http://portfolio.quilime.com/2008/?p=mask">Mask</a></li>
+                <li><a href="http://portfolio.quilime.com/2008/?p=prism">Prism</a></li>
+                <li><a href="http://content.stamen.com/som_transbay_tower">SOM w/ Stamen Design</a></li>
+                <li><a href="http://portfolio.quilime.com/2008/?p=spacelamp">Spacelamp</a></li>
+                <li><a href="http://portfolio.quilime.com/2008/?p=boat">Boat</a></li>
+                <li><a href="http://portfolio.quilime.com/new/port.php?p=01_Dots">Dots</a></li>
+                <li><a href="http://portfolio.quilime.com/new/port.php?p=02_Jellyfish">Jelly</a></li>
+                <li><a href="http://portfolio.quilime.com/new/port.php?p=05_Swim_Tank">Swim Tank</a></li>
+                <li><a href="http://portfolio.quilime.com/new/port.php?p=06_Web">Web</a></li>
+                <li><a href="http://portfolio.quilime.com/new/port.php?p=04_Stars">Sempernull (prog)</a></li>
+                <li><a href="http://portfolio.quilime.com/new/port.php?p=03_Rattles">Rattles (prog)</a></li>
+                <li><a href="http://www.motiontheory.com/work/modest-mouse_dashboard">Modest Mouse "Dashboard"</a></li>
+                <li><a href="http://www.motiontheory.com/work/hp_pharrell">HP Pharrel</a></li>
+                <li><a href="http://portfolio.quilime.com/content/daschtein/index.html">Dachstein</a></li>
+                <li><a href="http://portfolio.quilime.com/content/cm/index.html">Celestial Mechanics</a></li>
+                <li><a href="http://www.motiontheory.com/work/beck_girl">Beck "Girl"</a></li>
+                <li><a href="http://www.motiontheory.com/work/hp_it-consolidates">HP "It Consolidates"</a></li>
+                <li><a href="http://www.motiontheory.com/work/resfest_panoramic">Resfest Panoramic</a></li>
+                <li><a href="http://dev.motiontheory.com/nikegolf/">Nike Golf</a></li>
+                <li><a href="http://portfolio.quilime.com/content/valentine/index.html">Valentine</a></li>
+                <li><a href="http://quilime.com/content/fr_weekly">Weekly</a></li>
+                <li><a href="http://quilime.com/content/fr_posters">Posters</a></li>
+                <li><a href="http://portfolio.quilime.com/2008/?p=obsession">Obsession</a></li>
+                <li><a href="http://portfolio.quilime.com/2008/?p=bodyneg">Body Negative</a></li>
+                <li><a href="http://portfolio.quilime.com/content/nosreves/index.html">Nos Reves</a></li>
+                <li><a href="http://portfolio.quilime.com/2008/?p=icarus">Icarus</a></li>
+          </ul>            
+            
+        <?php endif; ?>
+        
+    </div>
+
+    <?php include_once( TEMPLATE_DIR . 'footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file
diff --git a/templates/text.html b/templates/text.html
new file mode 100644 (file)
index 0000000..8ae7150
--- /dev/null
@@ -0,0 +1,79 @@
+<?php
+
+    $single = false;
+    
+    if (is_dir(CONTENT_DIR . $url_string) && !is_file(CONTENT_DIR . $url_string . '/config') ) {
+        list($log_list, $total) = get_content(basename($url_string), "type=flat");
+    }
+    else {
+        $config = parse_config(CONTENT_DIR . $url_string);
+        $log = $config;
+        $base_dir = $log['base_dir'];        
+        $single = true;        
+    }
+    
+    $list = isset($_GET['list']) ? $_GET['list'] : true;
+    
+?>
+<html>
+
+<head>
+
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
+    <link rel="stylesheet" href="<?php echo get_base_dir(); ?>/style.css" type="text/css">
+    
+    <title><?php echo SITE_TITLE; ?><?php if ($single) : ?> - <?echo ($log['title']); ?><? else: ?> - text<? endif; ?></title>
+
+    <script src="/js/jquery-1.3.2.min.js"></script>
+
+</head>
+
+<body>
+    
+    <?php include_once(TEMPLATE_DIR . 'header.html'); ?>
+
+    <div id="content">
+
+        <?php if ($single) : ?>
+
+               <h1><a href="/text/">text</a> / <?=$log['title']?></h1>
+            
+            
+            <div class="content text">
+            <?php echo $log['inline_content']; ?>
+            </div>
+            
+            <p>
+            <a href="/text/" class="back">&larr; back to text</a>
+            </p>
+                    
+        <?php elseif ($list): ?>
+
+            <h1>text</h1>
+
+           <table class="archive" cellspacing="0" cellpadding="0">
+                <tr>
+                <?php 
+                    $c = 1; 
+                    foreach($log_list as $log): 
+                ?>
+                <tr>
+                <td>
+                                   <a href="<?php echo $log['href']?>"><?php echo $log['title']; ?></a>
+                </td>
+                </tr>
+            <?  $c++;  endforeach; ?>
+            </table> 
+            
+
+
+
+        <?php endif; ?>
+                
+    </div>
+
+    <?php include_once( TEMPLATE_DIR . 'footer.html'); ?>
+    
+</body>
+
+</html>
\ No newline at end of file