/*
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version 1.09
 */
var Cufon=(function(){var m=function(){return m.replace.apply(null,arguments)};var x=m.DOM={ready:(function(){var C=false,E={loaded:1,complete:1};var B=[],D=function(){if(C){return}C=true;for(var F;F=B.shift();F()){}};if(document.addEventListener){document.addEventListener("DOMContentLoaded",D,false);window.addEventListener("pageshow",D,false)}if(!window.opera&&document.readyState){(function(){E[document.readyState]?D():setTimeout(arguments.callee,10)})()}if(document.readyState&&document.createStyleSheet){(function(){try{document.body.doScroll("left");D()}catch(F){setTimeout(arguments.callee,1)}})()}q(window,"load",D);return function(F){if(!arguments.length){D()}else{C?F():B.push(F)}}})(),root:function(){return document.documentElement||document.body}};var n=m.CSS={Size:function(C,B){this.value=parseFloat(C);this.unit=String(C).match(/[a-z%]*$/)[0]||"px";this.convert=function(D){return D/B*this.value};this.convertFrom=function(D){return D/this.value*B};this.toString=function(){return this.value+this.unit}},addClass:function(C,B){var D=C.className;C.className=D+(D&&" ")+B;return C},color:j(function(C){var B={};B.color=C.replace(/^rgba\((.*?),\s*([\d.]+)\)/,function(E,D,F){B.opacity=parseFloat(F);return"rgb("+D+")"});return B}),fontStretch:j(function(B){if(typeof B=="number"){return B}if(/%$/.test(B)){return parseFloat(B)/100}return{"ultra-condensed":0.5,"extra-condensed":0.625,condensed:0.75,"semi-condensed":0.875,"semi-expanded":1.125,expanded:1.25,"extra-expanded":1.5,"ultra-expanded":2}[B]||1}),getStyle:function(C){var B=document.defaultView;if(B&&B.getComputedStyle){return new a(B.getComputedStyle(C,null))}if(C.currentStyle){return new a(C.currentStyle)}return new a(C.style)},gradient:j(function(F){var G={id:F,type:F.match(/^-([a-z]+)-gradient\(/)[1],stops:[]},C=F.substr(F.indexOf("(")).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);for(var E=0,B=C.length,D;E<B;++E){D=C[E].split("=",2).reverse();G.stops.push([D[1]||E/(B-1),D[0]])}return G}),quotedList:j(function(E){var D=[],C=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,B;while(B=C.exec(E)){D.push(B[3]||B[1])}return D}),recognizesMedia:j(function(G){var E=document.createElement("style"),D,C,B;E.type="text/css";E.media=G;try{E.appendChild(document.createTextNode("/**/"))}catch(F){}C=g("head")[0];C.insertBefore(E,C.firstChild);D=(E.sheet||E.styleSheet);B=D&&!D.disabled;C.removeChild(E);return B}),removeClass:function(D,C){var B=RegExp("(?:^|\\s+)"+C+"(?=\\s|$)","g");D.className=D.className.replace(B,"");return D},supports:function(D,C){var B=document.createElement("span").style;if(B[D]===undefined){return false}B[D]=C;return B[D]===C},textAlign:function(E,D,B,C){if(D.get("textAlign")=="right"){if(B>0){E=" "+E}}else{if(B<C-1){E+=" "}}return E},textShadow:j(function(F){if(F=="none"){return null}var E=[],G={},B,C=0;var D=/(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;while(B=D.exec(F)){if(B[0]==","){E.push(G);G={};C=0}else{if(B[1]){G.color=B[1]}else{G[["offX","offY","blur"][C++]]=B[2]}}}E.push(G);return E}),textTransform:(function(){var B={uppercase:function(C){return C.toUpperCase()},lowercase:function(C){return C.toLowerCase()},capitalize:function(C){return C.replace(/\b./g,function(D){return D.toUpperCase()})}};return function(E,D){var C=B[D.get("textTransform")];return C?C(E):E}})(),whiteSpace:(function(){var D={inline:1,"inline-block":1,"run-in":1};var C=/^\s+/,B=/\s+$/;return function(H,F,G,E){if(E){if(E.nodeName.toLowerCase()=="br"){H=H.replace(C,"")}}if(D[F.get("display")]){return H}if(!G.previousSibling){H=H.replace(C,"")}if(!G.nextSibling){H=H.replace(B,"")}return H}})()};n.ready=(function(){var B=!n.recognizesMedia("all"),E=false;var D=[],H=function(){B=true;for(var K;K=D.shift();K()){}};var I=g("link"),J=g("style");function C(K){return K.disabled||G(K.sheet,K.media||"screen")}function G(M,P){if(!n.recognizesMedia(P||"all")){return true}if(!M||M.disabled){return false}try{var Q=M.cssRules,O;if(Q){search:for(var L=0,K=Q.length;O=Q[L],L<K;++L){switch(O.type){case 2:break;case 3:if(!G(O.styleSheet,O.media.mediaText)){return false}break;default:break search}}}}catch(N){}return true}function F(){if(document.createStyleSheet){return true}var L,K;for(K=0;L=I[K];++K){if(L.rel.toLowerCase()=="stylesheet"&&!C(L)){return false}}for(K=0;L=J[K];++K){if(!C(L)){return false}}return true}x.ready(function(){if(!E){E=n.getStyle(document.body).isUsable()}if(B||(E&&F())){H()}else{setTimeout(arguments.callee,10)}});return function(K){if(B){K()}else{D.push(K)}}})();function s(D){var C=this.face=D.face,B={"\u0020":1,"\u00a0":1,"\u3000":1};this.glyphs=D.glyphs;this.w=D.w;this.baseSize=parseInt(C["units-per-em"],10);this.family=C["font-family"].toLowerCase();this.weight=C["font-weight"];this.style=C["font-style"]||"normal";this.viewBox=(function(){var F=C.bbox.split(/\s+/);var E={minX:parseInt(F[0],10),minY:parseInt(F[1],10),maxX:parseInt(F[2],10),maxY:parseInt(F[3],10)};E.width=E.maxX-E.minX;E.height=E.maxY-E.minY;E.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")};return E})();this.ascent=-parseInt(C.ascent,10);this.descent=-parseInt(C.descent,10);this.height=-this.ascent+this.descent;this.spacing=function(L,N,E){var O=this.glyphs,M,K,G,P=[],F=0,J=-1,I=-1,H;while(H=L[++J]){M=O[H]||this.missingGlyph;if(!M){continue}if(K){F-=G=K[H]||0;P[I]-=G}F+=P[++I]=~~(M.w||this.w)+N+(B[H]?E:0);K=M.k}P.total=F;return P}}function f(){var C={},B={oblique:"italic",italic:"oblique"};this.add=function(D){(C[D.style]||(C[D.style]={}))[D.weight]=D};this.get=function(H,I){var G=C[H]||C[B[H]]||C.normal||C.italic||C.oblique;if(!G){return null}I={normal:400,bold:700}[I]||parseInt(I,10);if(G[I]){return G[I]}var E={1:1,99:0}[I%100],K=[],F,D;if(E===undefined){E=I>400}if(I==500){I=400}for(var J in G){if(!k(G,J)){continue}J=parseInt(J,10);if(!F||J<F){F=J}if(!D||J>D){D=J}K.push(J)}if(I<F){I=F}if(I>D){I=D}K.sort(function(M,L){return(E?(M>=I&&L>=I)?M<L:M>L:(M<=I&&L<=I)?M>L:M<L)?-1:1});return G[K[0]]}}function r(){function D(F,G){if(F.contains){return F.contains(G)}return F.compareDocumentPosition(G)&16}function B(G){var F=G.relatedTarget;if(!F||D(this,F)){return}C(this,G.type=="mouseover")}function E(F){C(this,F.type=="mouseenter")}function C(F,G){setTimeout(function(){var H=d.get(F).options;m.replace(F,G?h(H,H.hover):H,true)},10)}this.attach=function(F){if(F.onmouseenter===undefined){q(F,"mouseover",B);q(F,"mouseout",B)}else{q(F,"mouseenter",E);q(F,"mouseleave",E)}}}function u(){var C=[],D={};function B(H){var E=[],G;for(var F=0;G=H[F];++F){E[F]=C[D[G]]}return E}this.add=function(F,E){D[F]=C.push(E)-1};this.repeat=function(){var E=arguments.length?B(arguments):C,F;for(var G=0;F=E[G++];){m.replace(F[0],F[1],true)}}}function A(){var D={},B=0;function C(E){return E.cufid||(E.cufid=++B)}this.get=function(E){var F=C(E);return D[F]||(D[F]={})}}function a(B){var D={},C={};this.extend=function(E){for(var F in E){if(k(E,F)){D[F]=E[F]}}return this};this.get=function(E){return D[E]!=undefined?D[E]:B[E]};this.getSize=function(F,E){return C[F]||(C[F]=new n.Size(this.get(F),E))};this.isUsable=function(){return !!B}}function q(C,B,D){if(C.addEventListener){C.addEventListener(B,D,false)}else{if(C.attachEvent){C.attachEvent("on"+B,function(){return D.call(C,window.event)})}}}function v(C,B){var D=d.get(C);if(D.options){return C}if(B.hover&&B.hoverables[C.nodeName.toLowerCase()]){b.attach(C)}D.options=B;return C}function j(B){var C={};return function(D){if(!k(C,D)){C[D]=B.apply(null,arguments)}return C[D]}}function c(F,E){var B=n.quotedList(E.get("fontFamily").toLowerCase()),D;for(var C=0;D=B[C];++C){if(i[D]){return i[D].get(E.get("fontStyle"),E.get("fontWeight"))}}return null}function g(B){return document.getElementsByTagName(B)}function k(C,B){return C.hasOwnProperty(B)}function h(){var C={},B,F;for(var E=0,D=arguments.length;B=arguments[E],E<D;++E){for(F in B){if(k(B,F)){C[F]=B[F]}}}return C}function o(E,M,C,N,F,D){var K=document.createDocumentFragment(),H;if(M===""){return K}var L=N.separate;var I=M.split(p[L]),B=(L=="words");if(B&&t){if(/^\s/.test(M)){I.unshift("")}if(/\s$/.test(M)){I.push("")}}for(var J=0,G=I.length;J<G;++J){H=z[N.engine](E,B?n.textAlign(I[J],C,J,G):I[J],C,N,F,D,J<G-1);if(H){K.appendChild(H)}}return K}function l(D,M){var C=D.nodeName.toLowerCase();if(M.ignore[C]){return}var E=!M.textless[C];var B=n.getStyle(v(D,M)).extend(M);var F=c(D,B),G,K,I,H,L,J;if(!F){return}for(G=D.firstChild;G;G=I){K=G.nodeType;I=G.nextSibling;if(E&&K==3){if(H){H.appendData(G.data);D.removeChild(G)}else{H=G}if(I){continue}}if(H){D.replaceChild(o(F,n.whiteSpace(H.data,B,H,J),B,M,G,D),H);H=null}if(K==1){if(G.firstChild){if(G.nodeName.toLowerCase()=="cufon"){z[M.engine](F,null,B,M,G,D)}else{arguments.callee(G,M)}}J=G}}}var t=" ".split(/\s+/).length==0;var d=new A();var b=new r();var y=new u();var e=false;var z={},i={},w={autoDetect:false,engine:null,forceHitArea:false,hover:false,hoverables:{a:true},ignore:{applet:1,canvas:1,col:1,colgroup:1,head:1,iframe:1,map:1,optgroup:1,option:1,script:1,select:1,style:1,textarea:1,title:1,pre:1},printable:true,selector:(window.Sizzle||(window.jQuery&&function(B){return jQuery(B)})||(window.dojo&&dojo.query)||(window.Ext&&Ext.query)||(window.YAHOO&&YAHOO.util&&YAHOO.util.Selector&&YAHOO.util.Selector.query)||(window.$$&&function(B){return $$(B)})||(window.$&&function(B){return $(B)})||(document.querySelectorAll&&function(B){return document.querySelectorAll(B)})||g),separate:"words",textless:{dl:1,html:1,ol:1,table:1,tbody:1,thead:1,tfoot:1,tr:1,ul:1},textShadow:"none"};var p={words:/\s/.test("\u00a0")?/[^\S\u00a0]+/:/\s+/,characters:"",none:/^/};m.now=function(){x.ready();return m};m.refresh=function(){y.repeat.apply(y,arguments);return m};m.registerEngine=function(C,B){if(!B){return m}z[C]=B;return m.set("engine",C)};m.registerFont=function(D){if(!D){return m}var B=new s(D),C=B.family;if(!i[C]){i[C]=new f()}i[C].add(B);return m.set("fontFamily",'"'+C+'"')};m.replace=function(D,C,B){C=h(w,C);if(!C.engine){return m}if(!e){n.addClass(x.root(),"cufon-active cufon-loading");n.ready(function(){n.addClass(n.removeClass(x.root(),"cufon-loading"),"cufon-ready")});e=true}if(C.hover){C.forceHitArea=true}if(C.autoDetect){delete C.fontFamily}if(typeof C.textShadow=="string"){C.textShadow=n.textShadow(C.textShadow)}if(typeof C.color=="string"&&/^-/.test(C.color)){C.textGradient=n.gradient(C.color)}else{delete C.textGradient}if(!B){y.add(D,arguments)}if(D.nodeType||typeof D=="string"){D=[D]}n.ready(function(){for(var F=0,E=D.length;F<E;++F){var G=D[F];if(typeof G=="string"){m.replace(C.selector(G),C,true)}else{l(G,C)}}});return m};m.set=function(B,C){w[B]=C;return m};return m})();Cufon.registerEngine("canvas",(function(){var b=document.createElement("canvas");if(!b||!b.getContext||!b.getContext.apply){return}b=null;var a=Cufon.CSS.supports("display","inline-block");var e=!a&&(document.compatMode=="BackCompat"||/frameset|transitional/i.test(document.doctype.publicId));var f=document.createElement("style");f.type="text/css";f.appendChild(document.createTextNode(("cufon{text-indent:0;}@media screen,projection{cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;"+(e?"":"font-size:1px;line-height:1px;")+"}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}"+(a?"cufon canvas{position:relative;}":"cufon canvas{position:absolute;}")+"}@media print{cufon{padding:0;}cufon canvas{display:none;}}").replace(/;/g,"!important;")));document.getElementsByTagName("head")[0].appendChild(f);function d(p,h){var n=0,m=0;var g=[],o=/([mrvxe])([^a-z]*)/g,k;generate:for(var j=0;k=o.exec(p);++j){var l=k[2].split(",");switch(k[1]){case"v":g[j]={m:"bezierCurveTo",a:[n+~~l[0],m+~~l[1],n+~~l[2],m+~~l[3],n+=~~l[4],m+=~~l[5]]};break;case"r":g[j]={m:"lineTo",a:[n+=~~l[0],m+=~~l[1]]};break;case"m":g[j]={m:"moveTo",a:[n=~~l[0],m=~~l[1]]};break;case"x":g[j]={m:"closePath"};break;case"e":break generate}h[g[j].m].apply(h,g[j].a)}return g}function c(m,k){for(var j=0,h=m.length;j<h;++j){var g=m[j];k[g.m].apply(k,g.a)}}return function(V,w,P,t,C,W){var k=(w===null);if(k){w=C.getAttribute("alt")}var A=V.viewBox;var m=P.getSize("fontSize",V.baseSize);var B=0,O=0,N=0,u=0;var z=t.textShadow,L=[];if(z){for(var U=z.length;U--;){var F=z[U];var K=m.convertFrom(parseFloat(F.offX));var I=m.convertFrom(parseFloat(F.offY));L[U]=[K,I];if(I<B){B=I}if(K>O){O=K}if(I>N){N=I}if(K<u){u=K}}}var Z=Cufon.CSS.textTransform(w,P).split("");var E=V.spacing(Z,~~m.convertFrom(parseFloat(P.get("letterSpacing"))||0),~~m.convertFrom(parseFloat(P.get("wordSpacing"))||0));if(!E.length){return null}var h=E.total;O+=A.width-E[E.length-1];u+=A.minX;var s,n;if(k){s=C;n=C.firstChild}else{s=document.createElement("cufon");s.className="cufon cufon-canvas";s.setAttribute("alt",w);n=document.createElement("canvas");s.appendChild(n);if(t.printable){var S=document.createElement("cufontext");S.appendChild(document.createTextNode(w));s.appendChild(S)}}var aa=s.style;var H=n.style;var j=m.convert(A.height);var Y=Math.ceil(j);var M=Y/j;var G=M*Cufon.CSS.fontStretch(P.get("fontStretch"));var J=h*G;var Q=Math.ceil(m.convert(J+O-u));var o=Math.ceil(m.convert(A.height-B+N));n.width=Q;n.height=o;H.width=Q+"px";H.height=o+"px";B+=A.minY;H.top=Math.round(m.convert(B-V.ascent))+"px";H.left=Math.round(m.convert(u))+"px";var r=Math.max(Math.ceil(m.convert(J)),0)+"px";if(a){aa.width=r;aa.height=m.convert(V.height)+"px"}else{aa.paddingLeft=r;aa.paddingBottom=(m.convert(V.height)-1)+"px"}var X=n.getContext("2d"),D=j/A.height;X.scale(D,D*M);X.translate(-u,-B);X.save();function T(){var x=V.glyphs,ab,l=-1,g=-1,y;X.scale(G,1);while(y=Z[++l]){var ab=x[Z[l]]||V.missingGlyph;if(!ab){continue}if(ab.d){X.beginPath();if(ab.code){c(ab.code,X)}else{ab.code=d("m"+ab.d,X)}X.fill()}X.translate(E[++g],0)}X.restore()}if(z){for(var U=z.length;U--;){var F=z[U];X.save();X.fillStyle=F.color;X.translate.apply(X,L[U]);T()}}var q=t.textGradient;if(q){var v=q.stops,p=X.createLinearGradient(0,A.minY,0,A.maxY);for(var U=0,R=v.length;U<R;++U){p.addColorStop.apply(p,v[U])}X.fillStyle=p}else{X.fillStyle=P.get("color")}T();return s}})());Cufon.registerEngine("vml",(function(){var e=document.namespaces;if(!e){return}e.add("cvml","urn:schemas-microsoft-com:vml");e=null;var b=document.createElement("cvml:shape");b.style.behavior="url(#default#VML)";if(!b.coordsize){return}b=null;var h=(document.documentMode||0)<8;document.write(('<style type="text/css">cufoncanvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}cufoncanvas{position:absolute;text-align:left;}cufon{display:inline-block;position:relative;vertical-align:'+(h?"middle":"text-bottom")+";}cufon cufontext{position:absolute;left:-10000in;font-size:1px;}a cufon{cursor:pointer}}@media print{cufon cufoncanvas{display:none;}}</style>").replace(/;/g,"!important;"));function c(i,j){return a(i,/(?:em|ex|%)$|^[a-z-]+$/i.test(j)?"1em":j)}function a(l,m){if(m==="0"){return 0}if(/px$/i.test(m)){return parseFloat(m)}var k=l.style.left,j=l.runtimeStyle.left;l.runtimeStyle.left=l.currentStyle.left;l.style.left=m.replace("%","em");var i=l.style.pixelLeft;l.style.left=k;l.runtimeStyle.left=j;return i}function f(l,k,j,n){var i="computed"+n,m=k[i];if(isNaN(m)){m=k.get(n);k[i]=m=(m=="normal")?0:~~j.convertFrom(a(l,m))}return m}var g={};function d(p){var q=p.id;if(!g[q]){var n=p.stops,o=document.createElement("cvml:fill"),i=[];o.type="gradient";o.angle=180;o.focus="0";o.method="sigma";o.color=n[0][1];for(var m=1,l=n.length-1;m<l;++m){i.push(n[m][0]*100+"% "+n[m][1])}o.colors=i.join(",");o.color2=n[l][1];g[q]=o}return g[q]}return function(ac,G,Y,C,K,ad,W){var n=(G===null);if(n){G=K.alt}var I=ac.viewBox;var p=Y.computedFontSize||(Y.computedFontSize=new Cufon.CSS.Size(c(ad,Y.get("fontSize"))+"px",ac.baseSize));var y,q;if(n){y=K;q=K.firstChild}else{y=document.createElement("cufon");y.className="cufon cufon-vml";y.alt=G;q=document.createElement("cufoncanvas");y.appendChild(q);if(C.printable){var Z=document.createElement("cufontext");Z.appendChild(document.createTextNode(G));y.appendChild(Z)}if(!W){y.appendChild(document.createElement("cvml:shape"))}}var ai=y.style;var R=q.style;var l=p.convert(I.height),af=Math.ceil(l);var V=af/l;var P=V*Cufon.CSS.fontStretch(Y.get("fontStretch"));var U=I.minX,T=I.minY;R.height=af;R.top=Math.round(p.convert(T-ac.ascent));R.left=Math.round(p.convert(U));ai.height=p.convert(ac.height)+"px";var F=Y.get("color");var ag=Cufon.CSS.textTransform(G,Y).split("");var L=ac.spacing(ag,f(ad,Y,p,"letterSpacing"),f(ad,Y,p,"wordSpacing"));if(!L.length){return null}var k=L.total;var x=-U+k+(I.width-L[L.length-1]);var ah=p.convert(x*P),X=Math.round(ah);var O=x+","+I.height,m;var J="r"+O+"ns";var u=C.textGradient&&d(C.textGradient);var o=ac.glyphs,S=0;var H=C.textShadow;var ab=-1,aa=0,w;while(w=ag[++ab]){var D=o[ag[ab]]||ac.missingGlyph,v;if(!D){continue}if(n){v=q.childNodes[aa];while(v.firstChild){v.removeChild(v.firstChild)}}else{v=document.createElement("cvml:shape");q.appendChild(v)}v.stroked="f";v.coordsize=O;v.coordorigin=m=(U-S)+","+T;v.path=(D.d?"m"+D.d+"xe":"")+"m"+m+J;v.fillcolor=F;if(u){v.appendChild(u.cloneNode(false))}var ae=v.style;ae.width=X;ae.height=af;if(H){var s=H[0],r=H[1];var B=Cufon.CSS.color(s.color),z;var N=document.createElement("cvml:shadow");N.on="t";N.color=B.color;N.offset=s.offX+","+s.offY;if(r){z=Cufon.CSS.color(r.color);N.type="double";N.color2=z.color;N.offset2=r.offX+","+r.offY}N.opacity=B.opacity||(z&&z.opacity)||1;v.appendChild(N)}S+=L[aa++]}var M=v.nextSibling,t,A;if(C.forceHitArea){if(!M){M=document.createElement("cvml:rect");M.stroked="f";M.className="cufon-vml-cover";t=document.createElement("cvml:fill");t.opacity=0;M.appendChild(t);q.appendChild(M)}A=M.style;A.width=X;A.height=af}else{if(M){q.removeChild(M)}}ai.width=Math.max(Math.ceil(p.convert(k*P)),0);if(h){var Q=Y.computedYAdjust;if(Q===undefined){var E=Y.get("lineHeight");if(E=="normal"){E="1em"}else{if(!isNaN(E)){E+="em"}}Y.computedYAdjust=Q=0.5*(a(ad,E)-parseFloat(ai.height))}if(Q){ai.marginTop=Math.ceil(Q)+"px";ai.marginBottom=Q+"px"}}return y}})());




/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Copyright (C) 2007
 * 
 * Trademark:
 * Sentinel is a trademark of Serif, which may be registered in
 * certain jurisdictions.
 * 
 * Full name:
 * Serif-Book
 * 
 * Manufacturer:
 * Serif 325
 * 
 * Designer:
 * Serif
 * 
 * Vendor URL:
 * www.serif20109.com
 * 
 * License information:
 * http://www.serif20109.com
 */
Cufon.registerFont({"w":255,"face":{"font-family":"Serif Book","font-weight":325,"font-stretch":"normal","units-per-em":"360","panose-1":"0 0 0 0 0 0 0 0 0 0","ascent":"288","descent":"-72","x-height":"3","bbox":"-17.7483 -261 354 73","underline-thickness":"18","underline-position":"-18","stemh":"19","stemv":"28","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":64},"A":{"d":"181,-19r-23,-66r-87,0r-25,66r31,0r0,19r-78,0r0,-19r25,0r85,-218r26,0r80,218r30,0r0,19r-101,0r0,-19r37,0xm116,-201v-15,31,-25,67,-39,99r75,0","w":241},"B":{"d":"12,0r0,-19r39,0r0,-197r-39,0r0,-19r104,0v70,0,87,27,87,57v0,20,-16,45,-59,55v47,4,70,27,70,56v0,34,-20,67,-98,67r-104,0xm82,-132v47,3,93,-4,88,-45v7,-37,-44,-42,-88,-39r0,84xm82,-19v53,2,106,-2,99,-50v5,-38,-48,-50,-99,-46r0,96","w":226,"k":{"\/":-4,"&":-3,"X":1,"V":5,"Q":-1,"C":-1,"G":-1,"O":-1,"S":-2,"T":1,"W":4,"Y":6,"-":-14}},"C":{"d":"126,6v-65,0,-109,-52,-109,-124v0,-100,114,-160,177,-94r7,-27r18,0r0,89r-16,0v-15,-44,-38,-71,-76,-71v-44,0,-76,35,-76,101v0,68,32,105,80,105v42,0,69,-32,75,-77r20,0v-7,62,-45,98,-100,98","w":243,"k":{"J":1,"X":2,"q":2,"\/":1,"v":3,"x":3,"T":4,"Y":1,"-":-11,"A":5,",":9,".":9,"a":5,"c":2,"d":2,"e":2,"g":6,"o":2,"s":4,"u":2,"w":3,"y":3,"z":2}},"D":{"d":"12,0r0,-19r39,0r0,-197r-39,0r0,-19r97,0v86,0,128,46,128,114v0,67,-38,121,-126,121r-99,0xm82,-19v80,5,121,-19,121,-102v0,-72,-41,-101,-121,-95r0,197","w":253,"k":{"J":6,"V":8,"X":8,"&":4,"\/":8,"T":4,"W":6,"Y":12,"-":-11,"A":6,"Z":3,",":12,".":12,"g":2}},"E":{"d":"12,0r0,-19r39,0r0,-197r-39,0r0,-19r200,0r0,74r-14,0v-10,-46,-12,-55,-35,-55r-81,0r0,87v38,-2,64,12,65,-36r15,0r0,90r-15,0v-2,-51,-26,-35,-65,-38r0,94r80,0v26,0,30,-9,40,-62r14,0r0,81r-204,0","w":236,"k":{"X":-1,"?":4,"\/":7,"v":4,"T":3,"Y":1,"-":-11,"w":4,"y":4}},"F":{"d":"12,0r0,-19r39,0r0,-197r-39,0r0,-19r201,0r0,75r-14,0v-9,-85,-51,-48,-117,-56r0,91v37,-3,60,13,62,-36r15,0r0,92r-15,0v-2,-50,-23,-37,-62,-39r0,89r44,0r0,19r-114,0","w":228,"k":{"@":8,"\/":31,"&":21,"x":9,"v":10,"q":20,"p":14,"m":14,"j":7,"X":4,"V":4,"Q":5,"J":38,"C":5,"G":5,"O":5,"S":5,"W":4,"Y":4,"-":15,"A":24,"Z":5,":":11,";":11,",":35,".":35,"a":23,"c":20,"d":20,"e":20,"f":8,"g":22,"i":7,"n":14,"o":20,"r":14,"s":19,"t":8,"u":15,"w":10,"y":10,"z":14}},"G":{"d":"129,-15v45,0,62,-35,60,-82r-44,0r0,-19r107,0r0,19r-32,0r0,100r-18,0r-10,-34v-14,24,-39,37,-67,37v-66,0,-108,-55,-108,-124v0,-96,109,-161,174,-94r7,-27r19,0r0,87r-17,0v-14,-43,-39,-69,-74,-69v-46,0,-75,37,-75,101v0,66,29,105,78,105","k":{"V":4,"X":1,"?":7,"\/":1,"T":7,"W":3,"Y":5,"-":-14,"A":1,",":11,".":11,"a":1}},"H":{"d":"12,0r0,-19r39,0r0,-197r-39,0r0,-19r105,0r0,19r-35,0r0,86r114,0r0,-86r-35,0r0,-19r105,0r0,19r-40,0r0,197r40,0r0,19r-105,0r0,-19r35,0r0,-94r-114,0r0,94r35,0r0,19r-105,0","w":277,"k":{"q":1,"v":1,"a":2,"c":1,"d":1,"e":1,"g":2,"o":1,"w":1,"y":1}},"I":{"d":"14,0r0,-19r40,0r0,-197r-40,0r0,-19r110,0r0,19r-40,0r0,197r40,0r0,19r-110,0","w":138,"k":{"q":1,"v":1,"a":2,"c":1,"d":1,"e":1,"g":2,"o":1,"w":1,"y":1}},"J":{"d":"78,6v-41,0,-67,-25,-67,-54v0,-34,47,-38,47,-5v0,10,-6,18,-17,21v17,31,77,24,77,-28r0,-156r-39,0r0,-19r105,0r0,19r-36,0r0,151v0,45,-28,71,-70,71","w":190,"k":{"\/":11,"&":6,"x":3,"v":3,"q":2,"p":2,"m":2,"j":2,"X":2,"J":13,"-":-4,"A":10,",":17,".":17,"a":5,"c":2,"d":2,"e":2,"f":5,"g":5,"i":2,"n":2,"o":2,"r":2,"s":3,"u":2,"w":3,"y":3,"z":3}},"K":{"d":"82,-82r0,63r35,0r0,19r-105,0r0,-19r39,0r0,-197r-39,0r0,-19r105,0r0,19r-35,0r0,109r107,-109r-32,0r0,-19r90,0r0,19r-30,0r-80,78r89,119r29,0r0,19r-99,0r0,-19r32,0r-71,-98","w":258,"k":{"J":7,"Q":10,"V":12,"&":7,"q":10,"\/":-7,"v":17,"@":6,"m":4,"p":7,"C":10,"G":10,"O":10,"T":6,"W":13,"Y":12,"-":10,"A":5,"a":4,"c":10,"d":10,"e":10,"f":3,"g":5,"n":4,"o":10,"r":4,"s":1,"t":10,"u":12,"w":17,"y":14,"U":8}},"L":{"d":"12,-235r112,0r0,19r-42,0r0,197r71,0v21,0,25,-11,38,-69r14,0r0,88r-193,0r0,-19r39,0r0,-197r-39,0r0,-19","w":218,"k":{"V":26,"*":36,"?":13,"\/":-4,"v":5,"T":26,"W":20,"Y":29,"u":3,"w":5,"y":1,"U":9}},"M":{"d":"12,0r0,-19r38,0r0,-197r-38,0r0,-19r88,0r68,184r68,-184r86,0r0,19r-39,0r0,197r39,0r0,19r-101,0r0,-19r31,0r0,-196r-2,0r-82,215r-13,0r-82,-215r-2,0r0,196r33,0r0,19r-92,0","w":334,"k":{"v":1,"q":1,"a":2,"c":1,"d":1,"e":1,"g":2,"o":1,"w":1,"y":1}},"N":{"d":"212,6r-141,-203r0,178r36,0r0,19r-95,0r0,-19r38,0r0,-197r-38,0r0,-19r71,0r126,182r2,0r0,-163r-37,0r0,-19r93,0r0,19r-35,0r0,222r-20,0","w":276,"k":{"J":10,"&":4,"q":5,"\/":16,"v":3,"x":1,"m":1,"p":1,"-":-4,",":15,".":15,"a":5,"c":5,"d":5,"e":5,"g":5,"n":1,"o":5,"r":1,"s":3,"t":1,"u":1,"w":3,"y":3,"z":1}},"O":{"d":"128,6v-62,0,-111,-51,-111,-123v0,-71,51,-123,111,-123v62,0,111,50,111,123v0,71,-51,123,-111,123xm128,-13v48,0,77,-40,77,-104v0,-63,-29,-104,-77,-104v-48,0,-77,41,-77,104v0,63,29,104,77,104","k":{"J":6,"V":6,"X":8,"\/":6,"T":4,"W":5,"Y":12,"-":-11,"A":5,"Z":2,",":10,".":10,"a":2,"g":2}},"P":{"d":"12,0r0,-19r39,0r0,-197r-39,0r0,-19r102,0v72,0,94,32,94,67v0,47,-52,79,-126,71r0,78r44,0r0,19r-114,0xm82,-115v53,5,97,-10,92,-53v6,-39,-42,-53,-92,-48r0,101","w":219,"k":{"\/":28,"&":13,"q":11,"X":5,"V":2,"Q":-1,"J":33,"C":-1,"G":-1,"O":-1,"T":-1,"W":2,"Y":4,"-":8,"A":15,"Z":1,",":33,".":33,"a":12,"c":11,"d":11,"e":11,"g":13,"o":11,"s":11,"z":5}},"Q":{"d":"171,-4v-78,34,-155,-26,-154,-113v0,-71,51,-123,111,-123v62,0,111,50,111,123v0,42,-18,78,-46,100v22,41,48,42,57,-4r17,0v-3,35,-16,59,-45,59v-24,0,-38,-15,-51,-42xm76,-37v0,-25,16,-48,47,-48v26,0,43,20,59,47v14,-18,23,-45,23,-79v0,-63,-29,-104,-77,-104v-78,0,-99,135,-52,184xm92,-39v-6,28,51,32,71,17v-12,-25,-24,-44,-44,-44v-17,0,-27,12,-27,27","k":{"}":-7,"]":-7,")":-7,"\/":-24,"!":-2,"&":-4,"x":-1,"j":-6,"V":6,"J":1,"S":-2,"T":4,"W":5,"Y":12,"-":-11,"A":-1,":":-11,";":-11,",":-12,".":-12,"g":-3,"s":-2,"y":-2,"z":-1}},"R":{"d":"82,-105r0,86r39,0r0,19r-109,0r0,-19r39,0r0,-197r-39,0r0,-19r114,0v62,0,86,28,86,61v0,26,-19,48,-56,60v45,10,45,37,48,81v1,24,24,19,30,-1r12,6v-11,42,-75,49,-75,-10v0,-41,3,-70,-45,-67r-44,0xm82,-123v51,4,101,-3,95,-51v6,-46,-49,-43,-95,-42r0,93","w":243,"k":{"V":8,"q":1,"?":4,"\/":-13,"T":6,"W":6,"Y":9,"-":-1,"c":1,"e":1,"o":1,"U":4}},"S":{"d":"51,-182v0,72,140,31,140,116v0,74,-106,94,-146,43r-8,28r-17,0r0,-82r16,0v23,46,45,65,80,65v28,0,47,-15,47,-43v0,-70,-140,-33,-140,-118v0,-65,95,-89,132,-41r7,-25r18,0r0,77r-16,0v-18,-46,-44,-61,-71,-61v-24,0,-42,15,-42,41","w":205,"k":{"J":3,"Q":-3,"V":3,"\/":-3,"v":3,"x":1,"C":-3,"G":-3,"O":-3,"T":2,"W":1,"Y":4,"-":-15,"w":3,"y":1}},"T":{"d":"64,0r0,-19r41,0r0,-199v-55,0,-61,-6,-75,65r-13,0r0,-82r208,0r0,82r-14,0v-15,-70,-19,-66,-75,-65r0,199r41,0r0,19r-113,0","w":241,"k":{"J":30,"Q":4,"V":1,"X":2,"&":20,"q":19,"\/":23,"v":11,"x":9,"@":2,"m":10,"p":10,"j":6,"C":4,"G":4,"O":4,"S":3,"W":1,"Y":1,"-":19,"A":17,"Z":4,":":7,";":7,",":29,".":29,"a":19,"c":19,"d":19,"e":19,"f":8,"g":21,"i":6,"n":10,"o":19,"r":10,"s":17,"t":6,"u":10,"w":13,"y":13,"z":11}},"U":{"d":"140,-15v89,0,58,-118,63,-201r-37,0r0,-19r91,0r0,19r-33,0r0,142v0,44,-32,80,-93,80v-60,0,-89,-32,-89,-77r0,-145r-34,0r0,-19r101,0r0,19r-36,0v6,83,-30,201,67,201","w":264,"k":{"J":13,"X":2,"&":9,"q":5,"?":-1,"\/":15,"v":4,"x":5,"m":3,"p":3,"j":2,"S":1,"-":-2,"A":12,",":17,".":17,"a":7,"c":5,"d":5,"e":5,"f":2,"g":7,"i":2,"n":3,"o":5,"r":3,"s":5,"t":1,"u":3,"w":4,"y":5,"z":5}},"V":{"d":"111,1r-82,-217r-30,0r0,-19r100,0r0,19r-37,0r65,180r2,0r69,-180r-31,0r0,-19r79,0r0,19r-26,0r-86,217r-23,0","w":244,"k":{"*":-5,"@":4,"}":-17,"]":-17,")":-17,"\/":26,"?":-4,"&":17,"x":12,"v":10,"q":18,"p":18,"m":18,"j":1,"X":3,"V":3,"Q":6,"J":25,"C":6,"G":6,"O":6,"T":1,"W":3,"Y":8,"-":19,"A":23,"Z":1,":":20,";":20,",":39,".":39,"a":18,"c":18,"d":18,"e":18,"f":6,"g":23,"i":1,"n":18,"o":18,"r":18,"s":19,"t":5,"u":17,"w":10,"y":10,"z":17}},"W":{"d":"235,-216r-38,0r51,177r2,0r57,-177r-31,0r0,-19r78,0r0,19r-25,0r-73,217r-26,0r-50,-167r-57,167r-25,0r-68,-217r-31,0r0,-19r100,0r0,19r-37,0r54,177r2,0r53,-157r-6,-20r-30,0r0,-19r100,0r0,19","w":354,"k":{"J":22,"Q":4,"V":1,"X":3,"&":16,"*":-5,"q":17,"?":-7,"\/":21,"v":10,"x":11,"@":4,"m":16,"p":16,"j":1,"}":-17,"]":-17,")":-17,"C":4,"G":4,"O":4,"T":1,"W":1,"Y":5,"-":14,"A":19,":":15,";":15,",":34,".":34,"a":20,"c":17,"d":17,"e":17,"f":5,"g":22,"i":1,"n":13,"o":17,"r":16,"s":17,"t":4,"u":15,"w":8,"y":10,"z":15}},"X":{"d":"146,-216r0,-19r88,0r0,19r-29,0r-67,93r69,104r32,0r0,19r-100,0r0,-19r33,0r-55,-84r-60,84r34,0r0,19r-87,0r0,-19r29,0r71,-99r-66,-98r-32,0r0,-19r100,0r0,19r-32,0r51,79r55,-79r-34,0","w":241,"k":{"}":-11,"]":-11,")":-11,"\/":-7,"&":7,"v":9,"q":6,"p":4,"m":2,"V":10,"Q":7,"J":4,"C":8,"G":8,"O":8,"T":2,"W":4,"Y":7,"-":8,"A":6,"a":3,"c":6,"d":6,"e":6,"f":1,"g":2,"n":2,"o":6,"r":2,"t":5,"u":8,"w":9,"y":9,"U":4}},"Y":{"d":"122,-118r58,-98r-31,0r0,-19r80,0r0,19r-28,0r-71,117r0,80r36,0r0,19r-103,0r0,-19r36,0r0,-80r-67,-117r-30,0r0,-19r98,0r0,19r-32,0","w":229,"k":{"J":24,"Q":10,"V":9,"X":8,"&":18,"q":23,"?":-6,"\/":29,"v":20,"x":16,"@":9,"m":23,"p":21,"j":4,"}":-15,"]":-15,")":-15,"C":10,"G":10,"O":10,"S":3,"T":1,"W":8,"Y":10,"-":20,"A":20,":":17,";":17,",":24,".":24,"a":23,"c":23,"d":23,"e":23,"f":9,"g":26,"i":4,"n":23,"o":23,"r":23,"s":21,"t":7,"u":21,"w":19,"y":20,"z":18}},"Z":{"d":"14,0r0,-13r150,-203r-90,0v-21,0,-25,4,-38,62r-15,0r0,-81r182,0r0,13r-149,203r98,0v21,0,25,-6,38,-64r14,0r0,83r-190,0","w":219,"k":{"J":2,"V":4,"\/":-4,"v":3,"T":3,"W":4,"Y":4,"-":-8,"Z":2,"t":1,"w":3,"y":1}},"a":{"d":"118,-28v-19,39,-105,44,-101,-12v2,-37,29,-44,72,-51v32,-5,24,-3,26,-26v3,-38,-44,-38,-65,-23v16,7,13,36,-9,35v-12,0,-19,-9,-19,-20v0,-23,31,-40,64,-40v73,0,55,70,57,134v1,22,21,16,25,0r11,6v-10,34,-59,40,-61,-3xm115,-83v-30,5,-76,11,-68,38v0,18,9,28,28,28v32,-1,46,-28,40,-66","w":173,"k":{"?":7,"\/":-13,"v":5,",":-2,".":-2,"t":1,"w":5,"y":3}},"b":{"d":"103,-16v24,0,41,-24,41,-66v0,-41,-17,-64,-41,-64v-26,0,-47,29,-47,69v0,40,23,61,47,61xm174,-82v0,44,-22,85,-66,85v-24,0,-44,-15,-54,-37r-10,36r-15,0r0,-230r-27,0r0,-19r55,0r0,120v13,-24,33,-38,55,-38v45,1,61,37,62,83","w":189,"k":{"?":10,"\/":-4,"v":2,"x":2,",":6,".":6,"w":2,"y":1,"z":1,"b":1}},"c":{"d":"89,3v-45,0,-75,-34,-75,-81v0,-51,33,-87,82,-87v35,0,61,25,61,46v0,14,-8,25,-21,25v-23,0,-25,-33,-6,-39v-29,-36,-86,-9,-86,52v0,73,82,89,100,28r15,0v-9,36,-35,56,-70,56","w":169,"k":{"?":4,"\/":-9,"a":3}},"d":{"d":"15,-79v0,-44,22,-86,67,-86v22,0,40,12,50,31r0,-94r-27,0r0,-19r55,0r0,228r26,0r0,19r-53,0r0,-35v-13,26,-33,38,-55,38v-43,-1,-63,-39,-63,-82xm87,-16v25,0,46,-27,46,-68v0,-37,-18,-62,-44,-62v-26,0,-43,24,-43,65v0,41,18,65,41,65","w":192,"k":{"\/":-13,"w":1}},"e":{"d":"158,-80r-114,0v-3,69,74,87,98,32r15,0v-10,33,-34,51,-67,51v-47,0,-76,-34,-76,-82v0,-49,34,-86,77,-86v47,0,68,42,67,85xm89,-149v-24,0,-40,18,-44,54r84,0v-3,-34,-15,-54,-40,-54","w":171,"k":{"?":8,"\/":-9,"v":2,"x":2,"w":2,"y":2,"z":1,"b":1}},"f":{"d":"13,0r0,-19r26,0r0,-124r-33,0r0,-18r33,0v-4,-60,30,-88,66,-88v26,0,46,12,46,31v0,11,-8,20,-18,20v-20,0,-23,-23,-13,-32v-35,-19,-57,11,-53,69r48,0r0,18r-48,0r0,124r38,0r0,19r-92,0","w":120,"k":{"*":-30,"q":2,"?":-37,"\/":-13,"v":1,"@":-4,"j":1,"}":-43,"]":-43,")":-43,"!":-22,"-":2,",":3,".":3,"a":3,"c":2,"d":2,"e":2,"i":1,"o":2,"w":1,"y":1}},"g":{"d":"120,-154v55,37,12,111,-60,94v-12,0,-19,6,-19,14v0,20,47,14,71,15v33,0,48,14,48,36v0,29,-30,53,-82,53v-72,0,-93,-54,-35,-70v-37,-12,-33,-46,4,-55v-51,-22,-25,-98,35,-98v9,0,19,3,27,6v11,-19,25,-33,43,-33v24,0,28,35,5,36v-10,0,-15,-7,-14,-18v-6,0,-17,7,-23,20xm84,-73v21,0,32,-14,32,-39v0,-22,-13,-39,-35,-39v-21,0,-33,12,-33,39v0,26,15,39,36,39xm80,43v33,0,55,-13,55,-31v0,-27,-40,-19,-66,-20v-22,0,-34,9,-34,26v0,14,13,25,45,25","w":168,"k":{"q":2,"?":-17,"\/":-13,"v":4,"x":1,"j":-3,"}":-13,"]":-13,")":-13,":":-1,";":-1,"a":2,"c":1,"d":2,"e":1,"o":1,"s":1,"w":4,"y":2}},"h":{"d":"140,-19v-4,-46,17,-123,-30,-123v-24,0,-47,27,-47,53r0,70r24,0r0,19r-79,0r0,-19r27,0r0,-209r-27,0r0,-19r55,0r0,126v19,-33,39,-44,60,-44v60,-2,42,88,44,146r27,0r0,19r-79,0r0,-19r25,0","w":200,"k":{"?":3,"\/":-13,"v":5,"t":2,"w":5,"y":4,"b":1}},"i":{"d":"55,-199v-12,0,-20,-7,-20,-20v0,-12,8,-21,20,-21v11,0,20,9,20,21v0,12,-9,20,-20,20xm13,0r0,-19r31,0r0,-124r-31,0r0,-19r58,0r0,143r31,0r0,19r-89,0","w":108,"k":{"\/":-13}},"j":{"d":"56,-199v-12,0,-20,-7,-20,-20v0,-12,8,-21,20,-21v11,0,20,9,20,21v0,12,-8,20,-20,20xm19,59v-36,2,-52,-45,-18,-49v19,-2,22,22,12,31v19,9,31,-3,31,-33r0,-151r-30,0r0,-19r58,0v-8,80,30,217,-53,221","w":101,"k":{"q":-1,"\/":-13,",":9,".":9}},"k":{"d":"152,-143r-44,45r56,79r20,0r0,19r-73,0r0,-18r21,0r-43,-63r-26,27r0,35r22,0r0,19r-77,0r0,-19r27,0r0,-209r-27,0r0,-19r55,0r0,173r66,-70r-27,0r0,-18r74,0r0,19r-24,0","w":187,"k":{"&":5,"q":4,"\/":-13,"v":9,"-":7,"a":4,"c":4,"d":4,"e":4,"g":3,"o":4,"s":1,"t":4,"u":8,"w":8,"y":9}},"l":{"d":"6,0r0,-19r31,0r0,-209r-31,0r0,-19r59,0r0,228r30,0r0,19r-89,0","w":102,"k":{"\/":-13,"w":1}},"m":{"d":"140,-19v-6,-45,19,-122,-28,-122v-23,0,-45,26,-45,52r0,70r23,0r0,19r-78,0r0,-19r27,0r0,-124r-27,0r0,-19r55,0r0,42v19,-33,39,-45,59,-45v25,0,40,14,42,43v19,-32,40,-43,60,-43v59,-2,39,89,42,146r27,0r0,19r-78,0r0,-19r23,0v-5,-45,18,-121,-29,-122v-23,0,-45,26,-45,52r0,70r24,0r0,19r-74,0r0,-19r22,0","w":302,"k":{"\/":-13,"?":3,"v":5,"t":2,"w":5,"y":4,"b":1}},"n":{"d":"144,-19v-5,-46,17,-121,-30,-123v-24,0,-47,27,-47,53r0,70r25,0r0,19r-80,0r0,-19r27,0r0,-124r-27,0r0,-19r55,0r0,42v19,-33,40,-45,61,-45v60,-2,42,88,44,146r27,0r0,19r-80,0r0,-19r25,0","w":204,"k":{"?":3,"\/":-13,"v":5,"t":2,"w":5,"y":4,"b":1}},"o":{"d":"92,3v-46,0,-78,-33,-78,-83v0,-50,34,-85,78,-85v46,0,78,33,78,83v0,50,-34,85,-78,85xm94,-13v27,0,46,-21,46,-68v0,-47,-22,-68,-49,-68v-27,0,-47,21,-47,68v0,47,23,68,50,68","w":184,"k":{"?":12,"\/":-4,"v":4,"x":3,",":5,".":5,"w":4,"y":2,"z":3,"b":1}},"p":{"d":"107,-19v25,0,41,-23,41,-66v0,-44,-18,-61,-40,-61v-24,0,-46,28,-46,66v0,35,18,61,45,61xm179,-84v-1,44,-22,83,-65,84v-24,0,-42,-15,-51,-33r0,68r35,0r0,19r-90,0r0,-19r27,0r0,-178r-27,0r0,-19r54,0r0,38v13,-28,33,-41,55,-41v43,0,62,38,62,81","w":194,"k":{"\/":-4,"?":10,"x":2,"v":2,",":6,".":6,"w":2,"y":1,"z":1,"b":1}},"q":{"d":"88,-146v-26,0,-42,23,-42,65v0,45,19,62,41,62v24,0,45,-26,45,-65v0,-36,-18,-62,-44,-62xm15,-81v0,-42,24,-84,66,-84v24,0,44,15,54,37r10,-35r15,0r0,198r27,0r0,19r-90,0r0,-19r35,0r0,-73v-12,26,-31,38,-54,38v-42,0,-64,-38,-63,-81","w":187,"k":{"}":-11,"]":-11,")":-11,"\/":-31,"j":-1,".":3}},"r":{"d":"12,0r0,-19r27,0r0,-124r-27,0r0,-19r55,0r0,38v10,-27,30,-40,49,-40v32,0,34,46,6,46v-13,1,-22,-12,-18,-26v-18,-2,-32,21,-37,38r0,87r32,0r0,19r-87,0","w":145,"k":{"&":8,"q":3,"\/":8,",":19,".":19,"a":5,"c":3,"d":3,"e":3,"g":2,"o":3,"s":3}},"s":{"d":"16,3r0,-61r17,0v9,28,27,46,53,46v20,0,32,-10,32,-25v0,-16,-12,-23,-44,-32v-40,-11,-55,-24,-55,-49v0,-44,75,-65,97,-27r4,-20r15,0r0,56r-15,0v-11,-26,-23,-41,-47,-41v-15,0,-29,8,-29,23v0,15,13,24,43,32v40,11,56,22,56,49v0,46,-83,67,-107,27r-4,22r-16,0","w":155,"k":{"q":1,"\/":-9,"v":2,"x":1,",":5,".":5,"a":1,"c":1,"d":1,"e":1,"o":1,"s":1,"w":2,"y":1}},"t":{"d":"35,-204r28,-4r0,47r53,0r0,18r-53,0r0,102v4,37,40,30,48,-4r12,5v-10,60,-89,56,-88,-1r0,-102r-32,0r0,-18r32,0r0,-43","w":126,"k":{"q":1,"\/":-13,"v":1,",":-2,".":-2,"c":1,"d":1,"e":1,"o":1,"t":4,"w":1,"y":1}},"u":{"d":"61,-61v-1,24,7,41,29,41v24,0,46,-26,46,-52r0,-71r-27,0r0,-19r56,0r0,143r26,0r0,19r-54,0r0,-41v-19,33,-40,44,-61,44v-59,2,-40,-89,-43,-146r-27,0r0,-19r55,0r0,101","w":198,"k":{"\/":-12}},"v":{"d":"78,2r-56,-145r-22,0r0,-19r81,0r0,19r-28,0r42,114r43,-114r-25,0r0,-19r65,0r0,19r-20,0r-58,145r-22,0","w":177,"k":{"\/":6,"?":-6,"&":9,"x":4,"v":4,"q":4,"-":1,",":20,".":20,"a":4,"c":4,"d":4,"e":4,"g":1,"o":4,"s":1,"w":4,"y":3}},"w":{"d":"181,-143r-29,0r40,114r39,-114r-25,0r0,-19r64,0r0,19r-19,0r-53,145r-23,0r-37,-104r-42,104r-23,0r-50,-145r-22,0r0,-19r79,0r0,19r-28,0r38,114r40,-98r-6,-16r-22,0r0,-19r79,0r0,19","w":270,"k":{"&":10,"q":4,"?":-6,"\/":3,"v":5,"x":3,"-":1,",":17,".":17,"a":4,"c":4,"d":4,"e":4,"g":1,"o":4,"s":1,"w":5,"y":5}},"x":{"d":"81,-144r-25,0r36,49r39,-49r-23,0r0,-18r63,0r0,19r-18,0r-50,59r49,65r19,0r0,19r-75,0r0,-18r25,0r-36,-49r-41,49r23,0r0,18r-63,0r0,-19r19,0r51,-59r-50,-65r-20,0r0,-19r77,0r0,18","w":175,"k":{"\/":-13,"?":-4,"&":3,"v":5,"q":2,"-":4,"a":1,"c":3,"d":2,"e":3,"o":3,"t":1,"u":4,"w":6,"y":3}},"y":{"d":"25,12v16,-1,24,19,15,30v13,-1,26,-7,40,-42r-58,-143r-22,0r0,-19r81,0r0,19r-28,0r41,111r44,-111r-25,0r0,-19r64,0r0,19r-19,0r-56,137v-21,51,-42,65,-66,65v-35,0,-42,-44,-11,-47","w":176,"k":{"&":8,"q":3,"?":-6,"\/":6,"v":4,"x":1,"-":4,",":22,".":22,"a":4,"c":3,"d":3,"e":3,"g":2,"o":3,"s":1,"w":4,"y":3}},"z":{"d":"13,0r0,-15r105,-131v-47,5,-82,-20,-87,41r-13,0r0,-57r135,0r0,15r-107,131v50,-7,93,25,94,-44r13,0r0,60r-140,0","w":164,"k":{"?":-2,"\/":-13,"-":-1,"c":1,"e":1,"o":1}},"0":{"d":"100,6v-54,0,-84,-51,-84,-118v0,-67,32,-119,84,-119v54,0,85,50,85,117v0,67,-33,120,-85,120xm101,-12v36,0,51,-40,51,-101v0,-61,-17,-101,-53,-101v-36,0,-51,40,-51,101v0,61,18,101,53,101","w":200,"k":{"7":1,",":9,".":9}},"1":{"d":"20,0r0,-19r52,0r0,-169v-12,7,-38,8,-53,3r0,-15v27,0,54,-10,64,-29r19,0r0,210r50,0r0,19r-132,0","w":161,"k":{"7":1,"6":1,"4":4,"0":1,"\"":11,"'":11}},"2":{"d":"173,-167v16,56,-134,94,-131,134v29,-21,68,11,91,11v18,0,26,-14,34,-50r14,1v-5,57,-24,77,-51,77v-34,0,-50,-39,-79,-29v7,11,1,30,-13,29v-13,0,-21,-12,-21,-26v0,-25,22,-50,71,-80v37,-22,53,-38,53,-68v0,-52,-78,-59,-93,-21v23,4,22,44,-4,43v-13,0,-22,-10,-22,-26v0,-29,32,-59,77,-59v49,0,74,30,74,64","w":196,"k":{"7":2,"5":1,"4":3,"3":2}},"3":{"d":"89,6v-42,0,-75,-23,-75,-50v0,-13,9,-24,22,-24v24,-1,26,33,9,41v22,27,104,15,94,-32v2,-32,-27,-52,-75,-49r0,-17v46,2,72,-16,70,-48v8,-47,-74,-49,-88,-23v20,5,20,41,-5,41v-12,0,-22,-10,-22,-24v0,-26,30,-52,74,-52v46,0,73,26,73,57v0,28,-22,49,-61,57v41,5,65,25,65,55v0,37,-31,68,-81,68","w":188,"k":{"7":2,",":6,".":6}},"4":{"d":"116,-84r-1,-114r-82,114r83,0xm144,-18r36,0r0,18r-100,0r0,-18r36,0r0,-47r-106,0r0,-19r106,-146r28,0r0,146r48,0r0,19r-48,0r0,47","w":199,"k":{"7":3,"\"":4,"'":4}},"5":{"d":"55,-198r-5,70v42,-35,120,-8,120,53v0,39,-26,81,-81,81v-38,0,-73,-24,-73,-53v0,-29,44,-35,43,-6v0,10,-7,19,-15,22v26,35,104,19,95,-41v5,-63,-66,-65,-95,-33r-14,-4r7,-117r5,-4v38,17,85,20,118,1r5,10v-19,34,-74,37,-110,21","w":185,"k":{",":6,".":6}},"6":{"d":"48,-108v13,-20,32,-34,59,-34v44,0,68,30,68,69v0,41,-26,79,-77,79v-51,0,-81,-44,-81,-106v0,-77,39,-131,98,-131v35,0,56,18,56,40v0,30,-43,35,-42,6v0,-8,5,-17,14,-20v-52,-29,-98,15,-95,97xm50,-69v0,30,20,57,49,57v30,0,45,-23,45,-59v0,-28,-14,-53,-45,-53v-28,0,-49,23,-49,55","w":191,"k":{",":6,".":6}},"7":{"d":"96,-16v0,28,-35,30,-35,3v0,-35,27,-100,70,-149v11,-12,25,-24,26,-33v-54,40,-118,-61,-121,51r-18,0r0,-82r19,0v2,9,-2,24,3,29v7,-21,17,-31,34,-31v34,1,42,42,76,25v-11,-11,-3,-29,13,-29v12,0,18,9,18,19v0,14,-8,26,-29,50v-34,40,-56,80,-56,147","w":187,"k":{"@":6,")":-3,"\/":18,"9":2,"8":3,"6":6,"5":4,"4":14,"3":2,"2":3,"0":4,"-":9,":":9,";":9,",":30,".":30}},"8":{"d":"62,-113v-68,-27,-42,-118,36,-118v79,0,94,88,29,111v82,26,50,126,-33,126v-83,0,-108,-90,-32,-119xm148,-55v1,-24,-21,-39,-70,-51v-52,17,-43,95,19,95v30,0,51,-21,51,-44xm51,-174v0,25,18,38,58,49v50,-19,45,-87,-13,-89v-29,0,-45,19,-45,40","w":191,"k":{",":4,".":4}},"9":{"d":"144,-114v-28,56,-127,35,-127,-37v0,-42,26,-80,77,-80v51,0,80,43,80,105v0,78,-36,132,-96,132v-39,0,-60,-20,-60,-43v0,-29,43,-33,42,-6v0,9,-5,17,-14,21v53,30,100,-10,98,-92xm141,-156v0,-32,-19,-58,-48,-58v-30,0,-45,24,-45,61v0,29,14,54,45,54v28,0,48,-23,48,-57","w":191,"k":{"\/":1,"6":1,"5":1,"2":1,"1":1,",":13,".":13}},".":{"d":"39,5v-12,0,-21,-9,-21,-20v0,-12,9,-20,21,-20v12,0,20,8,20,20v0,11,-8,20,-20,20","w":77,"k":{"J":-3,"Q":10,"V":39,"q":4,"v":20,"p":2,"j":-7,"8":4,"5":1,"4":12,"7":21,"6":8,"0":9,"C":10,"G":10,"O":10,"S":-4,"T":29,"W":32,"Y":24,"c":5,"d":4,"e":5,"o":5,"s":-2,"t":13,"u":12,"w":16,"y":7,"U":5,"b":6}},",":{"d":"12,51r-6,-11v25,-12,38,-26,37,-40v-11,8,-25,-2,-25,-15v0,-11,8,-20,20,-20v14,0,22,11,22,26v0,24,-13,44,-48,60","w":77,"k":{"J":-3,"Q":10,"V":39,"q":4,"v":20,"p":2,"j":-16,"8":4,"5":1,"4":12,"7":21,"6":8,"0":9,"C":10,"G":10,"O":10,"S":-4,"T":29,"W":32,"Y":24,"c":5,"d":4,"e":5,"o":5,"s":-2,"t":13,"u":12,"w":16,"y":7,"U":5,"b":6}},":":{"d":"39,-102v-12,0,-20,-9,-20,-20v0,-12,8,-21,20,-21v12,0,21,9,21,21v0,11,-9,20,-21,20xm39,5v-12,0,-20,-9,-20,-20v0,-12,8,-20,20,-20v12,0,21,8,21,20v0,11,-9,20,-21,20","w":78},";":{"d":"40,-102v-12,0,-21,-9,-21,-20v0,-12,9,-21,21,-21v11,0,20,9,20,21v0,11,-9,20,-20,20xm12,51r-6,-11v25,-12,38,-26,37,-40v-11,8,-25,-2,-25,-15v0,-11,8,-20,20,-20v14,0,22,11,22,26v0,24,-13,44,-48,60","w":78},"&":{"d":"173,-136r76,0r0,18r-28,0v-10,24,-25,50,-44,73v22,36,37,41,55,6r13,6v-14,46,-66,55,-89,7v-20,21,-42,32,-69,32v-45,0,-68,-29,-68,-59v0,-31,18,-51,59,-68v-42,-34,-22,-106,35,-104v32,0,52,22,52,45v0,24,-15,41,-48,58v22,22,37,41,50,63v14,-17,26,-40,34,-59r-28,0r0,-18xm50,-59v-1,48,70,58,97,19v-14,-24,-29,-44,-57,-71v-27,13,-40,28,-40,52xm111,-209v-43,0,-39,49,-4,77v22,-13,32,-28,32,-46v0,-17,-10,-31,-28,-31","w":258,"k":{"X":3,"V":17,"T":13,"W":18,"Y":21,"t":4,"U":6}},"!":{"d":"42,-67r-12,-155v0,-15,7,-22,18,-22v11,0,18,7,18,22v-1,46,-9,101,-12,155r-12,0xm48,5v-12,0,-21,-9,-21,-20v0,-12,9,-20,21,-20v12,0,20,8,20,20v0,11,-8,20,-20,20","w":95},"?":{"d":"147,-186v0,42,-70,69,-68,117r-16,0v-7,-50,53,-80,53,-120v0,-43,-67,-50,-80,-18v22,4,23,43,-4,43v-13,0,-23,-11,-23,-25v0,-28,29,-55,67,-55v46,0,71,27,71,58xm72,5v-12,0,-20,-9,-20,-20v0,-12,8,-20,20,-20v12,0,21,8,21,20v0,11,-9,20,-21,20","w":154},"-":{"d":"20,-76r0,-23r92,0r0,23r-92,0","w":131,"k":{"J":2,"Q":-11,"V":18,"X":8,"v":1,"x":4,"7":6,"1":3,"2":1,"C":-11,"G":-11,"O":-11,"S":-15,"T":19,"W":16,"Y":19,"A":-3,"Z":5,"w":1,"y":3,"z":-2,"U":-2}},"_":{"d":"-1,0r0,-19r160,0r0,19r-160,0","w":158},"\/":{"d":"-17,73r139,-324r22,0r-139,324r-22,0","w":150,"k":{"\/":31,"9":1,"8":6,"6":6,"5":4,"4":12,"3":1,"2":5,"1":3,"0":3,"x":18,"v":13,"q":27,"p":15,"m":19,"j":10,"Q":7,"J":33,"C":7,"G":7,"O":7,"S":5,"A":24,"a":32,"c":27,"d":27,"e":27,"f":12,"g":28,"i":10,"n":19,"o":27,"r":19,"s":25,"t":10,"u":16,"w":13,"y":13,"z":25,"b":-5,"h":-5,"k":-5,"l":-5}},"\\":{"d":"146,73r-139,-324r22,0r139,324r-22,0","w":150},"|":{"d":"40,73r0,-324r20,0r0,324r-20,0","w":100},"(":{"d":"123,57v-56,-29,-98,-80,-98,-159v0,-79,42,-130,98,-159r9,14v-49,31,-77,76,-77,145v0,69,28,114,77,145","w":129,"k":{"j":-37,"X":-11,"V":-18,"J":4,"W":-16,"Y":-12,"g":-13,"y":-11,"b":-20,"h":-12,"k":-12,"l":-12}},")":{"d":"7,-261v56,29,98,80,98,159v0,79,-42,130,-98,159r-9,-14v49,-31,77,-76,77,-145v0,-69,-28,-114,-77,-145","w":129},"[":{"d":"32,55r0,-314r90,0r0,17r-62,0r0,279r62,0r0,18r-90,0","w":121,"k":{"j":-37,"X":-11,"V":-18,"J":4,"W":-16,"Y":-12,"g":-13,"y":-11,"b":-20,"h":-12,"k":-12,"l":-12}},"]":{"d":"90,-259r0,314r-90,0r0,-18r62,0r0,-279r-62,0r0,-17r90,0","w":121},"{":{"d":"6,-111v36,3,64,-11,60,-33v-11,-63,-7,-115,70,-116r0,17v-58,4,-47,41,-44,90v1,30,-19,44,-49,51v52,3,46,49,46,96v0,26,10,42,47,45r0,16v-76,-2,-82,-52,-70,-116v4,-22,-24,-36,-60,-33r0,-17","w":139,"k":{"j":-37,"X":-11,"V":-18,"J":4,"W":-16,"Y":-12,"g":-13,"y":-11,"b":-20,"h":-12,"k":-12,"l":-12}},"}":{"d":"134,-94v-36,-3,-63,12,-60,34v10,63,6,114,-70,115r0,-16v58,-4,47,-41,44,-90v-1,-30,18,-45,49,-52v-53,-2,-46,-49,-46,-96v0,-26,-10,-41,-47,-44r0,-17v75,2,80,51,70,116v-3,22,24,36,60,33r0,17","w":139},"@":{"d":"94,-75v-1,-46,34,-93,80,-95v16,0,30,9,33,29r9,-27r23,0r-27,88v-12,37,0,44,17,44v30,0,59,-33,59,-83v0,-67,-48,-111,-114,-111v-79,0,-136,63,-136,143v0,76,51,125,129,125v37,0,69,-12,94,-30r7,11v-88,69,-246,30,-246,-106v0,-91,68,-157,154,-157v70,0,129,47,129,124v0,64,-40,98,-80,98v-29,0,-37,-18,-39,-39v-24,48,-90,50,-92,-14xm143,-43v31,0,55,-51,55,-81v0,-15,-6,-32,-24,-32v-31,0,-54,48,-54,83v0,19,8,30,23,30","w":326,"k":{"X":2,"V":2,"J":6,"Y":9,"A":4,"a":4}},"*":{"d":"93,-132v-21,10,-17,-31,-19,-51v-19,0,-27,50,-50,29v-12,-23,28,-25,42,-35r0,-4v-16,-8,-53,-12,-43,-34v20,-18,34,19,46,30v13,-10,-4,-60,24,-52v26,13,-17,39,-12,56v17,-3,52,-23,55,2v-3,23,-37,6,-55,3v-5,18,39,44,12,56","w":146,"k":{"J":35,"A":31}},"^":{"d":"11,-184r42,-71r15,0r41,71r-15,0r-34,-42r-35,42r-14,0","w":119},"~":{"d":"15,-90v4,-33,14,-44,32,-44v28,0,53,43,60,-3r13,0v-4,33,-14,44,-32,44v-28,0,-53,-43,-60,3r-13,0","w":133},"$":{"d":"107,28r-17,0r0,-28v-44,-3,-74,-25,-74,-48v0,-12,8,-23,21,-23v22,0,28,31,9,40v6,6,22,14,44,16r0,-87v-42,-13,-66,-26,-66,-61v0,-30,24,-58,66,-63r0,-25r17,0r0,25v38,1,66,23,66,45v0,13,-8,22,-19,22v-23,1,-24,-30,-8,-36v-6,-7,-19,-15,-39,-16r0,83v48,14,67,30,67,63v0,29,-21,61,-67,65r0,28xm149,-56v0,-19,-10,-30,-42,-41r0,81v27,-3,42,-19,42,-40xm90,-210v-52,10,-57,65,0,77r0,-77","w":192},"#":{"d":"75,-149r-49,0r0,-18r53,0r14,-70r21,0r-14,70r59,0r15,-70r21,0r-14,70r47,0r0,18r-51,0r-14,73r50,0r0,18r-54,0r-14,72r-21,0r14,-72r-59,0r-14,72r-22,0r14,-72r-46,0r0,-18r50,0xm156,-149r-60,0r-14,73r59,0","w":238},"%":{"d":"59,-96v-28,0,-44,-19,-44,-48v0,-53,64,-106,102,-63v37,14,64,8,91,-21r18,0r-154,237r-23,0r140,-209v-13,12,-40,20,-66,12v5,39,-20,92,-64,92xm201,5v-28,0,-44,-19,-44,-48v0,-41,32,-79,69,-79v23,0,39,14,39,43v0,33,-22,84,-64,84xm204,-10v26,0,45,-39,45,-69v0,-17,-7,-27,-21,-27v-26,0,-45,38,-45,67v0,18,8,29,21,29xm108,-180v0,-18,-13,-17,-22,-27v-26,1,-45,40,-45,68v0,18,9,28,22,28v26,0,45,-39,45,-69","w":280},"\"":{"d":"87,-148r-10,-5r20,-74v6,-15,28,-10,29,4v-6,26,-26,51,-39,75xm31,-148r-10,-5r20,-74v6,-15,28,-10,29,4v-6,26,-26,51,-39,75","w":136,"k":{"4":17,"7":-1}},"'":{"d":"31,-148r-10,-5r20,-74v6,-15,28,-10,29,4v-6,26,-26,51,-39,75","w":80,"k":{"4":17,"7":-1}},"+":{"d":"85,-24r0,-67r-66,0r0,-18r66,0r0,-67r19,0r0,67r65,0r0,18r-65,0r0,67r-19,0","w":188},"=":{"d":"21,-124r0,-17r147,0r0,17r-147,0xm21,-59r0,-17r147,0r0,17r-147,0","w":189},"<":{"d":"157,-26r-128,-66r0,-16r128,-66r0,20r-108,54r108,54r0,20","w":185},">":{"d":"28,-174r129,66r0,16r-129,66r0,-19r108,-55r-108,-54r0,-20","w":185},"`":{"d":"61,-190v-24,2,-24,-20,-37,-30v-10,-13,-15,-20,-15,-27v0,-8,6,-13,13,-13v21,3,28,51,39,70","w":85},"\u00a0":{"w":64}}});





/*
 * jQuery Expander plugin
 * Version 0.4  (12/09/2008)
 * @requires jQuery v1.1.1+
 *
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */


(function($) {

  $.fn.expander = function(options) {

    var opts = $.extend({}, $.fn.expander.defaults, options);
    var delayedCollapse;
    return this.each(function() {
      var $this = $(this);
      var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
     	var cleanedTag, startTags, endTags;	
     	var allText = $this.html();
     	var startText = allText.slice(0, o.slicePoint).replace(/\w+$/,'');
     	startTags = startText.match(/<\w[^>]*>/g);
   	  if (startTags) {startText = allText.slice(0,o.slicePoint + startTags.join('').length).replace(/\w+$/,'');}
   	  
     	if (startText.lastIndexOf('<') > startText.lastIndexOf('>') ) {
     	  startText = startText.slice(0,startText.lastIndexOf('<'));
     	}
     	var endText = allText.slice(startText.length);    	  
     	// create necessary expand/collapse elements if they don't already exist
   	  if (!$('span.details', this).length) {
        // end script if text length isn't long enough.
       	if ( endText.replace(/\s+$/,'').split(' ').length < o.widow ) { return; }
       	// otherwise, continue...    
       	if (endText.indexOf('</') > -1) {
         	endTags = endText.match(/<(\/)?[^>]*>/g);
          for (var i=0; i < endTags.length; i++) {

            if (endTags[i].indexOf('</') > -1) {
              var startTag, startTagExists = false;
              for (var j=0; j < i; j++) {
                startTag = endTags[j].slice(0, endTags[j].indexOf(' ')).replace(/(\w)$/,'$1>');
                if (startTag == rSlash(endTags[i])) {
                  startTagExists = true;
                }
              }              
              if (!startTagExists) {
                startText = startText + endTags[i];
                var matched = false;
                for (var s=startTags.length - 1; s >= 0; s--) {
                  if (startTags[s].slice(0, startTags[s].indexOf(' ')).replace(/(\w)$/,'$1>') == rSlash(endTags[i]) 
                  && matched == false) {
                    cleanedTag = cleanedTag ? startTags[s] + cleanedTag : startTags[s];
                    matched = true;
                  }
                };
              }
            }
          }

          endText = cleanedTag && cleanedTag + endText || endText;
        }
     	  $this.html([
     		startText,
     		'<span class="read-more">',
     		o.expandPrefix,
       		'<a href="#">',
       		  o.expandText,
       		'</a>',
        '</span>',
     		'<span class="details">',
     		  endText,
     		'</span>'
     		].join('')
     	  );
      }
      var $thisDetails = $('span.details', this),
        $readMore = $('span.read-more', this);
   	  $thisDetails.hide();
 	    $readMore.find('a').click(function() {
 	      $readMore.hide();

 	      if (o.expandEffect === 'show' && !o.expandSpeed) {
          o.beforeExpand($this);
 	        $thisDetails.show();
          o.afterExpand($this);
          delayCollapse(o, $thisDetails);
 	      } else {
          o.beforeExpand($this);
 	        $thisDetails[o.expandEffect](o.expandSpeed, function() {
            $thisDetails.css({zoom: ''});
            o.afterExpand($this);
            delayCollapse(o, $thisDetails);
 	        });
 	      }
        return false;
 	    });
      if (o.userCollapse) {
        $this
        .find('span.details').append('<span class="re-collapse">' + o.userCollapsePrefix + '<a href="#">' + o.userCollapseText + '</a></span>');
        $this.find('span.re-collapse a').click(function() {

          clearTimeout(delayedCollapse);
          var $detailsCollapsed = $(this).parents('span.details');
          reCollapse($detailsCollapsed);
          o.onCollapse($this, true);
          return false;
        });
      }
    });
    function reCollapse(el) {
       el.hide()
        .prev('span.read-more').show();
    }
    function delayCollapse(option, $collapseEl) {
      if (option.collapseTimer) {
        delayedCollapse = setTimeout(function() {  
          reCollapse($collapseEl);
          option.onCollapse($collapseEl.parent(), false);
          },
          option.collapseTimer
        );
      }
    }
    function rSlash(rString) {
      return rString.replace(/\//,'');
    }    
  };
    // plugin defaults
  $.fn.expander.defaults = {
    slicePoint:       100,  // the number of characters at which the contents will be sliced into two parts. 
                            // Note: any tag names in the HTML that appear inside the sliced element before 
                            // the slicePoint will be counted along with the text characters.
    widow:            4,  // a threshold of sorts for whether to initially hide/collapse part of the element's contents. 
                          // If after slicing the contents in two there are fewer words in the second part than 
                          // the value set by widow, we won't bother hiding/collapsing anything.
    expandText:       'read more', // text displayed in a link instead of the hidden part of the element. 
                                      // clicking this will expand/show the hidden/collapsed text
    expandPrefix:     '&hellip; ',
    collapseTimer:    0, // number of milliseconds after text has been expanded at which to collapse the text again
    expandEffect:     'fadeIn',
    expandSpeed:      '',   // speed in milliseconds of the animation effect for expanding the text
    userCollapse:     true, // allow the user to re-collapse the expanded text.
    userCollapseText: '[collapse expanded text]',  // text to use for the link to re-collapse the text
    userCollapsePrefix: ' ',
    beforeExpand: function($thisEl) {},
    afterExpand: function($thisEl) {},
    onCollapse: function($thisEl, byUser) {}
  };
})(jQuery);





/* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate$
 * $Rev$
 *
 * Version: @VERSION
 *
 * Requires: jQuery 1.2+
 */

(function($){
	
$.dimensions = {
	version: '@VERSION'
};

// Create innerHeight, innerWidth, outerHeight and outerWidth methods
$.each( [ 'Height', 'Width' ], function(i, name){
	
	// innerHeight and innerWidth
	$.fn[ 'inner' + name ] = function() {
		if (!this[0]) return;
		
		var torl = name == 'Height' ? 'Top'    : 'Left',  // top or left
		    borr = name == 'Height' ? 'Bottom' : 'Right'; // bottom or right
		
		return this.css('display') != 'none' ? this[0]['client' + name] : num( this, name.toLowerCase() ) + num(this, 'padding' + torl) + num(this, 'padding' + borr);
	};
	
	// outerHeight and outerWidth
	$.fn[ 'outer' + name ] = function(options) {
		if (!this[0]) return;
		
		var torl = name == 'Height' ? 'Top'    : 'Left',  // top or left
		    borr = name == 'Height' ? 'Bottom' : 'Right'; // bottom or right
		
		options = $.extend({ margin: false }, options || {});
		
		var val = this.css('display') != 'none' ? 
				this[0]['offset' + name] : 
				num( this, name.toLowerCase() )
					+ num(this, 'border' + torl + 'Width') + num(this, 'border' + borr + 'Width')
					+ num(this, 'padding' + torl) + num(this, 'padding' + borr);
		
		return val + (options.margin ? (num(this, 'margin' + torl) + num(this, 'margin' + borr)) : 0);
	};
});

// Create scrollLeft and scrollTop methods
$.each( ['Left', 'Top'], function(i, name) {
	$.fn[ 'scroll' + name ] = function(val) {
		if (!this[0]) return;
		
		return val != undefined ?
		
			// Set the scroll offset
			this.each(function() {
				this == window || this == document ?
					window.scrollTo( 
						name == 'Left' ? val : $(window)[ 'scrollLeft' ](),
						name == 'Top'  ? val : $(window)[ 'scrollTop'  ]()
					) :
					this[ 'scroll' + name ] = val;
			}) :
			
			// Return the scroll offset
			this[0] == window || this[0] == document ?
				self[ (name == 'Left' ? 'pageXOffset' : 'pageYOffset') ] ||
					$.boxModel && document.documentElement[ 'scroll' + name ] ||
					document.body[ 'scroll' + name ] :
				this[0][ 'scroll' + name ];
	};
});

$.fn.extend({
	position: function() {
		var left = 0, top = 0, elem = this[0], offset, parentOffset, offsetParent, results;
		
		if (elem) {
			// Get *real* offsetParent
			offsetParent = this.offsetParent();
			
			// Get correct offsets
			offset       = this.offset();
			parentOffset = offsetParent.offset();
			
			// Subtract element margins
			offset.top  -= num(elem, 'marginTop');
			offset.left -= num(elem, 'marginLeft');
			
			// Add offsetParent borders
			parentOffset.top  += num(offsetParent, 'borderTopWidth');
			parentOffset.left += num(offsetParent, 'borderLeftWidth');
			
			// Subtract the two offsets
			results = {
				top:  offset.top  - parentOffset.top,
				left: offset.left - parentOffset.left
			};
		}
		
		return results;
	},
	
	offsetParent: function() {
		var offsetParent = this[0].offsetParent;
		while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && $.css(offsetParent, 'position') == 'static') )
			offsetParent = offsetParent.offsetParent;
		return $(offsetParent);
	}
});

function num(el, prop) {
	return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;
};

})(jQuery);












/**
 * jwplayerControlbar component of the JW Player.
 *
 * @author jeroen
 * @version 1.0alpha
 * @lastmodifiedauthor zach
 * @lastmodifieddate 2010-04-11
 */
(function($) {
	var controlbars = {};
	
	/** Hooking the jwplayerControlbar up to jQuery. **/
	$.fn.jwplayerControlbar = function(player, domelement) {
		controlbars[player.id] = $.extend({}, $.fn.jwplayerControlbar.defaults, player.config.plugins.controlbar);
		buildElements(player, domelement);
		buildHandlers(player);
	};
	
	$.fn.jwplayerControlbar.positions = {
		BOTTOM: 'BOTTOM',
		TOP: 'TOP',
		OVER: 'OVER'
	};
	
	
	/** Map with config for the jwplayerControlbar plugin. **/
	$.fn.jwplayerControlbar.defaults = {
		fontsize: 10,
		fontcolor: '000000',
		position: $.fn.jwplayerControlbar.positions.BOTTOM,
		leftmargin: 0,
		rightmargin: 0,
		scrubber: 'none'
	};
	
	/** Draw the jwplayerControlbar elements. **/
	function buildElements(player, domelement) {
		// Draw the background.
		domelement.parents(":first").append('<div id="' + player.id + '_jwplayerControlbar"></div>');
		$("#" + player.id + '_jwplayerControlbar').css('position', 'absolute');
		$("#" + player.id + '_jwplayerControlbar').css('height', player.skin.controlbar.elements.background.height);
		switch (controlbars[player.id].position) {
			case $.fn.jwplayerControlbar.positions.TOP:
				$("#" + player.id + '_jwplayerControlbar').css('top', 0);
				break;
			default:
				$("#" + player.id + '_jwplayerControlbar').css('top', player.height());
				domelement.parents(":first").css('height', parseInt(domelement.parents(":first").css('height').replace('px', '')) + player.skin.controlbar.elements.background.height);
				break;
		}
		$("#" + player.id + '_jwplayerControlbar').css('background', 'url(' + player.skin.controlbar.elements.background.src + ') repeat-x center left');
		// Draw all elements on top of the bar.
		buildElement('capLeft', 'left', true, player);
		buildElement('playButton', 'left', false, player);
		buildElement('pauseButton', 'left', true, player);
		buildElement('divider1', 'left', true, player);
		buildElement('elapsedText', 'left', true, player);
		buildElement('timeSliderRail', 'left', false, player);
		buildElement('timeSliderBuffer', 'left', false, player);
		buildElement('timeSliderProgress', 'left', false, player);
		buildElement('timeSliderThumb', 'left', false, player);
		buildElement('capRight', 'right', true, player);
		// TODO
		if (false) {
			buildElement('fullscreenButton', 'right', false, player);
			buildElement('normalscreenButton', 'right', true, player);
			buildElement('divider2', 'right', true, player);
		}
		if (!$.fn.jwplayerUtils.isiPad()) {
			buildElement('volumeSliderRail', 'right', false, player);
			buildElement('volumeSliderProgress', 'right', true, player);
			buildElement('muteButton', 'right', false, player);
			buildElement('unmuteButton', 'right', true, player);
			buildElement('divider3', 'right', true, player);
		}
		buildElement('durationText', 'right', true, player);
	}
	
	
	/** Draw a single element into the jwplayerControlbar. **/
	function buildElement(element, align, offset, player) {
		var nam = player.id + '_' + element;
		$('#' + player.id + '_jwplayerControlbar').append('<div id="' + nam + '"></div>');
		$('#' + nam).css('position', 'absolute');
		$('#' + nam).css('top', '0px');
		if (element.indexOf('Text') > 0) {
			$('#' + nam).html('00:00');
			$('#' + nam).css('font', controlbars[player.id].fontsize + 'px/' + (player.skin.controlbar.elements.background.height + 1) + 'px Arial,sans-serif');
			$('#' + nam).css('text-align', 'center');
			$('#' + nam).css('font-weight', 'bold');
			$('#' + nam).css('cursor', 'default');
			var wid = 14 + 3 * controlbars[player.id].fontsize;
			$('#' + nam).css('color', '#' + controlbars[player.id].fontcolor.substr(-6));
		} else if (element.indexOf('divider') === 0) {
			$('#' + nam).css('background', 'url(' + player.skin.controlbar.elements.divider.src + ') repeat-x center left');
			var wid = player.skin.controlbar.elements.divider.width;
		} else {
			$('#' + nam).css('background', 'url(' + player.skin.controlbar.elements[element].src + ') repeat-x center left');
			var wid = player.skin.controlbar.elements[element].width;
		}
		if (align == 'left') {
			$('#' + nam).css(align, controlbars[player.id].leftmargin);
			if (offset) {
				controlbars[player.id].leftmargin += wid;
			}
		} else if (align == 'right') {
			$('#' + nam).css(align, controlbars[player.id].rightmargin);
			if (offset) {
				controlbars[player.id].rightmargin += wid;
			}
		}
		$('#' + nam).css('width', wid);
		$('#' + nam).css('height', player.skin.controlbar.elements.background.height);
	}
	
	
	/** Add interactivity to the jwplayerControlbar elements. **/
	function buildHandlers(player) {
		// Register events with the buttons.
		buildHandler('playButton', 'play', player);
		buildHandler('pauseButton', 'pause', player);
		buildHandler('muteButton', 'mute', player, true);
		buildHandler('unmuteButton', 'mute', player, false);
		buildHandler('fullscreenButton', 'fullscreen', player, true);
		buildHandler('normalscreenButton', 'fullscreen', player, false);
		
		addSliders(player);
		
		// Register events with the player.
		player.buffer(bufferHandler);
		player.state(stateHandler);
		player.time(timeHandler);
		player.mute(muteHandler);
		player.volume(volumeHandler);
		player.complete(completeHandler);
		
		// Trigger a few events so the bar looks good on startup.
		resizeHandler({
			id: player.id,
			fulscreen: player.fullscreen(),
			width: player.width(),
			height: player.height()
		});
		timeHandler({
			id: player.id,
			duration: player.duration(),
			position: 0
		});
		bufferHandler({
			id: player.id,
			bufferProgress: 0
		});
		muteHandler({
			id: player.id,
			mute: player.mute()
		});
		stateHandler({
			id: player.id,
			newstate: $.fn.jwplayer.states.IDLE
		});
		volumeHandler({
			id: player.id,
			volume: player.volume()
		});
	}
	
	
	/** Set a single button handler. **/
	function buildHandler(element, handler, player, args) {
		var nam = player.id + '_' + element;
		$('#' + nam).css('cursor', 'pointer');
		if (handler == 'fullscreen') {
			$('#' + nam).mouseup(function(evt) {
				evt.stopPropagation();
				player.fullscreen(!player.fullscreen());
				resizeHandler({
					id: player.id,
					fullscreen: player.fullscreen(),
					width: player.width(),
					height: player.height()
				});
			});
		} else {
			$('#' + nam).mouseup(function(evt) {
				evt.stopPropagation();
				if (!$.fn.jwplayerUtils.isNull(args)) {
					player[handler](args);
				} else {
					player[handler]();
				}
				
			});
		}
	}
	
	
	/** Set the volume drag handler. **/
	function addSliders(player) {
		var bar = '#' + player.id + '_jwplayerControlbar';
		var trl = '#' + player.id + '_timeSliderRail';
		var vrl = '#' + player.id + '_volumeSliderRail';
		$(bar).css('cursor', 'pointer');
		$(trl).css('cursor', 'pointer');
		$(vrl).css('cursor', 'pointer');
		$(bar).mousedown(function(evt) {
			if (evt.pageX >= $(trl).offset().left - window.pageXOffset && evt.pageX <= $(trl).offset().left - window.pageXOffset + $(trl).width()) {
				controlbars[player.id].scrubber = 'time';
			} else if (evt.pageX >= $(vrl).offset().left - window.pageXOffset && evt.pageX <= $(vrl).offset().left - window.pageXOffset + $(trl).width()) {
				controlbars[player.id].scrubber = 'volume';
			}
		});
		$(bar).mouseup(function(evt) {
			evt.stopPropagation();
			sliderUp(evt.pageX, player);
		});
		$(bar).mousemove(function(evt) {
			if (controlbars[player.id].scrubber == 'time') {
				controlbars[player.id].mousedown = true;
				var xps = evt.pageX - $(bar).offset().left - window.pageXOffset;
				$('#' + player.id + '_timeSliderThumb').css('left', xps);
			}
		});
	}
	
	
	/** The slider has been moved up. **/
	function sliderUp(msx, player) {
		controlbars[player.id].mousedown = false;
		if (controlbars[player.id].scrubber == 'time') {
			var xps = msx - $('#' + player.id + '_timeSliderRail').offset().left + window.pageXOffset;
			var wid = $('#' + player.id + '_timeSliderRail').width();
			var pos = xps / wid * controlbars[player.id].currentDuration;
			if (pos < 0) {
				pos = 0;
			} else if (pos > controlbars[player.id].currentDuration) {
				pos = controlbars[player.id].currentDuration - 3;
			}
			player.seek(pos);
			if (player.model.state != $.fn.jwplayer.states.PLAYING) {
				player.play();
			}
		} else if (controlbars[player.id].scrubber == 'volume') {
			var xps = msx - $('#' + player.id + '_volumeSliderRail').offset().left - window.pageXOffset;
			var wid = $('#' + player.id + '_volumeSliderRail').width();
			var pct = Math.round(xps / wid * 100);
			if (pct < 0) {
				pct = 0;
			} else if (pct > 100) {
				pct = 100;
			}
			if (player.model.mute) {
				player.mute(false);
			}
			player.volume(pct);
		}
		controlbars[player.id].scrubber = 'none';
	}
	
	
	/** Update the buffer percentage. **/
	function bufferHandler(event) {
		if (!$.fn.jwplayerUtils.isNull(event.bufferPercent)) {
			controlbars[event.id].currentBuffer = event.bufferPercent;
		}
		
		var wid = $('#' + event.id + '_timeSliderRail').width();
		var bufferWidth = isNaN(Math.round(wid * controlbars[event.id].currentBuffer / 100)) ? 0 : Math.round(wid * controlbars[event.id].currentBuffer / 100);
		$('#' + event.id + '_timeSliderBuffer').css('width', bufferWidth);
	}
	
	
	/** Update the mute state. **/
	function muteHandler(event) {
		if (event.mute) {
			$('#' + event.id + '_muteButton').css('display', 'none');
			$('#' + event.id + '_unmuteButton').css('display', 'block');
			$('#' + event.id + '_volumeSliderProgress').css('display', 'none');
		} else {
			$('#' + event.id + '_muteButton').css('display', 'block');
			$('#' + event.id + '_unmuteButton').css('display', 'none');
			$('#' + event.id + '_volumeSliderProgress').css('display', 'block');
		}
	}
	
	
	/** Update the playback state. **/
	function stateHandler(event) {
		// Handle the play / pause button
		if (event.newstate == $.fn.jwplayer.states.BUFFERING || event.newstate == $.fn.jwplayer.states.PLAYING) {
			$('#' + event.id + '_pauseButton').css('display', 'block');
			$('#' + event.id + '_playButton').css('display', 'none');
		} else {
			$('#' + event.id + '_pauseButton').css('display', 'none');
			$('#' + event.id + '_playButton').css('display', 'block');
		}
		
		// Show / hide progress bar
		if (event.newstate == $.fn.jwplayer.states.IDLE) {
			$('#' + event.id + '_timeSliderBuffer').css('display', 'none');
			$('#' + event.id + '_timeSliderProgress').css('display', 'none');
			$('#' + event.id + '_timeSliderThumb').css('display', 'none');
		} else {
			$('#' + event.id + '_timeSliderBuffer').css('display', 'block');
			if (event.newstate != $.fn.jwplayer.states.BUFFERING) {
				$('#' + event.id + '_timeSliderProgress').css('display', 'block');
				$('#' + event.id + '_timeSliderThumb').css('display', 'block');
			}
		}
	}
	
	/** Handles event completion **/
	function completeHandler(event) {
		timeHandler($.extend(event, {
			position: 0,
			duration: controlbars[event.id].currentDuration
		}));
	}
	
	
	/** Update the playback time. **/
	function timeHandler(event) {
		if (!$.fn.jwplayerUtils.isNull(event.position)) {
			controlbars[event.id].currentPosition = event.position;
		}
		if (!$.fn.jwplayerUtils.isNull(event.duration)) {
			controlbars[event.id].currentDuration = event.duration;
		}
		var progress = (controlbars[event.id].currentPosition === controlbars[event.id].currentDuration === 0) ? 0 : controlbars[event.id].currentPosition / controlbars[event.id].currentDuration;
		var railWidth = $('#' + event.id + '_timeSliderRail').width();
		var thumbWidth = $('#' + event.id + '_timeSliderThumb').width();
		var railLeft = $('#' + event.id + '_timeSliderRail').position().left;
		var progressWidth = isNaN(Math.round(railWidth * progress)) ? 0 : Math.round(railWidth * progress);
		var thumbPosition = railLeft + progressWidth;
		
		$('#' + event.id + '_timeSliderProgress').css('width', progressWidth);
		if (!controlbars[event.id].mousedown) {
			$('#' + event.id + '_timeSliderThumb').css('left', thumbPosition);
		}
		
		$('#' + event.id + '_durationText').html(timeFormat(controlbars[event.id].currentDuration));
		$('#' + event.id + '_elapsedText').html(timeFormat(controlbars[event.id].currentPosition));
	}
	
	
	/** Format the elapsed / remaining text. **/
	function timeFormat(sec) {
		str = '00:00';
		if (sec > 0) {
			str = Math.floor(sec / 60) < 10 ? '0' + Math.floor(sec / 60) + ':' : Math.floor(sec / 60) + ':';
			str += Math.floor(sec % 60) < 10 ? '0' + Math.floor(sec % 60) : Math.floor(sec % 60);
		}
		return str;
	}
	
	
	/** Flip the player size to/from full-browser-screen. **/
	function resizeHandler(event) {
		controlbars[event.id].width = event.width;
		controlbars[event.id].fullscreen = event.fullscreen;
		if (event.fullscreen) {
			$('#' + event.id + '_normalscreenButton').css('display', 'block');
			$('#' + event.id + '_fullscreenButton').css('display', 'none');
			// TODO
			if (false) {
				$(window).resize(function() {
					resizeBar(player);
				});
			}
		} else {
			$('#' + event.id + '_normalscreenButton').css('display', 'none');
			$('#' + event.id + '_fullscreenButton').css('display', 'block');
			// TODO
			if (false) {
				$(window).resize(null);
			}
		}
		resizeBar(event);
		timeHandler(event);
		bufferHandler(event);
	}
	
	
	/** Resize the jwplayerControlbar. **/
	function resizeBar(event) {
		var lft = controlbars[event.id].left;
		var top = controlbars[event.id].top;
		var wid = controlbars[event.id].width;
		var hei = $('#' + event.id + '_jwplayerControlbar').height();
		if (controlbars[event.id].position == 'over') {
			lft += 1 * controlbars[event.id].margin;
			top -= 1 * controlbars[event.id].margin + hei;
			wid -= 2 * controlbars[event.id].margin;
		}
		if (controlbars[event.id].fullscreen) {
			lft = controlbars[event.id].margin;
			top = $(window).height() - controlbars[event.id].margin - hei;
			wid = $(window).width() - 2 * controlbars[event.id].margin;
			$('#' + event.id + '_jwplayerControlbar').css('z-index', 99);
		} else {
			$('#' + event.id + '_jwplayerControlbar').css('z-index', 97);
		}
		$('#' + event.id + '_jwplayerControlbar').css('left', lft);
		$('#' + event.id + '_jwplayerControlbar').css('top', top);
		$('#' + event.id + '_jwplayerControlbar').css('width', wid);
		$('#' + event.id + '_timeSliderRail').css('width', (wid - controlbars[event.id].leftmargin - controlbars[event.id].rightmargin));
	}
	
	
	/** Update the volume level. **/
	function volumeHandler(event) {
		var progress = isNaN(event.volume / 100) ? 1 : event.volume / 100;
		var railWidth = $('#' + event.id + '_volumeSliderRail').width();
		var railRight = parseInt($('#' + event.id + '_volumeSliderRail').css('right').toString().replace('px', ''), 10);
		var progressWidth = isNaN(Math.round(railWidth * progress)) ? 0 : Math.round(railWidth * progress);
		
		$('#' + event.id + '_volumeSliderProgress').css('width', progressWidth);
		$('#' + event.id + '_volumeSliderProgress').css('right', (railWidth + railRight - progressWidth));
	}
	
	
})(jQuery);
/**
 * JW Player controller component
 *
 * @author zach
 * @version 1.0alpha
 * @lastmodifieddate 2010-04-11
 */
(function($) {

	var mediaParams = function() {
		return {
			volume: 100,
			fullscreen: false,
			mute: false,
			width: 480,
			height: 320,
			duration: 0,
			source: 0,
			sources: [],
			buffer: 0,
			position: 0,
			state: $.fn.jwplayer.states.IDLE
		};
	};
	
	$.fn.jwplayerController = function(player) {
		return {
			play: play(player),
			pause: pause(player),
			seek: seek(player),
			stop: stop(player),
			volume: volume(player),
			mute: mute(player),
			resize: resize(player),
			fullscreen: fullscreen(player),
			load: load(player),
			mediaInfo: mediaInfo(player),
			addEventListener: addEventListener(player),
			removeEventListener: removeEventListener(player),
			sendEvent: sendEvent(player)
		};
	};
	
	
	function play(player) {
		return function() {
			try {
				switch (player.model.state) {
					case $.fn.jwplayer.states.IDLE:
						player.addEventListener($.fn.jwplayer.events.JWPLAYER_MEDIA_BUFFER_FULL, player.media.play);
						player.media.load(player.model.sources[player.model.source].file);
						break;
					case $.fn.jwplayer.states.PAUSED:
						player.media.play();
						break;
				}
				
				return $.jwplayer(player.id);
			} catch (err) {
				player.sendEvent($.fn.jwplayer.events.JWPLAYER_ERROR, err);
			}
			return false;
		};
	}
	
	/** Switch the pause state of the player. **/
	function pause(player) {
		return function() {
			try {
				switch (player.model.state) {
					case $.fn.jwplayer.states.PLAYING:
					case $.fn.jwplayer.states.BUFFERING:
						player.media.pause();
						break;
				}
				return $.jwplayer(player.id);
			} catch (err) {
				player.sendEvent($.fn.jwplayer.events.JWPLAYER_ERROR, err);
			}
			return false;
		};
	}
	
	
	/** Seek to a position in the video. **/
	function seek(player) {
		return function(position) {
			try {
				switch (player.model.state) {
					case $.fn.jwplayer.states.PLAYING:
					case $.fn.jwplayer.states.PAUSED:
					case $.fn.jwplayer.states.BUFFERING:
						player.media.seek(position);
						break;
				}
				return $.jwplayer(player.id);
			} catch (err) {
				player.sendEvent($.fn.jwplayer.events.JWPLAYER_ERROR, err);
			}
			return false;
		};
	}
	
	
	/** Stop playback and loading of the video. **/
	function stop(player) {
		return function() {
			try {
				player.media.stop();
				return $.jwplayer(player.id);
			} catch (err) {
				player.sendEvent($.fn.jwplayer.events.JWPLAYER_ERROR, err);
			}
			return false;
		};
	}
	
	
	/** Get / set the video's volume level. **/
	function volume(player) {
		return function(arg) {
			try {
				switch ($.fn.jwplayerUtils.typeOf(arg)) {
					case "function":
						player.addEventListener($.fn.jwplayer.events.JWPLAYER_MEDIA_VOLUME, arg);
						break;
					case "number":
						player.media.volume(arg);
						return true;
					case "string":
						player.media.volume(parseInt(arg, 10));
						return true;
					default:
						return player.model.volume;
				}
				return $.jwplayer(player.id);
			} catch (err) {
				player.sendEvent($.fn.jwplayer.events.JWPLAYER_ERROR, err);
			}
			return false;
		};
	}
	
	/** Get / set the mute state of the player. **/
	function mute(player) {
		return function(arg) {
			try {
				switch ($.fn.jwplayerUtils.typeOf(arg)) {
					case "function":
						player.addEventListener($.fn.jwplayer.events.JWPLAYER_MEDIA_MUTE, arg);
						break;
					case "boolean":
						player.media.mute(arg);
						break;
					default:
						return player.model.mute;
				}
				return $.jwplayer(player.id);
			} catch (err) {
				player.sendEvent($.fn.jwplayer.events.JWPLAYER_ERROR, err);
			}
			return false;
		};
	}
	
	
	/** Resizes the video **/
	function resize(player) {
		return function(arg1, arg2) {
			try {
				switch ($.fn.jwplayerUtils.typeOf(arg1)) {
					case "function":
						player.addEventListener($.fn.jwplayer.events.JWPLAYER_RESIZE, arg1);
						break;
					case "number":
						player.media.resize(arg1, arg2);
						break;
					case "string":
						player.media.resize(arg1, arg2);
						break;
					default:
						break;
				}
				return $.jwplayer(player.id);
			} catch (err) {
				player.sendEvent($.fn.jwplayer.events.JWPLAYER_ERROR, err);
			}
			return false;
		};
	}
	
	
	/** Jumping the player to/from fullscreen. **/
	function fullscreen(player) {
		return function(arg) {
			try {
				switch ($.fn.jwplayerUtils.typeOf(arg)) {
					case "function":
						player.addEventListener($.fn.jwplayer.events.JWPLAYER_FULLSCREEN, arg);
						break;
					case "boolean":
						player.media.fullscreen(arg);
						break;
					default:
						return player.model.fullscreen;
				}
				return $.jwplayer(player.id);
			} catch (err) {
				player.sendEvent($.fn.jwplayer.events.JWPLAYER_ERROR, err);
			}
			return false;
		};
	}
	
	/** Loads a new video **/
	function load(player) {
		return function(arg) {
			try {
				switch ($.fn.jwplayerUtils.typeOf(arg)) {
					case "function":
						player.addEventListener($.fn.jwplayer.events.JWPLAYER_MEDIA_LOADED, arg);
						break;
					default:
						player.media.load(arg);
						break;
				}
				return $.jwplayer(player.id);
			} catch (err) {
				player.sendEvent($.fn.jwplayer.events.JWPLAYER_ERROR, err);
			}
			return false;
		};
	}
	
	
	/** Returns the meta **/
	function mediaInfo(player) {
		return function() {
			try {
				var result = {};
				for (var mediaParam in mediaParams()) {
					result[mediaParam] = player.model[mediaParam];
				}
				return result;
			} catch (err) {
				$.fn.jwplayerUtils.log("error", err);
			}
			return false;
		};
	}
	
	
	/** Add an event listener. **/
	function addEventListener(player) {
		return function(type, listener, count) {
			try {
				if (player.listeners[type] === undefined) {
					player.listeners[type] = [];
				}
				player.listeners[type].push({
					listener: listener,
					count: count
				});
			} catch (err) {
				$.fn.jwplayerUtils.log("error", err);
			}
			return false;
		};
	}
	
	
	/** Remove an event listener. **/
	function removeEventListener(player) {
		return function(type, listener) {
			try {
				for (var lisenterIndex in player.listeners[type]) {
					if (player.listeners[type][lisenterIndex] == listener) {
						player.listeners[type].slice(lisenterIndex, lisenterIndex + 1);
						break;
					}
				}
			} catch (err) {
				$.fn.jwplayerUtils.log("error", err);
			}
			return false;
		};
	}
	
	/** Send an event **/
	function sendEvent(player) {
		return function(type, data) {
			data = $.extend({
				id: player.id,
				version: player.version
			}, data);
			if ((player.config.debug !== undefined) && (player.config.debug.toString().toLowerCase() == 'console')) {
				$.fn.jwplayerUtils.log(type, data);
			}
			for (var listenerIndex in player.listeners[type]) {
				try {
					player.listeners[type][listenerIndex].listener(data);
				} catch (err) {
					$.fn.jwplayerUtils.log("There was an error while handling a listener", err);
				}
				if (player.listeners[type][listenerIndex].count === 1) {
					delete player.listeners[type][listenerIndex];
				} else if (player.listeners[type][listenerIndex].count > 0) {
					player.listeners[type][listenerIndex].count = player.listeners[type][listenerIndex].count - 1;
				}
			}
		};
	}
	
})(jQuery);
/**
 * Core component of the JW Player (initialization, API).
 *
 * @author jeroen
 * @version 1.0alpha
 * @lastmodifiedauthor zach
 * @lastmodifieddate 2010-04-11
 */
(function($) {
	/** Map with all players on the page. **/
	var players = {};
	
	/** Hooking the controlbar up to jQuery. **/
	$.fn.jwplayer = function(options) {
		return this.each(function() {
			$.fn.jwplayerUtils.log("Starting setup", this);
			return setupJWPlayer($(this), 0, options);
		});
	};
	
	function setupJWPlayer(player, step, options) {
		try {
			switch (step) {
				case 0:
					var model = $.fn.jwplayerModel(player, options);
					var jwplayer = {
						model: model,
						listeners: {}
					};
					return setupJWPlayer(jwplayer, step + 1);
					break;
				case 1:
					player.controller = $.fn.jwplayerController(player);
					players[player.model.config.id] = player;
					setupJWPlayer($.extend(player, api(player)), step + 1);
					return player;
					break;
				case 2:
					$.fn.jwplayerSkinner(player, function() {
						setupJWPlayer(player, step + 1);
					});
					break;
				case 3:
					$.fn.jwplayerView(player);
					setupJWPlayer(player, step + 1);
					break;
				case 4:
					$.fn.jwplayerModel.setActiveMediaProvider(player);
					if ((player.media === undefined) || !player.media.hasChrome) {
						setupJWPlayer(player, step + 1);
					}
					break;
				case 5:
					$.fn.jwplayerDisplay($.jwplayer(player.id), player.model.domelement);
					if (player.media === undefined) {
						player.sendEvent($.fn.jwplayer.events.JWPLAYER_READY);
					} else {
						setupJWPlayer(player, step + 1);
					}
					break;
				case 6:
					if (!$.fn.jwplayerUtils.isiPhone()) {
						$.fn.jwplayerControlbar($.jwplayer(player.id), player.model.domelement);
					}
					setupJWPlayer(player, step + 1);
					break;
				case 7:
					player.sendEvent($.fn.jwplayer.events.JWPLAYER_READY);
					setupJWPlayer(player, step + 1);
					break;
				default:
					if (player.config.autostart === true) {
						player.play();
					}
					break;
			}
		} catch (err) {
			$.fn.jwplayerUtils.log("Setup failed at step " + step, err);
		}
	}
	
	
	/** Map with config for the controlbar plugin. **/
	$.fn.jwplayer.defaults = {
		autostart: false,
		file: undefined,
		height: 295,
		image: undefined,
		skin: undefined,
		volume: 90,
		width: 480,
		mute: false,
		bufferlength: 5,
		start: 0,
		position: 0,
		debug: undefined,
		flashplayer: undefined,
		repeat: false
	};
	
	
	/** A factory for API calls that either set listeners or return data **/
	function dataListenerFactory(player, dataType, eventType) {
		return function(arg) {
			switch ($.fn.jwplayerUtils.typeOf(arg)) {
				case "function":
					if (!$.fn.jwplayerUtils.isNull(eventType)) {
						player.addEventListener(eventType, arg);
					}
					break;
				default:
					if (!$.fn.jwplayerUtils.isNull(dataType)) {
						return player.controller.mediaInfo()[dataType];
					}
					return player.controller.mediaInfo();
			}
			return $.jwplayer(player.id);
		};
	}
	
	
	function api(player) {
		if (!$.fn.jwplayerUtils.isNull(player.id)) {
			return player;
		}
		return {
			play: player.controller.play,
			pause: player.controller.pause,
			stop: player.controller.stop,
			seek: player.controller.seek,
			
			resize: player.controller.resize,
			fullscreen: player.controller.fullscreen,
			volume: player.controller.volume,
			mute: player.controller.mute,
			load: player.controller.load,
			
			addEventListener: player.controller.addEventListener,
			removeEventListener: player.controller.removeEventListener,
			sendEvent: player.controller.sendEvent,
			
			ready: dataListenerFactory(player, null, $.fn.jwplayer.events.JWPLAYER_READY),
			error: dataListenerFactory(player, null, $.fn.jwplayer.events.JWPLAYER_ERROR),
			complete: dataListenerFactory(player, null, $.fn.jwplayer.events.JWPLAYER_MEDIA_COMPLETE),
			state: dataListenerFactory(player, 'state', $.fn.jwplayer.events.JWPLAYER_PLAYER_STATE),
			buffer: dataListenerFactory(player, 'buffer', $.fn.jwplayer.events.JWPLAYER_MEDIA_BUFFER),
			time: dataListenerFactory(player, null, $.fn.jwplayer.events.JWPLAYER_MEDIA_TIME),
			position: dataListenerFactory(player, 'position'),
			duration: dataListenerFactory(player, 'duration'),
			width: dataListenerFactory(player, 'width'),
			height: dataListenerFactory(player, 'height'),
			meta: dataListenerFactory(player, null, $.fn.jwplayer.events.JWPLAYER_MEDIA_META),
			
			id: player.model.config.id,
			config: player.model.config,
			version: '0.1-alpha',
			skin: player.skin
		};
	}
	
	function jwplayer(selector) {
		if ($.fn.jwplayerUtils.isNull(selector)) {
			for (var player in players) {
				return api(players[player]);
			}
		} else {
			if (selector.indexOf('#') === 0) {
				selector = selector.substr(1, selector.length);
			}
			return api(players[selector]);
		}
		return null;
	}
	
	$.fn.jwplayer.states = {
		IDLE: 'IDLE',
		BUFFERING: 'BUFFERING',
		PLAYING: 'PLAYING',
		PAUSED: 'PAUSED'
	};
	
	$.fn.jwplayer.events = {
		JWPLAYER_READY: 'jwplayerReady',
		JWPLAYER_FULLSCREEN: 'jwplayerFullscreen',
		JWPLAYER_RESIZE: 'jwplayerResize',
		//JWPLAYER_LOCKED: 'jwplayerLocked',
		//JWPLAYER_UNLOCKED: 'jwplayerLocked',
		JWPLAYER_ERROR: 'jwplayerError',
		JWPLAYER_MEDIA_BUFFER: 'jwplayerMediaBuffer',
		JWPLAYER_MEDIA_BUFFER_FULL: 'jwplayerMediaBufferFull',
		JWPLAYER_MEDIA_ERROR: 'jwplayerMediaError',
		JWPLAYER_MEDIA_LOADED: 'jwplayerMediaLoaded',
		JWPLAYER_MEDIA_COMPLETE: 'jwplayerMediaComplete',
		JWPLAYER_MEDIA_TIME: 'jwplayerMediaTime',
		JWPLAYER_MEDIA_VOLUME: 'jwplayerMediaVolume',
		JWPLAYER_MEDIA_META: 'jwplayerMediaMeta',
		JWPLAYER_MEDIA_MUTE: 'jwplayerMediaMute',
		JWPLAYER_PLAYER_STATE: 'jwplayerPlayerState'
	};
	
	/** Extending jQuery **/
	$.extend({
		'jwplayer': jwplayer
	});
	
	/** Automatically initializes the player for all <video> tags with the JWPlayer class. **/
	$(document).ready(function() {
		$("video.jwplayer").jwplayer();
	});
	
})(jQuery);
/**
 * JW Player Defaul
 *
 * @author jeroen
 * @version 1.0alpha
 * @lastmodifiedauthor zach
 * @lastmodifieddate 2010-04-11
 */
(function($) {

	/** Constructor **/
	$.fn.jwplayerDefaultSkin = '<?xml version="1.0" ?><skin author="LongTail Video" name="Five" version="1.0"><settings><setting name="backcolor" value="0xFFFFFF"/><setting name="frontcolor" value="0x000000"/><setting name="lightcolor" value="0x000000"/><setting name="screencolor" value="0x000000"/></settings><components><component name="controlbar"><settings><setting name="margin" value="20"/><setting name="fontsize" value="11"/></settings><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFJJREFUeNrslLENwAAIwxLU/09j5AiOgD5hVQzNAVY8JK4qEfHMIKBnd2+BQlBINaiRtL/aV2rdzYBsM6CIONbI1NZENTr3RwdB2PlnJgJ6BRgA4hwu5Qg5iswAAAAASUVORK5CYII="/><element name="capLeft" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="capRight" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="divider" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="playButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEhJREFUeNpiYqABYBo1dNRQ+hr6H4jvA3E8NS39j4SpZvh/LJig4YxEGEqy3kET+w+AOGFQRhTJhrEQkGcczfujhg4CQwECDADpTRWU/B3wHQAAAABJRU5ErkJggg=="/><element name="pauseButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpiYBgFo2DwA0YC8v/R1P4nRu+ooaOGUtnQUTAKhgIACDAAFCwQCfAJ4gwAAAAASUVORK5CYII="/><element name="prevButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtJREFUeNpiYBgFo2Dog/9QDAPyQHweTYwiQ/2B+D0Wi8g2tB+JTdBQRiIMJVkvEy0iglhDF9Aq9uOpHVEwoE+NJDUKRsFgAAABBgDe2hqZcNNL0AAAAABJRU5ErkJggg=="/><element name="nextButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAElJREFUeNpiYBgFo2Dog/9AfB6I5dHE/lNqKAi/B2J/ahsKw/3EGMpIhKEk66WJoaR6fz61IyqemhEFSlL61ExSo2AUDAYAEGAAiG4hj+5t7M8AAAAASUVORK5CYII="/><element name="timeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpiYBgFo2AU0Bwwzluw+D8tLWARFhKiqQ9YuLg4aWsBGxs7bS1gZ6e5BWyjSX0UjIKhDgACDABlYQOGh5pYywAAAABJRU5ErkJggg=="/><element name="timeSliderBuffer" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFo2AU0Bww1jc0/aelBSz8/Pw09QELOzs7bS1gY2OjrQWsrKy09gHraFIfBaNgqAOAAAMAvy0DChXHsZMAAAAASUVORK5CYII="/><element name="timeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpiYBgFo2AU0BwwAvF/WlrARGsfjFow8BaMglEwCugAAAIMAOHfAQunR+XzAAAAAElFTkSuQmCC"/><element name="timeSliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAICAYAAAA870V8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUeNpiZICA/yCCiQEJUJcDEGAAY0gBD1/m7Q0AAAAASUVORK5CYII="/><element name="muteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiYBgFIw3MB+L/5Gj8j6yRiRTFyICJXHfTXyMLAXlGati4YDRFDj8AEGAABk8GSqqS4CoAAAAASUVORK5CYII="/><element name="unmuteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFgxz8p7bm+cQa+h8LHy7GhEcjIz4bmAjYykiun/8j0fakGPIfTfPgiSr6aB4FVAcAAQYAWdwR1G1Wd2gAAAAASUVORK5CYII="/><element name="volumeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGpJREFUeNpi/P//PwM9ABMDncCoRYPfIqqDZcuW1UPp/6AUDcNM1DQYKtRAlaAj1mCSLSLXYIIWUctgDItoZfDA5aOoqKhGEANIM9LVR7SymGDQUctikuOIXkFNdhHEOFrDjlpEd4sAAgwAriRMub95fu8AAAAASUVORK5CYII="/><element name="volumeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpi/P//PwM9ABMDncCoRYPfIlqAeij9H5SiYZiqBqPTlFqE02BKLSLaYFItIttgQhZRzWB8FjENiuRJ7aAbsMQwYMl7wDIsWUUQ42gNO2oR3S0CCDAAKhKq6MLLn8oAAAAASUVORK5CYII="/><element name="fullscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE5JREFUeNpiYBgFo2DQA0YC8v/xqP1PjDlMRDrEgUgxkgHIlfZoriVGjmzLsLFHAW2D6D8eA/9Tw7L/BAwgJE90PvhPpNgoGAVDEQAEGAAMdhTyXcPKcAAAAABJRU5ErkJggg=="/><element name="normalscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNpiYBgFo2DIg/9UUkOUAf8JiFFsyX88fJyAkcQgYMQjNkzBoAgiezyRbE+tFGSPxQJ7auYBmma0UTAKBhgABBgAJAEY6zON61sAAAAASUVORK5CYII="/></elements></component><component name="display"><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC"/><element name="playIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg=="/><element name="muteIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNrs1jEOgCAMBVAg7t5/8qaoIy4uoobyXsLCxA+0NCUAAADGUWvdQoQ41x4ixNBB2hBvBskdD3w5ZCkl3+33VqI0kjBBlh9rp+uTcyOP33TnolfsU85XX3yIRpQph8ZQY3wTZtU5AACASA4BBgDHoVuY1/fvOQAAAABJRU5ErkJggg=="/><element name="errorIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWlJREFUeNrsl+1twjAQhsHq/7BBYQLYIBmBDcoGMAIjtBPQTcII2SDtBDBBwrU6pGsUO7YbO470PtKJkz9iH++d4ywWAAAAAABgljRNsyWr2bZzDuJG1rLdZhcMbTjrBCGDyUKsqQLFciJb9bSvuG/WagRVRUVUI6gqy5HVeKWfSgRyJruKIU//TrZTSn2nmlaXThrloi/v9F2STC1W4+Aw5cBzkquRc09bofFNc6YLxEON0VUZS5FPTftO49vMjRsIF3RhOGr7/D/pJw+FKU+q0vDyq8W42jCunDqI3LC5XxNj2wHLU1XjaRnb0Lhykhqhhd8MtSF5J9tbjCv4mXGvKJz/65FF/qJryyaaIvzP2QRxZTX2nTuXjvV/VPFSwyLnW7mpH99yTh1FEVro6JBSd40/pMrRdV8vPtcKl28T2pT8TnFZ4yNosct3Q0io6JfBiz1FlGdqVQH3VHnepAEAAAAAADDzEGAAcTwB10jWgxcAAAAASUVORK5CYII="/><element name="bufferIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAuhJREFUeNrsWr9rU1EUznuNGqvFQh1ULOhiBx0KDtIuioO4pJuik3FxFfUPaAV1FTdx0Q5d2g4FFxehTnEpZHFoBy20tCIWtGq0TZP4HfkeHB5N8m6Sl/sa74XDybvv3vvOd8/Pe4lXrVZT3dD8VJc0B8QBcUAcEAfESktHGeR5XtMfqFQq/f92zPe/NbtGlKTdCY30kuxrpMGO94BlQCXs+rbh3ONgA6BlzP1p20d80gEI5hmA2A92Qua1Q2PtAFISM+bvjMG8U+Q7oA3rQGASwrYCU6WpNdLGYbA+Pq5jjXIiwi8EEa2UDbQSaKOIuV+SlkcCrfjY8XTI9EpKGwP0C2kru2hLtHqa4zoXtZRWyvi4CLwv9Opr6Hkn6A9HKgEANsQ1iqC3Ub/vRUk2JgmRkatK36kVrnt0qObunwUdUUMXMWYpakJsO5Am8tAw2GBIgwWA+G2S2dMpiw0gDioQRQJoKhRb1QiDwlHZUABYbaXWsm5ae6loTE4ZDxN4CZar8foVzOJ2iyZ2kWF3t7YIevffaMT5yJ70kQb2fQ1sE5SHr2wazs2wgMxgbsEKEAgxAvZUJbQLBGTSBMgNrncJbA6AljtS/eKDJ0Ez+DmrQEzXS2h1Ck25kAg0IZcUOaydCy4sYnN2fOA+2AP16gNoHALlQ+fwH7XO4CxLenUpgj4xr6ugY2roPMbMx+Xs18m/E8CVEIhxsNeg83XWOAN6grG3lGbk8uE5fr4B/WH3cJw+co/l9nTYsSGYCJ/lY5/qv0thn6nrIWmjeJcPSnWOeY++AkF8tpJHIMAUs/MaBBpj3znZfQo5psY+ZrG4gv5HickjEOymKjEeRpgyST6IuZcTcWbnjcgdPi5ghxciRKsl1lDSsgwA1i8fssonJgzmTSqfGUkCENndNdAL7PS6QQ7ZYISTo+1qq0LEWjTWcvY4isa4z+yfQB+7ooyHVg5RI7/i1Ijn/vnggDggDogD4oC00P4KMACd/juEHOrS4AAAAABJRU5ErkJggg=="/></elements></component><component name="dock"><elements><element name="button" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUeNrs0cEJACAQA8Eofu0fu/W6EM5ZSAFDRpKTBs00CQQEBAQEBAQEBAQEBAQEBATkK8iqbY+AgICAgICAgICAgICAgICAgIC86QowAG5PAQzEJ0lKAAAAAElFTkSuQmCC"/></elements></component><component name="playlist"><elements><element name="item" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAIAAAC1nk4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNrs2NEJwCAMBcBYuv/CFuIE9VN47WWCR7iocXR3pdWdGPqqwIoMjYfQeAiNh9B4JHc6MHQVHnjggQceeOCBBx77TifyeOY0iHi8DqIdEY8dD5cL094eePzINB5CO/LwcOTptNB4CP25L4TIbZzpU7UEGAA5wz1uF5rF9AAAAABJRU5ErkJggg=="/><element name="sliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNrsy6ENACAMAMHClp2wYxZLAg5Fcu9e3OjuOKqqfTMzbs14CIZhGIZhGIZhGP4VLwEGAK/BBnVFpB0oAAAAAElFTkSuQmCC"/><element name="sliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrsy7ENACAMBLE8++8caFFKKiRffU53112SGs3ttOohGIZhGIZhGIZh+Fe8BRgAiaUGde6NOSEAAAAASUVORK5CYII="/></elements></component></components></skin>';
		
})(jQuery);
/**
 * JW Player view component
 *
 * @author zach
 * @version 1.0alpha
 * @lastmodifieddate 2010-04-11
 */
(function($) {
	var logoDefaults = {
		prefix: "http://l.longtailvideo.com/html5/0/",
		file: "logo.png",
		link: "http://www.longtailvideo.com/players/jw-flv-player/",
		margin: 8,
		out: 0.5,
		over: 1,
		timeout: 3,
		hide: "true",
		position: "bottom-left",
		width: 93,
		height: 30
	};
	
	displays = {};
	
	$.fn.jwplayerDisplay = function(player, domelement) {
		displays[player.id] = {};
		displays[player.id].domelement = domelement;
		if ($.fn.jwplayerUtils.isiPhone()) {
			domelement.attr('poster', $.fn.jwplayerUtils.getAbsolutePath(player.config.image));
		} else {
			setupDisplay(player);
			player.state(stateHandler);
			player.mute(stateHandler);
			player.error(function(obj) {
			
			});
		}
	};
	
	function setupDisplay(player) {
		var meta = player.meta();
		var html = [];
		html.push("<div id='" + player.id + "_display'>");
		html.push("<a id='" + player.id + "_displayImage' href='" + $.fn.jwplayerUtils.getAbsolutePath(meta.sources[meta.source].file) + "'>&nbsp;</a>");
		html.push("<div id='" + player.id + "_displayIconBackground' alt='Click to play video'>");
		html.push("<img id='" + player.id + "_displayIcon' src='" + player.skin.display.elements.playIcon.src + "' alt='Click to play video' />");
		html.push('</div>');
		html.push('<a id="' + player.id + '_logo" target="_blank" href="' + logoDefaults.link + '">&nbsp;</a>');
		html.push('</div>');
		displays[player.id].domelement.before(html.join(''));
		setupDisplayElements(player);
	}
	
	function setupDisplayElements(player) {
		var displayElements = initializeDisplayElements(player);
		for (var element in displayElements) {
			var elementId = ['#', player.id, '_', element];
			displays[player.id][element] = $(elementId.join(''));
			displays[player.id][element].css(displayElements[element].style);
			if (displayElements[element].click !== undefined) {
				displays[player.id][element].click(displayElements[element].click);
			}
		}
	}
	
	function initializeDisplayElements(player) {
		var meta = player.meta();
		var elements = {
			display: {
				style: {
					cursor: 'pointer',
					width: meta.width,
					height: meta.height,
					position: 'relative',
					'z-index': 50,
					margin: 0,
					padding: 0
				}
			},
			displayIcon: {
				style: {
					cursor: 'pointer',
					position: 'absolute',
					top: (player.skin.display.elements.background.height - player.skin.display.elements.playIcon.height) / 2,
					left: (player.skin.display.elements.background.width - player.skin.display.elements.playIcon.width) / 2,
					border: 0,
					margin: 0,
					padding: 0
				}
			},
			displayIconBackground: {
				style: {
					cursor: 'pointer',
					position: 'absolute',
					top: (meta.height - player.skin.display.elements.background.height) / 2,
					left: (meta.width - player.skin.display.elements.background.width) / 2,
					border: 0,
					'background-image': (['url(', player.skin.display.elements.background.src, ')']).join(''),
					width: player.skin.display.elements.background.width,
					height: player.skin.display.elements.background.height,
					margin: 0,
					padding: 0
				},
				click: clickHandler(player)
			},
			displayImage: {
				style: {
					display: 'block',
					background: ([player.config.screencolor, ' url(', $.fn.jwplayerUtils.getAbsolutePath(player.config.image), ') no-repeat center center']).join(''),
					width: meta.width,
					height: meta.height,
					position: 'absolute',
					cursor: 'pointer',
					left: 0,
					top: 0,
					margin: 0,
					padding: 0,
					'text-decoration': 'none'
				},
				click: clickHandler(player)
			},
			logo: {
				style: {
					position: 'absolute',
					width: logoDefaults.width,
					height: logoDefaults.height,
					'background-image': (['url(', logoDefaults.prefix, logoDefaults.file, ')']).join(''),
					margin: 0,
					padding: 0,
					display: 'none',
					'text-decoration': 'none'
				}
			}
		};
		var positions = logoDefaults.position.split("-");
		for (var position in positions) {
			elements.logo.style[positions[position]] = logoDefaults.margin;
		}
		return elements;
	}
	
	function clickHandler(player) {
		return function(evt) {
			if (player.media === undefined) {
				return;
			}
			if (typeof evt.preventDefault != 'undefined') {
				evt.preventDefault(); // W3C
			} else {
				evt.returnValue = false; // IE
			}
			if (player.model.state != $.fn.jwplayer.states.PLAYING) {
				player.play();
			} else {
				player.pause();
			}
		};
	}
	
	function setIcon(player, path) {
		$("#" + player.id + "_displayIcon")[0].src = path;
	}
	
	function animate(element, state) {
		var speed = 'slow';
		if (!displays[player.id].animate) {
			return;
		}
		if (state) {
			element.slideDown(speed, function() {
				animate(element);
			});
		} else {
			element.slideUp(speed, function() {
				animate(element, true);
			});
		}
	}
	
	
	function stateHandler(obj) {
		player = $.jwplayer(obj.id);
		displays[player.id].animate = false;
		switch (player.model.state) {
			case $.fn.jwplayer.states.BUFFERING:
				displays[obj.id].logo.fadeIn(0, function() {
					setTimeout(function() {
						displays[obj.id].logo.fadeOut(logoDefaults.out * 1000);
					}, logoDefaults.timeout * 1000);
				});
				displays[obj.id].displayIcon[0].src = player.skin.display.elements.bufferIcon.src;
				displays[obj.id].displayIcon.css({
					"display": "block",
					top: (player.skin.display.elements.background.height - player.skin.display.elements.bufferIcon.height) / 2 + "px",
					left: (player.skin.display.elements.background.width - player.skin.display.elements.bufferIcon.width) / 2 + "px"
				});
				displays[player.id].animate = true;
				// TODO: Buffer Icon rotation
				if (false) {
					animate(displays[obj.id].displayIconBackground);
				}
				displays[obj.id].displayIconBackground.css('display', 'none');
				break;
			case $.fn.jwplayer.states.PAUSED:
				displays[obj.id].logo.fadeIn(0);
				displays[obj.id].displayImage.css("background", "transparent no-repeat center center");
				displays[obj.id].displayIconBackground.css("display", "block");
				displays[obj.id].displayIcon[0].src = player.skin.display.elements.playIcon.src;
				displays[obj.id].displayIcon.css({
					"display": "block",
					top: (player.skin.display.elements.background.height - player.skin.display.elements.playIcon.height) / 2 + "px",
					left: (player.skin.display.elements.background.width - player.skin.display.elements.playIcon.width) / 2 + "px"
				});
				break;
			case $.fn.jwplayer.states.IDLE:
				displays[obj.id].logo.fadeOut(0);
				displays[obj.id].displayImage.css("background", "#ffffff url('" + $.fn.jwplayerUtils.getAbsolutePath(player.config.image) + "') no-repeat center center");
				displays[obj.id].displayIconBackground.css("display", "block");
				displays[obj.id].displayIcon[0].src = player.skin.display.elements.playIcon.src;
				displays[obj.id].displayIcon.css({
					"display": "block",
					top: (player.skin.display.elements.background.height - player.skin.display.elements.playIcon.height) / 2 + "px",
					left: (player.skin.display.elements.background.width - player.skin.display.elements.playIcon.width) / 2 + "px"
				});
				break;
			default:
				if (player.mute()) {
					displays[obj.id].displayImage.css("background", "transparent no-repeat center center");
					displays[obj.id].displayIconBackground.css("display", "block");
					displays[obj.id].displayIcon[0].src = player.skin.display.elements.muteIcon.src;
					displays[obj.id].displayIcon.css({
						"display": "block",
						top: (player.skin.display.elements.muteIcon.height - player.skin.display.elements.muteIcon.height) / 2 + "px",
						left: (player.skin.display.elements.background.width - player.skin.display.elements.muteIcon.width) / 2 + "px"
					});
				} else {
					try {
						displays[obj.id].logo.clearQueue();
					} catch (err){
						
					}
					displays[obj.id].logo.fadeIn(0, function() {
						setTimeout(function() {
							displays[obj.id].logo.fadeOut(logoDefaults.out * 1000);
						}, logoDefaults.timeout * 1000);
					});
					displays[obj.id].displayImage.css("background", "transparent no-repeat center center");
					displays[obj.id].displayIconBackground.css("display", "none");
					displays[obj.id].displayIcon.css("display", "none");
				}
				break;
		}
	}
	
})(jQuery);
/**
 * JW Player Flash Media component
 *
 * @author zach
 * @version 1.0alpha
 * @lastmodifieddate 2010-04-12
 */
(function($) {

	var controllerEvents = {
		ERROR: $.fn.jwplayer.events.JWPLAYER_ERROR,
		ITEM: "ITEM",
		MUTE: $.fn.jwplayer.events.JWPLAYER_MEDIA_MUTE,
		PLAY: "PLAY",
		PLAYLIST: "PLAYLIST",
		RESIZE: $.fn.jwplayer.events.JWPLAYER_RESIZE,
		SEEK: "SEEK",
		STOP: "STOP",
		VOLUME: $.fn.jwplayer.events.JWPLAYER_MEDIA_VOLUME
	};
	
	var modelEvents = {
		BUFFER: $.fn.jwplayer.events.JWPLAYER_MEDIA_BUFFER,
		ERROR: $.fn.jwplayer.events.JWPLAYER_MEDIA_ERROR,
		LOADED: $.fn.jwplayer.events.JWPLAYER_MEDIA_LOADED,
		META: $.fn.jwplayer.events.JWPLAYER_MEDIA_META,
		STATE: $.fn.jwplayer.events.JWPLAYER_PLAYER_STATE,
		TIME: $.fn.jwplayer.events.JWPLAYER_MEDIA_TIME
	};
	
	var viewEvents = {
		FULLSCREEN: "FULLSCREEN",
		ITEM: "ITEM",
		LINK: "LINK",
		LOAD: "LOAD",
		MUTE: "MUTE",
		NEXT: "NEXT",
		PLAY: "PLAY",
		PREV: "PREV",
		REDRAW: "REDRAW",
		SEEK: "SEEK",
		STOP: "STOP",
		TRACE: "TRACE",
		VOLUME: "VOLUME"
	};
	
	
	$.fn.jwplayerMediaFlash = function(player) {
		var options = {};
		var media = {
			play: play(player),
			pause: pause(player),
			seek: seek(player),
			volume: volume(player),
			mute: mute(player),
			fullscreen: fullscreen(player),
			load: load(player),
			resize: resize(player),
			state: $.fn.jwplayer.states.IDLE,
			hasChrome: true
			
		};
		player.media = media;
		$.fn.jwplayerView.embedFlash(player, options);
	};
	
	function stateHandler(event, player) {
		player.model.state = event.newstate;
		player.sendEvent($.fn.jwplayer.events.JWPLAYER_PLAYER_STATE, {
			oldstate: event.oldstate,
			newstate: event.newstate
		});
	}
	
	
	function addEventListeners(player) {
		if (player.model.domelement[0].addControllerListener === undefined) {
			setTimeout(function() {
				addEventListeners(player);
			}, 100);
			return;
		}
		$.fn.jwplayerMediaFlash.forwarders[player.id] = {};
		var video = $("#" + player.id);
		for (var controllerEvent in controllerEvents) {
			$.fn.jwplayerMediaFlash.forwarders[player.id][controllerEvents[controllerEvent]] = forwardFactory(controllerEvents[controllerEvent], player);
			video[0].addControllerListener(controllerEvent, "$.fn.jwplayerMediaFlash.forwarders." + player.id + "." + controllerEvents[controllerEvent]);
		}
		for (var modelEvent in modelEvents) {
			$.fn.jwplayerMediaFlash.forwarders[player.id][modelEvents[modelEvent]] = forwardFactory(modelEvents[modelEvent], player);
			video[0].addModelListener(modelEvent, "$.fn.jwplayerMediaFlash.forwarders." + player.id + "." + modelEvents[modelEvent]);
		}
		$.fn.jwplayerMediaFlash.forwarders[player.id][viewEvents.MUTE] = forwardFactory(viewEvents.MUTE, player);
		video[0].addViewListener(viewEvents.MUTE, "$.fn.jwplayerMediaFlash.forwarders." + player.id + "." + viewEvents.MUTE);
		
	}
	
	function forwardFactory(type, player) {
		return function(event) {
			forward(event, type, player);
		};
	}
	
	$.fn.jwplayerMediaFlash.playerReady = function(evt) {
		addEventListeners($.jwplayer(evt.id));
	};
	
	$.fn.jwplayerMediaFlash.forwarders = {};
	
	function forward(event, type, player) {
		switch (type) {
			case $.fn.jwplayer.events.JWPLAYER_MEDIA_META:
				player.sendEvent(type, event);
				break;
			case $.fn.jwplayer.events.JWPLAYER_MEDIA_MUTE:
				player.model.mute = event.state;
				event.mute = event.state;
				player.sendEvent(type, event);
				break;
			case $.fn.jwplayer.events.JWPLAYER_MEDIA_VOLUME:
				player.model.volume = event.percentage;
				event.volume = event.percentage;
				player.sendEvent(type, event);
				break;
			case $.fn.jwplayer.events.JWPLAYER_MEDIA_RESIZE:
				player.model.fullscreen = event.fullscreen;
				player.model.height = event.height;
				player.model.width = event.width;
				player.sendEvent(type, event);
				break;
			case $.fn.jwplayer.events.JWPLAYER_MEDIA_TIME:
				if (player.model.duration === 0) {
					player.model.duration = event.duration;
				}
				player.model.position = event.position;
				player.sendEvent(type, event);
				break;
			case $.fn.jwplayer.events.JWPLAYER_PLAYER_STATE:
				if (event.newstate == "COMPLETED") {
					player.sendEvent($.fn.jwplayer.events.JWPLAYER_MEDIA_COMPLETE, event);
				} else {
					stateHandler(event, player);
				}
				break;
			case $.fn.jwplayer.events.JWPLAYER_MEDIA_BUFFER:
				event.bufferPercent = event.percentage;
				player.model.buffer = event.percentage;
				player.sendEvent(type, event);
				break;
			default:
				player.sendEvent(type, event);
				break;
		}
	}
	
	function play(player) {
		return function() {
			player.model.domelement[0].sendEvent("PLAY", true);
		};
	}
	
	/** Switch the pause state of the player. **/
	function pause(player) {
		return function() {
			player.model.domelement[0].sendEvent("PLAY", false);
		};
	}
	
	
	/** Seek to a position in the video. **/
	function seek(player) {
		return function(position) {
			player.model.domelement[0].sendEvent("SEEK", position);
		};
	}
	
	
	/** Stop playback and loading of the video. **/
	function stop(player) {
		return function() {
			player.model.domelement[0].sendEvent("STOP");
		};
	}
	
	
	/** Change the video's volume level. **/
	function volume(player) {
		return function(position) {
			player.model.domelement[0].sendEvent("VOLUME", position);
		};
	}
	
	/** Switch the mute state of the player. **/
	function mute(player) {
		return function(state) {
			if (((player.model.domelement[0].getConfig().mute === true) && (state === false)) || state) {
				player.model.domelement[0].sendEvent("MUTE", state);
			}
		};
	}
	
	/** Switch the fullscreen state of the player. **/
	function fullscreen(player) {
		return function(state) {
			player.model.fullscreen = state;
			$.fn.jwplayerUtils.log("Fullscreen does not work for Flash media.");
		};
	}
	
	/** Load a new video into the player. **/
	function load(player) {
		return function(path) {
			path = $.fn.jwplayerUtils.getAbsolutePath(path);
			player.model.domelement[0].sendEvent("LOAD", path);
			player.model.domelement[0].sendEvent("PLAY");
		};
	}
	
	/** Resizes the video **/
	function resize(player) {
		return function(width, height) {
			player.model.width = width;
			player.model.height = height;
			player.css("width", width);
			player.css("height", height);
			player.sendEvent($.fn.jwplayer.events.JWPLAYER_MEDIA_RESIZE, {
				width: width,
				hieght: height
			});
		};
	}
	
})(jQuery);
/**
 * JW Player Video Media component
 *
 * @author zach
 * @version 1.0alpha
 * @lastmodifieddate 2010-04-12
 */
(function($) {
	var states = {
		"ended": $.fn.jwplayer.states.IDLE,
		"playing": $.fn.jwplayer.states.PLAYING,
		"pause": $.fn.jwplayer.states.PAUSED,
		"buffering": $.fn.jwplayer.states.BUFFERING
	};
	
	var events = {
		'abort': generalHandler,
		'canplay': stateHandler,
		'canplaythrough': stateHandler,
		'durationchange': metaHandler,
		'emptied': generalHandler,
		'ended': stateHandler,
		'error': errorHandler,
		'loadeddata': metaHandler,
		'loadedmetadata': metaHandler,
		'loadstart': stateHandler,
		'pause': stateHandler,
		'play': positionHandler,
		'playing': stateHandler,
		'progress': progressHandler,
		'ratechange': generalHandler,
		'seeked': stateHandler,
		'seeking': stateHandler,
		'stalled': stateHandler,
		'suspend': stateHandler,
		'timeupdate': positionHandler,
		'volumechange': generalHandler,
		'waiting': stateHandler,
		'canshowcurrentframe': generalHandler,
		'dataunavailable': generalHandler,
		'empty': generalHandler,
		'load': generalHandler,
		'loadedfirstframe': generalHandler
	};
	
	
	$.fn.jwplayerMediaVideo = function(player) {
		player.model.domelement.attr('loop', player.config.repeat);
		var media = {
			play: play(player),
			pause: pause(player),
			seek: seek(player),
			stop: stop(player),
			volume: volume(player),
			mute: mute(player),
			fullscreen: fullscreen(player),
			load: load(player),
			resize: resize(player),
			state: $.fn.jwplayer.states.IDLE,
			interval: null,
			loadcount: 0,
			hasChrome: false
		};
		player.media = media;
		media.mute(player.mute());
		media.volume(player.volume());
		$.each(events, function(event, handler) {
			player.model.domelement[0].addEventListener(event, function(event) {
				handler(event, player);
			}, true);
		});
	};
	
	function generalHandler(event, player) {
	}
	
	function stateHandler(event, player) {
		if (states[event.type]) {
			setState(player, states[event.type]);
		}
	}
	
	function setState(player, newstate) {
		if (player.media.stopped) {
			newstate = $.fn.jwplayer.states.IDLE;
		}
		if (player.model.state != newstate) {
			var oldstate = player.model.state;
			player.media.state = newstate;
			player.model.state = newstate;
			player.sendEvent($.fn.jwplayer.events.JWPLAYER_PLAYER_STATE, {
				oldstate: oldstate,
				newstate: newstate
			});
		}
		if (newstate == $.fn.jwplayer.states.IDLE) {
			clearInterval(player.media.interval);
			player.media.interval = null;
			player.sendEvent($.fn.jwplayer.events.JWPLAYER_MEDIA_COMPLETE);
			if (player.config.repeat && !player.media.stopped) {
				player.play();
			}
			if (player.model.domelement.css('display') != 'none') {
				player.model.domelement.css('display', 'none');
			}
		}
		player.media.stopped = false;
	}
	
	function metaHandler(event, player) {
		var meta = {
			height: event.target.videoHeight,
			width: event.target.videoWidth,
			duration: event.target.duration
		};
		if (player.model.duration === 0) {
			player.model.duration = event.target.duration;
		}
		player.model.sources[player.model.source] = $.extend(player.model.sources[player.model.source], meta);
		player.sendEvent($.fn.jwplayer.events.JWPLAYER_MEDIA_META, meta);
	}
	
	function positionHandler(event, player) {
		if (player.media.stopped) {
			return;
		}
		if (!$.fn.jwplayerUtils.isNull(event.target)) {
			if (player.model.duration === 0) {
				player.model.duration = event.target.duration;
			}
			
			if (player.media.state == $.fn.jwplayer.states.PLAYING) {
				player.model.position = Math.round(event.target.currentTime * 10) / 10;
				player.sendEvent($.fn.jwplayer.events.JWPLAYER_MEDIA_TIME, {
					position: Math.round(event.target.currentTime * 10) / 10,
					duration: Math.round(event.target.duration * 10) / 10
				});
			}
		}
		progressHandler({}, player);
	}
	
	function progressHandler(event, player) {
		var bufferPercent, bufferTime, bufferFill;
		if (!isNaN(event.loaded / event.total)) {
			bufferPercent = event.loaded / event.total * 100;
			bufferTime = bufferPercent / 100 * (player.model.duration - player.model.domelement[0].currentTime);
		} else if ((player.model.domelement[0].buffered !== undefined) && (player.model.domelement[0].buffered.length > 0)) {
			maxBufferIndex = 0;
			if (maxBufferIndex >= 0) {
				bufferPercent = player.model.domelement[0].buffered.end(maxBufferIndex) / player.model.domelement[0].duration * 100;
				bufferTime = player.model.domelement[0].buffered.end(maxBufferIndex) - player.model.domelement[0].currentTime;
			}
		}
		
		bufferFill = bufferTime / player.model.config.bufferlength * 100;
		
		// TODO: Buffer underrun
		if (false) {
			if (bufferFill < 25 && player.media.state == $.fn.jwplayer.states.PLAYING) {
				setState($.fn.jwplayer.states.BUFFERING);
				player.media.bufferFull = false;
				if (!player.model.domelement[0].seeking) {
					player.model.domelement[0].pause();
				}
			} else if (bufferFill > 95 && player.media.state == $.fn.jwplayer.states.BUFFERING && player.media.bufferFull === false && bufferTime > 0) {
				player.sendEvent($.fn.jwplayer.events.JWPLAYER_MEDIA_BUFFER_FULL, {});
			}
		}
		
		if (player.media.bufferFull === false) {
			player.media.bufferFull = true;
			player.sendEvent($.fn.jwplayer.events.JWPLAYER_MEDIA_BUFFER_FULL, {});
		}
		
		if (!player.media.bufferingComplete) {
			if (bufferPercent == 100 && player.media.bufferingComplete === false) {
				player.media.bufferingComplete = true;
			}
			
			if (!$.fn.jwplayerUtils.isNull(bufferPercent)) {
				player.model.buffer = Math.round(bufferPercent);
				player.sendEvent($.fn.jwplayer.events.JWPLAYER_MEDIA_BUFFER, {
					bufferPercent: Math.round(bufferPercent)
					//bufferingComplete: player.media.bufferingComplete,
					//bufferFull: player.media.bufferFull,
					//bufferFill: bufferFill,
					//bufferTime: bufferTime
				});
			}
			
		}
	}
	
	function startInterval(player) {
		if (player.media.interval === null) {
			player.media.interval = window.setInterval(function() {
				positionHandler({}, player);
			}, 100);
		}
	}
	
	
	function errorHandler(event, player) {
		player.sendEvent($.fn.jwplayer.events.JWPLAYER_ERROR, {});
	}
	
	function play(player) {
		return function() {
			if (player.media.state != $.fn.jwplayer.states.PLAYING) {
				setState(player, $.fn.jwplayer.states.PLAYING);
				player.model.domelement[0].play();
			}
		};
	}
	
	/** Switch the pause state of the player. **/
	function pause(player) {
		return function() {
			player.model.domelement[0].pause();
		};
	}
	
	
	/** Seek to a position in the video. **/
	function seek(player) {
		return function(position) {
			player.model.domelement[0].currentTime = position;
			player.model.domelement[0].play();
		};
	}
	
	
	/** Stop playback and loading of the video. **/
	function stop(player) {
		return function() {
			player.media.stopped = true;
			player.model.domelement[0].pause();
			clearInterval(player.media.interval);
			player.media.interval = undefined;
			player.model.position = 0;
		};
	}
	
	
	/** Change the video's volume level. **/
	function volume(player) {
		return function(position) {
			player.model.volume = position;
			player.model.domelement[0].volume = position / 100;
			player.sendEvent($.fn.jwplayer.events.JWPLAYER_MEDIA_VOLUME, {
				volume: Math.round(player.model.domelement[0].volume * 100)
			});
		};
	}
	
	/** Switch the mute state of the player. **/
	function mute(player) {
		return function(state) {
			player.model.mute = state;
			player.model.domelement[0].muted = state;
			player.sendEvent($.fn.jwplayer.events.JWPLAYER_MEDIA_MUTE, {
				mute: player.model.domelement[0].muted
			});
		};
	}
	
	/** Resize the player. **/
	function resize(player) {
		return function(width, height) {
			// TODO: Fullscreen
			if (false) {
				$("#" + player.id + "_jwplayer").css("position", 'fixed');
				$("#" + player.id + "_jwplayer").css("top", '0');
				$("#" + player.id + "_jwplayer").css("left", '0');
				$("#" + player.id + "_jwplayer").css("width", width);
				$("#" + player.id + "_jwplayer").css("height", height);
				player.model.width = $("#" + player.id + "_jwplayer").width;
				player.model.height = $("#" + player.id + "_jwplayer").height;
			}
			player.sendEvent($.fn.jwplayer.events.JWPLAYER_MEDIA_RESIZE, {
				fullscreen: player.model.fullscreen,
				width: width,
				hieght: height
			});
		};
	}
	
	/** Switch the fullscreen state of the player. **/
	function fullscreen(player) {
		return function(state) {
			player.model.fullscreen = state;
			if (state === true) {
				player.resize("100%", "100%");
			} else {
				player.resize(player.model.config.width, player.model.config.height);
			}
		};
	}
	
	/** Load a new video into the player. **/
	function load(player) {
		return function(path) {
			if (player.model.domelement.css('display') == 'none') {
				player.model.domelement.css('display', 'block');
			}
			
			setTimeout(function() {
				path = $.fn.jwplayerUtils.getAbsolutePath(path);
				if (path == player.model.domelement[0].src && player.media.loadcount > 0) {
					player.model.position = 0;
					player.model.domelement[0].currentTime = 0;
					setState(player, $.fn.jwplayer.states.BUFFERING);
					setState(player, $.fn.jwplayer.states.PLAYING);
					if (player.model.domelement[0].paused) {
						player.model.domelement[0].play();
					}
					return;
				} else if (path != player.model.domelement[0].src) {
					player.media.loadcount = 0;
				}
				player.media.loadcount++;
				player.media.bufferFull = false;
				player.media.bufferingComplete = false;
				setState(player, $.fn.jwplayer.states.BUFFERING);
				player.model.domelement[0].src = path;
				player.model.domelement[0].load();
				startInterval(player);
				try {
					player.model.domelement[0].currentTime = 0;					
				} catch (err){
					
				}
			}, 25);
		};
	}
	
})(jQuery);
/**
 * JW Player model component
 *
 * @author zach
 * @version 1.0alpha
 * @lastmodifieddate 2010-04-11
 */
(function($) {
	var jwplayerid = 1;
	
	var modelParams = {
		volume: 100,
		fullscreen: false,
		mute: false,
		start: 0,
		width: 480,
		height: 320,
		duration: 0
	};
	
	function createModel() {
		return {
			sources: {},
			state: $.fn.jwplayer.states.IDLE,
			source: 0,
			buffer: 0
		};
	}
	
	
	$.fn.jwplayerModel = function(domElement, options) {
		var model = createModel();
		model.config = $.extend(true, {}, $.fn.jwplayer.defaults, $.fn.jwplayerParse(domElement[0]), options);
		if ($.fn.jwplayerUtils.isNull(model.config.id)) {
			model.config.id = "jwplayer_" + jwplayerid++;
		}
		model.sources = model.config.sources;
		delete model.config.sources;
		model.domelement = domElement;
		for (var modelParam in modelParams) {
			if (!$.fn.jwplayerUtils.isNull(model.config[modelParam])) {
				model[modelParam] = model.config[modelParam];
			} else {
				model[modelParam] = modelParams[modelParam];
			}
		}
		//model = $.extend(true, {}, , model);
		return model;
	};
	
	$.fn.jwplayerModel.setActiveMediaProvider = function(player) {
		var source, sourceIndex;
		for (sourceIndex in player.model.sources) {
			source = player.model.sources[sourceIndex];
			if (source.type === undefined) {
				var extension = $.fn.jwplayerUtils.extension(source.file);
				if (extension == "ogv") {
					extension = "ogg";
				}
				source.type = 'video/' + extension + ';';
			}
			if ($.fn.jwplayerUtils.supportsType(source.type)) {
				player.model.source = sourceIndex;
				$.fn.jwplayerMediaVideo(player);
				return true;
			}
		}
		if ($.fn.jwplayerUtils.supportsFlash && player.state != $.fn.jwplayer.states.PLAYING) {
			for (sourceIndex in player.model.sources) {
				source = player.model.sources[sourceIndex];
				if ($.fn.jwplayerUtils.flashCanPlay(source.file)) {
					player.model.source = sourceIndex;
					$.fn.jwplayerMediaFlash(player);
					return true;
				}
			}
		}
		return false;
	};
	
})(jQuery);
/**
 * Parser for the JW Player.
 *
 * @author zach
 * @version 1.0alpha
 * @lastmodifieddate 2010-04-11
 */
(function($) {

	var elementAttributes = {
		element: {
			width: 'width',
			height: 'height',
			id: 'id',
			'class': 'className',
			name: 'name'
		},
		media: {
			src: 'file',
			preload: 'preload',
			autoplay: 'autostart',
			loop: 'repeat',
			controls: 'controls'
		},
		source: {
			src: 'file',
			type: 'type',
			media: 'media'
		},
		video: {
			poster: 'image'
		}
	};
	
	var parsers = {};
	
	$.fn.jwplayerParse = function(player) {
		return parseElement(player);
	};
	
	function getAttributeList(elementType, attributes) {
		if (attributes === undefined) {
			attributes = elementAttributes[elementType];
		} else {
			$.extend(attributes, elementAttributes[elementType]);
		}
		return attributes;
	}
	
	function parseElement(domElement, attributes) {
		if (parsers[domElement.tagName.toLowerCase()] && (attributes === undefined)) {
			return parsers[domElement.tagName.toLowerCase()](domElement);
		} else {
			attributes = getAttributeList('element', attributes);
			var configuration = {};
			for (var attribute in attributes) {
				if (attribute != "length") {
					var value = $(domElement).attr(attribute);
					if (!(value === "" || value === undefined)) {
						configuration[attributes[attribute]] = $(domElement).attr(attribute);
					}
				}
			}
			configuration.screencolor = (($(domElement).css("background-color") == "transparent") || ($(domElement).css("background-color") == "rgba(0, 0, 0, 0)")) ? "black" : $(domElement).css("background-color");
			configuration.plugins = {};
			return configuration;
		}
	}
	
	function parseMediaElement(domElement, attributes) {
		attributes = getAttributeList('media', attributes);
		var sources = [];
		if (!(navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length)){
			var currentElement = $(domElement).next();
			if (currentElement[0] !== undefined){
				while(currentElement[0].tagName.toLowerCase() == "source") {
					sources[sources.length] = parseSourceElement(currentElement[0]);
					currentElement = currentElement.next();
				}				
			}
		} else {
			$("source", domElement).each(function() {
				sources[sources.length] = parseSourceElement(this);
			});
		}
		var configuration = parseElement(domElement, attributes);
		if (configuration.file !== undefined) {
			sources[0] = {
				'file': configuration.file
			};
		}
		if (!$.fn.jwplayerUtils.isiPhone()) {
			domElement.src = undefined;
		}
		configuration.sources = sources;
		return configuration;
	}
	
	function parseSourceElement(domElement, attributes) {
		attributes = getAttributeList('source', attributes);
		return parseElement(domElement, attributes);
	}
	
	function parseVideoElement(domElement, attributes) {
		attributes = getAttributeList('video', attributes);
		var result = parseMediaElement(domElement, attributes);
		if (!$.fn.jwplayerUtils.isiPhone() && !$.fn.jwplayerUtils.isiPad()) {
			try {
				$(domElement).removeAttr('poster');
			} catch (err) {
			
			}
		}
		return result;
	}
	
	parsers.media = parseMediaElement;
	parsers.audio = parseMediaElement;
	parsers.source = parseSourceElement;
	parsers.video = parseVideoElement;
	
	
})(jQuery);
/**
 * JW Player component that loads / interfaces PNG skinning.
 *
 * @author jeroen
 * @version 1.0alpha
 * @lastmodifiedauthor zach
 * @lastmodifieddate 2010-04-11
 */
(function($) {

	/** Constructor **/
	$.fn.jwplayerSkinner = function(player, completeHandler) {
		load(player, completeHandler);
	};
	
	/** Load the skin **/
	function load(player, completeHandler) {
		$.ajax({
			url: player.model.config.skin,
			complete: function(xmlrequest, textStatus) {
				if (textStatus == "success") {
					loadSkin(player, xmlrequest.responseXML, completeHandler);
				} else {
					loadSkin(player, $.fn.jwplayerDefaultSkin, completeHandler);
				}
			}
			
		});
	}
	
	function loadSkin(player, xml, completeHandler) {
		var skin = {
			properties: {},
			incompleteElements: 0
		};
		player.skin = skin;
		var components = $('component', xml);
		if (components.length === 0) {
			return;
		}
		for (var componentIndex = 0; componentIndex < components.length; componentIndex++) {
			var componentName = $(components[componentIndex]).attr('name');
			var component = {
				settings: {},
				elements: {}
			};
			player.skin[componentName] = component;
			var elements = $(components[componentIndex]).find('element');
			player.skin.loading = true;
			for (var elementIndex = 0; elementIndex < elements.length; elementIndex++) {
				player.skin.incompleteElements++;
				loadImage(elements[elementIndex], componentName, player, completeHandler);
			}
			var settings = $(components[componentIndex]).find('setting');
			for (var settingIndex = 0; settingIndex < settings.length; settingIndex++) {
				player.skin[componentName].settings[$(settings[settingIndex]).attr("name")] = $(settings[settingIndex]).attr("value");
			}
			player.skin.loading = false;
			if (player.skin.incompleteElements === 0) {
				completeHandler();
			}
		}
	}
	
	/** Load the data for a single element. **/
	function loadImage(element, component, player, completeHandler) {
		var img = new Image();
		var elementName = $(element).attr('name');
		var elementSource = $(element).attr('src');
		var skinUrl = player.model.config.skin.substr(0, player.model.config.skin.lastIndexOf('/'));
		$(img).error(function() {
			player.skin.incompleteElements--;
			if ((player.skin.incompleteElements === 0) && (player.skin.loading === false)) {
				completeHandler();
			}
		});
		
		$(img).load(completeImageLoad(img, elementName, component, player, completeHandler));
		img.src = (elementSource.indexOf('data:image/png;base64,') === 0) ? elementSource : [skinUrl, component, elementSource].join("/");
	}
	
	function completeImageLoad(img, element, component, player, completeHandler) {
		return function() {
			player.skin[component].elements[element] = {
				height: img.height,
				width: img.width,
				src: img.src
			};
			player.skin.incompleteElements--;
			if ((player.skin.incompleteElements === 0) && (player.skin.loading === false)) {
				completeHandler();
			}
		};
	}
	
	$.fn.jwplayerSkinner.hasComponent = function(player, component) {
		return (player.skin[component] !== null);
	};
	
	
	$.fn.jwplayerSkinner.getSkinElement = function(player, component, element) {
		try {
			return player.skin[component].elements[element];
		} catch (err) {
			$.fn.jwplayerUtils.log("No such skin component / element: ", [player, component, element]);
		}
		return null;
	};
	
	
	$.fn.jwplayerSkinner.addSkinElement = function(player, component, name, element) {
		try {
			player.skin[component][name] = element;
		} catch (err) {
			$.fn.jwplayerUtils.log("No such skin component ", [player, component]);
		}
	};
	
	$.fn.jwplayerSkinner.getSkinProperties = function(player) {
		return player.skin.properties;
	};
	
})(jQuery);
/**
 * Utility methods for the JW Player.
 *
 * @author jeroen
 * @version 1.0alpha
 * @lastmodifiedauthor zach
 * @lastmodifieddate 2010-04-11
 */
(function($) {

	/** Constructor **/
	$.fn.jwplayerUtils = function() {
		return this.each(function() {
		});
	};
	
	//http://old.nabble.com/jQuery-may-add-$.browser.isiPhone-td11163329s27240.html
	$.fn.jwplayerUtils.isiPhone = function() {
		var agent = navigator.userAgent.toLowerCase();
		return agent.match(/iPhone/i);
	};
	
	$.fn.jwplayerUtils.isiPad = function() {
		var agent = navigator.userAgent.toLowerCase();
		return agent.match(/iPad/i);
	};
	
	/** Check if this client supports Flash player 9.0.115+ (FLV/H264). **/
	$.fn.jwplayerUtils.supportsFlash = function() {
		var version = '0,0,0,0';
		try {
			try {
				var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');
				try {
					axo.AllowScriptAccess = 'always';
				} catch (e) {
					version = '6,0,0';
				}
			} catch (e) {
			}
			version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1];
		} catch (e) {
			try {
				if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin) {
					version = (navigator.plugins['Shockwave Flash 2.0'] ||
					navigator.plugins['Shockwave Flash']).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1];
				}
			} catch (e) {
			}
		}
		var major = parseInt(version.split(',')[0], 10);
		var minor = parseInt(version.split(',')[2], 10);
		if (major > 9 || (major == 9 && minor > 97)) {
			return true;
		} else {
			return false;
		}
	};
	
	/** Filetypes supported by Flash **/
	var flashFileTypes = {
		'aac': true,
		'f4v': true,
		'flv': true,
		'm4a': true,
		'm4v': true,
		'mov': true,
		'mp3': true,
		'mp4': true
	};
	
	
	/** Check if this client supports Flash player 9.0.115+ (FLV/H264). **/
	$.fn.jwplayerUtils.flashCanPlay = function(fileName) {
		if (flashFileTypes[$.fn.jwplayerUtils.extension(fileName)]) {
			return true;
		}
		return false;
	};
	
	/** Check if this client supports playback for the specified type. **/
	$.fn.jwplayerUtils.supportsType = function(type) {
		try {
			return !!document.createElement('video').canPlayType(type);
		} catch (e) {
			return false;
		}
	};
	
	/** Check if this client supports HTML5 H.264 playback. **/
	$.fn.jwplayerUtils.supportsH264 = function() {
		return $.fn.jwplayerUtils.supportsType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"');
	};
	
	
	/** Check if this client supports HTML5 OGG playback. **/
	$.fn.jwplayerUtils.supportsOgg = function() {
		return $.fn.jwplayerUtils.supportsType('video/ogg; codecs="theora, vorbis"');
	};
	
	/** Returns the extension of a file name **/
	$.fn.jwplayerUtils.extension = function(path) {
		return path.substr(path.lastIndexOf('.') + 1, path.length);
	};
	
	/** Resets an element's CSS **/
	/*$.fn.jwplayerCSS = function(options) {
		return this.each(function() {
			var defaults = {
				'margin': 0,
				'padding': 0,
				'background': 'none',
				'border': 'none',
				'bottom': 'auto',
				'clear': 'none',
				'float': 'none',
				'font-family': '"Arial", "Helvetica", sans-serif',
				'font-size': 'medium',
				'font-style': 'normal',
				'font-weight': 'normal',
				'height': 'auto',
				'left': 'auto',
				'letter-spacing': 'normal',
				'line-height': 'normal',
				'max-height': 'none',
				'max-width': 'none',
				'min-height': 0,
				'min-width': 0,
				'overflow': 'visible',
				'position': 'static',
				'right': 'auto',
				'text-align': 'left',
				'text-decoration': 'none',
				'text-indent': 0,
				'text-transform': 'none',
				'top': 'auto',
				'visibility': 'visible',
				'white-space': 'normal',
				'width': 'auto',
				'z-index': 'auto'
			};
			try {
				$(this).css($.extend(defaults, options));
			} catch (err) {
				//alert($.fn.jwplayerUtils.dump(err));
			}
		});
	};*/
	
	$.fn.jwplayerUtils.isNull = function(obj) {
		return ((obj === null) || (obj === undefined) || (obj === ""));
	};
	
	/** Gets an absolute file path based on a relative filepath **/
	$.fn.jwplayerUtils.getAbsolutePath = function(path) {
		if ($.fn.jwplayerUtils.isNull(path)){
			return path;
		}
		if (isAbsolutePath(path)) {
			return path;
		}
		var protocol = document.location.href.substr(0, document.location.href.indexOf("://") + 3);
		var basepath = document.location.href.substring(protocol.length, (path.indexOf("/") === 0) ? document.location.href.indexOf('/', protocol.length) : document.location.href.lastIndexOf('/'));
		var patharray = (basepath + "/" + path).split("/");
		var result = [];
		for (var i = 0; i < patharray.length; i++) {
			if ($.fn.jwplayerUtils.isNull(patharray[i]) || patharray[i] == ".") {
				continue;
			} else if (patharray[i] == "..") {
				result.pop();
			} else {
				result.push(patharray[i]);
			}
		}
		return protocol + result.join("/");
	};
	
	function isAbsolutePath(path) {
		if($.fn.jwplayerUtils.isNull(path)){
			return;
		}
		var protocol = path.indexOf("://");
		var queryparams = path.indexOf("?");
		return (protocol > 0 && (queryparams < 0 || (queryparams > protocol)));
	}
	
	/** Dumps the content of an object to a string **/
	$.fn.jwplayerUtils.dump = function(object, depth) {
		if (object === null) {
			return 'null';
		} else if ($.fn.jwplayerUtils.typeOf(object) != 'object') {
			if ($.fn.jwplayerUtils.typeOf(object) == 'string') {
				return "\"" + object + "\"";
			}
			return object;
		}
		
		var type = $.fn.jwplayerUtils.typeOf(object);
		
		depth = (depth === undefined) ? 1 : depth + 1;
		var indent = "";
		for (var i = 0; i < depth; i++) {
			indent += "\t";
		}
		
		var result = (type == "array") ? "[" : "{";
		result += "\n" + indent;
		
		for (var i in object) {
			if (type == "object") {
				result += "\"" + i + "\": ";
			}
			result += $.fn.jwplayerUtils.dump(object[i], depth) + ",\n" + indent;
		}
		
		result = result.substring(0, result.length - 2 - depth) + "\n";
		
		result += indent.substring(0, indent.length - 1);
		result += (type == "array") ? "]" : "}";
		
		return result;
	};
	
	/** Returns the true type of an object **/
	$.fn.jwplayerUtils.typeOf = function(value) {
		var s = typeof value;
		if (s === 'object') {
			if (value) {
				if (value instanceof Array) {
					s = 'array';
				}
			} else {
				s = 'null';
			}
		}
		return s;
	};
	
	
	/** Logger **/
	$.fn.jwplayerUtils.log = function(msg, obj) {
		try {
			if (obj) {
				console.log("%s: %o", msg, obj);
			} else {
				console.log($.fn.jwplayerUtils.dump(msg));
			}
		} catch (err) {
		}
		return this;
	};
	
	
})(jQuery);
/**
 * JW Player view component
 *
 * @author zach
 * @version 1.0alpha
 * @lastmodifieddate 2010-04-11
 */
(function($) {

	var styleString = "left:0px;top:0px;position:absolute;z-index:0;";
	var embedString = "<embed %elementvars% src='%flashplayer%' allowfullscreen='true' allowscriptaccess='always' flashvars='%flashvars%' %style% />";
	var objectString = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' %elementvars% %style% > <param name='movie' value='%flashplayer%'> <param name='allowfullscreen' value='true'> <param name='allowscriptaccess' value='always'> <param name='wmode' value='transparent'> <param name='flashvars' value='%flashvars%'> </object>";
	var elementvars = {
		id: true,
		name: true,
		className: true
	};
	
	$.fn.jwplayerView = function(player) {
		player.model.domelement.wrap("<div id='" + player.model.config.id + "_jwplayer' />");
		player.model.domelement.parent().css({
			position: 'relative',
			height: player.config.height,
			width: player.config.width,
			margin: 'auto',
			padding: 0,
			'background-color': player.config.screencolor
		});
		var display = ($.fn.jwplayerUtils.isiPhone() || !(navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length)) ? 'block' : 'none' ;
		player.model.domelement.css({
			position: 'absolute',
			width: player.model.config.width,
			height: player.model.config.height,
			top: 0,
			left: 0,
			'z-index': 0,
			margin: 'auto',
			display: display
		});
	};
	
	$.fn.jwplayerView.switchMediaProvider = function() {
	
	};
	
	/** Embeds a Flash Player at the specified location in the DOM. **/
	$.fn.jwplayerView.embedFlash = function(player, options) {
		if (player.model.config.flashplayer) {
			var htmlString, elementvarString = "", flashvarString = "";
			if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) {
				htmlString = embedString;
			} else {
				htmlString = objectString;
			}
			for (var elementvar in elementvars) {
				if (!$.fn.jwplayerUtils.isNull(player.model.config[elementvar])) {
					elementvarString += elementvar + "='" + player.model.config[elementvar] + "' ";
				}
			}
			if (elementvarString.indexOf("name=") < 0) {
				elementvarString += "name='" + player.id + "' ";
			}
			var config = $.extend(true, {}, player.model.config, options);
			if (!$.fn.jwplayerUtils.isNull(player.model.sources[player.model.source])){
				flashvarString += 'file=' + $.fn.jwplayerUtils.getAbsolutePath(player.model.sources[player.model.source].file) + '&';
			}
			if (!$.fn.jwplayerUtils.isNull(config.image)){
				flashvarString += 'image=' + $.fn.jwplayerUtils.getAbsolutePath(config.image) + '&';
			}
			for (var flashvar in config) {
				if ((flashvar == 'file') || (flashvar == 'image') || (flashvar == 'plugins')) {
					continue;
				}
				if (!$.fn.jwplayerUtils.isNull(config[flashvar])) {
					flashvarString += flashvar + '=' + config[flashvar] + '&';
				}
			}
			
			flashvarString += 'playerready=$.fn.jwplayerMediaFlash.playerReady';
			
			htmlString = htmlString.replace("%elementvars%", elementvarString);
			htmlString = htmlString.replace("%flashvars%", flashvarString);
			htmlString = htmlString.replace("%flashplayer%", $.fn.jwplayerUtils.getAbsolutePath(player.model.config.flashplayer));
			htmlString = htmlString.replace("%style%", "style='" + styleString + "width:" + player.model.config.width + "px;height:" + player.model.config.height + "px;'");
			if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) {
				htmlString = htmlString.replace("%style%", "style='" + styleString + "width:" + player.model.config.width + "px;height:" + player.model.config.height + "px;'");
				player.model.domelement.before(htmlString);
			} else {
				htmlString = htmlString.replace("%style%", "style='" + styleString + "width:" + player.model.config.width + "px;height:" + (player.model.config.height + player.skin.controlbar.elements.background.height) + "px;'");
				player.model.domelement.before("<div />");
				player.model.domelement.prev().html(htmlString);
				
			}
			var oldDOMElement = player.model.domelement;
			player.model.domelement = player.model.domelement.prev();
			oldDOMElement.remove();
		}
	};
	
	
})(jQuery);















//Config ....................................................................................................... 
 
 
 $.validator.addMethod("valueNotEquals", function(value, element, arg){
  return arg != value;
 }, "Please enter a valid entry");




$(document).ready(function() {



function validateform (){	
$("#comment_form").validate({
		rules: {
			name: {
				 valueNotEquals: "John Smith" 
			},
			email: {
				 valueNotEquals: "your-name@email.com" 
			}
			
			
		}
	});
	
	
	
var default_values = new Array();
$("input").focus(function() {
    if (!default_values[this.id]) {
      default_values[this.id] = this.value;
    }
    if (this.value == default_values[this.id]) {
      this.value = '';
    }
    $(this).blur(function() {
      if (this.value == '') {
         this.value = default_values[this.id];
      }
    });
});
		
}

validateform();


$(".label").hide();

















function codaBub2(){
		
	$(".comment-author").hover(function() {
		$(this).find("div").stop()
		.animate({top: "-120px", opacity:1}, "fast")
		.css("display","block")

	}, function() {
		$(this).find("div").stop()
		.animate({top: "-100px", opacity: 0}, "fast")
	});
	Cufon.replace('.comments h2, .comment-date, #comment_form label, #episode-h2');
	

};
					   						   
function imageslo(){			   
						   
var $images = $(".content img");
	if ($images.length) {
		var imageCount = $images.length;
		var imageLoadedCount = 0;
				
	   $images.each(function() {
			$(this).load(function() {
				imageLoadedCount += 1;
			});
		});

	var intervalId = setInterval(function() {
		if (imageCount == imageLoadedCount) {
			clearInterval(intervalId);
			$(".content").slideDown();
			$(".load").html('');
			imageCount=0;
			codaBub2();
			expander();
			validateform();
		 };
	}, 200);
}		
};

function expander(){

 $('.comment-ind .spiel').expander({
    slicePoint:       115,  // default is 100
    expandText:         '[... Read full comment]', // default is 'read more...'
    collapseTimer:    0, // re-collapses after 5 seconds; default is 0, so no re-collapsing
    expandEffect:     'fadeIn',
    userCollapseText: '[^ Collapse]'  // default is '[collapse expanded text]'
  });
};



					
						   
						  			   
$(".load-a").live('click',function(event) {
		var removeHashChar = this.hash;
		removeHashChar = removeHashChar.replace('#', '.');
		var urlNoHash  = urlNoHash = this.href;
		urlNoHash = urlNoHash.replace(this.hash, '');
		var loadurl2 = urlNoHash +" "+removeHashChar;
		$(".load").remove();
		$(".content").remove();
		$(".close").remove();
		
		if (removeHashChar==".episode-content"){
			$(".content-holder div").removeClass("divopen");
			$(".load-a").show();
			$(this).parent().addClass("divopen");
			$('.divopen .load-a').hide();
			$(this).show();
			
		} else {
			$(".load-a").fadeIn();
		}

		
		
		$(this).parent().parent().append('<div class="load"></div><div class="content"></div>');
		$(this).parent().append('<a href="/tester" class="close">Close</a>');	
		$(".load").html('<img src="/images/ani-gif-1.gif" />');
		$(".content").load(loadurl2, null, function(){
					imageslo();		
		});
		
		event.preventDefault();
		
		
		$(this).hide();
			$(".close").click(function(event) {
				$(".load-a").fadeIn();
				$(".load").remove();
				$(".content").slideUp();
				$(".more div").removeClass("divopen");
				event.preventDefault();
				$(this).remove();
			}); 

});




  if (('#inner-page .comment-author').length) {
  		codaBub2();
  		expander();
  }
  
  
  
  
  function rss(){
  
 	var name = "#rss";
	var menuYloc = null;
	$('#rss').css({'top':'450px'});
	
	menuYloc = parseInt($(name).css("top").substring(0,$(name).css("top").indexOf("px")))
	$(window).scroll(function () { 
		offset = menuYloc+$(document).scrollTop()+"px";
		$(name).hide().animate({top:offset},{duration:500,queue:false}).fadeIn(2000);
	});
	
	}
	
	


/*	
	
	function checkWindow(){
			
	 var w = $(window).width();
	
		if 	(w > 1200){
				rss();
		}	
			
	}
	
	
	


var resizeTimer = null;
$(window).bind('resize', function() {
    if (resizeTimer) clearTimeout(resizeTimer);
    resizeTimer = setTimeout(checkWindow, 100);
});

*/


rss();



$('.tweet').each(function(){
	var $this = jQuery(this);
	$this.attr('href', $this.attr('href').replace(/Enjoying_short_video_tutorial:/g, 'Liking Usable Efficiency Video Episodes: '));
});
    
 





$('.external').click(function(){
			window.open(this.href);
			return false;
	});
	
});



Cufon.replace('.info-left h2, .info-right h2, #inner-page #episode-h2');


  $('#myplayer1').jwplayer({
    flashplayer:'/player.swf',
    skin:'/five/five.xml',
    screencolor:('ededed')
  });
  $('#myplayer2').jwplayer({
    flashplayer:'/player.swf',
    skin:'/five/five.xml',
    screencolor:('ededed')
  });
  $('#myplayer3').jwplayer({
    flashplayer:'/player.swf',
    skin:'/five/five.xml',
    screencolor:('ededed')
  });
   $('#myplayer4').jwplayer({
    flashplayer:'/player.swf',
    skin:'/five/five.xml',
    screencolor:('ededed')
  });
  $('#myplayer5').jwplayer({
    flashplayer:'/player.swf',
    skin:'/five/five.xml',
    screencolor:('ededed')
  });
  
  
  
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-230981-16']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
