1/* 2 * jQuery JavaScript Library v1.3.2 3 * http://jquery.com/ 4 * 5 * Copyright (c) 2009 John Resig 6 * Dual licensed under the MIT and GPL licenses. 7 * http://docs.jquery.com/License 8 * 9 * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) 10 * Revision: 6246 11 */ 12(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))}})}
12,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}})}
12,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?
120: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];
12if(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)})}}); 13/* 14 * Sizzle CSS Selector Engine - v0.9.3 15 * Copyright 2009, The Dojo Foundation 16 * Released under the MIT, BSD, and GPL Licenses. 17 * More information: http://sizzlejs.com/ 18 */ 19(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\(\)]*
19)+)\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}
19if(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 charCo
19de 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)}
19o.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();
19if(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"],["o
19pacity"]];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;
19if(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.
19clientLeft||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")}})})();; 20 21var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'themes': {}, 'locale': {} }; 22 23/** 24 * Set the variable that indicates if JavaScript behaviors should be applied 25 */ 26Drupal.jsEnabled = document.getElementsByTagName && document.createElement && document.createTextNode && document.documentElement && document.getElementById; 27 28/** 29 * Attach all registered behaviors to a page element. 30 * 31 * Behaviors are event-triggered actions that attach to page elements, enhancing 32 * default non-Javascript UIs. Behaviors are registered in the Drupal.behaviors 33 * object as follows: 34 * @code 35 * Drupal.behaviors.behaviorName = function () { 36 * ... 37 * }; 38 * @endcode 39 * 40 * Drupal.attachBehaviors is added below to the jQuery ready event and so 41 * runs on initial page load. Developers implementing AHAH/AJAX in their 42 * solutions should also call this function after new page content has been 43 * loaded, feeding in an element to be processed, in order to attach all 44 * behaviors to the new content. 45 * 46 * Behaviors should use a class in the form behaviorName-processed to ensure 47 * the behavior is attached only once to a given element. (Doing so enables 48 * the reprocessing of given elements, which may be needed on occasion despite 49 * the ability to limit behavior attachment to a particular element.) 50 * 51 * @param context 52 * An element to attach behaviors to. If none is given, the document element 53 * is used. 54 */ 55Drupal.attachBehaviors = function(context) { 56 context = context || document; 57 if (Drupal.jsEnabled) { 58 // Execute all of them. 59 jQuery.each(Drupal.behaviors, function() { 60 this(context); 61 }); 62 } 63}; 64 65/** 66 * Encode special characters in a plain-text string for display as HTML. 67 */ 68Drupal.checkPlain = function(str) { 69 str = String(str); 70 var replace = { '&': '&', '"': '"', '<': '<', '>': '>' }; 71 for (var character in replace) { 72 var regex = new RegExp(character, 'g'); 73 str = str.replace(regex, replace[character]); 74 } 75 return str; 76}; 77 78/** 79 * Translate strings to the page language or a given language. 80 * 81 * See the documentation of the server-side t() function for further details. 82 * 83 * @param str 84 * A string containing the English string to translate. 85 * @param args 86 * An object of replacements pairs to make after translation. Incidences 87 * of any key in this array are replaced with the corresponding value. 88 * Based on the first character of the key, the value is escaped and/or themed: 89 * - !variable: inserted as is 90 * - @variable: escape plain text to HTML (Drupal.checkPlain) 91 * - %variable: escape text and theme as a placeholder for user-submitted 92 * content (checkPlain + Drupal.theme('placeholder')) 93 * @return 94 * The translated string. 95 */ 96Drupal.t = function(str, args) { 97 // Fetch the localized version of the string. 98 if (Drupal.locale.strings && Drupal.locale.strings[str]) { 99 str = Drupal.locale.strings[str]; 100 } 101 102 if (args) { 103 // Transform arguments before inserting them 104 for (var key in args) { 105 switch (key.charAt(0)) { 106 // Escaped only 107 case '@': 108 args[key] = Drupal.checkPlain(args[key]); 109 break; 110 // Pass-through 111 case '!': 112 break; 113 // Escaped and placeholder 114 case '%': 115 default: 116 args[key] = Drupal.theme('placeholder', args[key]); 117 break; 118 } 119 str = str.replace(key, args[key]); 120 } 121 } 122 return str; 123}; 124 125/** 126 * Format a string containing a count of items. 127 * 128 * This function ensures that the string is pluralized correctly. Since Drupal.t() is 129 * called by this function, make sure not to pass already-localized strings to it. 130 * 131 * See the documentation of the server-side format_plural() function for further details. 132 * 133 * @param count 134 * The item count to display. 135 * @param singular 136 * The string for the singular case. Please make sure it is clear this is 137 * singular, to ease translation (e.g. use "1 new comment" instead of "1 new"). 138 * Do not use @count in the singular string. 139 * @param plural 140 * The string for the plural case. Please make sure it is clear this is plural, 141 * to ease translation. Use @count in place of the item count, as in "@count 142 * new comments". 143 * @param args 144 * An object of replacements pairs to make after translation. Incidences 145 * of any key in this array are replaced with the corresponding value. 146 * Based on the first character of the key, the value is escaped and/or themed: 147 * - !variable: inserted as is 148 * - @variable: escape plain text to HTML (Drupal.checkPlain) 149 * - %variable: escape text and theme as a placeholder for user-submitted 150 * content (checkPlain + Drupal.theme('placeholder')) 151 * Note that you do not need to include @count in this array.
152 * This replacement is done automatically for the plural case. 153 * @return 154 * A translated string. 155 */ 156Drupal.formatPlural = function(count, singular, plural, args) { 157 var args = args || {}; 158 args['@count'] = count; 159 // Determine the index of the plural form. 160 var index = Drupal.locale.pluralFormula ? Drupal.locale.pluralFormula(args['@count']) : ((args['@count'] == 1) ? 0 : 1); 161 162 if (index == 0) { 163 return Drupal.t(singular, args); 164 } 165 else if (index == 1) { 166 return Drupal.t(plural, args); 167 } 168 else { 169 args['@count['+ index +']'] = args['@count']; 170 delete args['@count']; 171 return Drupal.t(plural.replace('@count', '@count['+ index +']'), args); 172 } 173}; 174 175/** 176 * Generate the themed representation of a Drupal object. 177 * 178 * All requests for themed output must go through this function. It examines 179 * the request and routes it to the appropriate theme function. If the current 180 * theme does not provide an override function, the generic theme function is 181 * called. 182 * 183 * For example, to retrieve the HTML that is output by theme_placeholder(text), 184 * call Drupal.theme('placeholder', text). 185 * 186 * @param func 187 * The name of the theme function to call. 188 * @param ... 189 * Additional arguments to pass along to the theme function. 190 * @return 191 * Any data the theme function returns. This could be a plain HTML string, 192 * but also a complex object. 193 */ 194Drupal.theme = function(func) { 195 for (var i = 1, args = []; i < arguments.length; i++) { 196 args.push(arguments[i]); 197 } 198 199 return (Drupal.theme[func] || Drupal.theme.prototype[func]).apply(this, args); 200}; 201 202/** 203 * Parse a JSON response. 204 * 205 * The result is either the JSON object, or an object with 'status' 0 and 'data' an error message. 206 */ 207Drupal.parseJson = function (data) { 208 if ((data.substring(0, 1) != '{') && (data.substring(0, 1) != '[')) { 209 return { status: 0, data: data.length ? data : Drupal.t('Unspecified error') }; 210 } 211 return eval('(' + data + ');'); 212}; 213 214/** 215 * Freeze the current body height (as minimum height). Used to prevent 216 * unnecessary upwards scrolling when doing DOM manipulations. 217 */ 218Drupal.freezeHeight = function () { 219 Drupal.unfreezeHeight(); 220 var div = document.createElement('div'); 221 $(div).css({ 222 position: 'absolute', 223 top: '0px', 224 left: '0px', 225 width: '1px', 226 height: $('body').css('height') 227 }).attr('id', 'freeze-height'); 228 $('body').append(div); 229}; 230 231/** 232 * Unfreeze the body height 233 */ 234Drupal.unfreezeHeight = function () { 235 $('#freeze-height').remove(); 236}; 237 238/** 239 * Wrapper around encodeURIComponent() which avoids Apache quirks (equivalent of 240 * drupal_urlencode() in PHP). This function should only be used on paths, not 241 * on query string arguments. 242 */ 243Drupal.encodeURIComponent = function (item, uri) { 244 uri = uri || location.href; 245 item = encodeURIComponent(item).replace(/%2F/g, '/'); 246 return (uri.indexOf('?q=') != -1) ? item : item.replace(/%26/g, '%2526').replace(/%23/g, '%2523').replace(/\/\//g, '/%252F'); 247}; 248 249/** 250 * Get the text selection in a textarea. 251 */ 252Drupal.getSelection = function (element) { 253 if (typeof(element.selectionStart) != 'number' && document.selection) { 254 // The current selection 255 var range1 = document.selection.createRange(); 256 var range2 = range1.duplicate(); 257 // Select all text. 258 range2.moveToElementText(element); 259 // Now move 'dummy' end point to end point of original range. 260 range2.setEndPoint('EndToEnd', range1); 261 // Now we can calculate start and end points. 262 var start = range2.text.length - range1.text.length; 263 var end = start + range1.text.length; 264 return { 'start': start, 'end': end }; 265 } 266 return { 'start': element.selectionStart, 'end': element.selectionEnd }; 267}; 268 269/** 270 * Build an error message from ahah response. 271 */ 272Drupal.ahahError = function(xmlhttp, uri) { 273 if (xmlhttp.status == 200) { 274 if (jQuery.trim($(xmlhttp.responseText).text())) { 275 var message = Drupal.t("An error occurred. \n@uri\n@text", {'@uri': uri, '@text': xmlhttp.responseText }); 276 } 277 else { 278 var message = Drupal.t("An error occurred. \n@uri\n(no information available).", {'@uri': uri, '@text': xmlhttp.responseText }); 279 } 280 } 281 else { 282 var message = Drupal.t("An HTTP error @status occurred. \n@uri", {'@uri': uri, '@status': xmlhttp.status }); 283 } 284 return message; 285} 286 287// Global Killswitch on the <html> element 288if (Drupal.jsEnabled) { 289 // Global Killswitch on the <html> element 290 $(document.documentElement).addClass('js'); 291 // 'js enabled' cookie 292 document.cookie = 'has_js=1; path=/'; 293 // Attach all behaviors. 294 $(document).ready(function() { 295 Drupal.attachBehaviors(this); 296 }); 297} 298 299/** 300 * The default themes. 301 */ 302Drupal.theme.prototype = { 303 304 /** 305 * Formats text for emphasized display in a placeholder inside a sentence. 306 * 307 * @param str 308 * The text to format (plain-text). 309 * @return 310 * The formatted text (html). 311 */ 312 placeholder: function(str) { 313 return '<em>' + Drupal.checkPlain(str) + '</em>'; 314 } 315}; 316; 317Drupal.locale = { 'pluralFormula': function($n) { return Number(($n!=1)); }, 'strings': { "Unspecified error": "ÎÏÏοÏδιÏÏιÏÏο ÏÏάλμα", "An error occurred. \n@uri\n@text": "ΠαÏÎ¿Ï ÏιάÏÏηκε ÏÏάλμα. \n@uri\n@text", "An error occurred. \n@uri\n(no information available).": "ΠαÏÎ¿Ï ÏιάÏÏηκε ÏÏάλμα. \n@uri\n(καμία διαθÎÏιμη ÏληÏοÏοÏία).", "An HTTP error @status occurred. \n@uri": "ΠαÏÎ¿Ï ÏιάÏÏηκε HTTP ÏÏάλμα. @status \n@uri", "Drag to re-order": "ÎεÏακινήÏÏε για ανακαÏάÏαξη", "Changes made in this table will not be saved until the form is submitted.": "Îι αλλαγÎÏ ÏÎ¿Ï Î³Î¯Î½Î¿Î½Ïαι Ï\' Î±Ï ÏÏν Ïον Ïίνακα δεν θα αÏÎ¿Î¸Î·ÎºÎµÏ ÏοÏν ÎÏÏ ÏÏÎ¿Ï Î· ÏÏÏμα Ï Ïοβληθεί.", "Select all rows in this table": "ÎÏιλογή ÏλÏν ÏÏν γÏαμμÏν Ïε Î±Ï ÏÏν Ïον Ïίνακα", "Deselect all rows in this table": "ÎÏοεÏιλογή ÏλÏν ÏÏν γÏαμμÏν Ïε Î±Ï ÏÏ Ïον Ïίνακα", "Split summary at cursor": "ÎιαÏÏÏιÏμÏÏ ÏεÏίληÏÎ·Ï ÏÏο Ïημείο ÏÎ¿Ï Î²ÏίÏκεÏαι ο δÏομÎαÏ", "Join
317summary": "ÎνÏÏη ÏεÏίληÏηÏ", "Your server has been successfully tested to support this feature.": "ΠδιακομιÏÏÎ®Ï ÏÎ±Ï Î´Î¿ÎºÎ¹Î¼Î¬ÏÏηκε εÏιÏÏ ÏÏÏ Î³Î¹Î± Ï ÏοÏÏήÏιξη Î±Ï ÏÎ¿Ï ÏÎ¿Ï ÏαÏακÏηÏιÏÏικοÏ.", "Testing clean URLs...": "Îοκιμή καθαÏÏν Î´Î¹ÎµÏ Î¸ÏνÏεÏν URL...", "Your system configuration does not currently support this feature. The \x3ca href=\"http://drupal.org/node/15365\"\x3ehandbook page on Clean URLs\x3c/a\x3e has additional troubleshooting information.": "ΠδιαμÏÏÏÏÏη ÏÎ¿Ï ÏÏ ÏÏήμαÏÏÏ ÏÎ±Ï Î´ÎµÎ½ Ï ÏοÏÏηÏίζει Î±Ï ÏÏ Ïο ÏαÏακÏηÏιÏÏÎ¹ÎºÏ Î±Ï Ïή Ïη ÏÏιγμή. Î \x3ca href=\"http://drupal.org/node/15365\"\x3eÏελίδα ÏÎ¿Ï ÎµÎ³ÏειÏÎ¹Î´Î¯Î¿Ï ÏεÏί ÎαθαÏÏν ÎÎ¹ÎµÏ Î¸ÏνÏεÏν URL\x3c/a\x3e ÏεÏιλαμβάνει ÏεÏιÏÏÏÏεÏÎµÏ ÏληÏοÏοÏÎ¯ÎµÏ Î±ÏοκαÏάÏÏαÏηÏ.", "The changes to these blocks will not be saved until the \x3cem\x3eSave blocks\x3c/em\x3e button is clicked.": "Îι αλλαγÎÏ Ïε Î±Ï Ïά Ïα μÏλοκ δεν θα αÏÎ¿Î¸Î·ÎºÎµÏ ÏοÏν ÎÏÏ ÏÏÎ¿Ï ÎºÎ¬Î½ÎµÏε κλικ ÏÏο ÎºÎ¿Ï Î¼Ïί \x3cem\x3eÎÏÎ¿Î¸Î®ÎºÎµÏ Ïη μÏλοκ\x3c/em\x3e." } };; 318/* $Id: lightbox.js,v 1.5.2.6.2.136 2010/09/24 08:39:40 snpower Exp $ */ 319 320/** 321 * jQuery Lightbox 322 * @author 323 * Stella Power, <http://drupal.org/user/66894> 324 * 325 * Based on Lightbox v2.03.3 by Lokesh Dhakar 326 * <http://www.huddletogether.com/projects/lightbox2/> 327 * Also partially based on the jQuery Lightbox by Warren Krewenki 328 * <http://warren.mesozen.com> 329 * 330 * Permission has been granted to Mark Ashmead & other Drupal Lightbox2 module 331 * maintainers to distribute this file via Drupal.org 332 * Under GPL license. 333 * 334 * Slideshow, iframe and video functionality added by Stella Power. 335 */ 336 337var Lightbox = { 338 auto_modal : false, 339 overlayOpacity : 0.8, // Controls transparency of shadow overlay. 340 overlayColor : '000', // Controls colour of shadow overlay. 341 disableCloseClick : true, 342 // Controls the order of the lightbox resizing animation sequence. 343 resizeSequence: 0, // 0: simultaneous, 1: width then height, 2: height then width. 344 resizeSpeed: 'normal', // Controls the speed of the lightbox resizing animation. 345 fadeInSpeed: 'normal', // Controls the speed of the image appearance. 346 slideDownSpeed: 'slow', // Controls the speed of the image details appearance. 347 minWidth: 240, 348 borderSize : 10, 349 boxColor : 'fff', 350 fontColor : '000', 351 topPosition : '', 352 infoHeight: 20, 353 alternative_layout : false, 354 imageArray : [], 355 imageNum : null, 356 total : 0, 357 activeImage : null, 358 inprogress : false, 359 disableResize : false, 360 disableZoom : false, 361 isZoomedIn : false, 362 rtl : false, 363 loopItems : false, 364 keysClose : ['c', 'x', 27], 365 keysPrevious : ['p', 37], 366 keysNext : ['n', 39], 367 keysZoom : ['z'], 368 keysPlayPause : [32], 369 370 // Slideshow options. 371 slideInterval : 5000, // In milliseconds. 372 showPlayPause : true, 373 autoStart : true, 374 autoExit : true, 375 pauseOnNextClick : false, // True to pause the slideshow when the "Next" button is clicked. 376 pauseOnPrevClick : true, // True to pause the slideshow when the "Prev" button is clicked. 377 slideIdArray : [], 378 slideIdCount : 0, 379 isSlideshow : false, 380 isPaused : false, 381 loopSlides : false, 382 383 // Iframe options. 384 isLightframe : false, 385 iframe_width : 600, 386 iframe_height : 400, 387 iframe_border : 1, 388 389 // Video and modal options. 390 enableVideo : false, 391 flvPlayer : '/flvplayer.swf', 392 flvFlashvars : '', 393 isModal : false, 394 isVideo : false, 395 videoId : false, 396 modalWidth : 400, 397 modalHeight : 400, 398 modalHTML : null, 399 400 401 // initialize() 402 // Constructor runs on completion of the DOM loading. 403 // The function inserts html at the bottom of the page which is used 404 // to display the shadow overlay and the image container. 405 initialize: function() { 406 407 var s = Drupal.settings.lightbox2; 408 Lightbox.overlayOpacity = s.overlay_opacity; 409 Lightbox.overlayColor = s.overlay_color; 410 Lightbox.disableCloseClick = s.disable_close_click; 411 Lightbox.resizeSequence = s.resize_sequence; 412 Lightbox.resizeSpeed = s.resize_speed; 413 Lightbox.fadeInSpeed = s.fade_in_speed; 414 Lightbox.slideDownSpeed = s.slide_down_speed; 415 Lightbox.borderSize = s.border_size; 416 Lightbox.boxColor = s.box_color; 417 Lightbox.fontColor = s.font_color; 418 Lightbox.topPosition = s.top_position; 419 Lightbox.rtl = s.rtl; 420 Lightbox.loopItems = s.loop_items; 421 Lightbox.keysClose = s.keys_close.split(" "); 422 Lightbox.keysPrevious = s.keys_previous.split(" "); 423 Lightbox.keysNext = s.keys_next.split(" ");
424 Lightbox.keysZoom = s.keys_zoom.split(" "); 425 Lightbox.keysPlayPause = s.keys_play_pause.split(" "); 426 Lightbox.disableResize = s.disable_resize; 427 Lightbox.disableZoom = s.disable_zoom; 428 Lightbox.slideInterval = s.slideshow_interval; 429 Lightbox.showPlayPause = s.show_play_pause; 430 Lightbox.showCaption = s.show_caption; 431 Lightbox.autoStart = s.slideshow_automatic_start; 432 Lightbox.autoExit = s.slideshow_automatic_exit; 433 Lightbox.pauseOnNextClick = s.pause_on_next_click; 434 Lightbox.pauseOnPrevClick = s.pause_on_previous_click; 435 Lightbox.loopSlides = s.loop_slides; 436 Lightbox.alternative_layout = s.use_alt_layout; 437 Lightbox.iframe_width = s.iframe_width; 438 Lightbox.iframe_height = s.iframe_height; 439 Lightbox.iframe_border = s.iframe_border; 440 Lightbox.enableVideo = s.enable_video; 441 if (s.enable_video) { 442 Lightbox.flvPlayer = s.flvPlayer; 443 Lightbox.flvFlashvars = s.flvFlashvars; 444 } 445 446 // Make the lightbox divs. 447 var layout_class = (s.use_alt_layout ? 'lightbox2-alt-layout' : 'lightbox2-orig-layout'); 448 var output = '<div id="lightbox2-overlay" style="display: none;"></div>\ 449 <div id="lightbox" style="display: none;" class="' + layout_class + '">\ 450 <div id="outerImageContainer"></div>\ 451 <div id="imageDataContainer" class="clearfix">\ 452 <div id="imageData"></div>\ 453 </div>\ 454 </div>'; 455 var loading = '<div id="loading"><a href="#" id="loadingLink"></a></div>'; 456 var modal = '<div id="modalContainer" style="display: none;"></div>'; 457 var frame = '<div id="frameContainer" style="display: none;"></div>'; 458 var imageContainer = '<div id="imageContainer" style="display: none;"></div>'; 459 var details = '<div id="imageDetails"></div>'; 460 var bottomNav = '<div id="bottomNav"></div>'; 461 var image = '<img id="lightboxImage" alt="" />'; 462 var hoverNav = '<div id="hoverNav"><a id="prevLink" href="#"></a><a id="nextLink" href="#"></a></div>'; 463 var frameNav = '<div id="frameHoverNav"><a id="framePrevLink" href="#"></a><a id="frameNextLink" href="#"></a></div>'; 464 var hoverNav = '<div id="hoverNav"><a id="prevLink" title="' + Drupal.t('Previous') + '" href="#"></a><a id="nextLink" title="' + Drupal.t('Next') + '" href="#"></a></div>'; 465 var frameNav = '<div id="frameHoverNav"><a id="framePrevLink" title="' + Drupal.t('Previous') + '" href="#"></a><a id="frameNextLink" title="' + Drupal.t('Next') + '" href="#"></a></div>'; 466 var caption = '<span id="caption"></span>'; 467 var numberDisplay = '<span id="numberDisplay"></span>'; 468 var close = '<a id="bottomNavClose" title="' + Drupal.t('Close') + '" href="#"></a>'; 469 var zoom = '<a id="bottomNavZoom" href="#"></a>'; 470 var zoomOut = '<a id="bottomNavZoomOut" href="#"></a>'; 471 var pause = '<a id="lightshowPause" title="' + Drupal.t('Pause Slideshow') + '" href="#" style="display: none;"></a>'; 472 var play = '<a id="lightshowPlay" title="' + Drupal.t('Play Slideshow') + '" href="#" style="display: none;"></a>'; 473 474 $("body").append(output); 475 $('#outerImageContainer').append(modal + frame + imageContainer + loading); 476 if (!s.use_alt_layout) { 477 $('#imageContainer').append(image + hoverNav);
478 $('#imageData').append(details + bottomNav); 479 $('#imageDetails').append(caption + numberDisplay); 480 $('#bottomNav').append(frameNav + close + zoom + zoomOut + pause + play); 481 } 482 else { 483 $('#outerImageContainer').append(bottomNav); 484 $('#imageContainer').append(image); 485 $('#bottomNav').append(close + zoom + zoomOut); 486 $('#imageData').append(hoverNav + details); 487 $('#imageDetails').append(caption + numberDisplay + pause + play); 488 } 489 490 // Setup onclick handlers. 491 if (Lightbox.disableCloseClick) { 492 $('#lightbox2-overlay').click(function() { Lightbox.end(); return false; } ).hide(); 493 } 494 $('#loadingLink, #bottomNavClose').click(function() { Lightbox.end('forceClose'); return false; } ); 495 $('#prevLink, #framePrevLink').click(function() { Lightbox.changeData(Lightbox.activeImage - 1); return false; } ); 496 $('#nextLink, #frameNextLink').click(function() { Lightbox.changeData(Lightbox.activeImage + 1); return false; } ); 497 $('#bottomNavZoom').click(function() { Lightbox.changeData(Lightbox.activeImage, true); return false; } ); 498 $('#bottomNavZoomOut').click(function() { Lightbox.changeData(Lightbox.activeImage, false); return false; } ); 499 $('#lightshowPause').click(function() { Lightbox.togglePlayPause("lightshowPause", "lightshowPlay"); return false; } ); 500 $('#lightshowPlay').click(function() { Lightbox.togglePlayPause("lightshowPlay", "lightshowPause"); return false; } ); 501 502 // Fix positioning. 503 $('#prevLink, #nextLink, #framePrevLink, #frameNextLink').css({ 'paddingTop': Lightbox.borderSize + 'px'}); 504 $('#imageContainer, #frameContainer, #modalContainer').css({ 'padding': Lightbox.borderSize + 'px'}); 505 $('#outerImageContainer, #imageDataContainer, #bottomNavClose').css({'backgroundColor': '#' + Lightbox.boxColor, 'color': '#'+Lightbox.fontColor}); 506 if (Lightbox.alternative_layout) { 507 $('#bottomNavZoom, #bottomNavZoomOut').css({'bottom': Lightbox.borderSize + 'px', 'right': Lightbox.borderSize + 'px'}); 508 } 509 else if (Lightbox.rtl == 1 && $.browser.msie) { 510 $('#bottomNavZoom, #bottomNavZoomOut').css({'left': '0px'}); 511 } 512 513 // Force navigation links to always be displayed 514 if (s.force_show_nav) { 515 $('#prevLink, #nextLink').addClass("force_show_nav"); 516 } 517 518 }, 519 520 // initList() 521 // Loops through anchor tags looking for 'lightbox', 'lightshow' and 522 // 'lightframe', etc, references and applies onclick events to appropriate 523 // links. You can rerun after dynamically adding images w/ajax. 524 initList : function(context) { 525 526 if (context == undefined || context == null) { 527 context = document; 528 } 529 530 // Attach lightbox to any links with rel 'lightbox', 'lightshow' or 531 // 'lightframe', etc. 532 $("a[rel^='lightbox']:not(.lightbox-processed), area[rel^='lightbox']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) { 533 if (Lightbox.disableCloseClick) { 534 $('#lightbox').unbind('click'); 535 $('#lightbox').click(function() { Lightbox.end('forceClose'); } ); 536 } 537 Lightbox.start(this, false, false, false, false); 538 if (e.preventDefault) { e.preventDefault(); } 539 return false; 540 }); 541 $("a[rel^='lightshow']:not(.lightbox-processed), area[rel^='lightshow']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) { 542 if (Lightbox.disableCloseClick) { 543 $('#lightbox').unbind('click'); 544 $('#lightbox').click(function() { Lightbox.end('forceClose'); } ); 545 } 546 Lightbox.start(this, true, false, false, false); 547 if (e.preventDefault) { e.preventDefault(); } 548 return false; 549 }); 550 $("a[rel^='lightframe']:not(.lightbox-processed), area[rel^='lightframe']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) { 551 if (Lightbox.disableCloseClick) { 552 $('#lightbox').unbind('click'); 553 $('#lightbox').click(function() { Lightbox.end('forceClose'); } ); 554 } 555 Lightbox.start(this, false, true, false, false); 556 if (e.preventDefault) { e.preventDefault(); } 557 return false;
558 }); 559 if (Lightbox.enableVideo) { 560 $("a[rel^='lightvideo']:not(.lightbox-processed), area[rel^='lightvideo']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) { 561 if (Lightbox.disableCloseClick) { 562 $('#lightbox').unbind('click'); 563 $('#lightbox').click(function() { Lightbox.end('forceClose'); } ); 564 } 565 Lightbox.start(this, false, false, true, false); 566 if (e.preventDefault) { e.preventDefault(); } 567 return false; 568 }); 569 } 570 $("a[rel^='lightmodal']:not(.lightbox-processed), area[rel^='lightmodal']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) { 571 $('#lightbox').unbind('click'); 572 // Add classes from the link to the lightbox div - don't include lightbox-processed 573 $('#lightbox').addClass($(this).attr('class')); 574 $('#lightbox').removeClass('lightbox-processed'); 575 Lightbox.start(this, false, false, false, true); 576 if (e.preventDefault) { e.preventDefault(); } 577 return false; 578 }); 579 $("#lightboxAutoModal:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) { 580 Lightbox.auto_modal = true; 581 $('#lightbox').unbind('click'); 582 Lightbox.start(this, false, false, false, true); 583 if (e.preventDefault) { e.preventDefault(); } 584 return false; 585 }); 586 }, 587 588 // start() 589 // Display overlay and lightbox. If image is part of a set, add siblings to 590 // imageArray. 591 start: function(imageLink, slideshow, lightframe, lightvideo, lightmodal) { 592 593 Lightbox.isPaused = !Lightbox.autoStart; 594 595 // Replaces hideSelectBoxes() and hideFlash() calls in original lightbox2. 596 Lightbox.toggleSelectsFlash('hide'); 597 598 // Stretch overlay to fill page and fade in. 599 var arrayPageSize = Lightbox.getPageSize(); 600 $("#lightbox2-overlay").hide().css({ 601 'width': '100%', 602 'zIndex': '10090', 603 'height': arrayPageSize[1] + 'px', 604 'backgroundColor' : '#' + Lightbox.overlayColor 605 }); 606 // Detect OS X FF2 opacity + flash issue. 607 if (lightvideo && this.detectMacFF2()) { 608 $("#lightbox2-overlay").removeClass("overlay_default"); 609 $("#lightbox2-overlay").addClass("overlay_macff2"); 610 $("#lightbox2-overlay").css({'opacity' : null}); 611 } 612 else { 613 $("#lightbox2-overlay").removeClass("overlay_macff2"); 614 $("#lightbox2-overlay").addClass("overlay_default"); 615 $("#lightbox2-overlay").css({'opacity' : Lightbox.overlayOpacity}); 616 } 617 $("#lightbox2-overlay").fadeIn(Lightbox.fadeInSpeed); 618 619 620 Lightbox.isSlideshow = slideshow; 621 Lightbox.isLightframe = lightframe; 622 Lightbox.isVideo = lightvideo; 623 Lightbox.isModal = lightmodal; 624 Lightbox.imageArray = []; 625 Lightbox.imageNum = 0; 626 627 var anchors = $(imageLink.tagName); 628 var anchor = null; 629 var rel_parts = Lightbox.parseRel(imageLink); 630 var rel = rel_parts["rel"]; 631 var rel_group = rel_parts["group"]; 632 var title = (rel_parts["title"] ? rel_parts["title"] : imageLink.title); 633 var rel_style = null; 634 var i = 0; 635 636 if (rel_parts["flashvars"]) { 637 Lightbox.flvFlashvars = Lightbox.flvFlashvars + '&' + rel_parts["flashvars"]; 638 } 639 640 // Set the title for image alternative text. 641 var alt = imageLink.title; 642 if (!alt) { 643 var img = $(imageLink).find("img"); 644 if (img && $(img).attr("alt")) { 645 alt = $(img).attr("alt"); 646 } 647 else { 648 alt = title; 649 } 650 } 651 652 if ($(imageLink).attr('id') == 'lightboxAutoModal') { 653 rel_style = rel_parts["style"]; 654 Lightbox.imageArray.push(['#lightboxAutoModal > *', title, alt, rel_style, 1]); 655 } 656 else { 657 // Handle lightbox images with no grouping. 658 if ((rel == 'lightbox' || rel == 'lightshow') && !rel_group) { 659 Lightbox.imageArray.push([imageLink.href, title, alt]); 660 } 661 662 // Handle other items with no grouping. 663 else if (!rel_group) { 664 rel_style = rel_parts["style"]; 665 Lightbox.imageArray.push([imageLink.href, title, alt, rel_style]); 666 } 667 668 // Handle grouped items. 669 else { 670 671 // Loop through anchors and add them to imageArray. 672 for (i = 0; i < anchors.length; i++) { 673 anchor = anchors[i]; 674 if (anchor.href && typeof(anchor.href) == "string" && $(anchor).attr('rel')) { 675 var rel_data = Lightbox.parseRel(anchor); 676 var anchor_title = (rel_data["title"] ? rel_data["title"] : anchor.title); 677 img_alt = anchor.title; 678 if (!img_alt) { 679 var anchor_img = $(anchor).find("img"); 680 if (anchor_img && $(anchor_img).attr("alt")) { 681 img_alt = $(anchor_img).attr("alt"); 682 } 683 else { 684 img_alt = title; 685 } 686 } 687 if (rel_data["rel"] == rel) { 688 if (rel_data["group"] == rel_group) { 689 if (Lightbox.isLightframe || Lightbox.isModal || Lightbox.isVideo) { 690 rel_style = rel_data["style"]; 691 } 692 Lightbox.imageArray.push([anchor.href, anchor_title, img_alt, rel_style]); 693 } 694 } 695 } 696 } 697 698 // Remove duplicates. 699 for (i = 0; i < Lightbox.imageArray.length; i++) { 700 for (j = Lightbox.imageArray.length-1; j > i; j--) { 701 if (Lightbox.imageArray[i][0] == Lightbox.imageArray[j][0]) { 702 Lightbox.imageArray.splice(j,1); 703 } 704 } 705 } 706 while (Lightbox.imageArray[Lightbox.imageNum][0] != imageLink.href) { 707 Lightbox.imageNum++; 708 } 709 } 710 } 711 712 if (Lightbox.isSlideshow && Lightbox.showPlayPause && Lightbox.isPaused) { 713 $('#lightshowPlay').show(); 714 $('#lightshowPause').hide(); 715 } 716 717 // Calculate top and left offset for the lightbox. 718 var arrayPageScroll = Lightbox.getPageScroll(); 719 var lightboxTop = arrayPageScroll[1] + (Lightbox.topPosition == '' ? (arrayPageSize[3] / 10) : Lightbox.topPosition) * 1; 720 var lightboxLeft = arrayPageScroll[0]; 721 $('#frameContainer, #modalContainer, #lightboxImage').hide();
722 $('#hoverNav, #prevLink, #nextLink, #frameHoverNav, #framePrevLink, #frameNextLink').hide(); 723 $('#imageDataContainer, #numberDisplay, #bottomNavZoom, #bottomNavZoomOut').hide(); 724 $('#outerImageContainer').css({'width': '250px', 'height': '250px'}); 725 $('#lightbox').css({ 726 'zIndex': '10500', 727 'top': lightboxTop + 'px', 728 'left': lightboxLeft + 'px' 729 }).show(); 730 731 Lightbox.total = Lightbox.imageArray.length; 732 Lightbox.changeData(Lightbox.imageNum); 733 }, 734 735 // changeData() 736 // Hide most elements and preload image in preparation for resizing image 737 // container. 738 changeData: function(imageNum, zoomIn) { 739 740 if (Lightbox.inprogress === false) { 741 if (Lightbox.total > 1 && ((Lightbox.isSlideshow && Lightbox.loopSlides) || (!Lightbox.isSlideshow && Lightbox.loopItems))) { 742 if (imageNum >= Lightbox.total) imageNum = 0; 743 if (imageNum < 0) imageNum = Lightbox.total - 1; 744 } 745 746 if (Lightbox.isSlideshow) { 747 for (var i = 0; i < Lightbox.slideIdCount; i++) { 748 window.clearTimeout(Lightbox.slideIdArray[i]); 749 } 750 } 751 Lightbox.inprogress = true; 752 Lightbox.activeImage = imageNum; 753 754 if (Lightbox.disableResize && !Lightbox.isSlideshow) { 755 zoomIn = true; 756 } 757 Lightbox.isZoomedIn = zoomIn; 758 759 760 // Hide elements during transition. 761 $('#loading').css({'zIndex': '10500'}).show(); 762 if (!Lightbox.alternative_layout) { 763 $('#imageContainer').hide(); 764 } 765 $('#frameContainer, #modalContainer, #lightboxImage').hide(); 766 $('#hoverNav, #prevLink, #nextLink, #frameHoverNav, #framePrevLink, #frameNextLink').hide(); 767 $('#imageDataContainer, #numberDisplay, #bottomNavZoom, #bottomNavZoomOut').hide(); 768 769 // Preload image content, but not iframe pages. 770 if (!Lightbox.isLightframe && !Lightbox.isVideo && !Lightbox.isModal) { 771 $("#lightbox #imageDataContainer").removeClass('lightbox2-alt-layout-data'); 772 imgPreloader = new Image(); 773 imgPreloader.onerror = function() { Lightbox.imgNodeLoadingError(this); }; 774 775 imgPreloader.onload = function() { 776 var photo = document.getElementById('lightboxImage'); 777 photo.src = Lightbox.imageArray[Lightbox.activeImage][0]; 778 photo.alt = Lightbox.imageArray[Lightbox.activeImage][2]; 779 780 var imageWidth = imgPreloader.width; 781 var imageHeight = imgPreloader.height; 782 783 // Resize code. 784 var arrayPageSize = Lightbox.getPageSize(); 785 var targ = { w:arrayPageSize[2] - (Lightbox.borderSize * 2), h:arrayPageSize[3] - (Lightbox.borderSize * 6) - (Lightbox.infoHeight * 4) - (arrayPageSize[3] / 10) }; 786 var orig = { w:imgPreloader.width, h:imgPreloader.height }; 787 788 // Image is very large, so show a smaller version of the larger image 789 // with zoom button. 790 if (zoomIn !== true) { 791 var ratio = 1.0; // Shrink image with the same aspect. 792 $('#bottomNavZoomOut, #bottomNavZoom').hide(); 793 if ((orig.w >= targ.w || orig.h >= targ.h) && orig.h && orig.w) { 794 ratio = ((targ.w / orig.w) < (targ.h / orig.h)) ? targ.w / orig.w : targ.h / orig.h; 795 if (!Lightbox.disableZoom && !Lightbox.isSlideshow) { 796 $('#bottomNavZoom').css({'zIndex': '10500'}).show(); 797 } 798 } 799 800 imageWidth = Math.floor(orig.w * ratio); 801 imageHeight = Math.floor(orig.h * ratio); 802 } 803 804 else { 805 $('#bottomNavZoom').hide();
806 // Only display zoom out button if the image is zoomed in already. 807 if ((orig.w >= targ.w || orig.h >= targ.h) && orig.h && orig.w) { 808 // Only display zoom out button if not a slideshow and if the 809 // buttons aren't disabled. 810 if (!Lightbox.disableResize && Lightbox.isSlideshow === false && !Lightbox.disableZoom) { 811 $('#bottomNavZoomOut').css({'zIndex': '10500'}).show(); 812 } 813 } 814 } 815 816 photo.style.width = (imageWidth) + 'px'; 817 photo.style.height = (imageHeight) + 'px'; 818 Lightbox.resizeContainer(imageWidth, imageHeight); 819 820 // Clear onLoad, IE behaves irratically with animated gifs otherwise. 821 imgPreloader.onload = function() {}; 822 }; 823 824 imgPreloader.src = Lightbox.imageArray[Lightbox.activeImage][0]; 825 imgPreloader.alt = Lightbox.imageArray[Lightbox.activeImage][2]; 826 } 827 828 // Set up frame size, etc. 829 else if (Lightbox.isLightframe) { 830 $("#lightbox #imageDataContainer").addClass('lightbox2-alt-layout-data'); 831 var src = Lightbox.imageArray[Lightbox.activeImage][0]; 832 $('#frameContainer').html('<iframe id="lightboxFrame" style="display: none;" src="'+src+'"></iframe>'); 833 834 // Enable swf support in Gecko browsers. 835 if ($.browser.mozilla && src.indexOf('.swf') != -1) { 836 setTimeout(function () { 837 document.getElementById("lightboxFrame").src = Lightbox.imageArray[Lightbox.activeImage][0]; 838 }, 1000); 839 } 840 841 if (!Lightbox.iframe_border) { 842 $('#lightboxFrame').css({'border': 'none'}); 843 $('#lightboxFrame').attr('frameborder', '0'); 844 } 845 var iframe = document.getElementById('lightboxFrame'); 846 var iframeStyles = Lightbox.imageArray[Lightbox.activeImage][3]; 847 iframe = Lightbox.setStyles(iframe, iframeStyles); 848 Lightbox.resizeContainer(parseInt(iframe.width, 10), parseInt(iframe.height, 10)); 849 } 850 else if (Lightbox.isVideo || Lightbox.isModal) { 851 $("#lightbox #imageDataContainer").addClass('lightbox2-alt-layout-data'); 852 var container = document.getElementById('modalContainer'); 853 var modalStyles = Lightbox.imageArray[Lightbox.activeImage][3]; 854 container = Lightbox.setStyles(container, modalStyles); 855 if (Lightbox.isVideo) { 856 Lightbox.modalHeight = parseInt(container.height, 10) - 10; 857 Lightbox.modalWidth = parseInt(container.width, 10) - 10; 858 Lightvideo.startVideo(Lightbox.imageArray[Lightbox.activeImage][0]); 859 } 860 Lightbox.resizeContainer(parseInt(container.width, 10), parseInt(container.height, 10)); 861 } 862 } 863 }, 864 865 // imgNodeLoadingError() 866 imgNodeLoadingError: function(image) { 867 var s = Drupal.settings.lightbox2; 868 var original_image = Lightbox.imageArray[Lightbox.activeImage][0]; 869 if (s.display_image_size !== "") { 870 original_image = original_image.replace(new RegExp("."+s.display_image_size), ""); 871 } 872 Lightbox.imageArray[Lightbox.activeImage][0] = original_image; 873 image.onerror = function() { Lightbox.imgLoadingError(image); }; 874 image.src = original_image; 875 }, 876 877 // imgLoadingError() 878 imgLoadingError: function(image) { 879 var s = Drupal.settings.lightbox2; 880 Lightbox.imageArray[Lightbox.activeImage][0] = s.default_image; 881 image.src = s.default_image; 882 }, 883 884 // resizeContainer() 885 resizeContainer: function(imgWidth, imgHeight) { 886 887 imgWidth = (imgWidth < Lightbox.minWidth ? Lightbox.minWidth : imgWidth); 888 889 this.widthCurrent = $('#outerImageContainer').width(); 890 this.heightCurrent = $('#outerImageContainer').height(); 891 892 var widthNew = (imgWidth + (Lightbox.borderSize * 2)); 893 var heightNew = (imgHeight + (Lightbox.borderSize * 2)); 894 895 // Scalars based on change from old to new. 896 this.xScale = ( widthNew / this.widthCurrent) * 100; 897 this.yScale = ( heightNew / this.heightCurrent) * 100; 898 899 // Calculate size difference between new and old image, and resize if 900 // necessary. 901 wDiff = this.widthCurrent - widthNew; 902 hDiff = this.heightCurrent - heightNew; 903 904 $('#modalContainer').css({'width': imgWidth, 'height': imgHeight}); 905 // Detect animation sequence. 906 if (Lightbox.resizeSequence) { 907 var animate1 = {width: widthNew}; 908 var animate2 = {height: heightNew}; 909 if (Lightbox.resizeSequence == 2) { 910 animate1 = {height: heightNew}; 911 animate2 = {width: widthNew}; 912 } 913 $('#outerImageContainer').animate(animate1, Lightbox.resizeSpeed).animate(animate2, Lightbox.resizeSpeed, 'linear', function() { Lightbox.showData(); }); 914 } 915 // Simultaneous. 916 else { 917 $('#outerImageContainer').animate({'width': widthNew, 'height': heightNew}, Lightbox.resizeSpeed, 'linear', function() { Lightbox.showData(); }); 918 } 919 920 // If new and old image are same size and no scaling transition is necessary 921 // do a quick pause to prevent image flicker. 922 if ((hDiff === 0) && (wDiff === 0)) { 923 if ($.browser.msie) { 924 Lightbox.pause(250); 925 } 926 else { 927 Lightbox.pause(100); 928 } 929 } 930 931 var s = Drupal.settings.lightbox2; 932 if (!s.use_alt_layout) { 933 $('#prevLink, #nextLink').css({'height': imgHeight + 'px'}); 934 } 935 $('#imageDataContainer').css({'width': widthNew + 'px'}); 936 }, 937 938 // showData() 939 // Display image and begin preloading neighbors. 940 showData: function() { 941 $('#loading').hide(); 942 943 if (Lightbox.isLightframe || Lightbox.isVideo || Lightbox.isModal) { 944 Lightbox.updateDetails(); 945 if (Lightbox.isLightframe) { 946 $('#frameContainer').show(); 947 if ($.browser.safari || Lightbox.fadeInSpeed === 0) { 948 $('#lightboxFrame').css({'zIndex': '10500'}).show(); 949 } 950 else { 951 $('#lightboxFrame').css({'zIndex': '10500'}).fadeIn(Lightbox.fadeInSpeed); 952 } 953 } 954 else { 955 if (Lightbox.isVideo) { 956 $("#modalContainer").html(Lightbox.modalHTML).click(function(){return false;}).css('zIndex', '10500').show(); 957 } 958 else { 959 var src = unescape(Lightbox.imageArray[Lightbox.activeImage][0]); 960 if (Lightbox.imageArray[Lightbox.activeImage][4]) { 961 $(src).appendTo("#modalContainer"); 962 $('#modalContainer').css({'zIndex': '10500'}).show(); 963 } 964 else { 965 // Use a callback to show the new image, otherwise you get flicker. 966 $("#modalContainer").hide().load(src, function () {$('#modalContainer').css({'zIndex': '10500'}).show();}); 967 } 968 $('#modalContainer').unbind('click'); 969 } 970 // This might be needed in the Lightframe section above. 971 //$('#modalContainer').css({'zIndex': '10500'}).show(); 972 } 973 } 974 975 // Handle display of image content. 976 else { 977 $('#imageContainer').show(); 978 if ($.browser.safari || Lightbox.fadeInSpeed === 0) { 979 $('#lightboxImage').css({'zIndex': '10500'}).show(); 980 } 981 else { 982 $('#lightboxImage').css({'zIndex': '10500'}).fadeIn(Lightbox.fadeInSpeed); 983 } 984 Lightbox.updateDetails(); 985 this.preloadNeighborImages(); 986 } 987 Lightbox.inprogress = false;
988 989 // Slideshow specific stuff. 990 if (Lightbox.isSlideshow) { 991 if (!Lightbox.loopSlides && Lightbox.activeImage == (Lightbox.total - 1)) { 992 if (Lightbox.autoExit) { 993 Lightbox.slideIdArray[Lightbox.slideIdCount++] = setTimeout(function () {Lightbox.end('slideshow');}, Lightbox.slideInterval); 994 } 995 } 996 else { 997 if (!Lightbox.isPaused && Lightbox.total > 1) { 998 Lightbox.slideIdArray[Lightbox.slideIdCount++] = setTimeout(function () {Lightbox.changeData(Lightbox.activeImage + 1);}, Lightbox.slideInterval); 999 } 1000 } 1001 if (Lightbox.showPlayPause && Lightbox.total > 1 && !Lightbox.isPaused) { 1002 $('#lightshowPause').show(); 1003 $('#lightshowPlay').hide(); 1004 } 1005 else if (Lightbox.showPlayPause && Lightbox.total > 1) { 1006 $('#lightshowPause').hide(); 1007 $('#lightshowPlay').show(); 1008 } 1009 } 1010 1011 // Adjust the page overlay size. 1012 var arrayPageSize = Lightbox.getPageSize(); 1013 var arrayPageScroll = Lightbox.getPageScroll(); 1014 var pageHeight = arrayPageSize[1]; 1015 if (Lightbox.isZoomedIn && arrayPageSize[1] > arrayPageSize[3]) { 1016 var lightboxTop = (Lightbox.topPosition == '' ? (arrayPageSize[3] / 10) : Lightbox.topPosition) * 1; 1017 pageHeight = pageHeight + arrayPageScroll[1] + lightboxTop; 1018 } 1019 $('#lightbox2-overlay').css({'height': pageHeight + 'px', 'width': arrayPageSize[0] + 'px'}); 1020 1021 // Gecko browsers (e.g. Firefox, SeaMonkey, etc) don't handle pdfs as 1022 // expected. 1023 if ($.browser.mozilla) { 1024 if (Lightbox.imageArray[Lightbox.activeImage][0].indexOf(".pdf") != -1) { 1025 setTimeout(function () { 1026 document.getElementById("lightboxFrame").src = Lightbox.imageArray[Lightbox.activeImage][0]; 1027 }, 1000); 1028 } 1029 } 1030 }, 1031 1032 // updateDetails() 1033 // Display caption, image number, and bottom nav. 1034 updateDetails: function() { 1035 1036 $("#imageDataContainer").hide(); 1037 1038 var s = Drupal.settings.lightbox2; 1039 1040 if (s.show_caption) { 1041 var caption = Lightbox.filterXSS(Lightbox.imageArray[Lightbox.activeImage][1]); 1042 if (!caption) caption = ''; 1043 $('#caption').html(caption).css({'zIndex': '10500'}).show(); 1044 } 1045 1046 // If image is part of set display 'Image x of x'. 1047 var numberDisplay = null; 1048 if (s.image_count && Lightbox.total > 1) { 1049 var currentImage = Lightbox.activeImage + 1; 1050 if (!Lightbox.isLightframe && !Lightbox.isModal && !Lightbox.isVideo) { 1051 numberDisplay = s.image_count.replace(/\!current/, currentImage).replace(/\!total/, Lightbox.total); 1052 } 1053 else if (Lightbox.isVideo) { 1054 numberDisplay = s.video_count.replace(/\!current/, currentImage).replace(/\!total/, Lightbox.total); 1055 } 1056 else { 1057 numberDisplay = s.page_count.replace(/\!current/, currentImage).replace(/\!total/, Lightbox.total); 1058 }
1059 $('#numberDisplay').html(numberDisplay).css({'zIndex': '10500'}).show(); 1060 } 1061 else { 1062 $('#numberDisplay').hide(); 1063 } 1064 1065 $("#imageDataContainer").hide().slideDown(Lightbox.slideDownSpeed, function() { 1066 $("#bottomNav").show(); 1067 }); 1068 if (Lightbox.rtl == 1) { 1069 $("#bottomNav").css({'float': 'left'}); 1070 } 1071 Lightbox.updateNav(); 1072 }, 1073 1074 // updateNav() 1075 // Display appropriate previous and next hover navigation. 1076 updateNav: function() { 1077 1078 $('#hoverNav').css({'zIndex': '10500'}).show(); 1079 var prevLink = '#prevLink'; 1080 var nextLink = '#nextLink'; 1081 1082 // Slideshow is separated as we need to show play / pause button. 1083 if (Lightbox.isSlideshow) { 1084 if ((Lightbox.total > 1 && Lightbox.loopSlides) || Lightbox.activeImage !== 0) { 1085 $(prevLink).css({'zIndex': '10500'}).show().click(function() { 1086 if (Lightbox.pauseOnPrevClick) { 1087 Lightbox.togglePlayPause("lightshowPause", "lightshowPlay"); 1088 } 1089 Lightbox.changeData(Lightbox.activeImage - 1); return false; 1090 }); 1091 } 1092 else { 1093 $(prevLink).hide(); 1094 } 1095 1096 // If not last image in set, display next image button. 1097 if ((Lightbox.total > 1 && Lightbox.loopSlides) || Lightbox.activeImage != (Lightbox.total - 1)) { 1098 $(nextLink).css({'zIndex': '10500'}).show().click(function() { 1099 if (Lightbox.pauseOnNextClick) { 1100 Lightbox.togglePlayPause("lightshowPause", "lightshowPlay"); 1101 } 1102 Lightbox.changeData(Lightbox.activeImage + 1); return false; 1103 }); 1104 } 1105 // Safari browsers need to have hide() called again. 1106 else { 1107 $(nextLink).hide(); 1108 } 1109 } 1110 1111 // All other types of content. 1112 else { 1113 1114 if ((Lightbox.isLightframe || Lightbox.isModal || Lightbox.isVideo) && !Lightbox.alternative_layout) { 1115 $('#frameHoverNav').css({'zIndex': '10500'}).show(); 1116 $('#hoverNav').css({'zIndex': '10500'}).hide(); 1117 prevLink = '#framePrevLink'; 1118 nextLink = '#frameNextLink'; 1119 } 1120 1121 // If not first image in set, display prev image button. 1122 if ((Lightbox.total > 1 && Lightbox.loopItems) || Lightbox.activeImage !== 0) { 1123 // Unbind any other click handlers, otherwise this adds a new click handler 1124 // each time the arrow is clicked. 1125 $(prevLink).css({'zIndex': '10500'}).show().unbind().click(function() { 1126 Lightbox.changeData(Lightbox.activeImage - 1); return false; 1127 }); 1128 } 1129 // Safari browsers need to have hide() called again. 1130 else { 1131 $(prevLink).hide(); 1132 } 1133 1134 // If not last image in set, display next image button. 1135 if ((Lightbox.total > 1 && Lightbox.loopItems) || Lightbox.activeImage != (Lightbox.total - 1)) { 1136 // Unbind any other click handlers, otherwise this adds a new click handler 1137 // each time the arrow is clicked. 1138 $(nextLink).css({'zIndex': '10500'}).show().unbind().click(function() { 1139 Lightbox.changeData(Lightbox.activeImage + 1); return false; 1140 }); 1141 } 1142 // Safari browsers need to have hide() called again. 1143 else { 1144 $(nextLink).hide(); 1145 } 1146 } 1147 1148 // Don't enable keyboard shortcuts so forms will work. 1149 if (!Lightbox.isModal) { 1150 this.enableKeyboardNav(); 1151 } 1152 }, 1153 1154 1155 // enableKeyboardNav() 1156 enableKeyboardNav: function() { 1157 $(document).bind("keydown", this.keyboardAction); 1158 }, 1159 1160 // disableKeyboardNav() 1161 disableKeyboardNav: function() { 1162 $(document).unbind("keydown", this.keyboardAction); 1163 }, 1164 1165 // keyboardAction() 1166 keyboardAction: function(e) { 1167 if (e === null) { // IE. 1168 keycode = event.keyCode; 1169 escapeKey = 27; 1170 } 1171 else { // Mozilla. 1172 keycode = e.keyCode; 1173 escapeKey = e.DOM_VK_ESCAPE; 1174 } 1175 1176 key = String.fromCharCode(keycode).toLowerCase(); 1177 1178 // Close lightbox. 1179 if (Lightbox.checkKey(Lightbox.keysClose, key, keycode)) { 1180 Lightbox.end('forceClose'); 1181 } 1182 // Display previous image (p, <-). 1183 else if (Lightbox.checkKey(Lightbox.keysPrevious, key, keycode)) { 1184 if ((Lightbox.total > 1 && ((Lightbox.isSlideshow && Lightbox.loopSlides) || (!Lightbox.isSlideshow && Lightbox.loopItems))) || Lightbox.activeImage !== 0) { 1185 Lightbox.changeData(Lightbox.activeImage - 1); 1186 } 1187 1188 } 1189 // Display next image (n, ->). 1190 else if (Lightbox.checkKey(Lightbox.keysNext, key, keycode)) { 1191 if ((Lightbox.total > 1 && ((Lightbox.isSlideshow && Lightbox.loopSlides) || (!Lightbox.isSlideshow && Lightbox.loopItems))) || Lightbox.activeImage != (Lightbox.total - 1)) { 1192 Lightbox.changeData(Lightbox.activeImage + 1); 1193 } 1194 } 1195 // Zoom in. 1196 else if (Lightbox.checkKey(Lightbox.keysZoom, key, keycode) && !Lightbox.disableResize && !Lightbox.disableZoom && !Lightbox.isSlideshow && !Lightbox.isLightframe) { 1197 if (Lightbox.isZoomedIn) { 1198 Lightbox.changeData(Lightbox.activeImage, false); 1199 } 1200 else if (!Lightbox.isZoomedIn) { 1201 Lightbox.changeData(Lightbox.activeImage, true); 1202 } 1203 return false;
1204 } 1205 // Toggle play / pause (space). 1206 else if (Lightbox.checkKey(Lightbox.keysPlayPause, key, keycode) && Lightbox.isSlideshow) { 1207 1208 if (Lightbox.isPaused) { 1209 Lightbox.togglePlayPause("lightshowPlay", "lightshowPause"); 1210 } 1211 else { 1212 Lightbox.togglePlayPause("lightshowPause", "lightshowPlay"); 1213 } 1214 return false; 1215 } 1216 }, 1217 1218 preloadNeighborImages: function() { 1219 1220 if ((Lightbox.total - 1) > Lightbox.activeImage) { 1221 preloadNextImage = new Image(); 1222 preloadNextImage.src = Lightbox.imageArray[Lightbox.activeImage + 1][0]; 1223 } 1224 if (Lightbox.activeImage > 0) { 1225 preloadPrevImage = new Image(); 1226 preloadPrevImage.src = Lightbox.imageArray[Lightbox.activeImage - 1][0]; 1227 } 1228 1229 }, 1230 1231 end: function(caller) { 1232 var closeClick = (caller == 'slideshow' ? false : true); 1233 if (Lightbox.isSlideshow && Lightbox.isPaused && !closeClick) { 1234 return; 1235 } 1236 // To prevent double clicks on navigation links. 1237 if (Lightbox.inprogress === true && caller != 'forceClose') { 1238 return; 1239 } 1240 Lightbox.disableKeyboardNav(); 1241 $('#lightbox').hide(); 1242 $("#lightbox2-overlay").fadeOut(); 1243 Lightbox.isPaused = true; 1244 Lightbox.inprogress = false; 1245 // Replaces calls to showSelectBoxes() and showFlash() in original 1246 // lightbox2. 1247 Lightbox.toggleSelectsFlash('visible'); 1248 if (Lightbox.isSlideshow) { 1249 for (var i = 0; i < Lightbox.slideIdCount; i++) { 1250 window.clearTimeout(Lightbox.slideIdArray[i]); 1251 } 1252 $('#lightshowPause, #lightshowPlay').hide(); 1253 } 1254 else if (Lightbox.isLightframe) { 1255 $('#frameContainer').empty().hide(); 1256 } 1257 else if (Lightbox.isVideo || Lightbox.isModal) { 1258 if (!Lightbox.auto_modal) { 1259 $('#modalContainer').hide().html(""); 1260 } 1261 Lightbox.auto_modal = false; 1262 } 1263 }, 1264 1265 1266 // getPageScroll() 1267 // Returns array with x,y page scroll values. 1268 // Core code from - quirksmode.com. 1269 getPageScroll : function() { 1270 1271 var xScroll, yScroll; 1272 1273 if (self.pageYOffset || self.pageXOffset) { 1274 yScroll = self.pageYOffset; 1275 xScroll = self.pageXOffset; 1276 } 1277 else if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft)) { // Explorer 6 Strict. 1278 yScroll = document.documentElement.scrollTop; 1279 xScroll = document.documentElement.scrollLeft; 1280 } 1281 else if (document.body) {// All other Explorers. 1282 yScroll = document.body.scrollTop; 1283 xScroll = document.body.scrollLeft; 1284 } 1285 1286 arrayPageScroll = [xScroll,yScroll]; 1287 return arrayPageScroll; 1288 }, 1289 1290 // getPageSize() 1291 // Returns array with page width, height and window width, height. 1292 // Core code from - quirksmode.com. 1293 // Edit for Firefox by pHaez. 1294 1295 getPageSize : function() { 1296 1297 var xScroll, yScroll; 1298 1299 if (window.innerHeight && window.scrollMaxY) { 1300 xScroll = window.innerWidth + window.scrollMaxX; 1301 yScroll = window.innerHeight + window.scrollMaxY; 1302 } 1303 else if (document.body.scrollHeight > document.body.offsetHeight) { // All but Explorer Mac. 1304 xScroll = document.body.scrollWidth; 1305 yScroll = document.body.scrollHeight; 1306 } 1307 else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari. 1308 xScroll = document.body.offsetWidth; 1309 yScroll = document.body.offsetHeight; 1310 } 1311 1312 var windowWidth, windowHeight; 1313 1314 if (self.innerHeight) { // All except Explorer. 1315 if (document.documentElement.clientWidth) { 1316 windowWidth = document.documentElement.clientWidth; 1317 } 1318 else { 1319 windowWidth = self.innerWidth; 1320 } 1321 windowHeight = self.innerHeight; 1322 } 1323 else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode. 1324 windowWidth = document.documentElement.clientWidth; 1325 windowHeight = document.documentElement.clientHeight; 1326 } 1327 else if (document.body) { // Other Explorers. 1328 windowWidth = document.body.clientWidth; 1329 windowHeight = document.body.clientHeight; 1330 } 1331 // For small pages with total height less than height of the viewport. 1332 if (yScroll < windowHeight) { 1333 pageHeight = windowHeight; 1334 } 1335 else { 1336 pageHeight = yScroll; 1337 } 1338 // For small pages with total width less than width of the viewport. 1339 if (xScroll < windowWidth) { 1340 pageWidth = xScroll; 1341 } 1342 else { 1343 pageWidth = windowWidth; 1344 } 1345 arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight); 1346 return arrayPageSize; 1347 }, 1348 1349 1350 // pause(numberMillis) 1351 pause : function(ms) { 1352 var date = new Date(); 1353 var curDate = null; 1354 do { curDate = new Date(); } 1355 while (curDate - date < ms); 1356 }, 1357 1358 1359 // toggleSelectsFlash() 1360 // Hide / unhide select lists and flash objects as they appear above the 1361 // lightbox in some browsers. 1362 toggleSelectsFlash: function (state) { 1363 if (state == 'visible') { 1364 $("select.lightbox_hidden, embed.lightbox_hidden, object.lightbox_hidden").show(); 1365 } 1366 else if (state == 'hide') { 1367 $("select:visible, embed:visible, object:visible").not('#lightboxAutoModal select, #lightboxAutoModal embed, #lightboxAutoModal object').addClass("lightbox_hidden"); 1368 $("select.lightbox_hidden, embed.lightbox_hidden, object.lightbox_hidden").hide(); 1369 } 1370 }, 1371 1372 1373 // parseRel() 1374 parseRel: function (link) { 1375 var parts = []; 1376 parts["rel"] = parts["title"] = parts["group"] = parts["style"] = parts["flashvars"] = null; 1377 if (!$(link).attr('rel')) return parts; 1378 parts["rel"] = $(link).attr('rel').match(/\w+/)[0]; 1379 1380 if ($(link).attr('rel').match(/\[(.*)\]/)) { 1381 var info = $(link).attr('rel').match(/\[(.*?)\]/)[1].split('|'); 1382 parts["group"] = info[0]; 1383 parts["style"] = info[1]; 1384 if (parts["style"] != undefined && parts["style"].match(/flashvars:\s?(.*?);/)) { 1385 parts["flashvars"] = parts["style"].match(/flashvars:\s?(.*?);/)[1]; 1386 } 1387 } 1388 if ($(link).attr('rel').match(/\[.*\]\[(.*)\]/)) { 1389 parts["title"] = $(link).attr('rel').match(/\[.*\]\[(.*)\]/)[1]; 1390 } 1391 return parts; 1392 }, 1393 1394 // setStyles() 1395 setStyles: function(item, styles) { 1396 item.width = Lightbox.iframe_width; 1397 item.height = Lightbox.iframe_height; 1398 item.scrolling = "auto"; 1399 1400 if (!styles) return item; 1401 var stylesArray = styles.split(';'); 1402 for (var i = 0; i< stylesArray.length; i++) { 1403 if (stylesArray[i].indexOf('width:') >= 0) { 1404 var w = stylesArray[i].replace('width:', ''); 1405 item.width = jQuery.trim(w); 1406 } 1407 else if (stylesArray[i].indexOf('height:') >= 0) { 1408 var h = stylesArray[i].replace('height:', ''); 1409 item.height = jQuery.trim(h); 1410 } 1411 else if (stylesArray[i].indexOf('scrolling:') >= 0) { 1412 var scrolling = stylesArray[i].replace('scrolling:', ''); 1413 item.scrolling = jQuery.trim(scrolling); 1414 } 1415 else if (stylesArray[i].indexOf('overflow:') >= 0) { 1416 var overflow = stylesArray[i].replace('overflow:', ''); 1417 item.overflow = jQuery.trim(overflow); 1418 } 1419 } 1420 return item; 1421 }, 1422 1423 1424 // togglePlayPause() 1425 // Hide the pause / play button as appropriate. If pausing the slideshow also 1426 // clear the timers, otherwise move onto the next image. 1427 togglePlayPause: function(hideId, showId) { 1428 if (Lightbox.isSlideshow && hideId == "lightshowPause") { 1429 for (var i = 0; i < Lightbox.slideIdCount; i++) { 1430 window.clearTimeout(Lightbox.slideIdArray[i]); 1431 } 1432 } 1433 $('#' + hideId).hide(); 1434 $('#' + showId).show(); 1435 1436 if (hideId == "lightshowPlay") { 1437 Lightbox.isPaused = false;
1438 if (!Lightbox.loopSlides && Lightbox.activeImage == (Lightbox.total - 1)) { 1439 Lightbox.end(); 1440 } 1441 else if (Lightbox.total > 1) { 1442 Lightbox.changeData(Lightbox.activeImage + 1); 1443 } 1444 } 1445 else { 1446 Lightbox.isPaused = true; 1447 } 1448 }, 1449 1450 triggerLightbox: function (rel_type, rel_group) { 1451 if (rel_type.length) { 1452 if (rel_group && rel_group.length) { 1453 $("a[rel^='" + rel_type +"\[" + rel_group + "\]'], area[rel^='" + rel_type +"\[" + rel_group + "\]']").eq(0).trigger("click"); 1454 } 1455 else { 1456 $("a[rel^='" + rel_type +"'], area[rel^='" + rel_type +"']").eq(0).trigger("click"); 1457 } 1458 } 1459 }, 1460 1461 detectMacFF2: function() { 1462 var ua = navigator.userAgent.toLowerCase(); 1463 if (/firefox[\/\s](\d+\.\d+)/.test(ua)) { 1464 var ffversion = new Number(RegExp.$1); 1465 if (ffversion < 3 && ua.indexOf('mac') != -1) { 1466 return true; 1467 } 1468 } 1469 return false; 1470 }, 1471 1472 checkKey: function(keys, key, code) { 1473 return (jQuery.inArray(key, keys) != -1 || jQuery.inArray(String(code), keys) != -1); 1474 }, 1475 1476 filterXSS: function(str, allowed_tags) { 1477 var output = ""; 1478 $.ajax({ 1479 url: Drupal.settings.basePath + 'system/lightbox2/filter-xss', 1480 data: { 1481 'string' : str, 1482 'allowed_tags' : allowed_tags 1483 }, 1484 type: "POST", 1485 async: false, 1486 dataType: "json", 1487 success: function(data) { 1488 output = data; 1489 } 1490 }); 1491 return output; 1492 } 1493 1494}; 1495 1496// Initialize the lightbox. 1497Drupal.behaviors.initLightbox = function (context) { 1498 $('body:not(.lightbox-processed)', context).addClass('lightbox-processed').each(function() { 1499 Lightbox.initialize(); 1500 return false; // Break the each loop. 1501 }); 1502 1503 // Attach lightbox to any links with lightbox rels. 1504 Lightbox.initList(context); 1505 $('#lightboxAutoModal', context).triggerHandler('click'); 1506}; 1507 1508; 1509 1510(function ($) { 1511 Drupal.Panels = {}; 1512 1513 Drupal.Panels.autoAttach = function() { 1514 if ($.browser.msie) { 1515 // If IE, attach a hover event so we can see our admin links. 1516 $("div.panel-pane").hover( 1517 function() { 1518 $('div.panel-hide', this).addClass("panel-hide-hover"); return true; 1519 }, 1520 function() { 1521 $('div.panel-hide', this).removeClass("panel-hide-hover"); return true; 1522 } 1523 ); 1524 $("div.admin-links").hover( 1525 function() { 1526 $(this).addClass("admin-links-hover"); return true; 1527 }, 1528 function(){ 1529 $(this).removeClass("admin-links-hover"); return true; 1530 } 1531 ); 1532 } 1533 }; 1534 1535 $(Drupal.Panels.autoAttach); 1536})(jQuery); 1537; 1538/** 1539 * @file base.js 1540 * 1541 * Some basic behaviors and utility functions for Views. 1542 */ 1543 1544Drupal.Views = {}; 1545 1546/** 1547 * jQuery UI tabs, Views integration component 1548 */ 1549Drupal.behaviors.viewsTabs = function (context) { 1550 $('#views-tabset:not(.views-processed)').addClass('views-processed').each(function() { 1551 new Drupal.Views.Tabs($(this), {selectedClass: 'active'}); 1552 }); 1553 1554 $('a.views-remove-link') 1555 .addClass('views-processed') 1556 .click(function() { 1557 var id = $(this).attr('id').replace('views-remove-link-', ''); 1558 $('#views-row-' + id).hide(); 1559 $('#views-removed-' + id).attr('checked', true); 1560 return false; 1561 }); 1562 /** 1563 * Here is to handle display deletion 1564 * (checking in the hidden checkbox and hiding out the row) 1565 */ 1566 $('a.display-remove-link') 1567 .addClass('display-processed') 1568 .click(function() { 1569 var id = $(this).attr('id').replace('display-remove-link-', ''); 1570 $('#display-row-' + id).hide(); 1571 $('#display-removed-' + id).attr('checked', true); 1572 return false; 1573 }); 1574} 1575 1576/** 1577 * For IE, attach some javascript so that our hovers do what they're supposed 1578 * to do. 1579 */ 1580Drupal.behaviors.viewsHoverlinks = function() { 1581 if ($.browser.msie) { 1582 // If IE, attach a hover event so we can see our admin links. 1583 $("div.view:not(.views-hover-processed)").addClass('views-hover-processed').hover( 1584 function() { 1585 $('div.views-hide', this).addClass("views-hide-hover"); return true; 1586 }, 1587 function(){ 1588 $('div.views-hide', this).removeClass("views-hide-hover"); return true; 1589 } 1590 ); 1591 $("div.views-admin-links:not(.views-hover-processed)") 1592 .addClass('views-hover-processed') 1593 .hover( 1594 function() { 1595 $(this).addClass("views-admin-links-hover"); return true; 1596 }, 1597 function(){ 1598 $(this).removeClass("views-admin-links-hover"); return true; 1599 } 1600 ); 1601 } 1602} 1603 1604/** 1605 * Helper function to parse a querystring. 1606 */ 1607Drupal.Views.parseQueryString = function (query) { 1608 var args = {}; 1609 var pos = query.indexOf('?'); 1610 if (pos != -1) { 1611 query = query.substring(pos + 1); 1612 } 1613 var pairs = query.split('&'); 1614 for(var i in pairs) { 1615 if (typeof(pairs[i]) == 'string') { 1616 var pair = pairs[i].split('='); 1617 // Ignore the 'q' path argument, if present. 1618 if (pair[0] != 'q' && pair[1]) { 1619 args[decodeURIComponent(pair[0].replace(/\+/g, ' '))] = decodeURIComponent(pair[1].replace(/\+/g, ' ')); 1620 } 1621 } 1622 } 1623 return args; 1624}; 1625 1626/** 1627 * Helper function to return a view's arguments based on a path. 1628 */ 1629Drupal.Views.parseViewArgs = function (href, viewPath) { 1630 var returnObj = {}; 1631 var path = Drupal.Views.getPath(href); 1632 // Ensure we have a correct path. 1633 if (viewPath && path.substring(0, viewPath.length + 1) == viewPath + '/') { 1634 var args = decodeURIComponent(path.substring(viewPath.length + 1, path.length)); 1635 returnObj.view_args = args; 1636 returnObj.view_path = path; 1637 } 1638 return returnObj; 1639}; 1640 1641/** 1642 * Strip off the protocol plus domain from an href. 1643 */ 1644Drupal.Views.pathPortion = function (href) { 1645 // Remove e.g. http://example.com if present. 1646 var protocol = window.location.protocol; 1647 if (href.substring(0, protocol.length) == protocol) { 1648 // 2 is the length of the '//' that normally follows the protocol 1649 href = href.substring(href.indexOf('/', protocol.length + 2)); 1650 } 1651 return href; 1652}; 1653 1654/** 1655 * Return the Drupal path portion of an href. 1656 */ 1657Drupal.Views.getPath = function (href) { 1658 href = Drupal.Views.pathPortion(href); 1659 href = href.substring(Drupal.settings.basePath.length, href.length); 1660 // 3 is the length of the '?q=' added to the url without clean urls. 1661 if (href.substring(0, 3) == '?q=') { 1662 href = href.substring(3, href.length); 1663 } 1664 var chars = ['#', '?', '&']; 1665 for (i in chars) { 1666 if (href.indexOf(chars[i]) > -1) { 1667 href = href.substr(0, href.indexOf(chars[i])); 1668 } 1669 } 1670 return href; 1671}; 1672; 1673 1674/** 1675 * @file ajaxView.js 1676 * 1677 * Handles AJAX fetching of views, including filter submission and response. 1678 */ 1679 1680Drupal.Views.Ajax = Drupal.Views.Ajax || {}; 1681 1682/** 1683 * An ajax responder that accepts a packet of JSON data and acts appropriately. 1684 * 1685 * The following fields control behavior. 1686 * - 'display': Display the associated data in the view area. 1687 */ 1688Drupal.Views.Ajax.ajaxViewResponse = function(target, response) { 1689 1690 if (response.debug) { 1691 alert(response.debug); 1692 } 1693 1694 var $view = $(target); 1695 1696 // Check the 'display' for data. 1697 if (response.status && response.display) { 1698 var $newView = $(response.display); 1699 $view.replaceWith($newView); 1700 $view = $newView; 1701 Drupal.attachBehaviors($view.parent()); 1702 } 1703 1704 if (response.messages) { 1705 // Show any messages (but first remove old ones, if there are any). 1706 $view.find('.views-messages').remove().end().prepend(response.messages); 1707 } 1708}; 1709 1710/** 1711 * Ajax behavior for views. 1712 */ 1713Drupal.behaviors.ViewsAjaxView = function() { 1714 if (Drupal.settings && Drupal.settings.views && Drupal.settings.views.ajaxViews) { 1715 var ajax_path = Drupal.settings.views.ajax_path; 1716 // If there are multiple views this might've ended up showing up multiple times. 1717 if (ajax_path.constructor.toString().indexOf("Array") != -1) { 1718 ajax_path = ajax_path[0]; 1719 } 1720 $.each(Drupal.settings.views.ajaxViews, function(i, settings) { 1721 if (settings.view_dom_id) { 1722 var view = '.view-dom-id-' + settings.view_dom_id; 1723 if (!$(view).size()) { 1724 // Backward compatibility: if 'views-view.tpl.php' is old and doesn't 1725 // contain the 'view-dom-id-#' class, we fall back to the old way of 1726 // locating the view: 1727 view = '.view-id-' + settings.view_name + '.view-display-id-' + settings.view_display_id; 1728 } 1729 } 1730 1731 1732 // Process exposed filter forms. 1733 $('form#views-exposed-form-' + settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-')) 1734 .filter(':not(.views-processed)') 1735 .each(function () { 1736 // remove 'q' from the form; it's there for clean URLs 1737 // so that it submits to the right place with regular submit 1738 // but this method is submitting elsewhere. 1739 $('input[name=q]', this).remove(); 1740 var form = this; 1741 1742 $('input[type=submit], button', this).click(function () { 1743 $(this).after('<span class="views-throbbing">
1743 </span>'); 1744 // We have to actually tell it what button got clicked if we want 1745 // anything to be sent: 1746 form.clk = this; 1747 }); 1748 // ajaxSubmit doesn't accept a data argument, so we have to 1749 // pass additional fields this way. 1750 $.each(settings, function(key, setting) { 1751 $(form).append('<input type="hidden" name="'+ key + '" value="'+ setting +'"/>'); 1752 }); 1753 }) 1754 .addClass('views-processed') 1755 .submit(function () { 1756 var object = this; 1757 $(this).ajaxSubmit({ 1758 url: ajax_path, 1759 type: 'GET', 1760 success: function(response) { 1761 // Call all callbacks. 1762 if (response.__callbacks) { 1763 $.each(response.__callbacks, function(i, callback) { 1764 eval(callback)(view, response); 1765 }); 1766 $('.views-throbbing', object).remove(); 1767 } 1768 }, 1769 error: function(xhr) { Drupal.Views.Ajax.handleErrors(xhr, ajax_path); $('.views-throbbing', object).remove(); }, 1770 dataType: 'json' 1771 }); 1772 1773 return false; 1774 }); 1775 1776 $(view).filter(':not(.views-processed)') 1777 // Don't attach to nested views. Doing so would attach multiple behaviors 1778 // to a given element. 1779 .filter(function() { 1780 // If there is at least one parent with a view class, this view 1781 // is nested (e.g., an attachment). Bail. 1782 return !$(this).parents('.view').size(); 1783 }) 1784 .each(function() { 1785 // Set a reference that will work in subsequent calls. 1786 var target = this; 1787 $(this) 1788 .addClass('views-processed') 1789 // Process pager, tablesort, and attachment summary links. 1790 .find('ul.pager > li > a, th.views-field a, .attachment .views-summary a') 1791 .each(function () { 1792 var viewData = { 'js': 1 }; 1793 // Construct an object using the settings defaults and then overriding 1794 // with data specific to the link. 1795 $.extend( 1796 viewData, 1797 Drupal.Views.parseQueryString($(this).attr('href')), 1798 // Extract argument data from the URL. 1799 Drupal.Views.parseViewArgs($(this).attr('href'), settings.view_base_path), 1800 // Settings must be used last to avoid sending url aliases to the server. 1801 settings 1802 ); 1803 $(this).click(function () { 1804 $.extend(viewData, Drupal.Views.parseViewArgs($(this).attr('href'), settings.view_base_path)); 1805 $(this).addClass('views-throbbing'); 1806 $.ajax({ 1807 url: ajax_path, 1808 type: 'GET', 1809 data: viewData, 1810 success: function(response) { 1811 $(this).removeClass('views-throbbing'); 1812 // Scroll to the top of the view. This will allow users 1813 // to browse newly loaded content after e.g. clicking a pager 1814 // link. 1815 var offset = $(target).offset(); 1816 // We can't guarantee that the scrollable object should be 1817 // the body, as the view could be embedded in something 1818 // more complex such as a modal popup. Recurse up the DOM 1819 // and scroll the first element that has a non-zero top. 1820 var scrollTarget = target; 1821 while ($(scrollTarget).scrollTop() == 0 && $(scrollTarget).parent()) { 1822 scrollTarget = $(scrollTarget).parent() 1823 } 1824 // Only scroll upward 1825 if (offset.top - 10 < $(scrollTarget).scrollTop()) { 1826 $(scrollTarget).animate({scrollTop: (offset.top - 10)}, 500); 1827 } 1828 // Call all callbacks. 1829 if (response.__callbacks) { 1830 $.each(response.__callbacks, function(i, callback) { 1831 eval(callback)(target, response); 1832 }); 1833 } 1834 }, 1835 error: function(xhr) { $(this).removeClass('views-throbbing'); Drupal.Views.Ajax.handleErrors(xhr, ajax_path); }, 1836 dataType: 'json' 1837 }); 1838 1839 return false;
1840 }); 1841 }); // .each function () { 1842 }); // $view.filter().each 1843 }); // .each Drupal.settings.views.ajaxViews 1844 } // if 1845}; 1846;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.