/*
 * jQuery JavaScript Library v1.3.2
 * http://jquery.com/
 *
 * Copyright (c) 2009 John Resig
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 *
 * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
 * Revision: 6246
 */
(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
/*
 * Sizzle CSS Selector Engine - v0.9.3
 * Copyright 2009, The Dojo Foundation
 * Released under the MIT, BSD, and GPL Licenses.
 * More information: http://sizzlejs.com/
 */
(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
jQuery.noConflict();
/**
 * tools.tabs 1.0.4 - Tabs done right.
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/tabs.html
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Launch : November 2008
 * Date: ${date}
 * Revision: ${revision} 
 */ 
(function($) {
 
 // static constructs
 $.tools = $.tools || {};
 
 $.tools.tabs = {
 version: '1.0.4',
 
 conf: {
 tabs: 'a',
 current: 'current',
 onBeforeClick: null,
 onClick: null, 
 effect: 'default',
 initialIndex: 0, 
 event: 'click',
 api:false,
 rotate: false
 },
 
 addEffect: function(name, fn) {
 effects[name] = fn;
 }
 }; 
 
 
 var effects = {
 
 // simple "toggle" effect
 'default': function(i, done) { 
 this.getPanes().hide().eq(i).show();
 done.call();
 }, 
 
 /*
 configuration:
 - fadeOutSpeed (positive value does "crossfading")
 - fadeInSpeed
 */
 fade: function(i, done) {
 var conf = this.getConf(), 
 speed = conf.fadeOutSpeed,
 panes = this.getPanes();
 
 if (speed) {
 panes.fadeOut(speed); 
 } else {
 panes.hide(); 
 }

 panes.eq(i).fadeIn(conf.fadeInSpeed, done); 
 },
 
 // for basic accordions
 slide: function(i, done) { 
 this.getPanes().slideUp(200);
 this.getPanes().eq(i).slideDown(400, done); 
 }, 

 // simple AJAX effect
 ajax: function(i, done) { 
 this.getPanes().eq(0).load(this.getTabs().eq(i).attr("href"), done); 
 }
 
 }; 
 
 var w;
 
 // this is how you add effects
 $.tools.tabs.addEffect("horizontal", function(i, done) {
 
 // store original width of a pane into memory
 if (!w) { w = this.getPanes().eq(0).width(); }
 
 // set current pane's width to zero
 this.getCurrentPane().animate({width: 0}, function() { $(this).hide(); });
 
 // grow opened pane to it's original width
 this.getPanes().eq(i).animate({width: w}, function() { 
 $(this).show();
 done.call();
 });
 
 }); 
 

 function Tabs(tabs, panes, conf) { 
 
 var self = this, $self = $(this), current;

 // bind all callbacks from configuration
 $.each(conf, function(name, fn) {
 if ($.isFunction(fn)) { $self.bind(name, fn); }
 });
 
 
 // public methods
 $.extend(this, { 
 click: function(i, e) {
 
 var pane = self.getCurrentPane(); 
 var tab = tabs.eq(i); 
 
 if (typeof i == 'string' && i.replace("#", "")) {
 tab = tabs.filter("[href*=" + i.replace("#", "") + "]");
 i = Math.max(tabs.index(tab), 0);
 }
 
 if (conf.rotate) {
 var last = tabs.length -1; 
 if (i < 0) { return self.click(last, e); }
 if (i > last) { return self.click(0, e); } 
 }
 
 if (!tab.length) { 
 if (current >= 0) { return self; }
 i = conf.initialIndex;
 tab = tabs.eq(i);
 } 
 
 // current tab is being clicked
 if (i === current) { return self; }
 
 // possibility to cancel click action 
 e = e || $.Event();
 e.type = "onBeforeClick";
 $self.trigger(e, [i]); 
 if (e.isDefaultPrevented()) { return; }
 
 // call the effect
 effects[conf.effect].call(self, i, function() {

 // onClick callback
 e.type = "onClick";
 $self.trigger(e, [i]); 
 }); 
 
 // onStart
 e.type = "onStart";
 $self.trigger(e, [i]); 
 if (e.isDefaultPrevented()) { return; } 
 
 // default behaviour
 current = i;
 tabs.removeClass(conf.current); 
 tab.addClass(conf.current); 
 
 return self;
 },
 
 getConf: function() {
 return conf; 
 },

 getTabs: function() {
 return tabs; 
 },
 
 getPanes: function() {
 return panes; 
 },
 
 getCurrentPane: function() {
 return panes.eq(current); 
 },
 
 getCurrentTab: function() {
 return tabs.eq(current); 
 },
 
 getIndex: function() {
 return current; 
 }, 
 
 next: function() {
 return self.click(current + 1);
 },
 
 prev: function() {
 return self.click(current - 1); 
 }, 
 
 bind: function(name, fn) {
 $self.bind(name, fn);
 return self; 
 }, 
 
 onBeforeClick: function(fn) {
 return this.bind("onBeforeClick", fn);
 },
 
 onClick: function(fn) {
 return this.bind("onClick", fn);
 },
 
 unbind: function(name) {
 $self.unbind(name);
 return self; 
 } 
 
 });
 
 
 // setup click actions for each tab
 tabs.each(function(i) { 
 $(this).bind(conf.event, function(e) {
 self.click(i, e);
 return false;
 }); 
 });

 // if no pane is visible --> click on the first tab
 if (location.hash) {
 self.click(location.hash);
 } else {
 if (conf.initialIndex === 0 || conf.initialIndex > 0) {
 self.click(conf.initialIndex);
 }
 } 
 
 // cross tab anchor link
 panes.find("a[href^=#]").click(function(e) {
 self.click($(this).attr("href"), e); 
 }); 
 }
 
 
 // jQuery plugin implementation
 $.fn.tabs = function(query, conf) {
 
 // return existing instance
 var el = this.eq(typeof conf == 'number' ? conf : 0).data("tabs");
 if (el) { return el; }

 if ($.isFunction(conf)) {
 conf = {onBeforeClick: conf};
 }
 
 // setup options
 var globals = $.extend({}, $.tools.tabs.conf), len = this.length;
 conf = $.extend(globals, conf); 

 
 // install tabs for each items in jQuery 
 this.each(function(i) { 
 var root = $(this); 
 
 // find tabs
 var els = root.find(conf.tabs);
 
 if (!els.length) {
 els = root.children(); 
 }
 
 // find panes
 var panes = query.jquery ? query : root.children(query);
 
 if (!panes.length) {
 panes = len == 1 ? $(query) : root.parent().find(query);
 } 
 
 el = new Tabs(els, panes, conf);
 root.data("tabs", el);
 
 }); 
 
 return conf.api ? el: this; 
 }; 
 
}) (jQuery); 



/**
 * tools.tooltip 1.1.2 - Tooltips done right.
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/tooltip.html
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Launch : November 2008
 * Date: ${date}
 * Revision: ${revision} 
 */
(function($) { 

 var instances = [];
 
 // static constructs
 $.tools = $.tools || {};
 
 $.tools.tooltip = {
 version: '1.1.2',
 
 conf: { 
 
 // default effect variables
 effect: 'toggle', 
 fadeOutSpeed: "fast",
 tip: null,
 
 predelay: 0,
 delay: 30,
 opacity: 1, 
 lazy: undefined,
 
 // 'top', 'bottom', 'right', 'left', 'center'
 position: ['top', 'center'], 
 offset: [0, 0], 
 cancelDefault: true,
 relative: false,
 oneInstance: true,
 
 
 // type to event mapping 
 events: {
 def: "mouseover,mouseout",
 input: "focus,blur",
 widget: "focus mouseover,blur mouseout",
 tooltip: "mouseover,mouseout"
 }, 
 
 api: false
 },
 
 addEffect: function(name, loadFn, hideFn) {
 effects[name] = [loadFn, hideFn]; 
 } 
 };
 
 
 var effects = { 
 toggle: [ 
 function(done) { 
 var conf = this.getConf(), tip = this.getTip(), o = conf.opacity;
 if (o < 1) { tip.css({opacity: o}); }
 tip.show();
 done.call();
 },
 
 function(done) { 
 this.getTip().hide();
 done.call();
 } 
 ],
 
 fade: [
 function(done) { this.getTip().fadeIn(this.getConf().fadeInSpeed, done); }, 
 function(done) { this.getTip().fadeOut(this.getConf().fadeOutSpeed, done); } 
 ] 
 }; 

 function Tooltip(trigger, conf) {

 var self = this, $self = $(this);
 
 trigger.data("tooltip", self);
 
 // find the tip
 var tip = trigger.next();
 
 if (conf.tip) {
 
 tip = $(conf.tip);
 
 // multiple tip elements
 if (tip.length > 1) {
 
 // find sibling
 tip = trigger.nextAll(conf.tip).eq(0); 
 
 // find sibling from the parent element
 if (!tip.length) {
 tip = trigger.parent().nextAll(conf.tip).eq(0);
 }
 } 
 } 
 
 /* calculate tip position relative to the trigger */ 
 function getPosition(e) { 
 
 // get origin top/left position 
 var top = conf.relative ? trigger.position().top : trigger.offset().top, 
 left = conf.relative ? trigger.position().left : trigger.offset().left,
 pos = conf.position[0];

 top -= tip.outerHeight() - conf.offset[0];
 left += trigger.outerWidth() + conf.offset[1];
 
 // adjust Y 
 var height = tip.outerHeight() + trigger.outerHeight();
 if (pos == 'center') { top += height / 2; }
 if (pos == 'bottom') { top += height; }
 
 // adjust X
 pos = conf.position[1]; 
 var width = tip.outerWidth() + trigger.outerWidth();
 if (pos == 'center') { left -= width / 2; }
 if (pos == 'left') { left -= width; } 
 
 return {top: top, left: left};
 } 

 
 // event management
 var isInput = trigger.is(":input"), 
 isWidget = isInput && trigger.is(":checkbox, :radio, select, :button"), 
 type = trigger.attr("type"),
 evt = conf.events[type] || conf.events[isInput ? (isWidget ? 'widget' : 'input') : 'def']; 
 
 evt = evt.split(/,\s*/); 
 if (evt.length != 2) { throw "Tooltip: bad events configuration for " + type; }
 
 trigger.bind(evt[0], function(e) {
 
 // close all instances
 if (conf.oneInstance) {
 $.each(instances, function() {
 this.hide(); 
 });
 }
 
 // see if the tip was launched by this trigger
 var t = tip.data("trigger"); 
 if (t && t[0] != this) { tip.hide().stop(true, true); } 
 
 e.target = this;
 self.show(e); 
 
 // tooltip close events
 evt = conf.events.tooltip.split(/,\s*/);
 tip.bind(evt[0], function() { self.show(e); });
 if (evt[1]) { tip.bind(evt[1], function() { self.hide(e); }); }
 
 });
 
 trigger.bind(evt[1], function(e) {
 self.hide(e); 
 });
 
 // ensure that the tip really shows up. IE cannot catch up with this.
 if (!$.browser.msie && !isInput && !conf.predelay) {
 trigger.mousemove(function() { 
 if (!self.isShown()) {
 trigger.triggerHandler("mouseover"); 
 }
 });
 }

 // avoid "black box" bug in IE with PNG background images
 if (conf.opacity < 1) {
 tip.css("opacity", conf.opacity); 
 }
 
 var pretimer = 0, title = trigger.attr("title");
 
 if (title && conf.cancelDefault) { 
 trigger.removeAttr("title");
 trigger.data("title", title); 
 } 
 
 $.extend(self, {
 
 show: function(e) {
 
 if (e) { trigger = $(e.target); } 

 clearTimeout(tip.data("timer")); 

 if (tip.is(":animated") || tip.is(":visible")) { return self; }
 
 function show() {
 
 // remember the trigger element for this tip
 tip.data("trigger", trigger);
 
 // get position
 var pos = getPosition(e); 
 
 // title attribute 
 if (conf.tip && title) {
 tip.html(trigger.data("title"));
 } 
 
 // onBeforeShow
 e = e || $.Event();
 e.type = "onBeforeShow";
 $self.trigger(e, [pos]); 
 if (e.isDefaultPrevented()) { return self; }
 
 
 // onBeforeShow may have altered the configuration
 pos = getPosition(e);
 
 // set position
 tip.css({position:'absolute', top: pos.top, left: pos.left}); 
 
 // invoke effect
 var eff = effects[conf.effect];
 if (!eff) { throw "Nonexistent effect \"" + conf.effect + "\""; }
 
 eff[0].call(self, function() {
 e.type = "onShow";
 $self.trigger(e); 
 }); 
 
 }
 
 if (conf.predelay) {
 clearTimeout(pretimer);
 pretimer = setTimeout(show, conf.predelay); 
 
 } else {
 show(); 
 }
 
 return self;
 },
 
 hide: function(e) {

 clearTimeout(tip.data("timer"));
 clearTimeout(pretimer);
 
 if (!tip.is(":visible")) { return; }
 
 function hide() {
 
 // onBeforeHide
 e = e || $.Event();
 e.type = "onBeforeHide";
 $self.trigger(e); 
 if (e.isDefaultPrevented()) { return; }
 
 effects[conf.effect][1].call(self, function() {
 e.type = "onHide";
 $self.trigger(e); 
 });
 }
 
 if (conf.delay && e) {
 tip.data("timer", setTimeout(hide, conf.delay));
 
 } else {
 hide(); 
 } 
 
 return self;
 },
 
 isShown: function() {
 return tip.is(":visible, :animated"); 
 },
 
 getConf: function() {
 return conf; 
 },
 
 getTip: function() {
 return tip; 
 },
 
 getTrigger: function() {
 return trigger; 
 },
 
 // callback functions 
 bind: function(name, fn) {
 $self.bind(name, fn);
 return self; 
 },
 
 onHide: function(fn) {
 return this.bind("onHide", fn);
 },

 onBeforeShow: function(fn) {
 return this.bind("onBeforeShow", fn);
 },
 
 onShow: function(fn) {
 return this.bind("onShow", fn);
 },
 
 onBeforeHide: function(fn) {
 return this.bind("onBeforeHide", fn);
 },

 unbind: function(name) {
 $self.unbind(name);
 return self; 
 } 

 }); 

 // bind all callbacks from configuration
 $.each(conf, function(name, fn) {
 if ($.isFunction(fn)) { self.bind(name, fn); }
 }); 
 
 }
 
 
 // jQuery plugin implementation
 $.prototype.tooltip = function(conf) {
 
 // return existing instance
 var api = this.eq(typeof conf == 'number' ? conf : 0).data("tooltip");
 if (api) { return api; }
 
 // setup options
 var globals = $.extend(true, {}, $.tools.tooltip.conf); 
 
 if ($.isFunction(conf)) {
 conf = {onBeforeShow: conf};
 
 } else if (typeof conf == 'string') {
 conf = {tip: conf}; 
 }

 conf = $.extend(true, globals, conf);
 
 // can also be given as string
 if (typeof conf.position == 'string') {
 conf.position = conf.position.split(/,?\s/); 
 }
 
 // assign tip's only when apiement is being mouseovered 
 if (conf.lazy !== false && (conf.lazy === true || this.length > 20)) { 
 
 this.one("mouseover", function(e) { 
 api = new Tooltip($(this), conf);
 api.show(e);
 instances.push(api);
 }); 
 
 } else {
 
 // install tooltip for each entry in jQuery object
 this.each(function() {
 api = new Tooltip($(this), conf); 
 instances.push(api);
 });
 } 

 return conf.api ? api: this; 
 
 };
 
}) (jQuery);

 


/**
 * tools.tooltip "Slide Effect" 1.0.0
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/tooltip.html#slide
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Since : September 2009
 * Date: ${date}
 * Revision: ${revision} 
 */
(function($) { 

 // version number
 var t = $.tools.tooltip;
 t.effects = t.effects || {};
 t.effects.slide = {version: '1.0.0'}; 
 
 // extend global configuragion with effect specific defaults
 $.extend(t.conf, { 
 direction: 'up', // down, left, right 
 bounce: false,
 slideOffset: 10,
 slideInSpeed: 200,
 slideOutSpeed: 200, 
 slideFade: !$.browser.msie
 }); 
 
 // directions for slide effect
 var dirs = {
 up: ['-', 'top'],
 down: ['+', 'top'],
 left: ['-', 'left'],
 right: ['+', 'left']
 };
 
 /* default effect: "slide" */
 $.tools.tooltip.addEffect("slide", 
 
 // show effect
 function(done) { 
 
 // variables
 var conf = this.getConf(), 
 tip = this.getTip(),
 params = conf.slideFade ? {opacity: conf.opacity} : {}, 
 dir = dirs[conf.direction] || dirs.up;

 // direction 
 params[dir[1]] = dir[0] +'='+ conf.slideOffset;
 
 // perform animation
 if (conf.slideFade) { tip.css({opacity:0}); }
 tip.show().animate(params, conf.slideInSpeed, done); 
 }, 
 
 // hide effect
 function(done) {
 
 // variables
 var conf = this.getConf(), 
 offset = conf.slideOffset,
 params = conf.slideFade ? {opacity: 0} : {}, 
 dir = dirs[conf.direction] || dirs.up;
 
 // direction
 var sign = "" + dir[0];
 if (conf.bounce) { sign = sign == '+' ? '-' : '+'; } 
 params[dir[1]] = sign +'='+ offset; 
 
 // perform animation
 this.getTip().animate(params, conf.slideOutSpeed, function() {
 $(this).hide();
 done.call(); 
 });
 }
 ); 
 
})(jQuery); 
 

/**
 * tools.tooltip "Dynamic Plugin" 1.0.1
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/tooltip.html#dynamic
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Since : July 2009
 * Date: ${date}
 * Revision: ${revision} 
 */
(function($) { 

 // version number
 var t = $.tools.tooltip;
 t.plugins = t.plugins || {};
 
 t.plugins.dynamic = {
 version: '1.0.1',
 
 conf: {
 api: false,
 classNames: "top right bottom left"
 }
 };
 
 /* 
 * See if element is on the viewport. Returns an boolean array specifying which
 * edges are hidden. Edges are in following order:
 * 
 * [top, right, bottom, left]
 * 
 * For example following return value means that top and right edges are hidden
 * 
 * [true, true, false, false]
 * 
 */
 function getCropping(el) {
 
 var w = $(window); 
 var right = w.width() + w.scrollLeft();
 var bottom = w.height() + w.scrollTop(); 
 
 return [
 el.offset().top <= w.scrollTop(), // top
 right <= el.offset().left + el.width(), // right
 bottom <= el.offset().top + el.height(), // bottom
 w.scrollLeft() >= el.offset().left // left
 ]; 
 }
 
 /*
 Returns true if all edges of an element are on viewport. false if not
 
 @param crop the cropping array returned by getCropping function
 */
 function isVisible(crop) {
 var i = crop.length;
 while (i--) {
 if (crop[i]) { return false; } 
 }
 return true;
 }
 
 // scrollable mousewheel implementation
 $.fn.dynamic = function(conf) {
 
 var globals = $.extend({}, t.plugins.dynamic.conf), ret;
 if (typeof conf == 'number') { conf = {speed: conf}; }
 conf = $.extend(globals, conf);
 
 var cls = conf.classNames.split(/\s/), orig; 
 
 this.each(function() { 
 
 if ($(this).tooltip().jquery) {
 throw "Lazy feature not supported by dynamic plugin. set lazy: false for tooltip"; 
 }
 
 var api = $(this).tooltip().onBeforeShow(function(e, pos) { 

 // get nessessary variables
 var tip = this.getTip(), conf = this.getConf(); 

 /*
 We store the original configuration and use it to restore back to the original state.
 */ 
 if (!orig) {
 orig = [
 conf.position[0], 
 conf.position[1], 
 conf.offset[0], 
 conf.offset[1], 
 $.extend({}, conf)
 ];
 }
 
 /*
 display tip in it's default position and by setting visibility to hidden.
 this way we can check whether it will be on the viewport
 */
 $.extend(conf, orig[4]);
 conf.position = [orig[0], orig[1]];
 conf.offset = [orig[2], orig[3]];
 
 tip.css({
 visibility: 'hidden',
 position: 'absolute',
 top: pos.top,
 left: pos.left
 
 }).show(); 
 
 // now let's see for hidden edges
 var crop = getCropping(tip); 
 
 // possibly alter the configuration
 if (!isVisible(crop)) {
 
 // change the position and add class
 if (crop[2]) { $.extend(conf, conf.top); conf.position[0] = 'top'; tip.addClass(cls[0]); }
 if (crop[3]) { $.extend(conf, conf.right); conf.position[1] = 'right'; tip.addClass(cls[1]); } 
 if (crop[0]) { $.extend(conf, conf.bottom); conf.position[0] = 'bottom'; tip.addClass(cls[2]); } 
 if (crop[1]) { $.extend(conf, conf.left); conf.position[1] = 'left'; tip.addClass(cls[3]); } 
 
 
 // vertical offset
 if (crop[0] || crop[2]) { conf.offset[0] *= -1; }
 
 // horizontal offset
 if (crop[1] || crop[3]) { conf.offset[1] *= -1; }
 } 
 
 tip.css({visibility: 'visible'}).hide();
 
 });
 
 // restore positioning
 api.onShow(function() {
 var c = this.getConf(), tip = this.getTip(); 
 c.position = [orig[0], orig[1]];
 c.offset = [orig[2], orig[3]]; 
 });
 
 // remove custom class names and restore original effect
 api.onHide(function() {
 var tip = this.getTip(); 
 tip.removeClass(conf.classNames);
 $.extend(conf, orig[4]);
 });
 
 ret = api;
 
 });
 
 return conf.api ? ret : this;
 }; 
 
}) (jQuery);

/**
 * tools.scrollable 1.1.2 - Scroll your HTML with eye candy.
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/scrollable.html
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Launch : March 2008
 * Date: ${date}
 * Revision: ${revision} 
 */
(function($) { 
 
 // static constructs
 $.tools = $.tools || {};
 
 $.tools.scrollable = {
 version: '1.1.2',
 
 conf: {
 
 // basics
 size: 5,
 vertical: false,
 speed: 400,
 keyboard: true, 
 
 // by default this is the same as size
 keyboardSteps: null, 
 
 // other
 disabledClass: 'disabled',
 hoverClass: null, 
 clickable: true,
 activeClass: 'active', 
 easing: 'swing',
 loop: false,
 
 items: '.items',
 item: null,
 
 // navigational elements 
 prev: '.prev',
 next: '.next',
 prevPage: '.prevPage',
 nextPage: '.nextPage', 
 api: false
 
 // CALLBACKS: onBeforeSeek, onSeek, onReload
 } 
 };
 
 var current; 
 
 // constructor
 function Scrollable(root, conf) { 
 
 // current instance
 var self = this, $self = $(this),
 horizontal = !conf.vertical,
 wrap = root.children(),
 index = 0,
 forward; 
 
 
 if (!current) { current = self; }
 
 // bind all callbacks from configuration
 $.each(conf, function(name, fn) {
 if ($.isFunction(fn)) { $self.bind(name, fn); }
 });
 
 if (wrap.length > 1) { wrap = $(conf.items, root); }
 
 // navigational items can be anywhere when globalNav = true
 function find(query) {
 var els = $(query);
 return conf.globalNav ? els : root.parent().find(query); 
 }
 
 // to be used by plugins
 root.data("finder", find);
 
 // get handle to navigational elements
 var prev = find(conf.prev),
 next = find(conf.next),
 prevPage = find(conf.prevPage),
 nextPage = find(conf.nextPage);

 
 // methods
 $.extend(self, {
 
 getIndex: function() {
 return index; 
 },
 
 getClickIndex: function() {
 var items = self.getItems(); 
 return items.index(items.filter("." + conf.activeClass)); 
 },
 
 getConf: function() {
 return conf; 
 },
 
 getSize: function() {
 return self.getItems().size(); 
 },
 
 getPageAmount: function() {
 return Math.ceil(this.getSize() / conf.size); 
 },
 
 getPageIndex: function() {
 return Math.ceil(index / conf.size); 
 },

 getNaviButtons: function() {
 return prev.add(next).add(prevPage).add(nextPage); 
 },
 
 getRoot: function() {
 return root; 
 },
 
 getItemWrap: function() {
 return wrap; 
 },
 
 getItems: function() {
 return wrap.children(conf.item); 
 },
 
 getVisibleItems: function() {
 return self.getItems().slice(index, index + conf.size); 
 },
 
 /* all seeking functions depend on this */ 
 seekTo: function(i, time, fn) {

 if (i < 0) { i = 0; } 
 
 // nothing happens
 if (index === i) { return self; } 
 
 // function given as second argument
 if ($.isFunction(time)) {
 fn = time;
 }

 // seeking exceeds the end 
 if (i > self.getSize() - conf.size) { 
 return conf.loop ? self.begin() : this.end(); 
 } 

 var item = self.getItems().eq(i); 
 if (!item.length) { return self; } 
 
 // onBeforeSeek
 var e = $.Event("onBeforeSeek");

 $self.trigger(e, [i]); 
 if (e.isDefaultPrevented()) { return self; } 
 
 // get the (possibly altered) speed
 if (time === undefined || $.isFunction(time)) { time = conf.speed; }
 
 function callback() {
 if (fn) { fn.call(self, i); }
 $self.trigger("onSeek", [i]);
 }
 
 if (horizontal) {
 wrap.animate({left: -item.position().left}, time, conf.easing, callback); 
 } else {
 wrap.animate({top: -item.position().top}, time, conf.easing, callback); 
 }
 
 
 current = self;
 index = i; 
 
 // onStart
 e = $.Event("onStart");
 $self.trigger(e, [i]); 
 if (e.isDefaultPrevented()) { return self; } 
 
 
 /* default behaviour */
 
 // prev/next buttons disabled flags
 prev.add(prevPage).toggleClass(conf.disabledClass, i === 0);
 next.add(nextPage).toggleClass(conf.disabledClass, i >= self.getSize() - conf.size);
 
 return self; 
 }, 
 
 
 move: function(offset, time, fn) {
 forward = offset > 0;
 return this.seekTo(index + offset, time, fn);
 },
 
 next: function(time, fn) {
 return this.move(1, time, fn); 
 },
 
 prev: function(time, fn) {
 return this.move(-1, time, fn); 
 },
 
 movePage: function(offset, time, fn) {
 forward = offset > 0;
 var steps = conf.size * offset;
 
 var i = index % conf.size;
 if (i > 0) {
 steps += (offset > 0 ? -i : conf.size - i);
 }
 
 return this.move(steps, time, fn); 
 },
 
 prevPage: function(time, fn) {
 return this.movePage(-1, time, fn);
 }, 
 
 nextPage: function(time, fn) {
 return this.movePage(1, time, fn);
 }, 
 
 setPage: function(page, time, fn) {
 return this.seekTo(page * conf.size, time, fn);
 }, 
 
 begin: function(time, fn) {
 forward = false;
 return this.seekTo(0, time, fn); 
 },
 
 end: function(time, fn) {
 forward = true;
 var to = this.getSize() - conf.size;
 return to > 0 ? this.seekTo(to, time, fn) : self; 
 },
 
 reload: function() { 
 $self.trigger("onReload");
 return self;
 }, 
 
 focus: function() {
 current = self;
 return self;
 },
 
 click: function(i) {
 
 var item = self.getItems().eq(i), 
 klass = conf.activeClass,
 size = conf.size; 
 
 // check that i is sane
 if (i < 0 || i >= self.getSize()) { return self; }
 
 // size == 1 
 if (size == 1) {
 if (conf.loop) { return self.next(); }
 
 if (i === 0 || i == self.getSize() -1) { 
 forward = (forward === undefined) ? true : !forward; 
 }
 return forward === false ? self.prev() : self.next(); 
 } 
 
 // size == 2
 if (size == 2) {
 if (i == index) { i--; }
 self.getItems().removeClass(klass);
 item.addClass(klass); 
 return self.seekTo(i, time, fn);
 } 
 
 if (!item.hasClass(klass)) { 
 self.getItems().removeClass(klass);
 item.addClass(klass);
 var delta = Math.floor(size / 2);
 var to = i - delta;
 
 // next to last item must work
 if (to > self.getSize() - size) { 
 to = self.getSize() - size; 
 }
 
 if (to !== i) {
 return self.seekTo(to); 
 }
 }
 
 return self;
 },
 
 // bind / unbind
 bind: function(name, fn) {
 $self.bind(name, fn);
 return self; 
 }, 
 
 unbind: function(name) {
 $self.unbind(name);
 return self; 
 } 
 
 });
 
 // callbacks 
 $.each("onBeforeSeek,onStart,onSeek,onReload".split(","), function(i, ev) {
 self[ev] = function(fn) {
 return self.bind(ev, fn); 
 };
 }); 
 
 
 // prev button 
 prev.addClass(conf.disabledClass).click(function() {
 self.prev(); 
 });
 

 // next button
 next.click(function() { 
 self.next(); 
 });
 
 // prev page button
 nextPage.click(function() { 
 self.nextPage(); 
 });
 
 if (self.getSize() < conf.size) {
 next.add(nextPage).addClass(conf.disabledClass); 
 }
 

 // next page button
 prevPage.addClass(conf.disabledClass).click(function() { 
 self.prevPage(); 
 }); 
 
 
 // hover
 var hc = conf.hoverClass, keyId = "keydown." + Math.random().toString().substring(10); 
 
 self.onReload(function() { 

 // hovering
 if (hc) {
 self.getItems().hover(function() {
 $(this).addClass(hc); 
 }, function() {
 $(this).removeClass(hc); 
 }); 
 }
 
 // clickable
 if (conf.clickable) {
 self.getItems().each(function(i) {
 $(this).unbind("click.scrollable").bind("click.scrollable", function(e) {
 if ($(e.target).is("a")) { return; } 
 return self.click(i);
 });
 });
 } 
 
 // keyboard 
 if (conf.keyboard) { 
 
 // keyboard works on one instance at the time. thus we need to unbind first
 $(document).unbind(keyId).bind(keyId, function(evt) {

 // do nothing with CTRL / ALT buttons
 if (evt.altKey || evt.ctrlKey) { return; }
 
 // do nothing for unstatic and unfocused instances
 if (conf.keyboard != 'static' && current != self) { return; }
 
 var s = conf.keyboardSteps; 
 
 if (horizontal && (evt.keyCode == 37 || evt.keyCode == 39)) { 
 self.move(evt.keyCode == 37 ? -s : s);
 return evt.preventDefault();
 } 
 
 if (!horizontal && (evt.keyCode == 38 || evt.keyCode == 40)) {
 self.move(evt.keyCode == 38 ? -s : s);
 return evt.preventDefault();
 }
 
 return true;
 
 });
 
 } else {
 $(document).unbind(keyId); 
 } 

 });
 
 self.reload(); 
 
 } 

 
 // jQuery plugin implementation
 $.fn.scrollable = function(conf) { 
 
 // already constructed --> return API
 var el = this.eq(typeof conf == 'number' ? conf : 0).data("scrollable");
 if (el) { return el; } 
 
 var globals = $.extend({}, $.tools.scrollable.conf);
 conf = $.extend(globals, conf);
 
 conf.keyboardSteps = conf.keyboardSteps || conf.size;
 
 this.each(function() { 
 el = new Scrollable($(this), conf);
 $(this).data("scrollable", el); 
 });
 
 return conf.api ? el: this; 
 
 };
 
 
})(jQuery);

/**
 * jQuery TOOLS plugin :: scrollable.circular 0.5.1
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/scrollable.html#circular
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Launch : September 2009
 * Date: ${date}
 * Revision: ${revision} 
 */
(function($) {

 // version number
 var t = $.tools.scrollable; 
 t.plugins = t.plugins || {};
 
 t.plugins.circular = {
 version: '0.5.1', 
 conf: { 
 api: false,
 clonedClass: 'cloned'
 } 
 };

 
 $.fn.circular = function(opts) {
 
 var config = $.extend({}, t.plugins.circular.conf), ret;
 $.extend(config, opts);
 
 this.each(function() { 
 
 var api = $(this).scrollable(),
 items = api.getItems(), 
 conf = api.getConf(), 
 wrap = api.getItemWrap(), 
 index = 0;
 
 if (api) { ret = api; }
 
 // too few items. no need for this plugin.
 if (items.length < conf.size) { return false; }
 

 // clone first visible elements and append them to the end 
 items.slice(0, conf.size).each(function(i) {
 $(this).clone().appendTo(wrap).click(function() {
 api.click(items.length + i);
 
 }).addClass(config.clonedClass); 
 }); 
 
 // clone last set of elements to the beginning in reversed order
 var tail = $.makeArray(items.slice(-conf.size)).reverse();
 
 $(tail).each(function(i) {
 $(this).clone().prependTo(wrap).click(function() {
 api.click(-i -1); 
 
 }).addClass(config.clonedClass); 
 });
 
 var allItems = wrap.children(conf.item);
 
 
 // reset hovering for cloned items too
 var hc = conf.hoverClass;
 
 if (hc) {
 allItems.hover(function() {
 $(this).addClass(hc); 
 }, function() {
 $(this).removeClass(hc); 
 }); 
 }
 
 // custom seeking function that does not trigger callbacks
 function seek(i) {
 
 var item = allItems.eq(i);
 
 if (conf.vertical) { 
 wrap.css({top: -item.position().top});
 } else {
 wrap.css({left: -item.position().left}); 
 } 
 }
 
 // skip the clones at the beginning
 seek(conf.size); 

 // overridden scrollable API methods
 $.extend(api, {

 move: function(offset, time, fn, click) {
 
 var to = index + offset + conf.size; 
 var exceed = to > api.getSize() - conf.size;
 
 
 if (to < 0 || exceed) {
 var fix = index + conf.size + (exceed ? -items.length : items.length);
 seek(fix);
 to = fix + offset;
 } 
 
 if (click) {
 allItems.removeClass(conf.activeClass)
 .eq(to + Math.floor(conf.size / 2)).addClass(conf.activeClass);
 }
 
 // nothing happens
 if (to === index + conf.size) { return self; } 

 return api.seekTo(to, time, fn);
 }, 
 
 begin: function(time, fn) {
 return this.seekTo(conf.size, time, fn); 
 },
 
 end: function(time, fn) { 
 return this.seekTo(items.length, time, fn); 
 },
 
 click: function(i, time, fn) { 
 
 if (!conf.clickable) { return self; }
 if (conf.size == 1) { return this.next(); }
 
 var to = i - index, klass = conf.activeClass; 
 to -= Math.floor(conf.size / 2); 
 
 return this.move(to, time, fn, true);
 },
 
 getIndex: function() {
 return index; 
 },
 
 setPage: function(page, time, fn) {
 return this.seekTo(page * conf.size + conf.size, time, fn); 
 },
 
 getPageAmount: function() {
 return Math.ceil(items.length / conf.size); 
 },
 
 getPageIndex: function() { 
 if (index < 0) { return this.getPageAmount() -1; }
 if (index >= items.length) { return 0; }
 return (index + conf.size) / conf.size -1;
 },

 getVisibleItems: function() {
 var i = index + conf.size;
 return allItems.slice(i, i + conf.size); 
 } 
 
 }); 
 
 // navi buttons are never disabled 
 api.onSeek(function(e, i) { 
 index = i - conf.size;
 
 // navi buttons are never disabled
 api.getNaviButtons().removeClass(conf.disabledClass);
 }); 
 
 api.getNaviButtons().removeClass(conf.disabledClass);
 
 });
 
 return config.api ? ret : this;
 
 };

 
})(jQuery);
 

/**
 * jQuery TOOLS plugin :: scrollable.autoscroll 1.0.1
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/scrollable.html#autoscroll
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Launch : September 2009
 * Date: ${date}
 * Revision: ${revision} 
 */
(function($) { 

 var t = $.tools.scrollable; 
 t.plugins = t.plugins || {};
 
 t.plugins.autoscroll = {
 version: '1.0.1',
 
 conf: {
 autoplay: true,
 interval: 3000,
 autopause: true,
 steps: 1,
 api: false
 }
 }; 
 
 // jQuery plugin implementation
 $.fn.autoscroll = function(conf) { 

 if (typeof conf == 'number') {
 conf = {interval: conf}; 
 }
 
 var opts = $.extend({}, t.plugins.autoscroll.conf), ret;
 $.extend(opts, conf); 
 
 this.each(function() { 
 
 var api = $(this).scrollable(); 
 if (api) { ret = api; }
 
 // interval stuff
 var timer, hoverTimer, stopped = true;
 
 api.play = function() {
 
 // do not start additional timer if already exists
 if (timer) { return; }
 
 stopped = false;
 
 // construct new timer
 timer = setInterval(function() { 
 api.move(opts.steps); 
 }, opts.interval);
 
 api.move(opts.steps);
 }; 

 api.pause = function() {
 timer = clearInterval(timer); 
 };
 
 // when stopped - mouseover won't restart 
 api.stop = function() {
 api.pause();
 stopped = true; 
 };
 
 /* when mouse enters, autoscroll stops */
 if (opts.autopause) {
 api.getRoot().add(api.getNaviButtons()).hover(function() { 
 api.pause();
 clearInterval(hoverTimer);
 
 }, function() {
 if (!stopped) { 
 hoverTimer = setTimeout(api.play, opts.interval); 
 }
 });
 } 
 
 if (opts.autoplay) {
 setTimeout(api.play, opts.interval); 
 }

 });
 
 return opts.api ? ret : this;
 
 }; 
 
})(jQuery); 

/**
 * jQuery TOOLS plugin :: scrollable.navigator 1.0.2
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/scrollable.html#navigator
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Launch : September 2009
 * Date: ${date}
 * Revision: ${revision} 
 */
(function($) {
 
 var t = $.tools.scrollable; 
 t.plugins = t.plugins || {};
 
 t.plugins.navigator = {
 version: '1.0.2',
 
 conf: {
 navi: '.navi',
 naviItem: null, 
 activeClass: 'active',
 indexed: false,
 api: false,
 idPrefix: null
 }
 }; 
 
 // jQuery plugin implementation
 $.fn.navigator = function(conf) {

 var globals = $.extend({}, t.plugins.navigator.conf), ret;
 if (typeof conf == 'string') { conf = {navi: conf}; }
 
 conf = $.extend(globals, conf);
 
 this.each(function() {
 
 var api = $(this).scrollable(),
 root = api.getRoot(), 
 navi = root.data("finder").call(null, conf.navi), 
 els = null, 
 buttons = api.getNaviButtons();
 
 if (api) { ret = api; }
 
 api.getNaviButtons = function() {
 return buttons.add(navi); 
 }; 
 
 // generate new entries
 function reload() {
 
 if (!navi.children().length || navi.data("navi") == api) {
 
 navi.empty();
 navi.data("navi", api);
 
 for (var i = 0; i < api.getPageAmount(); i++) { 
 navi.append($("<" + (conf.naviItem || 'a') + "/>"));
 }
 
 els = navi.children().each(function(i) {
 var el = $(this);
 el.click(function(e) {
 api.setPage(i); 
 return e.preventDefault();
 });
 
 // possible index number
 if (conf.indexed) { el.text(i); }
 if (conf.idPrefix) { el.attr("id", conf.idPrefix + i); }
 });
 
 
 // assign onClick events to existing entries
 } else {
 
 // find a entries first -> syntaxically correct
 els = conf.naviItem ? navi.find(conf.naviItem) : navi.children();
 
 els.each(function(i) {
 var el = $(this);
 
 el.click(function(evt) {
 api.setPage(i);
 return evt.preventDefault(); 
 });
 
 });
 }
 
 // activate first entry
 els.eq(0).addClass(conf.activeClass); 
 
 }
 
 // activate correct entry
 api.onStart(function(e, index) {
 var cls = conf.activeClass; 
 els.removeClass(cls).eq(api.getPageIndex()).addClass(cls);
 });
 
 api.onReload(function() {
 reload(); 
 });
 
 reload(); 
 
 // look for correct navi item from location.hash
 var el = els.filter("[href=" + location.hash + "]"); 
 if (el.length) { api.move(els.index(el)); } 
 
 
 }); 
 
 return conf.api ? ret : this;
 
 };
 
})(jQuery); 

/**
 * jQuery TOOLS plugin :: scrollable.mousewheel 1.0.1
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/scrollable.html#mousewheel
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Launch : September 2009
 * Date: ${date}
 * Revision: ${revision} 
 *
 * 
 * jquery.event.wheel.js - rev 1 
 * Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
 * Liscensed under the MIT License (MIT-LICENSE.txt)
 * http://www.opensource.org/licenses/mit-license.php
 * Created: 2008-07-01 | Updated: 2008-07-14
 */
(function($) {
 
 $.fn.wheel = function( fn ){
 return this[ fn ? "bind" : "trigger" ]( "wheel", fn );
 };

 // special event config
 $.event.special.wheel = {
 setup: function(){
 $.event.add( this, wheelEvents, wheelHandler, {} );
 },
 teardown: function(){
 $.event.remove( this, wheelEvents, wheelHandler );
 }
 };

 // events to bind ( browser sniffed... )
 var wheelEvents = !$.browser.mozilla ? "mousewheel" : // IE, opera, safari
 "DOMMouseScroll"+( $.browser.version<"1.9" ? " mousemove" : "" ); // firefox

 // shared event handler
 function wheelHandler( event ) {
 
 switch ( event.type ){
 
 // FF2 has incorrect event positions
 case "mousemove": 
 return $.extend( event.data, { // store the correct properties
 clientX: event.clientX, clientY: event.clientY,
 pageX: event.pageX, pageY: event.pageY
 });
 
 // firefox 
 case "DOMMouseScroll": 
 $.extend( event, event.data ); // fix event properties in FF2
 event.delta = -event.detail / 3; // normalize delta
 break;
 
 // IE, opera, safari 
 case "mousewheel": 
 event.delta = event.wheelDelta / 120;
 break;
 }
 
 event.type = "wheel"; // hijack the event 
 return $.event.handle.call( this, event, event.delta );
 }
 
 
 // version number
 var t = $.tools.scrollable; 
 t.plugins = t.plugins || {};
 t.plugins.mousewheel = { 
 version: '1.0.1',
 conf: { 
 api: false,
 speed: 50
 } 
 }; 
 
 // scrollable mousewheel implementation
 $.fn.mousewheel = function(conf) {

 var globals = $.extend({}, t.plugins.mousewheel.conf), ret;
 if (typeof conf == 'number') { conf = {speed: conf}; }
 conf = $.extend(globals, conf);
 
 this.each(function() { 

 var api = $(this).scrollable();
 if (api) { ret = api; }
 
 api.getRoot().wheel(function(e, delta) { 
 api.move(delta < 0 ? 1 : -1, conf.speed || 50);
 return false;
 });
 });
 
 return conf.api ? ret : this;
 };
 
})(jQuery); 


