/*
 * jQuery JavaScript Library v1.3 http://jquery.com/
 * 
 * Copyright (c) 2009 John Resig Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 * 
 * Date: 2009-01-13 12:50:31 -0500 (Tue, 13 Jan 2009) Revision: 6104
 */
(function(){var l=this,g,x=l.jQuery,o=l.$,n=l.jQuery=l.$=function(D,E){return new n.fn.init(D,E)},C=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;n.fn=n.prototype={init:function(D,G){D=D||document;if(D.nodeType){this[0]=D;this.length=1;this.context=D;return this}if(typeof D==="string"){var F=C.exec(D);if(F&&(F[1]||!G)){if(F[1]){D=n.clean([F[1]],G)}else{var H=document.getElementById(F[3]);if(H){if(H.id!=F[3]){return n().find(D)}var E=n(H);E.context=document;E.selector=D;return E}D=[]}}else{return n(G).find(D)}}else{if(n.isFunction(D)){return n(document).ready(D)}}if(D.selector&&D.context){this.selector=D.selector;this.context=D.context}return this.setArray(n.makeArray(D))},selector:"",jquery:"1.3",size:function(){return this.length},get:function(D){return D===g?n.makeArray(this):this[D]},pushStack:function(E,G,D){var F=n(E);F.prevObject=this;F.context=this.context;if(G==="find"){F.selector=this.selector+(this.selector?" ":"")+D}else{if(G){F.selector=this.selector+"."+G+"("+D+")"}}return F},setArray:function(D){this.length=0;Array.prototype.push.apply(this,D);return this},each:function(E,D){return n.each(this,E,D)},index:function(D){return n.inArray(D&&D.jquery?D[0]:D,this)},attr:function(E,G,F){var D=E;if(typeof E==="string"){if(G===g){return this[0]&&n[F||"attr"](this[0],E)}else{D={};D[E]=G}}return this.each(function(H){for(E in D){n.attr(F?this.style:this,E,n.prop(this,D[E],F,H,E))}})},css:function(D,E){if((D=="width"||D=="height")&&parseFloat(E)<0){E=g}return this.attr(D,E,"curCSS")},text:function(E){if(typeof E!=="object"&&E!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(E))}var D="";n.each(E||this,function(){n.each(this.childNodes,function(){if(this.nodeType!=8){D+=this.nodeType!=1?this.nodeValue:n.fn.text([this])}})});return D},wrapAll:function(D){if(this[0]){var E=n(D,this[0].ownerDocument).clone();if(this[0].parentNode){E.insertBefore(this[0])}E.map(function(){var F=this;while(F.firstChild){F=F.firstChild}return F}).append(this)}return this},wrapInner:function(D){return this.each(function(){n(this).contents().wrapAll(D)})},wrap:function(D){return this.each(function(){n(this).wrapAll(D)})},append:function(){return this.domManip(arguments,true,function(D){if(this.nodeType==1){this.appendChild(D)}})},prepend:function(){return this.domManip(arguments,true,function(D){if(this.nodeType==1){this.insertBefore(D,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(D){this.parentNode.insertBefore(D,this)})},after:function(){return this.domManip(arguments,false,function(D){this.parentNode.insertBefore(D,this.nextSibling)})},end:function(){return this.prevObject||n([])},push:[].push,find:function(D){if(this.length===1&&!/,/.test(D)){var F=this.pushStack([],"find",D);F.length=0;n.find(D,this[0],F);return F}else{var E=n.map(this,function(G){return n.find(D,G)});return this.pushStack(/[^+>] [^+>]/.test(D)?n.unique(E):E,"find",D)}},clone:function(E){var D=this.map(function(){if(!n.support.noCloneEvent&&!n.isXMLDoc(this)){var H=this.cloneNode(true),G=document.createElement("div");G.appendChild(H);return n.clean([G.innerHTML])[0]}else{return this.cloneNode(true)}});var F=D.find("*").andSelf().each(function(){if(this[h]!==g){this[h]=null}});if(E===true){this.find("*").andSelf().each(function(H){if(this.nodeType==3){return}var G=n.data(this,"events");for(var J in G){for(var I in G[J]){n.event.add(F[H],J,G[J][I],G[J][I].data)}}})}return D},filter:function(D){return this.pushStack(n.isFunction(D)&&n.grep(this,function(F,E){return D.call(F,E)})||n.multiFilter(D,n.grep(this,function(E){return E.nodeType===1})),"filter",D)},closest:function(D){var E=n.expr.match.POS.test(D)?n(D):null;return this.map(function(){var F=this;while(F&&F.ownerDocument){if(E?E.index(F)>-1:n(F).is(D)){return F}F=F.parentNode}})},not:function(D){if(typeof D==="string"){if(f.test(D)){return this.pushStack(n.multiFilter(D,this,true),"not",D)}else{D=n.multiFilter(D,this)}}var E=D.length&&D[D.length-1]!==g&&!D.nodeType;return this.filter(function(){return E?n.inArray(this,D)<0:this!=D})},add:function(D){return this.pushStack(n.unique(n.merge(this.get(),typeof D==="string"?n(D):n.makeArray(D))))},is:function(D){return !!D&&n.multiFilter(D,this).length>0},hasClass:function(D){return !!D&&this.is("."+D)},val:function(J){if(J===g){var D=this[0];if(D){if(n.nodeName(D,"option")){return(D.attributes.value||{}).specified?D.value:D.text}if(n.nodeName(D,"select")){var H=D.selectedIndex,K=[],L=D.options,G=D.type=="select-one";if(H<0){return null}for(var E=G?H:0,I=G?H+1:L.length;E<I;E++){var F=L[E];if(F.selected){J=n(F).val();if(G){return J}K.push(J)}}return K}return(D.value||"").replace(/\r/g,"")}return g}if(typeof J==="number"){J+=""}return this.each(function(){if(this.nodeType!=1){return}if(n.isArray(J)&&/radio|checkbox/.test(this.type)){this.checked=(n.inArray(this.value,J)>=0||n.inArray(this.name,J)>=0)}else{if(n.nodeName(this,"select")){var M=n.makeArray(J);n("option",this).each(function(){this.selected=(n.inArray(this.value,M)>=0||n.inArray(this.text,M)>=0)});if(!M.length){this.selectedIndex=-1}}else{this.value=J}}})},html:function(D){return D===g?(this[0]?this[0].innerHTML:null):this.empty().append(D)},replaceWith:function(D){return this.after(D).remove()},eq:function(D){return this.slice(D,+D+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(D){return this.pushStack(n.map(this,function(F,E){return D.call(F,E,F)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=n.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild,D=this.length>1?I.cloneNode(true):I;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),G>0?D.cloneNode(true):I)}}if(F){n.each(F,y)}}return this;function K(N,O){return M&&n.nodeName(N,"table")&&n.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};n.fn.init.prototype=n.fn;function y(D,E){if(E.src){n.ajax({url:E.src,async:false,dataType:"script"})}else{n.globalEval(E.text||E.textContent||E.innerHTML||"")}if(E.parentNode){E.parentNode.removeChild(E)}}function e(){return +new Date}n.extend=n.fn.extend=function(){var I=arguments[0]||{},G=1,H=arguments.length,D=false,F;if(typeof I==="boolean"){D=I;I=arguments[1]||{};G=2}if(typeof I!=="object"&&!n.isFunction(I)){I={}}if(H==G){I=this;--G}for(;G<H;G++){if((F=arguments[G])!=null){for(var E in F){var J=I[E],K=F[E];if(I===K){continue}if(D&&K&&typeof K==="object"&&!K.nodeType){I[E]=n.extend(D,J||(K.length!=null?[]:{}),K)}else{if(K!==g){I[E]=K}}}}}return I};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,p=document.defaultView||{},r=Object.prototype.toString;n.extend({noConflict:function(D){l.$=o;if(D){l.jQuery=x}return n},isFunction:function(D){return r.call(D)==="[object Function]"},isArray:function(D){return r.call(D)==="[object Array]"},isXMLDoc:function(D){return D.documentElement&&!D.body||D.tagName&&D.ownerDocument&&!D.ownerDocument.body},globalEval:function(F){F=n.trim(F);if(F){var E=document.getElementsByTagName("head")[0]||document.documentElement,D=document.createElement("script");D.type="text/javascript";if(n.support.scriptEval){D.appendChild(document.createTextNode(F))}else{D.text=F}E.insertBefore(D,E.firstChild);E.removeChild(D)}},nodeName:function(E,D){return E.nodeName&&E.nodeName.toUpperCase()==D.toUpperCase()},each:function(F,J,E){var D,G=0,H=F.length;if(E){if(H===g){for(D in F){if(J.apply(F[D],E)===false){break}}}else{for(;G<H;){if(J.apply(F[G++],E)===false){break}}}}else{if(H===g){for(D in F){if(J.call(F[D],D,F[D])===false){break}}}else{for(var I=F[0];G<H&&J.call(I,G,I)!==false;I=F[++G]){}}}return F},prop:function(G,H,F,E,D){if(n.isFunction(H)){H=H.call(G,E)}return typeof H==="number"&&F=="curCSS"&&!b.test(D)?H+"px":H},className:{add:function(D,E){n.each((E||"").split(/\s+/),function(F,G){if(D.nodeType==1&&!n.className.has(D.className,G)){D.className+=(D.className?" ":"")+G}})},remove:function(D,E){if(D.nodeType==1){D.className=E!==g?n.grep(D.className.split(/\s+/),function(F){return !n.className.has(E,F)}).join(" "):""}},has:function(E,D){return n.inArray(D,(E.className||E).toString().split(/\s+/))>-1}},swap:function(G,F,H){var D={};for(var E in F){D[E]=G.style[E];G.style[E]=F[E]}H.call(G);for(var E in F){G.style[E]=D[E]}},css:function(F,D,H){if(D=="width"||D=="height"){var J,E={position:"absolute",visibility:"hidden",display:"block"},I=D=="width"?["Left","Right"]:["Top","Bottom"];function G(){J=D=="width"?F.offsetWidth:F.offsetHeight;var L=0,K=0;n.each(I,function(){L+=parseFloat(n.curCSS(F,"padding"+this,true))||0;K+=parseFloat(n.curCSS(F,"border"+this+"Width",true))||0});J-=Math.round(L+K)}if(n(F).is(":visible")){G()}else{n.swap(F,E,G)}return Math.max(0,J)}return n.curCSS(F,D,H)},curCSS:function(H,E,F){var K,D=H.style;if(E=="opacity"&&!n.support.opacity){K=n.attr(D,"opacity");return K==""?"1":K}if(E.match(/float/i)){E=v}if(!F&&D&&D[E]){K=D[E]}else{if(p.getComputedStyle){if(E.match(/float/i)){E="float"}E=E.replace(/([A-Z])/g,"-$1").toLowerCase();var L=p.getComputedStyle(H,null);if(L){K=L.getPropertyValue(E)}if(E=="opacity"&&K==""){K="1"}}else{if(H.currentStyle){var I=E.replace(/\-(\w)/g,function(M,N){return N.toUpperCase()});K=H.currentStyle[E]||H.currentStyle[I];if(!/^\d+(px)?$/i.test(K)&&/^\d/.test(K)){var G=D.left,J=H.runtimeStyle.left;H.runtimeStyle.left=H.currentStyle.left;D.left=K||0;K=D.pixelLeft+"px";D.left=G;H.runtimeStyle.left=J}}}}return K},clean:function(E,J,H){J=J||document;if(typeof J.createElement==="undefined"){J=J.ownerDocument||J[0]&&J[0].ownerDocument||document}if(!H&&E.length===1&&typeof E[0]==="string"){var G=/^<(\w+)\s*\/?>$/.exec(E[0]);if(G){return[J.createElement(G[1])]}}var F=[],D=[],K=J.createElement("div");n.each(E,function(O,Q){if(typeof Q==="number"){Q+=""}if(!Q){return}if(typeof Q==="string"){Q=Q.replace(/(<(\w+)[^>]*?)\/>/g,function(S,T,R){return R.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?S:T+"></"+R+">"});var N=n.trim(Q).toLowerCase();var P=!N.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!N.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||N.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!N.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!N.indexOf("<td")||!N.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!N.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!n.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];K.innerHTML=P[1]+Q+P[2];while(P[0]--){K=K.lastChild}if(!n.support.tbody){var M=!N.indexOf("<table")&&N.indexOf("<tbody")<0?K.firstChild&&K.firstChild.childNodes:P[1]=="<table>"&&N.indexOf("<tbody")<0?K.childNodes:[];for(var L=M.length-1;L>=0;--L){if(n.nodeName(M[L],"tbody")&&!M[L].childNodes.length){M[L].parentNode.removeChild(M[L])}}}if(!n.support.leadingWhitespace&&/^\s/.test(Q)){K.insertBefore(J.createTextNode(Q.match(/^\s*/)[0]),K.firstChild)}Q=n.makeArray(K.childNodes)}if(Q.nodeType){F.push(Q)}else{F=n.merge(F,Q)}});if(H){for(var I=0;F[I];I++){if(n.nodeName(F[I],"script")&&(!F[I].type||F[I].type.toLowerCase()==="text/javascript")){D.push(F[I].parentNode?F[I].parentNode.removeChild(F[I]):F[I])}else{if(F[I].nodeType===1){F.splice.apply(F,[I+1,0].concat(n.makeArray(F[I].getElementsByTagName("script"))))}H.appendChild(F[I])}}return D}return F},attr:function(I,F,J){if(!I||I.nodeType==3||I.nodeType==8){return g}var G=!n.isXMLDoc(I),K=J!==g;F=G&&n.props[F]||F;if(I.tagName){var E=/href|src|style/.test(F);if(F=="selected"&&I.parentNode){I.parentNode.selectedIndex}if(F in I&&G&&!E){if(K){if(F=="type"&&n.nodeName(I,"input")&&I.parentNode){throw"type property can't be changed"}I[F]=J}if(n.nodeName(I,"form")&&I.getAttributeNode(F)){return I.getAttributeNode(F).nodeValue}if(F=="tabIndex"){var H=I.getAttributeNode("tabIndex");return H&&H.specified?H.value:I.nodeName.match(/^(a|area|button|input|object|select|textarea)$/i)?0:g}return I[F]}if(!n.support.style&&G&&F=="style"){return n.attr(I.style,"cssText",J)}if(K){I.setAttribute(F,""+J)}var D=!n.support.hrefNormalized&&G&&E?I.getAttribute(F,2):I.getAttribute(F);return D===null?g:D}if(!n.support.opacity&&F=="opacity"){if(K){I.zoom=1;I.filter=(I.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(J)+""=="NaN"?"":"alpha(opacity="+J*100+")")}return I.filter&&I.filter.indexOf("opacity=")>=0?(parseFloat(I.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}F=F.replace(/-([a-z])/ig,function(L,M){return M.toUpperCase()});if(K){I[F]=J}return I[F]},trim:function(D){return(D||"").replace(/^\s+|\s+$/g,"")},makeArray:function(F){var D=[];if(F!=null){var E=F.length;if(E==null||typeof F==="string"||n.isFunction(F)||F.setInterval){D[0]=F}else{while(E){D[--E]=F[E]}}}return D},inArray:function(F,G){for(var D=0,E=G.length;D<E;D++){if(G[D]===F){return D}}return -1},merge:function(G,D){var E=0,F,H=G.length;if(!n.support.getAll){while((F=D[E++])!=null){if(F.nodeType!=8){G[H++]=F}}}else{while((F=D[E++])!=null){G[H++]=F}}return G},unique:function(J){var E=[],D={};try{for(var F=0,G=J.length;F<G;F++){var I=n.data(J[F]);if(!D[I]){D[I]=true;E.push(J[F])}}}catch(H){E=J}return E},grep:function(E,I,D){var F=[];for(var G=0,H=E.length;G<H;G++){if(!D!=!I(E[G],G)){F.push(E[G])}}return F},map:function(D,I){var E=[];for(var F=0,G=D.length;F<G;F++){var H=I(D[F],F);if(H!=null){E[E.length]=H}}return E.concat.apply([],E)}});var B=navigator.userAgent.toLowerCase();n.browser={version:(B.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(B),opera:/opera/.test(B),msie:/msie/.test(B)&&!/opera/.test(B),mozilla:/mozilla/.test(B)&&!/(compatible|webkit)/.test(B)};n.each({parent:function(D){return D.parentNode},parents:function(D){return n.dir(D,"parentNode")},next:function(D){return n.nth(D,2,"nextSibling")},prev:function(D){return n.nth(D,2,"previousSibling")},nextAll:function(D){return n.dir(D,"nextSibling")},prevAll:function(D){return n.dir(D,"previousSibling")},siblings:function(D){return n.sibling(D.parentNode.firstChild,D)},children:function(D){return n.sibling(D.firstChild)},contents:function(D){return n.nodeName(D,"iframe")?D.contentDocument||D.contentWindow.document:n.makeArray(D.childNodes)}},function(D,E){n.fn[D]=function(F){var G=n.map(this,E);if(F&&typeof F=="string"){G=n.multiFilter(F,G)}return this.pushStack(n.unique(G),D,F)}});n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(D,E){n.fn[D]=function(){var F=arguments;return this.each(function(){for(var G=0,H=F.length;G<H;G++){n(F[G])[E](this)}})}});n.each({removeAttr:function(D){n.attr(this,D,"");if(this.nodeType==1){this.removeAttribute(D)}},addClass:function(D){n.className.add(this,D)},removeClass:function(D){n.className.remove(this,D)},toggleClass:function(E,D){if(typeof D!=="boolean"){D=!n.className.has(this,E)}n.className[D?"add":"remove"](this,E)},remove:function(D){if(!D||n.filter(D,[this]).length){n("*",this).add([this]).each(function(){n.event.remove(this);n.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){n(">*",this).remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(D,E){n.fn[D]=function(){return this.each(E,arguments)}});function j(D,E){return D[0]&&parseInt(n.curCSS(D[0],E,true),10)||0}var h="jQuery"+e(),u=0,z={};n.extend({cache:{},data:function(E,D,F){E=E==l?z:E;var G=E[h];if(!G){G=E[h]=++u}if(D&&!n.cache[G]){n.cache[G]={}}if(F!==g){n.cache[G][D]=F}return D?n.cache[G][D]:G},removeData:function(E,D){E=E==l?z:E;var G=E[h];if(D){if(n.cache[G]){delete n.cache[G][D];D="";for(D in n.cache[G]){break}if(!D){n.removeData(E)}}}else{try{delete E[h]}catch(F){if(E.removeAttribute){E.removeAttribute(h)}}delete n.cache[G]}},queue:function(E,D,G){if(E){D=(D||"fx")+"queue";var F=n.data(E,D);if(!F||n.isArray(G)){F=n.data(E,D,n.makeArray(G))}else{if(G){F.push(G)}}}return F},dequeue:function(G,F){var D=n.queue(G,F),E=D.shift();if(!F||F==="fx"){E=D[0]}if(E!==g){E.call(G)}}});n.fn.extend({data:function(D,F){var G=D.split(".");G[1]=G[1]?"."+G[1]:"";if(F===g){var E=this.triggerHandler("getData"+G[1]+"!",[G[0]]);if(E===g&&this.length){E=n.data(this[0],D)}return E===g&&G[1]?this.data(G[0]):E}else{return this.trigger("setData"+G[1]+"!",[G[0],F]).each(function(){n.data(this,D,F)})}},removeData:function(D){return this.each(function(){n.removeData(this,D)})},queue:function(D,E){if(typeof D!=="string"){E=D;D="fx"}if(E===g){return n.queue(this[0],D)}return this.each(function(){var F=n.queue(this,D,E);if(D=="fx"&&F.length==1){F[0].call(this)}})},dequeue:function(D){return this.each(function(){n.dequeue(this,D)})}});
/*
 * Sizzle CSS Selector Engine - v0.9.1 Copyright 2009, The Dojo Foundation
 * Released under the MIT, BSD, and GPL Licenses. More information:
 * http://sizzlejs.com/
 */
(function(){var N=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|[^[\]]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,I=0,F=Object.prototype.toString;var E=function(ae,S,aa,V){aa=aa||[];S=S||document;if(S.nodeType!==1&&S.nodeType!==9){return[]}if(!ae||typeof ae!=="string"){return aa}var ab=[],ac,Y,ah,ag,Z,R,Q=true;N.lastIndex=0;while((ac=N.exec(ae))!==null){ab.push(ac[1]);if(ac[2]){R=RegExp.rightContext;break}}if(ab.length>1&&G.match.POS.exec(ae)){if(ab.length===2&&G.relative[ab[0]]){var U="",X;while((X=G.match.POS.exec(ae))){U+=X[0];ae=ae.replace(G.match.POS,"")}Y=E.filter(U,E(/\s$/.test(ae)?ae+"*":ae,S))}else{Y=G.relative[ab[0]]?[S]:E(ab.shift(),S);while(ab.length){var P=[];ae=ab.shift();if(G.relative[ae]){ae+=ab.shift()}for(var af=0,ad=Y.length;af<ad;af++){E(ae,Y[af],P)}Y=P}}}else{var ai=V?{expr:ab.pop(),set:D(V)}:E.find(ab.pop(),ab.length===1&&S.parentNode?S.parentNode:S);Y=E.filter(ai.expr,ai.set);if(ab.length>0){ah=D(Y)}else{Q=false}while(ab.length){var T=ab.pop(),W=T;if(!G.relative[T]){T=""}else{W=ab.pop()}if(W==null){W=S}G.relative[T](ah,W,M(S))}}if(!ah){ah=Y}if(!ah){throw"Syntax error, unrecognized expression: "+(T||ae)}if(F.call(ah)==="[object Array]"){if(!Q){aa.push.apply(aa,ah)}else{if(S.nodeType===1){for(var af=0;ah[af]!=null;af++){if(ah[af]&&(ah[af]===true||ah[af].nodeType===1&&H(S,ah[af]))){aa.push(Y[af])}}}else{for(var af=0;ah[af]!=null;af++){if(ah[af]&&ah[af].nodeType===1){aa.push(Y[af])}}}}}else{D(ah,aa)}if(R){E(R,S,aa,V)}return aa};E.matches=function(P,Q){return E(P,null,null,Q)};E.find=function(V,S){var W,Q;if(!V){return[]}for(var R=0,P=G.order.length;R<P;R++){var T=G.order[R],Q;if((Q=G.match[T].exec(V))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){Q[1]=(Q[1]||"").replace(/\\/g,"");W=G.find[T](Q,S);if(W!=null){V=V.replace(G.match[T],"");break}}}}if(!W){W=S.getElementsByTagName("*")}return{set:W,expr:V}};E.filter=function(S,ac,ad,T){var Q=S,Y=[],ah=ac,V,ab;while(S&&ac.length){for(var U in G.filter){if((V=G.match[U].exec(S))!=null){var Z=G.filter[U],R=null,X=0,aa,ag;ab=false;if(ah==Y){Y=[]}if(G.preFilter[U]){V=G.preFilter[U](V,ah,ad,Y,T);if(!V){ab=aa=true}else{if(V===true){continue}else{if(V[0]===true){R=[];var W=null,af;for(var ae=0;(af=ah[ae])!==g;ae++){if(af&&W!==af){R.push(af);W=af}}}}}}if(V){for(var ae=0;(ag=ah[ae])!==g;ae++){if(ag){if(R&&ag!=R[X]){X++}aa=Z(ag,V,X,R);var P=T^!!aa;if(ad&&aa!=null){if(P){ab=true}else{ah[ae]=false}}else{if(P){Y.push(ag);ab=true}}}}}if(aa!==g){if(!ad){ah=Y}S=S.replace(G.match[U],"");if(!ab){return[]}break}}}S=S.replace(/\s*,\s*/,"");if(S==Q){if(ab==null){throw"Syntax error, unrecognized expression: "+S}else{break}}Q=S}return ah};var G=E.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(P){return P.getAttribute("href")}},relative:{"+":function(T,Q){for(var R=0,P=T.length;R<P;R++){var S=T[R];if(S){var U=S.previousSibling;while(U&&U.nodeType!==1){U=U.previousSibling}T[R]=typeof Q==="string"?U||false:U===Q}}if(typeof Q==="string"){E.filter(Q,T,true)}},">":function(U,Q,V){if(typeof Q==="string"&&!/\W/.test(Q)){Q=V?Q:Q.toUpperCase();for(var R=0,P=U.length;R<P;R++){var T=U[R];if(T){var S=T.parentNode;U[R]=S.nodeName===Q?S:false}}}else{for(var R=0,P=U.length;R<P;R++){var T=U[R];if(T){U[R]=typeof Q==="string"?T.parentNode:T.parentNode===Q}}if(typeof Q==="string"){E.filter(Q,U,true)}}},"":function(S,Q,U){var R="done"+(I++),P=O;if(!Q.match(/\W/)){var T=Q=U?Q:Q.toUpperCase();P=L}P("parentNode",Q,R,S,T,U)},"~":function(S,Q,U){var R="done"+(I++),P=O;if(typeof Q==="string"&&!Q.match(/\W/)){var T=Q=U?Q:Q.toUpperCase();P=L}P("previousSibling",Q,R,S,T,U)}},find:{ID:function(Q,R){if(R.getElementById){var P=R.getElementById(Q[1]);return P?[P]:[]}},NAME:function(P,Q){return Q.getElementsByName?Q.getElementsByName(P[1]):null},TAG:function(P,Q){return Q.getElementsByTagName(P[1])}},preFilter:{CLASS:function(S,Q,R,P,U){S=" "+S[1].replace(/\\/g,"")+" ";for(var T=0;Q[T];T++){if(U^(" "+Q[T].className+" ").indexOf(S)>=0){if(!R){P.push(Q[T])}}else{if(R){Q[T]=false}}}return false},ID:function(P){return P[1].replace(/\\/g,"")},TAG:function(Q,P){for(var R=0;!P[R];R++){}return M(P[R])?Q[1]:Q[1].toUpperCase()},CHILD:function(P){if(P[1]=="nth"){var Q=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(P[2]=="even"&&"2n"||P[2]=="odd"&&"2n+1"||!/\D/.test(P[2])&&"0n+"+P[2]||P[2]);P[2]=(Q[1]+(Q[2]||1))-0;P[3]=Q[3]-0}P[0]="done"+(I++);return P},ATTR:function(Q){var P=Q[1];if(G.attrMap[P]){Q[1]=G.attrMap[P]}if(Q[2]==="~="){Q[4]=" "+Q[4]+" "}return Q},PSEUDO:function(T,Q,R,P,U){if(T[1]==="not"){if(T[3].match(N).length>1){T[3]=E(T[3],null,null,Q)}else{var S=E.filter(T[3],Q,R,true^U);if(!R){P.push.apply(P,S)}return false}}else{if(G.match.POS.test(T[0])){return true}}return T},POS:function(P){P.unshift(true);return P}},filters:{enabled:function(P){return P.disabled===false&&P.type!=="hidden"},disabled:function(P){return P.disabled===true},checked:function(P){return P.checked===true},selected:function(P){P.parentNode.selectedIndex;return P.selected===true},parent:function(P){return !!P.firstChild},empty:function(P){return !P.firstChild},has:function(R,Q,P){return !!E(P[3],R).length},header:function(P){return/h\d/i.test(P.nodeName)},text:function(P){return"text"===P.type},radio:function(P){return"radio"===P.type},checkbox:function(P){return"checkbox"===P.type},file:function(P){return"file"===P.type},password:function(P){return"password"===P.type},submit:function(P){return"submit"===P.type},image:function(P){return"image"===P.type},reset:function(P){return"reset"===P.type},button:function(P){return"button"===P.type||P.nodeName.toUpperCase()==="BUTTON"},input:function(P){return/input|select|textarea|button/i.test(P.nodeName)}},setFilters:{first:function(Q,P){return P===0},last:function(R,Q,P,S){return Q===S.length-1},even:function(Q,P){return P%2===0},odd:function(Q,P){return P%2===1},lt:function(R,Q,P){return Q<P[3]-0},gt:function(R,Q,P){return Q>P[3]-0},nth:function(R,Q,P){return P[3]-0==Q},eq:function(R,Q,P){return P[3]-0==Q}},filter:{CHILD:function(P,S){var V=S[1],W=P.parentNode;var U="child"+W.childNodes.length;if(W&&(!W[U]||!P.nodeIndex)){var T=1;for(var Q=W.firstChild;Q;Q=Q.nextSibling){if(Q.nodeType==1){Q.nodeIndex=T++}}W[U]=T-1}if(V=="first"){return P.nodeIndex==1}else{if(V=="last"){return P.nodeIndex==W[U]}else{if(V=="only"){return W[U]==1}else{if(V=="nth"){var Y=false,R=S[2],X=S[3];if(R==1&&X==0){return true}if(R==0){if(P.nodeIndex==X){Y=true}}else{if((P.nodeIndex-X)%R==0&&(P.nodeIndex-X)/R>=0){Y=true}}return Y}}}}},PSEUDO:function(V,R,S,W){var Q=R[1],T=G.filters[Q];if(T){return T(V,S,R,W)}else{if(Q==="contains"){return(V.textContent||V.innerText||"").indexOf(R[3])>=0}else{if(Q==="not"){var U=R[3];for(var S=0,P=U.length;S<P;S++){if(U[S]===V){return false}}return true}}}},ID:function(Q,P){return Q.nodeType===1&&Q.getAttribute("id")===P},TAG:function(Q,P){return(P==="*"&&Q.nodeType===1)||Q.nodeName===P},CLASS:function(Q,P){return P.test(Q.className)},ATTR:function(T,R){var P=G.attrHandle[R[1]]?G.attrHandle[R[1]](T):T[R[1]]||T.getAttribute(R[1]),U=P+"",S=R[2],Q=R[4];return P==null?false:S==="="?U===Q:S==="*="?U.indexOf(Q)>=0:S==="~="?(" "+U+" ").indexOf(Q)>=0:!R[4]?P:S==="!="?U!=Q:S==="^="?U.indexOf(Q)===0:S==="$="?U.substr(U.length-Q.length)===Q:S==="|="?U===Q||U.substr(0,Q.length+1)===Q+"-":false},POS:function(T,Q,R,U){var P=Q[2],S=G.setFilters[P];if(S){return S(T,R,Q,U)}}}};for(var K in G.match){G.match[K]=RegExp(G.match[K].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var D=function(Q,P){Q=Array.prototype.slice.call(Q);if(P){P.push.apply(P,Q);return P}return Q};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(J){D=function(T,S){var Q=S||[];if(F.call(T)==="[object Array]"){Array.prototype.push.apply(Q,T)}else{if(typeof T.length==="number"){for(var R=0,P=T.length;R<P;R++){Q.push(T[R])}}else{for(var R=0;T[R];R++){Q.push(T[R])}}}return Q}}(function(){var Q=document.createElement("form"),R="script"+(new Date).getTime();Q.innerHTML="<input name='"+R+"'/>";var P=document.documentElement;P.insertBefore(Q,P.firstChild);if(!!document.getElementById(R)){G.find.ID=function(T,U){if(U.getElementById){var S=U.getElementById(T[1]);return S?S.id===T[1]||S.getAttributeNode&&S.getAttributeNode("id").nodeValue===T[1]?[S]:g:[]}};G.filter.ID=function(U,S){var T=U.getAttributeNode&&U.getAttributeNode("id");return U.nodeType===1&&T&&T.nodeValue===S}}P.removeChild(Q)})();(function(){var P=document.createElement("div");P.appendChild(document.createComment(""));if(P.getElementsByTagName("*").length>0){G.find.TAG=function(Q,U){var T=U.getElementsByTagName(Q[1]);if(Q[1]==="*"){var S=[];for(var R=0;T[R];R++){if(T[R].nodeType===1){S.push(T[R])}}T=S}return T}}P.innerHTML="<a href='#'></a>";if(P.firstChild.getAttribute("href")!=="#"){G.attrHandle.href=function(Q){return Q.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var P=E;E=function(T,S,Q,R){S=S||document;if(!R&&S.nodeType===9){try{return D(S.querySelectorAll(T),Q)}catch(U){}}return P(T,S,Q,R)};E.find=P.find;E.filter=P.filter;E.selectors=P.selectors;E.matches=P.matches})()}if(document.documentElement.getElementsByClassName){G.order.splice(1,0,"CLASS");G.find.CLASS=function(P,Q){return Q.getElementsByClassName(P[1])}}function L(Q,W,V,Z,X,Y){for(var T=0,R=Z.length;T<R;T++){var P=Z[T];if(P){P=P[Q];var U=false;while(P&&P.nodeType){var S=P[V];if(S){U=Z[S];break}if(P.nodeType===1&&!Y){P[V]=T}if(P.nodeName===W){U=P;break}P=P[Q]}Z[T]=U}}}function O(Q,V,U,Y,W,X){for(var S=0,R=Y.length;S<R;S++){var P=Y[S];if(P){P=P[Q];var T=false;while(P&&P.nodeType){if(P[U]){T=Y[P[U]];break}if(P.nodeType===1){if(!X){P[U]=S}if(typeof V!=="string"){if(P===V){T=true;break}}else{if(E.filter(V,[P]).length>0){T=P;break}}}P=P[Q]}Y[S]=T}}}var H=document.compareDocumentPosition?function(Q,P){return Q.compareDocumentPosition(P)&16}:function(Q,P){return Q!==P&&(Q.contains?Q.contains(P):true)};var M=function(P){return P.documentElement&&!P.body||P.tagName&&P.ownerDocument&&!P.ownerDocument.body};n.find=E;n.filter=E.filter;n.expr=E.selectors;n.expr[":"]=n.expr.filters;E.selectors.filters.hidden=function(P){return"hidden"===P.type||n.css(P,"display")==="none"||n.css(P,"visibility")==="hidden"};E.selectors.filters.visible=function(P){return"hidden"!==P.type&&n.css(P,"display")!=="none"&&n.css(P,"visibility")!=="hidden"};E.selectors.filters.animated=function(P){return n.grep(n.timers,function(Q){return P===Q.elem}).length};n.multiFilter=function(R,P,Q){if(Q){R=":not("+R+")"}return E.matches(R,P)};n.dir=function(R,Q){var P=[],S=R[Q];while(S&&S!=document){if(S.nodeType==1){P.push(S)}S=S[Q]}return P};n.nth=function(T,P,R,S){P=P||1;var Q=0;for(;T;T=T[R]){if(T.nodeType==1&&++Q==P){break}}return T};n.sibling=function(R,Q){var P=[];for(;R;R=R.nextSibling){if(R.nodeType==1&&R!=Q){P.push(R)}}return P};return;l.Sizzle=E})();n.event={add:function(H,E,G,J){if(H.nodeType==3||H.nodeType==8){return}if(H.setInterval&&H!=l){H=l}if(!G.guid){G.guid=this.guid++}if(J!==g){var F=G;G=this.proxy(F);G.data=J}var D=n.data(H,"events")||n.data(H,"events",{}),I=n.data(H,"handle")||n.data(H,"handle",function(){return typeof n!=="undefined"&&!n.event.triggered?n.event.handle.apply(arguments.callee.elem,arguments):g});I.elem=H;n.each(E.split(/\s+/),function(L,M){var N=M.split(".");M=N.shift();G.type=N.slice().sort().join(".");var K=D[M];if(n.event.specialAll[M]){n.event.specialAll[M].setup.call(H,J,N)}if(!K){K=D[M]={};if(!n.event.special[M]||n.event.special[M].setup.call(H,J,N)===false){if(H.addEventListener){H.addEventListener(M,I,false)}else{if(H.attachEvent){H.attachEvent("on"+M,I)}}}}K[G.guid]=G;n.event.global[M]=true});H=null},guid:1,global:{},remove:function(J,G,I){if(J.nodeType==3||J.nodeType==8){return}var F=n.data(J,"events"),E,D;if(F){if(G===g||(typeof G==="string"&&G.charAt(0)==".")){for(var H in F){this.remove(J,H+(G||""))}}else{if(G.type){I=G.handler;G=G.type}n.each(G.split(/\s+/),function(L,N){var P=N.split(".");N=P.shift();var M=RegExp("(^|\\.)"+P.slice().sort().join(".*\\.")+"(\\.|$)");if(F[N]){if(I){delete F[N][I.guid]}else{for(var O in F[N]){if(M.test(F[N][O].type)){delete F[N][O]}}}if(n.event.specialAll[N]){n.event.specialAll[N].teardown.call(J,P)}for(E in F[N]){break}if(!E){if(!n.event.special[N]||n.event.special[N].teardown.call(J,P)===false){if(J.removeEventListener){J.removeEventListener(N,n.data(J,"handle"),false)}else{if(J.detachEvent){J.detachEvent("on"+N,n.data(J,"handle"))}}}E=null;delete F[N]}}})}for(E in F){break}if(!E){var K=n.data(J,"handle");if(K){K.elem=null}n.removeData(J,"events");n.removeData(J,"handle")}}},trigger:function(H,J,G,D){var F=H.type||H;if(!D){H=typeof H==="object"?H[h]?H:n.extend(n.Event(F),H):n.Event(F);if(F.indexOf("!")>=0){H.type=F=F.slice(0,-1);H.exclusive=true}if(!G){H.stopPropagation();if(this.global[F]){n.each(n.cache,function(){if(this.events&&this.events[F]){n.event.trigger(H,J,this.handle.elem)}})}}if(!G||G.nodeType==3||G.nodeType==8){return g}H.result=g;H.target=G;J=n.makeArray(J);J.unshift(H)}H.currentTarget=G;var I=n.data(G,"handle");if(I){I.apply(G,J)}if((!G[F]||(n.nodeName(G,"a")&&F=="click"))&&G["on"+F]&&G["on"+F].apply(G,J)===false){H.result=false}if(!D&&G[F]&&!H.isDefaultPrevented()&&!(n.nodeName(G,"a")&&F=="click")){this.triggered=true;try{G[F]()}catch(K){}}this.triggered=false;if(!H.isPropagationStopped()){var E=G.parentNode||G.ownerDocument;if(E){n.event.trigger(H,J,E,true)}}},handle:function(J){var I,D;J=arguments[0]=n.event.fix(J||l.event);var K=J.type.split(".");J.type=K.shift();I=!K.length&&!J.exclusive;var H=RegExp("(^|\\.)"+K.slice().sort().join(".*\\.")+"(\\.|$)");D=(n.data(this,"events")||{})[J.type];for(var F in D){var G=D[F];if(I||H.test(G.type)){J.handler=G;J.data=G.data;var E=G.apply(this,arguments);if(E!==g){J.result=E;if(E===false){J.preventDefault();J.stopPropagation()}}if(J.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(G){if(G[h]){return G}var E=G;G=n.Event(E);for(var F=this.props.length,I;F;){I=this.props[--F];G[I]=E[I]}if(!G.target){G.target=G.srcElement||document}if(G.target.nodeType==3){G.target=G.target.parentNode}if(!G.relatedTarget&&G.fromElement){G.relatedTarget=G.fromElement==G.target?G.toElement:G.fromElement}if(G.pageX==null&&G.clientX!=null){var H=document.documentElement,D=document.body;G.pageX=G.clientX+(H&&H.scrollLeft||D&&D.scrollLeft||0)-(H.clientLeft||0);G.pageY=G.clientY+(H&&H.scrollTop||D&&D.scrollTop||0)-(H.clientTop||0)}if(!G.which&&((G.charCode||G.charCode===0)?G.charCode:G.keyCode)){G.which=G.charCode||G.keyCode}if(!G.metaKey&&G.ctrlKey){G.metaKey=G.ctrlKey}if(!G.which&&G.button){G.which=(G.button&1?1:(G.button&2?3:(G.button&4?2:0)))}return G},proxy:function(E,D){D=D||function(){return E.apply(this,arguments)};D.guid=E.guid=E.guid||D.guid||this.guid++;return D},special:{ready:{setup:A,teardown:function(){}}},specialAll:{live:{setup:function(D,E){n.event.add(this,E[0],c)},teardown:function(F){if(F.length){var D=0,E=RegExp("(^|\\.)"+F[0]+"(\\.|$)");n.each((n.data(this,"events").live||{}),function(){if(E.test(this.type)){D++}});if(D<1){n.event.remove(this,F[0],c)}}}}}};n.Event=function(D){if(!this.preventDefault){return new n.Event(D)}if(D&&D.type){this.originalEvent=D;this.type=D.type;this.timeStamp=D.timeStamp}else{this.type=D}if(!this.timeStamp){this.timeStamp=e()}this[h]=true};function k(){return false}function t(){return true}n.Event.prototype={preventDefault:function(){this.isDefaultPrevented=t;var D=this.originalEvent;if(!D){return}if(D.preventDefault){D.preventDefault()}D.returnValue=false},stopPropagation:function(){this.isPropagationStopped=t;var D=this.originalEvent;if(!D){return}if(D.stopPropagation){D.stopPropagation()}D.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=t;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(E){var D=E.relatedTarget;while(D&&D!=this){try{D=D.parentNode}catch(F){D=this}}if(D!=this){E.type=E.data;n.event.handle.apply(this,arguments)}};n.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(E,D){n.event.special[D]={setup:function(){n.event.add(this,E,a,D)},teardown:function(){n.event.remove(this,E,a)}}});n.fn.extend({bind:function(E,F,D){return E=="unload"?this.one(E,F,D):this.each(function(){n.event.add(this,E,D||F,D&&F)})},one:function(F,G,E){var D=n.event.proxy(E||G,function(H){n(this).unbind(H,D);return(E||G).apply(this,arguments)});return this.each(function(){n.event.add(this,F,D,E&&G)})},unbind:function(E,D){return this.each(function(){n.event.remove(this,E,D)})},trigger:function(D,E){return this.each(function(){n.event.trigger(D,E,this)})},triggerHandler:function(D,F){if(this[0]){var E=n.Event(D);E.preventDefault();E.stopPropagation();n.event.trigger(E,F,this[0]);return E.result}},toggle:function(F){var D=arguments,E=1;while(E<D.length){n.event.proxy(F,D[E++])}return this.click(n.event.proxy(F,function(G){this.lastToggle=(this.lastToggle||0)%E;G.preventDefault();return D[this.lastToggle++].apply(this,arguments)||false}))},hover:function(D,E){return this.mouseenter(D).mouseleave(E)},ready:function(D){A();if(n.isReady){D.call(document,n)}else{n.readyList.push(D)}return this},live:function(F,E){var D=n.event.proxy(E);D.guid+=this.selector+F;n(document).bind(i(F,this.selector),this.selector,D);return this},die:function(E,D){n(document).unbind(i(E,this.selector),D?{guid:D.guid+this.selector+E}:null);return this}});function c(G){var D=RegExp("(^|\\.)"+G.type+"(\\.|$)"),F=true,E=[];n.each(n.data(this,"events").live||[],function(H,I){if(D.test(I.type)){var J=n(G.target).closest(I.data)[0];if(J){E.push({elem:J,fn:I})}}});n.each(E,function(){if(!G.isImmediatePropagationStopped()&&this.fn.call(this.elem,G,this.fn.data)===false){F=false}});return F}function i(E,D){return["live",E,D.replace(/\./g,"`").replace(/ /g,"|")].join(".")}n.extend({isReady:false,readyList:[],ready:function(){if(!n.isReady){n.isReady=true;if(n.readyList){n.each(n.readyList,function(){this.call(document,n)});n.readyList=null}n(document).triggerHandler("ready")}}});var w=false;function A(){if(w){return}w=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);n.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);n.ready()}});if(document.documentElement.doScroll&&!l.frameElement){(function(){if(n.isReady){return}try{document.documentElement.doScroll("left")}catch(D){setTimeout(arguments.callee,0);return}n.ready()})()}}}n.event.add(l,"load",n.ready)}n.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(E,D){n.fn[D]=function(F){return F?this.bind(D,F):this.trigger(D)}});n(l).bind("unload",function(){for(var D in n.cache){if(D!=1&&n.cache[D].handle){n.event.remove(n.cache[D].handle.elem)}}});(function(){n.support={};var E=document.documentElement,F=document.createElement("script"),J=document.createElement("div"),I="script"+(new Date).getTime();J.style.display="none";J.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 G=J.getElementsByTagName("*"),D=J.getElementsByTagName("a")[0];if(!G||!G.length||!D){return}n.support={leadingWhitespace:J.firstChild.nodeType==3,tbody:!J.getElementsByTagName("tbody").length,objectAll:!!J.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!J.getElementsByTagName("link").length,style:/red/.test(D.getAttribute("style")),hrefNormalized:D.getAttribute("href")==="/a",opacity:D.style.opacity==="0.5",cssFloat:!!D.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};F.type="text/javascript";try{F.appendChild(document.createTextNode("window."+I+"=1;"))}catch(H){}E.insertBefore(F,E.firstChild);if(l[I]){n.support.scriptEval=true;delete l[I]}E.removeChild(F);if(J.attachEvent&&J.fireEvent){J.attachEvent("onclick",function(){n.support.noCloneEvent=false;J.detachEvent("onclick",arguments.callee)});J.cloneNode(true).fireEvent("onclick")}n(function(){var K=document.createElement("div");K.style.width="1px";K.style.paddingLeft="1px";document.body.appendChild(K);n.boxModel=n.support.boxModel=K.offsetWidth===2;document.body.removeChild(K)})})();var v=n.support.cssFloat?"cssFloat":"styleFloat";n.props={"for":"htmlFor","class":"className","float":v,cssFloat:v,styleFloat:v,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};n.fn.extend({_load:n.fn.load,load:function(F,I,J){if(typeof F!=="string"){return this._load(F)}var H=F.indexOf(" ");if(H>=0){var D=F.slice(H,F.length);F=F.slice(0,H)}var G="GET";if(I){if(n.isFunction(I)){J=I;I=null}else{if(typeof I==="object"){I=n.param(I);G="POST"}}}var E=this;n.ajax({url:F,type:G,dataType:"html",data:I,complete:function(L,K){if(K=="success"||K=="notmodified"){E.html(D?n("<div/>").append(L.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(D):L.responseText)}if(J){E.each(J,[L.responseText,K,L])}}});return this},serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?n.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type))}).map(function(D,E){var F=n(this).val();return F==null?null:n.isArray(F)?n.map(F,function(H,G){return{name:E.name,value:H}}):{name:E.name,value:F}}).get()}});n.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(D,E){n.fn[E]=function(F){return this.bind(E,F)}});var q=e();n.extend({get:function(D,F,G,E){if(n.isFunction(F)){G=F;F=null}return n.ajax({type:"GET",url:D,data:F,success:G,dataType:E})},getScript:function(D,E){return n.get(D,null,E,"script")},getJSON:function(D,E,F){return n.get(D,E,F,"json")},post:function(D,F,G,E){if(n.isFunction(F)){G=F;F={}}return n.ajax({type:"POST",url:D,data:F,success:G,dataType:E})},ajaxSetup:function(D){n.extend(n.ajaxSettings,D)},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(L){L=n.extend(true,L,n.extend(true,{},n.ajaxSettings,L));var V,E=/=\?(&|$)/g,Q,U,F=L.type.toUpperCase();if(L.data&&L.processData&&typeof L.data!=="string"){L.data=n.param(L.data)}if(L.dataType=="jsonp"){if(F=="GET"){if(!L.url.match(E)){L.url+=(L.url.match(/\?/)?"&":"?")+(L.jsonp||"callback")+"=?"}}else{if(!L.data||!L.data.match(E)){L.data=(L.data?L.data+"&":"")+(L.jsonp||"callback")+"=?"}}L.dataType="json"}if(L.dataType=="json"&&(L.data&&L.data.match(E)||L.url.match(E))){V="jsonp"+q++;if(L.data){L.data=(L.data+"").replace(E,"="+V+"$1")}L.url=L.url.replace(E,"="+V+"$1");L.dataType="script";l[V]=function(W){U=W;H();K();l[V]=g;try{delete l[V]}catch(X){}if(G){G.removeChild(S)}}}if(L.dataType=="script"&&L.cache==null){L.cache=false}if(L.cache===false&&F=="GET"){var D=e();var T=L.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+D+"$2");L.url=T+((T==L.url)?(L.url.match(/\?/)?"&":"?")+"_="+D:"")}if(L.data&&F=="GET"){L.url+=(L.url.match(/\?/)?"&":"?")+L.data;L.data=null}if(L.global&&!n.active++){n.event.trigger("ajaxStart")}var P=/^(\w+:)?\/\/([^\/?#]+)/.exec(L.url);if(L.dataType=="script"&&F=="GET"&&P&&(P[1]&&P[1]!=location.protocol||P[2]!=location.host)){var G=document.getElementsByTagName("head")[0];var S=document.createElement("script");S.src=L.url;if(L.scriptCharset){S.charset=L.scriptCharset}if(!V){var N=false;S.onload=S.onreadystatechange=function(){if(!N&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){N=true;H();K();G.removeChild(S)}}}G.appendChild(S);return g}var J=false;var I=L.xhr();if(L.username){I.open(F,L.url,L.async,L.username,L.password)}else{I.open(F,L.url,L.async)}try{if(L.data){I.setRequestHeader("Content-Type",L.contentType)}if(L.ifModified){I.setRequestHeader("If-Modified-Since",n.lastModified[L.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}I.setRequestHeader("X-Requested-With","XMLHttpRequest");I.setRequestHeader("Accept",L.dataType&&L.accepts[L.dataType]?L.accepts[L.dataType]+", */*":L.accepts._default)}catch(R){}if(L.beforeSend&&L.beforeSend(I,L)===false){if(L.global&&!--n.active){n.event.trigger("ajaxStop")}I.abort();return false}if(L.global){n.event.trigger("ajaxSend",[I,L])}var M=function(W){if(I.readyState==0){if(O){clearInterval(O);O=null;if(L.global&&!--n.active){n.event.trigger("ajaxStop")}}}else{if(!J&&I&&(I.readyState==4||W=="timeout")){J=true;if(O){clearInterval(O);O=null}Q=W=="timeout"?"timeout":!n.httpSuccess(I)?"error":L.ifModified&&n.httpNotModified(I,L.url)?"notmodified":"success";if(Q=="success"){try{U=n.httpData(I,L.dataType,L)}catch(Y){Q="parsererror"}}if(Q=="success"){var X;try{X=I.getResponseHeader("Last-Modified")}catch(Y){}if(L.ifModified&&X){n.lastModified[L.url]=X}if(!V){H()}}else{n.handleError(L,I,Q)}K();if(L.async){I=null}}}};if(L.async){var O=setInterval(M,13);if(L.timeout>0){setTimeout(function(){if(I){if(!J){M("timeout")}if(I){I.abort()}}},L.timeout)}}try{I.send(L.data)}catch(R){n.handleError(L,I,null,R)}if(!L.async){M()}function H(){if(L.success){L.success(U,Q)}if(L.global){n.event.trigger("ajaxSuccess",[I,L])}}function K(){if(L.complete){L.complete(I,Q)}if(L.global){n.event.trigger("ajaxComplete",[I,L])}if(L.global&&!--n.active){n.event.trigger("ajaxStop")}}return I},handleError:function(E,G,D,F){if(E.error){E.error(G,D,F)}if(E.global){n.event.trigger("ajaxError",[G,E,F])}},active:0,httpSuccess:function(E){try{return !E.status&&location.protocol=="file:"||(E.status>=200&&E.status<300)||E.status==304||E.status==1223}catch(D){}return false},httpNotModified:function(F,D){try{var G=F.getResponseHeader("Last-Modified");return F.status==304||G==n.lastModified[D]}catch(E){}return false},httpData:function(I,G,F){var E=I.getResponseHeader("content-type"),D=G=="xml"||!G&&E&&E.indexOf("xml")>=0,H=D?I.responseXML:I.responseText;if(D&&H.documentElement.tagName=="parsererror"){throw"parsererror"}if(F&&F.dataFilter){H=F.dataFilter(H,G)}if(typeof H==="string"){if(G=="script"){n.globalEval(H)}if(G=="json"){H=l["eval"]("("+H+")")}}return H},param:function(D){var F=[];function G(H,I){F[F.length]=encodeURIComponent(H)+"="+encodeURIComponent(I)}if(n.isArray(D)||D.jquery){n.each(D,function(){G(this.name,this.value)})}else{for(var E in D){if(n.isArray(D[E])){n.each(D[E],function(){G(E,this)})}else{G(E,n.isFunction(D[E])?D[E]():D[E])}}}return F.join("&").replace(/%20/g,"+")}});var m={},d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function s(E,D){var F={};n.each(d.concat.apply([],d.slice(0,D)),function(){F[this]=E});return F}n.fn.extend({show:function(I,K){if(I){return this.animate(s("show",3),I,K)}else{for(var G=0,E=this.length;G<E;G++){var D=n.data(this[G],"olddisplay");this[G].style.display=D||"";if(n.css(this[G],"display")==="none"){var F=this[G].tagName,J;if(m[F]){J=m[F]}else{var H=n("<"+F+" />").appendTo("body");J=H.css("display");if(J==="none"){J="block"}H.remove();m[F]=J}this[G].style.display=n.data(this[G],"olddisplay",J)}}return this}},hide:function(G,H){if(G){return this.animate(s("hide",3),G,H)}else{for(var F=0,E=this.length;F<E;F++){var D=n.data(this[F],"olddisplay");if(!D&&D!=="none"){n.data(this[F],"olddisplay",n.css(this[F],"display"))}this[F].style.display="none"}return this}},_toggle:n.fn.toggle,toggle:function(F,E){var D=typeof F==="boolean";return n.isFunction(F)&&n.isFunction(E)?this._toggle.apply(this,arguments):F==null||D?this.each(function(){var G=D?F:n(this).is(":hidden");n(this)[G?"show":"hide"]()}):this.animate(s("toggle",3),F,E)},fadeTo:function(D,F,E){return this.animate({opacity:F},D,E)},animate:function(H,E,G,F){var D=n.speed(E,G,F);return this[D.queue===false?"each":"queue"](function(){var J=n.extend({},D),L,K=this.nodeType==1&&n(this).is(":hidden"),I=this;for(L in H){if(H[L]=="hide"&&K||H[L]=="show"&&!K){return J.complete.call(this)}if((L=="height"||L=="width")&&this.style){J.display=n.css(this,"display");J.overflow=this.style.overflow}}if(J.overflow!=null){this.style.overflow="hidden"}J.curAnim=n.extend({},H);n.each(H,function(N,R){var Q=new n.fx(I,J,N);if(/toggle|show|hide/.test(R)){Q[R=="toggle"?K?"show":"hide":R](H)}else{var P=R.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),S=Q.cur(true)||0;if(P){var M=parseFloat(P[2]),O=P[3]||"px";if(O!="px"){I.style[N]=(M||1)+O;S=((M||1)/Q.cur(true))*S;I.style[N]=S+O}if(P[1]){M=((P[1]=="-="?-1:1)*M)+S}Q.custom(S,M,O)}else{Q.custom(S,R,"")}}});return true})},stop:function(E,D){var F=n.timers;if(E){this.queue([])}this.each(function(){for(var G=F.length-1;G>=0;G--){if(F[G].elem==this){if(D){F[G](true)}F.splice(G,1)}}});if(!D){this.dequeue()}return this}});n.each({slideDown:s("show",1),slideUp:s("hide",1),slideToggle:s("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(D,E){n.fn[D]=function(F,G){return this.animate(E,F,G)}});n.extend({speed:function(F,G,E){var D=typeof F==="object"?F:{complete:E||!E&&G||n.isFunction(F)&&F,duration:F,easing:E&&G||G&&!n.isFunction(G)&&G};D.duration=n.fx.off?0:typeof D.duration==="number"?D.duration:n.fx.speeds[D.duration]||n.fx.speeds._default;D.old=D.complete;D.complete=function(){if(D.queue!==false){n(this).dequeue()}if(n.isFunction(D.old)){D.old.call(this)}};return D},easing:{linear:function(F,G,D,E){return D+E*F},swing:function(F,G,D,E){return((-Math.cos(F*Math.PI)/2)+0.5)*E+D}},timers:[],timerId:null,fx:function(E,D,F){this.options=D;this.elem=E;this.prop=F;if(!D.orig){D.orig={}}}});n.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(n.fx.step[this.prop]||n.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(E){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var D=parseFloat(n.css(this.elem,this.prop,E));return D&&D>-10000?D:parseFloat(n.curCSS(this.elem,this.prop))||0},custom:function(H,G,F){this.startTime=e();this.start=H;this.end=G;this.unit=F||this.unit||"px";this.now=this.start;this.pos=this.state=0;var D=this;function E(I){return D.step(I)}E.elem=this.elem;n.timers.push(E);if(E()&&n.timerId==null){n.timerId=setInterval(function(){var J=n.timers;for(var I=0;I<J.length;I++){if(!J[I]()){J.splice(I--,1)}}if(!J.length){clearInterval(n.timerId);n.timerId=null}},13)}},show:function(){this.options.orig[this.prop]=n.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());n(this.elem).show()},hide:function(){this.options.orig[this.prop]=n.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(G){var F=e();if(G||F>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var D=true;for(var E in this.options.curAnim){if(this.options.curAnim[E]!==true){D=false}}if(D){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(n.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){n(this.elem).hide()}if(this.options.hide||this.options.show){for(var H in this.options.curAnim){n.attr(this.elem.style,H,this.options.orig[H])}}}if(D){this.options.complete.call(this.elem)}return false}else{var I=F-this.startTime;this.state=I/this.options.duration;this.pos=n.easing[this.options.easing||(n.easing.swing?"swing":"linear")](this.state,I,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};n.extend(n.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(D){n.attr(D.elem.style,"opacity",D.now)},_default:function(D){if(D.elem.style&&D.elem.style[D.prop]!=null){D.elem.style[D.prop]=D.now+D.unit}else{D.elem[D.prop]=D.now}}}});if(document.documentElement.getBoundingClientRect){n.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return n.offset.bodyOffset(this[0])}var F=this[0].getBoundingClientRect(),I=this[0].ownerDocument,E=I.body,D=I.documentElement,K=D.clientTop||E.clientTop||0,J=D.clientLeft||E.clientLeft||0,H=F.top+(self.pageYOffset||n.boxModel&&D.scrollTop||E.scrollTop)-K,G=F.left+(self.pageXOffset||n.boxModel&&D.scrollLeft||E.scrollLeft)-J;return{top:H,left:G}}}else{n.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return n.offset.bodyOffset(this[0])}n.offset.initialized||n.offset.initialize();var I=this[0],F=I.offsetParent,E=I,N=I.ownerDocument,L,G=N.documentElement,J=N.body,K=N.defaultView,D=K.getComputedStyle(I,null),M=I.offsetTop,H=I.offsetLeft;while((I=I.parentNode)&&I!==J&&I!==G){L=K.getComputedStyle(I,null);M-=I.scrollTop,H-=I.scrollLeft;if(I===F){M+=I.offsetTop,H+=I.offsetLeft;if(n.offset.doesNotAddBorder&&!(n.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(I.tagName))){M+=parseInt(L.borderTopWidth,10)||0,H+=parseInt(L.borderLeftWidth,10)||0}E=F,F=I.offsetParent}if(n.offset.subtractsBorderForOverflowNotVisible&&L.overflow!=="visible"){M+=parseInt(L.borderTopWidth,10)||0,H+=parseInt(L.borderLeftWidth,10)||0}D=L}if(D.position==="relative"||D.position==="static"){M+=J.offsetTop,H+=J.offsetLeft}if(D.position==="fixed"){M+=Math.max(G.scrollTop,J.scrollTop),H+=Math.max(G.scrollLeft,J.scrollLeft)}return{top:M,left:H}}}n.offset={initialize:function(){if(this.initialized){return}var K=document.body,E=document.createElement("div"),G,F,M,H,L,D,I=K.style.marginTop,J='<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>';L={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(D in L){E.style[D]=L[D]}E.innerHTML=J;K.insertBefore(E,K.firstChild);G=E.firstChild,F=G.firstChild,H=G.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(F.offsetTop!==5);this.doesAddBorderForTableAndCells=(H.offsetTop===5);G.style.overflow="hidden",G.style.position="relative";this.subtractsBorderForOverflowNotVisible=(F.offsetTop===-5);K.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(K.offsetTop===0);K.style.marginTop=I;K.removeChild(E);this.initialized=true},bodyOffset:function(D){n.offset.initialized||n.offset.initialize();var F=D.offsetTop,E=D.offsetLeft;if(n.offset.doesNotIncludeMarginInBodyOffset){F+=parseInt(n.curCSS(D,"marginTop",true),10)||0,E+=parseInt(n.curCSS(D,"marginLeft",true),10)||0}return{top:F,left:E}}};n.fn.extend({position:function(){var H=0,G=0,E;if(this[0]){var F=this.offsetParent(),I=this.offset(),D=/^body|html$/i.test(F[0].tagName)?{top:0,left:0}:F.offset();I.top-=j(this,"marginTop");I.left-=j(this,"marginLeft");D.top+=j(F,"borderTopWidth");D.left+=j(F,"borderLeftWidth");E={top:I.top-D.top,left:I.left-D.left}}return E},offsetParent:function(){var D=this[0].offsetParent||document.body;while(D&&(!/^body|html$/i.test(D.tagName)&&n.css(D,"position")=="static")){D=D.offsetParent}return n(D)}});n.each(["Left","Top"],function(E,D){var F="scroll"+D;n.fn[F]=function(G){if(!this[0]){return null}return G!==g?this.each(function(){this==l||this==document?l.scrollTo(!E?G:n(l).scrollLeft(),E?G:n(l).scrollTop()):this[F]=G}):this[0]==l||this[0]==document?self[E?"pageYOffset":"pageXOffset"]||n.boxModel&&document.documentElement[F]||document.body[F]:this[0][F]}});n.each(["Height","Width"],function(G,E){var D=G?"Left":"Top",F=G?"Right":"Bottom";n.fn["inner"+E]=function(){return this[E.toLowerCase()]()+j(this,"padding"+D)+j(this,"padding"+F)};n.fn["outer"+E]=function(I){return this["inner"+E]()+j(this,"border"+D+"Width")+j(this,"border"+F+"Width")+(I?j(this,"margin"+D)+j(this,"margin"+F):0)};var H=E.toLowerCase();n.fn[H]=function(I){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+E]||document.body["client"+E]:this[0]==document?Math.max(document.documentElement["client"+E],document.body["scroll"+E],document.documentElement["scroll"+E],document.body["offset"+E],document.documentElement["offset"+E]):I===g?(this.length?n.css(this[0],H):null):this.css(H,typeof I==="string"?I:I+"px")}})})();/**
 * jQuery.timers - Timer abstractions for jQuery Written by Blair Mitchelmore
 * (blair DOT mitchelmore AT gmail DOT com) Licensed under the WTFPL
 * (http://sam.zoy.org/wtfpl/). Date: 2009/02/08
 * 
 * @author Blair Mitchelmore
 * @version 1.1.2
 * 
 */

jQuery.fn.extend({
			everyTime : function(interval, label, fn, times, belay) {
				return this.each(function() {
							jQuery.timer.add(this, interval, label, fn, times,
									belay);
						});
			},
			oneTime : function(interval, label, fn) {
				return this.each(function() {
							jQuery.timer.add(this, interval, label, fn, 1);
						});
			},
			stopTime : function(label, fn) {
				return this.each(function() {
							jQuery.timer.remove(this, label, fn);
						});
			}
		});

jQuery.event.special

jQuery.extend({
	timer : {
		global : [],
		guid : 1,
		dataKey : "jQuery.timer",
		regex : /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
		powers : {
			// Yeah this is major overkill...
			'ms' : 1,
			'cs' : 10,
			'ds' : 100,
			's' : 1000,
			'das' : 10000,
			'hs' : 100000,
			'ks' : 1000000
		},
		timeParse : function(value) {
			if (value == undefined || value == null)
				return null;
			var result = this.regex.exec(jQuery.trim(value.toString()));
			if (result[2]) {
				var num = parseFloat(result[1]);
				var mult = this.powers[result[2]] || 1;
				return num * mult;
			} else {
				return value;
			}
		},
		add : function(element, interval, label, fn, times, belay) {
			var counter = 0;

			if (jQuery.isFunction(label)) {
				if (!times)
					times = fn;
				fn = label;
				label = interval;
			}

			interval = jQuery.timer.timeParse(interval);

			if (typeof interval != 'number' || isNaN(interval) || interval <= 0)
				return;

			if (times && times.constructor != Number) {
				belay = !!times;
				times = 0;
			}

			times = times || 0;
			belay = belay || false;

			var timers = jQuery.data(element, this.dataKey)
					|| jQuery.data(element, this.dataKey, {});

			if (!timers[label])
				timers[label] = {};

			fn.timerID = fn.timerID || this.guid++;

			var handler = function() {
				if (belay && this.inProgress)
					return;
				this.inProgress = true;
				if ((++counter > times && times !== 0)
						|| fn.call(element, counter) === false)
					jQuery.timer.remove(element, label, fn);
				this.inProgress = false;
			};

			handler.timerID = fn.timerID;

			if (!timers[label][fn.timerID])
				timers[label][fn.timerID] = window.setInterval(handler,
						interval);

			this.global.push(element);

		},
		remove : function(element, label, fn) {
			var timers = jQuery.data(element, this.dataKey), ret;

			if (timers) {

				if (!label) {
					for (label in timers)
						this.remove(element, label, fn);
				} else if (timers[label]) {
					if (fn) {
						if (fn.timerID) {
							window.clearInterval(timers[label][fn.timerID]);
							delete timers[label][fn.timerID];
						}
					} else {
						for (var fn in timers[label]) {
							window.clearInterval(timers[label][fn]);
							delete timers[label][fn];
						}
					}

					for (ret in timers[label])
						break;
					if (!ret) {
						ret = null;
						delete timers[label];
					}
				}

				for (ret in timers)
					break;
				if (!ret)
					jQuery.removeData(element, this.dataKey);
			}
		}
	}
});

jQuery(window).bind("unload", function() {
			jQuery.each(jQuery.timer.global, function(index, item) {
						jQuery.timer.remove(item);
					});
		});/*
 * jQuery UI 1.7.2
 * 
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual licensed
 * under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
 * 
 * http://docs.jquery.com/UI
 */
jQuery.ui || (function(c) {
	var i = c.fn.remove, d = c.browser.mozilla
			&& (parseFloat(c.browser.version) < 1.9);
	c.ui = {
		version : "1.7.2",
		plugin : {
			add : function(k, l, n) {
				var m = c.ui[k].prototype;
				for (var j in n) {
					m.plugins[j] = m.plugins[j] || [];
					m.plugins[j].push([l, n[j]])
				}
			},
			call : function(j, l, k) {
				var n = j.plugins[l];
				if (!n || !j.element[0].parentNode) {
					return
				}
				for (var m = 0; m < n.length; m++) {
					if (j.options[n[m][0]]) {
						n[m][1].apply(j.element, k)
					}
				}
			}
		},
		contains : function(k, j) {
			return document.compareDocumentPosition ? k
					.compareDocumentPosition(j)
					& 16 : k !== j && k.contains(j)
		},
		hasScroll : function(m, k) {
			if (c(m).css("overflow") == "hidden") {
				return false
			}
			var j = (k && k == "left") ? "scrollLeft" : "scrollTop", l = false;
			if (m[j] > 0) {
				return true
			}
			m[j] = 1;
			l = (m[j] > 0);
			m[j] = 0;
			return l
		},
		isOverAxis : function(k, j, l) {
			return (k > j) && (k < (j + l))
		},
		isOver : function(o, k, n, m, j, l) {
			return c.ui.isOverAxis(o, n, j) && c.ui.isOverAxis(k, m, l)
		},
		keyCode : {
			BACKSPACE : 8,
			CAPS_LOCK : 20,
			COMMA : 188,
			CONTROL : 17,
			DELETE : 46,
			DOWN : 40,
			END : 35,
			ENTER : 13,
			ESCAPE : 27,
			HOME : 36,
			INSERT : 45,
			LEFT : 37,
			NUMPAD_ADD : 107,
			NUMPAD_DECIMAL : 110,
			NUMPAD_DIVIDE : 111,
			NUMPAD_ENTER : 108,
			NUMPAD_MULTIPLY : 106,
			NUMPAD_SUBTRACT : 109,
			PAGE_DOWN : 34,
			PAGE_UP : 33,
			PERIOD : 190,
			RIGHT : 39,
			SHIFT : 16,
			SPACE : 32,
			TAB : 9,
			UP : 38
		}
	};
	if (d) {
		var f = c.attr, e = c.fn.removeAttr, h = "http://www.w3.org/2005/07/aaa", a = /^aria-/, b = /^wairole:/;
		c.attr = function(k, j, l) {
			var m = l !== undefined;
			return (j == "role" ? (m ? f.call(this, k, j, "wairole:" + l) : (f
					.apply(this, arguments) || "").replace(b, "")) : (a.test(j)
					? (m ? k.setAttributeNS(h, j.replace(a, "aaa:"), l) : f
							.call(this, k, j.replace(a, "aaa:")))
					: f.apply(this, arguments)))
		};
		c.fn.removeAttr = function(j) {
			return (a.test(j) ? this.each(function() {
						this.removeAttributeNS(h, j.replace(a, ""))
					}) : e.call(this, j))
		}
	}
	c.fn.extend({
				remove : function() {
					c("*", this).add(this).each(function() {
								c(this).triggerHandler("remove")
							});
					return i.apply(this, arguments)
				},
				enableSelection : function() {
					return this.attr("unselectable", "off").css(
							"MozUserSelect", "").unbind("selectstart.ui")
				},
				disableSelection : function() {
					return this.attr("unselectable", "on").css("MozUserSelect",
							"none").bind("selectstart.ui", function() {
								return false
							})
				},
				scrollParent : function() {
					var j;
					if ((c.browser.msie && (/(static|relative)/).test(this
							.css("position")))
							|| (/absolute/).test(this.css("position"))) {
						j = this.parents().filter(function() {
							return (/(relative|absolute|fixed)/).test(c.curCSS(
									this, "position", 1))
									&& (/(auto|scroll)/).test(c.curCSS(this,
											"overflow", 1)
											+ c.curCSS(this, "overflow-y", 1)
											+ c.curCSS(this, "overflow-x", 1))
						}).eq(0)
					} else {
						j = this.parents().filter(function() {
							return (/(auto|scroll)/).test(c.curCSS(this,
									"overflow", 1)
									+ c.curCSS(this, "overflow-y", 1)
									+ c.curCSS(this, "overflow-x", 1))
						}).eq(0)
					}
					return (/fixed/).test(this.css("position")) || !j.length
							? c(document)
							: j
				}
			});
	c.extend(c.expr[":"], {
		data : function(l, k, j) {
			return !!c.data(l, j[3])
		},
		focusable : function(k) {
			var l = k.nodeName.toLowerCase(), j = c.attr(k, "tabindex");
			return (/input|select|textarea|button|object/.test(l)
					? !k.disabled
					: "a" == l || "area" == l ? k.href || !isNaN(j) : !isNaN(j))
					&& !c(k)["area" == l ? "parents" : "closest"](":hidden").length
		},
		tabbable : function(k) {
			var j = c.attr(k, "tabindex");
			return (isNaN(j) || j >= 0) && c(k).is(":focusable")
		}
	});
	function g(m, n, o, l) {
		function k(q) {
			var p = c[m][n][q] || [];
			return (typeof p == "string" ? p.split(/,?\s+/) : p)
		}
		var j = k("getter");
		if (l.length == 1 && typeof l[0] == "string") {
			j = j.concat(k("getterSetter"))
		}
		return (c.inArray(o, j) != -1)
	}
	c.widget = function(k, j) {
		var l = k.split(".")[0];
		k = k.split(".")[1];
		c.fn[k] = function(p) {
			var n = (typeof p == "string"), o = Array.prototype.slice.call(
					arguments, 1);
			if (n && p.substring(0, 1) == "_") {
				return this
			}
			if (n && g(l, k, p, o)) {
				var m = c.data(this[0], k);
				return (m ? m[p].apply(m, o) : undefined)
			}
			return this.each(function() {
						var q = c.data(this, k);
						(!q && !n && c.data(this, k, new c[l][k](this, p))
								._init());
						(q && n && c.isFunction(q[p]) && q[p].apply(q, o))
					})
		};
		c[l] = c[l] || {};
		c[l][k] = function(o, n) {
			var m = this;
			this.namespace = l;
			this.widgetName = k;
			this.widgetEventPrefix = c[l][k].eventPrefix || k;
			this.widgetBaseClass = l + "-" + k;
			this.options = c.extend({}, c.widget.defaults, c[l][k].defaults,
					c.metadata && c.metadata.get(o)[k], n);
			this.element = c(o).bind("setData." + k, function(q, p, r) {
						if (q.target == o) {
							return m._setData(p, r)
						}
					}).bind("getData." + k, function(q, p) {
						if (q.target == o) {
							return m._getData(p)
						}
					}).bind("remove", function() {
						return m.destroy()
					})
		};
		c[l][k].prototype = c.extend({}, c.widget.prototype, j);
		c[l][k].getterSetter = "option"
	};
	c.widget.prototype = {
		_init : function() {
		},
		destroy : function() {
			this.element.removeData(this.widgetName)
					.removeClass(this.widgetBaseClass + "-disabled "
							+ this.namespace + "-state-disabled")
					.removeAttr("aria-disabled")
		},
		option : function(l, m) {
			var k = l, j = this;
			if (typeof l == "string") {
				if (m === undefined) {
					return this._getData(l)
				}
				k = {};
				k[l] = m
			}
			c.each(k, function(n, o) {
						j._setData(n, o)
					})
		},
		_getData : function(j) {
			return this.options[j]
		},
		_setData : function(j, k) {
			this.options[j] = k;
			if (j == "disabled") {
				this.element[k ? "addClass" : "removeClass"](this.widgetBaseClass
						+ "-disabled " + this.namespace + "-state-disabled")
						.attr("aria-disabled", k)
			}
		},
		enable : function() {
			this._setData("disabled", false)
		},
		disable : function() {
			this._setData("disabled", true)
		},
		_trigger : function(l, m, n) {
			var p = this.options[l], j = (l == this.widgetEventPrefix
					? l
					: this.widgetEventPrefix + l);
			m = c.Event(m);
			m.type = j;
			if (m.originalEvent) {
				for (var k = c.event.props.length, o; k;) {
					o = c.event.props[--k];
					m[o] = m.originalEvent[o]
				}
			}
			this.element.trigger(m, n);
			return !(c.isFunction(p) && p.call(this.element[0], m, n) === false || m
					.isDefaultPrevented())
		}
	};
	c.widget.defaults = {
		disabled : false
	};
	c.ui.mouse = {
		_mouseInit : function() {
			var j = this;
			this.element.bind("mousedown." + this.widgetName, function(k) {
						return j._mouseDown(k)
					}).bind("click." + this.widgetName, function(k) {
						if (j._preventClickEvent) {
							j._preventClickEvent = false;
							k.stopImmediatePropagation();
							return false
						}
					});
			if (c.browser.msie) {
				this._mouseUnselectable = this.element.attr("unselectable");
				this.element.attr("unselectable", "on")
			}
			this.started = false
		},
		_mouseDestroy : function() {
			this.element.unbind("." + this.widgetName);
			(c.browser.msie && this.element.attr("unselectable",
					this._mouseUnselectable))
		},
		_mouseDown : function(l) {
			l.originalEvent = l.originalEvent || {};
			if (l.originalEvent.mouseHandled) {
				return
			}
			(this._mouseStarted && this._mouseUp(l));
			this._mouseDownEvent = l;
			var k = this, m = (l.which == 1), j = (typeof this.options.cancel == "string"
					? c(l.target).parents().add(l.target)
							.filter(this.options.cancel).length
					: false);
			if (!m || j || !this._mouseCapture(l)) {
				return true
			}
			this.mouseDelayMet = !this.options.delay;
			if (!this.mouseDelayMet) {
				this._mouseDelayTimer = setTimeout(function() {
							k.mouseDelayMet = true
						}, this.options.delay)
			}
			if (this._mouseDistanceMet(l) && this._mouseDelayMet(l)) {
				this._mouseStarted = (this._mouseStart(l) !== false);
				if (!this._mouseStarted) {
					l.preventDefault();
					return true
				}
			}
			this._mouseMoveDelegate = function(n) {
				return k._mouseMove(n)
			};
			this._mouseUpDelegate = function(n) {
				return k._mouseUp(n)
			};
			c(document).bind("mousemove." + this.widgetName,
					this._mouseMoveDelegate).bind("mouseup." + this.widgetName,
					this._mouseUpDelegate);
			(c.browser.safari || l.preventDefault());
			l.originalEvent.mouseHandled = true;
			return true
		},
		_mouseMove : function(j) {
			if (c.browser.msie && !j.button) {
				return this._mouseUp(j)
			}
			if (this._mouseStarted) {
				this._mouseDrag(j);
				return j.preventDefault()
			}
			if (this._mouseDistanceMet(j) && this._mouseDelayMet(j)) {
				this._mouseStarted = (this._mouseStart(this._mouseDownEvent, j) !== false);
				(this._mouseStarted ? this._mouseDrag(j) : this._mouseUp(j))
			}
			return !this._mouseStarted
		},
		_mouseUp : function(j) {
			c(document).unbind("mousemove." + this.widgetName,
					this._mouseMoveDelegate).unbind(
					"mouseup." + this.widgetName, this._mouseUpDelegate);
			if (this._mouseStarted) {
				this._mouseStarted = false;
				this._preventClickEvent = (j.target == this._mouseDownEvent.target);
				this._mouseStop(j)
			}
			return false
		},
		_mouseDistanceMet : function(j) {
			return (Math.max(Math.abs(this._mouseDownEvent.pageX - j.pageX),
					Math.abs(this._mouseDownEvent.pageY - j.pageY)) >= this.options.distance)
		},
		_mouseDelayMet : function(j) {
			return this.mouseDelayMet
		},
		_mouseStart : function(j) {
		},
		_mouseDrag : function(j) {
		},
		_mouseStop : function(j) {
		},
		_mouseCapture : function(j) {
			return true
		}
	};
	c.ui.mouse.defaults = {
		cancel : null,
		distance : 1,
		delay : 0
	}
})(jQuery);;/*
			 * jQuery UI Draggable 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Draggables
			 * 
			 * Depends: ui.core.js
			 */
(function(a) {
	a.widget("ui.draggable", a.extend({}, a.ui.mouse, {
		_init : function() {
			if (this.options.helper == "original"
					&& !(/^(?:r|a|f)/).test(this.element.css("position"))) {
				this.element[0].style.position = "relative"
			}
			(this.options.addClasses && this.element.addClass("ui-draggable"));
			(this.options.disabled && this.element
					.addClass("ui-draggable-disabled"));
			this._mouseInit()
		},
		destroy : function() {
			if (!this.element.data("draggable")) {
				return
			}
			this.element
					.removeData("draggable")
					.unbind(".draggable")
					.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");
			this._mouseDestroy()
		},
		_mouseCapture : function(b) {
			var c = this.options;
			if (this.helper || c.disabled
					|| a(b.target).is(".ui-resizable-handle")) {
				return false
			}
			this.handle = this._getHandle(b);
			if (!this.handle) {
				return false
			}
			return true
		},
		_mouseStart : function(b) {
			var c = this.options;
			this.helper = this._createHelper(b);
			this._cacheHelperProportions();
			if (a.ui.ddmanager) {
				a.ui.ddmanager.current = this
			}
			this._cacheMargins();
			this.cssPosition = this.helper.css("position");
			this.scrollParent = this.helper.scrollParent();
			this.offset = this.element.offset();
			this.offset = {
				top : this.offset.top - this.margins.top,
				left : this.offset.left - this.margins.left
			};
			a.extend(this.offset, {
						click : {
							left : b.pageX - this.offset.left,
							top : b.pageY - this.offset.top
						},
						parent : this._getParentOffset(),
						relative : this._getRelativeOffset()
					});
			this.originalPosition = this._generatePosition(b);
			this.originalPageX = b.pageX;
			this.originalPageY = b.pageY;
			if (c.cursorAt) {
				this._adjustOffsetFromHelper(c.cursorAt)
			}
			if (c.containment) {
				this._setContainment()
			}
			this._trigger("start", b);
			this._cacheHelperProportions();
			if (a.ui.ddmanager && !c.dropBehaviour) {
				a.ui.ddmanager.prepareOffsets(this, b)
			}
			this.helper.addClass("ui-draggable-dragging");
			this._mouseDrag(b, true);
			return true
		},
		_mouseDrag : function(b, d) {
			this.position = this._generatePosition(b);
			this.positionAbs = this._convertPositionTo("absolute");
			if (!d) {
				var c = this._uiHash();
				this._trigger("drag", b, c);
				this.position = c.position
			}
			if (!this.options.axis || this.options.axis != "y") {
				this.helper[0].style.left = this.position.left + "px"
			}
			if (!this.options.axis || this.options.axis != "x") {
				this.helper[0].style.top = this.position.top + "px"
			}
			if (a.ui.ddmanager) {
				a.ui.ddmanager.drag(this, b)
			}
			return false
		},
		_mouseStop : function(c) {
			var d = false;
			if (a.ui.ddmanager && !this.options.dropBehaviour) {
				d = a.ui.ddmanager.drop(this, c)
			}
			if (this.dropped) {
				d = this.dropped;
				this.dropped = false
			}
			if ((this.options.revert == "invalid" && !d)
					|| (this.options.revert == "valid" && d)
					|| this.options.revert === true
					|| (a.isFunction(this.options.revert) && this.options.revert
							.call(this.element, d))) {
				var b = this;
				a(this.helper).animate(this.originalPosition,
						parseInt(this.options.revertDuration, 10), function() {
							b._trigger("stop", c);
							b._clear()
						})
			} else {
				this._trigger("stop", c);
				this._clear()
			}
			return false
		},
		_getHandle : function(b) {
			var c = !this.options.handle
					|| !a(this.options.handle, this.element).length
					? true
					: false;
			a(this.options.handle, this.element).find("*").andSelf().each(
					function() {
						if (this == b.target) {
							c = true
						}
					});
			return c
		},
		_createHelper : function(c) {
			var d = this.options;
			var b = a.isFunction(d.helper) ? a(d.helper.apply(this.element[0],
					[c])) : (d.helper == "clone"
					? this.element.clone()
					: this.element);
			if (!b.parents("body").length) {
				b.appendTo((d.appendTo == "parent"
						? this.element[0].parentNode
						: d.appendTo))
			}
			if (b[0] != this.element[0]
					&& !(/(fixed|absolute)/).test(b.css("position"))) {
				b.css("position", "absolute")
			}
			return b
		},
		_adjustOffsetFromHelper : function(b) {
			if (b.left != undefined) {
				this.offset.click.left = b.left + this.margins.left
			}
			if (b.right != undefined) {
				this.offset.click.left = this.helperProportions.width - b.right
						+ this.margins.left
			}
			if (b.top != undefined) {
				this.offset.click.top = b.top + this.margins.top
			}
			if (b.bottom != undefined) {
				this.offset.click.top = this.helperProportions.height
						- b.bottom + this.margins.top
			}
		},
		_getParentOffset : function() {
			this.offsetParent = this.helper.offsetParent();
			var b = this.offsetParent.offset();
			if (this.cssPosition == "absolute"
					&& this.scrollParent[0] != document
					&& a.ui
							.contains(this.scrollParent[0],
									this.offsetParent[0])) {
				b.left += this.scrollParent.scrollLeft();
				b.top += this.scrollParent.scrollTop()
			}
			if ((this.offsetParent[0] == document.body)
					|| (this.offsetParent[0].tagName
							&& this.offsetParent[0].tagName.toLowerCase() == "html" && a.browser.msie)) {
				b = {
					top : 0,
					left : 0
				}
			}
			return {
				top : b.top
						+ (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
				left : b.left
						+ (parseInt(this.offsetParent.css("borderLeftWidth"),
								10) || 0)
			}
		},
		_getRelativeOffset : function() {
			if (this.cssPosition == "relative") {
				var b = this.element.position();
				return {
					top : b.top - (parseInt(this.helper.css("top"), 10) || 0)
							+ this.scrollParent.scrollTop(),
					left : b.left
							- (parseInt(this.helper.css("left"), 10) || 0)
							+ this.scrollParent.scrollLeft()
				}
			} else {
				return {
					top : 0,
					left : 0
				}
			}
		},
		_cacheMargins : function() {
			this.margins = {
				left : (parseInt(this.element.css("marginLeft"), 10) || 0),
				top : (parseInt(this.element.css("marginTop"), 10) || 0)
			}
		},
		_cacheHelperProportions : function() {
			this.helperProportions = {
				width : this.helper.outerWidth(),
				height : this.helper.outerHeight()
			}
		},
		_setContainment : function() {
			var e = this.options;
			if (e.containment == "parent") {
				e.containment = this.helper[0].parentNode
			}
			if (e.containment == "document" || e.containment == "window") {
				this.containment = [
						0 - this.offset.relative.left - this.offset.parent.left,
						0 - this.offset.relative.top - this.offset.parent.top,
						a(e.containment == "document" ? document : window)
								.width()
								- this.helperProportions.width
								- this.margins.left,
						(a(e.containment == "document" ? document : window)
								.height() || document.body.parentNode.scrollHeight)
								- this.helperProportions.height
								- this.margins.top]
			}
			if (!(/^(document|window|parent)$/).test(e.containment)
					&& e.containment.constructor != Array) {
				var c = a(e.containment)[0];
				if (!c) {
					return
				}
				var d = a(e.containment).offset();
				var b = (a(c).css("overflow") != "hidden");
				this.containment = [
						d.left
								+ (parseInt(a(c).css("borderLeftWidth"), 10) || 0)
								+ (parseInt(a(c).css("paddingLeft"), 10) || 0)
								- this.margins.left,
						d.top + (parseInt(a(c).css("borderTopWidth"), 10) || 0)
								+ (parseInt(a(c).css("paddingTop"), 10) || 0)
								- this.margins.top,
						d.left
								+ (b
										? Math
												.max(c.scrollWidth,
														c.offsetWidth)
										: c.offsetWidth)
								- (parseInt(a(c).css("borderLeftWidth"), 10) || 0)
								- (parseInt(a(c).css("paddingRight"), 10) || 0)
								- this.helperProportions.width
								- this.margins.left,
						d.top
								+ (b
										? Math.max(c.scrollHeight,
												c.offsetHeight)
										: c.offsetHeight)
								- (parseInt(a(c).css("borderTopWidth"), 10) || 0)
								- (parseInt(a(c).css("paddingBottom"), 10) || 0)
								- this.helperProportions.height
								- this.margins.top]
			} else {
				if (e.containment.constructor == Array) {
					this.containment = e.containment
				}
			}
		},
		_convertPositionTo : function(f, h) {
			if (!h) {
				h = this.position
			}
			var c = f == "absolute" ? 1 : -1;
			var e = this.options, b = this.cssPosition == "absolute"
					&& !(this.scrollParent[0] != document && a.ui.contains(
							this.scrollParent[0], this.offsetParent[0]))
					? this.offsetParent
					: this.scrollParent, g = (/(html|body)/i)
					.test(b[0].tagName);
			return {
				top : (h.top + this.offset.relative.top * c
						+ this.offset.parent.top * c - (a.browser.safari
						&& this.cssPosition == "fixed"
						? 0
						: (this.cssPosition == "fixed" ? -this.scrollParent
								.scrollTop() : (g ? 0 : b.scrollTop()))
								* c)),
				left : (h.left + this.offset.relative.left * c
						+ this.offset.parent.left * c - (a.browser.safari
						&& this.cssPosition == "fixed"
						? 0
						: (this.cssPosition == "fixed" ? -this.scrollParent
								.scrollLeft() : g ? 0 : b.scrollLeft())
								* c))
			}
		},
		_generatePosition : function(e) {
			var h = this.options, b = this.cssPosition == "absolute"
					&& !(this.scrollParent[0] != document && a.ui.contains(
							this.scrollParent[0], this.offsetParent[0]))
					? this.offsetParent
					: this.scrollParent, i = (/(html|body)/i)
					.test(b[0].tagName);
			if (this.cssPosition == "relative"
					&& !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {
				this.offset.relative = this._getRelativeOffset()
			}
			var d = e.pageX;
			var c = e.pageY;
			if (this.originalPosition) {
				if (this.containment) {
					if (e.pageX - this.offset.click.left < this.containment[0]) {
						d = this.containment[0] + this.offset.click.left
					}
					if (e.pageY - this.offset.click.top < this.containment[1]) {
						c = this.containment[1] + this.offset.click.top
					}
					if (e.pageX - this.offset.click.left > this.containment[2]) {
						d = this.containment[2] + this.offset.click.left
					}
					if (e.pageY - this.offset.click.top > this.containment[3]) {
						c = this.containment[3] + this.offset.click.top
					}
				}
				if (h.grid) {
					var g = this.originalPageY
							+ Math.round((c - this.originalPageY) / h.grid[1])
							* h.grid[1];
					c = this.containment
							? (!(g - this.offset.click.top < this.containment[1] || g
									- this.offset.click.top > this.containment[3])
									? g
									: (!(g - this.offset.click.top < this.containment[1])
											? g - h.grid[1]
											: g + h.grid[1]))
							: g;
					var f = this.originalPageX
							+ Math.round((d - this.originalPageX) / h.grid[0])
							* h.grid[0];
					d = this.containment
							? (!(f - this.offset.click.left < this.containment[0] || f
									- this.offset.click.left > this.containment[2])
									? f
									: (!(f - this.offset.click.left < this.containment[0])
											? f - h.grid[0]
											: f + h.grid[0]))
							: f
				}
			}
			return {
				top : (c - this.offset.click.top - this.offset.relative.top
						- this.offset.parent.top + (a.browser.safari
						&& this.cssPosition == "fixed"
						? 0
						: (this.cssPosition == "fixed" ? -this.scrollParent
								.scrollTop() : (i ? 0 : b.scrollTop())))),
				left : (d - this.offset.click.left - this.offset.relative.left
						- this.offset.parent.left + (a.browser.safari
						&& this.cssPosition == "fixed"
						? 0
						: (this.cssPosition == "fixed" ? -this.scrollParent
								.scrollLeft() : i ? 0 : b.scrollLeft())))
			}
		},
		_clear : function() {
			this.helper.removeClass("ui-draggable-dragging");
			if (this.helper[0] != this.element[0] && !this.cancelHelperRemoval) {
				this.helper.remove()
			}
			this.helper = null;
			this.cancelHelperRemoval = false
		},
		_trigger : function(b, c, d) {
			d = d || this._uiHash();
			a.ui.plugin.call(this, b, [c, d]);
			if (b == "drag") {
				this.positionAbs = this._convertPositionTo("absolute")
			}
			return a.widget.prototype._trigger.call(this, b, c, d)
		},
		plugins : {},
		_uiHash : function(b) {
			return {
				helper : this.helper,
				position : this.position,
				absolutePosition : this.positionAbs,
				offset : this.positionAbs
			}
		}
	}));
	a.extend(a.ui.draggable, {
				version : "1.7.2",
				eventPrefix : "drag",
				defaults : {
					addClasses : true,
					appendTo : "parent",
					axis : false,
					cancel : ":input,option",
					connectToSortable : false,
					containment : false,
					cursor : "auto",
					cursorAt : false,
					delay : 0,
					distance : 1,
					grid : false,
					handle : false,
					helper : "original",
					iframeFix : false,
					opacity : false,
					refreshPositions : false,
					revert : false,
					revertDuration : 500,
					scope : "default",
					scroll : true,
					scrollSensitivity : 20,
					scrollSpeed : 20,
					snap : false,
					snapMode : "both",
					snapTolerance : 20,
					stack : false,
					zIndex : false
				}
			});
	a.ui.plugin.add("draggable", "connectToSortable", {
		start : function(c, e) {
			var d = a(this).data("draggable"), f = d.options, b = a.extend({},
					e, {
						item : d.element
					});
			d.sortables = [];
			a(f.connectToSortable).each(function() {
						var g = a.data(this, "sortable");
						if (g && !g.options.disabled) {
							d.sortables.push({
										instance : g,
										shouldRevert : g.options.revert
									});
							g._refreshItems();
							g._trigger("activate", c, b)
						}
					})
		},
		stop : function(c, e) {
			var d = a(this).data("draggable"), b = a.extend({}, e, {
						item : d.element
					});
			a.each(d.sortables, function() {
				if (this.instance.isOver) {
					this.instance.isOver = 0;
					d.cancelHelperRemoval = true;
					this.instance.cancelHelperRemoval = false;
					if (this.shouldRevert) {
						this.instance.options.revert = true
					}
					this.instance._mouseStop(c);
					this.instance.options.helper = this.instance.options._helper;
					if (d.options.helper == "original") {
						this.instance.currentItem.css({
									top : "auto",
									left : "auto"
								})
					}
				} else {
					this.instance.cancelHelperRemoval = false;
					this.instance._trigger("deactivate", c, b)
				}
			})
		},
		drag : function(c, f) {
			var e = a(this).data("draggable"), b = this;
			var d = function(i) {
				var n = this.offset.click.top, m = this.offset.click.left;
				var g = this.positionAbs.top, k = this.positionAbs.left;
				var j = i.height, l = i.width;
				var p = i.top, h = i.left;
				return a.ui.isOver(g + n, k + m, p, h, j, l)
			};
			a.each(e.sortables, function(g) {
				this.instance.positionAbs = e.positionAbs;
				this.instance.helperProportions = e.helperProportions;
				this.instance.offset.click = e.offset.click;
				if (this.instance._intersectsWith(this.instance.containerCache)) {
					if (!this.instance.isOver) {
						this.instance.isOver = 1;
						this.instance.currentItem = a(b).clone()
								.appendTo(this.instance.element).data(
										"sortable-item", true);
						this.instance.options._helper = this.instance.options.helper;
						this.instance.options.helper = function() {
							return f.helper[0]
						};
						c.target = this.instance.currentItem[0];
						this.instance._mouseCapture(c, true);
						this.instance._mouseStart(c, true, true);
						this.instance.offset.click.top = e.offset.click.top;
						this.instance.offset.click.left = e.offset.click.left;
						this.instance.offset.parent.left -= e.offset.parent.left
								- this.instance.offset.parent.left;
						this.instance.offset.parent.top -= e.offset.parent.top
								- this.instance.offset.parent.top;
						e._trigger("toSortable", c);
						e.dropped = this.instance.element;
						e.currentItem = e.element;
						this.instance.fromOutside = e
					}
					if (this.instance.currentItem) {
						this.instance._mouseDrag(c)
					}
				} else {
					if (this.instance.isOver) {
						this.instance.isOver = 0;
						this.instance.cancelHelperRemoval = true;
						this.instance.options.revert = false;
						this.instance._trigger("out", c, this.instance
										._uiHash(this.instance));
						this.instance._mouseStop(c, true);
						this.instance.options.helper = this.instance.options._helper;
						this.instance.currentItem.remove();
						if (this.instance.placeholder) {
							this.instance.placeholder.remove()
						}
						e._trigger("fromSortable", c);
						e.dropped = false
					}
				}
			})
		}
	});
	a.ui.plugin.add("draggable", "cursor", {
				start : function(c, d) {
					var b = a("body"), e = a(this).data("draggable").options;
					if (b.css("cursor")) {
						e._cursor = b.css("cursor")
					}
					b.css("cursor", e.cursor)
				},
				stop : function(b, c) {
					var d = a(this).data("draggable").options;
					if (d._cursor) {
						a("body").css("cursor", d._cursor)
					}
				}
			});
	a.ui.plugin.add("draggable", "iframeFix", {
		start : function(b, c) {
			var d = a(this).data("draggable").options;
			a(d.iframeFix === true ? "iframe" : d.iframeFix).each(function() {
				a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
						.css({
									width : this.offsetWidth + "px",
									height : this.offsetHeight + "px",
									position : "absolute",
									opacity : "0.001",
									zIndex : 1000
								}).css(a(this).offset()).appendTo("body")
			})
		},
		stop : function(b, c) {
			a("div.ui-draggable-iframeFix").each(function() {
						this.parentNode.removeChild(this)
					})
		}
	});
	a.ui.plugin.add("draggable", "opacity", {
				start : function(c, d) {
					var b = a(d.helper), e = a(this).data("draggable").options;
					if (b.css("opacity")) {
						e._opacity = b.css("opacity")
					}
					b.css("opacity", e.opacity)
				},
				stop : function(b, c) {
					var d = a(this).data("draggable").options;
					if (d._opacity) {
						a(c.helper).css("opacity", d._opacity)
					}
				}
			});
	a.ui.plugin.add("draggable", "scroll", {
		start : function(c, d) {
			var b = a(this).data("draggable");
			if (b.scrollParent[0] != document
					&& b.scrollParent[0].tagName != "HTML") {
				b.overflowOffset = b.scrollParent.offset()
			}
		},
		drag : function(d, e) {
			var c = a(this).data("draggable"), f = c.options, b = false;
			if (c.scrollParent[0] != document
					&& c.scrollParent[0].tagName != "HTML") {
				if (!f.axis || f.axis != "x") {
					if ((c.overflowOffset.top + c.scrollParent[0].offsetHeight)
							- d.pageY < f.scrollSensitivity) {
						c.scrollParent[0].scrollTop = b = c.scrollParent[0].scrollTop
								+ f.scrollSpeed
					} else {
						if (d.pageY - c.overflowOffset.top < f.scrollSensitivity) {
							c.scrollParent[0].scrollTop = b = c.scrollParent[0].scrollTop
									- f.scrollSpeed
						}
					}
				}
				if (!f.axis || f.axis != "y") {
					if ((c.overflowOffset.left + c.scrollParent[0].offsetWidth)
							- d.pageX < f.scrollSensitivity) {
						c.scrollParent[0].scrollLeft = b = c.scrollParent[0].scrollLeft
								+ f.scrollSpeed
					} else {
						if (d.pageX - c.overflowOffset.left < f.scrollSensitivity) {
							c.scrollParent[0].scrollLeft = b = c.scrollParent[0].scrollLeft
									- f.scrollSpeed
						}
					}
				}
			} else {
				if (!f.axis || f.axis != "x") {
					if (d.pageY - a(document).scrollTop() < f.scrollSensitivity) {
						b = a(document).scrollTop(a(document).scrollTop()
								- f.scrollSpeed)
					} else {
						if (a(window).height()
								- (d.pageY - a(document).scrollTop()) < f.scrollSensitivity) {
							b = a(document).scrollTop(a(document).scrollTop()
									+ f.scrollSpeed)
						}
					}
				}
				if (!f.axis || f.axis != "y") {
					if (d.pageX - a(document).scrollLeft() < f.scrollSensitivity) {
						b = a(document).scrollLeft(a(document).scrollLeft()
								- f.scrollSpeed)
					} else {
						if (a(window).width()
								- (d.pageX - a(document).scrollLeft()) < f.scrollSensitivity) {
							b = a(document).scrollLeft(a(document).scrollLeft()
									+ f.scrollSpeed)
						}
					}
				}
			}
			if (b !== false && a.ui.ddmanager && !f.dropBehaviour) {
				a.ui.ddmanager.prepareOffsets(c, d)
			}
		}
	});
	a.ui.plugin.add("draggable", "snap", {
		start : function(c, d) {
			var b = a(this).data("draggable"), e = b.options;
			b.snapElements = [];
			a(e.snap.constructor != String
					? (e.snap.items || ":data(draggable)")
					: e.snap).each(function() {
						var g = a(this);
						var f = g.offset();
						if (this != b.element[0]) {
							b.snapElements.push({
										item : this,
										width : g.outerWidth(),
										height : g.outerHeight(),
										top : f.top,
										left : f.left
									})
						}
					})
		},
		drag : function(u, p) {
			var g = a(this).data("draggable"), q = g.options;
			var y = q.snapTolerance;
			var x = p.offset.left, w = x + g.helperProportions.width, f = p.offset.top, e = f
					+ g.helperProportions.height;
			for (var v = g.snapElements.length - 1; v >= 0; v--) {
				var s = g.snapElements[v].left, n = s + g.snapElements[v].width, m = g.snapElements[v].top, A = m
						+ g.snapElements[v].height;
				if (!((s - y < x && x < n + y && m - y < f && f < A + y)
						|| (s - y < x && x < n + y && m - y < e && e < A + y)
						|| (s - y < w && w < n + y && m - y < f && f < A + y) || (s
						- y < w
						&& w < n + y && m - y < e && e < A + y))) {
					if (g.snapElements[v].snapping) {
						(g.options.snap.release && g.options.snap.release.call(
								g.element, u, a.extend(g._uiHash(), {
											snapItem : g.snapElements[v].item
										})))
					}
					g.snapElements[v].snapping = false;
					continue
				}
				if (q.snapMode != "inner") {
					var c = Math.abs(m - e) <= y;
					var z = Math.abs(A - f) <= y;
					var j = Math.abs(s - w) <= y;
					var k = Math.abs(n - x) <= y;
					if (c) {
						p.position.top = g._convertPositionTo("relative", {
									top : m - g.helperProportions.height,
									left : 0
								}).top - g.margins.top
					}
					if (z) {
						p.position.top = g._convertPositionTo("relative", {
									top : A,
									left : 0
								}).top - g.margins.top
					}
					if (j) {
						p.position.left = g._convertPositionTo("relative", {
									top : 0,
									left : s - g.helperProportions.width
								}).left - g.margins.left
					}
					if (k) {
						p.position.left = g._convertPositionTo("relative", {
									top : 0,
									left : n
								}).left - g.margins.left
					}
				}
				var h = (c || z || j || k);
				if (q.snapMode != "outer") {
					var c = Math.abs(m - f) <= y;
					var z = Math.abs(A - e) <= y;
					var j = Math.abs(s - x) <= y;
					var k = Math.abs(n - w) <= y;
					if (c) {
						p.position.top = g._convertPositionTo("relative", {
									top : m,
									left : 0
								}).top - g.margins.top
					}
					if (z) {
						p.position.top = g._convertPositionTo("relative", {
									top : A - g.helperProportions.height,
									left : 0
								}).top - g.margins.top
					}
					if (j) {
						p.position.left = g._convertPositionTo("relative", {
									top : 0,
									left : s
								}).left - g.margins.left
					}
					if (k) {
						p.position.left = g._convertPositionTo("relative", {
									top : 0,
									left : n - g.helperProportions.width
								}).left - g.margins.left
					}
				}
				if (!g.snapElements[v].snapping && (c || z || j || k || h)) {
					(g.options.snap.snap && g.options.snap.snap.call(g.element,
							u, a.extend(g._uiHash(), {
										snapItem : g.snapElements[v].item
									})))
				}
				g.snapElements[v].snapping = (c || z || j || k || h)
			}
		}
	});
	a.ui.plugin.add("draggable", "stack", {
				start : function(b, c) {
					var e = a(this).data("draggable").options;
					var d = a.makeArray(a(e.stack.group)).sort(function(g, f) {
						return (parseInt(a(g).css("zIndex"), 10) || e.stack.min)
								- (parseInt(a(f).css("zIndex"), 10) || e.stack.min)
					});
					a(d).each(function(f) {
								this.style.zIndex = e.stack.min + f
							});
					this[0].style.zIndex = e.stack.min + d.length
				}
			});
	a.ui.plugin.add("draggable", "zIndex", {
				start : function(c, d) {
					var b = a(d.helper), e = a(this).data("draggable").options;
					if (b.css("zIndex")) {
						e._zIndex = b.css("zIndex")
					}
					b.css("zIndex", e.zIndex)
				},
				stop : function(b, c) {
					var d = a(this).data("draggable").options;
					if (d._zIndex) {
						a(c.helper).css("zIndex", d._zIndex)
					}
				}
			})
})(jQuery);;/*
			 * jQuery UI Droppable 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Droppables
			 * 
			 * Depends: ui.core.js ui.draggable.js
			 */
(function(a) {
	a.widget("ui.droppable", {
		_init : function() {
			var c = this.options, b = c.accept;
			this.isover = 0;
			this.isout = 1;
			this.options.accept = this.options.accept
					&& a.isFunction(this.options.accept)
					? this.options.accept
					: function(e) {
						return e.is(b)
					};
			this.proportions = {
				width : this.element[0].offsetWidth,
				height : this.element[0].offsetHeight
			};
			a.ui.ddmanager.droppables[this.options.scope] = a.ui.ddmanager.droppables[this.options.scope]
					|| [];
			a.ui.ddmanager.droppables[this.options.scope].push(this);
			(this.options.addClasses && this.element.addClass("ui-droppable"))
		},
		destroy : function() {
			var b = a.ui.ddmanager.droppables[this.options.scope];
			for (var c = 0; c < b.length; c++) {
				if (b[c] == this) {
					b.splice(c, 1)
				}
			}
			this.element.removeClass("ui-droppable ui-droppable-disabled")
					.removeData("droppable").unbind(".droppable")
		},
		_setData : function(b, c) {
			if (b == "accept") {
				this.options.accept = c && a.isFunction(c) ? c : function(e) {
					return e.is(c)
				}
			} else {
				a.widget.prototype._setData.apply(this, arguments)
			}
		},
		_activate : function(c) {
			var b = a.ui.ddmanager.current;
			if (this.options.activeClass) {
				this.element.addClass(this.options.activeClass)
			}
			(b && this._trigger("activate", c, this.ui(b)))
		},
		_deactivate : function(c) {
			var b = a.ui.ddmanager.current;
			if (this.options.activeClass) {
				this.element.removeClass(this.options.activeClass)
			}
			(b && this._trigger("deactivate", c, this.ui(b)))
		},
		_over : function(c) {
			var b = a.ui.ddmanager.current;
			if (!b || (b.currentItem || b.element)[0] == this.element[0]) {
				return
			}
			if (this.options.accept.call(this.element[0],
					(b.currentItem || b.element))) {
				if (this.options.hoverClass) {
					this.element.addClass(this.options.hoverClass)
				}
				this._trigger("over", c, this.ui(b))
			}
		},
		_out : function(c) {
			var b = a.ui.ddmanager.current;
			if (!b || (b.currentItem || b.element)[0] == this.element[0]) {
				return
			}
			if (this.options.accept.call(this.element[0],
					(b.currentItem || b.element))) {
				if (this.options.hoverClass) {
					this.element.removeClass(this.options.hoverClass)
				}
				this._trigger("out", c, this.ui(b))
			}
		},
		_drop : function(c, d) {
			var b = d || a.ui.ddmanager.current;
			if (!b || (b.currentItem || b.element)[0] == this.element[0]) {
				return false
			}
			var e = false;
			this.element.find(":data(droppable)").not(".ui-draggable-dragging")
					.each(function() {
								var f = a.data(this, "droppable");
								if (f.options.greedy
										&& a.ui
												.intersect(
														b,
														a.extend(f, {
																	offset : f.element
																			.offset()
																}),
														f.options.tolerance)) {
									e = true;
									return false
								}
							});
			if (e) {
				return false
			}
			if (this.options.accept.call(this.element[0],
					(b.currentItem || b.element))) {
				if (this.options.activeClass) {
					this.element.removeClass(this.options.activeClass)
				}
				if (this.options.hoverClass) {
					this.element.removeClass(this.options.hoverClass)
				}
				this._trigger("drop", c, this.ui(b));
				return this.element
			}
			return false
		},
		ui : function(b) {
			return {
				draggable : (b.currentItem || b.element),
				helper : b.helper,
				position : b.position,
				absolutePosition : b.positionAbs,
				offset : b.positionAbs
			}
		}
	});
	a.extend(a.ui.droppable, {
				version : "1.7.2",
				eventPrefix : "drop",
				defaults : {
					accept : "*",
					activeClass : false,
					addClasses : true,
					greedy : false,
					hoverClass : false,
					scope : "default",
					tolerance : "intersect"
				}
			});
	a.ui.intersect = function(q, j, o) {
		if (!j.offset) {
			return false
		}
		var e = (q.positionAbs || q.position.absolute).left, d = e
				+ q.helperProportions.width, n = (q.positionAbs || q.position.absolute).top, m = n
				+ q.helperProportions.height;
		var g = j.offset.left, c = g + j.proportions.width, p = j.offset.top, k = p
				+ j.proportions.height;
		switch (o) {
			case "fit" :
				return (g < e && d < c && p < n && m < k);
				break;
			case "intersect" :
				return (g < e + (q.helperProportions.width / 2)
						&& d - (q.helperProportions.width / 2) < c
						&& p < n + (q.helperProportions.height / 2) && m
						- (q.helperProportions.height / 2) < k);
				break;
			case "pointer" :
				var h = ((q.positionAbs || q.position.absolute).left + (q.clickOffset || q.offset.click).left), i = ((q.positionAbs || q.position.absolute).top + (q.clickOffset || q.offset.click).top), f = a.ui
						.isOver(i, h, p, g, j.proportions.height,
								j.proportions.width);
				return f;
				break;
			case "touch" :
				return ((n >= p && n <= k) || (m >= p && m <= k) || (n < p && m > k))
						&& ((e >= g && e <= c) || (d >= g && d <= c) || (e < g && d > c));
				break;
			default :
				return false;
				break
		}
	};
	a.ui.ddmanager = {
		current : null,
		droppables : {
			"default" : []
		},
		prepareOffsets : function(e, g) {
			var b = a.ui.ddmanager.droppables[e.options.scope];
			var f = g ? g.type : null;
			var h = (e.currentItem || e.element).find(":data(droppable)")
					.andSelf();
			droppablesLoop : for (var d = 0; d < b.length; d++) {
				if (b[d].options.disabled
						|| (e && !b[d].options.accept.call(b[d].element[0],
								(e.currentItem || e.element)))) {
					continue
				}
				for (var c = 0; c < h.length; c++) {
					if (h[c] == b[d].element[0]) {
						b[d].proportions.height = 0;
						continue droppablesLoop
					}
				}
				b[d].visible = b[d].element.css("display") != "none";
				if (!b[d].visible) {
					continue
				}
				b[d].offset = b[d].element.offset();
				b[d].proportions = {
					width : b[d].element[0].offsetWidth,
					height : b[d].element[0].offsetHeight
				};
				if (f == "mousedown") {
					b[d]._activate.call(b[d], g)
				}
			}
		},
		drop : function(b, c) {
			var d = false;
			a.each(a.ui.ddmanager.droppables[b.options.scope], function() {
						if (!this.options) {
							return
						}
						if (!this.options.disabled
								&& this.visible
								&& a.ui.intersect(b, this,
										this.options.tolerance)) {
							d = this._drop.call(this, c)
						}
						if (!this.options.disabled
								&& this.visible
								&& this.options.accept.call(this.element[0],
										(b.currentItem || b.element))) {
							this.isout = 1;
							this.isover = 0;
							this._deactivate.call(this, c)
						}
					});
			return d
		},
		drag : function(b, c) {
			if (b.options.refreshPositions) {
				a.ui.ddmanager.prepareOffsets(b, c)
			}
			a.each(a.ui.ddmanager.droppables[b.options.scope], function() {
				if (this.options.disabled || this.greedyChild || !this.visible) {
					return
				}
				var e = a.ui.intersect(b, this, this.options.tolerance);
				var g = !e && this.isover == 1 ? "isout" : (e
						&& this.isover == 0 ? "isover" : null);
				if (!g) {
					return
				}
				var f;
				if (this.options.greedy) {
					var d = this.element.parents(":data(droppable):eq(0)");
					if (d.length) {
						f = a.data(d[0], "droppable");
						f.greedyChild = (g == "isover" ? 1 : 0)
					}
				}
				if (f && g == "isover") {
					f.isover = 0;
					f.isout = 1;
					f._out.call(f, c)
				}
				this[g] = 1;
				this[g == "isout" ? "isover" : "isout"] = 0;
				this[g == "isover" ? "_over" : "_out"].call(this, c);
				if (f && g == "isout") {
					f.isout = 0;
					f.isover = 1;
					f._over.call(f, c)
				}
			})
		}
	}
})(jQuery);;/*
			 * jQuery UI Resizable 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Resizables
			 * 
			 * Depends: ui.core.js
			 */
(function(c) {
	c.widget("ui.resizable", c.extend({}, c.ui.mouse, {
		_init : function() {
			var e = this, j = this.options;
			this.element.addClass("ui-resizable");
			c.extend(this, {
						_aspectRatio : !!(j.aspectRatio),
						aspectRatio : j.aspectRatio,
						originalElement : this.element,
						_proportionallyResizeElements : [],
						_helper : j.helper || j.ghost || j.animate ? j.helper
								|| "ui-resizable-helper" : null
					});
			if (this.element[0].nodeName
					.match(/canvas|textarea|input|select|button|img/i)) {
				if (/relative/.test(this.element.css("position"))
						&& c.browser.opera) {
					this.element.css({
								position : "relative",
								top : "auto",
								left : "auto"
							})
				}
				this.element
						.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>')
								.css({
											position : this.element
													.css("position"),
											width : this.element.outerWidth(),
											height : this.element.outerHeight(),
											top : this.element.css("top"),
											left : this.element.css("left")
										}));
				this.element = this.element.parent().data("resizable",
						this.element.data("resizable"));
				this.elementIsWrapper = true;
				this.element.css({
							marginLeft : this.originalElement.css("marginLeft"),
							marginTop : this.originalElement.css("marginTop"),
							marginRight : this.originalElement
									.css("marginRight"),
							marginBottom : this.originalElement
									.css("marginBottom")
						});
				this.originalElement.css({
							marginLeft : 0,
							marginTop : 0,
							marginRight : 0,
							marginBottom : 0
						});
				this.originalResizeStyle = this.originalElement.css("resize");
				this.originalElement.css("resize", "none");
				this._proportionallyResizeElements.push(this.originalElement
						.css({
									position : "static",
									zoom : 1,
									display : "block"
								}));
				this.originalElement.css({
							margin : this.originalElement.css("margin")
						});
				this._proportionallyResize()
			}
			this.handles = j.handles
					|| (!c(".ui-resizable-handle", this.element).length
							? "e,s,se"
							: {
								n : ".ui-resizable-n",
								e : ".ui-resizable-e",
								s : ".ui-resizable-s",
								w : ".ui-resizable-w",
								se : ".ui-resizable-se",
								sw : ".ui-resizable-sw",
								ne : ".ui-resizable-ne",
								nw : ".ui-resizable-nw"
							});
			if (this.handles.constructor == String) {
				if (this.handles == "all") {
					this.handles = "n,e,s,w,se,sw,ne,nw"
				}
				var k = this.handles.split(",");
				this.handles = {};
				for (var f = 0; f < k.length; f++) {
					var h = c.trim(k[f]), d = "ui-resizable-" + h;
					var g = c('<div class="ui-resizable-handle ' + d
							+ '"></div>');
					if (/sw|se|ne|nw/.test(h)) {
						g.css({
									zIndex : ++j.zIndex
								})
					}
					if ("se" == h) {
						g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")
					}
					this.handles[h] = ".ui-resizable-" + h;
					this.element.append(g)
				}
			}
			this._renderAxis = function(p) {
				p = p || this.element;
				for (var m in this.handles) {
					if (this.handles[m].constructor == String) {
						this.handles[m] = c(this.handles[m], this.element)
								.show()
					}
					if (this.elementIsWrapper
							&& this.originalElement[0].nodeName
									.match(/textarea|input|select|button/i)) {
						var n = c(this.handles[m], this.element), o = 0;
						o = /sw|ne|nw|se|n|s/.test(m) ? n.outerHeight() : n
								.outerWidth();
						var l = [
								"padding",
								/ne|nw|n/.test(m) ? "Top" : /se|sw|s/.test(m)
										? "Bottom"
										: /^e$/.test(m) ? "Right" : "Left"]
								.join("");
						p.css(l, o);
						this._proportionallyResize()
					}
					if (!c(this.handles[m]).length) {
						continue
					}
				}
			};
			this._renderAxis(this.element);
			this._handles = c(".ui-resizable-handle", this.element)
					.disableSelection();
			this._handles.mouseover(function() {
						if (!e.resizing) {
							if (this.className) {
								var i = this.className
										.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)
							}
							e.axis = i && i[1] ? i[1] : "se"
						}
					});
			if (j.autoHide) {
				this._handles.hide();
				c(this.element).addClass("ui-resizable-autohide").hover(
						function() {
							c(this).removeClass("ui-resizable-autohide");
							e._handles.show()
						}, function() {
							if (!e.resizing) {
								c(this).addClass("ui-resizable-autohide");
								e._handles.hide()
							}
						})
			}
			this._mouseInit()
		},
		destroy : function() {
			this._mouseDestroy();
			var d = function(f) {
				c(f)
						.removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
						.removeData("resizable").unbind(".resizable")
						.find(".ui-resizable-handle").remove()
			};
			if (this.elementIsWrapper) {
				d(this.element);
				var e = this.element;
				e.parent().append(this.originalElement.css({
							position : e.css("position"),
							width : e.outerWidth(),
							height : e.outerHeight(),
							top : e.css("top"),
							left : e.css("left")
						})).end().remove()
			}
			this.originalElement.css("resize", this.originalResizeStyle);
			d(this.originalElement)
		},
		_mouseCapture : function(e) {
			var f = false;
			for (var d in this.handles) {
				if (c(this.handles[d])[0] == e.target) {
					f = true
				}
			}
			return this.options.disabled || !!f
		},
		_mouseStart : function(f) {
			var i = this.options, e = this.element.position(), d = this.element;
			this.resizing = true;
			this.documentScroll = {
				top : c(document).scrollTop(),
				left : c(document).scrollLeft()
			};
			if (d.is(".ui-draggable") || (/absolute/).test(d.css("position"))) {
				d.css({
							position : "absolute",
							top : e.top,
							left : e.left
						})
			}
			if (c.browser.opera && (/relative/).test(d.css("position"))) {
				d.css({
							position : "relative",
							top : "auto",
							left : "auto"
						})
			}
			this._renderProxy();
			var j = b(this.helper.css("left")), g = b(this.helper.css("top"));
			if (i.containment) {
				j += c(i.containment).scrollLeft() || 0;
				g += c(i.containment).scrollTop() || 0
			}
			this.offset = this.helper.offset();
			this.position = {
				left : j,
				top : g
			};
			this.size = this._helper ? {
				width : d.outerWidth(),
				height : d.outerHeight()
			} : {
				width : d.width(),
				height : d.height()
			};
			this.originalSize = this._helper ? {
				width : d.outerWidth(),
				height : d.outerHeight()
			} : {
				width : d.width(),
				height : d.height()
			};
			this.originalPosition = {
				left : j,
				top : g
			};
			this.sizeDiff = {
				width : d.outerWidth() - d.width(),
				height : d.outerHeight() - d.height()
			};
			this.originalMousePosition = {
				left : f.pageX,
				top : f.pageY
			};
			this.aspectRatio = (typeof i.aspectRatio == "number")
					? i.aspectRatio
					: ((this.originalSize.width / this.originalSize.height) || 1);
			var h = c(".ui-resizable-" + this.axis).css("cursor");
			c("body").css("cursor", h == "auto" ? this.axis + "-resize" : h);
			d.addClass("ui-resizable-resizing");
			this._propagate("start", f);
			return true
		},
		_mouseDrag : function(d) {
			var g = this.helper, f = this.options, l = {}, p = this, i = this.originalMousePosition, m = this.axis;
			var q = (d.pageX - i.left) || 0, n = (d.pageY - i.top) || 0;
			var h = this._change[m];
			if (!h) {
				return false
			}
			var k = h.apply(this, [d, q, n]), j = c.browser.msie
					&& c.browser.version < 7, e = this.sizeDiff;
			if (this._aspectRatio || d.shiftKey) {
				k = this._updateRatio(k, d)
			}
			k = this._respectSize(k, d);
			this._propagate("resize", d);
			g.css({
						top : this.position.top + "px",
						left : this.position.left + "px",
						width : this.size.width + "px",
						height : this.size.height + "px"
					});
			if (!this._helper && this._proportionallyResizeElements.length) {
				this._proportionallyResize()
			}
			this._updateCache(k);
			this._trigger("resize", d, this.ui());
			return false
		},
		_mouseStop : function(g) {
			this.resizing = false;
			var h = this.options, l = this;
			if (this._helper) {
				var f = this._proportionallyResizeElements, d = f.length
						&& (/textarea/i).test(f[0].nodeName), e = d
						&& c.ui.hasScroll(f[0], "left") ? 0 : l.sizeDiff.height, j = d
						? 0
						: l.sizeDiff.width;
				var m = {
					width : (l.size.width - j),
					height : (l.size.height - e)
				}, i = (parseInt(l.element.css("left"), 10) + (l.position.left - l.originalPosition.left))
						|| null, k = (parseInt(l.element.css("top"), 10) + (l.position.top - l.originalPosition.top))
						|| null;
				if (!h.animate) {
					this.element.css(c.extend(m, {
								top : k,
								left : i
							}))
				}
				l.helper.height(l.size.height);
				l.helper.width(l.size.width);
				if (this._helper && !h.animate) {
					this._proportionallyResize()
				}
			}
			c("body").css("cursor", "auto");
			this.element.removeClass("ui-resizable-resizing");
			this._propagate("stop", g);
			if (this._helper) {
				this.helper.remove()
			}
			return false
		},
		_updateCache : function(d) {
			var e = this.options;
			this.offset = this.helper.offset();
			if (a(d.left)) {
				this.position.left = d.left
			}
			if (a(d.top)) {
				this.position.top = d.top
			}
			if (a(d.height)) {
				this.size.height = d.height
			}
			if (a(d.width)) {
				this.size.width = d.width
			}
		},
		_updateRatio : function(g, f) {
			var h = this.options, i = this.position, e = this.size, d = this.axis;
			if (g.height) {
				g.width = (e.height * this.aspectRatio)
			} else {
				if (g.width) {
					g.height = (e.width / this.aspectRatio)
				}
			}
			if (d == "sw") {
				g.left = i.left + (e.width - g.width);
				g.top = null
			}
			if (d == "nw") {
				g.top = i.top + (e.height - g.height);
				g.left = i.left + (e.width - g.width)
			}
			return g
		},
		_respectSize : function(k, f) {
			var i = this.helper, h = this.options, q = this._aspectRatio
					|| f.shiftKey, p = this.axis, s = a(k.width) && h.maxWidth
					&& (h.maxWidth < k.width), l = a(k.height) && h.maxHeight
					&& (h.maxHeight < k.height), g = a(k.width) && h.minWidth
					&& (h.minWidth > k.width), r = a(k.height) && h.minHeight
					&& (h.minHeight > k.height);
			if (g) {
				k.width = h.minWidth
			}
			if (r) {
				k.height = h.minHeight
			}
			if (s) {
				k.width = h.maxWidth
			}
			if (l) {
				k.height = h.maxHeight
			}
			var e = this.originalPosition.left + this.originalSize.width, n = this.position.top
					+ this.size.height;
			var j = /sw|nw|w/.test(p), d = /nw|ne|n/.test(p);
			if (g && j) {
				k.left = e - h.minWidth
			}
			if (s && j) {
				k.left = e - h.maxWidth
			}
			if (r && d) {
				k.top = n - h.minHeight
			}
			if (l && d) {
				k.top = n - h.maxHeight
			}
			var m = !k.width && !k.height;
			if (m && !k.left && k.top) {
				k.top = null
			} else {
				if (m && !k.top && k.left) {
					k.left = null
				}
			}
			return k
		},
		_proportionallyResize : function() {
			var j = this.options;
			if (!this._proportionallyResizeElements.length) {
				return
			}
			var f = this.helper || this.element;
			for (var e = 0; e < this._proportionallyResizeElements.length; e++) {
				var g = this._proportionallyResizeElements[e];
				if (!this.borderDif) {
					var d = [g.css("borderTopWidth"),
							g.css("borderRightWidth"),
							g.css("borderBottomWidth"),
							g.css("borderLeftWidth")], h = [
							g.css("paddingTop"), g.css("paddingRight"),
							g.css("paddingBottom"), g.css("paddingLeft")];
					this.borderDif = c.map(d, function(k, m) {
								var l = parseInt(k, 10) || 0, n = parseInt(
										h[m], 10)
										|| 0;
								return l + n
							})
				}
				if (c.browser.msie
						&& !(!(c(f).is(":hidden") || c(f).parents(":hidden").length))) {
					continue
				}
				g.css({
					height : (f.height() - this.borderDif[0] - this.borderDif[2])
							|| 0,
					width : (f.width() - this.borderDif[1] - this.borderDif[3])
							|| 0
				})
			}
		},
		_renderProxy : function() {
			var e = this.element, h = this.options;
			this.elementOffset = e.offset();
			if (this._helper) {
				this.helper = this.helper
						|| c('<div style="overflow:hidden;"></div>');
				var d = c.browser.msie && c.browser.version < 7, f = (d ? 1 : 0), g = (d
						? 2
						: -1);
				this.helper.addClass(this._helper).css({
							width : this.element.outerWidth() + g,
							height : this.element.outerHeight() + g,
							position : "absolute",
							left : this.elementOffset.left - f + "px",
							top : this.elementOffset.top - f + "px",
							zIndex : ++h.zIndex
						});
				this.helper.appendTo("body").disableSelection()
			} else {
				this.helper = this.element
			}
		},
		_change : {
			e : function(f, e, d) {
				return {
					width : this.originalSize.width + e
				}
			},
			w : function(g, e, d) {
				var i = this.options, f = this.originalSize, h = this.originalPosition;
				return {
					left : h.left + e,
					width : f.width - e
				}
			},
			n : function(g, e, d) {
				var i = this.options, f = this.originalSize, h = this.originalPosition;
				return {
					top : h.top + d,
					height : f.height - d
				}
			},
			s : function(f, e, d) {
				return {
					height : this.originalSize.height + d
				}
			},
			se : function(f, e, d) {
				return c.extend(this._change.s.apply(this, arguments),
						this._change.e.apply(this, [f, e, d]))
			},
			sw : function(f, e, d) {
				return c.extend(this._change.s.apply(this, arguments),
						this._change.w.apply(this, [f, e, d]))
			},
			ne : function(f, e, d) {
				return c.extend(this._change.n.apply(this, arguments),
						this._change.e.apply(this, [f, e, d]))
			},
			nw : function(f, e, d) {
				return c.extend(this._change.n.apply(this, arguments),
						this._change.w.apply(this, [f, e, d]))
			}
		},
		_propagate : function(e, d) {
			c.ui.plugin.call(this, e, [d, this.ui()]);
			(e != "resize" && this._trigger(e, d, this.ui()))
		},
		plugins : {},
		ui : function() {
			return {
				originalElement : this.originalElement,
				element : this.element,
				helper : this.helper,
				position : this.position,
				size : this.size,
				originalSize : this.originalSize,
				originalPosition : this.originalPosition
			}
		}
	}));
	c.extend(c.ui.resizable, {
				version : "1.7.2",
				eventPrefix : "resize",
				defaults : {
					alsoResize : false,
					animate : false,
					animateDuration : "slow",
					animateEasing : "swing",
					aspectRatio : false,
					autoHide : false,
					cancel : ":input,option",
					containment : false,
					delay : 0,
					distance : 1,
					ghost : false,
					grid : false,
					handles : "e,s,se",
					helper : false,
					maxHeight : null,
					maxWidth : null,
					minHeight : 10,
					minWidth : 10,
					zIndex : 1000
				}
			});
	c.ui.plugin.add("resizable", "alsoResize", {
		start : function(e, f) {
			var d = c(this).data("resizable"), g = d.options;
			_store = function(h) {
				c(h).each(function() {
							c(this).data("resizable-alsoresize", {
										width : parseInt(c(this).width(), 10),
										height : parseInt(c(this).height(), 10),
										left : parseInt(c(this).css("left"), 10),
										top : parseInt(c(this).css("top"), 10)
									})
						})
			};
			if (typeof(g.alsoResize) == "object" && !g.alsoResize.parentNode) {
				if (g.alsoResize.length) {
					g.alsoResize = g.alsoResize[0];
					_store(g.alsoResize)
				} else {
					c.each(g.alsoResize, function(h, i) {
								_store(h)
							})
				}
			} else {
				_store(g.alsoResize)
			}
		},
		resize : function(f, h) {
			var e = c(this).data("resizable"), i = e.options, g = e.originalSize, k = e.originalPosition;
			var j = {
				height : (e.size.height - g.height) || 0,
				width : (e.size.width - g.width) || 0,
				top : (e.position.top - k.top) || 0,
				left : (e.position.left - k.left) || 0
			}, d = function(l, m) {
				c(l).each(function() {
					var p = c(this), q = c(this).data("resizable-alsoresize"), o = {}, n = m
							&& m.length
							? m
							: ["width", "height", "top", "left"];
					c.each(n || ["width", "height", "top", "left"], function(r,
									t) {
								var s = (q[t] || 0) + (j[t] || 0);
								if (s && s >= 0) {
									o[t] = s || null
								}
							});
					if (/relative/.test(p.css("position")) && c.browser.opera) {
						e._revertToRelativePosition = true;
						p.css({
									position : "absolute",
									top : "auto",
									left : "auto"
								})
					}
					p.css(o)
				})
			};
			if (typeof(i.alsoResize) == "object" && !i.alsoResize.nodeType) {
				c.each(i.alsoResize, function(l, m) {
							d(l, m)
						})
			} else {
				d(i.alsoResize)
			}
		},
		stop : function(e, f) {
			var d = c(this).data("resizable");
			if (d._revertToRelativePosition && c.browser.opera) {
				d._revertToRelativePosition = false;
				el.css({
							position : "relative"
						})
			}
			c(this).removeData("resizable-alsoresize-start")
		}
	});
	c.ui.plugin.add("resizable", "animate", {
		stop : function(h, m) {
			var n = c(this).data("resizable"), i = n.options;
			var g = n._proportionallyResizeElements, d = g.length
					&& (/textarea/i).test(g[0].nodeName), e = d
					&& c.ui.hasScroll(g[0], "left") ? 0 : n.sizeDiff.height, k = d
					? 0
					: n.sizeDiff.width;
			var f = {
				width : (n.size.width - k),
				height : (n.size.height - e)
			}, j = (parseInt(n.element.css("left"), 10) + (n.position.left - n.originalPosition.left))
					|| null, l = (parseInt(n.element.css("top"), 10) + (n.position.top - n.originalPosition.top))
					|| null;
			n.element.animate(c.extend(f, l && j ? {
								top : l,
								left : j
							} : {}), {
						duration : i.animateDuration,
						easing : i.animateEasing,
						step : function() {
							var o = {
								width : parseInt(n.element.css("width"), 10),
								height : parseInt(n.element.css("height"), 10),
								top : parseInt(n.element.css("top"), 10),
								left : parseInt(n.element.css("left"), 10)
							};
							if (g && g.length) {
								c(g[0]).css({
											width : o.width,
											height : o.height
										})
							}
							n._updateCache(o);
							n._propagate("resize", h)
						}
					})
		}
	});
	c.ui.plugin.add("resizable", "containment", {
		start : function(e, q) {
			var s = c(this).data("resizable"), i = s.options, k = s.element;
			var f = i.containment, j = (f instanceof c) ? f.get(0) : (/parent/
					.test(f)) ? k.parent().get(0) : f;
			if (!j) {
				return
			}
			s.containerElement = c(j);
			if (/document/.test(f) || f == document) {
				s.containerOffset = {
					left : 0,
					top : 0
				};
				s.containerPosition = {
					left : 0,
					top : 0
				};
				s.parentData = {
					element : c(document),
					left : 0,
					top : 0,
					width : c(document).width(),
					height : c(document).height()
							|| document.body.parentNode.scrollHeight
				}
			} else {
				var m = c(j), h = [];
				c(["Top", "Right", "Left", "Bottom"]).each(function(p, o) {
							h[p] = b(m.css("padding" + o))
						});
				s.containerOffset = m.offset();
				s.containerPosition = m.position();
				s.containerSize = {
					height : (m.innerHeight() - h[3]),
					width : (m.innerWidth() - h[1])
				};
				var n = s.containerOffset, d = s.containerSize.height, l = s.containerSize.width, g = (c.ui
						.hasScroll(j, "left") ? j.scrollWidth : l), r = (c.ui
						.hasScroll(j) ? j.scrollHeight : d);
				s.parentData = {
					element : j,
					left : n.left,
					top : n.top,
					width : g,
					height : r
				}
			}
		},
		resize : function(f, p) {
			var s = c(this).data("resizable"), h = s.options, e = s.containerSize, n = s.containerOffset, l = s.size, m = s.position, q = s._aspectRatio
					|| f.shiftKey, d = {
				top : 0,
				left : 0
			}, g = s.containerElement;
			if (g[0] != document && (/static/).test(g.css("position"))) {
				d = n
			}
			if (m.left < (s._helper ? n.left : 0)) {
				s.size.width = s.size.width
						+ (s._helper
								? (s.position.left - n.left)
								: (s.position.left - d.left));
				if (q) {
					s.size.height = s.size.width / h.aspectRatio
				}
				s.position.left = h.helper ? n.left : 0
			}
			if (m.top < (s._helper ? n.top : 0)) {
				s.size.height = s.size.height
						+ (s._helper
								? (s.position.top - n.top)
								: s.position.top);
				if (q) {
					s.size.width = s.size.height * h.aspectRatio
				}
				s.position.top = s._helper ? n.top : 0
			}
			s.offset.left = s.parentData.left + s.position.left;
			s.offset.top = s.parentData.top + s.position.top;
			var k = Math.abs((s._helper
					? s.offset.left - d.left
					: (s.offset.left - d.left))
					+ s.sizeDiff.width), r = Math.abs((s._helper ? s.offset.top
					- d.top : (s.offset.top - n.top))
					+ s.sizeDiff.height);
			var j = s.containerElement.get(0) == s.element.parent().get(0), i = /relative|absolute/
					.test(s.containerElement.css("position"));
			if (j && i) {
				k -= s.parentData.left
			}
			if (k + s.size.width >= s.parentData.width) {
				s.size.width = s.parentData.width - k;
				if (q) {
					s.size.height = s.size.width / s.aspectRatio
				}
			}
			if (r + s.size.height >= s.parentData.height) {
				s.size.height = s.parentData.height - r;
				if (q) {
					s.size.width = s.size.height * s.aspectRatio
				}
			}
		},
		stop : function(e, m) {
			var p = c(this).data("resizable"), f = p.options, k = p.position, l = p.containerOffset, d = p.containerPosition, g = p.containerElement;
			var i = c(p.helper), q = i.offset(), n = i.outerWidth()
					- p.sizeDiff.width, j = i.outerHeight() - p.sizeDiff.height;
			if (p._helper && !f.animate && (/relative/).test(g.css("position"))) {
				c(this).css({
							left : q.left - d.left - l.left,
							width : n,
							height : j
						})
			}
			if (p._helper && !f.animate && (/static/).test(g.css("position"))) {
				c(this).css({
							left : q.left - d.left - l.left,
							width : n,
							height : j
						})
			}
		}
	});
	c.ui.plugin.add("resizable", "ghost", {
				start : function(f, g) {
					var d = c(this).data("resizable"), h = d.options, e = d.size;
					d.ghost = d.originalElement.clone();
					d.ghost
							.css({
										opacity : 0.25,
										display : "block",
										position : "relative",
										height : e.height,
										width : e.width,
										margin : 0,
										left : 0,
										top : 0
									})
							.addClass("ui-resizable-ghost")
							.addClass(typeof h.ghost == "string" ? h.ghost : "");
					d.ghost.appendTo(d.helper)
				},
				resize : function(e, f) {
					var d = c(this).data("resizable"), g = d.options;
					if (d.ghost) {
						d.ghost.css({
									position : "relative",
									height : d.size.height,
									width : d.size.width
								})
					}
				},
				stop : function(e, f) {
					var d = c(this).data("resizable"), g = d.options;
					if (d.ghost && d.helper) {
						d.helper.get(0).removeChild(d.ghost.get(0))
					}
				}
			});
	c.ui.plugin.add("resizable", "grid", {
		resize : function(d, l) {
			var n = c(this).data("resizable"), g = n.options, j = n.size, h = n.originalSize, i = n.originalPosition, m = n.axis, k = g._aspectRatio
					|| d.shiftKey;
			g.grid = typeof g.grid == "number" ? [g.grid, g.grid] : g.grid;
			var f = Math.round((j.width - h.width) / (g.grid[0] || 1))
					* (g.grid[0] || 1), e = Math.round((j.height - h.height)
					/ (g.grid[1] || 1))
					* (g.grid[1] || 1);
			if (/^(se|s|e)$/.test(m)) {
				n.size.width = h.width + f;
				n.size.height = h.height + e
			} else {
				if (/^(ne)$/.test(m)) {
					n.size.width = h.width + f;
					n.size.height = h.height + e;
					n.position.top = i.top - e
				} else {
					if (/^(sw)$/.test(m)) {
						n.size.width = h.width + f;
						n.size.height = h.height + e;
						n.position.left = i.left - f
					} else {
						n.size.width = h.width + f;
						n.size.height = h.height + e;
						n.position.top = i.top - e;
						n.position.left = i.left - f
					}
				}
			}
		}
	});
	var b = function(d) {
		return parseInt(d, 10) || 0
	};
	var a = function(d) {
		return !isNaN(parseInt(d, 10))
	}
})(jQuery);;/*
			 * jQuery UI Selectable 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Selectables
			 * 
			 * Depends: ui.core.js
			 */
(function(a) {
	a.widget("ui.selectable", a.extend({}, a.ui.mouse, {
		_init : function() {
			var b = this;
			this.element.addClass("ui-selectable");
			this.dragged = false;
			var c;
			this.refresh = function() {
				c = a(b.options.filter, b.element[0]);
				c.each(function() {
							var d = a(this);
							var e = d.offset();
							a.data(this, "selectable-item", {
										element : this,
										$element : d,
										left : e.left,
										top : e.top,
										right : e.left + d.outerWidth(),
										bottom : e.top + d.outerHeight(),
										startselected : false,
										selected : d.hasClass("ui-selected"),
										selecting : d.hasClass("ui-selecting"),
										unselecting : d
												.hasClass("ui-unselecting")
									})
						})
			};
			this.refresh();
			this.selectees = c.addClass("ui-selectee");
			this._mouseInit();
			this.helper = a(document.createElement("div")).css({
						border : "1px dotted black"
					}).addClass("ui-selectable-helper")
		},
		destroy : function() {
			this.element.removeClass("ui-selectable ui-selectable-disabled")
					.removeData("selectable").unbind(".selectable");
			this._mouseDestroy()
		},
		_mouseStart : function(d) {
			var b = this;
			this.opos = [d.pageX, d.pageY];
			if (this.options.disabled) {
				return
			}
			var c = this.options;
			this.selectees = a(c.filter, this.element[0]);
			this._trigger("start", d);
			a(c.appendTo).append(this.helper);
			this.helper.css({
						"z-index" : 100,
						position : "absolute",
						left : d.clientX,
						top : d.clientY,
						width : 0,
						height : 0
					});
			if (c.autoRefresh) {
				this.refresh()
			}
			this.selectees.filter(".ui-selected").each(function() {
						var e = a.data(this, "selectable-item");
						e.startselected = true;
						if (!d.metaKey) {
							e.$element.removeClass("ui-selected");
							e.selected = false;
							e.$element.addClass("ui-unselecting");
							e.unselecting = true;
							b._trigger("unselecting", d, {
										unselecting : e.element
									})
						}
					});
			a(d.target).parents().andSelf().each(function() {
				var e = a.data(this, "selectable-item");
				if (e) {
					e.$element.removeClass("ui-unselecting")
							.addClass("ui-selecting");
					e.unselecting = false;
					e.selecting = true;
					e.selected = true;
					b._trigger("selecting", d, {
								selecting : e.element
							});
					return false
				}
			})
		},
		_mouseDrag : function(i) {
			var c = this;
			this.dragged = true;
			if (this.options.disabled) {
				return
			}
			var e = this.options;
			var d = this.opos[0], h = this.opos[1], b = i.pageX, g = i.pageY;
			if (d > b) {
				var f = b;
				b = d;
				d = f
			}
			if (h > g) {
				var f = g;
				g = h;
				h = f
			}
			this.helper.css({
						left : d,
						top : h,
						width : b - d,
						height : g - h
					});
			this.selectees.each(function() {
				var j = a.data(this, "selectable-item");
				if (!j || j.element == c.element[0]) {
					return
				}
				var k = false;
				if (e.tolerance == "touch") {
					k = (!(j.left > b || j.right < d || j.top > g || j.bottom < h))
				} else {
					if (e.tolerance == "fit") {
						k = (j.left > d && j.right < b && j.top > h && j.bottom < g)
					}
				}
				if (k) {
					if (j.selected) {
						j.$element.removeClass("ui-selected");
						j.selected = false
					}
					if (j.unselecting) {
						j.$element.removeClass("ui-unselecting");
						j.unselecting = false
					}
					if (!j.selecting) {
						j.$element.addClass("ui-selecting");
						j.selecting = true;
						c._trigger("selecting", i, {
									selecting : j.element
								})
					}
				} else {
					if (j.selecting) {
						if (i.metaKey && j.startselected) {
							j.$element.removeClass("ui-selecting");
							j.selecting = false;
							j.$element.addClass("ui-selected");
							j.selected = true
						} else {
							j.$element.removeClass("ui-selecting");
							j.selecting = false;
							if (j.startselected) {
								j.$element.addClass("ui-unselecting");
								j.unselecting = true
							}
							c._trigger("unselecting", i, {
										unselecting : j.element
									})
						}
					}
					if (j.selected) {
						if (!i.metaKey && !j.startselected) {
							j.$element.removeClass("ui-selected");
							j.selected = false;
							j.$element.addClass("ui-unselecting");
							j.unselecting = true;
							c._trigger("unselecting", i, {
										unselecting : j.element
									})
						}
					}
				}
			});
			return false
		},
		_mouseStop : function(d) {
			var b = this;
			this.dragged = false;
			var c = this.options;
			a(".ui-unselecting", this.element[0]).each(function() {
						var e = a.data(this, "selectable-item");
						e.$element.removeClass("ui-unselecting");
						e.unselecting = false;
						e.startselected = false;
						b._trigger("unselected", d, {
									unselected : e.element
								})
					});
			a(".ui-selecting", this.element[0]).each(function() {
						var e = a.data(this, "selectable-item");
						e.$element.removeClass("ui-selecting")
								.addClass("ui-selected");
						e.selecting = false;
						e.selected = true;
						e.startselected = true;
						b._trigger("selected", d, {
									selected : e.element
								})
					});
			this._trigger("stop", d);
			this.helper.remove();
			return false
		}
	}));
	a.extend(a.ui.selectable, {
				version : "1.7.2",
				defaults : {
					appendTo : "body",
					autoRefresh : true,
					cancel : ":input,option",
					delay : 0,
					distance : 0,
					filter : "*",
					tolerance : "touch"
				}
			})
})(jQuery);;/*
			 * jQuery UI Sortable 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Sortables
			 * 
			 * Depends: ui.core.js
			 */
(function(a) {
	a.widget("ui.sortable", a.extend({}, a.ui.mouse, {
		_init : function() {
			var b = this.options;
			this.containerCache = {};
			this.element.addClass("ui-sortable");
			this.refresh();
			this.floating = this.items.length ? (/left|right/)
					.test(this.items[0].item.css("float")) : false;
			this.offset = this.element.offset();
			this._mouseInit()
		},
		destroy : function() {
			this.element.removeClass("ui-sortable ui-sortable-disabled")
					.removeData("sortable").unbind(".sortable");
			this._mouseDestroy();
			for (var b = this.items.length - 1; b >= 0; b--) {
				this.items[b].item.removeData("sortable-item")
			}
		},
		_mouseCapture : function(e, f) {
			if (this.reverting) {
				return false
			}
			if (this.options.disabled || this.options.type == "static") {
				return false
			}
			this._refreshItems(e);
			var d = null, c = this, b = a(e.target).parents().each(function() {
						if (a.data(this, "sortable-item") == c) {
							d = a(this);
							return false
						}
					});
			if (a.data(e.target, "sortable-item") == c) {
				d = a(e.target)
			}
			if (!d) {
				return false
			}
			if (this.options.handle && !f) {
				var g = false;
				a(this.options.handle, d).find("*").andSelf().each(function() {
							if (this == e.target) {
								g = true
							}
						});
				if (!g) {
					return false
				}
			}
			this.currentItem = d;
			this._removeCurrentsFromItems();
			return true
		},
		_mouseStart : function(e, f, b) {
			var g = this.options, c = this;
			this.currentContainer = this;
			this.refreshPositions();
			this.helper = this._createHelper(e);
			this._cacheHelperProportions();
			this._cacheMargins();
			this.scrollParent = this.helper.scrollParent();
			this.offset = this.currentItem.offset();
			this.offset = {
				top : this.offset.top - this.margins.top,
				left : this.offset.left - this.margins.left
			};
			this.helper.css("position", "absolute");
			this.cssPosition = this.helper.css("position");
			a.extend(this.offset, {
						click : {
							left : e.pageX - this.offset.left,
							top : e.pageY - this.offset.top
						},
						parent : this._getParentOffset(),
						relative : this._getRelativeOffset()
					});
			this.originalPosition = this._generatePosition(e);
			this.originalPageX = e.pageX;
			this.originalPageY = e.pageY;
			if (g.cursorAt) {
				this._adjustOffsetFromHelper(g.cursorAt)
			}
			this.domPosition = {
				prev : this.currentItem.prev()[0],
				parent : this.currentItem.parent()[0]
			};
			if (this.helper[0] != this.currentItem[0]) {
				this.currentItem.hide()
			}
			this._createPlaceholder();
			if (g.containment) {
				this._setContainment()
			}
			if (g.cursor) {
				if (a("body").css("cursor")) {
					this._storedCursor = a("body").css("cursor")
				}
				a("body").css("cursor", g.cursor)
			}
			if (g.opacity) {
				if (this.helper.css("opacity")) {
					this._storedOpacity = this.helper.css("opacity")
				}
				this.helper.css("opacity", g.opacity)
			}
			if (g.zIndex) {
				if (this.helper.css("zIndex")) {
					this._storedZIndex = this.helper.css("zIndex")
				}
				this.helper.css("zIndex", g.zIndex)
			}
			if (this.scrollParent[0] != document
					&& this.scrollParent[0].tagName != "HTML") {
				this.overflowOffset = this.scrollParent.offset()
			}
			this._trigger("start", e, this._uiHash());
			if (!this._preserveHelperProportions) {
				this._cacheHelperProportions()
			}
			if (!b) {
				for (var d = this.containers.length - 1; d >= 0; d--) {
					this.containers[d]._trigger("activate", e, c._uiHash(this))
				}
			}
			if (a.ui.ddmanager) {
				a.ui.ddmanager.current = this
			}
			if (a.ui.ddmanager && !g.dropBehaviour) {
				a.ui.ddmanager.prepareOffsets(this, e)
			}
			this.dragging = true;
			this.helper.addClass("ui-sortable-helper");
			this._mouseDrag(e);
			return true
		},
		_mouseDrag : function(f) {
			this.position = this._generatePosition(f);
			this.positionAbs = this._convertPositionTo("absolute");
			if (!this.lastPositionAbs) {
				this.lastPositionAbs = this.positionAbs
			}
			if (this.options.scroll) {
				var g = this.options, b = false;
				if (this.scrollParent[0] != document
						&& this.scrollParent[0].tagName != "HTML") {
					if ((this.overflowOffset.top + this.scrollParent[0].offsetHeight)
							- f.pageY < g.scrollSensitivity) {
						this.scrollParent[0].scrollTop = b = this.scrollParent[0].scrollTop
								+ g.scrollSpeed
					} else {
						if (f.pageY - this.overflowOffset.top < g.scrollSensitivity) {
							this.scrollParent[0].scrollTop = b = this.scrollParent[0].scrollTop
									- g.scrollSpeed
						}
					}
					if ((this.overflowOffset.left + this.scrollParent[0].offsetWidth)
							- f.pageX < g.scrollSensitivity) {
						this.scrollParent[0].scrollLeft = b = this.scrollParent[0].scrollLeft
								+ g.scrollSpeed
					} else {
						if (f.pageX - this.overflowOffset.left < g.scrollSensitivity) {
							this.scrollParent[0].scrollLeft = b = this.scrollParent[0].scrollLeft
									- g.scrollSpeed
						}
					}
				} else {
					if (f.pageY - a(document).scrollTop() < g.scrollSensitivity) {
						b = a(document).scrollTop(a(document).scrollTop()
								- g.scrollSpeed)
					} else {
						if (a(window).height()
								- (f.pageY - a(document).scrollTop()) < g.scrollSensitivity) {
							b = a(document).scrollTop(a(document).scrollTop()
									+ g.scrollSpeed)
						}
					}
					if (f.pageX - a(document).scrollLeft() < g.scrollSensitivity) {
						b = a(document).scrollLeft(a(document).scrollLeft()
								- g.scrollSpeed)
					} else {
						if (a(window).width()
								- (f.pageX - a(document).scrollLeft()) < g.scrollSensitivity) {
							b = a(document).scrollLeft(a(document).scrollLeft()
									+ g.scrollSpeed)
						}
					}
				}
				if (b !== false && a.ui.ddmanager && !g.dropBehaviour) {
					a.ui.ddmanager.prepareOffsets(this, f)
				}
			}
			this.positionAbs = this._convertPositionTo("absolute");
			if (!this.options.axis || this.options.axis != "y") {
				this.helper[0].style.left = this.position.left + "px"
			}
			if (!this.options.axis || this.options.axis != "x") {
				this.helper[0].style.top = this.position.top + "px"
			}
			for (var d = this.items.length - 1; d >= 0; d--) {
				var e = this.items[d], c = e.item[0], h = this
						._intersectsWithPointer(e);
				if (!h) {
					continue
				}
				if (c != this.currentItem[0]
						&& this.placeholder[h == 1 ? "next" : "prev"]()[0] != c
						&& !a.ui.contains(this.placeholder[0], c)
						&& (this.options.type == "semi-dynamic" ? !a.ui
								.contains(this.element[0], c) : true)) {
					this.direction = h == 1 ? "down" : "up";
					if (this.options.tolerance == "pointer"
							|| this._intersectsWithSides(e)) {
						this._rearrange(f, e)
					} else {
						break
					}
					this._trigger("change", f, this._uiHash());
					break
				}
			}
			this._contactContainers(f);
			if (a.ui.ddmanager) {
				a.ui.ddmanager.drag(this, f)
			}
			this._trigger("sort", f, this._uiHash());
			this.lastPositionAbs = this.positionAbs;
			return false
		},
		_mouseStop : function(c, d) {
			if (!c) {
				return
			}
			if (a.ui.ddmanager && !this.options.dropBehaviour) {
				a.ui.ddmanager.drop(this, c)
			}
			if (this.options.revert) {
				var b = this;
				var e = b.placeholder.offset();
				b.reverting = true;
				a(this.helper).animate({
					left : e.left
							- this.offset.parent.left
							- b.margins.left
							+ (this.offsetParent[0] == document.body
									? 0
									: this.offsetParent[0].scrollLeft),
					top : e.top
							- this.offset.parent.top
							- b.margins.top
							+ (this.offsetParent[0] == document.body
									? 0
									: this.offsetParent[0].scrollTop)
				}, parseInt(this.options.revert, 10) || 500, function() {
					b._clear(c)
				})
			} else {
				this._clear(c, d)
			}
			return false
		},
		cancel : function() {
			var b = this;
			if (this.dragging) {
				this._mouseUp();
				if (this.options.helper == "original") {
					this.currentItem.css(this._storedCSS)
							.removeClass("ui-sortable-helper")
				} else {
					this.currentItem.show()
				}
				for (var c = this.containers.length - 1; c >= 0; c--) {
					this.containers[c]._trigger("deactivate", null, b
									._uiHash(this));
					if (this.containers[c].containerCache.over) {
						this.containers[c]._trigger("out", null, b
										._uiHash(this));
						this.containers[c].containerCache.over = 0
					}
				}
			}
			if (this.placeholder[0].parentNode) {
				this.placeholder[0].parentNode.removeChild(this.placeholder[0])
			}
			if (this.options.helper != "original" && this.helper
					&& this.helper[0].parentNode) {
				this.helper.remove()
			}
			a.extend(this, {
						helper : null,
						dragging : false,
						reverting : false,
						_noFinalSort : null
					});
			if (this.domPosition.prev) {
				a(this.domPosition.prev).after(this.currentItem)
			} else {
				a(this.domPosition.parent).prepend(this.currentItem)
			}
			return true
		},
		serialize : function(d) {
			var b = this._getItemsAsjQuery(d && d.connected);
			var c = [];
			d = d || {};
			a(b).each(function() {
				var e = (a(d.item || this).attr(d.attribute || "id") || "")
						.match(d.expression || (/(.+)[-=_](.+)/));
				if (e) {
					c.push((d.key || e[1] + "[]") + "="
							+ (d.key && d.expression ? e[1] : e[2]))
				}
			});
			return c.join("&")
		},
		toArray : function(d) {
			var b = this._getItemsAsjQuery(d && d.connected);
			var c = [];
			d = d || {};
			b.each(function() {
						c.push(a(d.item || this).attr(d.attribute || "id")
								|| "")
					});
			return c
		},
		_intersectsWith : function(m) {
			var e = this.positionAbs.left, d = e + this.helperProportions.width, k = this.positionAbs.top, j = k
					+ this.helperProportions.height;
			var f = m.left, c = f + m.width, n = m.top, i = n + m.height;
			var o = this.offset.click.top, h = this.offset.click.left;
			var g = (k + o) > n && (k + o) < i && (e + h) > f && (e + h) < c;
			if (this.options.tolerance == "pointer"
					|| this.options.forcePointerForContainers
					|| (this.options.tolerance != "pointer" && this.helperProportions[this.floating
							? "width"
							: "height"] > m[this.floating ? "width" : "height"])) {
				return g
			} else {
				return (f < e + (this.helperProportions.width / 2)
						&& d - (this.helperProportions.width / 2) < c
						&& n < k + (this.helperProportions.height / 2) && j
						- (this.helperProportions.height / 2) < i)
			}
		},
		_intersectsWithPointer : function(d) {
			var e = a.ui.isOverAxis(this.positionAbs.top
							+ this.offset.click.top, d.top, d.height), c = a.ui
					.isOverAxis(this.positionAbs.left + this.offset.click.left,
							d.left, d.width), g = e && c, b = this
					._getDragVerticalDirection(), f = this
					._getDragHorizontalDirection();
			if (!g) {
				return false
			}
			return this.floating ? (((f && f == "right") || b == "down")
					? 2
					: 1) : (b && (b == "down" ? 2 : 1))
		},
		_intersectsWithSides : function(e) {
			var c = a.ui.isOverAxis(this.positionAbs.top
							+ this.offset.click.top, e.top + (e.height / 2),
					e.height), d = a.ui.isOverAxis(this.positionAbs.left
							+ this.offset.click.left, e.left + (e.width / 2),
					e.width), b = this._getDragVerticalDirection(), f = this
					._getDragHorizontalDirection();
			if (this.floating && f) {
				return ((f == "right" && d) || (f == "left" && !d))
			} else {
				return b && ((b == "down" && c) || (b == "up" && !c))
			}
		},
		_getDragVerticalDirection : function() {
			var b = this.positionAbs.top - this.lastPositionAbs.top;
			return b != 0 && (b > 0 ? "down" : "up")
		},
		_getDragHorizontalDirection : function() {
			var b = this.positionAbs.left - this.lastPositionAbs.left;
			return b != 0 && (b > 0 ? "right" : "left")
		},
		refresh : function(b) {
			this._refreshItems(b);
			this.refreshPositions()
		},
		_connectWith : function() {
			var b = this.options;
			return b.connectWith.constructor == String
					? [b.connectWith]
					: b.connectWith
		},
		_getItemsAsjQuery : function(b) {
			var l = this;
			var g = [];
			var e = [];
			var h = this._connectWith();
			if (h && b) {
				for (var d = h.length - 1; d >= 0; d--) {
					var k = a(h[d]);
					for (var c = k.length - 1; c >= 0; c--) {
						var f = a.data(k[c], "sortable");
						if (f && f != this && !f.options.disabled) {
							e
									.push([
											a.isFunction(f.options.items)
													? f.options.items
															.call(f.element)
													: a(f.options.items,
															f.element)
															.not(".ui-sortable-helper"),
											f])
						}
					}
				}
			}
			e.push([
					a.isFunction(this.options.items) ? this.options.items.call(
							this.element, null, {
								options : this.options,
								item : this.currentItem
							}) : a(this.options.items, this.element)
							.not(".ui-sortable-helper"), this]);
			for (var d = e.length - 1; d >= 0; d--) {
				e[d][0].each(function() {
							g.push(this)
						})
			}
			return a(g)
		},
		_removeCurrentsFromItems : function() {
			var d = this.currentItem.find(":data(sortable-item)");
			for (var c = 0; c < this.items.length; c++) {
				for (var b = 0; b < d.length; b++) {
					if (d[b] == this.items[c].item[0]) {
						this.items.splice(c, 1)
					}
				}
			}
		},
		_refreshItems : function(b) {
			this.items = [];
			this.containers = [this];
			var h = this.items;
			var p = this;
			var f = [[
					a.isFunction(this.options.items) ? this.options.items.call(
							this.element[0], b, {
								item : this.currentItem
							}) : a(this.options.items, this.element), this]];
			var l = this._connectWith();
			if (l) {
				for (var e = l.length - 1; e >= 0; e--) {
					var m = a(l[e]);
					for (var d = m.length - 1; d >= 0; d--) {
						var g = a.data(m[d], "sortable");
						if (g && g != this && !g.options.disabled) {
							f
									.push([
											a.isFunction(g.options.items)
													? g.options.items.call(
															g.element[0], b, {
																item : this.currentItem
															})
													: a(g.options.items,
															g.element), g]);
							this.containers.push(g)
						}
					}
				}
			}
			for (var e = f.length - 1; e >= 0; e--) {
				var k = f[e][1];
				var c = f[e][0];
				for (var d = 0, n = c.length; d < n; d++) {
					var o = a(c[d]);
					o.data("sortable-item", k);
					h.push({
								item : o,
								instance : k,
								width : 0,
								height : 0,
								left : 0,
								top : 0
							})
				}
			}
		},
		refreshPositions : function(b) {
			if (this.offsetParent && this.helper) {
				this.offset.parent = this._getParentOffset()
			}
			for (var d = this.items.length - 1; d >= 0; d--) {
				var e = this.items[d];
				if (e.instance != this.currentContainer
						&& this.currentContainer
						&& e.item[0] != this.currentItem[0]) {
					continue
				}
				var c = this.options.toleranceElement ? a(
						this.options.toleranceElement, e.item) : e.item;
				if (!b) {
					e.width = c.outerWidth();
					e.height = c.outerHeight()
				}
				var f = c.offset();
				e.left = f.left;
				e.top = f.top
			}
			if (this.options.custom && this.options.custom.refreshContainers) {
				this.options.custom.refreshContainers.call(this)
			} else {
				for (var d = this.containers.length - 1; d >= 0; d--) {
					var f = this.containers[d].element.offset();
					this.containers[d].containerCache.left = f.left;
					this.containers[d].containerCache.top = f.top;
					this.containers[d].containerCache.width = this.containers[d].element
							.outerWidth();
					this.containers[d].containerCache.height = this.containers[d].element
							.outerHeight()
				}
			}
		},
		_createPlaceholder : function(d) {
			var b = d || this, e = b.options;
			if (!e.placeholder || e.placeholder.constructor == String) {
				var c = e.placeholder;
				e.placeholder = {
					element : function() {
						var f = a(document
								.createElement(b.currentItem[0].nodeName))
								.addClass(c || b.currentItem[0].className
										+ " ui-sortable-placeholder")
								.removeClass("ui-sortable-helper")[0];
						if (!c) {
							f.style.visibility = "hidden"
						}
						return f
					},
					update : function(f, g) {
						if (c && !e.forcePlaceholderSize) {
							return
						}
						if (!g.height()) {
							g.height(b.currentItem.innerHeight()
									- parseInt(b.currentItem.css("paddingTop")
													|| 0, 10)
									- parseInt(b.currentItem
													.css("paddingBottom")
													|| 0, 10))
						}
						if (!g.width()) {
							g.width(b.currentItem.innerWidth()
									- parseInt(b.currentItem.css("paddingLeft")
													|| 0, 10)
									- parseInt(b.currentItem
													.css("paddingRight")
													|| 0, 10))
						}
					}
				}
			}
			b.placeholder = a(e.placeholder.element.call(b.element,
					b.currentItem));
			b.currentItem.after(b.placeholder);
			e.placeholder.update(b, b.placeholder)
		},
		_contactContainers : function(d) {
			for (var c = this.containers.length - 1; c >= 0; c--) {
				if (this._intersectsWith(this.containers[c].containerCache)) {
					if (!this.containers[c].containerCache.over) {
						if (this.currentContainer != this.containers[c]) {
							var h = 10000;
							var g = null;
							var e = this.positionAbs[this.containers[c].floating
									? "left"
									: "top"];
							for (var b = this.items.length - 1; b >= 0; b--) {
								if (!a.ui.contains(
										this.containers[c].element[0],
										this.items[b].item[0])) {
									continue
								}
								var f = this.items[b][this.containers[c].floating
										? "left"
										: "top"];
								if (Math.abs(f - e) < h) {
									h = Math.abs(f - e);
									g = this.items[b]
								}
							}
							if (!g && !this.options.dropOnEmpty) {
								continue
							}
							this.currentContainer = this.containers[c];
							g ? this._rearrange(d, g, null, true) : this
									._rearrange(d, null,
											this.containers[c].element, true);
							this._trigger("change", d, this._uiHash());
							this.containers[c]._trigger("change", d, this
											._uiHash(this));
							this.options.placeholder.update(
									this.currentContainer, this.placeholder)
						}
						this.containers[c]._trigger("over", d, this
										._uiHash(this));
						this.containers[c].containerCache.over = 1
					}
				} else {
					if (this.containers[c].containerCache.over) {
						this.containers[c]._trigger("out", d, this
										._uiHash(this));
						this.containers[c].containerCache.over = 0
					}
				}
			}
		},
		_createHelper : function(c) {
			var d = this.options;
			var b = a.isFunction(d.helper) ? a(d.helper.apply(this.element[0],
					[c, this.currentItem])) : (d.helper == "clone"
					? this.currentItem.clone()
					: this.currentItem);
			if (!b.parents("body").length) {
				a(d.appendTo != "parent"
						? d.appendTo
						: this.currentItem[0].parentNode)[0].appendChild(b[0])
			}
			if (b[0] == this.currentItem[0]) {
				this._storedCSS = {
					width : this.currentItem[0].style.width,
					height : this.currentItem[0].style.height,
					position : this.currentItem.css("position"),
					top : this.currentItem.css("top"),
					left : this.currentItem.css("left")
				}
			}
			if (b[0].style.width == "" || d.forceHelperSize) {
				b.width(this.currentItem.width())
			}
			if (b[0].style.height == "" || d.forceHelperSize) {
				b.height(this.currentItem.height())
			}
			return b
		},
		_adjustOffsetFromHelper : function(b) {
			if (b.left != undefined) {
				this.offset.click.left = b.left + this.margins.left
			}
			if (b.right != undefined) {
				this.offset.click.left = this.helperProportions.width - b.right
						+ this.margins.left
			}
			if (b.top != undefined) {
				this.offset.click.top = b.top + this.margins.top
			}
			if (b.bottom != undefined) {
				this.offset.click.top = this.helperProportions.height
						- b.bottom + this.margins.top
			}
		},
		_getParentOffset : function() {
			this.offsetParent = this.helper.offsetParent();
			var b = this.offsetParent.offset();
			if (this.cssPosition == "absolute"
					&& this.scrollParent[0] != document
					&& a.ui
							.contains(this.scrollParent[0],
									this.offsetParent[0])) {
				b.left += this.scrollParent.scrollLeft();
				b.top += this.scrollParent.scrollTop()
			}
			if ((this.offsetParent[0] == document.body)
					|| (this.offsetParent[0].tagName
							&& this.offsetParent[0].tagName.toLowerCase() == "html" && a.browser.msie)) {
				b = {
					top : 0,
					left : 0
				}
			}
			return {
				top : b.top
						+ (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
				left : b.left
						+ (parseInt(this.offsetParent.css("borderLeftWidth"),
								10) || 0)
			}
		},
		_getRelativeOffset : function() {
			if (this.cssPosition == "relative") {
				var b = this.currentItem.position();
				return {
					top : b.top - (parseInt(this.helper.css("top"), 10) || 0)
							+ this.scrollParent.scrollTop(),
					left : b.left
							- (parseInt(this.helper.css("left"), 10) || 0)
							+ this.scrollParent.scrollLeft()
				}
			} else {
				return {
					top : 0,
					left : 0
				}
			}
		},
		_cacheMargins : function() {
			this.margins = {
				left : (parseInt(this.currentItem.css("marginLeft"), 10) || 0),
				top : (parseInt(this.currentItem.css("marginTop"), 10) || 0)
			}
		},
		_cacheHelperProportions : function() {
			this.helperProportions = {
				width : this.helper.outerWidth(),
				height : this.helper.outerHeight()
			}
		},
		_setContainment : function() {
			var e = this.options;
			if (e.containment == "parent") {
				e.containment = this.helper[0].parentNode
			}
			if (e.containment == "document" || e.containment == "window") {
				this.containment = [
						0 - this.offset.relative.left - this.offset.parent.left,
						0 - this.offset.relative.top - this.offset.parent.top,
						a(e.containment == "document" ? document : window)
								.width()
								- this.helperProportions.width
								- this.margins.left,
						(a(e.containment == "document" ? document : window)
								.height() || document.body.parentNode.scrollHeight)
								- this.helperProportions.height
								- this.margins.top]
			}
			if (!(/^(document|window|parent)$/).test(e.containment)) {
				var c = a(e.containment)[0];
				var d = a(e.containment).offset();
				var b = (a(c).css("overflow") != "hidden");
				this.containment = [
						d.left
								+ (parseInt(a(c).css("borderLeftWidth"), 10) || 0)
								+ (parseInt(a(c).css("paddingLeft"), 10) || 0)
								- this.margins.left,
						d.top + (parseInt(a(c).css("borderTopWidth"), 10) || 0)
								+ (parseInt(a(c).css("paddingTop"), 10) || 0)
								- this.margins.top,
						d.left
								+ (b
										? Math
												.max(c.scrollWidth,
														c.offsetWidth)
										: c.offsetWidth)
								- (parseInt(a(c).css("borderLeftWidth"), 10) || 0)
								- (parseInt(a(c).css("paddingRight"), 10) || 0)
								- this.helperProportions.width
								- this.margins.left,
						d.top
								+ (b
										? Math.max(c.scrollHeight,
												c.offsetHeight)
										: c.offsetHeight)
								- (parseInt(a(c).css("borderTopWidth"), 10) || 0)
								- (parseInt(a(c).css("paddingBottom"), 10) || 0)
								- this.helperProportions.height
								- this.margins.top]
			}
		},
		_convertPositionTo : function(f, h) {
			if (!h) {
				h = this.position
			}
			var c = f == "absolute" ? 1 : -1;
			var e = this.options, b = this.cssPosition == "absolute"
					&& !(this.scrollParent[0] != document && a.ui.contains(
							this.scrollParent[0], this.offsetParent[0]))
					? this.offsetParent
					: this.scrollParent, g = (/(html|body)/i)
					.test(b[0].tagName);
			return {
				top : (h.top + this.offset.relative.top * c
						+ this.offset.parent.top * c - (a.browser.safari
						&& this.cssPosition == "fixed"
						? 0
						: (this.cssPosition == "fixed" ? -this.scrollParent
								.scrollTop() : (g ? 0 : b.scrollTop()))
								* c)),
				left : (h.left + this.offset.relative.left * c
						+ this.offset.parent.left * c - (a.browser.safari
						&& this.cssPosition == "fixed"
						? 0
						: (this.cssPosition == "fixed" ? -this.scrollParent
								.scrollLeft() : g ? 0 : b.scrollLeft())
								* c))
			}
		},
		_generatePosition : function(e) {
			var h = this.options, b = this.cssPosition == "absolute"
					&& !(this.scrollParent[0] != document && a.ui.contains(
							this.scrollParent[0], this.offsetParent[0]))
					? this.offsetParent
					: this.scrollParent, i = (/(html|body)/i)
					.test(b[0].tagName);
			if (this.cssPosition == "relative"
					&& !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {
				this.offset.relative = this._getRelativeOffset()
			}
			var d = e.pageX;
			var c = e.pageY;
			if (this.originalPosition) {
				if (this.containment) {
					if (e.pageX - this.offset.click.left < this.containment[0]) {
						d = this.containment[0] + this.offset.click.left
					}
					if (e.pageY - this.offset.click.top < this.containment[1]) {
						c = this.containment[1] + this.offset.click.top
					}
					if (e.pageX - this.offset.click.left > this.containment[2]) {
						d = this.containment[2] + this.offset.click.left
					}
					if (e.pageY - this.offset.click.top > this.containment[3]) {
						c = this.containment[3] + this.offset.click.top
					}
				}
				if (h.grid) {
					var g = this.originalPageY
							+ Math.round((c - this.originalPageY) / h.grid[1])
							* h.grid[1];
					c = this.containment
							? (!(g - this.offset.click.top < this.containment[1] || g
									- this.offset.click.top > this.containment[3])
									? g
									: (!(g - this.offset.click.top < this.containment[1])
											? g - h.grid[1]
											: g + h.grid[1]))
							: g;
					var f = this.originalPageX
							+ Math.round((d - this.originalPageX) / h.grid[0])
							* h.grid[0];
					d = this.containment
							? (!(f - this.offset.click.left < this.containment[0] || f
									- this.offset.click.left > this.containment[2])
									? f
									: (!(f - this.offset.click.left < this.containment[0])
											? f - h.grid[0]
											: f + h.grid[0]))
							: f
				}
			}
			return {
				top : (c - this.offset.click.top - this.offset.relative.top
						- this.offset.parent.top + (a.browser.safari
						&& this.cssPosition == "fixed"
						? 0
						: (this.cssPosition == "fixed" ? -this.scrollParent
								.scrollTop() : (i ? 0 : b.scrollTop())))),
				left : (d - this.offset.click.left - this.offset.relative.left
						- this.offset.parent.left + (a.browser.safari
						&& this.cssPosition == "fixed"
						? 0
						: (this.cssPosition == "fixed" ? -this.scrollParent
								.scrollLeft() : i ? 0 : b.scrollLeft())))
			}
		},
		_rearrange : function(g, f, c, e) {
			c ? c[0].appendChild(this.placeholder[0]) : f.item[0].parentNode
					.insertBefore(this.placeholder[0],
							(this.direction == "down"
									? f.item[0]
									: f.item[0].nextSibling));
			this.counter = this.counter ? ++this.counter : 1;
			var d = this, b = this.counter;
			window.setTimeout(function() {
						if (b == d.counter) {
							d.refreshPositions(!e)
						}
					}, 0)
		},
		_clear : function(d, e) {
			this.reverting = false;
			var f = [], b = this;
			if (!this._noFinalSort && this.currentItem[0].parentNode) {
				this.placeholder.before(this.currentItem)
			}
			this._noFinalSort = null;
			if (this.helper[0] == this.currentItem[0]) {
				for (var c in this._storedCSS) {
					if (this._storedCSS[c] == "auto"
							|| this._storedCSS[c] == "static") {
						this._storedCSS[c] = ""
					}
				}
				this.currentItem.css(this._storedCSS)
						.removeClass("ui-sortable-helper")
			} else {
				this.currentItem.show()
			}
			if (this.fromOutside && !e) {
				f.push(function(g) {
							this._trigger("receive", g, this
											._uiHash(this.fromOutside))
						})
			}
			if ((this.fromOutside
					|| this.domPosition.prev != this.currentItem.prev()
							.not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem
					.parent()[0])
					&& !e) {
				f.push(function(g) {
							this._trigger("update", g, this._uiHash())
						})
			}
			if (!a.ui.contains(this.element[0], this.currentItem[0])) {
				if (!e) {
					f.push(function(g) {
								this._trigger("remove", g, this._uiHash())
							})
				}
				for (var c = this.containers.length - 1; c >= 0; c--) {
					if (a.ui.contains(this.containers[c].element[0],
							this.currentItem[0])
							&& !e) {
						f.push((function(g) {
									return function(h) {
										g._trigger("receive", h, this
														._uiHash(this))
									}
								}).call(this, this.containers[c]));
						f.push((function(g) {
									return function(h) {
										g._trigger("update", h, this
														._uiHash(this))
									}
								}).call(this, this.containers[c]))
					}
				}
			}
			for (var c = this.containers.length - 1; c >= 0; c--) {
				if (!e) {
					f.push((function(g) {
								return function(h) {
									g._trigger("deactivate", h, this
													._uiHash(this))
								}
							}).call(this, this.containers[c]))
				}
				if (this.containers[c].containerCache.over) {
					f.push((function(g) {
								return function(h) {
									g._trigger("out", h, this._uiHash(this))
								}
							}).call(this, this.containers[c]));
					this.containers[c].containerCache.over = 0
				}
			}
			if (this._storedCursor) {
				a("body").css("cursor", this._storedCursor)
			}
			if (this._storedOpacity) {
				this.helper.css("opacity", this._storedOpacity)
			}
			if (this._storedZIndex) {
				this.helper.css("zIndex", this._storedZIndex == "auto"
								? ""
								: this._storedZIndex)
			}
			this.dragging = false;
			if (this.cancelHelperRemoval) {
				if (!e) {
					this._trigger("beforeStop", d, this._uiHash());
					for (var c = 0; c < f.length; c++) {
						f[c].call(this, d)
					}
					this._trigger("stop", d, this._uiHash())
				}
				return false
			}
			if (!e) {
				this._trigger("beforeStop", d, this._uiHash())
			}
			this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
			if (this.helper[0] != this.currentItem[0]) {
				this.helper.remove()
			}
			this.helper = null;
			if (!e) {
				for (var c = 0; c < f.length; c++) {
					f[c].call(this, d)
				}
				this._trigger("stop", d, this._uiHash())
			}
			this.fromOutside = false;
			return true
		},
		_trigger : function() {
			if (a.widget.prototype._trigger.apply(this, arguments) === false) {
				this.cancel()
			}
		},
		_uiHash : function(c) {
			var b = c || this;
			return {
				helper : b.helper,
				placeholder : b.placeholder || a([]),
				position : b.position,
				absolutePosition : b.positionAbs,
				offset : b.positionAbs,
				item : b.currentItem,
				sender : c ? c.element : null
			}
		}
	}));
	a.extend(a.ui.sortable, {
				getter : "serialize toArray",
				version : "1.7.2",
				eventPrefix : "sort",
				defaults : {
					appendTo : "parent",
					axis : false,
					cancel : ":input,option",
					connectWith : false,
					containment : false,
					cursor : "auto",
					cursorAt : false,
					delay : 0,
					distance : 1,
					dropOnEmpty : true,
					forcePlaceholderSize : false,
					forceHelperSize : false,
					grid : false,
					handle : false,
					helper : "original",
					items : "> *",
					opacity : false,
					placeholder : false,
					revert : false,
					scroll : true,
					scrollSensitivity : 20,
					scrollSpeed : 20,
					scope : "default",
					tolerance : "intersect",
					zIndex : 1000
				}
			})
})(jQuery);;/*
			 * jQuery UI Accordion 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Accordion
			 * 
			 * Depends: ui.core.js
			 */
(function(a) {
	a.widget("ui.accordion", {
		_init : function() {
			var d = this.options, b = this;
			this.running = 0;
			if (d.collapsible == a.ui.accordion.defaults.collapsible
					&& d.alwaysOpen != a.ui.accordion.defaults.alwaysOpen) {
				d.collapsible = !d.alwaysOpen
			}
			if (d.navigation) {
				var c = this.element.find("a").filter(d.navigationFilter);
				if (c.length) {
					if (c.filter(d.header).length) {
						this.active = c
					} else {
						this.active = c.parent().parent().prev();
						c.addClass("ui-accordion-content-active")
					}
				}
			}
			this.element.addClass("ui-accordion ui-widget ui-helper-reset");
			if (this.element[0].nodeName == "UL") {
				this.element.children("li").addClass("ui-accordion-li-fix")
			}
			this.headers = this.element
					.find(d.header)
					.addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all")
					.bind("mouseenter.accordion", function() {
								a(this).addClass("ui-state-hover")
							}).bind("mouseleave.accordion", function() {
								a(this).removeClass("ui-state-hover")
							}).bind("focus.accordion", function() {
								a(this).addClass("ui-state-focus")
							}).bind("blur.accordion", function() {
								a(this).removeClass("ui-state-focus")
							});
			this.headers
					.next()
					.addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
			this.active = this._findActive(this.active || d.active)
					.toggleClass("ui-state-default")
					.toggleClass("ui-state-active")
					.toggleClass("ui-corner-all").toggleClass("ui-corner-top");
			this.active.next().addClass("ui-accordion-content-active");
			a("<span/>").addClass("ui-icon " + d.icons.header)
					.prependTo(this.headers);
			this.active.find(".ui-icon").toggleClass(d.icons.header)
					.toggleClass(d.icons.headerSelected);
			if (a.browser.msie) {
				this.element.find("a").css("zoom", "1")
			}
			this.resize();
			this.element.attr("role", "tablist");
			this.headers.attr("role", "tab").bind("keydown", function(e) {
						return b._keydown(e)
					}).next().attr("role", "tabpanel");
			this.headers.not(this.active || "").attr("aria-expanded", "false")
					.attr("tabIndex", "-1").next().hide();
			if (!this.active.length) {
				this.headers.eq(0).attr("tabIndex", "0")
			} else {
				this.active.attr("aria-expanded", "true").attr("tabIndex", "0")
			}
			if (!a.browser.safari) {
				this.headers.find("a").attr("tabIndex", "-1")
			}
			if (d.event) {
				this.headers.bind((d.event) + ".accordion", function(e) {
							return b._clickHandler.call(b, e, this)
						})
			}
		},
		destroy : function() {
			var c = this.options;
			this.element.removeClass("ui-accordion ui-widget ui-helper-reset")
					.removeAttr("role").unbind(".accordion")
					.removeData("accordion");
			this.headers
					.unbind(".accordion")
					.removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top")
					.removeAttr("role").removeAttr("aria-expanded")
					.removeAttr("tabindex");
			this.headers.find("a").removeAttr("tabindex");
			this.headers.children(".ui-icon").remove();
			var b = this.headers
					.next()
					.css("display", "")
					.removeAttr("role")
					.removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");
			if (c.autoHeight || c.fillHeight) {
				b.css("height", "")
			}
		},
		_setData : function(b, c) {
			if (b == "alwaysOpen") {
				b = "collapsible";
				c = !c
			}
			a.widget.prototype._setData.apply(this, arguments)
		},
		_keydown : function(e) {
			var g = this.options, f = a.ui.keyCode;
			if (g.disabled || e.altKey || e.ctrlKey) {
				return
			}
			var d = this.headers.length;
			var b = this.headers.index(e.target);
			var c = false;
			switch (e.keyCode) {
				case f.RIGHT :
				case f.DOWN :
					c = this.headers[(b + 1) % d];
					break;
				case f.LEFT :
				case f.UP :
					c = this.headers[(b - 1 + d) % d];
					break;
				case f.SPACE :
				case f.ENTER :
					return this._clickHandler({
								target : e.target
							}, e.target)
			}
			if (c) {
				a(e.target).attr("tabIndex", "-1");
				a(c).attr("tabIndex", "0");
				c.focus();
				return false
			}
			return true
		},
		resize : function() {
			var e = this.options, d;
			if (e.fillSpace) {
				if (a.browser.msie) {
					var b = this.element.parent().css("overflow");
					this.element.parent().css("overflow", "hidden")
				}
				d = this.element.parent().height();
				if (a.browser.msie) {
					this.element.parent().css("overflow", b)
				}
				this.headers.each(function() {
							d -= a(this).outerHeight()
						});
				var c = 0;
				this.headers.next().each(function() {
							c = Math.max(c, a(this).innerHeight()
											- a(this).height())
						}).height(Math.max(0, d - c)).css("overflow", "auto")
			} else {
				if (e.autoHeight) {
					d = 0;
					this.headers.next().each(function() {
								d = Math.max(d, a(this).outerHeight())
							}).height(d)
				}
			}
		},
		activate : function(b) {
			var c = this._findActive(b)[0];
			this._clickHandler({
						target : c
					}, c)
		},
		_findActive : function(b) {
			return b
					? typeof b == "number" ? this.headers.filter(":eq(" + b
							+ ")") : this.headers.not(this.headers.not(b))
					: b === false ? a([]) : this.headers.filter(":eq(0)")
		},
		_clickHandler : function(b, f) {
			var d = this.options;
			if (d.disabled) {
				return false
			}
			if (!b.target && d.collapsible) {
				this.active.removeClass("ui-state-active ui-corner-top")
						.addClass("ui-state-default ui-corner-all")
						.find(".ui-icon").removeClass(d.icons.headerSelected)
						.addClass(d.icons.header);
				this.active.next().addClass("ui-accordion-content-active");
				var h = this.active.next(), e = {
					options : d,
					newHeader : a([]),
					oldHeader : d.active,
					newContent : a([]),
					oldContent : h
				}, c = (this.active = a([]));
				this._toggle(c, h, e);
				return false
			}
			var g = a(b.currentTarget || f);
			var i = g[0] == this.active[0];
			if (this.running || (!d.collapsible && i)) {
				return false
			}
			this.active.removeClass("ui-state-active ui-corner-top")
					.addClass("ui-state-default ui-corner-all")
					.find(".ui-icon").removeClass(d.icons.headerSelected)
					.addClass(d.icons.header);
			this.active.next().addClass("ui-accordion-content-active");
			if (!i) {
				g.removeClass("ui-state-default ui-corner-all")
						.addClass("ui-state-active ui-corner-top")
						.find(".ui-icon").removeClass(d.icons.header)
						.addClass(d.icons.headerSelected);
				g.next().addClass("ui-accordion-content-active")
			}
			var c = g.next(), h = this.active.next(), e = {
				options : d,
				newHeader : i && d.collapsible ? a([]) : g,
				oldHeader : this.active,
				newContent : i && d.collapsible ? a([]) : c.find("> *"),
				oldContent : h.find("> *")
			}, j = this.headers.index(this.active[0]) > this.headers
					.index(g[0]);
			this.active = i ? a([]) : g;
			this._toggle(c, h, e, i, j);
			return false
		},
		_toggle : function(b, i, g, j, k) {
			var d = this.options, m = this;
			this.toShow = b;
			this.toHide = i;
			this.data = g;
			var c = function() {
				if (!m) {
					return
				}
				return m._completed.apply(m, arguments)
			};
			this._trigger("changestart", null, this.data);
			this.running = i.size() === 0 ? b.size() : i.size();
			if (d.animated) {
				var f = {};
				if (d.collapsible && j) {
					f = {
						toShow : a([]),
						toHide : i,
						complete : c,
						down : k,
						autoHeight : d.autoHeight || d.fillSpace
					}
				} else {
					f = {
						toShow : b,
						toHide : i,
						complete : c,
						down : k,
						autoHeight : d.autoHeight || d.fillSpace
					}
				}
				if (!d.proxied) {
					d.proxied = d.animated
				}
				if (!d.proxiedDuration) {
					d.proxiedDuration = d.duration
				}
				d.animated = a.isFunction(d.proxied) ? d.proxied(f) : d.proxied;
				d.duration = a.isFunction(d.proxiedDuration) ? d
						.proxiedDuration(f) : d.proxiedDuration;
				var l = a.ui.accordion.animations, e = d.duration, h = d.animated;
				if (!l[h]) {
					l[h] = function(n) {
						this.slide(n, {
									easing : h,
									duration : e || 700
								})
					}
				}
				l[h](f)
			} else {
				if (d.collapsible && j) {
					b.toggle()
				} else {
					i.hide();
					b.show()
				}
				c(true)
			}
			i.prev().attr("aria-expanded", "false").attr("tabIndex", "-1")
					.blur();
			b.prev().attr("aria-expanded", "true").attr("tabIndex", "0")
					.focus()
		},
		_completed : function(b) {
			var c = this.options;
			this.running = b ? 0 : --this.running;
			if (this.running) {
				return
			}
			if (c.clearStyle) {
				this.toShow.add(this.toHide).css({
							height : "",
							overflow : ""
						})
			}
			this._trigger("change", null, this.data)
		}
	});
	a.extend(a.ui.accordion, {
		version : "1.7.2",
		defaults : {
			active : null,
			alwaysOpen : true,
			animated : "slide",
			autoHeight : true,
			clearStyle : false,
			collapsible : false,
			event : "click",
			fillSpace : false,
			header : "> li > :first-child,> :not(li):even",
			icons : {
				header : "ui-icon-triangle-1-e",
				headerSelected : "ui-icon-triangle-1-s"
			},
			navigation : false,
			navigationFilter : function() {
				return this.href.toLowerCase() == location.href.toLowerCase()
			}
		},
		animations : {
			slide : function(j, h) {
				j = a.extend({
							easing : "swing",
							duration : 300
						}, j, h);
				if (!j.toHide.size()) {
					j.toShow.animate({
								height : "show"
							}, j);
					return
				}
				if (!j.toShow.size()) {
					j.toHide.animate({
								height : "hide"
							}, j);
					return
				}
				var c = j.toShow.css("overflow"), g, d = {}, f = {}, e = [
						"height", "paddingTop", "paddingBottom"], b;
				var i = j.toShow;
				b = i[0].style.width;
				i.width(parseInt(i.parent().width(), 10)
						- parseInt(i.css("paddingLeft"), 10)
						- parseInt(i.css("paddingRight"), 10)
						- (parseInt(i.css("borderLeftWidth"), 10) || 0)
						- (parseInt(i.css("borderRightWidth"), 10) || 0));
				a.each(e, function(k, m) {
							f[m] = "hide";
							var l = ("" + a.css(j.toShow[0], m))
									.match(/^([\d+-.]+)(.*)$/);
							d[m] = {
								value : l[1],
								unit : l[2] || "px"
							}
						});
				j.toShow.css({
							height : 0,
							overflow : "hidden"
						}).show();
				j.toHide.filter(":hidden").each(j.complete).end()
						.filter(":visible").animate(f, {
							step : function(k, l) {
								if (l.prop == "height") {
									g = (l.now - l.start) / (l.end - l.start)
								}
								j.toShow[0].style[l.prop] = (g * d[l.prop].value)
										+ d[l.prop].unit
							},
							duration : j.duration,
							easing : j.easing,
							complete : function() {
								if (!j.autoHeight) {
									j.toShow.css("height", "")
								}
								j.toShow.css("width", b);
								j.toShow.css({
											overflow : c
										});
								j.complete()
							}
						})
			},
			bounceslide : function(b) {
				this.slide(b, {
							easing : b.down ? "easeOutBounce" : "swing",
							duration : b.down ? 1000 : 200
						})
			},
			easeslide : function(b) {
				this.slide(b, {
							easing : "easeinout",
							duration : 700
						})
			}
		}
	})
})(jQuery);;/*
			 * jQuery UI Dialog 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Dialog
			 * 
			 * Depends: ui.core.js ui.draggable.js ui.resizable.js
			 */
(function(c) {
	var b = {
		dragStart : "start.draggable",
		drag : "drag.draggable",
		dragStop : "stop.draggable",
		maxHeight : "maxHeight.resizable",
		minHeight : "minHeight.resizable",
		maxWidth : "maxWidth.resizable",
		minWidth : "minWidth.resizable",
		resizeStart : "start.resizable",
		resize : "drag.resizable",
		resizeStop : "stop.resizable"
	}, a = "ui-dialog ui-widget ui-widget-content ui-corner-all ";
	c.widget("ui.dialog", {
		_init : function() {
			this.originalTitle = this.element.attr("title");
			var l = this, m = this.options, j = m.title || this.originalTitle
					|| "&nbsp;", e = c.ui.dialog.getTitleId(this.element), k = (this.uiDialog = c("<div/>"))
					.appendTo(document.body).hide().addClass(a + m.dialogClass)
					.css({
								position : "absolute",
								overflow : "hidden",
								zIndex : m.zIndex
							}).attr("tabIndex", -1).css("outline", 0).keydown(
							function(n) {
								(m.closeOnEscape && n.keyCode
										&& n.keyCode == c.ui.keyCode.ESCAPE && l
										.close(n))
							}).attr({
								role : "dialog",
								"aria-labelledby" : e
							}).mousedown(function(n) {
								l.moveToTop(false, n)
							}), g = this.element.show().removeAttr("title")
					.addClass("ui-dialog-content ui-widget-content")
					.appendTo(k), f = (this.uiDialogTitlebar = c("<div></div>"))
					.addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix")
					.prependTo(k), i = c('<a href="#"/>')
					.addClass("ui-dialog-titlebar-close ui-corner-all").attr(
							"role", "button").hover(function() {
								i.addClass("ui-state-hover")
							}, function() {
								i.removeClass("ui-state-hover")
							}).focus(function() {
								i.addClass("ui-state-focus")
							}).blur(function() {
								i.removeClass("ui-state-focus")
							}).mousedown(function(n) {
								n.stopPropagation()
							}).click(function(n) {
								l.close(n);
								return false
							}).appendTo(f), h = (this.uiDialogTitlebarCloseText = c("<span/>"))
					.addClass("ui-icon ui-icon-closethick").text(m.closeText)
					.appendTo(i), d = c("<span/>").addClass("ui-dialog-title")
					.attr("id", e).html(j).prependTo(f);
			f.find("*").add(f).disableSelection();
			(m.draggable && c.fn.draggable && this._makeDraggable());
			(m.resizable && c.fn.resizable && this._makeResizable());
			this._createButtons(m.buttons);
			this._isOpen = false;
			(m.bgiframe && c.fn.bgiframe && k.bgiframe());
			(m.autoOpen && this.open())
		},
		destroy : function() {
			(this.overlay && this.overlay.destroy());
			this.uiDialog.hide();
			this.element.unbind(".dialog").removeData("dialog")
					.removeClass("ui-dialog-content ui-widget-content").hide()
					.appendTo("body");
			this.uiDialog.remove();
			(this.originalTitle && this.element.attr("title",
					this.originalTitle))
		},
		close : function(f) {
			var d = this;
			if (false === d._trigger("beforeclose", f)) {
				return
			}
			(d.overlay && d.overlay.destroy());
			d.uiDialog.unbind("keypress.ui-dialog");
			(d.options.hide ? d.uiDialog.hide(d.options.hide, function() {
						d._trigger("close", f)
					}) : d.uiDialog.hide() && d._trigger("close", f));
			c.ui.dialog.overlay.resize();
			d._isOpen = false;
			if (d.options.modal) {
				var e = 0;
				c(".ui-dialog").each(function() {
							if (this != d.uiDialog[0]) {
								e = Math.max(e, c(this).css("z-index"))
							}
						});
				c.ui.dialog.maxZ = e
			}
		},
		isOpen : function() {
			return this._isOpen
		},
		moveToTop : function(f, e) {
			if ((this.options.modal && !f)
					|| (!this.options.stack && !this.options.modal)) {
				return this._trigger("focus", e)
			}
			if (this.options.zIndex > c.ui.dialog.maxZ) {
				c.ui.dialog.maxZ = this.options.zIndex
			}
			(this.overlay && this.overlay.$el.css("z-index",
					c.ui.dialog.overlay.maxZ = ++c.ui.dialog.maxZ));
			var d = {
				scrollTop : this.element.attr("scrollTop"),
				scrollLeft : this.element.attr("scrollLeft")
			};
			this.uiDialog.css("z-index", ++c.ui.dialog.maxZ);
			this.element.attr(d);
			this._trigger("focus", e)
		},
		open : function() {
			if (this._isOpen) {
				return
			}
			var e = this.options, d = this.uiDialog;
			this.overlay = e.modal ? new c.ui.dialog.overlay(this) : null;
			(d.next().length && d.appendTo("body"));
			this._size();
			this._position(e.position);
			d.show(e.show);
			this.moveToTop(true);
			(e.modal && d.bind("keypress.ui-dialog", function(h) {
						if (h.keyCode != c.ui.keyCode.TAB) {
							return
						}
						var g = c(":tabbable", this), i = g.filter(":first")[0], f = g
								.filter(":last")[0];
						if (h.target == f && !h.shiftKey) {
							setTimeout(function() {
										i.focus()
									}, 1)
						} else {
							if (h.target == i && h.shiftKey) {
								setTimeout(function() {
											f.focus()
										}, 1)
							}
						}
					}));
			c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d
					.find(".ui-dialog-buttonpane :tabbable:first")).add(d)
					.filter(":first").focus();
			this._trigger("open");
			this._isOpen = true
		},
		_createButtons : function(g) {
			var f = this, d = false, e = c("<div></div>")
					.addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");
			this.uiDialog.find(".ui-dialog-buttonpane").remove();
			(typeof g == "object" && g !== null && c.each(g, function() {
						return !(d = true)
					}));
			if (d) {
				c.each(g, function(h, i) {
							c('<button type="button"></button>')
									.addClass("ui-state-default ui-corner-all")
									.text(h).click(function() {
												i
														.apply(f.element[0],
																arguments)
											}).hover(function() {
												c(this)
														.addClass("ui-state-hover")
											}, function() {
												c(this)
														.removeClass("ui-state-hover")
											}).focus(function() {
												c(this)
														.addClass("ui-state-focus")
											}).blur(function() {
												c(this)
														.removeClass("ui-state-focus")
											}).appendTo(e)
						});
				e.appendTo(this.uiDialog)
			}
		},
		_makeDraggable : function() {
			var d = this, f = this.options, e;
			this.uiDialog.draggable({
						cancel : ".ui-dialog-content",
						handle : ".ui-dialog-titlebar",
						containment : "document",
						start : function() {
							e = f.height;
							c(this).height(c(this).height())
									.addClass("ui-dialog-dragging");
							(f.dragStart && f.dragStart.apply(d.element[0],
									arguments))
						},
						drag : function() {
							(f.drag && f.drag.apply(d.element[0], arguments))
						},
						stop : function() {
							c(this).removeClass("ui-dialog-dragging").height(e);
							(f.dragStop && f.dragStop.apply(d.element[0],
									arguments));
							c.ui.dialog.overlay.resize()
						}
					})
		},
		_makeResizable : function(g) {
			g = (g === undefined ? this.options.resizable : g);
			var d = this, f = this.options, e = typeof g == "string"
					? g
					: "n,e,s,w,se,sw,ne,nw";
			this.uiDialog.resizable({
				cancel : ".ui-dialog-content",
				alsoResize : this.element,
				maxWidth : f.maxWidth,
				maxHeight : f.maxHeight,
				minWidth : f.minWidth,
				minHeight : f.minHeight,
				start : function() {
					c(this).addClass("ui-dialog-resizing");
					(f.resizeStart && f.resizeStart.apply(d.element[0],
							arguments))
				},
				resize : function() {
					(f.resize && f.resize.apply(d.element[0], arguments))
				},
				handles : e,
				stop : function() {
					c(this).removeClass("ui-dialog-resizing");
					f.height = c(this).height();
					f.width = c(this).width();
					(f.resizeStop && f.resizeStop
							.apply(d.element[0], arguments));
					c.ui.dialog.overlay.resize()
				}
			}).find(".ui-resizable-se")
					.addClass("ui-icon ui-icon-grip-diagonal-se")
		},
		_position : function(i) {
			var e = c(window), f = c(document), g = f.scrollTop(), d = f
					.scrollLeft(), h = g;
			if (c.inArray(i, ["center", "top", "right", "bottom", "left"]) >= 0) {
				i = [i == "right" || i == "left" ? i : "center",
						i == "top" || i == "bottom" ? i : "middle"]
			}
			if (i.constructor != Array) {
				i = ["center", "middle"]
			}
			if (i[0].constructor == Number) {
				d += i[0]
			} else {
				switch (i[0]) {
					case "left" :
						d += 0;
						break;
					case "right" :
						d += e.width() - this.uiDialog.outerWidth();
						break;
					default :
					case "center" :
						d += (e.width() - this.uiDialog.outerWidth()) / 2
				}
			}
			if (i[1].constructor == Number) {
				g += i[1]
			} else {
				switch (i[1]) {
					case "top" :
						g += 0;
						break;
					case "bottom" :
						g += e.height() - this.uiDialog.outerHeight();
						break;
					default :
					case "middle" :
						g += (e.height() - this.uiDialog.outerHeight()) / 2
				}
			}
			g = Math.max(g, h);
			this.uiDialog.css({
						top : g,
						left : d
					})
		},
		_setData : function(e, f) {
			(b[e] && this.uiDialog.data(b[e], f));
			switch (e) {
				case "buttons" :
					this._createButtons(f);
					break;
				case "closeText" :
					this.uiDialogTitlebarCloseText.text(f);
					break;
				case "dialogClass" :
					this.uiDialog.removeClass(this.options.dialogClass)
							.addClass(a + f);
					break;
				case "draggable" :
					(f ? this._makeDraggable() : this.uiDialog
							.draggable("destroy"));
					break;
				case "height" :
					this.uiDialog.height(f);
					break;
				case "position" :
					this._position(f);
					break;
				case "resizable" :
					var d = this.uiDialog, g = this.uiDialog
							.is(":data(resizable)");
					(g && !f && d.resizable("destroy"));
					(g && typeof f == "string" && d.resizable("option",
							"handles", f));
					(g || this._makeResizable(f));
					break;
				case "title" :
					c(".ui-dialog-title", this.uiDialogTitlebar).html(f
							|| "&nbsp;");
					break;
				case "width" :
					this.uiDialog.width(f);
					break
			}
			c.widget.prototype._setData.apply(this, arguments)
		},
		_size : function() {
			var e = this.options;
			this.element.css({
						height : 0,
						minHeight : 0,
						width : "auto"
					});
			var d = this.uiDialog.css({
						height : "auto",
						width : e.width
					}).height();
			this.element.css({
						minHeight : Math.max(e.minHeight - d, 0),
						height : e.height == "auto" ? "auto" : Math.max(
								e.height - d, 0)
					})
		}
	});
	c.extend(c.ui.dialog, {
				version : "1.7.2",
				defaults : {
					autoOpen : true,
					bgiframe : false,
					buttons : {},
					closeOnEscape : true,
					closeText : "close",
					dialogClass : "",
					draggable : true,
					hide : null,
					height : "auto",
					maxHeight : false,
					maxWidth : false,
					minHeight : 150,
					minWidth : 150,
					modal : false,
					position : "center",
					resizable : true,
					show : null,
					stack : true,
					title : "",
					width : 300,
					zIndex : 1000
				},
				getter : "isOpen",
				uuid : 0,
				maxZ : 0,
				getTitleId : function(d) {
					return "ui-dialog-title-" + (d.attr("id") || ++this.uuid)
				},
				overlay : function(d) {
					this.$el = c.ui.dialog.overlay.create(d)
				}
			});
	c.extend(c.ui.dialog.overlay, {
		instances : [],
		maxZ : 0,
		events : c.map(
				"focus,mousedown,mouseup,keydown,keypress,click".split(","),
				function(d) {
					return d + ".dialog-overlay"
				}).join(" "),
		create : function(e) {
			if (this.instances.length === 0) {
				setTimeout(function() {
							if (c.ui.dialog.overlay.instances.length) {
								c(document).bind(c.ui.dialog.overlay.events,
										function(f) {
											var g = c(f.target)
													.parents(".ui-dialog")
													.css("zIndex")
													|| 0;
											return (g > c.ui.dialog.overlay.maxZ)
										})
							}
						}, 1);
				c(document).bind("keydown.dialog-overlay", function(f) {
					(e.options.closeOnEscape && f.keyCode
							&& f.keyCode == c.ui.keyCode.ESCAPE && e.close(f))
				});
				c(window).bind("resize.dialog-overlay",
						c.ui.dialog.overlay.resize)
			}
			var d = c("<div></div>").appendTo(document.body)
					.addClass("ui-widget-overlay").css({
								width : this.width(),
								height : this.height()
							});
			(e.options.bgiframe && c.fn.bgiframe && d.bgiframe());
			this.instances.push(d);
			return d
		},
		destroy : function(d) {
			this.instances.splice(c.inArray(this.instances, d), 1);
			if (this.instances.length === 0) {
				c([document, window]).unbind(".dialog-overlay")
			}
			d.remove();
			var e = 0;
			c.each(this.instances, function() {
						e = Math.max(e, this.css("z-index"))
					});
			this.maxZ = e
		},
		height : function() {
			if (c.browser.msie && c.browser.version < 7) {
				var e = Math.max(document.documentElement.scrollHeight,
						document.body.scrollHeight);
				var d = Math.max(document.documentElement.offsetHeight,
						document.body.offsetHeight);
				if (e < d) {
					return c(window).height() + "px"
				} else {
					return e + "px"
				}
			} else {
				return c(document).height() + "px"
			}
		},
		width : function() {
			if (c.browser.msie && c.browser.version < 7) {
				var d = Math.max(document.documentElement.scrollWidth,
						document.body.scrollWidth);
				var e = Math.max(document.documentElement.offsetWidth,
						document.body.offsetWidth);
				if (d < e) {
					return c(window).width() + "px"
				} else {
					return d + "px"
				}
			} else {
				return c(document).width() + "px"
			}
		},
		resize : function() {
			var d = c([]);
			c.each(c.ui.dialog.overlay.instances, function() {
						d = d.add(this)
					});
			d.css({
						width : 0,
						height : 0
					}).css({
						width : c.ui.dialog.overlay.width(),
						height : c.ui.dialog.overlay.height()
					})
		}
	});
	c.extend(c.ui.dialog.overlay.prototype, {
				destroy : function() {
					c.ui.dialog.overlay.destroy(this.$el)
				}
			})
})(jQuery);;/*
			 * jQuery UI Slider 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Slider
			 * 
			 * Depends: ui.core.js
			 */
(function(a) {
	a.widget("ui.slider", a.extend({}, a.ui.mouse, {
		_init : function() {
			var b = this, c = this.options;
			this._keySliding = false;
			this._handleIndex = null;
			this._detectOrientation();
			this._mouseInit();
			this.element.addClass("ui-slider ui-slider-" + this.orientation
					+ " ui-widget ui-widget-content ui-corner-all");
			this.range = a([]);
			if (c.range) {
				if (c.range === true) {
					this.range = a("<div></div>");
					if (!c.values) {
						c.values = [this._valueMin(), this._valueMin()]
					}
					if (c.values.length && c.values.length != 2) {
						c.values = [c.values[0], c.values[0]]
					}
				} else {
					this.range = a("<div></div>")
				}
				this.range.appendTo(this.element).addClass("ui-slider-range");
				if (c.range == "min" || c.range == "max") {
					this.range.addClass("ui-slider-range-" + c.range)
				}
				this.range.addClass("ui-widget-header")
			}
			if (a(".ui-slider-handle", this.element).length == 0) {
				a('<a href="#"></a>').appendTo(this.element)
						.addClass("ui-slider-handle")
			}
			if (c.values && c.values.length) {
				while (a(".ui-slider-handle", this.element).length < c.values.length) {
					a('<a href="#"></a>').appendTo(this.element)
							.addClass("ui-slider-handle")
				}
			}
			this.handles = a(".ui-slider-handle", this.element)
					.addClass("ui-state-default ui-corner-all");
			this.handle = this.handles.eq(0);
			this.handles.add(this.range).filter("a").click(function(d) {
						d.preventDefault()
					}).hover(function() {
						if (!c.disabled) {
							a(this).addClass("ui-state-hover")
						}
					}, function() {
						a(this).removeClass("ui-state-hover")
					}).focus(function() {
				if (!c.disabled) {
					a(".ui-slider .ui-state-focus")
							.removeClass("ui-state-focus");
					a(this).addClass("ui-state-focus")
				} else {
					a(this).blur()
				}
			}).blur(function() {
						a(this).removeClass("ui-state-focus")
					});
			this.handles.each(function(d) {
						a(this).data("index.ui-slider-handle", d)
					});
			this.handles.keydown(function(i) {
						var f = true;
						var e = a(this).data("index.ui-slider-handle");
						if (b.options.disabled) {
							return
						}
						switch (i.keyCode) {
							case a.ui.keyCode.HOME :
							case a.ui.keyCode.END :
							case a.ui.keyCode.UP :
							case a.ui.keyCode.RIGHT :
							case a.ui.keyCode.DOWN :
							case a.ui.keyCode.LEFT :
								f = false;
								if (!b._keySliding) {
									b._keySliding = true;
									a(this).addClass("ui-state-active");
									b._start(i, e)
								}
								break
						}
						var g, d, h = b._step();
						if (b.options.values && b.options.values.length) {
							g = d = b.values(e)
						} else {
							g = d = b.value()
						}
						switch (i.keyCode) {
							case a.ui.keyCode.HOME :
								d = b._valueMin();
								break;
							case a.ui.keyCode.END :
								d = b._valueMax();
								break;
							case a.ui.keyCode.UP :
							case a.ui.keyCode.RIGHT :
								if (g == b._valueMax()) {
									return
								}
								d = g + h;
								break;
							case a.ui.keyCode.DOWN :
							case a.ui.keyCode.LEFT :
								if (g == b._valueMin()) {
									return
								}
								d = g - h;
								break
						}
						b._slide(i, e, d);
						return f
					}).keyup(function(e) {
						var d = a(this).data("index.ui-slider-handle");
						if (b._keySliding) {
							b._stop(e, d);
							b._change(e, d);
							b._keySliding = false;
							a(this).removeClass("ui-state-active")
						}
					});
			this._refreshValue()
		},
		destroy : function() {
			this.handles.remove();
			this.range.remove();
			this.element
					.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all")
					.removeData("slider").unbind(".slider");
			this._mouseDestroy()
		},
		_mouseCapture : function(d) {
			var e = this.options;
			if (e.disabled) {
				return false
			}
			this.elementSize = {
				width : this.element.outerWidth(),
				height : this.element.outerHeight()
			};
			this.elementOffset = this.element.offset();
			var h = {
				x : d.pageX,
				y : d.pageY
			};
			var j = this._normValueFromMouse(h);
			var c = this._valueMax() - this._valueMin() + 1, f;
			var k = this, i;
			this.handles.each(function(l) {
						var m = Math.abs(j - k.values(l));
						if (c > m) {
							c = m;
							f = a(this);
							i = l
						}
					});
			if (e.range == true && this.values(1) == e.min) {
				f = a(this.handles[++i])
			}
			this._start(d, i);
			k._handleIndex = i;
			f.addClass("ui-state-active").focus();
			var g = f.offset();
			var b = !a(d.target).parents().andSelf().is(".ui-slider-handle");
			this._clickOffset = b ? {
				left : 0,
				top : 0
			} : {
				left : d.pageX - g.left - (f.width() / 2),
				top : d.pageY - g.top - (f.height() / 2)
						- (parseInt(f.css("borderTopWidth"), 10) || 0)
						- (parseInt(f.css("borderBottomWidth"), 10) || 0)
						+ (parseInt(f.css("marginTop"), 10) || 0)
			};
			j = this._normValueFromMouse(h);
			this._slide(d, i, j);
			return true
		},
		_mouseStart : function(b) {
			return true
		},
		_mouseDrag : function(d) {
			var b = {
				x : d.pageX,
				y : d.pageY
			};
			var c = this._normValueFromMouse(b);
			this._slide(d, this._handleIndex, c);
			return false
		},
		_mouseStop : function(b) {
			this.handles.removeClass("ui-state-active");
			this._stop(b, this._handleIndex);
			this._change(b, this._handleIndex);
			this._handleIndex = null;
			this._clickOffset = null;
			return false
		},
		_detectOrientation : function() {
			this.orientation = this.options.orientation == "vertical"
					? "vertical"
					: "horizontal"
		},
		_normValueFromMouse : function(d) {
			var c, h;
			if ("horizontal" == this.orientation) {
				c = this.elementSize.width;
				h = d.x - this.elementOffset.left
						- (this._clickOffset ? this._clickOffset.left : 0)
			} else {
				c = this.elementSize.height;
				h = d.y - this.elementOffset.top
						- (this._clickOffset ? this._clickOffset.top : 0)
			}
			var f = (h / c);
			if (f > 1) {
				f = 1
			}
			if (f < 0) {
				f = 0
			}
			if ("vertical" == this.orientation) {
				f = 1 - f
			}
			var e = this._valueMax() - this._valueMin(), i = f * e, b = i
					% this.options.step, g = this._valueMin() + i - b;
			if (b > (this.options.step / 2)) {
				g += this.options.step
			}
			return parseFloat(g.toFixed(5))
		},
		_start : function(d, c) {
			var b = {
				handle : this.handles[c],
				value : this.value()
			};
			if (this.options.values && this.options.values.length) {
				b.value = this.values(c);
				b.values = this.values()
			}
			this._trigger("start", d, b)
		},
		_slide : function(f, e, d) {
			var g = this.handles[e];
			if (this.options.values && this.options.values.length) {
				var b = this.values(e ? 0 : 1);
				if ((this.options.values.length == 2 && this.options.range === true)
						&& ((e == 0 && d > b) || (e == 1 && d < b))) {
					d = b
				}
				if (d != this.values(e)) {
					var c = this.values();
					c[e] = d;
					var h = this._trigger("slide", f, {
								handle : this.handles[e],
								value : d,
								values : c
							});
					var b = this.values(e ? 0 : 1);
					if (h !== false) {
						this
								.values(
										e,
										d,
										(f.type == "mousedown" && this.options.animate),
										true)
					}
				}
			} else {
				if (d != this.value()) {
					var h = this._trigger("slide", f, {
								handle : this.handles[e],
								value : d
							});
					if (h !== false) {
						this
								._setData(
										"value",
										d,
										(f.type == "mousedown" && this.options.animate))
					}
				}
			}
		},
		_stop : function(d, c) {
			var b = {
				handle : this.handles[c],
				value : this.value()
			};
			if (this.options.values && this.options.values.length) {
				b.value = this.values(c);
				b.values = this.values()
			}
			this._trigger("stop", d, b)
		},
		_change : function(d, c) {
			var b = {
				handle : this.handles[c],
				value : this.value()
			};
			if (this.options.values && this.options.values.length) {
				b.value = this.values(c);
				b.values = this.values()
			}
			this._trigger("change", d, b)
		},
		value : function(b) {
			if (arguments.length) {
				this._setData("value", b);
				this._change(null, 0)
			}
			return this._value()
		},
		values : function(b, e, c, d) {
			if (arguments.length > 1) {
				this.options.values[b] = e;
				this._refreshValue(c);
				if (!d) {
					this._change(null, b)
				}
			}
			if (arguments.length) {
				if (this.options.values && this.options.values.length) {
					return this._values(b)
				} else {
					return this.value()
				}
			} else {
				return this._values()
			}
		},
		_setData : function(b, d, c) {
			a.widget.prototype._setData.apply(this, arguments);
			switch (b) {
				case "disabled" :
					if (d) {
						this.handles.filter(".ui-state-focus").blur();
						this.handles.removeClass("ui-state-hover");
						this.handles.attr("disabled", "disabled")
					} else {
						this.handles.removeAttr("disabled")
					}
				case "orientation" :
					this._detectOrientation();
					this.element
							.removeClass("ui-slider-horizontal ui-slider-vertical")
							.addClass("ui-slider-" + this.orientation);
					this._refreshValue(c);
					break;
				case "value" :
					this._refreshValue(c);
					break
			}
		},
		_step : function() {
			var b = this.options.step;
			return b
		},
		_value : function() {
			var b = this.options.value;
			if (b < this._valueMin()) {
				b = this._valueMin()
			}
			if (b > this._valueMax()) {
				b = this._valueMax()
			}
			return b
		},
		_values : function(b) {
			if (arguments.length) {
				var c = this.options.values[b];
				if (c < this._valueMin()) {
					c = this._valueMin()
				}
				if (c > this._valueMax()) {
					c = this._valueMax()
				}
				return c
			} else {
				return this.options.values
			}
		},
		_valueMin : function() {
			var b = this.options.min;
			return b
		},
		_valueMax : function() {
			var b = this.options.max;
			return b
		},
		_refreshValue : function(c) {
			var f = this.options.range, d = this.options, l = this;
			if (this.options.values && this.options.values.length) {
				var i, h;
				this.handles.each(function(p, n) {
					var o = (l.values(p) - l._valueMin())
							/ (l._valueMax() - l._valueMin()) * 100;
					var m = {};
					m[l.orientation == "horizontal" ? "left" : "bottom"] = o
							+ "%";
					a(this).stop(1, 1)[c ? "animate" : "css"](m, d.animate);
					if (l.options.range === true) {
						if (l.orientation == "horizontal") {
							(p == 0)
									&& l.range.stop(1, 1)[c ? "animate" : "css"](
											{
												left : o + "%"
											}, d.animate);
							(p == 1) && l.range[c ? "animate" : "css"]({
										width : (o - lastValPercent) + "%"
									}, {
										queue : false,
										duration : d.animate
									})
						} else {
							(p == 0)
									&& l.range.stop(1, 1)[c ? "animate" : "css"](
											{
												bottom : (o) + "%"
											}, d.animate);
							(p == 1) && l.range[c ? "animate" : "css"]({
										height : (o - lastValPercent) + "%"
									}, {
										queue : false,
										duration : d.animate
									})
						}
					}
					lastValPercent = o
				})
			} else {
				var j = this.value(), g = this._valueMin(), k = this
						._valueMax(), e = k != g ? (j - g) / (k - g) * 100 : 0;
				var b = {};
				b[l.orientation == "horizontal" ? "left" : "bottom"] = e + "%";
				this.handle.stop(1, 1)[c ? "animate" : "css"](b, d.animate);
				(f == "min") && (this.orientation == "horizontal")
						&& this.range.stop(1, 1)[c ? "animate" : "css"]({
									width : e + "%"
								}, d.animate);
				(f == "max") && (this.orientation == "horizontal")
						&& this.range[c ? "animate" : "css"]({
									width : (100 - e) + "%"
								}, {
									queue : false,
									duration : d.animate
								});
				(f == "min") && (this.orientation == "vertical")
						&& this.range.stop(1, 1)[c ? "animate" : "css"]({
									height : e + "%"
								}, d.animate);
				(f == "max") && (this.orientation == "vertical")
						&& this.range[c ? "animate" : "css"]({
									height : (100 - e) + "%"
								}, {
									queue : false,
									duration : d.animate
								})
			}
		}
	}));
	a.extend(a.ui.slider, {
				getter : "value values",
				version : "1.7.2",
				eventPrefix : "slide",
				defaults : {
					animate : false,
					delay : 0,
					distance : 0,
					max : 100,
					min : 0,
					orientation : "horizontal",
					range : false,
					step : 1,
					value : 0,
					values : null
				}
			})
})(jQuery);;/*
			 * jQuery UI Tabs 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Tabs
			 * 
			 * Depends: ui.core.js
			 */
(function(a) {
	a.widget("ui.tabs", {
		_init : function() {
			if (this.options.deselectable !== undefined) {
				this.options.collapsible = this.options.deselectable
			}
			this._tabify(true)
		},
		_setData : function(b, c) {
			if (b == "selected") {
				if (this.options.collapsible && c == this.options.selected) {
					return
				}
				this.select(c)
			} else {
				this.options[b] = c;
				if (b == "deselectable") {
					this.options.collapsible = c
				}
				this._tabify()
			}
		},
		_tabId : function(b) {
			return b.title
					&& b.title.replace(/\s/g, "_").replace(
							/[^A-Za-z0-9\-_:\.]/g, "") || this.options.idPrefix
					+ a.data(b)
		},
		_sanitizeSelector : function(b) {
			return b.replace(/:/g, "\\:")
		},
		_cookie : function() {
			var b = this.cookie
					|| (this.cookie = this.options.cookie.name || "ui-tabs-"
							+ a.data(this.list[0]));
			return a.cookie.apply(null, [b].concat(a.makeArray(arguments)))
		},
		_ui : function(c, b) {
			return {
				tab : c,
				panel : b,
				index : this.anchors.index(c)
			}
		},
		_cleanup : function() {
			this.lis.filter(".ui-state-processing")
					.removeClass("ui-state-processing")
					.find("span:data(label.tabs)").each(function() {
								var b = a(this);
								b.html(b.data("label.tabs"))
										.removeData("label.tabs")
							})
		},
		_tabify : function(n) {
			this.list = this.element.children("ul:first");
			this.lis = a("li:has(a[href])", this.list);
			this.anchors = this.lis.map(function() {
						return a("a", this)[0]
					});
			this.panels = a([]);
			var p = this, d = this.options;
			var c = /^#.+/;
			this.anchors.each(function(r, o) {
				var q = a(o).attr("href");
				var s = q.split("#")[0], u;
				if (s
						&& (s === location.toString().split("#")[0] || (u = a("base")[0])
								&& s === u.href)) {
					q = o.hash;
					o.href = q
				}
				if (c.test(q)) {
					p.panels = p.panels.add(p._sanitizeSelector(q))
				} else {
					if (q != "#") {
						a.data(o, "href.tabs", q);
						a.data(o, "load.tabs", q.replace(/#.*$/, ""));
						var w = p._tabId(o);
						o.href = "#" + w;
						var v = a("#" + w);
						if (!v.length) {
							v = a(d.panelTemplate)
									.attr("id", w)
									.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom")
									.insertAfter(p.panels[r - 1] || p.list);
							v.data("destroy.tabs", true)
						}
						p.panels = p.panels.add(v)
					} else {
						d.disabled.push(r)
					}
				}
			});
			if (n) {
				this.element
						.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
				this.list
						.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");
				this.lis.addClass("ui-state-default ui-corner-top");
				this.panels
						.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");
				if (d.selected === undefined) {
					if (location.hash) {
						this.anchors.each(function(q, o) {
									if (o.hash == location.hash) {
										d.selected = q;
										return false
									}
								})
					}
					if (typeof d.selected != "number" && d.cookie) {
						d.selected = parseInt(p._cookie(), 10)
					}
					if (typeof d.selected != "number"
							&& this.lis.filter(".ui-tabs-selected").length) {
						d.selected = this.lis.index(this.lis
								.filter(".ui-tabs-selected"))
					}
					d.selected = d.selected || 0
				} else {
					if (d.selected === null) {
						d.selected = -1
					}
				}
				d.selected = ((d.selected >= 0 && this.anchors[d.selected]) || d.selected < 0)
						? d.selected
						: 0;
				d.disabled = a.unique(d.disabled.concat(a.map(this.lis
								.filter(".ui-state-disabled"), function(q, o) {
							return p.lis.index(q)
						}))).sort();
				if (a.inArray(d.selected, d.disabled) != -1) {
					d.disabled.splice(a.inArray(d.selected, d.disabled), 1)
				}
				this.panels.addClass("ui-tabs-hide");
				this.lis.removeClass("ui-tabs-selected ui-state-active");
				if (d.selected >= 0 && this.anchors.length) {
					this.panels.eq(d.selected).removeClass("ui-tabs-hide");
					this.lis.eq(d.selected)
							.addClass("ui-tabs-selected ui-state-active");
					p.element.queue("tabs", function() {
								p._trigger("show", null, p._ui(
												p.anchors[d.selected],
												p.panels[d.selected]))
							});
					this.load(d.selected)
				}
				a(window).bind("unload", function() {
							p.lis.add(p.anchors).unbind(".tabs");
							p.lis = p.anchors = p.panels = null
						})
			} else {
				d.selected = this.lis.index(this.lis
						.filter(".ui-tabs-selected"))
			}
			this.element[d.collapsible ? "addClass" : "removeClass"]("ui-tabs-collapsible");
			if (d.cookie) {
				this._cookie(d.selected, d.cookie)
			}
			for (var g = 0, m; (m = this.lis[g]); g++) {
				a(m)[a.inArray(g, d.disabled) != -1
						&& !a(m).hasClass("ui-tabs-selected")
						? "addClass"
						: "removeClass"]("ui-state-disabled")
			}
			if (d.cache === false) {
				this.anchors.removeData("cache.tabs")
			}
			this.lis.add(this.anchors).unbind(".tabs");
			if (d.event != "mouseover") {
				var f = function(o, i) {
					if (i.is(":not(.ui-state-disabled)")) {
						i.addClass("ui-state-" + o)
					}
				};
				var j = function(o, i) {
					i.removeClass("ui-state-" + o)
				};
				this.lis.bind("mouseover.tabs", function() {
							f("hover", a(this))
						});
				this.lis.bind("mouseout.tabs", function() {
							j("hover", a(this))
						});
				this.anchors.bind("focus.tabs", function() {
							f("focus", a(this).closest("li"))
						});
				this.anchors.bind("blur.tabs", function() {
							j("focus", a(this).closest("li"))
						})
			}
			var b, h;
			if (d.fx) {
				if (a.isArray(d.fx)) {
					b = d.fx[0];
					h = d.fx[1]
				} else {
					b = h = d.fx
				}
			}
			function e(i, o) {
				i.css({
							display : ""
						});
				if (a.browser.msie && o.opacity) {
					i[0].style.removeAttribute("filter")
				}
			}
			var k = h ? function(i, o) {
				a(i).closest("li").removeClass("ui-state-default")
						.addClass("ui-tabs-selected ui-state-active");
				o.hide().removeClass("ui-tabs-hide").animate(h,
						h.duration || "normal", function() {
							e(o, h);
							p._trigger("show", null, p._ui(i, o[0]))
						})
			} : function(i, o) {
				a(i).closest("li").removeClass("ui-state-default")
						.addClass("ui-tabs-selected ui-state-active");
				o.removeClass("ui-tabs-hide");
				p._trigger("show", null, p._ui(i, o[0]))
			};
			var l = b ? function(o, i) {
				i.animate(b, b.duration || "normal", function() {
							p.lis
									.removeClass("ui-tabs-selected ui-state-active")
									.addClass("ui-state-default");
							i.addClass("ui-tabs-hide");
							e(i, b);
							p.element.dequeue("tabs")
						})
			}
					: function(o, i, q) {
						p.lis.removeClass("ui-tabs-selected ui-state-active")
								.addClass("ui-state-default");
						i.addClass("ui-tabs-hide");
						p.element.dequeue("tabs")
					};
			this.anchors.bind(d.event + ".tabs", function() {
				var o = this, r = a(this).closest("li"), i = p.panels
						.filter(":not(.ui-tabs-hide)"), q = a(p
						._sanitizeSelector(this.hash));
				if ((r.hasClass("ui-tabs-selected") && !d.collapsible)
						|| r.hasClass("ui-state-disabled")
						|| r.hasClass("ui-state-processing")
						|| p._trigger("select", null, p._ui(this, q[0])) === false) {
					this.blur();
					return false
				}
				d.selected = p.anchors.index(this);
				p.abort();
				if (d.collapsible) {
					if (r.hasClass("ui-tabs-selected")) {
						d.selected = -1;
						if (d.cookie) {
							p._cookie(d.selected, d.cookie)
						}
						p.element.queue("tabs", function() {
									l(o, i)
								}).dequeue("tabs");
						this.blur();
						return false
					} else {
						if (!i.length) {
							if (d.cookie) {
								p._cookie(d.selected, d.cookie)
							}
							p.element.queue("tabs", function() {
										k(o, q)
									});
							p.load(p.anchors.index(this));
							this.blur();
							return false
						}
					}
				}
				if (d.cookie) {
					p._cookie(d.selected, d.cookie)
				}
				if (q.length) {
					if (i.length) {
						p.element.queue("tabs", function() {
									l(o, i)
								})
					}
					p.element.queue("tabs", function() {
								k(o, q)
							});
					p.load(p.anchors.index(this))
				} else {
					throw "jQuery UI Tabs: Mismatching fragment identifier."
				}
				if (a.browser.msie) {
					this.blur()
				}
			});
			this.anchors.bind("click.tabs", function() {
						return false
					})
		},
		destroy : function() {
			var b = this.options;
			this.abort();
			this.element
					.unbind(".tabs")
					.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible")
					.removeData("tabs");
			this.list
					.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");
			this.anchors.each(function() {
						var c = a.data(this, "href.tabs");
						if (c) {
							this.href = c
						}
						var d = a(this).unbind(".tabs");
						a.each(["href", "load", "cache"], function(e, f) {
									d.removeData(f + ".tabs")
								})
					});
			this.lis.unbind(".tabs").add(this.panels).each(function() {
				if (a.data(this, "destroy.tabs")) {
					a(this).remove()
				} else {
					a(this).removeClass(["ui-state-default", "ui-corner-top",
							"ui-tabs-selected", "ui-state-active",
							"ui-state-hover", "ui-state-focus",
							"ui-state-disabled", "ui-tabs-panel",
							"ui-widget-content", "ui-corner-bottom",
							"ui-tabs-hide"].join(" "))
				}
			});
			if (b.cookie) {
				this._cookie(null, b.cookie)
			}
		},
		add : function(e, d, c) {
			if (c === undefined) {
				c = this.anchors.length
			}
			var b = this, g = this.options, i = a(g.tabTemplate.replace(
					/#\{href\}/g, e).replace(/#\{label\}/g, d)), h = !e
					.indexOf("#") ? e.replace("#", "") : this
					._tabId(a("a", i)[0]);
			i.addClass("ui-state-default ui-corner-top").data("destroy.tabs",
					true);
			var f = a("#" + h);
			if (!f.length) {
				f = a(g.panelTemplate).attr("id", h).data("destroy.tabs", true)
			}
			f
					.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");
			if (c >= this.lis.length) {
				i.appendTo(this.list);
				f.appendTo(this.list[0].parentNode)
			} else {
				i.insertBefore(this.lis[c]);
				f.insertBefore(this.panels[c])
			}
			g.disabled = a.map(g.disabled, function(k, j) {
						return k >= c ? ++k : k
					});
			this._tabify();
			if (this.anchors.length == 1) {
				i.addClass("ui-tabs-selected ui-state-active");
				f.removeClass("ui-tabs-hide");
				this.element.queue("tabs", function() {
							b._trigger("show", null, b._ui(b.anchors[0],
											b.panels[0]))
						});
				this.load(0)
			}
			this._trigger("add", null, this
							._ui(this.anchors[c], this.panels[c]))
		},
		remove : function(b) {
			var d = this.options, e = this.lis.eq(b).remove(), c = this.panels
					.eq(b).remove();
			if (e.hasClass("ui-tabs-selected") && this.anchors.length > 1) {
				this.select(b + (b + 1 < this.anchors.length ? 1 : -1))
			}
			d.disabled = a.map(a.grep(d.disabled, function(g, f) {
								return g != b
							}), function(g, f) {
						return g >= b ? --g : g
					});
			this._tabify();
			this._trigger("remove", null, this._ui(e.find("a")[0], c[0]))
		},
		enable : function(b) {
			var c = this.options;
			if (a.inArray(b, c.disabled) == -1) {
				return
			}
			this.lis.eq(b).removeClass("ui-state-disabled");
			c.disabled = a.grep(c.disabled, function(e, d) {
						return e != b
					});
			this._trigger("enable", null, this._ui(this.anchors[b],
							this.panels[b]))
		},
		disable : function(c) {
			var b = this, d = this.options;
			if (c != d.selected) {
				this.lis.eq(c).addClass("ui-state-disabled");
				d.disabled.push(c);
				d.disabled.sort();
				this._trigger("disable", null, this._ui(this.anchors[c],
								this.panels[c]))
			}
		},
		select : function(b) {
			if (typeof b == "string") {
				b = this.anchors
						.index(this.anchors.filter("[href$=" + b + "]"))
			} else {
				if (b === null) {
					b = -1
				}
			}
			if (b == -1 && this.options.collapsible) {
				b = this.options.selected
			}
			this.anchors.eq(b).trigger(this.options.event + ".tabs")
		},
		load : function(e) {
			var c = this, g = this.options, b = this.anchors.eq(e)[0], d = a
					.data(b, "load.tabs");
			this.abort();
			if (!d || this.element.queue("tabs").length !== 0
					&& a.data(b, "cache.tabs")) {
				this.element.dequeue("tabs");
				return
			}
			this.lis.eq(e).addClass("ui-state-processing");
			if (g.spinner) {
				var f = a("span", b);
				f.data("label.tabs", f.html()).html(g.spinner)
			}
			this.xhr = a.ajax(a.extend({}, g.ajaxOptions, {
						url : d,
						success : function(i, h) {
							a(c._sanitizeSelector(b.hash)).html(i);
							c._cleanup();
							if (g.cache) {
								a.data(b, "cache.tabs", true)
							}
							c._trigger("load", null, c._ui(c.anchors[e],
											c.panels[e]));
							try {
								g.ajaxOptions.success(i, h)
							} catch (j) {
							}
							c.element.dequeue("tabs")
						}
					}))
		},
		abort : function() {
			this.element.queue([]);
			this.panels.stop(false, true);
			if (this.xhr) {
				this.xhr.abort();
				delete this.xhr
			}
			this._cleanup()
		},
		url : function(c, b) {
			this.anchors.eq(c).removeData("cache.tabs").data("load.tabs", b)
		},
		length : function() {
			return this.anchors.length
		}
	});
	a.extend(a.ui.tabs, {
		version : "1.7.2",
		getter : "length",
		defaults : {
			ajaxOptions : null,
			cache : false,
			cookie : null,
			collapsible : false,
			disabled : [],
			event : "click",
			fx : null,
			idPrefix : "ui-tabs-",
			panelTemplate : "<div></div>",
			spinner : "<em>Loading&#8230;</em>",
			tabTemplate : '<li><a href="#{href}"><span>#{label}</span></a></li>'
		}
	});
	a.extend(a.ui.tabs.prototype, {
				rotation : null,
				rotate : function(d, f) {
					var b = this, g = this.options;
					var c = b._rotate || (b._rotate = function(h) {
						clearTimeout(b.rotation);
						b.rotation = setTimeout(function() {
									var i = g.selected;
									b.select(++i < b.anchors.length ? i : 0)
								}, d);
						if (h) {
							h.stopPropagation()
						}
					});
					var e = b._unrotate || (b._unrotate = !f ? function(h) {
						if (h.clientX) {
							b.rotate(null)
						}
					} : function(h) {
						t = g.selected;
						c()
					});
					if (d) {
						this.element.bind("tabsshow", c);
						this.anchors.bind(g.event + ".tabs", e);
						c()
					} else {
						clearTimeout(b.rotation);
						this.element.unbind("tabsshow", c);
						this.anchors.unbind(g.event + ".tabs", e);
						delete this._rotate;
						delete this._unrotate
					}
				}
			})
})(jQuery);;/*
			 * jQuery UI Datepicker 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Datepicker
			 * 
			 * Depends: ui.core.js
			 */
(function($) {
	$.extend($.ui, {
				datepicker : {
					version : "1.7.2"
				}
			});
	var PROP_NAME = "datepicker";
	function Datepicker() {
		this.debug = false;
		this._curInst = null;
		this._keyEvent = false;
		this._disabledInputs = [];
		this._datepickerShowing = false;
		this._inDialog = false;
		this._mainDivId = "ui-datepicker-div";
		this._inlineClass = "ui-datepicker-inline";
		this._appendClass = "ui-datepicker-append";
		this._triggerClass = "ui-datepicker-trigger";
		this._dialogClass = "ui-datepicker-dialog";
		this._disableClass = "ui-datepicker-disabled";
		this._unselectableClass = "ui-datepicker-unselectable";
		this._currentClass = "ui-datepicker-current-day";
		this._dayOverClass = "ui-datepicker-days-cell-over";
		this.regional = [];
		this.regional[""] = {
			closeText : "Done",
			prevText : "Prev",
			nextText : "Next",
			currentText : "Today",
			monthNames : ["January", "February", "March", "April", "May",
					"June", "July", "August", "September", "October",
					"November", "December"],
			monthNamesShort : ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
					"Aug", "Sep", "Oct", "Nov", "Dec"],
			dayNames : ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
					"Friday", "Saturday"],
			dayNamesShort : ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
			dayNamesMin : ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
			dateFormat : "mm/dd/yy",
			firstDay : 0,
			isRTL : false
		};
		this._defaults = {
			showOn : "focus",
			showAnim : "show",
			showOptions : {},
			defaultDate : null,
			appendText : "",
			buttonText : "...",
			buttonImage : "",
			buttonImageOnly : false,
			hideIfNoPrevNext : false,
			navigationAsDateFormat : false,
			gotoCurrent : false,
			changeMonth : false,
			changeYear : false,
			showMonthAfterYear : false,
			yearRange : "-10:+10",
			showOtherMonths : false,
			calculateWeek : this.iso8601Week,
			shortYearCutoff : "+10",
			minDate : null,
			maxDate : null,
			duration : "normal",
			beforeShowDay : null,
			beforeShow : null,
			onSelect : null,
			onChangeMonthYear : null,
			onClose : null,
			numberOfMonths : 1,
			showCurrentAtPos : 0,
			stepMonths : 1,
			stepBigMonths : 12,
			altField : "",
			altFormat : "",
			constrainInput : true,
			showButtonPanel : false
		};
		$.extend(this._defaults, this.regional[""]);
		this.dpDiv = $('<div id="'
				+ this._mainDivId
				+ '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>')
	}
	$.extend(Datepicker.prototype, {
		markerClassName : "hasDatepicker",
		log : function() {
			if (this.debug) {
				console.log.apply("", arguments)
			}
		},
		setDefaults : function(settings) {
			extendRemove(this._defaults, settings || {});
			return this
		},
		_attachDatepicker : function(target, settings) {
			var inlineSettings = null;
			for (var attrName in this._defaults) {
				var attrValue = target.getAttribute("date:" + attrName);
				if (attrValue) {
					inlineSettings = inlineSettings || {};
					try {
						inlineSettings[attrName] = eval(attrValue)
					} catch (err) {
						inlineSettings[attrName] = attrValue
					}
				}
			}
			var nodeName = target.nodeName.toLowerCase();
			var inline = (nodeName == "div" || nodeName == "span");
			if (!target.id) {
				target.id = "dp" + (++this.uuid)
			}
			var inst = this._newInst($(target), inline);
			inst.settings = $.extend({}, settings || {}, inlineSettings || {});
			if (nodeName == "input") {
				this._connectDatepicker(target, inst)
			} else {
				if (inline) {
					this._inlineDatepicker(target, inst)
				}
			}
		},
		_newInst : function(target, inline) {
			var id = target[0].id.replace(/([:\[\]\.])/g, "\\\\$1");
			return {
				id : id,
				input : target,
				selectedDay : 0,
				selectedMonth : 0,
				selectedYear : 0,
				drawMonth : 0,
				drawYear : 0,
				inline : inline,
				dpDiv : (!inline
						? this.dpDiv
						: $('<div class="'
								+ this._inlineClass
								+ ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))
			}
		},
		_connectDatepicker : function(target, inst) {
			var input = $(target);
			inst.append = $([]);
			inst.trigger = $([]);
			if (input.hasClass(this.markerClassName)) {
				return
			}
			var appendText = this._get(inst, "appendText");
			var isRTL = this._get(inst, "isRTL");
			if (appendText) {
				inst.append = $('<span class="' + this._appendClass + '">'
						+ appendText + "</span>");
				input[isRTL ? "before" : "after"](inst.append)
			}
			var showOn = this._get(inst, "showOn");
			if (showOn == "focus" || showOn == "both") {
				input.focus(this._showDatepicker)
			}
			if (showOn == "button" || showOn == "both") {
				var buttonText = this._get(inst, "buttonText");
				var buttonImage = this._get(inst, "buttonImage");
				inst.trigger = $(this._get(inst, "buttonImageOnly")
						? $("<img/>").addClass(this._triggerClass).attr({
									src : buttonImage,
									alt : buttonText,
									title : buttonText
								})
						: $('<button type="button"></button>')
								.addClass(this._triggerClass)
								.html(buttonImage == ""
										? buttonText
										: $("<img/>").attr({
													src : buttonImage,
													alt : buttonText,
													title : buttonText
												})));
				input[isRTL ? "before" : "after"](inst.trigger);
				inst.trigger.click(function() {
							if ($.datepicker._datepickerShowing
									&& $.datepicker._lastInput == target) {
								$.datepicker._hideDatepicker()
							} else {
								$.datepicker._showDatepicker(target)
							}
							return false
						})
			}
			input.addClass(this.markerClassName).keydown(this._doKeyDown)
					.keypress(this._doKeyPress).bind("setData.datepicker",
							function(event, key, value) {
								inst.settings[key] = value
							}).bind("getData.datepicker", function(event, key) {
								return this._get(inst, key)
							});
			$.data(target, PROP_NAME, inst)
		},
		_inlineDatepicker : function(target, inst) {
			var divSpan = $(target);
			if (divSpan.hasClass(this.markerClassName)) {
				return
			}
			divSpan.addClass(this.markerClassName).append(inst.dpDiv).bind(
					"setData.datepicker", function(event, key, value) {
						inst.settings[key] = value
					}).bind("getData.datepicker", function(event, key) {
						return this._get(inst, key)
					});
			$.data(target, PROP_NAME, inst);
			this._setDate(inst, this._getDefaultDate(inst));
			this._updateDatepicker(inst);
			this._updateAlternate(inst)
		},
		_dialogDatepicker : function(input, dateText, onSelect, settings, pos) {
			var inst = this._dialogInst;
			if (!inst) {
				var id = "dp" + (++this.uuid);
				this._dialogInput = $('<input type="text" id="'
						+ id
						+ '" size="1" style="position: absolute; top: -100px;"/>');
				this._dialogInput.keydown(this._doKeyDown);
				$("body").append(this._dialogInput);
				inst = this._dialogInst = this._newInst(this._dialogInput,
						false);
				inst.settings = {};
				$.data(this._dialogInput[0], PROP_NAME, inst)
			}
			extendRemove(inst.settings, settings || {});
			this._dialogInput.val(dateText);
			this._pos = (pos
					? (pos.length ? pos : [pos.pageX, pos.pageY])
					: null);
			if (!this._pos) {
				var browserWidth = window.innerWidth
						|| document.documentElement.clientWidth
						|| document.body.clientWidth;
				var browserHeight = window.innerHeight
						|| document.documentElement.clientHeight
						|| document.body.clientHeight;
				var scrollX = document.documentElement.scrollLeft
						|| document.body.scrollLeft;
				var scrollY = document.documentElement.scrollTop
						|| document.body.scrollTop;
				this._pos = [(browserWidth / 2) - 100 + scrollX,
						(browserHeight / 2) - 150 + scrollY]
			}
			this._dialogInput.css("left", this._pos[0] + "px").css("top",
					this._pos[1] + "px");
			inst.settings.onSelect = onSelect;
			this._inDialog = true;
			this.dpDiv.addClass(this._dialogClass);
			this._showDatepicker(this._dialogInput[0]);
			if ($.blockUI) {
				$.blockUI(this.dpDiv)
			}
			$.data(this._dialogInput[0], PROP_NAME, inst);
			return this
		},
		_destroyDatepicker : function(target) {
			var $target = $(target);
			var inst = $.data(target, PROP_NAME);
			if (!$target.hasClass(this.markerClassName)) {
				return
			}
			var nodeName = target.nodeName.toLowerCase();
			$.removeData(target, PROP_NAME);
			if (nodeName == "input") {
				inst.append.remove();
				inst.trigger.remove();
				$target.removeClass(this.markerClassName).unbind("focus",
						this._showDatepicker)
						.unbind("keydown", this._doKeyDown).unbind("keypress",
								this._doKeyPress)
			} else {
				if (nodeName == "div" || nodeName == "span") {
					$target.removeClass(this.markerClassName).empty()
				}
			}
		},
		_enableDatepicker : function(target) {
			var $target = $(target);
			var inst = $.data(target, PROP_NAME);
			if (!$target.hasClass(this.markerClassName)) {
				return
			}
			var nodeName = target.nodeName.toLowerCase();
			if (nodeName == "input") {
				target.disabled = false;
				inst.trigger.filter("button").each(function() {
							this.disabled = false
						}).end().filter("img").css({
							opacity : "1.0",
							cursor : ""
						})
			} else {
				if (nodeName == "div" || nodeName == "span") {
					var inline = $target.children("." + this._inlineClass);
					inline.children().removeClass("ui-state-disabled")
				}
			}
			this._disabledInputs = $.map(this._disabledInputs, function(value) {
						return (value == target ? null : value)
					})
		},
		_disableDatepicker : function(target) {
			var $target = $(target);
			var inst = $.data(target, PROP_NAME);
			if (!$target.hasClass(this.markerClassName)) {
				return
			}
			var nodeName = target.nodeName.toLowerCase();
			if (nodeName == "input") {
				target.disabled = true;
				inst.trigger.filter("button").each(function() {
							this.disabled = true
						}).end().filter("img").css({
							opacity : "0.5",
							cursor : "default"
						})
			} else {
				if (nodeName == "div" || nodeName == "span") {
					var inline = $target.children("." + this._inlineClass);
					inline.children().addClass("ui-state-disabled")
				}
			}
			this._disabledInputs = $.map(this._disabledInputs, function(value) {
						return (value == target ? null : value)
					});
			this._disabledInputs[this._disabledInputs.length] = target
		},
		_isDisabledDatepicker : function(target) {
			if (!target) {
				return false
			}
			for (var i = 0; i < this._disabledInputs.length; i++) {
				if (this._disabledInputs[i] == target) {
					return true
				}
			}
			return false
		},
		_getInst : function(target) {
			try {
				return $.data(target, PROP_NAME)
			} catch (err) {
				throw "Missing instance data for this datepicker"
			}
		},
		_optionDatepicker : function(target, name, value) {
			var inst = this._getInst(target);
			if (arguments.length == 2 && typeof name == "string") {
				return (name == "defaults" ? $.extend({},
						$.datepicker._defaults) : (inst
						? (name == "all" ? $.extend({}, inst.settings) : this
								._get(inst, name))
						: null))
			}
			var settings = name || {};
			if (typeof name == "string") {
				settings = {};
				settings[name] = value
			}
			if (inst) {
				if (this._curInst == inst) {
					this._hideDatepicker(null)
				}
				var date = this._getDateDatepicker(target);
				extendRemove(inst.settings, settings);
				this._setDateDatepicker(target, date);
				this._updateDatepicker(inst)
			}
		},
		_changeDatepicker : function(target, name, value) {
			this._optionDatepicker(target, name, value)
		},
		_refreshDatepicker : function(target) {
			var inst = this._getInst(target);
			if (inst) {
				this._updateDatepicker(inst)
			}
		},
		_setDateDatepicker : function(target, date, endDate) {
			var inst = this._getInst(target);
			if (inst) {
				this._setDate(inst, date, endDate);
				this._updateDatepicker(inst);
				this._updateAlternate(inst)
			}
		},
		_getDateDatepicker : function(target) {
			var inst = this._getInst(target);
			if (inst && !inst.inline) {
				this._setDateFromField(inst)
			}
			return (inst ? this._getDate(inst) : null)
		},
		_doKeyDown : function(event) {
			var inst = $.datepicker._getInst(event.target);
			var handled = true;
			var isRTL = inst.dpDiv.is(".ui-datepicker-rtl");
			inst._keyEvent = true;
			if ($.datepicker._datepickerShowing) {
				switch (event.keyCode) {
					case 9 :
						$.datepicker._hideDatepicker(null, "");
						break;
					case 13 :
						var sel = $("td." + $.datepicker._dayOverClass
										+ ", td." + $.datepicker._currentClass,
								inst.dpDiv);
						if (sel[0]) {
							$.datepicker._selectDay(event.target,
									inst.selectedMonth, inst.selectedYear,
									sel[0])
						} else {
							$.datepicker._hideDatepicker(null, $.datepicker
											._get(inst, "duration"))
						}
						return false;
						break;
					case 27 :
						$.datepicker._hideDatepicker(null, $.datepicker._get(
										inst, "duration"));
						break;
					case 33 :
						$.datepicker
								._adjustDate(event.target, (event.ctrlKey
												? -$.datepicker._get(inst,
														"stepBigMonths")
												: -$.datepicker._get(inst,
														"stepMonths")), "M");
						break;
					case 34 :
						$.datepicker
								._adjustDate(event.target, (event.ctrlKey
												? +$.datepicker._get(inst,
														"stepBigMonths")
												: +$.datepicker._get(inst,
														"stepMonths")), "M");
						break;
					case 35 :
						if (event.ctrlKey || event.metaKey) {
							$.datepicker._clearDate(event.target)
						}
						handled = event.ctrlKey || event.metaKey;
						break;
					case 36 :
						if (event.ctrlKey || event.metaKey) {
							$.datepicker._gotoToday(event.target)
						}
						handled = event.ctrlKey || event.metaKey;
						break;
					case 37 :
						if (event.ctrlKey || event.metaKey) {
							$.datepicker._adjustDate(event.target, (isRTL
											? +1
											: -1), "D")
						}
						handled = event.ctrlKey || event.metaKey;
						if (event.originalEvent.altKey) {
							$.datepicker._adjustDate(event.target,
									(event.ctrlKey ? -$.datepicker._get(inst,
											"stepBigMonths") : -$.datepicker
											._get(inst, "stepMonths")), "M")
						}
						break;
					case 38 :
						if (event.ctrlKey || event.metaKey) {
							$.datepicker._adjustDate(event.target, -7, "D")
						}
						handled = event.ctrlKey || event.metaKey;
						break;
					case 39 :
						if (event.ctrlKey || event.metaKey) {
							$.datepicker._adjustDate(event.target, (isRTL
											? -1
											: +1), "D")
						}
						handled = event.ctrlKey || event.metaKey;
						if (event.originalEvent.altKey) {
							$.datepicker._adjustDate(event.target,
									(event.ctrlKey ? +$.datepicker._get(inst,
											"stepBigMonths") : +$.datepicker
											._get(inst, "stepMonths")), "M")
						}
						break;
					case 40 :
						if (event.ctrlKey || event.metaKey) {
							$.datepicker._adjustDate(event.target, +7, "D")
						}
						handled = event.ctrlKey || event.metaKey;
						break;
					default :
						handled = false
				}
			} else {
				if (event.keyCode == 36 && event.ctrlKey) {
					$.datepicker._showDatepicker(this)
				} else {
					handled = false
				}
			}
			if (handled) {
				event.preventDefault();
				event.stopPropagation()
			}
		},
		_doKeyPress : function(event) {
			var inst = $.datepicker._getInst(event.target);
			if ($.datepicker._get(inst, "constrainInput")) {
				var chars = $.datepicker._possibleChars($.datepicker._get(inst,
						"dateFormat"));
				var chr = String.fromCharCode(event.charCode == undefined
						? event.keyCode
						: event.charCode);
				return event.ctrlKey
						|| (chr < " " || !chars || chars.indexOf(chr) > -1)
			}
		},
		_showDatepicker : function(input) {
			input = input.target || input;
			if (input.nodeName.toLowerCase() != "input") {
				input = $("input", input.parentNode)[0]
			}
			if ($.datepicker._isDisabledDatepicker(input)
					|| $.datepicker._lastInput == input) {
				return
			}
			var inst = $.datepicker._getInst(input);
			var beforeShow = $.datepicker._get(inst, "beforeShow");
			extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [
									input, inst]) : {}));
			$.datepicker._hideDatepicker(null, "");
			$.datepicker._lastInput = input;
			$.datepicker._setDateFromField(inst);
			if ($.datepicker._inDialog) {
				input.value = ""
			}
			if (!$.datepicker._pos) {
				$.datepicker._pos = $.datepicker._findPos(input);
				$.datepicker._pos[1] += input.offsetHeight
			}
			var isFixed = false;
			$(input).parents().each(function() {
						isFixed |= $(this).css("position") == "fixed";
						return !isFixed
					});
			if (isFixed && $.browser.opera) {
				$.datepicker._pos[0] -= document.documentElement.scrollLeft;
				$.datepicker._pos[1] -= document.documentElement.scrollTop
			}
			var offset = {
				left : $.datepicker._pos[0],
				top : $.datepicker._pos[1]
			};
			$.datepicker._pos = null;
			inst.rangeStart = null;
			inst.dpDiv.css({
						position : "absolute",
						display : "block",
						top : "-1000px"
					});
			$.datepicker._updateDatepicker(inst);
			offset = $.datepicker._checkOffset(inst, offset, isFixed);
			inst.dpDiv.css({
						position : ($.datepicker._inDialog && $.blockUI
								? "static"
								: (isFixed ? "fixed" : "absolute")),
						display : "none",
						left : offset.left + "px",
						top : offset.top + "px"
					});
			if (!inst.inline) {
				var showAnim = $.datepicker._get(inst, "showAnim") || "show";
				var duration = $.datepicker._get(inst, "duration");
				var postProcess = function() {
					$.datepicker._datepickerShowing = true;
					if ($.browser.msie && parseInt($.browser.version, 10) < 7) {
						$("iframe.ui-datepicker-cover").css({
									width : inst.dpDiv.width() + 4,
									height : inst.dpDiv.height() + 4
								})
					}
				};
				if ($.effects && $.effects[showAnim]) {
					inst.dpDiv.show(showAnim, $.datepicker._get(inst,
									"showOptions"), duration, postProcess)
				} else {
					inst.dpDiv[showAnim](duration, postProcess)
				}
				if (duration == "") {
					postProcess()
				}
				if (inst.input[0].type != "hidden") {
					inst.input[0].focus()
				}
				$.datepicker._curInst = inst
			}
		},
		_updateDatepicker : function(inst) {
			var dims = {
				width : inst.dpDiv.width() + 4,
				height : inst.dpDiv.height() + 4
			};
			var self = this;
			inst.dpDiv
					.empty()
					.append(this._generateHTML(inst))
					.find("iframe.ui-datepicker-cover")
					.css({
								width : dims.width,
								height : dims.height
							})
					.end()
					.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a")
					.bind("mouseout", function() {
						$(this).removeClass("ui-state-hover");
						if (this.className.indexOf("ui-datepicker-prev") != -1) {
							$(this).removeClass("ui-datepicker-prev-hover")
						}
						if (this.className.indexOf("ui-datepicker-next") != -1) {
							$(this).removeClass("ui-datepicker-next-hover")
						}
					})
					.bind("mouseover", function() {
						if (!self._isDisabledDatepicker(inst.inline
								? inst.dpDiv.parent()[0]
								: inst.input[0])) {
							$(this).parents(".ui-datepicker-calendar")
									.find("a").removeClass("ui-state-hover");
							$(this).addClass("ui-state-hover");
							if (this.className.indexOf("ui-datepicker-prev") != -1) {
								$(this).addClass("ui-datepicker-prev-hover")
							}
							if (this.className.indexOf("ui-datepicker-next") != -1) {
								$(this).addClass("ui-datepicker-next-hover")
							}
						}
					}).end().find("." + this._dayOverClass + " a")
					.trigger("mouseover").end();
			var numMonths = this._getNumberOfMonths(inst);
			var cols = numMonths[1];
			var width = 17;
			if (cols > 1) {
				inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width",
						(width * cols) + "em")
			} else {
				inst.dpDiv
						.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4")
						.width("")
			}
			inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1
					? "add"
					: "remove")
					+ "Class"]("ui-datepicker-multi");
			inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") + "Class"]("ui-datepicker-rtl");
			if (inst.input && inst.input[0].type != "hidden"
					&& inst == $.datepicker._curInst) {
				$(inst.input[0]).focus()
			}
		},
		_checkOffset : function(inst, offset, isFixed) {
			var dpWidth = inst.dpDiv.outerWidth();
			var dpHeight = inst.dpDiv.outerHeight();
			var inputWidth = inst.input ? inst.input.outerWidth() : 0;
			var inputHeight = inst.input ? inst.input.outerHeight() : 0;
			var viewWidth = (window.innerWidth
					|| document.documentElement.clientWidth || document.body.clientWidth)
					+ $(document).scrollLeft();
			var viewHeight = (window.innerHeight
					|| document.documentElement.clientHeight || document.body.clientHeight)
					+ $(document).scrollTop();
			offset.left -= (this._get(inst, "isRTL")
					? (dpWidth - inputWidth)
					: 0);
			offset.left -= (isFixed && offset.left == inst.input.offset().left)
					? $(document).scrollLeft()
					: 0;
			offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight))
					? $(document).scrollTop()
					: 0;
			offset.left -= (offset.left + dpWidth > viewWidth && viewWidth > dpWidth)
					? Math.abs(offset.left + dpWidth - viewWidth)
					: 0;
			offset.top -= (offset.top + dpHeight > viewHeight && viewHeight > dpHeight)
					? Math.abs(offset.top + dpHeight + inputHeight * 2
							- viewHeight)
					: 0;
			return offset
		},
		_findPos : function(obj) {
			while (obj && (obj.type == "hidden" || obj.nodeType != 1)) {
				obj = obj.nextSibling
			}
			var position = $(obj).offset();
			return [position.left, position.top]
		},
		_hideDatepicker : function(input, duration) {
			var inst = this._curInst;
			if (!inst || (input && inst != $.data(input, PROP_NAME))) {
				return
			}
			if (inst.stayOpen) {
				this._selectDate("#" + inst.id, this._formatDate(inst,
								inst.currentDay, inst.currentMonth,
								inst.currentYear))
			}
			inst.stayOpen = false;
			if (this._datepickerShowing) {
				duration = (duration != null ? duration : this._get(inst,
						"duration"));
				var showAnim = this._get(inst, "showAnim");
				var postProcess = function() {
					$.datepicker._tidyDialog(inst)
				};
				if (duration != "" && $.effects && $.effects[showAnim]) {
					inst.dpDiv.hide(showAnim, $.datepicker._get(inst,
									"showOptions"), duration, postProcess)
				} else {
					inst.dpDiv[(duration == ""
							? "hide"
							: (showAnim == "slideDown"
									? "slideUp"
									: (showAnim == "fadeIn"
											? "fadeOut"
											: "hide")))](duration, postProcess)
				}
				if (duration == "") {
					this._tidyDialog(inst)
				}
				var onClose = this._get(inst, "onClose");
				if (onClose) {
					onClose
							.apply(
									(inst.input ? inst.input[0] : null),
									[(inst.input ? inst.input.val() : ""), inst])
				}
				this._datepickerShowing = false;
				this._lastInput = null;
				if (this._inDialog) {
					this._dialogInput.css({
								position : "absolute",
								left : "0",
								top : "-100px"
							});
					if ($.blockUI) {
						$.unblockUI();
						$("body").append(this.dpDiv)
					}
				}
				this._inDialog = false
			}
			this._curInst = null
		},
		_tidyDialog : function(inst) {
			inst.dpDiv.removeClass(this._dialogClass)
					.unbind(".ui-datepicker-calendar")
		},
		_checkExternalClick : function(event) {
			if (!$.datepicker._curInst) {
				return
			}
			var $target = $(event.target);
			if (($target.parents("#" + $.datepicker._mainDivId).length == 0)
					&& !$target.hasClass($.datepicker.markerClassName)
					&& !$target.hasClass($.datepicker._triggerClass)
					&& $.datepicker._datepickerShowing
					&& !($.datepicker._inDialog && $.blockUI)) {
				$.datepicker._hideDatepicker(null, "")
			}
		},
		_adjustDate : function(id, offset, period) {
			var target = $(id);
			var inst = this._getInst(target[0]);
			if (this._isDisabledDatepicker(target[0])) {
				return
			}
			this._adjustInstDate(inst, offset
							+ (period == "M" ? this._get(inst,
									"showCurrentAtPos") : 0), period);
			this._updateDatepicker(inst)
		},
		_gotoToday : function(id) {
			var target = $(id);
			var inst = this._getInst(target[0]);
			if (this._get(inst, "gotoCurrent") && inst.currentDay) {
				inst.selectedDay = inst.currentDay;
				inst.drawMonth = inst.selectedMonth = inst.currentMonth;
				inst.drawYear = inst.selectedYear = inst.currentYear
			} else {
				var date = new Date();
				inst.selectedDay = date.getDate();
				inst.drawMonth = inst.selectedMonth = date.getMonth();
				inst.drawYear = inst.selectedYear = date.getFullYear()
			}
			this._notifyChange(inst);
			this._adjustDate(target)
		},
		_selectMonthYear : function(id, select, period) {
			var target = $(id);
			var inst = this._getInst(target[0]);
			inst._selectingMonthYear = false;
			inst["selected" + (period == "M" ? "Month" : "Year")] = inst["draw"
					+ (period == "M" ? "Month" : "Year")] = parseInt(
					select.options[select.selectedIndex].value, 10);
			this._notifyChange(inst);
			this._adjustDate(target)
		},
		_clickMonthYear : function(id) {
			var target = $(id);
			var inst = this._getInst(target[0]);
			if (inst.input && inst._selectingMonthYear && !$.browser.msie) {
				inst.input[0].focus()
			}
			inst._selectingMonthYear = !inst._selectingMonthYear
		},
		_selectDay : function(id, month, year, td) {
			var target = $(id);
			if ($(td).hasClass(this._unselectableClass)
					|| this._isDisabledDatepicker(target[0])) {
				return
			}
			var inst = this._getInst(target[0]);
			inst.selectedDay = inst.currentDay = $("a", td).html();
			inst.selectedMonth = inst.currentMonth = month;
			inst.selectedYear = inst.currentYear = year;
			if (inst.stayOpen) {
				inst.endDay = inst.endMonth = inst.endYear = null
			}
			this._selectDate(id, this._formatDate(inst, inst.currentDay,
							inst.currentMonth, inst.currentYear));
			if (inst.stayOpen) {
				inst.rangeStart = this._daylightSavingAdjust(new Date(
						inst.currentYear, inst.currentMonth, inst.currentDay));
				this._updateDatepicker(inst)
			}
		},
		_clearDate : function(id) {
			var target = $(id);
			var inst = this._getInst(target[0]);
			inst.stayOpen = false;
			inst.endDay = inst.endMonth = inst.endYear = inst.rangeStart = null;
			this._selectDate(target, "")
		},
		_selectDate : function(id, dateStr) {
			var target = $(id);
			var inst = this._getInst(target[0]);
			dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
			if (inst.input) {
				inst.input.val(dateStr)
			}
			this._updateAlternate(inst);
			var onSelect = this._get(inst, "onSelect");
			if (onSelect) {
				onSelect.apply((inst.input ? inst.input[0] : null), [dateStr,
								inst])
			} else {
				if (inst.input) {
					inst.input.trigger("change")
				}
			}
			if (inst.inline) {
				this._updateDatepicker(inst)
			} else {
				if (!inst.stayOpen) {
					this._hideDatepicker(null, this._get(inst, "duration"));
					this._lastInput = inst.input[0];
					if (typeof(inst.input[0]) != "object") {
						inst.input[0].focus()
					}
					this._lastInput = null
				}
			}
		},
		_updateAlternate : function(inst) {
			var altField = this._get(inst, "altField");
			if (altField) {
				var altFormat = this._get(inst, "altFormat")
						|| this._get(inst, "dateFormat");
				var date = this._getDate(inst);
				dateStr = this.formatDate(altFormat, date, this
								._getFormatConfig(inst));
				$(altField).each(function() {
							$(this).val(dateStr)
						})
			}
		},
		noWeekends : function(date) {
			var day = date.getDay();
			return [(day > 0 && day < 6), ""]
		},
		iso8601Week : function(date) {
			var checkDate = new Date(date.getFullYear(), date.getMonth(), date
							.getDate());
			var firstMon = new Date(checkDate.getFullYear(), 1 - 1, 4);
			var firstDay = firstMon.getDay() || 7;
			firstMon.setDate(firstMon.getDate() + 1 - firstDay);
			if (firstDay < 4 && checkDate < firstMon) {
				checkDate.setDate(checkDate.getDate() - 3);
				return $.datepicker.iso8601Week(checkDate)
			} else {
				if (checkDate > new Date(checkDate.getFullYear(), 12 - 1, 28)) {
					firstDay = new Date(checkDate.getFullYear() + 1, 1 - 1, 4)
							.getDay()
							|| 7;
					if (firstDay > 4
							&& (checkDate.getDay() || 7) < firstDay - 3) {
						return 1
					}
				}
			}
			return Math.floor(((checkDate - firstMon) / 86400000) / 7) + 1
		},
		parseDate : function(format, value, settings) {
			if (format == null || value == null) {
				throw "Invalid arguments"
			}
			value = (typeof value == "object" ? value.toString() : value + "");
			if (value == "") {
				return null
			}
			var shortYearCutoff = (settings ? settings.shortYearCutoff : null)
					|| this._defaults.shortYearCutoff;
			var dayNamesShort = (settings ? settings.dayNamesShort : null)
					|| this._defaults.dayNamesShort;
			var dayNames = (settings ? settings.dayNames : null)
					|| this._defaults.dayNames;
			var monthNamesShort = (settings ? settings.monthNamesShort : null)
					|| this._defaults.monthNamesShort;
			var monthNames = (settings ? settings.monthNames : null)
					|| this._defaults.monthNames;
			var year = -1;
			var month = -1;
			var day = -1;
			var doy = -1;
			var literal = false;
			var lookAhead = function(match) {
				var matches = (iFormat + 1 < format.length && format
						.charAt(iFormat + 1) == match);
				if (matches) {
					iFormat++
				}
				return matches
			};
			var getNumber = function(match) {
				lookAhead(match);
				var origSize = (match == "@" ? 14 : (match == "y"
						? 4
						: (match == "o" ? 3 : 2)));
				var size = origSize;
				var num = 0;
				while (size > 0 && iValue < value.length
						&& value.charAt(iValue) >= "0"
						&& value.charAt(iValue) <= "9") {
					num = num * 10 + parseInt(value.charAt(iValue++), 10);
					size--
				}
				if (size == origSize) {
					throw "Missing number at position " + iValue
				}
				return num
			};
			var getName = function(match, shortNames, longNames) {
				var names = (lookAhead(match) ? longNames : shortNames);
				var size = 0;
				for (var j = 0; j < names.length; j++) {
					size = Math.max(size, names[j].length)
				}
				var name = "";
				var iInit = iValue;
				while (size > 0 && iValue < value.length) {
					name += value.charAt(iValue++);
					for (var i = 0; i < names.length; i++) {
						if (name == names[i]) {
							return i + 1
						}
					}
					size--
				}
				throw "Unknown name at position " + iInit
			};
			var checkLiteral = function() {
				if (value.charAt(iValue) != format.charAt(iFormat)) {
					throw "Unexpected literal at position " + iValue
				}
				iValue++
			};
			var iValue = 0;
			for (var iFormat = 0; iFormat < format.length; iFormat++) {
				if (literal) {
					if (format.charAt(iFormat) == "'" && !lookAhead("'")) {
						literal = false
					} else {
						checkLiteral()
					}
				} else {
					switch (format.charAt(iFormat)) {
						case "d" :
							day = getNumber("d");
							break;
						case "D" :
							getName("D", dayNamesShort, dayNames);
							break;
						case "o" :
							doy = getNumber("o");
							break;
						case "m" :
							month = getNumber("m");
							break;
						case "M" :
							month = getName("M", monthNamesShort, monthNames);
							break;
						case "y" :
							year = getNumber("y");
							break;
						case "@" :
							var date = new Date(getNumber("@"));
							year = date.getFullYear();
							month = date.getMonth() + 1;
							day = date.getDate();
							break;
						case "'" :
							if (lookAhead("'")) {
								checkLiteral()
							} else {
								literal = true
							}
							break;
						default :
							checkLiteral()
					}
				}
			}
			if (year == -1) {
				year = new Date().getFullYear()
			} else {
				if (year < 100) {
					year += new Date().getFullYear() - new Date().getFullYear()
							% 100 + (year <= shortYearCutoff ? 0 : -100)
				}
			}
			if (doy > -1) {
				month = 1;
				day = doy;
				do {
					var dim = this._getDaysInMonth(year, month - 1);
					if (day <= dim) {
						break
					}
					month++;
					day -= dim
				} while (true)
			}
			var date = this
					._daylightSavingAdjust(new Date(year, month - 1, day));
			if (date.getFullYear() != year || date.getMonth() + 1 != month
					|| date.getDate() != day) {
				throw "Invalid date"
			}
			return date
		},
		ATOM : "yy-mm-dd",
		COOKIE : "D, dd M yy",
		ISO_8601 : "yy-mm-dd",
		RFC_822 : "D, d M y",
		RFC_850 : "DD, dd-M-y",
		RFC_1036 : "D, d M y",
		RFC_1123 : "D, d M yy",
		RFC_2822 : "D, d M yy",
		RSS : "D, d M y",
		TIMESTAMP : "@",
		W3C : "yy-mm-dd",
		formatDate : function(format, date, settings) {
			if (!date) {
				return ""
			}
			var dayNamesShort = (settings ? settings.dayNamesShort : null)
					|| this._defaults.dayNamesShort;
			var dayNames = (settings ? settings.dayNames : null)
					|| this._defaults.dayNames;
			var monthNamesShort = (settings ? settings.monthNamesShort : null)
					|| this._defaults.monthNamesShort;
			var monthNames = (settings ? settings.monthNames : null)
					|| this._defaults.monthNames;
			var lookAhead = function(match) {
				var matches = (iFormat + 1 < format.length && format
						.charAt(iFormat + 1) == match);
				if (matches) {
					iFormat++
				}
				return matches
			};
			var formatNumber = function(match, value, len) {
				var num = "" + value;
				if (lookAhead(match)) {
					while (num.length < len) {
						num = "0" + num
					}
				}
				return num
			};
			var formatName = function(match, value, shortNames, longNames) {
				return (lookAhead(match) ? longNames[value] : shortNames[value])
			};
			var output = "";
			var literal = false;
			if (date) {
				for (var iFormat = 0; iFormat < format.length; iFormat++) {
					if (literal) {
						if (format.charAt(iFormat) == "'" && !lookAhead("'")) {
							literal = false
						} else {
							output += format.charAt(iFormat)
						}
					} else {
						switch (format.charAt(iFormat)) {
							case "d" :
								output += formatNumber("d", date.getDate(), 2);
								break;
							case "D" :
								output += formatName("D", date.getDay(),
										dayNamesShort, dayNames);
								break;
							case "o" :
								var doy = date.getDate();
								for (var m = date.getMonth() - 1; m >= 0; m--) {
									doy += this._getDaysInMonth(date
													.getFullYear(), m)
								}
								output += formatNumber("o", doy, 3);
								break;
							case "m" :
								output += formatNumber("m",
										date.getMonth() + 1, 2);
								break;
							case "M" :
								output += formatName("M", date.getMonth(),
										monthNamesShort, monthNames);
								break;
							case "y" :
								output += (lookAhead("y")
										? date.getFullYear()
										: (date.getYear() % 100 < 10 ? "0" : "")
												+ date.getYear() % 100);
								break;
							case "@" :
								output += date.getTime();
								break;
							case "'" :
								if (lookAhead("'")) {
									output += "'"
								} else {
									literal = true
								}
								break;
							default :
								output += format.charAt(iFormat)
						}
					}
				}
			}
			return output
		},
		_possibleChars : function(format) {
			var chars = "";
			var literal = false;
			for (var iFormat = 0; iFormat < format.length; iFormat++) {
				if (literal) {
					if (format.charAt(iFormat) == "'" && !lookAhead("'")) {
						literal = false
					} else {
						chars += format.charAt(iFormat)
					}
				} else {
					switch (format.charAt(iFormat)) {
						case "d" :
						case "m" :
						case "y" :
						case "@" :
							chars += "0123456789";
							break;
						case "D" :
						case "M" :
							return null;
						case "'" :
							if (lookAhead("'")) {
								chars += "'"
							} else {
								literal = true
							}
							break;
						default :
							chars += format.charAt(iFormat)
					}
				}
			}
			return chars
		},
		_get : function(inst, name) {
			return inst.settings[name] !== undefined
					? inst.settings[name]
					: this._defaults[name]
		},
		_setDateFromField : function(inst) {
			var dateFormat = this._get(inst, "dateFormat");
			var dates = inst.input ? inst.input.val() : null;
			inst.endDay = inst.endMonth = inst.endYear = null;
			var date = defaultDate = this._getDefaultDate(inst);
			var settings = this._getFormatConfig(inst);
			try {
				date = this.parseDate(dateFormat, dates, settings)
						|| defaultDate
			} catch (event) {
				this.log(event);
				date = defaultDate
			}
			inst.selectedDay = date.getDate();
			inst.drawMonth = inst.selectedMonth = date.getMonth();
			inst.drawYear = inst.selectedYear = date.getFullYear();
			inst.currentDay = (dates ? date.getDate() : 0);
			inst.currentMonth = (dates ? date.getMonth() : 0);
			inst.currentYear = (dates ? date.getFullYear() : 0);
			this._adjustInstDate(inst)
		},
		_getDefaultDate : function(inst) {
			var date = this._determineDate(this._get(inst, "defaultDate"),
					new Date());
			var minDate = this._getMinMaxDate(inst, "min", true);
			var maxDate = this._getMinMaxDate(inst, "max");
			date = (minDate && date < minDate ? minDate : date);
			date = (maxDate && date > maxDate ? maxDate : date);
			return date
		},
		_determineDate : function(date, defaultDate) {
			var offsetNumeric = function(offset) {
				var date = new Date();
				date.setDate(date.getDate() + offset);
				return date
			};
			var offsetString = function(offset, getDaysInMonth) {
				var date = new Date();
				var year = date.getFullYear();
				var month = date.getMonth();
				var day = date.getDate();
				var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;
				var matches = pattern.exec(offset);
				while (matches) {
					switch (matches[2] || "d") {
						case "d" :
						case "D" :
							day += parseInt(matches[1], 10);
							break;
						case "w" :
						case "W" :
							day += parseInt(matches[1], 10) * 7;
							break;
						case "m" :
						case "M" :
							month += parseInt(matches[1], 10);
							day = Math.min(day, getDaysInMonth(year, month));
							break;
						case "y" :
						case "Y" :
							year += parseInt(matches[1], 10);
							day = Math.min(day, getDaysInMonth(year, month));
							break
					}
					matches = pattern.exec(offset)
				}
				return new Date(year, month, day)
			};
			date = (date == null ? defaultDate : (typeof date == "string"
					? offsetString(date, this._getDaysInMonth)
					: (typeof date == "number" ? (isNaN(date)
							? defaultDate
							: offsetNumeric(date)) : date)));
			date = (date && date.toString() == "Invalid Date"
					? defaultDate
					: date);
			if (date) {
				date.setHours(0);
				date.setMinutes(0);
				date.setSeconds(0);
				date.setMilliseconds(0)
			}
			return this._daylightSavingAdjust(date)
		},
		_daylightSavingAdjust : function(date) {
			if (!date) {
				return null
			}
			date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
			return date
		},
		_setDate : function(inst, date, endDate) {
			var clear = !(date);
			var origMonth = inst.selectedMonth;
			var origYear = inst.selectedYear;
			date = this._determineDate(date, new Date());
			inst.selectedDay = inst.currentDay = date.getDate();
			inst.drawMonth = inst.selectedMonth = inst.currentMonth = date
					.getMonth();
			inst.drawYear = inst.selectedYear = inst.currentYear = date
					.getFullYear();
			if (origMonth != inst.selectedMonth
					|| origYear != inst.selectedYear) {
				this._notifyChange(inst)
			}
			this._adjustInstDate(inst);
			if (inst.input) {
				inst.input.val(clear ? "" : this._formatDate(inst))
			}
		},
		_getDate : function(inst) {
			var startDate = (!inst.currentYear
					|| (inst.input && inst.input.val() == "") ? null : this
					._daylightSavingAdjust(new Date(inst.currentYear,
							inst.currentMonth, inst.currentDay)));
			return startDate
		},
		_generateHTML : function(inst) {
			var today = new Date();
			today = this._daylightSavingAdjust(new Date(today.getFullYear(),
					today.getMonth(), today.getDate()));
			var isRTL = this._get(inst, "isRTL");
			var showButtonPanel = this._get(inst, "showButtonPanel");
			var hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext");
			var navigationAsDateFormat = this._get(inst,
					"navigationAsDateFormat");
			var numMonths = this._getNumberOfMonths(inst);
			var showCurrentAtPos = this._get(inst, "showCurrentAtPos");
			var stepMonths = this._get(inst, "stepMonths");
			var stepBigMonths = this._get(inst, "stepBigMonths");
			var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);
			var currentDate = this._daylightSavingAdjust((!inst.currentDay
					? new Date(9999, 9, 9)
					: new Date(inst.currentYear, inst.currentMonth,
							inst.currentDay)));
			var minDate = this._getMinMaxDate(inst, "min", true);
			var maxDate = this._getMinMaxDate(inst, "max");
			var drawMonth = inst.drawMonth - showCurrentAtPos;
			var drawYear = inst.drawYear;
			if (drawMonth < 0) {
				drawMonth += 12;
				drawYear--
			}
			if (maxDate) {
				var maxDraw = this._daylightSavingAdjust(new Date(maxDate
								.getFullYear(), maxDate.getMonth()
								- numMonths[1] + 1, maxDate.getDate()));
				maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
				while (this._daylightSavingAdjust(new Date(drawYear, drawMonth,
						1)) > maxDraw) {
					drawMonth--;
					if (drawMonth < 0) {
						drawMonth = 11;
						drawYear--
					}
				}
			}
			inst.drawMonth = drawMonth;
			inst.drawYear = drawYear;
			var prevText = this._get(inst, "prevText");
			prevText = (!navigationAsDateFormat ? prevText : this.formatDate(
					prevText, this._daylightSavingAdjust(new Date(drawYear,
							drawMonth - stepMonths, 1)), this
							._getFormatConfig(inst)));
			var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth)
					? '<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'
							+ inst.id
							+ "', -"
							+ stepMonths
							+ ", 'M');\" title=\""
							+ prevText
							+ '"><span class="ui-icon ui-icon-circle-triangle-'
							+ (isRTL ? "e" : "w")
							+ '">'
							+ prevText
							+ "</span></a>"
					: (hideIfNoPrevNext
							? ""
							: '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'
									+ prevText
									+ '"><span class="ui-icon ui-icon-circle-triangle-'
									+ (isRTL ? "e" : "w")
									+ '">'
									+ prevText
									+ "</span></a>"));
			var nextText = this._get(inst, "nextText");
			nextText = (!navigationAsDateFormat ? nextText : this.formatDate(
					nextText, this._daylightSavingAdjust(new Date(drawYear,
							drawMonth + stepMonths, 1)), this
							._getFormatConfig(inst)));
			var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth)
					? '<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'
							+ inst.id
							+ "', +"
							+ stepMonths
							+ ", 'M');\" title=\""
							+ nextText
							+ '"><span class="ui-icon ui-icon-circle-triangle-'
							+ (isRTL ? "w" : "e")
							+ '">'
							+ nextText
							+ "</span></a>"
					: (hideIfNoPrevNext
							? ""
							: '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'
									+ nextText
									+ '"><span class="ui-icon ui-icon-circle-triangle-'
									+ (isRTL ? "w" : "e")
									+ '">'
									+ nextText
									+ "</span></a>"));
			var currentText = this._get(inst, "currentText");
			var gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay
					? currentDate
					: today);
			currentText = (!navigationAsDateFormat ? currentText : this
					.formatDate(currentText, gotoDate, this
									._getFormatConfig(inst)));
			var controls = (!inst.inline
					? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery.datepicker._hideDatepicker();">'
							+ this._get(inst, "closeText") + "</button>"
					: "");
			var buttonPanel = (showButtonPanel)
					? '<div class="ui-datepicker-buttonpane ui-widget-content">'
							+ (isRTL ? controls : "")
							+ (this._isInRange(inst, gotoDate)
									? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery.datepicker._gotoToday(\'#'
											+ inst.id
											+ "');\">"
											+ currentText
											+ "</button>"
									: "") + (isRTL ? "" : controls) + "</div>"
					: "";
			var firstDay = parseInt(this._get(inst, "firstDay"), 10);
			firstDay = (isNaN(firstDay) ? 0 : firstDay);
			var dayNames = this._get(inst, "dayNames");
			var dayNamesShort = this._get(inst, "dayNamesShort");
			var dayNamesMin = this._get(inst, "dayNamesMin");
			var monthNames = this._get(inst, "monthNames");
			var monthNamesShort = this._get(inst, "monthNamesShort");
			var beforeShowDay = this._get(inst, "beforeShowDay");
			var showOtherMonths = this._get(inst, "showOtherMonths");
			var calculateWeek = this._get(inst, "calculateWeek")
					|| this.iso8601Week;
			var endDate = inst.endDay ? this._daylightSavingAdjust(new Date(
					inst.endYear, inst.endMonth, inst.endDay)) : currentDate;
			var defaultDate = this._getDefaultDate(inst);
			var html = "";
			for (var row = 0; row < numMonths[0]; row++) {
				var group = "";
				for (var col = 0; col < numMonths[1]; col++) {
					var selectedDate = this._daylightSavingAdjust(new Date(
							drawYear, drawMonth, inst.selectedDay));
					var cornerClass = " ui-corner-all";
					var calender = "";
					if (isMultiMonth) {
						calender += '<div class="ui-datepicker-group ui-datepicker-group-';
						switch (col) {
							case 0 :
								calender += "first";
								cornerClass = " ui-corner-"
										+ (isRTL ? "right" : "left");
								break;
							case numMonths[1] - 1 :
								calender += "last";
								cornerClass = " ui-corner-"
										+ (isRTL ? "left" : "right");
								break;
							default :
								calender += "middle";
								cornerClass = "";
								break
						}
						calender += '">'
					}
					calender += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'
							+ cornerClass
							+ '">'
							+ (/all|left/.test(cornerClass) && row == 0
									? (isRTL ? next : prev)
									: "")
							+ (/all|right/.test(cornerClass) && row == 0
									? (isRTL ? prev : next)
									: "")
							+ this._generateMonthYearHeader(inst, drawMonth,
									drawYear, minDate, maxDate, selectedDate,
									row > 0 || col > 0, monthNames,
									monthNamesShort)
							+ '</div><table class="ui-datepicker-calendar"><thead><tr>';
					var thead = "";
					for (var dow = 0; dow < 7; dow++) {
						var day = (dow + firstDay) % 7;
						thead += "<th"
								+ ((dow + firstDay + 6) % 7 >= 5
										? ' class="ui-datepicker-week-end"'
										: "") + '><span title="'
								+ dayNames[day] + '">' + dayNamesMin[day]
								+ "</span></th>"
					}
					calender += thead + "</tr></thead><tbody>";
					var daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
					if (drawYear == inst.selectedYear
							&& drawMonth == inst.selectedMonth) {
						inst.selectedDay = Math.min(inst.selectedDay,
								daysInMonth)
					}
					var leadDays = (this._getFirstDayOfMonth(drawYear,
							drawMonth)
							- firstDay + 7)
							% 7;
					var numRows = (isMultiMonth ? 6 : Math
							.ceil((leadDays + daysInMonth) / 7));
					var printDate = this._daylightSavingAdjust(new Date(
							drawYear, drawMonth, 1 - leadDays));
					for (var dRow = 0; dRow < numRows; dRow++) {
						calender += "<tr>";
						var tbody = "";
						for (var dow = 0; dow < 7; dow++) {
							var daySettings = (beforeShowDay ? beforeShowDay
									.apply((inst.input ? inst.input[0] : null),
											[printDate]) : [true, ""]);
							var otherMonth = (printDate.getMonth() != drawMonth);
							var unselectable = otherMonth || !daySettings[0]
									|| (minDate && printDate < minDate)
									|| (maxDate && printDate > maxDate);
							tbody += '<td class="'
									+ ((dow + firstDay + 6) % 7 >= 5
											? " ui-datepicker-week-end"
											: "")
									+ (otherMonth
											? " ui-datepicker-other-month"
											: "")
									+ ((printDate.getTime() == selectedDate
											.getTime()
											&& drawMonth == inst.selectedMonth && inst._keyEvent)
											|| (defaultDate.getTime() == printDate
													.getTime() && defaultDate
													.getTime() == selectedDate
													.getTime()) ? " "
											+ this._dayOverClass : "")
									+ (unselectable ? " "
											+ this._unselectableClass
											+ " ui-state-disabled" : "")
									+ (otherMonth && !showOtherMonths
											? ""
											: " "
													+ daySettings[1]
													+ (printDate.getTime() >= currentDate
															.getTime()
															&& printDate
																	.getTime() <= endDate
																	.getTime()
															? " "
																	+ this._currentClass
															: "")
													+ (printDate.getTime() == today
															.getTime()
															? " ui-datepicker-today"
															: ""))
									+ '"'
									+ ((!otherMonth || showOtherMonths)
											&& daySettings[2] ? ' title="'
											+ daySettings[2] + '"' : "")
									+ (unselectable
											? ""
											: " onclick=\"DP_jQuery.datepicker._selectDay('#"
													+ inst.id
													+ "',"
													+ drawMonth
													+ ","
													+ drawYear
													+ ', this);return false;"')
									+ ">"
									+ (otherMonth
											? (showOtherMonths ? printDate
													.getDate() : "&#xa0;")
											: (unselectable
													? '<span class="ui-state-default">'
															+ printDate
																	.getDate()
															+ "</span>"
													: '<a class="ui-state-default'
															+ (printDate
																	.getTime() == today
																	.getTime()
																	? " ui-state-highlight"
																	: "")
															+ (printDate
																	.getTime() >= currentDate
																	.getTime()
																	&& printDate
																			.getTime() <= endDate
																			.getTime()
																	? " ui-state-active"
																	: "")
															+ '" href="#">'
															+ printDate
																	.getDate()
															+ "</a>"))
									+ "</td>";
							printDate.setDate(printDate.getDate() + 1);
							printDate = this._daylightSavingAdjust(printDate)
						}
						calender += tbody + "</tr>"
					}
					drawMonth++;
					if (drawMonth > 11) {
						drawMonth = 0;
						drawYear++
					}
					calender += "</tbody></table>"
							+ (isMultiMonth
									? "</div>"
											+ ((numMonths[0] > 0 && col == numMonths[1]
													- 1)
													? '<div class="ui-datepicker-row-break"></div>'
													: "")
									: "");
					group += calender
				}
				html += group
			}
			html += buttonPanel
					+ ($.browser.msie && parseInt($.browser.version, 10) < 7
							&& !inst.inline
							? '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>'
							: "");
			inst._keyEvent = false;
			return html
		},
		_generateMonthYearHeader : function(inst, drawMonth, drawYear, minDate,
				maxDate, selectedDate, secondary, monthNames, monthNamesShort) {
			minDate = (inst.rangeStart && minDate && selectedDate < minDate
					? selectedDate
					: minDate);
			var changeMonth = this._get(inst, "changeMonth");
			var changeYear = this._get(inst, "changeYear");
			var showMonthAfterYear = this._get(inst, "showMonthAfterYear");
			var html = '<div class="ui-datepicker-title">';
			var monthHtml = "";
			if (secondary || !changeMonth) {
				monthHtml += '<span class="ui-datepicker-month">'
						+ monthNames[drawMonth] + "</span> "
			} else {
				var inMinYear = (minDate && minDate.getFullYear() == drawYear);
				var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);
				monthHtml += '<select class="ui-datepicker-month" onchange="DP_jQuery.datepicker._selectMonthYear(\'#'
						+ inst.id
						+ "', this, 'M');\" onclick=\"DP_jQuery.datepicker._clickMonthYear('#"
						+ inst.id + "');\">";
				for (var month = 0; month < 12; month++) {
					if ((!inMinYear || month >= minDate.getMonth())
							&& (!inMaxYear || month <= maxDate.getMonth())) {
						monthHtml += '<option value="'
								+ month
								+ '"'
								+ (month == drawMonth
										? ' selected="selected"'
										: "") + ">" + monthNamesShort[month]
								+ "</option>"
					}
				}
				monthHtml += "</select>"
			}
			if (!showMonthAfterYear) {
				html += monthHtml
						+ ((secondary || changeMonth || changeYear)
								&& (!(changeMonth && changeYear))
								? "&#xa0;"
								: "")
			}
			if (secondary || !changeYear) {
				html += '<span class="ui-datepicker-year">' + drawYear
						+ "</span>"
			} else {
				var years = this._get(inst, "yearRange").split(":");
				var year = 0;
				var endYear = 0;
				if (years.length != 2) {
					year = drawYear - 10;
					endYear = drawYear + 10
				} else {
					if (years[0].charAt(0) == "+" || years[0].charAt(0) == "-") {
						year = drawYear + parseInt(years[0], 10);
						endYear = drawYear + parseInt(years[1], 10)
					} else {
						year = parseInt(years[0], 10);
						endYear = parseInt(years[1], 10)
					}
				}
				year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
				endYear = (maxDate
						? Math.min(endYear, maxDate.getFullYear())
						: endYear);
				html += '<select class="ui-datepicker-year" onchange="DP_jQuery.datepicker._selectMonthYear(\'#'
						+ inst.id
						+ "', this, 'Y');\" onclick=\"DP_jQuery.datepicker._clickMonthYear('#"
						+ inst.id + "');\">";
				for (; year <= endYear; year++) {
					html += '<option value="' + year + '"'
							+ (year == drawYear ? ' selected="selected"' : "")
							+ ">" + year + "</option>"
				}
				html += "</select>"
			}
			if (showMonthAfterYear) {
				html += (secondary || changeMonth || changeYear ? "&#xa0;" : "")
						+ monthHtml
			}
			html += "</div>";
			return html
		},
		_adjustInstDate : function(inst, offset, period) {
			var year = inst.drawYear + (period == "Y" ? offset : 0);
			var month = inst.drawMonth + (period == "M" ? offset : 0);
			var day = Math.min(inst.selectedDay, this._getDaysInMonth(year,
							month))
					+ (period == "D" ? offset : 0);
			var date = this._daylightSavingAdjust(new Date(year, month, day));
			var minDate = this._getMinMaxDate(inst, "min", true);
			var maxDate = this._getMinMaxDate(inst, "max");
			date = (minDate && date < minDate ? minDate : date);
			date = (maxDate && date > maxDate ? maxDate : date);
			inst.selectedDay = date.getDate();
			inst.drawMonth = inst.selectedMonth = date.getMonth();
			inst.drawYear = inst.selectedYear = date.getFullYear();
			if (period == "M" || period == "Y") {
				this._notifyChange(inst)
			}
		},
		_notifyChange : function(inst) {
			var onChange = this._get(inst, "onChangeMonthYear");
			if (onChange) {
				onChange.apply((inst.input ? inst.input[0] : null),
						[inst.selectedYear, inst.selectedMonth + 1, inst])
			}
		},
		_getNumberOfMonths : function(inst) {
			var numMonths = this._get(inst, "numberOfMonths");
			return (numMonths == null ? [1, 1] : (typeof numMonths == "number"
					? [1, numMonths]
					: numMonths))
		},
		_getMinMaxDate : function(inst, minMax, checkRange) {
			var date = this._determineDate(this._get(inst, minMax + "Date"),
					null);
			return (!checkRange || !inst.rangeStart ? date : (!date
					|| inst.rangeStart > date ? inst.rangeStart : date))
		},
		_getDaysInMonth : function(year, month) {
			return 32 - new Date(year, month, 32).getDate()
		},
		_getFirstDayOfMonth : function(year, month) {
			return new Date(year, month, 1).getDay()
		},
		_canAdjustMonth : function(inst, offset, curYear, curMonth) {
			var numMonths = this._getNumberOfMonths(inst);
			var date = this._daylightSavingAdjust(new Date(curYear, curMonth
							+ (offset < 0 ? offset : numMonths[1]), 1));
			if (offset < 0) {
				date.setDate(this._getDaysInMonth(date.getFullYear(), date
								.getMonth()))
			}
			return this._isInRange(inst, date)
		},
		_isInRange : function(inst, date) {
			var newMinDate = (!inst.rangeStart ? null : this
					._daylightSavingAdjust(new Date(inst.selectedYear,
							inst.selectedMonth, inst.selectedDay)));
			newMinDate = (newMinDate && inst.rangeStart < newMinDate
					? inst.rangeStart
					: newMinDate);
			var minDate = newMinDate || this._getMinMaxDate(inst, "min");
			var maxDate = this._getMinMaxDate(inst, "max");
			return ((!minDate || date >= minDate) && (!maxDate || date <= maxDate))
		},
		_getFormatConfig : function(inst) {
			var shortYearCutoff = this._get(inst, "shortYearCutoff");
			shortYearCutoff = (typeof shortYearCutoff != "string"
					? shortYearCutoff
					: new Date().getFullYear() % 100
							+ parseInt(shortYearCutoff, 10));
			return {
				shortYearCutoff : shortYearCutoff,
				dayNamesShort : this._get(inst, "dayNamesShort"),
				dayNames : this._get(inst, "dayNames"),
				monthNamesShort : this._get(inst, "monthNamesShort"),
				monthNames : this._get(inst, "monthNames")
			}
		},
		_formatDate : function(inst, day, month, year) {
			if (!day) {
				inst.currentDay = inst.selectedDay;
				inst.currentMonth = inst.selectedMonth;
				inst.currentYear = inst.selectedYear
			}
			var date = (day ? (typeof day == "object" ? day : this
					._daylightSavingAdjust(new Date(year, month, day))) : this
					._daylightSavingAdjust(new Date(inst.currentYear,
							inst.currentMonth, inst.currentDay)));
			return this.formatDate(this._get(inst, "dateFormat"), date, this
							._getFormatConfig(inst))
		}
	});
	function extendRemove(target, props) {
		$.extend(target, props);
		for (var name in props) {
			if (props[name] == null || props[name] == undefined) {
				target[name] = props[name]
			}
		}
		return target
	}
	function isArray(a) {
		return (a && (($.browser.safari && typeof a == "object" && a.length) || (a.constructor && a.constructor
				.toString().match(/\Array\(\)/))))
	}
	$.fn.datepicker = function(options) {
		if (!$.datepicker.initialized) {
			$(document).mousedown($.datepicker._checkExternalClick)
					.find("body").append($.datepicker.dpDiv);
			$.datepicker.initialized = true
		}
		var otherArgs = Array.prototype.slice.call(arguments, 1);
		if (typeof options == "string"
				&& (options == "isDisabled" || options == "getDate")) {
			return $.datepicker["_" + options + "Datepicker"].apply(
					$.datepicker, [this[0]].concat(otherArgs))
		}
		if (options == "option" && arguments.length == 2
				&& typeof arguments[1] == "string") {
			return $.datepicker["_" + options + "Datepicker"].apply(
					$.datepicker, [this[0]].concat(otherArgs))
		}
		return this.each(function() {
					typeof options == "string" ? $.datepicker["_" + options
							+ "Datepicker"].apply($.datepicker, [this]
									.concat(otherArgs)) : $.datepicker
							._attachDatepicker(this, options)
				})
	};
	$.datepicker = new Datepicker();
	$.datepicker.initialized = false;
	$.datepicker.uuid = new Date().getTime();
	$.datepicker.version = "1.7.2";
	window.DP_jQuery = $
})(jQuery);;/*
			 * jQuery UI Progressbar 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Progressbar
			 * 
			 * Depends: ui.core.js
			 */
(function(a) {
	a.widget("ui.progressbar", {
		_init : function() {
			this.element
					.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all")
					.attr({
								role : "progressbar",
								"aria-valuemin" : this._valueMin(),
								"aria-valuemax" : this._valueMax(),
								"aria-valuenow" : this._value()
							});
			this.valueDiv = a('<div class="ui-progressbar-value ui-widget-header ui-corner-left"></div>')
					.appendTo(this.element);
			this._refreshValue()
		},
		destroy : function() {
			this.element
					.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all")
					.removeAttr("role").removeAttr("aria-valuemin")
					.removeAttr("aria-valuemax").removeAttr("aria-valuenow")
					.removeData("progressbar").unbind(".progressbar");
			this.valueDiv.remove();
			a.widget.prototype.destroy.apply(this, arguments)
		},
		value : function(b) {
			if (b === undefined) {
				return this._value()
			}
			this._setData("value", b);
			return this
		},
		_setData : function(b, c) {
			switch (b) {
				case "value" :
					this.options.value = c;
					this._refreshValue();
					this._trigger("change", null, {});
					break
			}
			a.widget.prototype._setData.apply(this, arguments)
		},
		_value : function() {
			var b = this.options.value;
			if (b < this._valueMin()) {
				b = this._valueMin()
			}
			if (b > this._valueMax()) {
				b = this._valueMax()
			}
			return b
		},
		_valueMin : function() {
			var b = 0;
			return b
		},
		_valueMax : function() {
			var b = 100;
			return b
		},
		_refreshValue : function() {
			var b = this.value();
			this.valueDiv[b == this._valueMax() ? "addClass" : "removeClass"]("ui-corner-right");
			this.valueDiv.width(b + "%");
			this.element.attr("aria-valuenow", b)
		}
	});
	a.extend(a.ui.progressbar, {
				version : "1.7.2",
				defaults : {
					value : 0
				}
			})
})(jQuery);;/*
			 * jQuery UI Effects 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/
			 */
jQuery.effects || (function(d) {
	d.effects = {
		version : "1.7.2",
		save : function(g, h) {
			for (var f = 0; f < h.length; f++) {
				if (h[f] !== null) {
					g.data("ec.storage." + h[f], g[0].style[h[f]])
				}
			}
		},
		restore : function(g, h) {
			for (var f = 0; f < h.length; f++) {
				if (h[f] !== null) {
					g.css(h[f], g.data("ec.storage." + h[f]))
				}
			}
		},
		setMode : function(f, g) {
			if (g == "toggle") {
				g = f.is(":hidden") ? "show" : "hide"
			}
			return g
		},
		getBaseline : function(g, h) {
			var i, f;
			switch (g[0]) {
				case "top" :
					i = 0;
					break;
				case "middle" :
					i = 0.5;
					break;
				case "bottom" :
					i = 1;
					break;
				default :
					i = g[0] / h.height
			}
			switch (g[1]) {
				case "left" :
					f = 0;
					break;
				case "center" :
					f = 0.5;
					break;
				case "right" :
					f = 1;
					break;
				default :
					f = g[1] / h.width
			}
			return {
				x : f,
				y : i
			}
		},
		createWrapper : function(f) {
			if (f.parent().is(".ui-effects-wrapper")) {
				return f.parent()
			}
			var g = {
				width : f.outerWidth(true),
				height : f.outerHeight(true),
				"float" : f.css("float")
			};
			f
					.wrap('<div class="ui-effects-wrapper" style="font-size:100%;background:transparent;border:none;margin:0;padding:0"></div>');
			var j = f.parent();
			if (f.css("position") == "static") {
				j.css({
							position : "relative"
						});
				f.css({
							position : "relative"
						})
			} else {
				var i = f.css("top");
				if (isNaN(parseInt(i, 10))) {
					i = "auto"
				}
				var h = f.css("left");
				if (isNaN(parseInt(h, 10))) {
					h = "auto"
				}
				j.css({
							position : f.css("position"),
							top : i,
							left : h,
							zIndex : f.css("z-index")
						}).show();
				f.css({
							position : "relative",
							top : 0,
							left : 0
						})
			}
			j.css(g);
			return j
		},
		removeWrapper : function(f) {
			if (f.parent().is(".ui-effects-wrapper")) {
				return f.parent().replaceWith(f)
			}
			return f
		},
		setTransition : function(g, i, f, h) {
			h = h || {};
			d.each(i, function(k, j) {
						unit = g.cssUnit(j);
						if (unit[0] > 0) {
							h[j] = unit[0] * f + unit[1]
						}
					});
			return h
		},
		animateClass : function(h, i, k, j) {
			var f = (typeof k == "function" ? k : (j ? j : null));
			var g = (typeof k == "string" ? k : null);
			return this.each(function() {
				var q = {};
				var o = d(this);
				var p = o.attr("style") || "";
				if (typeof p == "object") {
					p = p.cssText
				}
				if (h.toggle) {
					o.hasClass(h.toggle)
							? h.remove = h.toggle
							: h.add = h.toggle
				}
				var l = d.extend({}, (document.defaultView
								? document.defaultView.getComputedStyle(this,
										null)
								: this.currentStyle));
				if (h.add) {
					o.addClass(h.add)
				}
				if (h.remove) {
					o.removeClass(h.remove)
				}
				var m = d.extend({}, (document.defaultView
								? document.defaultView.getComputedStyle(this,
										null)
								: this.currentStyle));
				if (h.add) {
					o.removeClass(h.add)
				}
				if (h.remove) {
					o.addClass(h.remove)
				}
				for (var r in m) {
					if (typeof m[r] != "function"
							&& m[r]
							&& r.indexOf("Moz") == -1
							&& r.indexOf("length") == -1
							&& m[r] != l[r]
							&& (r.match(/color/i) || (!r.match(/color/i) && !isNaN(parseInt(
									m[r], 10))))
							&& (l.position != "static" || (l.position == "static" && !r
									.match(/left|top|bottom|right/)))) {
						q[r] = m[r]
					}
				}
				o.animate(q, i, g, function() {
							if (typeof d(this).attr("style") == "object") {
								d(this).attr("style")["cssText"] = "";
								d(this).attr("style")["cssText"] = p
							} else {
								d(this).attr("style", p)
							}
							if (h.add) {
								d(this).addClass(h.add)
							}
							if (h.remove) {
								d(this).removeClass(h.remove)
							}
							if (f) {
								f.apply(this, arguments)
							}
						})
			})
		}
	};
	function c(g, f) {
		var i = g[1] && g[1].constructor == Object ? g[1] : {};
		if (f) {
			i.mode = f
		}
		var h = g[1] && g[1].constructor != Object ? g[1] : (i.duration
				? i.duration
				: g[2]);
		h = d.fx.off ? 0 : typeof h === "number" ? h : d.fx.speeds[h]
				|| d.fx.speeds._default;
		var j = i.callback || (d.isFunction(g[1]) && g[1])
				|| (d.isFunction(g[2]) && g[2]) || (d.isFunction(g[3]) && g[3]);
		return [g[0], i, h, j]
	}
	d.fn.extend({
		_show : d.fn.show,
		_hide : d.fn.hide,
		__toggle : d.fn.toggle,
		_addClass : d.fn.addClass,
		_removeClass : d.fn.removeClass,
		_toggleClass : d.fn.toggleClass,
		effect : function(g, f, h, i) {
			return d.effects[g] ? d.effects[g].call(this, {
						method : g,
						options : f || {},
						duration : h,
						callback : i
					}) : null
		},
		show : function() {
			if (!arguments[0]
					|| (arguments[0].constructor == Number || (/(slow|normal|fast)/)
							.test(arguments[0]))) {
				return this._show.apply(this, arguments)
			} else {
				return this.effect.apply(this, c(arguments, "show"))
			}
		},
		hide : function() {
			if (!arguments[0]
					|| (arguments[0].constructor == Number || (/(slow|normal|fast)/)
							.test(arguments[0]))) {
				return this._hide.apply(this, arguments)
			} else {
				return this.effect.apply(this, c(arguments, "hide"))
			}
		},
		toggle : function() {
			if (!arguments[0]
					|| (arguments[0].constructor == Number || (/(slow|normal|fast)/)
							.test(arguments[0]))
					|| (d.isFunction(arguments[0]) || typeof arguments[0] == "boolean")) {
				return this.__toggle.apply(this, arguments)
			} else {
				return this.effect.apply(this, c(arguments, "toggle"))
			}
		},
		addClass : function(g, f, i, h) {
			return f ? d.effects.animateClass.apply(this, [{
								add : g
							}, f, i, h]) : this._addClass(g)
		},
		removeClass : function(g, f, i, h) {
			return f ? d.effects.animateClass.apply(this, [{
								remove : g
							}, f, i, h]) : this._removeClass(g)
		},
		toggleClass : function(g, f, i, h) {
			return ((typeof f !== "boolean") && f) ? d.effects.animateClass
					.apply(this, [{
										toggle : g
									}, f, i, h]) : this._toggleClass(g, f)
		},
		morph : function(f, h, g, j, i) {
			return d.effects.animateClass.apply(this, [{
								add : h,
								remove : f
							}, g, j, i])
		},
		switchClass : function() {
			return this.morph.apply(this, arguments)
		},
		cssUnit : function(f) {
			var g = this.css(f), h = [];
			d.each(["em", "px", "%", "pt"], function(j, k) {
						if (g.indexOf(k) > 0) {
							h = [parseFloat(g), k]
						}
					});
			return h
		}
	});
	d.each(	["backgroundColor", "borderBottomColor", "borderLeftColor",
					"borderRightColor", "borderTopColor", "color",
					"outlineColor"], function(g, f) {
				d.fx.step[f] = function(h) {
					if (h.state == 0) {
						h.start = e(h.elem, f);
						h.end = b(h.end)
					}
					h.elem.style[f] = "rgb("
							+ [
									Math
											.max(
													Math
															.min(
																	parseInt(
																			(h.pos * (h.end[0] - h.start[0]))
																					+ h.start[0],
																			10),
																	255), 0),
									Math
											.max(
													Math
															.min(
																	parseInt(
																			(h.pos * (h.end[1] - h.start[1]))
																					+ h.start[1],
																			10),
																	255), 0),
									Math
											.max(
													Math
															.min(
																	parseInt(
																			(h.pos * (h.end[2] - h.start[2]))
																					+ h.start[2],
																			10),
																	255), 0)]
									.join(",") + ")"
				}
			});
	function b(g) {
		var f;
		if (g && g.constructor == Array && g.length == 3) {
			return g
		}
		if (f = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/
				.exec(g)) {
			return [parseInt(f[1], 10), parseInt(f[2], 10), parseInt(f[3], 10)]
		}
		if (f = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/
				.exec(g)) {
			return [parseFloat(f[1]) * 2.55, parseFloat(f[2]) * 2.55,
					parseFloat(f[3]) * 2.55]
		}
		if (f = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(g)) {
			return [parseInt(f[1], 16), parseInt(f[2], 16), parseInt(f[3], 16)]
		}
		if (f = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(g)) {
			return [parseInt(f[1] + f[1], 16), parseInt(f[2] + f[2], 16),
					parseInt(f[3] + f[3], 16)]
		}
		if (f = /rgba\(0, 0, 0, 0\)/.exec(g)) {
			return a.transparent
		}
		return a[d.trim(g).toLowerCase()]
	}
	function e(h, f) {
		var g;
		do {
			g = d.curCSS(h, f);
			if (g != "" && g != "transparent" || d.nodeName(h, "body")) {
				break
			}
			f = "backgroundColor"
		} while (h = h.parentNode);
		return b(g)
	}
	var a = {
		aqua : [0, 255, 255],
		azure : [240, 255, 255],
		beige : [245, 245, 220],
		black : [0, 0, 0],
		blue : [0, 0, 255],
		brown : [165, 42, 42],
		cyan : [0, 255, 255],
		darkblue : [0, 0, 139],
		darkcyan : [0, 139, 139],
		darkgrey : [169, 169, 169],
		darkgreen : [0, 100, 0],
		darkkhaki : [189, 183, 107],
		darkmagenta : [139, 0, 139],
		darkolivegreen : [85, 107, 47],
		darkorange : [255, 140, 0],
		darkorchid : [153, 50, 204],
		darkred : [139, 0, 0],
		darksalmon : [233, 150, 122],
		darkviolet : [148, 0, 211],
		fuchsia : [255, 0, 255],
		gold : [255, 215, 0],
		green : [0, 128, 0],
		indigo : [75, 0, 130],
		khaki : [240, 230, 140],
		lightblue : [173, 216, 230],
		lightcyan : [224, 255, 255],
		lightgreen : [144, 238, 144],
		lightgrey : [211, 211, 211],
		lightpink : [255, 182, 193],
		lightyellow : [255, 255, 224],
		lime : [0, 255, 0],
		magenta : [255, 0, 255],
		maroon : [128, 0, 0],
		navy : [0, 0, 128],
		olive : [128, 128, 0],
		orange : [255, 165, 0],
		pink : [255, 192, 203],
		purple : [128, 0, 128],
		violet : [128, 0, 128],
		red : [255, 0, 0],
		silver : [192, 192, 192],
		white : [255, 255, 255],
		yellow : [255, 255, 0],
		transparent : [255, 255, 255]
	};
	d.easing.jswing = d.easing.swing;
	d.extend(d.easing, {
		def : "easeOutQuad",
		swing : function(g, h, f, j, i) {
			return d.easing[d.easing.def](g, h, f, j, i)
		},
		easeInQuad : function(g, h, f, j, i) {
			return j * (h /= i) * h + f
		},
		easeOutQuad : function(g, h, f, j, i) {
			return -j * (h /= i) * (h - 2) + f
		},
		easeInOutQuad : function(g, h, f, j, i) {
			if ((h /= i / 2) < 1) {
				return j / 2 * h * h + f
			}
			return -j / 2 * ((--h) * (h - 2) - 1) + f
		},
		easeInCubic : function(g, h, f, j, i) {
			return j * (h /= i) * h * h + f
		},
		easeOutCubic : function(g, h, f, j, i) {
			return j * ((h = h / i - 1) * h * h + 1) + f
		},
		easeInOutCubic : function(g, h, f, j, i) {
			if ((h /= i / 2) < 1) {
				return j / 2 * h * h * h + f
			}
			return j / 2 * ((h -= 2) * h * h + 2) + f
		},
		easeInQuart : function(g, h, f, j, i) {
			return j * (h /= i) * h * h * h + f
		},
		easeOutQuart : function(g, h, f, j, i) {
			return -j * ((h = h / i - 1) * h * h * h - 1) + f
		},
		easeInOutQuart : function(g, h, f, j, i) {
			if ((h /= i / 2) < 1) {
				return j / 2 * h * h * h * h + f
			}
			return -j / 2 * ((h -= 2) * h * h * h - 2) + f
		},
		easeInQuint : function(g, h, f, j, i) {
			return j * (h /= i) * h * h * h * h + f
		},
		easeOutQuint : function(g, h, f, j, i) {
			return j * ((h = h / i - 1) * h * h * h * h + 1) + f
		},
		easeInOutQuint : function(g, h, f, j, i) {
			if ((h /= i / 2) < 1) {
				return j / 2 * h * h * h * h * h + f
			}
			return j / 2 * ((h -= 2) * h * h * h * h + 2) + f
		},
		easeInSine : function(g, h, f, j, i) {
			return -j * Math.cos(h / i * (Math.PI / 2)) + j + f
		},
		easeOutSine : function(g, h, f, j, i) {
			return j * Math.sin(h / i * (Math.PI / 2)) + f
		},
		easeInOutSine : function(g, h, f, j, i) {
			return -j / 2 * (Math.cos(Math.PI * h / i) - 1) + f
		},
		easeInExpo : function(g, h, f, j, i) {
			return (h == 0) ? f : j * Math.pow(2, 10 * (h / i - 1)) + f
		},
		easeOutExpo : function(g, h, f, j, i) {
			return (h == i) ? f + j : j * (-Math.pow(2, -10 * h / i) + 1) + f
		},
		easeInOutExpo : function(g, h, f, j, i) {
			if (h == 0) {
				return f
			}
			if (h == i) {
				return f + j
			}
			if ((h /= i / 2) < 1) {
				return j / 2 * Math.pow(2, 10 * (h - 1)) + f
			}
			return j / 2 * (-Math.pow(2, -10 * --h) + 2) + f
		},
		easeInCirc : function(g, h, f, j, i) {
			return -j * (Math.sqrt(1 - (h /= i) * h) - 1) + f
		},
		easeOutCirc : function(g, h, f, j, i) {
			return j * Math.sqrt(1 - (h = h / i - 1) * h) + f
		},
		easeInOutCirc : function(g, h, f, j, i) {
			if ((h /= i / 2) < 1) {
				return -j / 2 * (Math.sqrt(1 - h * h) - 1) + f
			}
			return j / 2 * (Math.sqrt(1 - (h -= 2) * h) + 1) + f
		},
		easeInElastic : function(g, i, f, m, l) {
			var j = 1.70158;
			var k = 0;
			var h = m;
			if (i == 0) {
				return f
			}
			if ((i /= l) == 1) {
				return f + m
			}
			if (!k) {
				k = l * 0.3
			}
			if (h < Math.abs(m)) {
				h = m;
				var j = k / 4
			} else {
				var j = k / (2 * Math.PI) * Math.asin(m / h)
			}
			return -(h * Math.pow(2, 10 * (i -= 1)) * Math.sin((i * l - j)
					* (2 * Math.PI) / k))
					+ f
		},
		easeOutElastic : function(g, i, f, m, l) {
			var j = 1.70158;
			var k = 0;
			var h = m;
			if (i == 0) {
				return f
			}
			if ((i /= l) == 1) {
				return f + m
			}
			if (!k) {
				k = l * 0.3
			}
			if (h < Math.abs(m)) {
				h = m;
				var j = k / 4
			} else {
				var j = k / (2 * Math.PI) * Math.asin(m / h)
			}
			return h * Math.pow(2, -10 * i)
					* Math.sin((i * l - j) * (2 * Math.PI) / k) + m + f
		},
		easeInOutElastic : function(g, i, f, m, l) {
			var j = 1.70158;
			var k = 0;
			var h = m;
			if (i == 0) {
				return f
			}
			if ((i /= l / 2) == 2) {
				return f + m
			}
			if (!k) {
				k = l * (0.3 * 1.5)
			}
			if (h < Math.abs(m)) {
				h = m;
				var j = k / 4
			} else {
				var j = k / (2 * Math.PI) * Math.asin(m / h)
			}
			if (i < 1) {
				return -0.5
						* (h * Math.pow(2, 10 * (i -= 1)) * Math
								.sin((i * l - j) * (2 * Math.PI) / k)) + f
			}
			return h * Math.pow(2, -10 * (i -= 1))
					* Math.sin((i * l - j) * (2 * Math.PI) / k) * 0.5 + m + f
		},
		easeInBack : function(g, h, f, k, j, i) {
			if (i == undefined) {
				i = 1.70158
			}
			return k * (h /= j) * h * ((i + 1) * h - i) + f
		},
		easeOutBack : function(g, h, f, k, j, i) {
			if (i == undefined) {
				i = 1.70158
			}
			return k * ((h = h / j - 1) * h * ((i + 1) * h + i) + 1) + f
		},
		easeInOutBack : function(g, h, f, k, j, i) {
			if (i == undefined) {
				i = 1.70158
			}
			if ((h /= j / 2) < 1) {
				return k / 2 * (h * h * (((i *= (1.525)) + 1) * h - i)) + f
			}
			return k / 2 * ((h -= 2) * h * (((i *= (1.525)) + 1) * h + i) + 2)
					+ f
		},
		easeInBounce : function(g, h, f, j, i) {
			return j - d.easing.easeOutBounce(g, i - h, 0, j, i) + f
		},
		easeOutBounce : function(g, h, f, j, i) {
			if ((h /= i) < (1 / 2.75)) {
				return j * (7.5625 * h * h) + f
			} else {
				if (h < (2 / 2.75)) {
					return j * (7.5625 * (h -= (1.5 / 2.75)) * h + 0.75) + f
				} else {
					if (h < (2.5 / 2.75)) {
						return j * (7.5625 * (h -= (2.25 / 2.75)) * h + 0.9375)
								+ f
					} else {
						return j
								* (7.5625 * (h -= (2.625 / 2.75)) * h + 0.984375)
								+ f
					}
				}
			}
		},
		easeInOutBounce : function(g, h, f, j, i) {
			if (h < i / 2) {
				return d.easing.easeInBounce(g, h * 2, 0, j, i) * 0.5 + f
			}
			return d.easing.easeOutBounce(g, h * 2 - i, 0, j, i) * 0.5 + j
					* 0.5 + f
		}
	})
})(jQuery);;/*
			 * jQuery UI Effects Blind 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/Blind
			 * 
			 * Depends: effects.core.js
			 */
(function(a) {
	a.effects.blind = function(b) {
		return this.queue(function() {
					var d = a(this), c = ["position", "top", "left"];
					var h = a.effects.setMode(d, b.options.mode || "hide");
					var g = b.options.direction || "vertical";
					a.effects.save(d, c);
					d.show();
					var j = a.effects.createWrapper(d).css({
								overflow : "hidden"
							});
					var e = (g == "vertical") ? "height" : "width";
					var i = (g == "vertical") ? j.height() : j.width();
					if (h == "show") {
						j.css(e, 0)
					}
					var f = {};
					f[e] = h == "show" ? i : 0;
					j.animate(f, b.duration, b.options.easing, function() {
								if (h == "hide") {
									d.hide()
								}
								a.effects.restore(d, c);
								a.effects.removeWrapper(d);
								if (b.callback) {
									b.callback.apply(d[0], arguments)
								}
								d.dequeue()
							})
				})
	}
})(jQuery);;/*
			 * jQuery UI Effects Bounce 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/Bounce
			 * 
			 * Depends: effects.core.js
			 */
(function(a) {
	a.effects.bounce = function(b) {
		return this.queue(function() {
					var e = a(this), l = ["position", "top", "left"];
					var k = a.effects.setMode(e, b.options.mode || "effect");
					var n = b.options.direction || "up";
					var c = b.options.distance || 20;
					var d = b.options.times || 5;
					var g = b.duration || 250;
					if (/show|hide/.test(k)) {
						l.push("opacity")
					}
					a.effects.save(e, l);
					e.show();
					a.effects.createWrapper(e);
					var f = (n == "up" || n == "down") ? "top" : "left";
					var p = (n == "up" || n == "left") ? "pos" : "neg";
					var c = b.options.distance || (f == "top" ? e.outerHeight({
								margin : true
							}) / 3 : e.outerWidth({
								margin : true
							}) / 3);
					if (k == "show") {
						e.css("opacity", 0).css(f, p == "pos" ? -c : c)
					}
					if (k == "hide") {
						c = c / (d * 2)
					}
					if (k != "hide") {
						d--
					}
					if (k == "show") {
						var h = {
							opacity : 1
						};
						h[f] = (p == "pos" ? "+=" : "-=") + c;
						e.animate(h, g / 2, b.options.easing);
						c = c / 2;
						d--
					}
					for (var j = 0; j < d; j++) {
						var o = {}, m = {};
						o[f] = (p == "pos" ? "-=" : "+=") + c;
						m[f] = (p == "pos" ? "+=" : "-=") + c;
						e.animate(o, g / 2, b.options.easing).animate(m, g / 2,
								b.options.easing);
						c = (k == "hide") ? c * 2 : c / 2
					}
					if (k == "hide") {
						var h = {
							opacity : 0
						};
						h[f] = (p == "pos" ? "-=" : "+=") + c;
						e.animate(h, g / 2, b.options.easing, function() {
									e.hide();
									a.effects.restore(e, l);
									a.effects.removeWrapper(e);
									if (b.callback) {
										b.callback.apply(this, arguments)
									}
								})
					} else {
						var o = {}, m = {};
						o[f] = (p == "pos" ? "-=" : "+=") + c;
						m[f] = (p == "pos" ? "+=" : "-=") + c;
						e.animate(o, g / 2, b.options.easing).animate(m, g / 2,
								b.options.easing, function() {
									a.effects.restore(e, l);
									a.effects.removeWrapper(e);
									if (b.callback) {
										b.callback.apply(this, arguments)
									}
								})
					}
					e.queue("fx", function() {
								e.dequeue()
							});
					e.dequeue()
				})
	}
})(jQuery);;/*
			 * jQuery UI Effects Clip 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/Clip
			 * 
			 * Depends: effects.core.js
			 */
(function(a) {
	a.effects.clip = function(b) {
		return this.queue(function() {
			var f = a(this), j = ["position", "top", "left", "height", "width"];
			var i = a.effects.setMode(f, b.options.mode || "hide");
			var k = b.options.direction || "vertical";
			a.effects.save(f, j);
			f.show();
			var c = a.effects.createWrapper(f).css({
						overflow : "hidden"
					});
			var e = f[0].tagName == "IMG" ? c : f;
			var g = {
				size : (k == "vertical") ? "height" : "width",
				position : (k == "vertical") ? "top" : "left"
			};
			var d = (k == "vertical") ? e.height() : e.width();
			if (i == "show") {
				e.css(g.size, 0);
				e.css(g.position, d / 2)
			}
			var h = {};
			h[g.size] = i == "show" ? d : 0;
			h[g.position] = i == "show" ? 0 : d / 2;
			e.animate(h, {
						queue : false,
						duration : b.duration,
						easing : b.options.easing,
						complete : function() {
							if (i == "hide") {
								f.hide()
							}
							a.effects.restore(f, j);
							a.effects.removeWrapper(f);
							if (b.callback) {
								b.callback.apply(f[0], arguments)
							}
							f.dequeue()
						}
					})
		})
	}
})(jQuery);;/*
			 * jQuery UI Effects Drop 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/Drop
			 * 
			 * Depends: effects.core.js
			 */
(function(a) {
	a.effects.drop = function(b) {
		return this.queue(function() {
					var e = a(this), d = ["position", "top", "left", "opacity"];
					var i = a.effects.setMode(e, b.options.mode || "hide");
					var h = b.options.direction || "left";
					a.effects.save(e, d);
					e.show();
					a.effects.createWrapper(e);
					var f = (h == "up" || h == "down") ? "top" : "left";
					var c = (h == "up" || h == "left") ? "pos" : "neg";
					var j = b.options.distance || (f == "top" ? e.outerHeight({
								margin : true
							}) / 2 : e.outerWidth({
								margin : true
							}) / 2);
					if (i == "show") {
						e.css("opacity", 0).css(f, c == "pos" ? -j : j)
					}
					var g = {
						opacity : i == "show" ? 1 : 0
					};
					g[f] = (i == "show"
							? (c == "pos" ? "+=" : "-=")
							: (c == "pos" ? "-=" : "+="))
							+ j;
					e.animate(g, {
								queue : false,
								duration : b.duration,
								easing : b.options.easing,
								complete : function() {
									if (i == "hide") {
										e.hide()
									}
									a.effects.restore(e, d);
									a.effects.removeWrapper(e);
									if (b.callback) {
										b.callback.apply(this, arguments)
									}
									e.dequeue()
								}
							})
				})
	}
})(jQuery);;/*
			 * jQuery UI Effects Explode 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/Explode
			 * 
			 * Depends: effects.core.js
			 */
(function(a) {
	a.effects.explode = function(b) {
		return this.queue(function() {
					var k = b.options.pieces ? Math.round(Math
							.sqrt(b.options.pieces)) : 3;
					var e = b.options.pieces ? Math.round(Math
							.sqrt(b.options.pieces)) : 3;
					b.options.mode = b.options.mode == "toggle" ? (a(this)
							.is(":visible") ? "hide" : "show") : b.options.mode;
					var h = a(this).show().css("visibility", "hidden");
					var l = h.offset();
					l.top -= parseInt(h.css("marginTop"), 10) || 0;
					l.left -= parseInt(h.css("marginLeft"), 10) || 0;
					var g = h.outerWidth(true);
					var c = h.outerHeight(true);
					for (var f = 0; f < k; f++) {
						for (var d = 0; d < e; d++) {
							h.clone().appendTo("body").wrap("<div></div>").css(
									{
										position : "absolute",
										visibility : "visible",
										left : -d * (g / e),
										top : -f * (c / k)
									}).parent().addClass("ui-effects-explode")
									.css({
										position : "absolute",
										overflow : "hidden",
										width : g / e,
										height : c / k,
										left : l.left
												+ d
												* (g / e)
												+ (b.options.mode == "show"
														? (d - Math
																.floor(e / 2))
																* (g / e)
														: 0),
										top : l.top
												+ f
												* (c / k)
												+ (b.options.mode == "show"
														? (f - Math
																.floor(k / 2))
																* (c / k)
														: 0),
										opacity : b.options.mode == "show"
												? 0
												: 1
									}).animate({
										left : l.left
												+ d
												* (g / e)
												+ (b.options.mode == "show"
														? 0
														: (d - Math
																.floor(e / 2))
																* (g / e)),
										top : l.top
												+ f
												* (c / k)
												+ (b.options.mode == "show"
														? 0
														: (f - Math
																.floor(k / 2))
																* (c / k)),
										opacity : b.options.mode == "show"
												? 1
												: 0
									}, b.duration || 500)
						}
					}
					setTimeout(function() {
								b.options.mode == "show" ? h.css({
											visibility : "visible"
										}) : h.css({
											visibility : "visible"
										}).hide();
								if (b.callback) {
									b.callback.apply(h[0])
								}
								h.dequeue();
								a("div.ui-effects-explode").remove()
							}, b.duration || 500)
				})
	}
})(jQuery);;/*
			 * jQuery UI Effects Fold 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/Fold
			 * 
			 * Depends: effects.core.js
			 */
(function(a) {
	a.effects.fold = function(b) {
		return this.queue(function() {
					var e = a(this), k = ["position", "top", "left"];
					var h = a.effects.setMode(e, b.options.mode || "hide");
					var o = b.options.size || 15;
					var n = !(!b.options.horizFirst);
					var g = b.duration ? b.duration / 2 : a.fx.speeds._default
							/ 2;
					a.effects.save(e, k);
					e.show();
					var d = a.effects.createWrapper(e).css({
								overflow : "hidden"
							});
					var i = ((h == "show") != n);
					var f = i ? ["width", "height"] : ["height", "width"];
					var c = i ? [d.width(), d.height()] : [d.height(),
							d.width()];
					var j = /([0-9]+)%/.exec(o);
					if (j) {
						o = parseInt(j[1], 10) / 100 * c[h == "hide" ? 0 : 1]
					}
					if (h == "show") {
						d.css(n ? {
							height : 0,
							width : o
						} : {
							height : o,
							width : 0
						})
					}
					var m = {}, l = {};
					m[f[0]] = h == "show" ? c[0] : o;
					l[f[1]] = h == "show" ? c[1] : 0;
					d.animate(m, g, b.options.easing).animate(l, g,
							b.options.easing, function() {
								if (h == "hide") {
									e.hide()
								}
								a.effects.restore(e, k);
								a.effects.removeWrapper(e);
								if (b.callback) {
									b.callback.apply(e[0], arguments)
								}
								e.dequeue()
							})
				})
	}
})(jQuery);;/*
			 * jQuery UI Effects Highlight 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/Highlight
			 * 
			 * Depends: effects.core.js
			 */
(function(a) {
	a.effects.highlight = function(b) {
		return this.queue(function() {
					var e = a(this), d = ["backgroundImage", "backgroundColor",
							"opacity"];
					var h = a.effects.setMode(e, b.options.mode || "show");
					var c = b.options.color || "#ffff99";
					var g = e.css("backgroundColor");
					a.effects.save(e, d);
					e.show();
					e.css({
								backgroundImage : "none",
								backgroundColor : c
							});
					var f = {
						backgroundColor : g
					};
					if (h == "hide") {
						f.opacity = 0
					}
					e.animate(f, {
								queue : false,
								duration : b.duration,
								easing : b.options.easing,
								complete : function() {
									if (h == "hide") {
										e.hide()
									}
									a.effects.restore(e, d);
									if (h == "show" && a.browser.msie) {
										this.style.removeAttribute("filter")
									}
									if (b.callback) {
										b.callback.apply(this, arguments)
									}
									e.dequeue()
								}
							})
				})
	}
})(jQuery);;/*
			 * jQuery UI Effects Pulsate 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/Pulsate
			 * 
			 * Depends: effects.core.js
			 */
(function(a) {
	a.effects.pulsate = function(b) {
		return this.queue(function() {
					var d = a(this);
					var g = a.effects.setMode(d, b.options.mode || "show");
					var f = b.options.times || 5;
					var e = b.duration ? b.duration / 2 : a.fx.speeds._default
							/ 2;
					if (g == "hide") {
						f--
					}
					if (d.is(":hidden")) {
						d.css("opacity", 0);
						d.show();
						d.animate({
									opacity : 1
								}, e, b.options.easing);
						f = f - 2
					}
					for (var c = 0; c < f; c++) {
						d.animate({
									opacity : 0
								}, e, b.options.easing).animate({
									opacity : 1
								}, e, b.options.easing)
					}
					if (g == "hide") {
						d.animate({
									opacity : 0
								}, e, b.options.easing, function() {
									d.hide();
									if (b.callback) {
										b.callback.apply(this, arguments)
									}
								})
					} else {
						d.animate({
									opacity : 0
								}, e, b.options.easing).animate({
									opacity : 1
								}, e, b.options.easing, function() {
									if (b.callback) {
										b.callback.apply(this, arguments)
									}
								})
					}
					d.queue("fx", function() {
								d.dequeue()
							});
					d.dequeue()
				})
	}
})(jQuery);;/*
			 * jQuery UI Effects Scale 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/Scale
			 * 
			 * Depends: effects.core.js
			 */
(function(a) {
	a.effects.puff = function(b) {
		return this.queue(function() {
					var f = a(this);
					var c = a.extend(true, {}, b.options);
					var h = a.effects.setMode(f, b.options.mode || "hide");
					var g = parseInt(b.options.percent, 10) || 150;
					c.fade = true;
					var e = {
						height : f.height(),
						width : f.width()
					};
					var d = g / 100;
					f.from = (h == "hide") ? e : {
						height : e.height * d,
						width : e.width * d
					};
					c.from = f.from;
					c.percent = (h == "hide") ? g : 100;
					c.mode = h;
					f.effect("scale", c, b.duration, b.callback);
					f.dequeue()
				})
	};
	a.effects.scale = function(b) {
		return this.queue(function() {
					var g = a(this);
					var d = a.extend(true, {}, b.options);
					var j = a.effects.setMode(g, b.options.mode || "effect");
					var h = parseInt(b.options.percent, 10)
							|| (parseInt(b.options.percent, 10) == 0
									? 0
									: (j == "hide" ? 0 : 100));
					var i = b.options.direction || "both";
					var c = b.options.origin;
					if (j != "effect") {
						d.origin = c || ["middle", "center"];
						d.restore = true
					}
					var f = {
						height : g.height(),
						width : g.width()
					};
					g.from = b.options.from || (j == "show" ? {
						height : 0,
						width : 0
					} : f);
					var e = {
						y : i != "horizontal" ? (h / 100) : 1,
						x : i != "vertical" ? (h / 100) : 1
					};
					g.to = {
						height : f.height * e.y,
						width : f.width * e.x
					};
					if (b.options.fade) {
						if (j == "show") {
							g.from.opacity = 0;
							g.to.opacity = 1
						}
						if (j == "hide") {
							g.from.opacity = 1;
							g.to.opacity = 0
						}
					}
					d.from = g.from;
					d.to = g.to;
					d.mode = j;
					g.effect("size", d, b.duration, b.callback);
					g.dequeue()
				})
	};
	a.effects.size = function(b) {
		return this.queue(function() {
					var c = a(this), n = ["position", "top", "left", "width",
							"height", "overflow", "opacity"];
					var m = ["position", "top", "left", "overflow", "opacity"];
					var j = ["width", "height", "overflow"];
					var p = ["fontSize"];
					var k = ["borderTopWidth", "borderBottomWidth",
							"paddingTop", "paddingBottom"];
					var f = ["borderLeftWidth", "borderRightWidth",
							"paddingLeft", "paddingRight"];
					var g = a.effects.setMode(c, b.options.mode || "effect");
					var i = b.options.restore || false;
					var e = b.options.scale || "both";
					var o = b.options.origin;
					var d = {
						height : c.height(),
						width : c.width()
					};
					c.from = b.options.from || d;
					c.to = b.options.to || d;
					if (o) {
						var h = a.effects.getBaseline(o, d);
						c.from.top = (d.height - c.from.height) * h.y;
						c.from.left = (d.width - c.from.width) * h.x;
						c.to.top = (d.height - c.to.height) * h.y;
						c.to.left = (d.width - c.to.width) * h.x
					}
					var l = {
						from : {
							y : c.from.height / d.height,
							x : c.from.width / d.width
						},
						to : {
							y : c.to.height / d.height,
							x : c.to.width / d.width
						}
					};
					if (e == "box" || e == "both") {
						if (l.from.y != l.to.y) {
							n = n.concat(k);
							c.from = a.effects.setTransition(c, k, l.from.y,
									c.from);
							c.to = a.effects.setTransition(c, k, l.to.y, c.to)
						}
						if (l.from.x != l.to.x) {
							n = n.concat(f);
							c.from = a.effects.setTransition(c, f, l.from.x,
									c.from);
							c.to = a.effects.setTransition(c, f, l.to.x, c.to)
						}
					}
					if (e == "content" || e == "both") {
						if (l.from.y != l.to.y) {
							n = n.concat(p);
							c.from = a.effects.setTransition(c, p, l.from.y,
									c.from);
							c.to = a.effects.setTransition(c, p, l.to.y, c.to)
						}
					}
					a.effects.save(c, i ? n : m);
					c.show();
					a.effects.createWrapper(c);
					c.css("overflow", "hidden").css(c.from);
					if (e == "content" || e == "both") {
						k = k.concat(["marginTop", "marginBottom"]).concat(p);
						f = f.concat(["marginLeft", "marginRight"]);
						j = n.concat(k).concat(f);
						c.find("*[width]").each(function() {
							child = a(this);
							if (i) {
								a.effects.save(child, j)
							}
							var q = {
								height : child.height(),
								width : child.width()
							};
							child.from = {
								height : q.height * l.from.y,
								width : q.width * l.from.x
							};
							child.to = {
								height : q.height * l.to.y,
								width : q.width * l.to.x
							};
							if (l.from.y != l.to.y) {
								child.from = a.effects.setTransition(child, k,
										l.from.y, child.from);
								child.to = a.effects.setTransition(child, k,
										l.to.y, child.to)
							}
							if (l.from.x != l.to.x) {
								child.from = a.effects.setTransition(child, f,
										l.from.x, child.from);
								child.to = a.effects.setTransition(child, f,
										l.to.x, child.to)
							}
							child.css(child.from);
							child.animate(child.to, b.duration,
									b.options.easing, function() {
										if (i) {
											a.effects.restore(child, j)
										}
									})
						})
					}
					c.animate(c.to, {
								queue : false,
								duration : b.duration,
								easing : b.options.easing,
								complete : function() {
									if (g == "hide") {
										c.hide()
									}
									a.effects.restore(c, i ? n : m);
									a.effects.removeWrapper(c);
									if (b.callback) {
										b.callback.apply(this, arguments)
									}
									c.dequeue()
								}
							})
				})
	}
})(jQuery);;/*
			 * jQuery UI Effects Shake 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/Shake
			 * 
			 * Depends: effects.core.js
			 */
(function(a) {
	a.effects.shake = function(b) {
		return this.queue(function() {
					var e = a(this), l = ["position", "top", "left"];
					var k = a.effects.setMode(e, b.options.mode || "effect");
					var n = b.options.direction || "left";
					var c = b.options.distance || 20;
					var d = b.options.times || 3;
					var g = b.duration || b.options.duration || 140;
					a.effects.save(e, l);
					e.show();
					a.effects.createWrapper(e);
					var f = (n == "up" || n == "down") ? "top" : "left";
					var p = (n == "up" || n == "left") ? "pos" : "neg";
					var h = {}, o = {}, m = {};
					h[f] = (p == "pos" ? "-=" : "+=") + c;
					o[f] = (p == "pos" ? "+=" : "-=") + c * 2;
					m[f] = (p == "pos" ? "-=" : "+=") + c * 2;
					e.animate(h, g, b.options.easing);
					for (var j = 1; j < d; j++) {
						e.animate(o, g, b.options.easing).animate(m, g,
								b.options.easing)
					}
					e.animate(o, g, b.options.easing).animate(h, g / 2,
							b.options.easing, function() {
								a.effects.restore(e, l);
								a.effects.removeWrapper(e);
								if (b.callback) {
									b.callback.apply(this, arguments)
								}
							});
					e.queue("fx", function() {
								e.dequeue()
							});
					e.dequeue()
				})
	}
})(jQuery);;/*
			 * jQuery UI Effects Slide 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/Slide
			 * 
			 * Depends: effects.core.js
			 */
(function(a) {
	a.effects.slide = function(b) {
		return this.queue(function() {
					var e = a(this), d = ["position", "top", "left"];
					var i = a.effects.setMode(e, b.options.mode || "show");
					var h = b.options.direction || "left";
					a.effects.save(e, d);
					e.show();
					a.effects.createWrapper(e).css({
								overflow : "hidden"
							});
					var f = (h == "up" || h == "down") ? "top" : "left";
					var c = (h == "up" || h == "left") ? "pos" : "neg";
					var j = b.options.distance || (f == "top" ? e.outerHeight({
								margin : true
							}) : e.outerWidth({
								margin : true
							}));
					if (i == "show") {
						e.css(f, c == "pos" ? -j : j)
					}
					var g = {};
					g[f] = (i == "show"
							? (c == "pos" ? "+=" : "-=")
							: (c == "pos" ? "-=" : "+="))
							+ j;
					e.animate(g, {
								queue : false,
								duration : b.duration,
								easing : b.options.easing,
								complete : function() {
									if (i == "hide") {
										e.hide()
									}
									a.effects.restore(e, d);
									a.effects.removeWrapper(e);
									if (b.callback) {
										b.callback.apply(this, arguments)
									}
									e.dequeue()
								}
							})
				})
	}
})(jQuery);;/*
			 * jQuery UI Effects Transfer 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Effects/Transfer
			 * 
			 * Depends: effects.core.js
			 */
(function(a) {
	a.effects.transfer = function(b) {
		return this.queue(function() {
					var f = a(this), h = a(b.options.to), e = h.offset(), g = {
						top : e.top,
						left : e.left,
						height : h.innerHeight(),
						width : h.innerWidth()
					}, d = f.offset(), c = a('<div class="ui-effects-transfer"></div>')
							.appendTo(document.body)
							.addClass(b.options.className).css({
										top : d.top,
										left : d.left,
										height : f.innerHeight(),
										width : f.innerWidth(),
										position : "absolute"
									}).animate(g, b.duration, b.options.easing,
									function() {
										c.remove();
										(b.callback && b.callback.apply(f[0],
												arguments));
										f.dequeue()
									})
				})
	}
})(jQuery);;/**
 * jCarousel - Riding carousels with jQuery
 *   http://sorgalla.com/jcarousel/
 *
 * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * Built on top of the jQuery library
 *   http://jquery.com
 *
 * Inspired by the "Carousel Component" by Bill Scott
 *   http://billwscott.com/carousel/
 */

(function($) {
    /**
     * Creates a carousel for all matched elements.
     *
     * @example $("#mycarousel").jcarousel();
     * @before <ul id="mycarousel" class="jcarousel-skin-name"><li>First item</li><li>Second item</li></ul>
     * @result
     *
     * <div class="jcarousel-skin-name">
     *   <div class="jcarousel-container">
     *     <div disabled="disabled" class="jcarousel-prev jcarousel-prev-disabled"></div>
     *     <div class="jcarousel-next"></div>
     *     <div class="jcarousel-clip">
     *       <ul class="jcarousel-list">
     *         <li class="jcarousel-item-1">First item</li>
     *         <li class="jcarousel-item-2">Second item</li>
     *       </ul>
     *     </div>
     *   </div>
     * </div>
     *
     * @name jcarousel
     * @type jQuery
     * @param Hash o A set of key/value pairs to set as configuration properties.
     * @cat Plugins/jCarousel
     */
    $.fn.jcarousel = function(o) {
        return this.each(function() {
            new $jc(this, o);
        });
    };

    // Default configuration properties.
    var defaults = {
        vertical: false,
        start: 1,
        offset: 1,
        size: null,
        scroll: 3,
        visible: null,
        animation: 'normal',
        easing: 'swing',
        auto: 0,
        wrap: null,
        initCallback: null,
        reloadCallback: null,
        itemLoadCallback: null,
        itemFirstInCallback: null,
        itemFirstOutCallback: null,
        itemLastInCallback: null,
        itemLastOutCallback: null,
        itemVisibleInCallback: null,
        itemVisibleOutCallback: null,
        buttonNextHTML: '<div></div>',
        buttonPrevHTML: '<div></div>',
        buttonNextEvent: 'click',
        buttonPrevEvent: 'click',
        buttonNextCallback: null,
        buttonPrevCallback: null
    };

    /**
     * The jCarousel object.
     *
     * @constructor
     * @name $.jcarousel
     * @param Object e The element to create the carousel for.
     * @param Hash o A set of key/value pairs to set as configuration properties.
     * @cat Plugins/jCarousel
     */
    $.jcarousel = function(e, o) {
        this.options    = $.extend({}, defaults, o || {});

        this.locked     = false;

        this.container  = null;
        this.clip       = null;
        this.list       = null;
        this.buttonNext = null;
        this.buttonPrev = null;

        this.wh = !this.options.vertical ? 'width' : 'height';
        this.lt = !this.options.vertical ? 'left' : 'top';

        // Extract skin class
        var skin = '', split = e.className.split(' ');

        for (var i = 0; i < split.length; i++) {
            if (split[i].indexOf('jcarousel-skin') != -1) {
                $(e).removeClass(split[i]);
                var skin = split[i];
                break;
            }
        }

        if (e.nodeName == 'UL' || e.nodeName == 'OL') {
            this.list = $(e);
            this.container = this.list.parent();

            if (this.container.hasClass('jcarousel-clip')) {
                if (!this.container.parent().hasClass('jcarousel-container'))
                    this.container = this.container.wrap('<div></div>');

                this.container = this.container.parent();
            } else if (!this.container.hasClass('jcarousel-container'))
                this.container = this.list.wrap('<div></div>').parent();
        } else {
            this.container = $(e);
            this.list = $(e).find('>ul,>ol,div>ul,div>ol');
        }

        if (skin != '' && this.container.parent()[0].className.indexOf('jcarousel-skin') == -1)
        	this.container.wrap('<div class=" '+ skin + '"></div>');

        this.clip = this.list.parent();

        if (!this.clip.length || !this.clip.hasClass('jcarousel-clip'))
            this.clip = this.list.wrap('<div></div>').parent();

        this.buttonPrev = $('.jcarousel-prev', this.container);

        if (this.buttonPrev.size() == 0 && this.options.buttonPrevHTML != null)
            this.buttonPrev = this.clip.before(this.options.buttonPrevHTML).prev();

        this.buttonPrev.addClass(this.className('jcarousel-prev'));

        this.buttonNext = $('.jcarousel-next', this.container);

        if (this.buttonNext.size() == 0 && this.options.buttonNextHTML != null)
            this.buttonNext = this.clip.before(this.options.buttonNextHTML).prev();

        this.buttonNext.addClass(this.className('jcarousel-next'));

        this.clip.addClass(this.className('jcarousel-clip'));
        this.list.addClass(this.className('jcarousel-list'));
        this.container.addClass(this.className('jcarousel-container'));

        var di = this.options.visible != null ? Math.ceil(this.clipping() / this.options.visible) : null;
        var li = this.list.children('li');

        var self = this;

        if (li.size() > 0) {
            var wh = 0, i = this.options.offset;
            li.each(function() {
                self.format(this, i++);
                wh += self.dimension(this, di);
            });

            this.list.css(this.wh, wh + 'px');

            // Only set if not explicitly passed as option
            if (!o || o.size === undefined)
                this.options.size = li.size();
        }

        // For whatever reason, .show() does not work in Safari...
        this.container.css('display', 'block');
        this.buttonNext.css('display', 'block');
        this.buttonPrev.css('display', 'block');

        this.funcNext   = function() { self.next(); };
        this.funcPrev   = function() { self.prev(); };
        this.funcResize = function() { self.reload(); };

        if (this.options.initCallback != null)
            this.options.initCallback(this, 'init');

        if ($.browser.safari) {
            this.buttons(false, false);
            $(window).bind('load', function() { self.setup(); });
        } else
            this.setup();
    };

    // Create shortcut for internal use
    var $jc = $.jcarousel;

    $jc.fn = $jc.prototype = {
        jcarousel: '0.2.3'
    };

    $jc.fn.extend = $jc.extend = $.extend;

    $jc.fn.extend({
        /**
         * Setups the carousel.
         *
         * @name setup
         * @type undefined
         * @cat Plugins/jCarousel
         */
        setup: function() {
            this.first     = null;
            this.last      = null;
            this.prevFirst = null;
            this.prevLast  = null;
            this.animating = false;
            this.timer     = null;
            this.tail      = null;
            this.inTail    = false;

            if (this.locked)
                return;

            this.list.css(this.lt, this.pos(this.options.offset) + 'px');
            var p = this.pos(this.options.start);
            this.prevFirst = this.prevLast = null;
            this.animate(p, false);

            $(window).unbind('resize', this.funcResize).bind('resize', this.funcResize);
        },

        /**
         * Clears the list and resets the carousel.
         *
         * @name reset
         * @type undefined
         * @cat Plugins/jCarousel
         */
        reset: function() {
            this.list.empty();

            this.list.css(this.lt, '0px');
            this.list.css(this.wh, '10px');

            if (this.options.initCallback != null)
                this.options.initCallback(this, 'reset');

            this.setup();
        },

        /**
         * Reloads the carousel and adjusts positions.
         *
         * @name reload
         * @type undefined
         * @cat Plugins/jCarousel
         */
        reload: function() {
            if (this.tail != null && this.inTail)
                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + this.tail);

            this.tail   = null;
            this.inTail = false;

            if (this.options.reloadCallback != null)
                this.options.reloadCallback(this);

            if (this.options.visible != null) {
                var self = this;
                var di = Math.ceil(this.clipping() / this.options.visible), wh = 0, lt = 0;
                $('li', this.list).each(function(i) {
                    wh += self.dimension(this, di);
                    if (i + 1 < self.first)
                        lt = wh;
                });

                this.list.css(this.wh, wh + 'px');
                this.list.css(this.lt, -lt + 'px');
            }

            this.scroll(this.first, false);
        },

        /**
         * Locks the carousel.
         *
         * @name lock
         * @type undefined
         * @cat Plugins/jCarousel
         */
        lock: function() {
            this.locked = true;
            this.buttons();
        },

        /**
         * Unlocks the carousel.
         *
         * @name unlock
         * @type undefined
         * @cat Plugins/jCarousel
         */
        unlock: function() {
            this.locked = false;
            this.buttons();
        },

        /**
         * Sets the size of the carousel.
         *
         * @name size
         * @type undefined
         * @param Number s The size of the carousel.
         * @cat Plugins/jCarousel
         */
        size: function(s) {
            if (s != undefined) {
                this.options.size = s;
                if (!this.locked)
                    this.buttons();
            }

            return this.options.size;
        },

        /**
         * Checks whether a list element exists for the given index (or index range).
         *
         * @name get
         * @type bool
         * @param Number i The index of the (first) element.
         * @param Number i2 The index of the last element.
         * @cat Plugins/jCarousel
         */
        has: function(i, i2) {
            if (i2 == undefined || !i2)
                i2 = i;

            if (this.options.size !== null && i2 > this.options.size)
            	i2 = this.options.size;

            for (var j = i; j <= i2; j++) {
                var e = this.get(j);
                if (!e.length || e.hasClass('jcarousel-item-placeholder'))
                    return false;
            }

            return true;
        },

        /**
         * Returns a jQuery object with list element for the given index.
         *
         * @name get
         * @type jQuery
         * @param Number i The index of the element.
         * @cat Plugins/jCarousel
         */
        get: function(i) {
            return $('.jcarousel-item-' + i, this.list);
        },

        /**
         * Adds an element for the given index to the list.
         * If the element already exists, it updates the inner html.
         * Returns the created element as jQuery object.
         *
         * @name add
         * @type jQuery
         * @param Number i The index of the element.
         * @param String s The innerHTML of the element.
         * @cat Plugins/jCarousel
         */
        add: function(i, s) {
            var e = this.get(i), old = 0, add = 0;

            if (e.length == 0) {
                var c, e = this.create(i), j = $jc.intval(i);
                while (c = this.get(--j)) {
                    if (j <= 0 || c.length) {
                        j <= 0 ? this.list.prepend(e) : c.after(e);
                        break;
                    }
                }
            } else
                old = this.dimension(e);

            e.removeClass(this.className('jcarousel-item-placeholder'));
            typeof s == 'string' ? e.html(s) : e.empty().append(s);

            var di = this.options.visible != null ? Math.ceil(this.clipping() / this.options.visible) : null;
            var wh = this.dimension(e, di) - old;

            if (i > 0 && i < this.first)
                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - wh + 'px');

            this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) + wh + 'px');

            return e;
        },

        /**
         * Removes an element for the given index from the list.
         *
         * @name remove
         * @type undefined
         * @param Number i The index of the element.
         * @cat Plugins/jCarousel
         */
        remove: function(i) {
            var e = this.get(i);

            // Check if item exists and is not currently visible
            if (!e.length || (i >= this.first && i <= this.last))
                return;

            var d = this.dimension(e);

            if (i < this.first)
                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + d + 'px');

            e.remove();

            this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) - d + 'px');
        },

        /**
         * Moves the carousel forwards.
         *
         * @name next
         * @type undefined
         * @cat Plugins/jCarousel
         */
        next: function() {
            this.stopAuto();

            if (this.tail != null && !this.inTail)
                this.scrollTail(false);
            else
                this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'last') && this.options.size != null && this.last == this.options.size) ? 1 : this.first + this.options.scroll);
        },

        /**
         * Moves the carousel backwards.
         *
         * @name prev
         * @type undefined
         * @cat Plugins/jCarousel
         */
        prev: function() {
            this.stopAuto();

            if (this.tail != null && this.inTail)
                this.scrollTail(true);
            else
                this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'first') && this.options.size != null && this.first == 1) ? this.options.size : this.first - this.options.scroll);
        },

        /**
         * Scrolls the tail of the carousel.
         *
         * @name scrollTail
         * @type undefined
         * @param Bool b Whether scroll the tail back or forward.
         * @cat Plugins/jCarousel
         */
        scrollTail: function(b) {
            if (this.locked || this.animating || !this.tail)
                return;

            var pos  = $jc.intval(this.list.css(this.lt));

            !b ? pos -= this.tail : pos += this.tail;
            this.inTail = !b;

            // Save for callbacks
            this.prevFirst = this.first;
            this.prevLast  = this.last;

            this.animate(pos);
        },

        /**
         * Scrolls the carousel to a certain position.
         *
         * @name scroll
         * @type undefined
         * @param Number i The index of the element to scoll to.
         * @param Bool a Flag indicating whether to perform animation.
         * @cat Plugins/jCarousel
         */
        scroll: function(i, a) {
            if (this.locked || this.animating)
                return;

            this.animate(this.pos(i), a);
        },

        /**
         * Prepares the carousel and return the position for a certian index.
         *
         * @name pos
         * @type Number
         * @param Number i The index of the element to scoll to.
         * @cat Plugins/jCarousel
         */
        pos: function(i) {
            if (this.locked || this.animating)
                return;

            if (this.options.wrap != 'circular')
                i = i < 1 ? 1 : (this.options.size && i > this.options.size ? this.options.size : i);

            var back = this.first > i;
            var pos  = $jc.intval(this.list.css(this.lt));

            // Create placeholders, new list width/height
            // and new list position
            var f = this.options.wrap != 'circular' && this.first <= 1 ? 1 : this.first;
            var c = back ? this.get(f) : this.get(this.last);
            var j = back ? f : f - 1;
            var e = null, l = 0, p = false, d = 0;

            while (back ? --j >= i : ++j < i) {
                e = this.get(j);
                p = !e.length;
                if (e.length == 0) {
                    e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
                    c[back ? 'before' : 'after' ](e);
                }

                c = e;
                d = this.dimension(e);

                if (p)
                    l += d;

                if (this.first != null && (this.options.wrap == 'circular' || (j >= 1 && (this.options.size == null || j <= this.options.size))))
                    pos = back ? pos + d : pos - d;
            }

            // Calculate visible items
            var clipping = this.clipping();
            var cache = [];
            var visible = 0, j = i, v = 0;
            var c = this.get(i - 1);

            while (++visible) {
                e = this.get(j);
                p = !e.length;
                if (e.length == 0) {
                    e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
                    // This should only happen on a next scroll
                    c.length == 0 ? this.list.prepend(e) : c[back ? 'before' : 'after' ](e);
                }

                c = e;
                var d = this.dimension(e);
                if (d == 0) {
                    alert('jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...');
                    return 0;
                }

                if (this.options.wrap != 'circular' && this.options.size !== null && j > this.options.size)
                    cache.push(e);
                else if (p)
                    l += d;

                v += d;

                if (v >= clipping)
                    break;

                j++;
            }

             // Remove out-of-range placeholders
            for (var x = 0; x < cache.length; x++)
                cache[x].remove();

            // Resize list
            if (l > 0) {
                this.list.css(this.wh, this.dimension(this.list) + l + 'px');

                if (back) {
                    pos -= l;
                    this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - l + 'px');
                }
            }

            // Calculate first and last item
            var last = i + visible - 1;
            if (this.options.wrap != 'circular' && this.options.size && last > this.options.size)
                last = this.options.size;

            if (j > last) {
                visible = 0, j = last, v = 0;
                while (++visible) {
                    var e = this.get(j--);
                    if (!e.length)
                        break;
                    v += this.dimension(e);
                    if (v >= clipping)
                        break;
                }
            }

            var first = last - visible + 1;
            if (this.options.wrap != 'circular' && first < 1)
                first = 1;

            if (this.inTail && back) {
                pos += this.tail;
                this.inTail = false;
            }

            this.tail = null;
            if (this.options.wrap != 'circular' && last == this.options.size && (last - visible + 1) >= 1) {
                var m = $jc.margin(this.get(last), !this.options.vertical ? 'marginRight' : 'marginBottom');
                if ((v - m) > clipping)
                    this.tail = v - clipping - m;
            }

            // Adjust position
            while (i-- > first)
                pos += this.dimension(this.get(i));

            // Save visible item range
            this.prevFirst = this.first;
            this.prevLast  = this.last;
            this.first     = first;
            this.last      = last;

            return pos;
        },

        /**
         * Animates the carousel to a certain position.
         *
         * @name animate
         * @type undefined
         * @param mixed p Position to scroll to.
         * @param Bool a Flag indicating whether to perform animation.
         * @cat Plugins/jCarousel
         */
        animate: function(p, a) {
            if (this.locked || this.animating)
                return;

            this.animating = true;

            var self = this;
            var scrolled = function() {
                self.animating = false;

                if (p == 0)
                    self.list.css(self.lt,  0);

                if (self.options.wrap == 'both' || self.options.wrap == 'last' || self.options.size == null || self.last < self.options.size)
                    self.startAuto();

                self.buttons();
                self.notify('onAfterAnimation');
            };

            this.notify('onBeforeAnimation');

            // Animate
            if (!this.options.animation || a == false) {
                this.list.css(this.lt, p + 'px');
                scrolled();
            } else {
                var o = !this.options.vertical ? {'left': p} : {'top': p};
                this.list.animate(o, this.options.animation, this.options.easing, scrolled);
            }
        },

        /**
         * Starts autoscrolling.
         *
         * @name auto
         * @type undefined
         * @param Number s Seconds to periodically autoscroll the content.
         * @cat Plugins/jCarousel
         */
        startAuto: function(s) {
            if (s != undefined)
                this.options.auto = s;

            if (this.options.auto == 0)
                return this.stopAuto();

            if (this.timer != null)
                return;

            var self = this;
            this.timer = setTimeout(function() { self.next(); }, this.options.auto * 1000);
        },

        /**
         * Stops autoscrolling.
         *
         * @name stopAuto
         * @type undefined
         * @cat Plugins/jCarousel
         */
        stopAuto: function() {
            if (this.timer == null)
                return;

            clearTimeout(this.timer);
            this.timer = null;
        },

        /**
         * Sets the states of the prev/next buttons.
         *
         * @name buttons
         * @type undefined
         * @cat Plugins/jCarousel
         */
        buttons: function(n, p) {
            if (n == undefined || n == null) {
                var n = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'first') || this.options.size == null || this.last < this.options.size);
                if (!this.locked && (!this.options.wrap || this.options.wrap == 'first') && this.options.size != null && this.last >= this.options.size)
                    n = this.tail != null && !this.inTail;
            }

            if (p == undefined || p == null) {
                var p = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'last') || this.first > 1);
                if (!this.locked && (!this.options.wrap || this.options.wrap == 'last') && this.options.size != null && this.first == 1)
                    p = this.tail != null && this.inTail;
            }

            var self = this;

            this.buttonNext[n ? 'bind' : 'unbind'](this.options.buttonNextEvent, this.funcNext)[n ? 'removeClass' : 'addClass'](this.className('jcarousel-next-disabled')).attr('disabled', n ? false : true);
            this.buttonPrev[p ? 'bind' : 'unbind'](this.options.buttonPrevEvent, this.funcPrev)[p ? 'removeClass' : 'addClass'](this.className('jcarousel-prev-disabled')).attr('disabled', p ? false : true);

            if (this.buttonNext.length > 0 && (this.buttonNext[0].jcarouselstate == undefined || this.buttonNext[0].jcarouselstate != n) && this.options.buttonNextCallback != null) {
                this.buttonNext.each(function() { self.options.buttonNextCallback(self, this, n); });
                this.buttonNext[0].jcarouselstate = n;
            }

            if (this.buttonPrev.length > 0 && (this.buttonPrev[0].jcarouselstate == undefined || this.buttonPrev[0].jcarouselstate != p) && this.options.buttonPrevCallback != null) {
                this.buttonPrev.each(function() { self.options.buttonPrevCallback(self, this, p); });
                this.buttonPrev[0].jcarouselstate = p;
            }
        },

        notify: function(evt) {
            var state = this.prevFirst == null ? 'init' : (this.prevFirst < this.first ? 'next' : 'prev');

            // Load items
            this.callback('itemLoadCallback', evt, state);

            if (this.prevFirst !== this.first) {
                this.callback('itemFirstInCallback', evt, state, this.first);
                this.callback('itemFirstOutCallback', evt, state, this.prevFirst);
            }

            if (this.prevLast !== this.last) {
                this.callback('itemLastInCallback', evt, state, this.last);
                this.callback('itemLastOutCallback', evt, state, this.prevLast);
            }

            this.callback('itemVisibleInCallback', evt, state, this.first, this.last, this.prevFirst, this.prevLast);
            this.callback('itemVisibleOutCallback', evt, state, this.prevFirst, this.prevLast, this.first, this.last);
        },

        callback: function(cb, evt, state, i1, i2, i3, i4) {
            if (this.options[cb] == undefined || (typeof this.options[cb] != 'object' && evt != 'onAfterAnimation'))
                return;

            var callback = typeof this.options[cb] == 'object' ? this.options[cb][evt] : this.options[cb];

            if (!$.isFunction(callback))
                return;

            var self = this;

            if (i1 === undefined)
                callback(self, state, evt);
            else if (i2 === undefined)
                this.get(i1).each(function() { callback(self, this, i1, state, evt); });
            else {
                for (var i = i1; i <= i2; i++)
                    if (i !== null && !(i >= i3 && i <= i4))
                        this.get(i).each(function() { callback(self, this, i, state, evt); });
            }
        },

        create: function(i) {
            return this.format('<li></li>', i);
        },

        format: function(e, i) {
            var $e = $(e).addClass(this.className('jcarousel-item')).addClass(this.className('jcarousel-item-' + i));
            $e.attr('jcarouselindex', i);
            return $e;
        },

        className: function(c) {
            return c + ' ' + c + (!this.options.vertical ? '-horizontal' : '-vertical');
        },

        dimension: function(e, d) {
            var el = e.jquery != undefined ? e[0] : e;

            var old = !this.options.vertical ?
                el.offsetWidth + $jc.margin(el, 'marginLeft') + $jc.margin(el, 'marginRight') :
                el.offsetHeight + $jc.margin(el, 'marginTop') + $jc.margin(el, 'marginBottom');

            if (d == undefined || old == d)
                return old;

            var w = !this.options.vertical ?
                d - $jc.margin(el, 'marginLeft') - $jc.margin(el, 'marginRight') :
                d - $jc.margin(el, 'marginTop') - $jc.margin(el, 'marginBottom');

            $(el).css(this.wh, w + 'px');

            return this.dimension(el);
        },

        clipping: function() {
            return !this.options.vertical ?
                this.clip[0].offsetWidth - $jc.intval(this.clip.css('borderLeftWidth')) - $jc.intval(this.clip.css('borderRightWidth')) :
                this.clip[0].offsetHeight - $jc.intval(this.clip.css('borderTopWidth')) - $jc.intval(this.clip.css('borderBottomWidth'));
        },

        index: function(i, s) {
            if (s == undefined)
                s = this.options.size;

            return Math.round((((i-1) / s) - Math.floor((i-1) / s)) * s) + 1;
        }
    });

    $jc.extend({
        /**
         * Gets/Sets the global default configuration properties.
         *
         * @name defaults
         * @descr Gets/Sets the global default configuration properties.
         * @type Hash
         * @param Hash d A set of key/value pairs to set as configuration properties.
         * @cat Plugins/jCarousel
         */
        defaults: function(d) {
            return $.extend(defaults, d || {});
        },

        margin: function(e, p) {
            if (!e)
                return 0;

            var el = e.jquery != undefined ? e[0] : e;

            if (p == 'marginRight' && $.browser.safari) {
                var old = {'display': 'block', 'float': 'none', 'width': 'auto'}, oWidth, oWidth2;

                $.swap(el, old, function() { oWidth = el.offsetWidth; });

                old['marginRight'] = 0;
                $.swap(el, old, function() { oWidth2 = el.offsetWidth; });

                return oWidth2 - oWidth;
            }

            return $jc.intval($.css(el, p));
        },

        intval: function(v) {
            v = parseInt(v);
            return isNaN(v) ? 0 : v;
        }
    });

})(jQuery);

/*
 * Supersubs v0.2b - jQuery plugin
 * Copyright (c) 2008 Joel Birch
 *
 * Dual licensed under the MIT and GPL licenses:
 *  http://www.opensource.org/licenses/mit-license.php
 *  http://www.gnu.org/licenses/gpl.html
 *
 *
 * This plugin automatically adjusts submenu widths of suckerfish-style menus to that of
 * their longest list item children. If you use this, please expect bugs and report them
 * to the jQuery Google Group with the word 'Superfish' in the subject line.
 *
 */

;(function($){ // $ will refer to jQuery within this closure

 $.fn.supersubs = function(options){
  var opts = $.extend({}, $.fn.supersubs.defaults, options);
  // return original object to support chaining
  return this.each(function() {
   // cache selections
   var $$ = $(this);
   // support metadata
   var o = $.meta ? $.extend({}, opts, $$.data()) : opts;
   // get the font size of menu.
   // .css('fontSize') returns various results cross-browser, so measure an em dash instead
   var fontsize = $('<li id="menu-fontsize">&#8212;</li>').css({
    'padding' : 0,
    'position' : 'absolute',
    'top' : '-999em',
    'width' : 'auto'
   }).appendTo($$).width(); //clientWidth is faster, but was incorrect here
   // remove em dash
   $('#menu-fontsize').remove();
   // cache all ul elements
   $ULs = $$.find('ul');
   // loop through each ul in menu
   $ULs.each(function(i) { 
    // cache this ul
    var $ul = $ULs.eq(i);
    // get all (li) children of this ul
    var $LIs = $ul.children();
    // get all anchor grand-children
    var $As = $LIs.children('a');
    // force content to one line and save current float property
    var liFloat = $LIs.css('white-space','nowrap').css('float');
    // remove width restrictions and floats so elements remain vertically stacked
    var emWidth = $ul.add($LIs).add($As).css({
     'float' : 'none',
     'width' : 'auto'
    })
    // this ul will now be shrink-wrapped to longest li due to position:absolute
    // so save its width as ems. Clientwidth is 2 times faster than .width() - thanks Dan Switzer
    .end().end()[0].clientWidth / fontsize;
    // add more width to ensure lines don't turn over at certain sizes in various browsers
    emWidth += o.extraWidth;
    // restrict to at least minWidth and at most maxWidth
    if (emWidth > o.maxWidth)  { emWidth = o.maxWidth; }
    else if (emWidth < o.minWidth) { emWidth = o.minWidth; }
    emWidth += 'em';
    // set ul to width in ems
    $ul.css('width',emWidth);
    // restore li floats to avoid IE bugs
    // set li width to full width of this ul
    // revert white-space to normal
    $LIs.css({
     'float' : liFloat,
     'width' : '100%',
     'white-space' : 'normal'
    })
    // update offset position of descendant ul to reflect new width of parent
    .each(function(){
     var $childUl = $('>ul',this);
     var offsetDirection = $childUl.css('left')!==undefined ? 'left' : 'right';
     $childUl.css(offsetDirection,emWidth);
    });
   });
   
  });
 };
 // expose defaults
 $.fn.supersubs.defaults = {
  minWidth  : 9,  // requires em unit.
  maxWidth  : 25,  // requires em unit.
  extraWidth  : 0   // extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values
 };
 
})(jQuery); // plugin code ends


/*
 * Superfish v1.4.8 - jQuery menu widget
 * Copyright (c) 2008 Joel Birch
 *
 * Dual licensed under the MIT and GPL licenses:
 *  http://www.opensource.org/licenses/mit-license.php
 *  http://www.gnu.org/licenses/gpl.html
 *
 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
 */

;(function($){
 $.fn.superfish = function(op){

  var sf = $.fn.superfish,
   c = sf.c,
   $arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
   over = function(){
    var $$ = $(this), menu = getMenu($$);
    clearTimeout(menu.sfTimer);
    $$.showSuperfishUl().siblings().hideSuperfishUl();
   },
   out = function(){
    var $$ = $(this), menu = getMenu($$), o = sf.op;
    clearTimeout(menu.sfTimer);
    menu.sfTimer=setTimeout(function(){
     o.retainPath=($.inArray($$[0],o.$path)>-1);
     $$.hideSuperfishUl();
     if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
    },o.delay); 
   },
   getMenu = function($menu){
    var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
    sf.op = sf.o[menu.serial];
    return menu;
   },
   addArrow = function($a){ $a.addClass(c.anchorClass).parent().append($arrow.clone()); };
   
  return this.each(function() {
   var s = this.serial = sf.o.length;
   var o = $.extend({},sf.defaults,op);
   o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
    $(this).addClass([o.hoverClass,c.bcClass].join(' '))
     .filter('li:has(ul)').removeClass(o.pathClass);
   });
   sf.o[s] = sf.op = o;
   
   $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
    if (o.autoArrows) addArrow( $('>a:first-child',this) );
   })
   .not('.'+c.bcClass)
    .hideSuperfishUl();
   
   var $a = $('a',this);
   $a.each(function(i){
    var $li = $a.eq(i).parents('li');
    $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
   });
   o.onInit.call(this);
   
  }).each(function() {
   var menuClasses = [c.menuClass];
   if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
   $(this).addClass(menuClasses.join(' '));
  });
 };

 var sf = $.fn.superfish;
 sf.o = [];
 sf.op = {};
 sf.IE7fix = function(){
  var o = sf.op;
  if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
   this.toggleClass(sf.c.shadowClass+'-off');
  };
 sf.c = {
  bcClass     : 'sf-breadcrumb',
  menuClass   : 'sf-js-enabled',
  anchorClass : 'sf-with-ul',
  arrowClass  : 'sf-sub-indicator',
  shadowClass : 'sf-shadow'
 };
 sf.defaults = {
  hoverClass : 'sfHover',
  pathClass : 'overideThisToUse',
  pathLevels : 1,
  delay  : 800,
  animation : {opacity:'show'},
  speed  : 'normal',
  autoArrows : true,
  dropShadows : true,
  disableHI : false,  // true disables hoverIntent detection
  onInit  : function(){}, // callback functions
  onBeforeShow: function(){},
  onShow  : function(){},
  onHide  : function(){}
 };
 $.fn.extend({
  hideSuperfishUl : function(){
   var o = sf.op,
    not = (o.retainPath===true) ? o.$path : '';
   o.retainPath = false;
   var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
     .find('>ul').hide().css('visibility','hidden');
   o.onHide.call($ul);
   return this;
  },
  showSuperfishUl : function(){
   var o = sf.op,
    sh = sf.c.shadowClass+'-off',
    $ul = this.addClass(o.hoverClass)
     .find('>ul:hidden').css('visibility','visible');
   sf.IE7fix.call($ul);
   o.onBeforeShow.call($ul);
   $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
   return this;
  }
 });

})(jQuery);

/*
 * 
 * TableSorter 2.0 - Client-side table sorting with ease! Version 2.0.3
 * @requires jQuery v1.2.3
 * 
 * Copyright (c) 2007 Christian Bach Examples and docs at:
 * http://tablesorter.com Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * 
 */
/**
 * 
 * @description Create a sortable table with multi-column sorting capabilitys
 * 
 * @example
 * $('table').tablesorter();
 * @desc Create a simple tablesorter interface.
 * 
 * @example
 * $('table').tablesorter({ sortList:[[0,0],[1,0]] });
 * @desc Create a tablesorter interface and sort on the first and secound column
 *       in ascending order.
 * 
 * @example
 * $('table').tablesorter({ headers: { 0: { sorter: false}, 1: {sorter: false} } });
 * @desc Create a tablesorter interface and disableing the first and secound
 *       column headers.
 * 
 * @example
 * $('table').tablesorter({ 0: {sorter:"integer"}, 1: {sorter:"currency"} });
 * @desc Create a tablesorter interface and set a column parser for the first
 *       and secound column.
 * 
 * 
 * @param Object
 *            settings An object literal containing key/value pairs to provide
 *            optional settings.
 * 
 * @option String cssHeader (optional) A string of the class name to be appended
 *         to sortable tr elements in the thead of the table. Default value:
 *         "header"
 * 
 * @option String cssAsc (optional) A string of the class name to be appended to
 *         sortable tr elements in the thead on a ascending sort. Default value:
 *         "headerSortUp"
 * 
 * @option String cssDesc (optional) A string of the class name to be appended
 *         to sortable tr elements in the thead on a descending sort. Default
 *         value: "headerSortDown"
 * 
 * @option String sortInitialOrder (optional) A string of the inital sorting
 *         order can be asc or desc . Default value: "asc"
 * 
 * @option String sortMultisortKey (optional) A string of the multi-column sort
 *         key. Default value: "shiftKey"
 * 
 * @option String textExtraction (optional) A string of the text-extraction
 *         method to use. For complex html structures inside td cell set this
 *         option to "complex", on large tables the complex option can be slow.
 *         Default value: "simple"
 * 
 * @option Object headers (optional) An array containing the forces sorting
 *         rules. This option let's you specify a default sorting rule. Default
 *         value: null
 * 
 * @option Array sortList (optional) An array containing the forces sorting
 *         rules. This option let's you specify a default sorting rule. Default
 *         value: null
 * 
 * @option Array sortForce (optional) An array containing forced sorting rules.
 *         This option let's you specify a default sorting rule, which is
 *         prepended to user-selected rules. Default value: null
 * 
 * @option Array sortAppend (optional) An array containing forced sorting rules.
 *         This option let's you specify a default sorting rule, which is
 *         appended to user-selected rules. Default value: null
 * 
 * @option Boolean widthFixed (optional) Boolean flag indicating if tablesorter
 *         should apply fixed widths to the table columns. This is usefull when
 *         using the pager companion plugin. This options requires the dimension
 *         jquery plugin. Default value: false
 * 
 * @option Boolean cancelSelection (optional) Boolean flag indicating if
 *         tablesorter should cancel selection of the table headers text.
 *         Default value: true
 * 
 * @option Boolean debug (optional) Boolean flag indicating if tablesorter
 *         should display debuging information usefull for development.
 * 
 * @type jQuery
 * 
 * @name tablesorter
 * 
 * @cat Plugins/Tablesorter
 * 
 * @author Christian Bach/christian.bach@polyester.se
 */

(function($) {
	$.extend({
		tablesorter : new function() {
			var parsers = [], widgets = [];

			this.defaults = {
				cssHeader : "header",
				cssAsc : "headerSortUp",
				cssDesc : "headerSortDown",
				sortInitialOrder : "asc",
				sortMultiSortKey : "shiftKey",
				sortForce : null,
				sortAppend : null,
				textExtraction : "simple",
				parsers : {},
				widgets : [],
				widgetZebra : {
					css : ["even", "odd"]
				},
				headers : {},
				widthFixed : false,
				cancelSelection : true,
				sortList : [],
				headerList : [],
				dateFormat : "us",
				decimal : '.',
				debug : false
			};

			/* debuging utils */
			function benchmark(s, d) {
				log(s + "," + (new Date().getTime() - d.getTime()) + "ms");
			}

			this.benchmark = benchmark;

			function log(s) {
				if (typeof console != "undefined"
						&& typeof console.debug != "undefined") {
					console.log(s);
				} else {
					alert(s);
				}
			}

			/* parsers utils */
			function buildParserCache(table, $headers) {

				if (table.config.debug) {
					var parsersDebug = "";
				}

				var rows = table.tBodies[0].rows;

				if (table.tBodies[0].rows[0]) {

					var list = [], cells = rows[0].cells, l = cells.length;

					for (var i = 0; i < l; i++) {
						var p = false;

						if ($.metadata
								&& ($($headers[i]).metadata() && $($headers[i])
										.metadata().sorter)) {

							p = getParserById($($headers[i]).metadata().sorter);

						} else if ((table.config.headers[i] && table.config.headers[i].sorter)) {

							p = getParserById(table.config.headers[i].sorter);
						}
						if (!p) {
							p = detectParserForColumn(table, cells[i]);
						}

						if (table.config.debug) {
							parsersDebug += "column:" + i + " parser:" + p.id
									+ "\n";
						}

						list.push(p);
					}
				}

				if (table.config.debug) {
					log(parsersDebug);
				}

				return list;
			};

			function detectParserForColumn(table, node) {
				var l = parsers.length;
				for (var i = 1; i < l; i++) {
					if (parsers[i].is($
									.trim(getElementText(table.config, node)),
							table, node)) {
						return parsers[i];
					}
				}
				// 0 is always the generic parser (text)
				return parsers[0];
			}

			function getParserById(name) {
				var l = parsers.length;
				for (var i = 0; i < l; i++) {
					if (parsers[i].id.toLowerCase() == name.toLowerCase()) {
						return parsers[i];
					}
				}
				return false;
			}

			/* utils */
			function buildCache(table) {

				if (table.config.debug) {
					var cacheTime = new Date();
				}

				var totalRows = (table.tBodies[0] && table.tBodies[0].rows.length)
						|| 0, totalCells = (table.tBodies[0].rows[0] && table.tBodies[0].rows[0].cells.length)
						|| 0, parsers = table.config.parsers, cache = {
					row : [],
					normalized : []
				};

				for (var i = 0; i < totalRows; ++i) {

					/** Add the table data to main data array */
					var c = table.tBodies[0].rows[i], cols = [];

					cache.row.push($(c));

					for (var j = 0; j < totalCells; ++j) {
						cols.push(parsers[j].format(getElementText(
										table.config, c.cells[j]), table,
								c.cells[j]));
					}

					cols.push(i); // add position for rowCache
					cache.normalized.push(cols);
					cols = null;
				};

				if (table.config.debug) {
					benchmark("Building cache for " + totalRows + " rows:",
							cacheTime);
				}

				return cache;
			};

			function getElementText(config, node) {

				if (!node)
					return "";

				var t = "";

				if (config.textExtraction == "simple") {
					if (node.childNodes[0]
							&& node.childNodes[0].hasChildNodes()) {
						t = node.childNodes[0].innerHTML;
					} else {
						t = node.innerHTML;
					}
				} else {
					if (typeof(config.textExtraction) == "function") {
						t = config.textExtraction(node);
					} else {
						t = $(node).text();
					}
				}
				return t;
			}

			function appendToTable(table, cache) {

				if (table.config.debug) {
					var appendTime = new Date()
				}

				var c = cache, r = c.row, n = c.normalized, totalRows = n.length, checkCell = (n[0].length - 1), tableBody = $(table.tBodies[0]), rows = [];

				for (var i = 0; i < totalRows; i++) {
					rows.push(r[n[i][checkCell]]);
					if (!table.config.appender) {

						var o = r[n[i][checkCell]];
						var l = o.length;
						for (var j = 0; j < l; j++) {

							tableBody[0].appendChild(o[j]);

						}

						// tableBody.append(r[n[i][checkCell]]);
					}
				}

				if (table.config.appender) {

					table.config.appender(table, rows);
				}

				rows = null;

				if (table.config.debug) {
					benchmark("Rebuilt table:", appendTime);
				}

				// apply table widgets
				applyWidget(table);

				// trigger sortend
				setTimeout(function() {
							$(table).trigger("sortEnd");
						}, 0);

			};

			function buildHeaders(table) {

				if (table.config.debug) {
					var time = new Date();
				}

				var meta = ($.metadata) ? true : false, tableHeadersRows = [];

				for (var i = 0; i < table.tHead.rows.length; i++) {
					tableHeadersRows[i] = 0;
				};

				$tableHeaders = $("thead th", table);

				$tableHeaders.each(function(index) {

					this.count = 0;
					this.column = index;
					this.order = formatSortingOrder(table.config.sortInitialOrder);

					if (checkHeaderMetadata(this)
							|| checkHeaderOptions(table, index))
						this.sortDisabled = true;

					if (!this.sortDisabled) {
						$(this).addClass(table.config.cssHeader);
					}

					// add cell to headerList
					table.config.headerList[index] = this;
				});

				if (table.config.debug) {
					benchmark("Built headers:", time);
					log($tableHeaders);
				}

				return $tableHeaders;

			};

			function checkCellColSpan(table, rows, row) {
				var arr = [], r = table.tHead.rows, c = r[row].cells;

				for (var i = 0; i < c.length; i++) {
					var cell = c[i];

					if (cell.colSpan > 1) {
						arr = arr.concat(checkCellColSpan(table, headerArr,
								row++));
					} else {
						if (table.tHead.length == 1
								|| (cell.rowSpan > 1 || !r[row + 1])) {
							arr.push(cell);
						}
						// headerArr[row] = (i+row);
					}
				}
				return arr;
			};

			function checkHeaderMetadata(cell) {
				if (($.metadata) && ($(cell).metadata().sorter === false)) {
					return true;
				};
				return false;
			}

			function checkHeaderOptions(table, i) {
				if ((table.config.headers[i])
						&& (table.config.headers[i].sorter === false)) {
					return true;
				};
				return false;
			}

			function applyWidget(table) {
				var c = table.config.widgets;
				var l = c.length;
				for (var i = 0; i < l; i++) {

					getWidgetById(c[i]).format(table);
				}

			}

			function getWidgetById(name) {
				var l = widgets.length;
				for (var i = 0; i < l; i++) {
					if (widgets[i].id.toLowerCase() == name.toLowerCase()) {
						return widgets[i];
					}
				}
			};

			function formatSortingOrder(v) {

				if (typeof(v) != "Number") {
					i = (v.toLowerCase() == "desc") ? 1 : 0;
				} else {
					i = (v == (0 || 1)) ? v : 0;
				}
				return i;
			}

			function isValueInArray(v, a) {
				var l = a.length;
				for (var i = 0; i < l; i++) {
					if (a[i][0] == v) {
						return true;
					}
				}
				return false;
			}

			function setHeadersCss(table, $headers, list, css) {
				// remove all header information
				$headers.removeClass(css[0]).removeClass(css[1]);

				var h = [];
				$headers.each(function(offset) {
							if (!this.sortDisabled) {
								h[this.column] = $(this);
							}
						});

				var l = list.length;
				for (var i = 0; i < l; i++) {
					h[list[i][0]].addClass(css[list[i][1]]);
				}
			}

			function fixColumnWidth(table, $headers) {
				var c = table.config;
				if (c.widthFixed) {
					var colgroup = $('<colgroup>');
					$("tr:first td", table.tBodies[0]).each(function() {
						colgroup.append($('<col>')
								.css('width', $(this).width()));
					});
					$(table).prepend(colgroup);
				};
			}

			function updateHeaderSortCount(table, sortList) {
				var c = table.config, l = sortList.length;
				for (var i = 0; i < l; i++) {
					var s = sortList[i], o = c.headerList[s[0]];
					o.count = s[1];
					o.count++;
				}
			}

			/* sorting methods */
			function multisort(table, sortList, cache) {

				if (table.config.debug) {
					var sortTime = new Date();
				}

				var dynamicExp = "var sortWrapper = function(a,b) {", l = sortList.length;

				for (var i = 0; i < l; i++) {

					var c = sortList[i][0];
					var order = sortList[i][1];
					var s = (getCachedSortType(table.config.parsers, c) == "text")
							? ((order == 0) ? "sortText" : "sortTextDesc")
							: ((order == 0) ? "sortNumeric" : "sortNumericDesc");

					var e = "e" + i;

					dynamicExp += "var " + e + " = " + s + "(a[" + c + "],b["
							+ c + "]); ";
					dynamicExp += "if(" + e + ") { return " + e + "; } ";
					dynamicExp += "else { ";
				}

				// if value is the same keep orignal order
				var orgOrderCol = cache.normalized[0].length - 1;
				dynamicExp += "return a[" + orgOrderCol + "]-b[" + orgOrderCol
						+ "];";

				for (var i = 0; i < l; i++) {
					dynamicExp += "}; ";
				}

				dynamicExp += "return 0; ";
				dynamicExp += "}; ";

				eval(dynamicExp);

				cache.normalized.sort(sortWrapper);

				if (table.config.debug) {
					benchmark("Sorting on " + sortList.toString() + " and dir "
									+ order + " time:", sortTime);
				}

				return cache;
			};

			function sortText(a, b) {
				return ((a < b) ? -1 : ((a > b) ? 1 : 0));
			};

			function sortTextDesc(a, b) {
				return ((b < a) ? -1 : ((b > a) ? 1 : 0));
			};

			function sortNumeric(a, b) {
				return a - b;
			};

			function sortNumericDesc(a, b) {
				return b - a;
			};

			function getCachedSortType(parsers, i) {
				return parsers[i].type;
			};

			/* public methods */
			this.construct = function(settings) {

				return this.each(function() {

					if (!this.tHead || !this.tBodies)
						return;

					var $this, $document, $headers, cache, config, shiftDown = 0, sortOrder;

					this.config = {};

					config = $.extend(this.config, $.tablesorter.defaults,
							settings);

					// store common expression for speed
					$this = $(this);

					// build headers
					$headers = buildHeaders(this);

					// try to auto detect column type, and store in tables
					// config
					this.config.parsers = buildParserCache(this, $headers);

					// build the cache for the tbody cells
					cache = buildCache(this);

					// get the css class names, could be done else where.
					var sortCSS = [config.cssDesc, config.cssAsc];

					// fixate columns if the users supplies the fixedWidth
					// option
					fixColumnWidth(this);

					// apply event handling to headers
					// this is to big, perhaps break it out?
					$headers.click(function(e) {

						$this.trigger("sortStart");

						var totalRows = ($this[0].tBodies[0] && $this[0].tBodies[0].rows.length)
								|| 0;

						if (!this.sortDisabled && totalRows > 0) {

							// store exp, for speed
							var $cell = $(this);

							// get current column index
							var i = this.column;

							// get current column sort order
							this.order = this.count++ % 2;

							// user only whants to sort on one column
							if (!e[config.sortMultiSortKey]) {

								// flush the sort list
								config.sortList = [];

								if (config.sortForce != null) {
									var a = config.sortForce;
									for (var j = 0; j < a.length; j++) {
										if (a[j][0] != i) {
											config.sortList.push(a[j]);
										}
									}
								}

								// add column to sort list
								config.sortList.push([i, this.order]);

								// multi column sorting
							} else {
								// the user has clicked on an all ready sortet
								// column.
								if (isValueInArray(i, config.sortList)) {

									// revers the sorting direction for all
									// tables.
									for (var j = 0; j < config.sortList.length; j++) {
										var s = config.sortList[j], o = config.headerList[s[0]];
										if (s[0] == i) {
											o.count = s[1];
											o.count++;
											s[1] = o.count % 2;
										}
									}
								} else {
									// add column to sort list array
									config.sortList.push([i, this.order]);
								}
							};
							setTimeout(function() {
										// set css for headers
										setHeadersCss($this[0], $headers,
												config.sortList, sortCSS);
										appendToTable($this[0], multisort(
														$this[0],
														config.sortList, cache));
									}, 1);
							// stop normal event by returning false
							return false;
						}
							// cancel selection
					}).mousedown(function() {
								if (config.cancelSelection) {
									this.onselectstart = function() {
										return false
									};
									return false;
								}
							});

					// apply easy methods that trigger binded events
					$this.bind("update", function() {

								// rebuild parsers.
								this.config.parsers = buildParserCache(this,
										$headers);

								// rebuild the cache map
								cache = buildCache(this);

							}).bind("sorton", function(e, list) {

								$(this).trigger("sortStart");

								config.sortList = list;

								// update and store the sortlist
								var sortList = config.sortList;

								// update header count index
								updateHeaderSortCount(this, sortList);

								// set css for headers
								setHeadersCss(this, $headers, sortList, sortCSS);

								// sort the table and append it to the dom
								appendToTable(this, multisort(this, sortList,
												cache));

							}).bind("appendCache", function() {

								appendToTable(this, cache);

							}).bind("applyWidgetId", function(e, id) {

								getWidgetById(id).format(this);

							}).bind("applyWidgets", function() {
								// apply widgets
								applyWidget(this);
							});

					if ($.metadata
							&& ($(this).metadata() && $(this).metadata().sortlist)) {
						config.sortList = $(this).metadata().sortlist;
					}
					// if user has supplied a sort list to constructor.
					if (config.sortList.length > 0) {
						$this.trigger("sorton", [config.sortList]);
					}

					// apply widgets
					applyWidget(this);
				});
			};

			this.addParser = function(parser) {
				var l = parsers.length, a = true;
				for (var i = 0; i < l; i++) {
					if (parsers[i].id.toLowerCase() == parser.id.toLowerCase()) {
						a = false;
					}
				}
				if (a) {
					parsers.push(parser);
				};
			};

			this.addWidget = function(widget) {
				widgets.push(widget);
			};

			this.formatFloat = function(s) {
				var i = parseFloat(s);
				return (isNaN(i)) ? 0 : i;
			};
			this.formatInt = function(s) {
				var i = parseInt(s);
				return (isNaN(i)) ? 0 : i;
			};

			this.isDigit = function(s, config) {
				var DECIMAL = '\\' + config.decimal;
				var exp = '/(^[+]?0('
						+ DECIMAL
						+ '0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)'
						+ DECIMAL + '(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*'
						+ DECIMAL + '0+$)/';
				return RegExp(exp).test($.trim(s));
			};

			this.clearTableBody = function(table) {
				if ($.browser.msie) {
					function empty() {
						while (this.firstChild)
							this.removeChild(this.firstChild);
					}
					empty.apply(table.tBodies[0]);
				} else {
					table.tBodies[0].innerHTML = "";
				}
			};
		}
	});

	// extend plugin scope
	$.fn.extend({
				tablesorter : $.tablesorter.construct
			});

	var ts = $.tablesorter;

	// add default parsers
	ts.addParser({
				id : "text",
				is : function(s) {
					return true;
				},
				format : function(s) {
					return $.trim(s.toLowerCase());
				},
				type : "text"
			});

	ts.addParser({
				id : "digit",
				is : function(s, table) {
					var c = table.config;
					return $.tablesorter.isDigit(s, c);
				},
				format : function(s) {
					return $.tablesorter.formatFloat(s);
				},
				type : "numeric"
			});

	ts.addParser({
				id : "currency",
				is : function(s) {
					return /^[£$€?.]/.test(s);
				},
				format : function(s) {
					return $.tablesorter.formatFloat(s.replace(
							new RegExp(/[^0-9.]/g), ""));
				},
				type : "numeric"
			});

	ts.addParser({
				id : "ipAddress",
				is : function(s) {
					return /^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);
				},
				format : function(s) {
					var a = s.split("."), r = "", l = a.length;
					for (var i = 0; i < l; i++) {
						var item = a[i];
						if (item.length == 2) {
							r += "0" + item;
						} else {
							r += item;
						}
					}
					return $.tablesorter.formatFloat(r);
				},
				type : "numeric"
			});

	ts.addParser({
				id : "url",
				is : function(s) {
					return /^(https?|ftp|file):\/\/$/.test(s);
				},
				format : function(s) {
					return jQuery.trim(s.replace(
							new RegExp(/(https?|ftp|file):\/\//), ''));
				},
				type : "text"
			});

	ts.addParser({
				id : "isoDate",
				is : function(s) {
					return /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);
				},
				format : function(s) {
					return $.tablesorter.formatFloat((s != "") ? new Date(s
							.replace(new RegExp(/-/g), "/")).getTime() : "0");
				},
				type : "numeric"
			});

	ts.addParser({
				id : "percent",
				is : function(s) {
					return /\%$/.test($.trim(s));
				},
				format : function(s) {
					return $.tablesorter.formatFloat(s.replace(
							new RegExp(/%/g), ""));
				},
				type : "numeric"
			});

	ts.addParser({
		id : "usLongDate",
		is : function(s) {
			return s
					.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));
		},
		format : function(s) {
			return $.tablesorter.formatFloat(new Date(s).getTime());
		},
		type : "numeric"
	});

	ts.addParser({
		id : "shortDate",
		is : function(s) {
			return /\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);
		},
		format : function(s, table) {
			var c = table.config;
			s = s.replace(/\-/g, "/");
			if (c.dateFormat == "us") {
				// reformat the string in ISO format
				s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,
						"$3/$1/$2");
			} else if (c.dateFormat == "uk") {
				// reformat the string in ISO format
				s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,
						"$3/$2/$1");
			} else if (c.dateFormat == "dd/mm/yy" || c.dateFormat == "dd-mm-yy") {
				s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,
						"$1/$2/$3");
			}
			return $.tablesorter.formatFloat(new Date(s).getTime());
		},
		type : "numeric"
	});

	ts.addParser({
		id : "time",
		is : function(s) {
			return /^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/
					.test(s);
		},
		format : function(s) {
			return $.tablesorter.formatFloat(new Date("2000/01/01 " + s)
					.getTime());
		},
		type : "numeric"
	});

	ts.addParser({
				id : "metadata",
				is : function(s) {
					return false;
				},
				format : function(s, table, cell) {
					var c = table.config, p = (!c.parserMetadataName)
							? 'sortValue'
							: c.parserMetadataName;
					return $(cell).metadata()[p];
				},
				type : "numeric"
			});

	// add default widgets
	ts.addWidget({
				id : "zebra",
				format : function(table) {
					if (table.config.debug) {
						var time = new Date();
					}
					$("tr:visible", table.tBodies[0]).filter(':even')
							.removeClass(table.config.widgetZebra.css[1])
							.addClass(table.config.widgetZebra.css[0]).end()
							.filter(':odd')
							.removeClass(table.config.widgetZebra.css[0])
							.addClass(table.config.widgetZebra.css[1]);
					if (table.config.debug) {
						$.tablesorter.benchmark("Applying Zebra widget", time);
					}
				}
			});
})(jQuery);
/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2007-06-19 20:25:28 -0500 (Tue, 19 Jun 2007) $
 * $Rev: 2111 $
 *
 * Version 2.1
 */
(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&parseInt($.browser.version)<=6){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild);});}return this;};if(!$.browser.version)$.browser.version=navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)[1];})(jQuery);/**
* author Remy Sharp
* url http://remysharp.com/tag/marquee
*/

(function ($) {
    $.fn.marquee = function (klass) {
        var newMarquee = [],
            last = this.length;

        // works out the left or right hand reset position, based on scroll
        // behavior, current direction and new direction
        function getReset(newDir, marqueeRedux, marqueeState) {
            var behavior = marqueeState.behavior, width = marqueeState.width, dir = marqueeState.dir;
            var r = 0;
            if (behavior == 'alternate') {
                r = newDir == 1 ? marqueeRedux[marqueeState.widthAxis] - (width*2) : width;
            } else if (behavior == 'slide') {
                if (newDir == -1) {
                    r = dir == -1 ? marqueeRedux[marqueeState.widthAxis] : width;
                } else {
                    r = dir == -1 ? marqueeRedux[marqueeState.widthAxis] - (width*2) : 0;
                }
            } else {
                r = newDir == -1 ? marqueeRedux[marqueeState.widthAxis] : 0;
            }
            return r;
        }

        // single "thread" animation
        function animateMarquee() {
            var i = newMarquee.length,
                marqueeRedux = null,
                $marqueeRedux = null,
                marqueeState = {},
                newMarqueeList = [],
                hitedge = false;
                
            while (i--) {
                marqueeRedux = newMarquee[i];
                $marqueeRedux = $(marqueeRedux);
                marqueeState = $marqueeRedux.data('marqueeState');
                
                if ($marqueeRedux.data('paused') !== true) {
                    // TODO read scrollamount, dir, behavior, loops and last from data
                    marqueeRedux[marqueeState.axis] += (marqueeState.scrollamount * marqueeState.dir);

                    // only true if it's hit the end
                    hitedge = marqueeState.dir == -1 ? marqueeRedux[marqueeState.axis] <= getReset(marqueeState.dir * -1, marqueeRedux, marqueeState) : marqueeRedux[marqueeState.axis] >= getReset(marqueeState.dir * -1, marqueeRedux, marqueeState);
                    
                    if ((marqueeState.behavior == 'scroll' && marqueeState.last == marqueeRedux[marqueeState.axis]) || (marqueeState.behavior == 'alternate' && hitedge && marqueeState.last != -1) || (marqueeState.behavior == 'slide' && hitedge && marqueeState.last != -1)) {                        
                        if (marqueeState.behavior == 'alternate') {
                            marqueeState.dir *= -1; // flip
                        }
                        marqueeState.last = -1;

                        $marqueeRedux.trigger('stop');

                        marqueeState.loops--;
                        if (marqueeState.loops === 0) {
                            if (marqueeState.behavior != 'slide') {
                                marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);
                            } else {
                                // corrects the position
                                marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir * -1, marqueeRedux, marqueeState);
                            }

                            $marqueeRedux.trigger('end');
                        } else {
                            // keep this marquee going
                            newMarqueeList.push(marqueeRedux);
                            $marqueeRedux.trigger('start');
                            marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);
                        }
                    } else {
                        newMarqueeList.push(marqueeRedux);
                    }
                    marqueeState.last = marqueeRedux[marqueeState.axis];

                    // store updated state only if we ran an animation
                    $marqueeRedux.data('marqueeState', marqueeState);
                } else {
                    // even though it's paused, keep it in the list
                    newMarqueeList.push(marqueeRedux);                    
                }
            }

            newMarquee = newMarqueeList;
            
            if (newMarquee.length) {
                setTimeout(animateMarquee, 25);
            }            
        }
        
        // TODO consider whether using .html() in the wrapping process could lead to loosing predefined events...
        this.each(function (i) {
            var $marquee = $(this),
                width = $marquee.attr('width') || $marquee.width(),
                height = $marquee.attr('height') || $marquee.height(),
                $marqueeRedux = $marquee.after('<div ' + (klass ? 'class="' + klass + '" ' : '') + 'style="display: block-inline; width: ' + width + 'px; height: ' + height + 'px; overflow: hidden;"><div style="float: left; white-space: nowrap;">' + $marquee.html() + '</div></div>').next(),
                marqueeRedux = $marqueeRedux.get(0),
                hitedge = 0,
                direction = ($marquee.attr('direction') || 'left').toLowerCase(),
                marqueeState = {
                    dir : /down|right/.test(direction) ? -1 : 1,
                    axis : /left|right/.test(direction) ? 'scrollLeft' : 'scrollTop',
                    widthAxis : /left|right/.test(direction) ? 'scrollWidth' : 'scrollHeight',
                    last : -1,
                    loops : $marquee.attr('loop') || -1,
                    scrollamount : $marquee.attr('scrollamount') || this.scrollAmount || 2,
                    behavior : ($marquee.attr('behavior') || 'scroll').toLowerCase(),
                    width : /left|right/.test(direction) ? width : height
                };
            
            // corrects a bug in Firefox - the default loops for slide is -1
            if ($marquee.attr('loop') == -1 && marqueeState.behavior == 'slide') {
                marqueeState.loops = 1;
            }

            $marquee.remove();
            
            // add padding
            if (/left|right/.test(direction)) {
                $marqueeRedux.find('> div').css('padding', '0 ' + width + 'px');
            } else {
                $marqueeRedux.find('> div').css('padding', height + 'px 0');
            }
            
            // events
            $marqueeRedux.bind('stop', function () {
                $marqueeRedux.data('paused', true);
            }).bind('pause', function () {
                $marqueeRedux.data('paused', true);
            }).bind('start', function () {
                $marqueeRedux.data('paused', false);
            }).bind('unpause', function () {
                $marqueeRedux.data('paused', false);
            }).data('marqueeState', marqueeState); // finally: store the state
            
            // todo - rerender event allowing us to do an ajax hit and redraw the marquee

            newMarquee.push(marqueeRedux);

            marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);
            $marqueeRedux.trigger('start');
            
            // on the very last marquee, trigger the animation
            if (i+1 == last) {
                animateMarquee();
            }
        });            

        return $(newMarquee);
    };
}(jQuery));
/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 * 
 * Uses the built in easing capabilities added In jQuery 1.1 to offer multiple
 * easing options
 * 
 * TERMS OF USE - jQuery Easing
 * 
 * Open source under the BSD License.
 * 
 * Copyright © 2008 George McGinley Smith All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this
 * list of conditions and the following disclaimer. Redistributions in binary
 * form must reproduce the above copyright notice, this list of conditions and
 * the following disclaimer in the documentation and/or other materials provided
 * with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to
 * endorse or promote products derived from this software without specific prior
 * written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * 
 */

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend(jQuery.easing, {
			def : 'easeOutQuad',
			swing : function(x, t, b, c, d) {
				// alert(jQuery.easing.default);
				return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
			},
			easeInQuad : function(x, t, b, c, d) {
				return c * (t /= d) * t + b;
			},
			easeOutQuad : function(x, t, b, c, d) {
				return -c * (t /= d) * (t - 2) + b;
			},
			easeInOutQuad : function(x, t, b, c, d) {
				if ((t /= d / 2) < 1)
					return c / 2 * t * t + b;
				return -c / 2 * ((--t) * (t - 2) - 1) + b;
			},
			easeInCubic : function(x, t, b, c, d) {
				return c * (t /= d) * t * t + b;
			},
			easeOutCubic : function(x, t, b, c, d) {
				return c * ((t = t / d - 1) * t * t + 1) + b;
			},
			easeInOutCubic : function(x, t, b, c, d) {
				if ((t /= d / 2) < 1)
					return c / 2 * t * t * t + b;
				return c / 2 * ((t -= 2) * t * t + 2) + b;
			},
			easeInQuart : function(x, t, b, c, d) {
				return c * (t /= d) * t * t * t + b;
			},
			easeOutQuart : function(x, t, b, c, d) {
				return -c * ((t = t / d - 1) * t * t * t - 1) + b;
			},
			easeInOutQuart : function(x, t, b, c, d) {
				if ((t /= d / 2) < 1)
					return c / 2 * t * t * t * t + b;
				return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
			},
			easeInQuint : function(x, t, b, c, d) {
				return c * (t /= d) * t * t * t * t + b;
			},
			easeOutQuint : function(x, t, b, c, d) {
				return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
			},
			easeInOutQuint : function(x, t, b, c, d) {
				if ((t /= d / 2) < 1)
					return c / 2 * t * t * t * t * t + b;
				return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
			},
			easeInSine : function(x, t, b, c, d) {
				return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
			},
			easeOutSine : function(x, t, b, c, d) {
				return c * Math.sin(t / d * (Math.PI / 2)) + b;
			},
			easeInOutSine : function(x, t, b, c, d) {
				return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
			},
			easeInExpo : function(x, t, b, c, d) {
				return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
			},
			easeOutExpo : function(x, t, b, c, d) {
				return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1)
						+ b;
			},
			easeInOutExpo : function(x, t, b, c, d) {
				if (t == 0)
					return b;
				if (t == d)
					return b + c;
				if ((t /= d / 2) < 1)
					return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
				return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
			},
			easeInCirc : function(x, t, b, c, d) {
				return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
			},
			easeOutCirc : function(x, t, b, c, d) {
				return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
			},
			easeInOutCirc : function(x, t, b, c, d) {
				if ((t /= d / 2) < 1)
					return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
				return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
			},
			easeInElastic : function(x, t, b, c, d) {
				var s = 1.70158;
				var p = 0;
				var a = c;
				if (t == 0)
					return b;
				if ((t /= d) == 1)
					return b + c;
				if (!p)
					p = d * .3;
				if (a < Math.abs(c)) {
					a = c;
					var s = p / 4;
				} else
					var s = p / (2 * Math.PI) * Math.asin(c / a);
				return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s)
						* (2 * Math.PI) / p))
						+ b;
			},
			easeOutElastic : function(x, t, b, c, d) {
				var s = 1.70158;
				var p = 0;
				var a = c;
				if (t == 0)
					return b;
				if ((t /= d) == 1)
					return b + c;
				if (!p)
					p = d * .3;
				if (a < Math.abs(c)) {
					a = c;
					var s = p / 4;
				} else
					var s = p / (2 * Math.PI) * Math.asin(c / a);
				return a * Math.pow(2, -10 * t)
						* Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
			},
			easeInOutElastic : function(x, t, b, c, d) {
				var s = 1.70158;
				var p = 0;
				var a = c;
				if (t == 0)
					return b;
				if ((t /= d / 2) == 2)
					return b + c;
				if (!p)
					p = d * (.3 * 1.5);
				if (a < Math.abs(c)) {
					a = c;
					var s = p / 4;
				} else
					var s = p / (2 * Math.PI) * Math.asin(c / a);
				if (t < 1)
					return -.5
							* (a * Math.pow(2, 10 * (t -= 1)) * Math
									.sin((t * d - s) * (2 * Math.PI) / p)) + b;
				return a * Math.pow(2, -10 * (t -= 1))
						* Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c
						+ b;
			},
			easeInBack : function(x, t, b, c, d, s) {
				if (s == undefined)
					s = 1.70158;
				return c * (t /= d) * t * ((s + 1) * t - s) + b;
			},
			easeOutBack : function(x, t, b, c, d, s) {
				if (s == undefined)
					s = 1.70158;
				return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
			},
			easeInOutBack : function(x, t, b, c, d, s) {
				if (s == undefined)
					s = 1.70158;
				if ((t /= d / 2) < 1)
					return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
				return c / 2
						* ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2)
						+ b;
			},
			easeInBounce : function(x, t, b, c, d) {
				return c - jQuery.easing.easeOutBounce(x, d - t, 0, c, d) + b;
			},
			easeOutBounce : function(x, t, b, c, d) {
				if ((t /= d) < (1 / 2.75)) {
					return c * (7.5625 * t * t) + b;
				} else if (t < (2 / 2.75)) {
					return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
				} else if (t < (2.5 / 2.75)) {
					return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
				} else {
					return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375)
							+ b;
				}
			},
			easeInOutBounce : function(x, t, b, c, d) {
				if (t < d / 2)
					return jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * .5
							+ b;
				return jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5
						+ c * .5 + b;
			}
		});

/*
 * 
 * TERMS OF USE - EASING EQUATIONS
 * 
 * Open source under the BSD License.
 * 
 * Copyright © 2001 Robert Penner All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this
 * list of conditions and the following disclaimer. Redistributions in binary
 * form must reproduce the above copyright notice, this list of conditions and
 * the following disclaimer in the documentation and/or other materials provided
 * with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to
 * endorse or promote products derived from this software without specific prior
 * written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * 
 *//*

 GalleryView - jQuery Content Gallery Plugin
 Author:   Jack Anderson
 Version:  1.1 (April 5, 2009)
 Documentation:  http://www.spaceforaname.com/jquery/galleryview/
 
 Please use this development script if you intend to make changes to the
 plugin code.  For production sites, please use jquery.galleryview-1.0.1-pack.js.
 
*/
(function($){
 $.fn.galleryView = function(options) {
  var opts = $.extend($.fn.galleryView.defaults,options);
  
  var id;
  var iterator = 0;
  var gallery_width;
  var gallery_height;
  var frame_margin = 10;
  var strip_width;
  var wrapper_width;
  var item_count = 0;
  var slide_method;
  var img_path;
  var paused = false;
  var frame_caption_size = 20;
  var frame_margin_top = 7;
  var pointer_width = 0;
  
  //Define jQuery objects for reuse
  var j_gallery;
  var j_filmstrip;
  var j_frames;
  var j_panels;
  var j_pointer;
  
/************************************************/
/* Plugin Methods        */
/************************************************/ 
  function showItem(i) {
   //Disable next/prev buttons until transition is complete
   $('img.nav-next').unbind('click');
   $('img.nav-prev').unbind('click');
   j_frames.unbind('click');
   if(has_panels) {
    if(opts.fade_panels) {
     //Fade out all panels and fade in target panel
     j_panels.fadeOut(opts.transition_speed).eq(i%item_count).fadeIn(opts.transition_speed,function(){
      if(!has_filmstrip) {
       $('img.nav-prev').click(showPrevItem);
       $('img.nav-next').click(showNextItem);  
      }
     });
    } 
   }
   
   if(has_filmstrip) {
    //Slide either pointer or filmstrip, depending on transition method
    if(slide_method=='strip') {
     //Stop filmstrip if it's currently in motion
     j_filmstrip.stop();
     
     //Determine distance between pointer (eventual destination) and target frame
     var distance = getPos(j_frames[i]).left - (getPos(j_pointer[0]).left+2);
     var leftstr = (distance>=0?'-=':'+=')+Math.abs(distance)+'px';
     
     //Animate filmstrip and slide target frame under pointer
     //If target frame is a duplicate, jump back to 'original' frame
     j_filmstrip.animate({
      'left':leftstr
     },opts.transition_speed,opts.easing,function(){
      //Always ensure that there are a sufficient number of hidden frames on either
      //side of the filmstrip to avoid empty frames
      if(i>item_count) {
       i = i%item_count;
       iterator = i;
       j_filmstrip.css('left','-'+((opts.frame_width+frame_margin)*i)+'px');
      } else if (i<=(item_count-strip_size)) {
       i = (i%item_count)+item_count;
       iterator = i;
       j_filmstrip.css('left','-'+((opts.frame_width+frame_margin)*i)+'px');
      }
      
      if(!opts.fade_panels) {
       j_panels.hide().eq(i%item_count).show();
      }
      $('img.nav-prev').click(showPrevItem);
      $('img.nav-next').click(showNextItem);
      enableFrameClicking();
     });
    } else if(slide_method=='pointer') {
     //Stop pointer if it's currently in motion
     j_pointer.stop();
     //Get position of target frame
     var pos = getPos(j_frames[i]);
     //Slide the pointer over the target frame
     j_pointer.animate({
      'left':(pos.left-2+'px')
     },opts.transition_speed,opts.easing,function(){ 
      if(!opts.fade_panels) {
       j_panels.hide().eq(i%item_count).show();
      } 
      $('img.nav-prev').click(showPrevItem);
      $('img.nav-next').click(showNextItem);
      enableFrameClicking();
     });
    }
   
    if($('a',j_frames[i])[0]) {
     j_pointer.unbind('click').click(function(){
      var a = $('a',j_frames[i]).eq(0);
      if(a.attr('target')=='_blank') {window.open(a.attr('href'));}
      else {location.href = a.attr('href');}
     });
    }
   }
  };
  function showNextItem() {
   $(document).stopTime("transition");
   if(++iterator==j_frames.length) {iterator=0;}
   showItem(iterator);
   $(document).everyTime(opts.transition_interval,"transition",function(){
    showNextItem();
   });
  };
  function showPrevItem() {
   $(document).stopTime("transition");
   if(--iterator<0) {iterator = item_count-1;}
   //alert(iterator);
   showItem(iterator);
   $(document).everyTime(opts.transition_interval,"transition",function(){
    showNextItem();
   });
  };
  function getPos(el) {
   var left = 0, top = 0;
   var el_id = el.id;
   if(el.offsetParent) {
    do {
     left += el.offsetLeft;
     top += el.offsetTop;
    } while(el = el.offsetParent);
   }
   //If we want the position of the gallery itself, return it
   if(el_id == id) {return {'left':left,'top':top};}
   //Otherwise, get position of element relative to gallery
   else {
    var gPos = getPos(j_gallery[0]);
    var gLeft = gPos.left;
    var gTop = gPos.top;
    
    return {'left':left-gLeft,'top':top-gTop};
   }
  };
  function enableFrameClicking() {
   j_frames.each(function(i){
    //If there isn't a link in this frame, set up frame to slide on click
    //Frames with links will handle themselves
    if($('a',this).length==0) {
     $(this).click(function(){
      $(document).stopTime("transition");
      showItem(i);
      iterator = i;
      $(document).everyTime(opts.transition_interval,"transition",function(){
       showNextItem();
      });
     });
    }
   });
  };
  
  function buildPanels() {
   //If there are panel captions, add overlay divs
   if($('.panel-overlay').length>0) {j_panels.append('<div class="overlay"></div>');}
   
   if(!has_filmstrip) {
    //Add navigation buttons
    alert(RESOURCES_IMG+'/next.png');
    $('<img />').addClass('nav-next').attr('src',RESOURCES_IMG+'/next.png').appendTo(j_gallery).css({
     'position':'absolute',
     'zIndex':'1100',
     'cursor':'pointer',
     'top':((opts.panel_height-22)/2)+'px',
     'right':'10px',
     'display':'none'
    }).click(showNextItem);
    $('<img />').addClass('nav-prev').attr('src',RESOURCES_IMG+'/prev.png').appendTo(j_gallery).css({
     'position':'absolute',
     'zIndex':'1100',
     'cursor':'pointer',
     'top':((opts.panel_height-22)/2)+'px',
     'left':'10px',
     'display':'none'
    }).click(showPrevItem);
    
    $('<img />').addClass('nav-overlay').attr('src',RESOURCES_IMG+'/panel-nav-next.png').appendTo(j_gallery).css({
     'position':'absolute',
     'zIndex':'1099',
     'top':((opts.panel_height-22)/2)-10+'px',
     'right':'0',
     'display':'none'
    });
    
    $('<img />').addClass('nav-overlay').attr('src',RESOURCES_IMG+'/panel-nav-prev.png').appendTo(j_gallery).css({
     'position':'absolute',
     'zIndex':'1099',
     'top':((opts.panel_height-22)/2)-10+'px',
     'left':'0',
     'display':'none'
    });
   }
   j_panels.css({
    'width':(opts.panel_width-parseInt(j_panels.css('paddingLeft').split('px')[0],10)-parseInt(j_panels.css('paddingRight').split('px')[0],10))+'px',
    'height':(opts.panel_height-parseInt(j_panels.css('paddingTop').split('px')[0],10)-parseInt(j_panels.css('paddingBottom').split('px')[0],10))+'px',
    'position':'absolute',
    'top':(opts.filmstrip_position=='top'?(opts.frame_height+frame_margin_top+(opts.show_captions?frame_caption_size:frame_margin_top))+'px':'0px'),
    'left':'0px',
    'overflow':'hidden',
    'background':'#43474A',
    'display':'none'
   });
   $('.panel-overlay',j_panels).css({
    'position':'absolute',
    'zIndex':'999',
    'width':(opts.panel_width-20)+'px',
    'height':opts.overlay_height+'px',
    'top':(opts.overlay_position=='top'?'0':opts.panel_height-opts.overlay_height+'px'),
    'left':'0',
    'padding':'0 10px',
    'color':opts.overlay_text_color,
    'fontSize':opts.overlay_font_size
   });
   $('.panel-overlay a',j_panels).css({
    'color':opts.overlay_text_color,
    'textDecoration':'underline',
    'fontWeight':'bold'
   });
   $('.overlay',j_panels).css({
    'position':'absolute',
    'zIndex':'998',
    'width':opts.panel_width+'px',
    'height':opts.overlay_height+'px',
    'top':(opts.overlay_position=='top'?'0':opts.panel_height-opts.overlay_height+'px'),
    'left':'0',
    'background':opts.overlay_color,
    'opacity':opts.overlay_opacity
   });
   $('.panel iframe',j_panels).css({
    'width':opts.panel_width+'px',
    'height':(opts.panel_height-opts.overlay_height)+'px',
    'border':'0'
   });
  };
  
  function buildFilmstrip() {
   //Add wrapper to filmstrip to hide extra frames
   j_filmstrip.wrap('<div class="strip_wrapper"></div>');
   if(slide_method=='strip') {
    j_frames.clone().appendTo(j_filmstrip);
    j_frames.clone().appendTo(j_filmstrip);
    j_frames = $('li',j_filmstrip);
   }
   //If captions are enabled, add caption divs and fill with the image titles
   if(opts.show_captions) {
    j_frames.append('<div class="caption"></div>').each(function(i){
     $(this).find('.caption').html($(this).find('img').attr('title'));      
    });
   }
   
   j_filmstrip.css({
    'listStyle':'none',
    'margin':'0',
    'padding':'0',
    'width':strip_width+'px',
    'position':'absolute',
    'zIndex':'900',
    'top':'0',
    'left':'0',
    'height':(opts.frame_height+10)+'px',
    'background':opts.background_color
   });
   j_frames.css({
    'float':'left',
    'position':'relative',
    'height':opts.frame_height+'px',
    'zIndex':'901',
    'marginTop':frame_margin_top+'px',
    'marginBottom':'0px',
    'marginRight':frame_margin+'px',
    'padding':'0',
    'cursor':'pointer'
   });
   $('img',j_frames).css({
    'border':'none'
   });
   $('.strip_wrapper',j_gallery).css({
    'position':'absolute',
    'top':(opts.filmstrip_position=='top'?'0px':opts.panel_height+'px'),
    'left':((gallery_width-wrapper_width)/2)+'px',
    'width':wrapper_width+'px',
    'height':(opts.frame_height+frame_margin_top+(opts.show_captions?frame_caption_size:frame_margin_top))+'px',
    'overflow':'hidden'
   });
   $('.caption',j_gallery).css({
    'position':'absolute',
    'top':opts.frame_height+'px',
    'left':'0',
    'margin':'0',
    'width':opts.frame_width+'px',
    'padding':'0',
    'color':opts.caption_text_color,
    'textAlign':'center',
    'fontSize':'10px',
    'height':frame_caption_size+'px',
    
    'lineHeight':frame_caption_size+'px'
   });
   var pointer = $('<div></div>');
   pointer.attr('id','pointer').appendTo(j_gallery).css({
     'position':'absolute',
     'zIndex':'1000',
     'cursor':'pointer',
     'top':getPos(j_frames[0]).top-(pointer_width/2)+'px',
     'left':getPos(j_frames[0]).left-(pointer_width/2)+'px',
     'height':opts.frame_height-pointer_width+'px',
     'width':opts.frame_width-pointer_width+'px',
     'border':(has_panels?pointer_width+'px solid '+(opts.nav_theme=='dark'?'black':'white'):'none')
   });
   j_pointer = $('#pointer',j_gallery);
   if(has_panels) {
    var pointerArrow = $('<img />');
    pointerArrow.attr('src',RESOURCES_IMG+'/pointer'+(opts.filmstrip_position=='top'?'-down':'')+'.png').appendTo($('#pointer')).css({
     'position':'absolute',
     'zIndex':'1001',
     'top':(opts.filmstrip_position=='bottom'?'-'+(10+pointer_width)+'px':opts.frame_height+'px'),
     'left':((opts.frame_width/2)-10)+'px'
    });
   }
   
   //If the filmstrip is animating, move the strip to the middle third
   if(slide_method=='strip') {
    j_filmstrip.css('left','-'+((opts.frame_width+frame_margin)*item_count)+'px');
    iterator = item_count;
   }
   //If there's a link under the pointer, enable clicking on the pointer
   if($('a',j_frames[iterator])[0]) {
    j_pointer.click(function(){
     var a = $('a',j_frames[iterator]).eq(0);
     if(a.attr('target')=='_blank') {window.open(a.attr('href'));}
     else {location.href = a.attr('href');}
    });
   }
   
   //Add navigation buttons
   $('<img />').addClass('nav-next').attr('src',RESOURCES_IMG+'/next.png').appendTo(j_gallery).css({
    'position':'absolute',
    'cursor':'pointer',
    'top':(opts.filmstrip_position=='top'?0:opts.panel_height)+frame_margin_top+((opts.frame_height-22)/2)+'px',
    'right':(gallery_width/2)-(wrapper_width/2)-10-22+'px'
   }).click(showNextItem);
   $('<img />').addClass('nav-prev').attr('src',RESOURCES_IMG+'/prev.png').appendTo(j_gallery).css({
    'position':'absolute',
    'cursor':'pointer',
    'top':(opts.filmstrip_position=='top'?0:opts.panel_height)+frame_margin_top+((opts.frame_height-22)/2)+'px',
    'left':(gallery_width/2)-(wrapper_width/2)-10-22+'px'
   }).click(showPrevItem);
  };
  
  //Check mouse to see if it is within the borders of the panel
  //More reliable than 'mouseover' event when elements overlay the panel
  function mouseIsOverPanels(x,y) {  
   var pos = getPos(j_gallery[0]);
   var top = pos.top;
   var left = pos.left;
   return x > left && x < left+opts.panel_width && y > top && y < top+opts.panel_height;    
  };
  
/************************************************/
/* Main Plugin Code       */
/************************************************/
  return this.each(function() {
   j_gallery = $(this);
   //Determine path between current page and filmstrip images
   //Scan script tags and look for path to GalleryView plugin
   $('script').each(function(i){
    var s = $(this);
    if(s.attr('src') && s.attr('src').match(/jquery\.galleryview/)){
     img_path = s.attr('src').split('jquery.galleryview')[0]+'themes/'; 
    }
   });
   
   //Hide gallery to prevent Flash of Unstyled Content (FoUC) in IE
   j_gallery.css('visibility','hidden');
   
   //Assign elements to variables for reuse
   j_filmstrip = $('.filmstrip',j_gallery);
   j_frames = $('li',j_filmstrip);
   j_panels = $('.panel',j_gallery);
   
   id = j_gallery.attr('id');
   
   has_panels = j_panels.length > 0;
   has_filmstrip = j_frames.length > 0;
   
   if(!has_panels) opts.panel_height = 0;
   
   //Number of frames in filmstrip
   item_count = has_panels?j_panels.length:j_frames.length;
   
   //Number of frames that can display within the screen's width
   //64 = width of block for navigation button * 2
   //5 = minimum frame margin
   strip_size = has_panels?Math.floor((opts.panel_width-64)/(opts.frame_width+frame_margin)):Math.min(item_count,opts.filmstrip_size); 
   
   
   /************************************************/
   /* Determine transition method for filmstrip */
   /************************************************/
     //If more items than strip size, slide filmstrip
     //Otherwise, slide pointer
     if(strip_size >= item_count) {
      slide_method = 'pointer';
      strip_size = item_count;
     }
     else {slide_method = 'strip';}
   
   /************************************************/
   /* Determine dimensions of various elements */
   /************************************************/
     
     //Width of gallery block
     gallery_width = has_panels?opts.panel_width:(strip_size*(opts.frame_width+frame_margin))-frame_margin+64;
     
     //Height of gallery block = screen + filmstrip + captions (optional)
     gallery_height = (has_panels?opts.panel_height:0)+(has_filmstrip?opts.frame_height+frame_margin_top+(opts.show_captions?frame_caption_size:frame_margin_top):0);
     
     //Width of filmstrip
     if(slide_method == 'pointer') {strip_width = (opts.frame_width*item_count)+(frame_margin*(item_count));}
     else {strip_width = (opts.frame_width*item_count*3)+(frame_margin*(item_count*3));}
     
     //Width of filmstrip wrapper (to hide overflow)
     wrapper_width = ((strip_size*opts.frame_width)+((strip_size-1)*frame_margin));
   
   /************************************************/
   /* Apply CSS Styles       */
   /************************************************/
     j_gallery.css({
      'position':'relative',
      'margin':'0',
      'background':opts.background_color,
      'border':opts.border,
      'width':gallery_width+'px',
      'height':gallery_height+'px'
     });
   
   /************************************************/
   /* Build filmstrip and/or panels    */
   /************************************************/
     if(has_filmstrip) {
      buildFilmstrip();
     }
     if(has_panels) {
      buildPanels();
     }

   
   /************************************************/
   /* Add events to various elements    */
   /************************************************/
     if(has_filmstrip) enableFrameClicking();
     
      
      
      $().mousemove(function(e){       
       if(mouseIsOverPanels(e.pageX,e.pageY)) {
        if(opts.pause_on_hover) {
         $(document).oneTime(500,"animation_pause",function(){
          $(document).stopTime("transition");
          paused=true;
         });
        }
        if(has_panels && !has_filmstrip) {
         $('.nav-overlay').fadeIn('fast');
         $('.nav-next').fadeIn('fast');
         $('.nav-prev').fadeIn('fast');
        }
       } else {
        if(opts.pause_on_hover) {
         $(document).stopTime("animation_pause");
         if(paused) {
          $(document).everyTime(opts.transition_interval,"transition",function(){
           showNextItem();
          });
          paused = false;
         }
        }
        if(has_panels && !has_filmstrip) {
         $('.nav-overlay').fadeOut('fast');
         $('.nav-next').fadeOut('fast');
         $('.nav-prev').fadeOut('fast');
        }
       }
      });
   
   
   /************************************************/
   /* Initiate Automated Animation    */
   /************************************************/
     //Show the first panel
     j_panels.eq(0).show();

     //If we have more than one item, begin automated transitions
     if(item_count > 1) {
      $(document).everyTime(opts.transition_interval,"transition",function(){
       showNextItem();
      });
     }
     
     //Make gallery visible now that work is complete
     j_gallery.css('visibility','visible');
  });
 };
 
 $.fn.galleryView.defaults = {
  panel_width: 400,
  panel_height: 300,
  frame_width: 80,
  frame_height: 80,
  filmstrip_size: 3,
  overlay_height: 70,
  overlay_font_size: '1em',
  transition_speed: 400,
  transition_interval: 6000,
  overlay_opacity: 0.4,
  overlay_color: 'black',
  background_color: 'black',
  overlay_text_color: 'white',
  caption_text_color: 'white',
  border: '0px solid black',
  nav_theme: 'dark',
  easing: 'swing',
  filmstrip_position: 'bottom',
  overlay_position: 'bottom',
  show_captions: false,
  fade_panels: true,
  pause_on_hover: true
 };
})(jQuery);$(document).ready(function() {
			$('.notImplemented').click(function() {
						alert("На стадии разработки");
						return false;
			});
});

var Confirmation = new function () {
  var confirmHandle = null;
  var ctx;
  return ctx = {
   reload : function(msg, url) {
    confirmHandle = confirm(msg);
    if (confirmHandle) {
     window.location.href = url;
     confirmHandle = null;
    } else {
     confirmHandle = null;
    }
    return false;
   }
  }
}


function alertObject(obj,comment) {
  var str = (comment)? comment+"\n":'{';
  for(var el in obj) {
    var value = obj[el];
    if ( typeof value == "function" ) {
      value = "[<FUNCTION>]";
    }
    str += el + " : "+ value +" , ";
  }
  str +=" }";
  alert(str);
}// interval of refreshing broadcast page
var refreshSecondsInterval = 30;
var validationRules = {
        rules: {
          second: {
            digits: true,
            required: true,          
            max: 59
          }
        }
      };

$(document).ready(function() {
   
   if ($.fn.validate) {
 			$('.validate').validate(validationRules);
 			$('form .submit').show();
 			
 	    jQuery.validator.addMethod(
 	        "dateTime",
 	        function(value) {
 	            return value.match(/^\d{4}-\d{2}-\d{2}\s(\d{1,2}:){2}\d{1,2}$/);
 	        },
 	        "Введите дату в формате: yyyy-mm-dd HH:MM:SS"
 	    );
   } 
});

function initMCE(selector, height) { 
 if (!height) {
   height = '400px';
 }
 $(selector).tinymce({
    // Location of TinyMCE script
    script_url : RESOURCES_JS + '/tiny_mce/tiny_mce.js',
 
    // General options
    theme : "advanced",
    plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,ibrowser,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
 
    // Theme options
    theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,fontselect,fontsizeselect",
    theme_advanced_buttons2 : "copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,ibrowser,cleanup,help,code,|,forecolor,backcolor",
    theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,charmap,emotions,iespell,media",
    theme_advanced_buttons4 : "",
    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : false,
    relative_urls: false,
    content_css : RESOURCES_CSS + "/tinymce_config.css",
    height: height,
    width: '100%'
 });
}
         
function initMCETeams(selector, height) { 
 if (!height) {
   height = '400px';
 }
 $(selector).tinymce({
    // Location of TinyMCE script
    script_url : RESOURCES_JS + '/tiny_mce/tiny_mce.js',
 
    // General options
    theme : "advanced",
    plugins : "safari,table,iespell,ibrowser,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
 
    // Theme options
    theme_advanced_buttons1 : "bold,italic,underline,strikethrough,link,unlink,code",
    theme_advanced_buttons2 : "tablecontrols",
    theme_advanced_buttons3 : "",
    theme_advanced_buttons4 : "",
    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : false,
    relative_urls: false,
    content_css : RESOURCES_CSS + "/tinymce_config.css",
    height: height,
    width: '100%'
 });
}

function initSmallMCE(selector, height, width) { 
	 if (!height) {
	   height = '50px';
	 }
	 if (!width) {
       width = '100%';
	 }
	 $(selector).tinymce({
	    // Location of TinyMCE script
	    script_url : RESOURCES_JS + '/tiny_mce/tiny_mce_src.js',
	    
	    // General options
	    theme : "advanced",
	    plugins : "",
	 
	    // Theme options
	    theme_advanced_resizing_min_height : 25,
	    theme_advanced_buttons1 : "bold,italic,underline",
	    theme_advanced_buttons2 : "",
	    theme_advanced_buttons3 : "",
	    theme_advanced_buttons4 : "",
	    theme_advanced_toolbar_location : "top",
	    theme_advanced_toolbar_align : "left",
	    theme_advanced_statusbar_location : "",
	    theme_advanced_resizing : false,
	    content_css : RESOURCES_CSS + "/tinymce_config.css",
      height: height,
      width: width
	 });
}

function datePickerInit() {
  $('.calendar').datepicker({
      showOn: 'button',
      dateFormat: 'yy-mm-dd',
      buttonImage: RESOURCES_IMG + '/calendar.gif', 
      buttonImageOnly: true,
      onClose: function(dateText, inst) {
           var date = new Date();
           var hours = ((date.getHours().toString().length == 1) ? '0' + date.getHours() : date.getHours());
           var minutes = ((date.getMinutes().toString().length == 1) ? '0' + date.getMinutes() : date.getMinutes());
           inst.input.val(inst.input.val() + " " + hours + ":" + minutes + ":00");
           $(this).trigger('focus');
           $(this).trigger('blur');
        }
    });
}

function joinScores() {
  var score, descriptor;
  for (var i = 1; i <= 5; i++) {
    descriptor = '#p' + i + '_score';
    score = $(descriptor + '1').val() + SCORE_SEPARATOR + $(descriptor + '2').val();
    $(descriptor).val(score);
  } 
}

function joinScore(i) {
  var descriptor = '#p' + i + '_score';
  var score = $(descriptor + '1').val() + SCORE_SEPARATOR + $(descriptor + '2').val();
  return score;
}

function splitScores() {
  var score, index, descriptor;
  for (var i = 1; i <= 5; i++) {
    descriptor = '#p' + i + '_score';
    score = $(descriptor).val();
    index = score.search(SCORE_SEPARATOR);
    $(descriptor + '1').val(score.substr(0, index));
    $(descriptor + '2').val(score.substr(index + 1));
  }
}

function switchScores(startIndex, endIndex, disable) {
  var descriptor;
  if(disable) {
    $('.hiddenScore').removeAttr('disabled');
    $('.suSpinButton').removeAttr('disabled');    
    for (var i = startIndex; i <= endIndex && i <= 5; i++) {
      descriptor = '#p' + i + '_score';      
      $(descriptor).attr('disabled', 'disabled');
      $(descriptor + '1').attr('disabled', 'disabled');
      $(descriptor + '2').attr('disabled', 'disabled');        
    }
  } else {
    $('.hiddenScore').attr('disabled', 'disabled');
    $('.suSpinButton').attr('disabled', 'disabled');
    for (var i = startIndex; i <= endIndex && i <= 5; i++) {
      descriptor = '#p' + i + '_score';
      $(descriptor).removeAttr('disabled');
      $(descriptor + '1').removeAttr('disabled');
      $(descriptor + '2').removeAttr('disabled');
    }
  }
}

function switchScore(i, enable) {
  var descriptor = '#p' + i + '_score';
  if (enable) {
    $(descriptor).removeAttr('disabled');
    $(descriptor + '1').removeAttr('disabled');
    $(descriptor + '2').removeAttr('disabled');
  } else {
    $(descriptor).attr('disabled', 'disabled');
    $(descriptor + '1').attr('disabled', 'disabled');
    $(descriptor + '2').attr('disabled', 'disabled');    
  }
}

function switchScoresDependingOnState() {
  var stateNum = $('#stateSelect option:selected').attr('id').substring(1);
  switchScores(1, stateNum);
  $('.hasPeriod').removeAttr('checked');
  $('.hasPeriod').attr('disabled', 'disabled');
  if (stateNum > 3 && stateNum < 6) {
    $('#has_p' + stateNum).attr('checked', 'checked');
    if(stateNum == 5) {
      // state == BULLITS
      var id = stateNum - 1;
      $('#has_p' + id).attr('checked', 'checked');
      $('#has_p' + id).removeAttr('disabled');
    }
  }
  if (stateNum == 6) {
    $('.hasPeriod').removeAttr('checked');
    $('.hasPeriod').removeAttr('disabled');
    switchScores(4, 5, true);
  }
}

function switchScoreDependingOnBox(checkbox) {
  var i = $(checkbox).attr('id').substr(5, 1);
  var stateNum = $('#stateSelect option:selected').attr('id').substring(1);
  if (stateNum == 6 || stateNum == 5 && i == 4) {
    // state == FINISHED, switching scores depending on checkboxes
    // OR state == BULLITS, switching overtime_score depending on checkbox
    var checked = $(checkbox).attr('checked');
    switchScore(i, checked);
  }
}

function splitCurrentScore() {
  var score = $('#score').val();
  var i = score.search(SCORE_SEPARATOR);
  $('#score1').text(score.substr(0, i));
  $('#score2').text(score.substr(i + 1));
}

function switchButtons(index) {
  $('.apply').attr('disabled', 'disabled');
  $('#apply' + index).removeAttr('disabled');
  
  $('.finishPeriod').attr('disabled', 'disabled');
  if(index <= 4) {
    $('#finish' + index).removeAttr('disabled');
  }
  
  $('.finishGame').attr('disabled', 'disabled');
  if (index > 2 && index < 6) {
    $('#finishGame' + index).removeAttr('disabled');
  }
}

function summarizeCurrentScore(stateKey) {
  var tempScore, score1, score2, descriptor, index;
  score1 = 0;
  score2 = 0;
  for(var i = 1; i <= stateKey && i < 5; i++) {
    descriptor = '#p' + i + '_score';
    tempScore = $(descriptor).val();
    index = tempScore.search(SCORE_SEPARATOR);
    score1 += parseInt(tempScore.substr(0, index));
    score2 += parseInt(tempScore.substr(index + 1));
  }
  $('#score').val(score1 + SCORE_SEPARATOR + score2);
}

function applyNewScore(stateKey, gameId) {
  var score = joinScore(stateKey);
  $.ajax({
    url: APP_URL + '/xadmin-games/broadcastSetScore/' + gameId + '/' + stateKey + '/' + score,
    success: function(){
      $('#p' + stateKey + '_score').val(score);
      summarizeCurrentScore(stateKey);
      splitCurrentScore();
      splitScores();
    }
  });
  return score;
}

function startNextPeriod(stateKey, gameId) {
  $.ajax({
    url: APP_URL + '/xadmin-games/broadcastSetNextState/' + gameId,
    success: function(){
      if(stateKey > 0) {
        var score = applyNewScore(stateKey, gameId);
        $('#p' + stateKey + '_score').val(score);
        splitScores();
      } 
      stateKey++;
      switchScores(stateKey, stateKey);
      switchButtons(stateKey);
      switchStateInput(stateKey);
    }
  });
}

function finishGame(stateKey, gameId) {
  $.ajax({
    url: APP_URL + '/xadmin-games/broadcastSetState/' + gameId + '/6',
    success: function(){
      var score = applyNewScore(stateKey, gameId);
      $('#p' + stateKey + '_score').val(score);
      splitScores();
      stateKey = 6;
      switchScores(stateKey, stateKey);
      switchButtons(stateKey);
      switchStateInput(stateKey);
    }
  });
}

function switchStateInput(stateKey){
  $('#s' + stateKey).attr('selected', 'selected');
  provideTimeValidation();
}

function deleteEvent(id) {
  $.ajax({
    url: APP_URL + '/xadmin-games/broadcastEventDelete/' + id,
    success: function() {
      var tbody = $('#eventRow' + id).parent();
      if(tbody.children().size() == 1){
        var tableChildren = tbody.parent().children();
        var index = tableChildren.index(tbody);
        //removing thead, which has index = index of tbody - 1
        tableChildren.eq(index - 1).remove();
        tbody.remove();
      } else {
        $('#eventRow' + id).remove();
      }
    }
  });
}

function autoReload(){
  window.location = window.location;
}

function submitLineups(gameId){
  var lineup1 = $('#team1_lineup').html();
  var lineup2 = $('#team2_lineup').html();
  $.ajax({
    type: 'POST',
    data: ({'id' : gameId, 'team1_lineup' : lineup1, 'team2_lineup' : lineup2}),
    url: APP_URL + '/' + LANGUAGE + 'xadmin-games/refreshGameLineups',
    success: function(){
      $('#lineup1').html(lineup1);
      $('#lineup2').html(lineup2);
    }
  });
}

function provideTimeValidation(){
  var inputs = $('.timeInput');
  var eventState = $('#stateSelect').val();
  if(eventState == 0) {
    //$('#minute').attr('name', 'minute');
    $('#minute').removeClass();
    $('#minute').addClass('timeInput required digit');
    inputs.val('00');
    inputs.attr('readonly', 'readonly');
  } else if(eventState < 4){
    inputs.removeAttr('readonly');
    $('#minute').removeClass();
    $('#minute').addClass('timeInput required digit period' + eventState);
  } else {
    inputs.removeAttr('readonly');
    $('#minute').removeClass();
    $('#minute').addClass('timeInput required digit overtime');
  }
}

function addValidationRules() {
  $.validator.addMethod("period1", 
    function(value, element) {
      if(value >= 0 && value < 20) return true;
      if(value == 20 && $('#second').val() == 0) return true;
      return false;
    }, 
    "Время в 1 периоде должно быть не больше 20:00"
  );
  $.validator.addMethod("period2", 
    function(value, element) {
      if(value > 20 && value < 40) return true;
      if(value == 20 && $('#second').val() > 0) return true;
      if(value == 40 && $('#second').val() == 0) return true;
      return false;
    }, 
    "Время во 2 периоде должно быть между 20:01 и 40:00"
  );
  $.validator.addMethod("period3", 
    function(value, element) {
      if(value > 40 && value < 60) return true;
      if(value == 40 && $('#second').val() > 0) return true;
      if(value == 60 && $('#second').val() == 0) return true;
      return false;
    }, 
    "Время в 3 периоде должно быть между 40:01 и 60:00"
  );
  $.validator.addMethod("overtime", 
    function(value, element) {
      if(value > 60) return true;
      if(value == 60 && $('#second').val() > 0) return true;
      return false;
    }, 
    "Время должно быть не меньше 60:01"
  );  
}/* 
 * flowplayer.js 3.1.2. The Flowplayer API
 * 
 * Copyright 2009 Flowplayer Oy
 * 
 * This file is part of Flowplayer.
 * 
 * Flowplayer is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * Flowplayer is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with Flowplayer.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * Date: 2009-02-25 16:24:29 -0500 (Wed, 25 Feb 2009)
 * Revision: 166 
 */
(function(){function g(o){console.log("$f.fireEvent",[].slice.call(o))}function k(q){if(!q||typeof q!="object"){return q}var o=new q.constructor();for(var p in q){if(q.hasOwnProperty(p)){o[p]=k(q[p])}}return o}function m(t,q){if(!t){return}var o,p=0,r=t.length;if(r===undefined){for(o in t){if(q.call(t[o],o,t[o])===false){break}}}else{for(var s=t[0];p<r&&q.call(s,p,s)!==false;s=t[++p]){}}return t}function c(o){return document.getElementById(o)}function i(q,p,o){if(typeof p!="object"){return q}if(q&&p){m(p,function(r,s){if(!o||typeof s!="function"){q[r]=s}})}return q}function n(s){var q=s.indexOf(".");if(q!=-1){var p=s.substring(0,q)||"*";var o=s.substring(q+1,s.length);var r=[];m(document.getElementsByTagName(p),function(){if(this.className&&this.className.indexOf(o)!=-1){r.push(this)}});return r}}function f(o){o=o||window.event;if(o.preventDefault){o.stopPropagation();o.preventDefault()}else{o.returnValue=false;o.cancelBubble=true}return false}function j(q,o,p){q[o]=q[o]||[];q[o].push(p)}function e(){return"_"+(""+Math.random()).substring(2,10)}var h=function(t,r,s){var q=this;var p={};var u={};q.index=r;if(typeof t=="string"){t={url:t}}i(this,t,true);m(("Begin*,Start,Pause*,Resume*,Seek*,Stop*,Finish*,LastSecond,Update,BufferFull,BufferEmpty,BufferStop").split(","),function(){var v="on"+this;if(v.indexOf("*")!=-1){v=v.substring(0,v.length-1);var w="onBefore"+v.substring(2);q[w]=function(x){j(u,w,x);return q}}q[v]=function(x){j(u,v,x);return q};if(r==-1){if(q[w]){s[w]=q[w]}if(q[v]){s[v]=q[v]}}});i(this,{onCuepoint:function(x,w){if(arguments.length==1){p.embedded=[null,x];return q}if(typeof x=="number"){x=[x]}var v=e();p[v]=[x,w];if(s.isLoaded()){s._api().fp_addCuepoints(x,r,v)}return q},update:function(w){i(q,w);if(s.isLoaded()){s._api().fp_updateClip(w,r)}var v=s.getConfig();var x=(r==-1)?v.clip:v.playlist[r];i(x,w,true)},_fireEvent:function(v,y,w,A){if(v=="onLoad"){m(p,function(B,C){if(C[0]){s._api().fp_addCuepoints(C[0],r,B)}});return false}A=A||q;if(v=="onCuepoint"){var z=p[y];if(z){return z[1].call(s,A,w)}}if(y&&"onBeforeBegin,onMetaData,onStart,onUpdate,onResume".indexOf(v)!=-1){i(A,y);if(y.metaData){if(!A.duration){A.duration=y.metaData.duration}else{A.fullDuration=y.metaData.duration}}}var x=true;m(u[v],function(){x=this.call(s,A,y,w)});return x}});if(t.onCuepoint){var o=t.onCuepoint;q.onCuepoint.apply(q,typeof o=="function"?[o]:o);delete t.onCuepoint}m(t,function(v,w){if(typeof w=="function"){j(u,v,w);delete t[v]}});if(r==-1){s.onCuepoint=this.onCuepoint}};var l=function(p,r,q,t){var s={};var o=this;var u=false;if(t){i(s,t)}m(r,function(v,w){if(typeof w=="function"){s[v]=w;delete r[v]}});i(this,{animate:function(y,z,x){if(!y){return o}if(typeof z=="function"){x=z;z=500}if(typeof y=="string"){var w=y;y={};y[w]=z;z=500}if(x){var v=e();s[v]=x}if(z===undefined){z=500}r=q._api().fp_animate(p,y,z,v);return o},css:function(w,x){if(x!==undefined){var v={};v[w]=x;w=v}r=q._api().fp_css(p,w);i(o,r);return o},show:function(){this.display="block";q._api().fp_showPlugin(p);return o},hide:function(){this.display="none";q._api().fp_hidePlugin(p);return o},toggle:function(){this.display=q._api().fp_togglePlugin(p);return o},fadeTo:function(y,x,w){if(typeof x=="function"){w=x;x=500}if(w){var v=e();s[v]=w}this.display=q._api().fp_fadeTo(p,y,x,v);this.opacity=y;return o},fadeIn:function(w,v){return o.fadeTo(1,w,v)},fadeOut:function(w,v){return o.fadeTo(0,w,v)},getName:function(){return p},getPlayer:function(){return q},_fireEvent:function(w,v,x){if(w=="onUpdate"){var y=q._api().fp_getPlugin(p);if(!y){return}i(o,y);delete o.methods;if(!u){m(y.methods,function(){var A=""+this;o[A]=function(){var B=[].slice.call(arguments);var C=q._api().fp_invoke(p,A,B);return C==="undefined"||C===undefined?o:C}});u=true}}var z=s[w];if(z){z.apply(o,v);if(w.substring(0,1)=="_"){delete s[w]}}}})};function b(o,t,z){var E=this,y=null,x,u,p=[],s={},B={},r,v,w,D,A,q;i(E,{id:function(){return r},isLoaded:function(){return(y!==null)},getParent:function(){return o},hide:function(F){if(F){o.style.height="0px"}if(y){y.style.height="0px"}return E},show:function(){o.style.height=q+"px";if(y){y.style.height=A+"px"}return E},isHidden:function(){return y&&parseInt(y.style.height,10)===0},load:function(F){if(!y&&E._fireEvent("onBeforeLoad")!==false){m(a,function(){this.unload()});x=o.innerHTML;if(x&&!flashembed.isSupported(t.version)){o.innerHTML=""}flashembed(o,t,{config:z});if(F){F.cached=true;j(B,"onLoad",F)}}return E},unload:function(){try{if(!y||y.fp_isFullscreen()){return E}}catch(F){return E}if(x.replace(/\s/g,"")!==""){if(E._fireEvent("onBeforeUnload")===false){return E}y.fp_close();y=null;o.innerHTML=x;E._fireEvent("onUnload")}return E},getClip:function(F){if(F===undefined){F=D}return p[F]},getCommonClip:function(){return u},getPlaylist:function(){return p},getPlugin:function(F){var H=s[F];if(!H&&E.isLoaded()){var G=E._api().fp_getPlugin(F);if(G){H=new l(F,G,E);s[F]=H}}return H},getScreen:function(){return E.getPlugin("screen")},getControls:function(){return E.getPlugin("controls")},getConfig:function(F){return F?k(z):z},getFlashParams:function(){return t},loadPlugin:function(I,H,K,J){if(typeof K=="function"){J=K;K={}}var G=J?e():"_";E._api().fp_loadPlugin(I,H,K,G);var F={};F[G]=J;var L=new l(I,null,E,F);s[I]=L;return L},getState:function(){return y?y.fp_getState():-1},play:function(G,F){function H(){if(G!==undefined){E._api().fp_play(G,F)}else{E._api().fp_play()}}if(y){H()}else{E.load(function(){H()})}return E},getVersion:function(){var G="flowplayer.js 3.1.2";if(y){var F=y.fp_getVersion();F.push(G);return F}return G},_api:function(){if(!y){throw"Flowplayer "+E.id()+" not loaded when calling an API method"}return y},setClip:function(F){E.setPlaylist([F]);return E},getIndex:function(){return w}});m(("Click*,Load*,Unload*,Keypress*,Volume*,Mute*,Unmute*,PlaylistReplace,ClipAdd,Fullscreen*,FullscreenExit,Error,MouseOver,MouseOut").split(","),function(){var F="on"+this;if(F.indexOf("*")!=-1){F=F.substring(0,F.length-1);var G="onBefore"+F.substring(2);E[G]=function(H){j(B,G,H);return E}}E[F]=function(H){j(B,F,H);return E}});m(("pause,resume,mute,unmute,stop,toggle,seek,getStatus,getVolume,setVolume,getTime,isPaused,isPlaying,startBuffering,stopBuffering,isFullscreen,toggleFullscreen,reset,close,setPlaylist,addClip").split(","),function(){var F=this;E[F]=function(H,G){if(!y){return E}var I=null;if(H!==undefined&&G!==undefined){I=y["fp_"+F](H,G)}else{I=(H===undefined)?y["fp_"+F]():y["fp_"+F](H)}return I==="undefined"||I===undefined?E:I}});E._fireEvent=function(O){if(typeof O=="string"){O=[O]}var P=O[0],M=O[1],K=O[2],J=O[3],I=0;if(z.debug){g(O)}if(!y&&P=="onLoad"&&M=="player"){y=y||c(v);A=y.clientHeight;m(p,function(){this._fireEvent("onLoad")});m(s,function(Q,R){R._fireEvent("onUpdate")});u._fireEvent("onLoad")}if(P=="onLoad"&&M!="player"){return}if(P=="onError"){if(typeof M=="string"||(typeof M=="number"&&typeof K=="number")){M=K;K=J}}if(P=="onContextMenu"){m(z.contextMenu[M],function(Q,R){R.call(E)});return}if(P=="onPluginEvent"){var F=M.name||M;var G=s[F];if(G){G._fireEvent("onUpdate",M);G._fireEvent(K,O.slice(3))}return}if(P=="onPlaylistReplace"){p=[];var L=0;m(M,function(){p.push(new h(this,L++,E))})}if(P=="onClipAdd"){if(M.isInStream){return}M=new h(M,K,E);p.splice(K,0,M);for(I=K+1;I<p.length;I++){p[I].index++}}var N=true;if(typeof M=="number"&&M<p.length){D=M;var H=p[M];if(H){N=H._fireEvent(P,K,J)}if(!H||N!==false){N=u._fireEvent(P,K,J,H)}}m(B[P],function(){N=this.call(E,M,K);if(this.cached){B[P].splice(I,1)}if(N===false){return false}I++});return N};function C(){if($f(o)){$f(o).getParent().innerHTML="";w=$f(o).getIndex();a[w]=E}else{a.push(E);w=a.length-1}q=parseInt(o.style.height,10)||o.clientHeight;if(typeof t=="string"){t={src:t}}r=o.id||"fp"+e();v=t.id||r+"_api";t.id=v;z.playerId=r;if(typeof z=="string"){z={clip:{url:z}}}if(typeof z.clip=="string"){z.clip={url:z.clip}}z.clip=z.clip||{};if(o.getAttribute("href",2)&&!z.clip.url){z.clip.url=o.getAttribute("href",2)}u=new h(z.clip,-1,E);z.playlist=z.playlist||[z.clip];var F=0;m(z.playlist,function(){var H=this;if(typeof H=="object"&&H.length){H={url:""+H}}m(z.clip,function(I,J){if(J!==undefined&&H[I]===undefined&&typeof J!="function"){H[I]=J}});z.playlist[F]=H;H=new h(H,F,E);p.push(H);F++});m(z,function(H,I){if(typeof I=="function"){if(u[H]){u[H](I)}else{j(B,H,I)}delete z[H]}});m(z.plugins,function(H,I){if(I){s[H]=new l(H,I,E)}});if(!z.plugins||z.plugins.controls===undefined){s.controls=new l("controls",null,E)}s.canvas=new l("canvas",null,E);t.bgcolor=t.bgcolor||"#000000";t.version=t.version||[9,0];t.expressInstall="http://www.flowplayer.org/swf/expressinstall.swf";function G(H){if(!E.isLoaded()&&E._fireEvent("onBeforeClick")!==false){E.load()}return f(H)}x=o.innerHTML;if(x.replace(/\s/g,"")!==""){if(o.addEventListener){o.addEventListener("click",G,false)}else{if(o.attachEvent){o.attachEvent("onclick",G)}}}else{if(o.addEventListener){o.addEventListener("click",f,false)}E.load()}}if(typeof o=="string"){flashembed.domReady(function(){var F=c(o);if(!F){throw"Flowplayer cannot access element: "+o}else{o=F;C()}})}else{C()}}var a=[];function d(o){this.length=o.length;this.each=function(p){m(o,p)};this.size=function(){return o.length}}window.flowplayer=window.$f=function(){var p=null;var o=arguments[0];if(!arguments.length){m(a,function(){if(this.isLoaded()){p=this;return false}});return p||a[0]}if(arguments.length==1){if(typeof o=="number"){return a[o]}else{if(o=="*"){return new d(a)}m(a,function(){if(this.id()==o.id||this.id()==o||this.getParent()==o){p=this;return false}});return p}}if(arguments.length>1){var r=arguments[1];var q=(arguments.length==3)?arguments[2]:{};if(typeof o=="string"){if(o.indexOf(".")!=-1){var t=[];m(n(o),function(){t.push(new b(this,k(r),k(q)))});return new d(t)}else{var s=c(o);return new b(s!==null?s:o,r,q)}}else{if(o){return new b(o,r,q)}}}return null};i(window.$f,{fireEvent:function(){var o=[].slice.call(arguments);var q=$f(o[0]);return q?q._fireEvent(o.slice(1)):null},addPlugin:function(o,p){b.prototype[o]=p;return $f},each:m,extend:i});if(typeof jQuery=="function"){jQuery.prototype.flowplayer=function(q,p){if(!arguments.length||typeof arguments[0]=="number"){var o=[];this.each(function(){var r=$f(this);if(r){o.push(r)}});return arguments.length?o[arguments[0]]:new d(o)}return this.each(function(){$f(this,k(q),p?k(p):{})})}}})();(function(){var e=typeof jQuery=="function";function i(){if(c.done){return false}var k=document;if(k&&k.getElementsByTagName&&k.getElementById&&k.body){clearInterval(c.timer);c.timer=null;for(var j=0;j<c.ready.length;j++){c.ready[j].call()}c.ready=null;c.done=true}}var c=e?jQuery:function(j){if(c.done){return j()}if(c.timer){c.ready.push(j)}else{c.ready=[j];c.timer=setInterval(i,13)}};function f(k,j){if(j){for(key in j){if(j.hasOwnProperty(key)){k[key]=j[key]}}}return k}function g(j){switch(h(j)){case"string":j=j.replace(new RegExp('(["\\\\])',"g"),"\\$1");j=j.replace(/^\s?(\d+)%/,"$1pct");return'"'+j+'"';case"array":return"["+b(j,function(m){return g(m)}).join(",")+"]";case"function":return'"function()"';case"object":var k=[];for(var l in j){if(j.hasOwnProperty(l)){k.push('"'+l+'":'+g(j[l]))}}return"{"+k.join(",")+"}"}return String(j).replace(/\s/g," ").replace(/\'/g,'"')}function h(k){if(k===null||k===undefined){return false}var j=typeof k;return(j=="object"&&k.push)?"array":j}if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}})}function b(j,m){var l=[];for(var k in j){if(j.hasOwnProperty(k)){l[k]=m(j[k])}}return l}function a(q,s){var o=f({},q);var r=document.all;var m='<object width="'+o.width+'" height="'+o.height+'"';if(r&&!o.id){o.id="_"+(""+Math.random()).substring(9)}if(o.id){m+=' id="'+o.id+'"'}o.src+=((o.src.indexOf("?")!=-1?"&":"?")+Math.random());if(o.w3c||!r){m+=' data="'+o.src+'" type="application/x-shockwave-flash"'}else{m+=' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'}m+=">";if(o.w3c||r){m+='<param name="movie" value="'+o.src+'" />'}o.width=o.height=o.id=o.w3c=o.src=null;for(var j in o){if(o[j]!==null){m+='<param name="'+j+'" value="'+o[j]+'" />'}}var n="";if(s){for(var l in s){if(s[l]!==null){n+=l+"="+(typeof s[l]=="object"?g(s[l]):s[l])+"&"}}n=n.substring(0,n.length-1);m+='<param name="flashvars" value=\''+n+"' />"}m+="</object>";return m}function d(l,o,k){var j=flashembed.getVersion();f(this,{getContainer:function(){return l},getConf:function(){return o},getVersion:function(){return j},getFlashvars:function(){return k},getApi:function(){return l.firstChild},getHTML:function(){return a(o,k)}});var p=o.version;var q=o.expressInstall;var n=!p||flashembed.isSupported(p);if(n){o.onFail=o.version=o.expressInstall=null;l.innerHTML=a(o,k)}else{if(p&&q&&flashembed.isSupported([6,65])){f(o,{src:q});k={MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title};l.innerHTML=a(o,k)}else{if(l.innerHTML.replace(/\s/g,"")!==""){}else{l.innerHTML="<h2>Flash version "+p+" or greater is required</h2><h3>"+(j[0]>0?"Your version is "+j:"You have no flash plugin installed")+"</h3>"+(l.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='http://www.adobe.com/go/getflashplayer'>here</a></p>");if(l.tagName=="A"){l.onclick=function(){location.href="http://www.adobe.com/go/getflashplayer"}}}}}if(!n&&o.onFail){var m=o.onFail.call(this);if(typeof m=="string"){l.innerHTML=m}}if(document.all){window[o.id]=document.getElementById(o.id)}}window.flashembed=function(k,l,j){if(typeof k=="string"){var m=document.getElementById(k);if(m){k=m}else{c(function(){flashembed(k,l,j)});return}}if(!k){return}var n={width:"100%",height:"100%",allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:null,onFail:null,expressInstall:null,w3c:false};if(typeof l=="string"){l={src:l}}f(n,l);return new d(k,n,j)};f(window.flashembed,{getVersion:function(){var l=[0,0];if(navigator.plugins&&typeof navigator.plugins["Shockwave Flash"]=="object"){var k=navigator.plugins["Shockwave Flash"].description;if(typeof k!="undefined"){k=k.replace(/^.*\s+(\S+\s+\S+$)/,"$1");var m=parseInt(k.replace(/^(.*)\..*$/,"$1"),10);var q=/r/.test(k)?parseInt(k.replace(/^.*r(.*)$/,"$1"),10):0;l=[m,q]}}else{if(window.ActiveXObject){try{var o=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(p){try{o=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");l=[6,0];o.AllowScriptAccess="always"}catch(j){if(l[0]==6){return l}}try{o=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(n){}}if(typeof o=="object"){k=o.GetVariable("$version");if(typeof k!="undefined"){k=k.replace(/^\S+\s+(.*)$/,"$1").split(",");l=[parseInt(k[0],10),parseInt(k[2],10)]}}}}return l},isSupported:function(j){var l=flashembed.getVersion();var k=(l[0]>j[0])||(l[0]==j[0]&&l[1]>=j[1]);return k},domReady:c,asString:g,getHTML:a});if(e){jQuery.tools=jQuery.tools||{version:{}};jQuery.tools.version.flashembed="1.0.3";jQuery.fn.flashembed=function(k,j){var l=null;this.each(function(){l=flashembed(this,k,j)});return k.api===false?this:l}}})();/**
 * SWFObject v1.5.1: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
if(typeof deconcept=="undefined"){var deconcept={};}if(typeof deconcept.util=="undefined"){deconcept.util={};}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil={};}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params={};this.variables={};this.attributes=[];if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10]||"";},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15]||"";},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=[];var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+(this.getAttribute("style")||"")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+(this.getAttribute("style")||"")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;/*
 * Ext JS Library 3.0.0
 * Copyright(c) 2006-2009 Ext JS, LLC
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
window.undefined=window.undefined;Ext={version:"3.0"};Ext.apply=function(d,e,b){if(b){Ext.apply(d,b)}if(d&&e&&typeof e=="object"){for(var a in e){d[a]=e[a]}}return d};(function(){var g=0,t=Object.prototype.toString,s=function(e){if(Ext.isArray(e)||e.callee){return true}if(/NodeList|HTMLCollection/.test(t.call(e))){return true}return((e.nextNode||e.item)&&Ext.isNumber(e.length))},u=navigator.userAgent.toLowerCase(),z=function(e){return e.test(u)},i=document,l=i.compatMode=="CSS1Compat",B=z(/opera/),h=z(/chrome/),v=z(/webkit/),y=!h&&z(/safari/),f=y&&z(/applewebkit\/4/),b=y&&z(/version\/3/),C=y&&z(/version\/4/),r=!B&&z(/msie/),p=r&&z(/msie 7/),o=r&&z(/msie 8/),q=r&&!p&&!o,n=!v&&z(/gecko/),d=n&&z(/rv:1\.8/),a=n&&z(/rv:1\.9/),w=r&&!l,A=z(/windows|win32/),k=z(/macintosh|mac os x/),j=z(/adobeair/),m=z(/linux/),c=/^https/i.test(window.location.protocol);if(q){try{i.execCommand("BackgroundImageCache",false,true)}catch(x){}}Ext.apply(Ext,{SSL_SECURE_URL:"javascript:false",isStrict:l,isSecure:c,isReady:false,enableGarbageCollector:true,enableListenerCollection:false,USE_NATIVE_JSON:false,applyIf:function(D,E){if(D){for(var e in E){if(Ext.isEmpty(D[e])){D[e]=E[e]}}}return D},id:function(e,D){return(e=Ext.getDom(e)||{}).id=e.id||(D||"ext-gen")+(++g)},extend:function(){var D=function(F){for(var E in F){this[E]=F[E]}};var e=Object.prototype.constructor;return function(K,H,J){if(Ext.isObject(H)){J=H;H=K;K=J.constructor!=e?J.constructor:function(){H.apply(this,arguments)}}var G=function(){},I,E=H.prototype;G.prototype=E;I=K.prototype=new G();I.constructor=K;K.superclass=E;if(E.constructor==e){E.constructor=H}K.override=function(F){Ext.override(K,F)};I.superclass=I.supr=(function(){return E});I.override=D;Ext.override(K,J);K.extend=function(F){Ext.extend(K,F)};return K}}(),override:function(e,E){if(E){var D=e.prototype;Ext.apply(D,E);if(Ext.isIE&&E.toString!=e.toString){D.toString=E.toString}}},namespace:function(){var D,e;Ext.each(arguments,function(E){e=E.split(".");D=window[e[0]]=window[e[0]]||{};Ext.each(e.slice(1),function(F){D=D[F]=D[F]||{}})});return D},urlEncode:function(I,H){var F,D=[],E,G=encodeURIComponent;for(E in I){F=!Ext.isDefined(I[E]);Ext.each(F?E:I[E],function(J,e){D.push("&",G(E),"=",(J!=E||!F)?G(J):"")})}if(!H){D.shift();H=""}return H+D.join("")},urlDecode:function(E,D){var H={},G=E.split("&"),I=decodeURIComponent,e,F;Ext.each(G,function(J){J=J.split("=");e=I(J[0]);F=I(J[1]);H[e]=D||!H[e]?F:[].concat(H[e]).concat(F)});return H},urlAppend:function(e,D){if(!Ext.isEmpty(D)){return e+(e.indexOf("?")===-1?"?":"&")+D}return e},toArray:function(){return r?function(e,F,D,E){E=[];Ext.each(e,function(G){E.push(G)});return E.slice(F||0,D||E.length)}:function(e,E,D){return Array.prototype.slice.call(e,E||0,D||e.length)}}(),each:function(G,F,E){if(Ext.isEmpty(G,true)){return}if(!s(G)||Ext.isPrimitive(G)){G=[G]}for(var D=0,e=G.length;D<e;D++){if(F.call(E||G[D],G[D],D,G)===false){return D}}},iterate:function(E,D,e){if(s(E)){Ext.each(E,D,e);return}else{if(Ext.isObject(E)){for(var F in E){if(E.hasOwnProperty(F)){if(D.call(e||E,F,E[F])===false){return}}}}}},getDom:function(e){if(!e||!i){return null}return e.dom?e.dom:(Ext.isString(e)?i.getElementById(e):e)},getBody:function(){return Ext.get(i.body||i.documentElement)},removeNode:r?function(){var e;return function(D){if(D&&D.tagName!="BODY"){e=e||i.createElement("div");e.appendChild(D);e.innerHTML=""}}}():function(e){if(e&&e.parentNode&&e.tagName!="BODY"){e.parentNode.removeChild(e)}},isEmpty:function(D,e){return D===null||D===undefined||((Ext.isArray(D)&&!D.length))||(!e?D==="":false)},isArray:function(e){return t.apply(e)==="[object Array]"},isObject:function(e){return e&&typeof e=="object"},isPrimitive:function(e){return Ext.isString(e)||Ext.isNumber(e)||Ext.isBoolean(e)},isFunction:function(e){return t.apply(e)==="[object Function]"},isNumber:function(e){return typeof e==="number"&&isFinite(e)},isString:function(e){return typeof e==="string"},isBoolean:function(e){return typeof e==="boolean"},isDefined:function(e){return typeof e!=="undefined"},isOpera:B,isWebKit:v,isChrome:h,isSafari:y,isSafari3:b,isSafari4:C,isSafari2:f,isIE:r,isIE6:q,isIE7:p,isIE8:o,isGecko:n,isGecko2:d,isGecko3:a,isBorderBox:w,isLinux:m,isWindows:A,isMac:k,isAir:j});Ext.ns=Ext.namespace})();Ext.ns("Ext","Ext.util","Ext.lib","Ext.data");Ext.apply(Function.prototype,{createInterceptor:function(b,a){var c=this;return !Ext.isFunction(b)?this:function(){var e=this,d=arguments;b.target=e;b.method=c;return(b.apply(a||e||window,d)!==false)?c.apply(e||window,d):null}},createCallback:function(){var a=arguments,b=this;return function(){return b.apply(window,a)}},createDelegate:function(c,b,a){var d=this;return function(){var f=b||arguments;if(a===true){f=Array.prototype.slice.call(arguments,0);f=f.concat(b)}else{if(Ext.isNumber(a)){f=Array.prototype.slice.call(arguments,0);var e=[a,0].concat(b);Array.prototype.splice.apply(f,e)}}return d.apply(c||window,f)}},defer:function(c,e,b,a){var d=this.createDelegate(e,b,a);if(c>0){return setTimeout(d,c)}d();return 0}});Ext.applyIf(String,{format:function(b){var a=Ext.toArray(arguments,1);return b.replace(/\{(\d+)\}/g,function(c,d){return a[d]})}});Ext.applyIf(Array.prototype,{indexOf:function(c){for(var b=0,a=this.length;b<a;b++){if(this[b]==c){return b}}return -1},remove:function(b){var a=this.indexOf(b);if(a!=-1){this.splice(a,1)}return this}});Ext.ns("Ext.grid","Ext.dd","Ext.tree","Ext.form","Ext.menu","Ext.state","Ext.layout","Ext.app","Ext.ux","Ext.chart","Ext.direct");Ext.apply(Ext,function(){var b=Ext,a=0;return{emptyFn:function(){},BLANK_IMAGE_URL:Ext.isIE6||Ext.isIE7?"http://extjs.com/s.gif":"data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",extendX:function(c,d){return Ext.extend(c,d(c.prototype))},getDoc:function(){return Ext.get(document)},isDate:function(c){return Object.prototype.toString.apply(c)==="[object Date]"},num:function(d,c){d=Number(d===null||typeof d=="boolean"?NaN:d);return isNaN(d)?c:d},value:function(e,c,d){return Ext.isEmpty(e,d)?c:e},escapeRe:function(c){return c.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},sequence:function(f,c,e,d){f[c]=f[c].createSequence(e,d)},addBehaviors:function(g){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(g)})}else{var d={},f,c,e;for(c in g){if((f=c.split("@"))[1]){e=f[0];if(!d[e]){d[e]=Ext.select(e)}d[e].on(f[1],g[c])}}d=null}},combine:function(){var e=arguments,d=e.length,g=[];for(var f=0;f<d;f++){var c=e[f];if(Ext.isArray(c)){g=g.concat(c)}else{if(c.length!==undefined&&!c.substr){g=g.concat(Array.prototype.slice.call(c,0))}else{g.push(c)}}}return g},copyTo:function(c,d,e){if(typeof e=="string"){e=e.split(/[,;\s]/)}Ext.each(e,function(f){if(d.hasOwnProperty(f)){c[f]=d[f]}},this);return c},destroy:function(){Ext.each(arguments,function(c){if(c){if(Ext.isArray(c)){this.destroy.apply(this,c)}else{if(Ext.isFunction(c.destroy)){c.destroy()}else{if(c.dom){c.remove()}}}}},this)},destroyMembers:function(j,g,e,f){for(var h=1,d=arguments,c=d.length;h<c;h++){Ext.destroy(j[d[h]]);delete j[d[h]]}},clean:function(c){var d=[];Ext.each(c,function(e){if(!!e){d.push(e)}});return d},unique:function(c){var d=[],e={};Ext.each(c,function(f){if(!e[f]){d.push(f)}e[f]=true});return d},flatten:function(c){var e=[];function d(f){Ext.each(f,function(g){if(Ext.isArray(g)){d(g)}else{e.push(g)}});return e}return d(c)},min:function(c,d){var e=c[0];d=d||function(g,f){return g<f?-1:1};Ext.each(c,function(f){e=d(e,f)==-1?e:f});return e},max:function(c,d){var e=c[0];d=d||function(g,f){return g>f?1:-1};Ext.each(c,function(f){e=d(e,f)==1?e:f});return e},mean:function(c){return Ext.sum(c)/c.length},sum:function(c){var d=0;Ext.each(c,function(e){d+=e});return d},partition:function(c,d){var e=[[],[]];Ext.each(c,function(g,h,f){e[(d&&d(g,h,f))||(!d&&g)?0:1].push(g)});return e},invoke:function(c,d){var f=[],e=Array.prototype.slice.call(arguments,2);Ext.each(c,function(g,h){if(g&&typeof g[d]=="function"){f.push(g[d].apply(g,e))}else{f.push(undefined)}});return f},pluck:function(c,e){var d=[];Ext.each(c,function(f){d.push(f[e])});return d},zip:function(){var l=Ext.partition(arguments,function(i){return !Ext.isFunction(i)}),g=l[0],k=l[1][0],c=Ext.max(Ext.pluck(g,"length")),f=[];for(var h=0;h<c;h++){f[h]=[];if(k){f[h]=k.apply(k,Ext.pluck(g,h))}else{for(var e=0,d=g.length;e<d;e++){f[h].push(g[e][h])}}}return f},getCmp:function(c){return Ext.ComponentMgr.get(c)},useShims:b.isIE6||(b.isMac&&b.isGecko2),type:function(d){if(d===undefined||d===null){return false}if(d.htmlElement){return"element"}var c=typeof d;if(c=="object"&&d.nodeName){switch(d.nodeType){case 1:return"element";case 3:return(/\S/).test(d.nodeValue)?"textnode":"whitespace"}}if(c=="object"||c=="function"){switch(d.constructor){case Array:return"array";case RegExp:return"regexp";case Date:return"date"}if(typeof d.length=="number"&&typeof d.item=="function"){return"nodelist"}}return c},intercept:function(f,c,e,d){f[c]=f[c].createInterceptor(e,d)},callback:function(c,f,e,d){if(Ext.isFunction(c)){if(d){c.defer(d,f,e||[])}else{c.apply(f,e||[])}}}}}());Ext.apply(Function.prototype,{createSequence:function(b,a){var c=this;return !Ext.isFunction(b)?this:function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}}});Ext.applyIf(String,{escape:function(a){return a.replace(/('|\\)/g,"\\$1")},leftPad:function(d,b,c){var a=String(d);if(!c){c=" "}while(a.length<b){a=c+a}return a}});String.prototype.toggle=function(b,a){return this==b?a:b};String.prototype.trim=function(){var a=/^\s+|\s+$/g;return function(){return this.replace(a,"")}}();Date.prototype.getElapsed=function(a){return Math.abs((a||new Date()).getTime()-this.getTime())};Ext.applyIf(Number.prototype,{constrain:function(b,a){return Math.min(Math.max(this,b),a)}});Ext.util.TaskRunner=function(e){e=e||10;var f=[],a=[],b=0,g=false,d=function(){g=false;clearInterval(b);b=0},h=function(){if(!g){g=true;b=setInterval(i,e)}},c=function(j){a.push(j);if(j.onStop){j.onStop.apply(j.scope||j)}},i=function(){var l=a.length,n=new Date().getTime();if(l>0){for(var p=0;p<l;p++){f.remove(a[p])}a=[];if(f.length<1){d();return}}for(var p=0,o,k,m,j=f.length;p<j;++p){o=f[p];k=n-o.taskRunTime;if(o.interval<=k){m=o.run.apply(o.scope||o,o.args||[++o.taskRunCount]);o.taskRunTime=n;if(m===false||o.taskRunCount===o.repeat){c(o);return}}if(o.duration&&o.duration<=(n-o.taskStartTime)){c(o)}}};this.start=function(j){f.push(j);j.taskStartTime=new Date().getTime();j.taskRunTime=0;j.taskRunCount=0;h();return j};this.stop=function(j){c(j);return j};this.stopAll=function(){d();for(var k=0,j=f.length;k<j;k++){if(f[k].onStop){f[k].onStop()}}f=[];a=[]}};Ext.TaskMgr=new Ext.util.TaskRunner();(function(){var b;function c(d){if(!b){b=new Ext.Element.Flyweight()}b.dom=d;return b}(function(){var f=document,d=f.compatMode=="CSS1Compat",e=Math.max,g=parseInt;Ext.lib.Dom={isAncestor:function(i,j){var h=false;i=Ext.getDom(i);j=Ext.getDom(j);if(i&&j){if(i.contains){return i.contains(j)}else{if(i.compareDocumentPosition){return !!(i.compareDocumentPosition(j)&16)}else{while(j=j.parentNode){h=j==i||h}}}}return h},getViewWidth:function(h){return h?this.getDocumentWidth():this.getViewportWidth()},getViewHeight:function(h){return h?this.getDocumentHeight():this.getViewportHeight()},getDocumentHeight:function(){return e(!d?f.body.scrollHeight:f.documentElement.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return e(!d?f.body.scrollWidth:f.documentElement.scrollWidth,this.getViewportWidth())},getViewportHeight:function(){return Ext.isIE?(Ext.isStrict?f.documentElement.clientHeight:f.body.clientHeight):self.innerHeight},getViewportWidth:function(){return !Ext.isStrict&&!Ext.isOpera?f.body.clientWidth:Ext.isIE?f.documentElement.clientWidth:self.innerWidth},getY:function(h){return this.getXY(h)[1]},getX:function(h){return this.getXY(h)[0]},getXY:function(j){var i,o,r,u,k,l,t=0,q=0,s,h,m=(f.body||f.documentElement),n=[0,0];j=Ext.getDom(j);if(j!=m){if(j.getBoundingClientRect){r=j.getBoundingClientRect();s=c(document).getScroll();n=[r.left+s.left,r.top+s.top]}else{i=j;h=c(j).isStyle("position","absolute");while(i){o=c(i);t+=i.offsetLeft;q+=i.offsetTop;h=h||o.isStyle("position","absolute");if(Ext.isGecko){q+=u=g(o.getStyle("borderTopWidth"),10)||0;t+=k=g(o.getStyle("borderLeftWidth"),10)||0;if(i!=j&&!o.isStyle("overflow","visible")){t+=k;q+=u}}i=i.offsetParent}if(Ext.isSafari&&h){t-=m.offsetLeft;q-=m.offsetTop}if(Ext.isGecko&&!h){l=c(m);t+=g(l.getStyle("borderLeftWidth"),10)||0;q+=g(l.getStyle("borderTopWidth"),10)||0}i=j.parentNode;while(i&&i!=m){if(!Ext.isOpera||(i.tagName!="TR"&&!c(i).isStyle("display","inline"))){t-=i.scrollLeft;q-=i.scrollTop}i=i.parentNode}n=[t,q]}}return n},setXY:function(i,j){(i=Ext.fly(i,"_setXY")).position();var k=i.translatePoints(j),h=i.dom.style,l;for(l in k){if(!isNaN(k[l])){h[l]=k[l]+"px"}}},setX:function(i,h){this.setXY(i,[h,false])},setY:function(h,i){this.setXY(h,[false,i])}}})();Ext.lib.Dom.getRegion=function(d){return Ext.lib.Region.getRegion(d)};Ext.lib.Event=function(){var y=false,w=[],g=[],D=0,q=[],d,G=false,k=window,K=document,l=200,t=20,E=0,s=1,i=2,m=3,u=3,z=4,v="scrollLeft",r="scrollTop",f="unload",B="mouseover",J="mouseout",e=function(){var L;if(k.addEventListener){L=function(P,N,O,M){if(N=="mouseenter"){O=O.createInterceptor(o);P.addEventListener(B,O,(M))}else{if(N=="mouseleave"){O=O.createInterceptor(o);P.addEventListener(J,O,(M))}else{P.addEventListener(N,O,(M))}}return O}}else{if(k.attachEvent){L=function(P,N,O,M){P.attachEvent("on"+N,O);return O}}else{L=function(){}}}return L}(),h=function(){var L;if(k.removeEventListener){L=function(P,N,O,M){if(N=="mouseenter"){N=B}else{if(N=="mouseleave"){N=J}}P.removeEventListener(N,O,(M))}}else{if(k.detachEvent){L=function(O,M,N){O.detachEvent("on"+M,N)}}else{L=function(){}}}return L}();var F=Ext.isGecko?function(L){return Object.prototype.toString.call(L)=="[object XULElement]"}:function(){};var p=Ext.isGecko?function(L){try{return L.nodeType==3}catch(M){return false}}:function(L){return L.nodeType==3};function o(M){var L=A.getRelatedTarget(M);return !(F(L)||x(M.currentTarget,L))}function x(L,N){if(L&&L.firstChild){while(N){if(N===L){return true}try{N=N.parentNode}catch(M){return false}if(N&&(N.nodeType!=1)){N=null}}}return false}function C(O,L,N){var M=-1;Ext.each(w,function(P,Q){if(P&&P[i]==N&&P[E]==O&&P[s]==L){M=Q}});return M}function H(){var L=false,O=[],M,N=!y||(D>0);if(!G){G=true;Ext.each(q,function(Q,R,P){if(Q&&(M=K.getElementById(Q.id))){if(!Q.checkReady||y||M.nextSibling||(K&&K.body)){M=Q.override?(Q.override===true?Q.obj:Q.override):M;Q.fn.call(M,Q.obj);q[R]=null}else{O.push(Q)}}});D=(O.length===0)?0:D-1;if(N){n()}else{clearInterval(d);d=null}L=!(G=false)}return L}function n(){if(!d){var L=function(){H()};d=setInterval(L,t)}}function I(){var L=K.documentElement,M=K.body;if(L&&(L[r]||L[v])){return[L[v],L[r]]}else{if(M){return[M[v],M[r]]}else{return[0,0]}}}function j(L,M){L=L.browserEvent||L;var N=L["page"+M];if(!N&&N!==0){N=L["client"+M]||0;if(Ext.isIE){N+=I()[M=="X"?0:1]}}return N}var A={onAvailable:function(N,L,O,M){q.push({id:N,fn:L,obj:O,override:M,checkReady:false});D=l;n()},addListener:function(O,L,N){var M;O=Ext.getDom(O);if(O&&N){if(f==L){M=!!(g[g.length]=[O,L,N])}else{w.push([O,L,N,M=e(O,L,N,false)])}}return !!M},removeListener:function(Q,M,P){var O=false,N,L;Q=Ext.getDom(Q);if(!P){O=this.purgeElement(Q,false,M)}else{if(f==M){Ext.each(g,function(S,T,R){if(S&&S[0]==Q&&S[1]==M&&S[2]==P){g.splice(T,1);O=true}})}else{N=arguments[3]||C(Q,M,P);L=w[N];if(Q&&L){h(Q,M,L[m],false);L[m]=L[i]=null;w.splice(N,1);O=true}}}return O},getTarget:function(L){L=L.browserEvent||L;return this.resolveTextNode(L.target||L.srcElement)},resolveTextNode:function(L){return L&&!F(L)&&p(L)?L.parentNode:L},getRelatedTarget:function(L){L=L.browserEvent||L;return this.resolveTextNode(L.relatedTarget||(L.type==J?L.toElement:L.type==B?L.fromElement:null))},getPageX:function(L){return j(L,"X")},getPageY:function(L){return j(L,"Y")},getXY:function(L){return[this.getPageX(L),this.getPageY(L)]},stopEvent:function(L){this.stopPropagation(L);this.preventDefault(L)},stopPropagation:function(L){L=L.browserEvent||L;if(L.stopPropagation){L.stopPropagation()}else{L.cancelBubble=true}},preventDefault:function(L){L=L.browserEvent||L;if(L.preventDefault){L.preventDefault()}else{L.returnValue=false}},getEvent:function(L){L=L||k.event;if(!L){var M=this.getEvent.caller;while(M){L=M.arguments[0];if(L&&Event==L.constructor){break}M=M.caller}}return L},getCharCode:function(L){L=L.browserEvent||L;return L.charCode||L.keyCode||0},_load:function(M){y=true;var L=Ext.lib.Event;if(Ext.isIE&&M!==true){h(k,"load",arguments.callee)}},purgeElement:function(M,O,L){var N=this;Ext.each(N.getListeners(M,L),function(P){if(P){N.removeListener(M,P.type,P.fn)}});if(O&&M&&M.childNodes){Ext.each(M.childNodes,function(P){N.purgeElement(P,O,L)})}},getListeners:function(O,M){var P=this,N=[],L;if(M){L=M==f?g:w}else{L=w.concat(g)}Ext.each(L,function(Q,R){if(Q&&Q[E]==O&&(!M||M==Q[s])){N.push({type:Q[s],fn:Q[i],obj:Q[u],adjust:Q[z],index:R})}});return N.length?N:null},_unload:function(S){var R=Ext.lib.Event,P,O,M,L,N,Q;Ext.each(g,function(T){if(T){try{Q=T[z]?(T[z]===true?T[u]:T[z]):k;T[i].call(Q,R.getEvent(S),T[u])}catch(U){}}});g=null;if(w&&(O=w.length)){while(O){if((M=w[N=--O])){R.removeListener(M[E],M[s],M[i],N)}}}h(k,f,R._unload)}};A.on=A.addListener;A.un=A.removeListener;if(K&&K.body){A._load(true)}else{e(k,"load",A._load)}e(k,f,A._unload);H();return A}();Ext.lib.Ajax=function(){var g=["MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"],d="Content-Type";function h(s){var r=s.conn,t;function q(u,v){for(t in v){if(v.hasOwnProperty(t)){u.setRequestHeader(t,v[t])}}}if(k.defaultHeaders){q(r,k.defaultHeaders)}if(k.headers){q(r,k.headers);k.headers=null}}function e(t,s,r,q){return{tId:t,status:r?-1:0,statusText:r?"transaction aborted":"communication failure",isAbort:true,isTimeout:true,argument:s}}function j(q,r){(k.headers=k.headers||{})[q]=r}function o(z,x){var r={},v,w=z.conn,q,u;try{v=z.conn.getAllResponseHeaders();Ext.each(v.replace(/\r\n/g,"\n").split("\n"),function(s){q=s.indexOf(":");if(q>=0){u=s.substr(0,q).toLowerCase();if(s.charAt(q+1)==" "){++q}r[u]=s.substr(q+1)}})}catch(y){}return{tId:z.tId,status:w.status,statusText:w.statusText,getResponseHeader:function(s){return r[s.toLowerCase()]},getAllResponseHeaders:function(){return v},responseText:w.responseText,responseXML:w.responseXML,argument:x}}function n(q){q.conn=null;q=null}function f(v,w,r,q){if(!w){n(v);return}var t,s;try{if(v.conn.status!==undefined&&v.conn.status!=0){t=v.conn.status}else{t=13030}}catch(u){t=13030}if((t>=200&&t<300)||(Ext.isIE&&t==1223)){s=o(v,w.argument);if(w.success){if(!w.scope){w.success(s)}else{w.success.apply(w.scope,[s])}}}else{switch(t){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:s=e(v.tId,w.argument,(r?r:false),q);if(w.failure){if(!w.scope){w.failure(s)}else{w.failure.apply(w.scope,[s])}}break;default:s=o(v,w.argument);if(w.failure){if(!w.scope){w.failure(s)}else{w.failure.apply(w.scope,[s])}}}}n(v);s=null}function m(s,v){v=v||{};var q=s.conn,u=s.tId,r=k.poll,t=v.timeout||null;if(t){k.timeout[u]=setTimeout(function(){k.abort(s,v,true)},t)}r[u]=setInterval(function(){if(q&&q.readyState==4){clearInterval(r[u]);r[u]=null;if(t){clearTimeout(k.timeout[u]);k.timeout[u]=null}f(s,v)}},k.pollInterval)}function i(u,r,t,q){var s=l()||null;if(s){s.conn.open(u,r,true);if(k.useDefaultXhrHeader){j("X-Requested-With",k.defaultXhrHeader)}if(q&&k.useDefaultHeader&&(!k.headers||!k.headers[d])){j(d,k.defaultPostHeader)}if(k.defaultHeaders||k.headers){h(s)}m(s,t);s.conn.send(q||null)}return s}function l(){var r;try{if(r=p(k.transactionId)){k.transactionId++}}catch(q){}finally{return r}}function p(t){var q;try{q=new XMLHttpRequest()}catch(s){for(var r=0;r<g.length;++r){try{q=new ActiveXObject(g[r]);break}catch(s){}}}finally{return{conn:q,tId:t}}}var k={request:function(q,s,t,u,y){if(y){var v=this,r=y.xmlData,w=y.jsonData,x;Ext.applyIf(v,y);if(r||w){x=v.headers;if(!x||!x[d]){j(d,r?"text/xml":"application/json")}u=r||(Ext.isObject(w)?Ext.encode(w):w)}}return i(q||y.method||"POST",s,t,u)},serializeForm:function(r){var s=r.elements||(document.forms[r]||Ext.getDom(r)).elements,y=false,x=encodeURIComponent,v,z,q,t,u="",w;Ext.each(s,function(A){q=A.name;w=A.type;if(!A.disabled&&q){if(/select-(one|multiple)/i.test(w)){Ext.each(A.options,function(B){if(B.selected){u+=String.format("{0}={1}&",x(q),(B.hasAttribute?B.hasAttribute("value"):B.getAttributeNode("value").specified)?B.value:B.text)}})}else{if(!/file|undefined|reset|button/i.test(w)){if(!(/radio|checkbox/i.test(w)&&!A.checked)&&!(w=="submit"&&y)){u+=x(q)+"="+x(A.value)+"&";y=/submit/i.test(w)}}}}});return u.substr(0,u.length-1)},useDefaultHeader:true,defaultPostHeader:"application/x-www-form-urlencoded; charset=UTF-8",useDefaultXhrHeader:true,defaultXhrHeader:"XMLHttpRequest",poll:{},timeout:{},pollInterval:50,transactionId:0,abort:function(t,v,q){var s=this,u=t.tId,r=false;if(s.isCallInProgress(t)){t.conn.abort();clearInterval(s.poll[u]);s.poll[u]=null;if(q){s.timeout[u]=null}f(t,v,(r=true),q)}return r},isCallInProgress:function(q){return q.conn&&!{0:true,4:true}[q.conn.readyState]}};return k}();Ext.lib.Region=function(f,h,d,e){var g=this;g.top=f;g[1]=f;g.right=h;g.bottom=d;g.left=e;g[0]=e};Ext.lib.Region.prototype={contains:function(e){var d=this;return(e.left>=d.left&&e.right<=d.right&&e.top>=d.top&&e.bottom<=d.bottom)},getArea:function(){var d=this;return((d.bottom-d.top)*(d.right-d.left))},intersect:function(i){var h=this,f=Math.max(h.top,i.top),g=Math.min(h.right,i.right),d=Math.min(h.bottom,i.bottom),e=Math.max(h.left,i.left);if(d>=f&&g>=e){return new Ext.lib.Region(f,g,d,e)}},union:function(i){var h=this,f=Math.min(h.top,i.top),g=Math.max(h.right,i.right),d=Math.max(h.bottom,i.bottom),e=Math.min(h.left,i.left);return new Ext.lib.Region(f,g,d,e)},constrainTo:function(e){var d=this;d.top=d.top.constrain(e.top,e.bottom);d.bottom=d.bottom.constrain(e.top,e.bottom);d.left=d.left.constrain(e.left,e.right);d.right=d.right.constrain(e.left,e.right);return d},adjust:function(f,e,d,h){var g=this;g.top+=f;g.left+=e;g.right+=h;g.bottom+=d;return g}};Ext.lib.Region.getRegion=function(g){var i=Ext.lib.Dom.getXY(g),f=i[1],h=i[0]+g.offsetWidth,d=i[1]+g.offsetHeight,e=i[0];return new Ext.lib.Region(f,h,d,e)};Ext.lib.Point=function(d,f){if(Ext.isArray(d)){f=d[1];d=d[0]}var e=this;e.x=e.right=e.left=e[0]=d;e.y=e.top=e.bottom=e[1]=f};Ext.lib.Point.prototype=new Ext.lib.Region();(function(){var g=Ext.lib,i=/width|height|opacity|padding/i,f=/^((width|height)|(top|left))$/,d=/width|height|top$|bottom$|left$|right$/i,h=/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i,j=function(k){return typeof k!=="undefined"},e=function(){return new Date()};g.Anim={motion:function(n,l,o,p,k,m){return this.run(n,l,o,p,k,m,Ext.lib.Motion)},run:function(o,l,q,r,k,n,m){m=m||Ext.lib.AnimBase;if(typeof r=="string"){r=Ext.lib.Easing[r]}var p=new m(o,l,q,r);p.animateX(function(){if(Ext.isFunction(k)){k.call(n)}});return p}};g.AnimBase=function(l,k,m,n){if(l){this.init(l,k,m,n)}};g.AnimBase.prototype={doMethod:function(k,n,l){var m=this;return m.method(m.curFrame,n,l-n,m.totalFrames)},setAttr:function(k,m,l){if(i.test(k)&&m<0){m=0}Ext.fly(this.el,"_anim").setStyle(k,m+l)},getAttr:function(k){var m=Ext.fly(this.el),n=m.getStyle(k),l=f.exec(k)||[];if(n!=="auto"&&!h.test(n)){return parseFloat(n)}return(!!(l[2])||(m.getStyle("position")=="absolute"&&!!(l[3])))?m.dom["offset"+l[0].charAt(0).toUpperCase()+l[0].substr(1)]:0},getDefaultUnit:function(k){return d.test(k)?"px":""},animateX:function(n,k){var l=this,m=function(){l.onComplete.removeListener(m);if(Ext.isFunction(n)){n.call(k||l,l)}};l.onComplete.addListener(m,l);l.animate()},setRunAttr:function(n){var p=this,q=this.attributes[n],r=q.to,o=q.by,s=q.from,t=q.unit,l=(this.runAttrs[n]={}),m;if(!j(r)&&!j(o)){return false}var k=j(s)?s:p.getAttr(n);if(j(r)){m=r}else{if(j(o)){if(Ext.isArray(k)){m=[];Ext.each(k,function(u,w){m[w]=u+o[w]})}else{m=k+o}}}Ext.apply(l,{start:k,end:m,unit:j(t)?t:p.getDefaultUnit(n)})},init:function(l,p,o,k){var r=this,n=0,s=g.AnimMgr;Ext.apply(r,{isAnimated:false,startTime:null,el:Ext.getDom(l),attributes:p||{},duration:o||1,method:k||g.Easing.easeNone,useSec:true,curFrame:0,totalFrames:s.fps,runAttrs:{},animate:function(){var u=this,v=u.duration;if(u.isAnimated){return false}u.curFrame=0;u.totalFrames=u.useSec?Math.ceil(s.fps*v):v;s.registerElement(u)},stop:function(u){var v=this;if(u){v.curFrame=v.totalFrames;v._onTween.fire()}s.stop(v)}});var t=function(){var v=this,u;v.onStart.fire();v.runAttrs={};for(u in this.attributes){this.setRunAttr(u)}v.isAnimated=true;v.startTime=e();n=0};var q=function(){var v=this;v.onTween.fire({duration:e()-v.startTime,curFrame:v.curFrame});var w=v.runAttrs;for(var u in w){this.setAttr(u,v.doMethod(u,w[u].start,w[u].end),w[u].unit)}++n};var m=function(){var u=this,w=(e()-u.startTime)/1000,v={duration:w,frames:n,fps:n/w};u.isAnimated=false;n=0;u.onComplete.fire(v)};r.onStart=new Ext.util.Event(r);r.onTween=new Ext.util.Event(r);r.onComplete=new Ext.util.Event(r);(r._onStart=new Ext.util.Event(r)).addListener(t);(r._onTween=new Ext.util.Event(r)).addListener(q);(r._onComplete=new Ext.util.Event(r)).addListener(m)}};Ext.lib.AnimMgr=new function(){var o=this,m=null,l=[],k=0;Ext.apply(o,{fps:1000,delay:1,registerElement:function(q){l.push(q);++k;q._onStart.fire();o.start()},unRegister:function(r,q){r._onComplete.fire();q=q||p(r);if(q!=-1){l.splice(q,1)}if(--k<=0){o.stop()}},start:function(){if(m===null){m=setInterval(o.run,o.delay)}},stop:function(s){if(!s){clearInterval(m);for(var r=0,q=l.length;r<q;++r){if(l[0].isAnimated){o.unRegister(l[0],0)}}l=[];m=null;k=0}else{o.unRegister(s)}},run:function(){var q;Ext.each(l,function(r){if(r&&r.isAnimated){q=r.totalFrames;if(r.curFrame<q||q===null){++r.curFrame;if(r.useSec){n(r)}r._onTween.fire()}else{o.stop(r)}}},o)}});var p=function(r){var q=-1;Ext.each(l,function(t,s){if(t==r){q=s;return false}});return q};var n=function(r){var v=r.totalFrames,u=r.curFrame,t=r.duration,s=(u*t*1000/v),q=(e()-r.startTime),w=0;if(q<t*1000){w=Math.round((q/s-1)*u)}else{w=v-(u+1)}if(w>0&&isFinite(w)){if(r.curFrame+w>=v){w=v-(u+1)}r.curFrame+=w}}};g.Bezier=new function(){this.getPosition=function(p,o){var r=p.length,m=[],q=1-o,l,k;for(l=0;l<r;++l){m[l]=[p[l][0],p[l][1]]}for(k=1;k<r;++k){for(l=0;l<r-k;++l){m[l][0]=q*m[l][0]+o*m[parseInt(l+1,10)][0];m[l][1]=q*m[l][1]+o*m[parseInt(l+1,10)][1]}}return[m[0][0],m[0][1]]}};g.Easing={easeNone:function(l,k,n,m){return n*l/m+k},easeIn:function(l,k,n,m){return n*(l/=m)*l+k},easeOut:function(l,k,n,m){return -n*(l/=m)*(l-2)+k}};(function(){g.Motion=function(p,o,q,r){if(p){g.Motion.superclass.constructor.call(this,p,o,q,r)}};Ext.extend(g.Motion,Ext.lib.AnimBase);var n=g.Motion.superclass,m=g.Motion.prototype,l=/^points$/i;Ext.apply(g.Motion.prototype,{setAttr:function(o,s,r){var q=this,p=n.setAttr;if(l.test(o)){r=r||"px";p.call(q,"left",s[0],r);p.call(q,"top",s[1],r)}else{p.call(q,o,s,r)}},getAttr:function(o){var q=this,p=n.getAttr;return l.test(o)?[p.call(q,"left"),p.call(q,"top")]:p.call(q,o)},doMethod:function(o,r,p){var q=this;return l.test(o)?g.Bezier.getPosition(q.runAttrs[o],q.method(q.curFrame,0,100,q.totalFrames)/100):n.doMethod.call(q,o,r,p)},setRunAttr:function(v){if(l.test(v)){var x=this,q=this.el,A=this.attributes.points,t=A.control||[],y=A.from,z=A.to,w=A.by,B=g.Dom,p,s,r,u,o;if(t.length>0&&!Ext.isArray(t[0])){t=[t]}else{}Ext.fly(q,"_anim").position();B.setXY(q,j(y)?y:B.getXY(q));p=x.getAttr("points");if(j(z)){r=k.call(x,z,p);for(s=0,u=t.length;s<u;++s){t[s]=k.call(x,t[s],p)}}else{if(j(w)){r=[p[0]+w[0],p[1]+w[1]];for(s=0,u=t.length;s<u;++s){t[s]=[p[0]+t[s][0],p[1]+t[s][1]]}}}o=this.runAttrs[v]=[p];if(t.length>0){o=o.concat(t)}o[o.length]=r}else{n.setRunAttr.call(this,v)}}});var k=function(o,q){var p=g.Dom.getXY(this.el);return[o[0]-p[0]+q[0],o[1]-p[1]+q[1]]}})()})();(function(){var d=Math.abs,i=Math.PI,h=Math.asin,g=Math.pow,e=Math.sin,f=Ext.lib;Ext.apply(f.Easing,{easeBoth:function(k,j,m,l){return((k/=l/2)<1)?m/2*k*k+j:-m/2*((--k)*(k-2)-1)+j},easeInStrong:function(k,j,m,l){return m*(k/=l)*k*k*k+j},easeOutStrong:function(k,j,m,l){return -m*((k=k/l-1)*k*k*k-1)+j},easeBothStrong:function(k,j,m,l){return((k/=l/2)<1)?m/2*k*k*k*k+j:-m/2*((k-=2)*k*k*k-2)+j},elasticIn:function(l,j,q,o,k,n){if(l==0||(l/=o)==1){return l==0?j:j+q}n=n||(o*0.3);var m;if(k>=d(q)){m=n/(2*i)*h(q/k)}else{k=q;m=n/4}return -(k*g(2,10*(l-=1))*e((l*o-m)*(2*i)/n))+j},elasticOut:function(l,j,q,o,k,n){if(l==0||(l/=o)==1){return l==0?j:j+q}n=n||(o*0.3);var m;if(k>=d(q)){m=n/(2*i)*h(q/k)}else{k=q;m=n/4}return k*g(2,-10*l)*e((l*o-m)*(2*i)/n)+q+j},elasticBoth:function(l,j,q,o,k,n){if(l==0||(l/=o/2)==2){return l==0?j:j+q}n=n||(o*(0.3*1.5));var m;if(k>=d(q)){m=n/(2*i)*h(q/k)}else{k=q;m=n/4}return l<1?-0.5*(k*g(2,10*(l-=1))*e((l*o-m)*(2*i)/n))+j:k*g(2,-10*(l-=1))*e((l*o-m)*(2*i)/n)*0.5+q+j},backIn:function(k,j,n,m,l){l=l||1.70158;return n*(k/=m)*k*((l+1)*k-l)+j},backOut:function(k,j,n,m,l){if(!l){l=1.70158}return n*((k=k/m-1)*k*((l+1)*k+l)+1)+j},backBoth:function(k,j,n,m,l){l=l||1.70158;return((k/=m/2)<1)?n/2*(k*k*(((l*=(1.525))+1)*k-l))+j:n/2*((k-=2)*k*(((l*=(1.525))+1)*k+l)+2)+j},bounceIn:function(k,j,m,l){return m-f.Easing.bounceOut(l-k,0,m,l)+j},bounceOut:function(k,j,m,l){if((k/=l)<(1/2.75)){return m*(7.5625*k*k)+j}else{if(k<(2/2.75)){return m*(7.5625*(k-=(1.5/2.75))*k+0.75)+j}else{if(k<(2.5/2.75)){return m*(7.5625*(k-=(2.25/2.75))*k+0.9375)+j}}}return m*(7.5625*(k-=(2.625/2.75))*k+0.984375)+j},bounceBoth:function(k,j,m,l){return(k<l/2)?f.Easing.bounceIn(k*2,0,m,l)*0.5+j:f.Easing.bounceOut(k*2-l,0,m,l)*0.5+m*0.5+j}})})();(function(){var h=Ext.lib;h.Anim.color=function(p,n,q,r,m,o){return h.Anim.run(p,n,q,r,m,o,h.ColorAnim)};h.ColorAnim=function(n,m,o,p){h.ColorAnim.superclass.constructor.call(this,n,m,o,p)};Ext.extend(h.ColorAnim,h.AnimBase);var j=h.ColorAnim.superclass,i=/color$/i,f=/^transparent|rgba\(0, 0, 0, 0\)$/,l=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,d=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,e=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i,g=function(m){return typeof m!=="undefined"};function k(n){var p=parseInt,o,m=null,q;if(n.length==3){return n}Ext.each([d,l,e],function(s,r){o=(r%2==0)?16:10;q=s.exec(n);if(q&&q.length==4){m=[p(q[1],o),p(q[2],o),p(q[3],o)];return false}});return m}Ext.apply(h.ColorAnim.prototype,{getAttr:function(m){var o=this,n=o.el,p;if(i.test(m)){while(n&&f.test(p=Ext.fly(n).getStyle(m))){n=n.parentNode;p="fff"}}else{p=j.getAttr.call(o,m)}return p},doMethod:function(m,r,n){var p=this,q,o=Math.floor;if(i.test(m)){q=[];Ext.each(r,function(s,t){q[t]=j.doMethod.call(p,m,s,n[t])});q="rgb("+o(q[0])+","+o(q[1])+","+o(q[2])+")"}else{q=j.doMethod.call(p,m,r,n)}return q},setRunAttr:function(m){var p=this,o=p.attributes[m],t=o.to,q=o.by,r;j.setRunAttr.call(p,m);r=p.runAttrs[m];if(i.test(m)){var s=k(r.start),n=k(r.end);if(!g(t)&&g(q)){n=k(q);Ext.each(s,function(v,u){n[u]=v+n[u]})}r.start=s;r.end=n}}})})();(function(){var d=Ext.lib;d.Anim.scroll=function(j,h,k,l,g,i){return d.Anim.run(j,h,k,l,g,i,d.Scroll)};d.Scroll=function(h,g,i,j){if(h){d.Scroll.superclass.constructor.call(this,h,g,i,j)}};Ext.extend(d.Scroll,d.ColorAnim);var f=d.Scroll.superclass,e="scroll";Ext.apply(d.Scroll.prototype,{doMethod:function(g,m,h){var k,j=this,l=j.curFrame,i=j.totalFrames;if(g==e){k=[j.method(l,m[0],h[0]-m[0],i),j.method(l,m[1],h[1]-m[1],i)]}else{k=f.doMethod.call(j,g,m,h)}return k},getAttr:function(g){var h=this;if(g==e){return[h.el.scrollLeft,h.el.scrollTop]}else{return f.getAttr.call(h,g)}},setAttr:function(g,j,i){var h=this;if(g==e){h.el.scrollLeft=j[0];h.el.scrollTop=j[1]}else{f.setAttr.call(h,g,j,i)}}})})();if(Ext.isIE){function a(){var d=Function.prototype;delete d.createSequence;delete d.defer;delete d.createDelegate;delete d.createCallback;delete d.createInterceptor;window.detachEvent("onunload",a)}window.attachEvent("onunload",a)}})();/*
 * Ext JS Library 3.0.0
 * Copyright(c) 2006-2009 Ext JS, LLC
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
Ext.DomHelper=function(){var s=null,j=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,l=/^table|tbody|tr|td$/i,p,m="afterbegin",n="afterend",c="beforebegin",o="beforeend",a="<table>",h="</table>",b=a+"<tbody>",i="</tbody>"+h,k=b+"<tr>",r="</tr>"+i;function g(w,y,x,z,v,t){var u=p.insertHtml(z,Ext.getDom(w),q(y));return x?Ext.get(u,true):u}function q(y){var v="",u,x,w,t,z;if(typeof y=="string"){v=y}else{if(Ext.isArray(y)){Ext.each(y,function(A){v+=q(A)})}else{v+="<"+(y.tag=y.tag||"div");Ext.iterate(y,function(A,B){if(!/tag|children|cn|html$/i.test(A)){if(Ext.isObject(B)){v+=" "+A+"='";Ext.iterate(B,function(D,C){v+=D+":"+C+";"});v+="'"}else{v+=" "+({cls:"class",htmlFor:"for"}[A]||A)+"='"+B+"'"}}});if(j.test(y.tag)){v+="/>"}else{v+=">";if((z=y.children||y.cn)){v+=q(z)}else{if(y.html){v+=y.html}}v+="</"+y.tag+">"}}}return v}function e(y,w,v,x){s.innerHTML=[w,v,x].join("");var t=-1,u=s;while(++t<y){u=u.firstChild}return u}function d(t,u,w,v){var x,y;s=s||document.createElement("div");if(t=="td"&&(u==m||u==o)||!/td|tr|tbody/i.test(t)&&(u==c||u==n)){return}y=u==c?w:u==n?w.nextSibling:u==m?w.firstChild:null;if(u==c||u==n){w=w.parentNode}if(t=="td"||(t=="tr"&&(u==o||u==m))){x=e(4,k,v,r)}else{if((t=="tbody"&&(u==o||u==m))||(t=="tr"&&(u==c||u==n))){x=e(3,b,v,i)}else{x=e(2,a,v,h)}}w.insertBefore(x,y);return x}p={markup:function(t){return q(t)},insertHtml:function(y,t,z){var x={},v,B,A,C,w,u;y=y.toLowerCase();x[c]=["BeforeBegin","previousSibling"];x[n]=["AfterEnd","nextSibling"];if(t.insertAdjacentHTML){if(l.test(t.tagName)&&(u=d(t.tagName.toLowerCase(),y,t,z))){return u}x[m]=["AfterBegin","firstChild"];x[o]=["BeforeEnd","lastChild"];if((v=x[y])){t.insertAdjacentHTML(v[0],z);return t[v[1]]}}else{A=t.ownerDocument.createRange();B="setStart"+(/end/i.test(y)?"After":"Before");if(x[y]){A[B](t);C=A.createContextualFragment(z);t.parentNode.insertBefore(C,y==c?t:t.nextSibling);return t[(y==c?"previous":"next")+"Sibling"]}else{w=(y==m?"first":"last")+"Child";if(t.firstChild){A[B](t[w]);C=A.createContextualFragment(z);if(y==m){t.insertBefore(C,t.firstChild)}else{t.appendChild(C)}}else{t.innerHTML=z}return t[w]}}throw'Illegal insertion point -> "'+y+'"'},insertBefore:function(t,v,u){return g(t,v,u,c)},insertAfter:function(t,v,u){return g(t,v,u,n,"nextSibling")},insertFirst:function(t,v,u){return g(t,v,u,m,"firstChild")},append:function(t,v,u){return g(t,v,u,o,"",true)},overwrite:function(t,v,u){t=Ext.getDom(t);t.innerHTML=q(v);return u?Ext.get(t.firstChild):t.firstChild},createHtml:q};return p}();Ext.apply(Ext.DomHelper,function(){var d,a="afterbegin",g="afterend",h="beforebegin",c="beforeend";function e(l,n,m,p,k,i){l=Ext.getDom(l);var j;if(d.useDom){j=b(n,null);if(i){l.appendChild(j)}else{(k=="firstChild"?l:l.parentNode).insertBefore(j,l[k]||l)}}else{j=Ext.DomHelper.insertHtml(p,l,Ext.DomHelper.createHtml(n))}return m?Ext.get(j,true):j}function b(p,j){var l,m=document,k,i,n,q;if(Ext.isArray(p)){l=m.createDocumentFragment();Ext.each(p,function(o){b(o,l)})}else{if(Ext.isString(p)){l=m.createTextNode(p)}else{l=m.createElement(p.tag||"div");k=!!l.setAttribute;Ext.iterate(p,function(o,r){if(!/tag|children|cn|html|style/.test(o)){if(o=="cls"){l.className=r}else{if(k){l.setAttribute(o,r)}else{l[o]=r}}}});d.applyStyles(l,p.style);if((q=p.children||p.cn)){b(q,l)}else{if(p.html){l.innerHTML=p.html}}}}if(j){j.appendChild(l)}return l}d={createTemplate:function(j){var i=Ext.DomHelper.createHtml(j);return new Ext.Template(i)},useDom:false,applyStyles:function(m,n){if(n){var k=0,j,l;m=Ext.fly(m);if(Ext.isFunction(n)){n=n.call()}if(Ext.isString(n)){n=n.trim().split(/\s*(?::|;)\s*/);for(j=n.length;k<j;){m.setStyle(n[k++],n[k++])}}else{if(Ext.isObject(n)){m.setStyle(n)}}}},insertBefore:function(i,k,j){return e(i,k,j,h)},insertAfter:function(i,k,j){return e(i,k,j,g,"nextSibling")},insertFirst:function(i,k,j){return e(i,k,j,a,"firstChild")},append:function(i,k,j){return e(i,k,j,c,"",true)},createDom:b};return d}());Ext.Template=function(d){var e=this,b=arguments,c=[];if(Ext.isArray(d)){d=d.join("")}else{if(b.length>1){Ext.each(b,function(a){if(Ext.isObject(a)){Ext.apply(e,a)}else{c.push(a)}});d=c.join("")}}e.html=d;if(e.compiled){e.compile()}};Ext.Template.prototype={applyTemplate:function(a){var b=this;return b.compiled?b.compiled(a):b.html.replace(b.re,function(c,d){return a[d]!==undefined?a[d]:""})},set:function(a,c){var b=this;b.html=a;b.compiled=null;return c?b.compile():b},re:/\{([\w-]+)\}/g,compile:function(){var me=this,sep=Ext.isGecko?"+":",";function fn(m,name){name="values['"+name+"']";return"'"+sep+"("+name+" == undefined ? '' : "+name+")"+sep+"'"}eval("this.compiled = function(values){ return "+(Ext.isGecko?"'":"['")+me.html.replace(/\\/g,"\\\\").replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn)+(Ext.isGecko?"';};":"'].join('');};"));return me},insertFirst:function(b,a,c){return this.doInsert("afterBegin",b,a,c)},insertBefore:function(b,a,c){return this.doInsert("beforeBegin",b,a,c)},insertAfter:function(b,a,c){return this.doInsert("afterEnd",b,a,c)},append:function(b,a,c){return this.doInsert("beforeEnd",b,a,c)},doInsert:function(c,e,b,a){e=Ext.getDom(e);var d=Ext.DomHelper.insertHtml(c,e,this.applyTemplate(b));return a?Ext.get(d,true):d},overwrite:function(b,a,c){b=Ext.getDom(b);b.innerHTML=this.applyTemplate(a);return c?Ext.get(b.firstChild,true):b.firstChild}};Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.Template.from=function(b,a){b=Ext.getDom(b);return new Ext.Template(b.value||b.innerHTML,a||"")};Ext.apply(Ext.Template.prototype,{applyTemplate:function(b){var g=this,a=g.disableFormats!==true,e=Ext.util.Format,c=g;if(g.compiled){return g.compiled(b)}function d(j,l,p,k){if(p&&a){if(p.substr(0,5)=="this."){return c.call(p.substr(5),b[l],b)}else{if(k){var o=/^\s*['"](.*)["']\s*$/;k=k.split(",");for(var n=0,h=k.length;n<h;n++){k[n]=k[n].replace(o,"$1")}k=[b[l]].concat(k)}else{k=[b[l]]}return e[p].apply(e,k)}}else{return b[l]!==undefined?b[l]:""}}return g.html.replace(g.re,d)},disableFormats:false,re:/\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,compile:function(){var me=this,fm=Ext.util.Format,useF=me.disableFormats!==true,sep=Ext.isGecko?"+":",",body;function fn(m,name,format,args){if(format&&useF){args=args?","+args:"";if(format.substr(0,5)!="this."){format="fm."+format+"("}else{format='this.call("'+format.substr(5)+'", ';args=", values"}}else{args="";format="(values['"+name+"'] == undefined ? '' : "}return"'"+sep+format+"values['"+name+"']"+args+")"+sep+"'"}if(Ext.isGecko){body="this.compiled = function(values){ return '"+me.html.replace(/\\/g,"\\\\").replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn)+"';};"}else{body=["this.compiled = function(values){ return ['"];body.push(me.html.replace(/\\/g,"\\\\").replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn));body.push("'].join('');};");body=body.join("")}eval(body);return me},call:function(c,b,a){return this[c](b,a)}});Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.DomQuery=function(){var cache={},simpleCache={},valueCache={},nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w-\*]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,isIE=window.ActiveXObject?true:false,isOpera=Ext.isOpera,key=30803;eval("var batch = 30803;");function child(p,index){var i=0,n=p.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n}}n=n.nextSibling}return null}function next(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n}function prev(n){while((n=n.previousSibling)&&n.nodeType!=1){}return n}function children(d){var n=d.firstChild,ni=-1,nx;while(n){nx=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){d.removeChild(n)}else{n.nodeIndex=++ni}n=nx}return this}function byClassName(c,a,v){if(!v){return c}var r=[],ri=-1,cn;for(var i=0,ci;ci=c[i];i++){if((" "+ci.className+" ").indexOf(v)!=-1){r[++ri]=ci}}return r}function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0]}if(!n){return null}if(attr=="for"){return n.htmlFor}if(attr=="class"||attr=="className"){return n.className}return n.getAttribute(attr)||n[attr]}function getNodes(ns,mode,tagName){var result=[],ri=-1,cs;if(!ns){return result}tagName=tagName||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){for(var i=0,ni;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(var j=0,ci;ci=cs[j];j++){result[++ri]=ci}}}else{if(mode=="/"||mode==">"){var utag=tagName.toUpperCase();for(var i=0,ni,cn;ni=ns[i];i++){cn=isOpera?ni.childNodes:(ni.children||ni.childNodes);for(var j=0,cj;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){var utag=tagName.toUpperCase();for(var i=0,n;n=ns[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){result[++ri]=n}}}else{if(mode=="~"){var utag=tagName.toUpperCase();for(var i=0,n;n=ns[i];i++){while((n=n.nextSibling)){if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){result[++ri]=n}}}}}}}return result}function concat(a,b){if(b.slice){return a.concat(b)}for(var i=0,l=b.length;i<l;i++){a[a.length]=b[i]}return a}function byTag(cs,tagName){if(cs.tagName||cs==document){cs=[cs]}if(!tagName){return cs}var r=[],ri=-1;tagName=tagName.toLowerCase();for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){r[++ri]=ci}}return r}function byId(cs,attr,id){if(cs.tagName||cs==document){cs=[cs]}if(!id){return cs}var r=[],ri=-1;for(var i=0,ci;ci=cs[i];i++){if(ci&&ci.id==id){r[++ri]=ci;return r}}return r}function byAttribute(cs,attr,value,op,custom){var r=[],ri=-1,st=custom=="{",f=Ext.DomQuery.operators[op];for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType!=1){continue}var a;if(st){a=Ext.DomQuery.getStyle(ci,attr)}else{if(attr=="class"||attr=="className"){a=ci.className}else{if(attr=="for"){a=ci.htmlFor}else{if(attr=="href"){a=ci.getAttribute("href",2)}else{a=ci.getAttribute(attr)}}}}if((f&&f(a,value))||(!f&&a)){r[++ri]=ci}}return r}function byPseudo(cs,name,value){return Ext.DomQuery.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r;cs[0].setAttribute("_nodup",d);r=[cs[0]];for(var i=1,len=cs.length;i<len;i++){var c=cs[i];if(!c.getAttribute("_nodup")!=d){c.setAttribute("_nodup",d);r[r.length]=c}}for(var i=0,len=cs.length;i<len;i++){cs[i].removeAttribute("_nodup")}return r}function nodup(cs){if(!cs){return[]}var len=cs.length,c,i,r=cs,cj,ri=-1;if(!len||typeof cs.nodeType!="undefined"||len==1){return cs}if(isIE&&typeof cs[0].selectSingleNode!="undefined"){return nodupIEXml(cs)}var d=++key;cs[0]._nodup=d;for(i=1;c=cs[i];i++){if(c._nodup!=d){c._nodup=d}else{r=[];for(var j=0;j<i;j++){r[++ri]=cs[j]}for(j=i+1;cj=cs[j];j++){if(cj._nodup!=d){cj._nodup=d;r[++ri]=cj}}return r}}return r}function quickDiffIEXml(c1,c2){var d=++key,r=[];for(var i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d)}for(var i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i]}}for(var i=0,len=c1.length;i<len;i++){c1[i].removeAttribute("_qdiff")}return r}function quickDiff(c1,c2){var len1=c1.length,d=++key,r=[];if(!len1){return c2}if(isIE&&c1[0].selectSingleNode){return quickDiffIEXml(c1,c2)}for(var i=0;i<len1;i++){c1[i]._qdiff=d}for(var i=0,len=c2.length;i<len;i++){if(c2[i]._qdiff!=d){r[r.length]=c2[i]}}return r}function quickId(ns,mode,root,id){if(ns==root){var d=root.ownerDocument||root;return d.getElementById(id)}ns=getNodes(ns,mode,"*");return byId(ns,null,id)}return{getStyle:function(el,name){return Ext.fly(el).getStyle(name)},compile:function(path,type){type=type||"select";var fn=["var f = function(root){\n var mode; ++batch; var n = root || document;\n"],q=path,mode,lq,tk=Ext.DomQuery.matchers,tklen=tk.length,mm,lmode=q.match(modeRe);if(lmode&&lmode[1]){fn[fn.length]='mode="'+lmode[1].replace(trimRe,"")+'";';q=q.replace(lmode[1],"")}while(path.substr(0,1)=="/"){path=path.substr(1)}while(q&&lq!=q){lq=q;var tm=q.match(tagTokenRe);if(type=="select"){if(tm){if(tm[1]=="#"){fn[fn.length]='n = quickId(n, mode, root, "'+tm[2]+'");'}else{fn[fn.length]='n = getNodes(n, mode, "'+tm[2]+'");'}q=q.replace(tm[0],"")}else{if(q.substr(0,1)!="@"){fn[fn.length]='n = getNodes(n, mode, "*");'}}}else{if(tm){if(tm[1]=="#"){fn[fn.length]='n = byId(n, null, "'+tm[2]+'");'}else{fn[fn.length]='n = byTag(n, "'+tm[2]+'");'}q=q.replace(tm[0],"")}}while(!(mm=q.match(modeRe))){var matched=false;for(var j=0;j<tklen;j++){var t=tk[j];var m=q.match(t.re);if(m){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i]});q=q.replace(m[0],"");matched=true;break}}if(!matched){throw'Error parsing selector, parsing failed at "'+q+'"'}}if(mm[1]){fn[fn.length]='mode="'+mm[1].replace(trimRe,"")+'";';q=q.replace(mm[1],"")}}fn[fn.length]="return nodup(n);\n}";eval(fn.join(""));return f},select:function(path,root,type){if(!root||root==document){root=document}if(typeof root=="string"){root=document.getElementById(root)}var paths=path.split(","),results=[];for(var i=0,len=paths.length;i<len;i++){var p=paths[i].replace(trimRe,"");if(!cache[p]){cache[p]=Ext.DomQuery.compile(p);if(!cache[p]){throw p+" is not a valid selector"}}var result=cache[p](root);if(result&&result!=document){results=results.concat(result)}}if(paths.length>1){return nodup(results)}return results},selectNode:function(path,root){return Ext.DomQuery.select(path,root)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=Ext.DomQuery.compile(path,"select")}var n=valueCache[path](root),v;n=n[0]?n[0]:n;v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=Ext.DomQuery.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=document.getElementById(el)}var isArray=Ext.isArray(el),result=Ext.DomQuery.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0)},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=Ext.DomQuery.compile(ss,"simple")}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w-]+)/,select:'n = byClassName(n, null, " {1} ");'},{re:/^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'},{re:/^#([\w-]+)/,select:'n = byId(n, null, "{1}");'},{re:/^@([\w-]+)/,select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}],operators:{"=":function(a,v){return a==v},"!=":function(a,v){return a!=v},"^=":function(a,v){return a&&a.substr(0,v.length)==v},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v},"*=":function(a,v){return a&&a.indexOf(v)!==-1},"%=":function(a,v){return(a%v)==0},"|=":function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+"-")},"~=":function(a,v){return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1}},pseudos:{"first-child":function(c){var r=[],ri=-1,n;for(var i=0,ci;ci=n=c[i];i++){while((n=n.previousSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"last-child":function(c){var r=[],ri=-1,n;for(var i=0,ci;ci=n=c[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"nth-child":function(c,a){var r=[],ri=-1,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0;for(var i=0,n;n=c[i];i++){var pn=n.parentNode;if(batch!=pn._batch){var j=0;for(var cn=pn.firstChild;cn;cn=cn.nextSibling){if(cn.nodeType==1){cn.nodeIndex=++j}}pn._batch=batch}if(f==1){if(l==0||n.nodeIndex==l){r[++ri]=n}}else{if((n.nodeIndex+l)%f==0){r[++ri]=n}}}return r},"only-child":function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},empty:function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var cns=ci.childNodes,j=0,cn,empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break}}if(empty){r[++ri]=ci}}return r},contains:function(c,v){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if((ci.textContent||ci.innerText||"").indexOf(v)!=-1){r[++ri]=ci}}return r},nodeValue:function(c,v){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},checked:function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(ci.checked==true){r[++ri]=ci}}return r},not:function(c,ss){return Ext.DomQuery.filter(c,ss,true)},any:function(c,selectors){var ss=selectors.split("|"),r=[],ri=-1,s;for(var i=0,ci;ci=c[i];i++){for(var j=0;s=ss[j];j++){if(Ext.DomQuery.is(ci,s)){r[++ri]=ci;break}}}return r},odd:function(c){return this["nth-child"](c,"odd")},even:function(c){return this["nth-child"](c,"even")},nth:function(c,a){return c[a-1]||[]},first:function(c){return c[0]||[]},last:function(c){return c[c.length-1]||[]},has:function(c,ss){var s=Ext.DomQuery.select,r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},next:function(c,ss){var is=Ext.DomQuery.is,r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},prev:function(c,ss){var is=Ext.DomQuery.is,r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r}}}}();Ext.query=Ext.DomQuery.select;(function(){var i=Ext.util,l=Ext.toArray,k=Ext.each,a=Ext.isObject,h=true,j=false;i.Observable=function(){var m=this,n=m.events;if(m.listeners){m.on(m.listeners);delete m.listeners}m.events=n||{}};i.Observable.prototype=function(){var n=/^(?:scope|delay|buffer|single)$/,m=function(o){return o.toLowerCase()};return{fireEvent:function(){var o=l(arguments),r=m(o[0]),s=this,p=h,u=s.events[r],t,v;if(s.eventsSuspended===h){if(t=s.suspendedEventsQueue){t.push(o)}}else{if(a(u)&&u.bubble){if(u.fire.apply(u,o.slice(1))===j){return j}v=s.getBubbleTarget&&s.getBubbleTarget();if(v&&v.enableBubble){v.enableBubble(r);return v.fireEvent.apply(v,o)}}else{if(a(u)){o.shift();p=u.fire.apply(u,o)}}}return p},addListener:function(r,u,w,q){var t=this,s,x,v,p;if(a(r)){q=r;for(s in q){x=q[s];if(!n.test(s)){t.addListener(s,x.fn||x,x.scope||q.scope,x.fn?x:q)}}}else{r=m(r);p=t.events[r]||h;if(typeof p=="boolean"){t.events[r]=p=new i.Event(t,r)}p.addListener(u,w,a(q)?q:{})}},removeListener:function(o,q,p){var r=this.events[m(o)];if(a(r)){r.removeListener(q,p)}},purgeListeners:function(){var q=this.events,o,p;for(p in q){o=q[p];if(a(o)){o.clearListeners()}}},addEvents:function(q){var p=this;p.events=p.events||{};if(typeof q=="string"){k(arguments,function(o){p.events[o]=p.events[o]||h})}else{Ext.applyIf(p.events,q)}},hasListener:function(o){var p=this.events[o];return a(p)&&p.listeners.length>0},suspendEvents:function(o){this.eventsSuspended=h;if(o){this.suspendedEventsQueue=[]}},resumeEvents:function(){var o=this;o.eventsSuspended=!delete o.suspendedEventQueue;k(o.suspendedEventsQueue,function(p){o.fireEvent.apply(o,p)})}}}();var e=i.Observable.prototype;e.on=e.addListener;e.un=e.removeListener;i.Observable.releaseCapture=function(m){m.fireEvent=e.fireEvent};function g(n,p,m){return function(){if(p.target==arguments[0]){n.apply(m,l(arguments))}}}function c(p,q,n){var m=new i.DelayedTask();return function(){m.delay(q.buffer,p,n,l(arguments))}}function d(o,p,n,m){return function(){p.removeListener(n,m);return o.apply(m,arguments)}}function b(n,p,m){return function(){var o=l(arguments);(function(){n.apply(m,o)}).defer(p.delay||10)}}i.Event=function(n,m){this.name=m;this.obj=n;this.listeners=[]};i.Event.prototype={addListener:function(p,o,n){var q=this,m;o=o||q.obj;if(!q.isListening(p,o)){m=q.createListener(p,o,n);if(q.firing){q.listeners=q.listeners.slice(0)}q.listeners.push(m)}},createListener:function(q,p,r){r=r||{},p=p||this.obj;var m={fn:q,scope:p,options:r},n=q;if(r.target){n=g(n,r,p)}if(r.delay){n=b(n,r,p)}if(r.single){n=d(n,this,q,p)}if(r.buffer){n=c(n,r,p)}m.fireFn=n;return m},findListener:function(p,o){var n,m=-1;k(this.listeners,function(q,r){n=q.scope;if(q.fn==p&&(n==o||n==this.obj)){m=r;return j}},this);return m},isListening:function(n,m){return this.findListener(n,m)!=-1},removeListener:function(p,o){var n,q=this,m=j;if((n=q.findListener(p,o))!=-1){if(q.firing){q.listeners=q.listeners.slice(0)}q.listeners.splice(n,1);m=h}return m},clearListeners:function(){this.listeners=[]},fire:function(){var o=this,n=l(arguments),m=h;k(o.listeners,function(p){o.firing=h;if(p.fireFn.apply(p.scope||o.obj||window,n)===j){return m=o.firing=j}});o.firing=j;return m}}})();Ext.apply(Ext.util.Observable.prototype,function(){function a(j){var i=(this.methodEvents=this.methodEvents||{})[j],d,c,g,h=this;if(!i){this.methodEvents[j]=i={};i.originalFn=this[j];i.methodName=j;i.before=[];i.after=[];var b=function(l,k,e){if(!Ext.isEmpty(c=l.apply(k||h,e))){if(Ext.isObject(c)){d=!Ext.isEmpty(c.returnValue)?c.returnValue:c;g=!!c.cancel}else{if(c===false){g=true}else{d=c}}}};this[j]=function(){var e=Ext.toArray(arguments);d=c=undefined;g=false;Ext.each(i.before,function(k){b(k.fn,k.scope,e);if(g){return d}});if(!Ext.isEmpty(c=i.originalFn.apply(h,e))){d=c}Ext.each(i.after,function(k){b(k.fn,k.scope,e);if(g){return d}});return d}}return i}return{beforeMethod:function(d,c,b){a.call(this,d).before.push({fn:c,scope:b})},afterMethod:function(d,c,b){a.call(this,d).after.push({fn:c,scope:b})},removeMethodListener:function(h,c,b){var g=a.call(this,h),d=false;Ext.each(g.before,function(j,k,e){if(j.fn==c&&j.scope==b){e.splice(k,1);d=true;return false}});if(!d){Ext.each(g.after,function(j,k,e){if(j.fn==c&&j.scope==b){e.splice(k,1);return false}})}},relayEvents:function(e,b){var d=this;function c(g){return function(){return d.fireEvent.apply(d,[g].concat(Ext.toArray(arguments)))}}Ext.each(b,function(g){d.events[g]=d.events[g]||true;e.on(g,c(g),d)})},enableBubble:function(b){var c=this;b=Ext.isArray(b)?b:Ext.toArray(arguments);Ext.each(b,function(d){d=d.toLowerCase();var e=c.events[d]||true;if(typeof e=="boolean"){e=new Ext.util.Event(c,d);c.events[d]=e}e.bubble=true})}}}());Ext.util.Observable.capture=function(c,b,a){c.fireEvent=c.fireEvent.createInterceptor(b,a)};Ext.util.Observable.observeClass=function(a){Ext.apply(a,new Ext.util.Observable());a.prototype.fireEvent=function(){return(a.fireEvent.apply(a,arguments)!==false)&&(Ext.util.Observable.prototype.fireEvent.apply(this,arguments)!==false)}};Ext.EventManager=function(){var t,m,j=false,l=Ext.lib.Event,n=Ext.lib.Dom,b=document,u=window,g="ie-deferred-loader",o="DOMContentLoaded",e={},h=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;function k(A,w,z,y,x){var C=Ext.id(A),B=e[C]=e[C]||{};(B[w]=B[w]||[]).push([z,y,x]);l.on(A,w,y);if(w=="mousewheel"&&A.addEventListener){var v=["DOMMouseScroll",y,false];A.addEventListener.apply(A,v);l.on(window,"unload",function(){A.removeEventListener.apply(A,v)})}if(w=="mousedown"&&A==document){Ext.EventManager.stoppedMouseDownEvent.addListener(y)}}function c(){if(!j){Ext.isReady=j=true;if(m){clearInterval(m)}if(Ext.isGecko||Ext.isOpera){b.removeEventListener(o,c,false)}if(Ext.isIE){var v=b.getElementById(g);if(v){v.onreadystatechange=null;v.parentNode.removeChild(v)}}if(t){t.fire();t.clearListeners()}}}function a(){var v="complete";t=new Ext.util.Event();if(Ext.isGecko||Ext.isOpera){b.addEventListener(o,c,false)}else{if(Ext.isIE){b.write("<script id="+g+' defer="defer" src="//:"><\/script>');b.getElementById(g).onreadystatechange=function(){if(this.readyState==v){c()}}}else{if(Ext.isWebKit){m=setInterval(function(){if(b.readyState==v){c()}},10)}}}l.on(u,"load",c)}function r(v,w){return function(){var x=Ext.toArray(arguments);if(w.target==Ext.EventObject.setEvent(x[0]).target){v.apply(this,x)}}}function s(w,x){var v=new Ext.util.DelayedTask(w);return function(y){v.delay(x.buffer,w,null,[new Ext.EventObjectImpl(y)])}}function p(z,y,v,x,w){return function(A){Ext.EventManager.removeListener(y,v,x,w);z(A)}}function d(v,w){return function(x){x=new Ext.EventObjectImpl(x);setTimeout(function(){v(x)},w.delay||10)}}function i(x,w,v,B,A){var C=!Ext.isObject(v)?{}:v,z=Ext.getDom(x);B=B||C.fn;A=A||C.scope;if(!z){throw'Error listening for "'+w+'". Element "'+x+"\" doesn't exist."}function y(E){if(!Ext){return}E=Ext.EventObject.setEvent(E);var D;if(C.delegate){if(!(D=E.getTarget(C.delegate,z))){return}}else{D=E.target}if(C.stopEvent){E.stopEvent()}if(C.preventDefault){E.preventDefault()}if(C.stopPropagation){E.stopPropagation()}if(C.normalized){E=E.browserEvent}B.call(A||z,E,D,C)}if(C.target){y=r(y,C)}if(C.delay){y=d(y,C)}if(C.single){y=p(y,z,w,B,A)}if(C.buffer){y=s(y,C)}k(z,w,B,y,A);return y}var q={addListener:function(x,v,z,y,w){if(Ext.isObject(v)){var C=v,A,B;for(A in C){B=C[A];if(!h.test(A)){if(Ext.isFunction(B)){i(x,A,C,B,C.scope)}else{i(x,A,B)}}}}else{i(x,v,w,z,y)}},removeListener:function(w,v,A,z){var y=Ext.getDom(w),B=Ext.id(y),x;Ext.each((e[B]||{})[v],function(D,E,C){if(Ext.isArray(D)&&D[0]==A&&(!z||D[2]==z)){l.un(y,v,x=D[1]);C.splice(E,1);return false}});if(v=="mousewheel"&&y.addEventListener&&x){y.removeEventListener("DOMMouseScroll",x,false)}if(v=="mousedown"&&y==b&&x){Ext.EventManager.stoppedMouseDownEvent.removeListener(x)}},removeAll:function(w){var y=Ext.id(w=Ext.getDom(w)),x=e[y],v;for(v in x){if(x.hasOwnProperty(v)){Ext.each(x[v],function(z){l.un(w,v,z.wrap)})}}e[y]=null},onDocumentReady:function(x,w,v){if(j){t.addListener(x,w,v);t.fire();t.clearListeners()}else{if(!t){a()}v=v||{};v.delay=v.delay||1;t.addListener(x,w,v)}},elHash:e};q.on=q.addListener;q.un=q.removeListener;q.stoppedMouseDownEvent=new Ext.util.Event();return q}();Ext.onReady=Ext.EventManager.onDocumentReady;(function(){var a=function(){var c=document.body||document.getElementsByTagName("body")[0];if(!c){return false}var b=[" ",Ext.isIE?"ext-ie "+(Ext.isIE6?"ext-ie6":(Ext.isIE7?"ext-ie7":"ext-ie8")):Ext.isGecko?"ext-gecko "+(Ext.isGecko2?"ext-gecko2":"ext-gecko3"):Ext.isOpera?"ext-opera":Ext.isWebKit?"ext-webkit":""];if(Ext.isSafari){b.push("ext-safari "+(Ext.isSafari2?"ext-safari2":(Ext.isSafari3?"ext-safari3":"ext-safari4")))}else{if(Ext.isChrome){b.push("ext-chrome")}}if(Ext.isMac){b.push("ext-mac")}if(Ext.isLinux){b.push("ext-linux")}if(Ext.isStrict||Ext.isBorderBox){var d=c.parentNode;if(d){d.className+=Ext.isStrict?" ext-strict":" ext-border-box"}}c.className+=b.join(" ");return true};if(!a()){Ext.onReady(a)}})();Ext.EventObject=function(){var b=Ext.lib.Event,a={3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},c=Ext.isIE?{1:0,4:1,2:2}:(Ext.isWebKit?{1:0,2:1,3:2}:{0:0,1:1,2:2});Ext.EventObjectImpl=function(d){if(d){this.setEvent(d.browserEvent||d)}};Ext.EventObjectImpl.prototype={setEvent:function(g){var d=this;if(g==d||(g&&g.browserEvent)){return g}d.browserEvent=g;if(g){d.button=g.button?c[g.button]:(g.which?g.which-1:-1);if(g.type=="click"&&d.button==-1){d.button=0}d.type=g.type;d.shiftKey=g.shiftKey;d.ctrlKey=g.ctrlKey||g.metaKey||false;d.altKey=g.altKey;d.keyCode=g.keyCode;d.charCode=g.charCode;d.target=b.getTarget(g);d.xy=b.getXY(g)}else{d.button=-1;d.shiftKey=false;d.ctrlKey=false;d.altKey=false;d.keyCode=0;d.charCode=0;d.target=null;d.xy=[0,0]}return d},stopEvent:function(){var d=this;if(d.browserEvent){if(d.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(d)}b.stopEvent(d.browserEvent)}},preventDefault:function(){if(this.browserEvent){b.preventDefault(this.browserEvent)}},stopPropagation:function(){var d=this;if(d.browserEvent){if(d.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(d)}b.stopPropagation(d.browserEvent)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(d){return Ext.isSafari?(a[d]||d):d},getPageX:function(){return this.xy[0]},getPageY:function(){return this.xy[1]},getXY:function(){return this.xy},getTarget:function(e,g,d){return e?Ext.fly(this.target).findParent(e,g,d):(d?Ext.get(this.target):this.target)},getRelatedTarget:function(){return this.browserEvent?b.getRelatedTarget(this.browserEvent):null},getWheelDelta:function(){var d=this.browserEvent;var g=0;if(d.wheelDelta){g=d.wheelDelta/120}else{if(d.detail){g=-d.detail/3}}return g},within:function(g,h,d){if(g){var e=this[h?"getRelatedTarget":"getTarget"]();return e&&((d?(e==Ext.getDom(g)):false)||Ext.fly(g).contains(e))}return false}};return new Ext.EventObjectImpl()}();Ext.apply(Ext.EventManager,function(){var c,j,e,b,a=Ext.lib.Dom,k=Ext.lib.Event,i=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,h=0,g=0,d=Ext.isSafari?Ext.num(navigator.userAgent.toLowerCase().match(/version\/(\d+\.\d)/)[1]||2)>=3.1:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera);return{doResizeEvent:function(){var m=a.getViewHeight(),l=a.getViewWidth();if(g!=m||h!=l){c.fire(h=l,g=m)}},onWindowResize:function(n,m,l){if(!c){c=new Ext.util.Event();j=new Ext.util.DelayedTask(this.doResizeEvent);k.on(window,"resize",this.fireWindowResize,this)}c.addListener(n,m,l)},fireWindowResize:function(){if(c){if((Ext.isIE||Ext.isAir)&&j){j.delay(50)}else{c.fire(a.getViewWidth(),a.getViewHeight())}}},onTextResize:function(o,n,l){if(!e){e=new Ext.util.Event();var m=new Ext.Element(document.createElement("div"));m.dom.className="x-text-resize";m.dom.innerHTML="X";m.appendTo(document.body);b=m.dom.offsetHeight;setInterval(function(){if(m.dom.offsetHeight!=b){e.fire(b,b=m.dom.offsetHeight)}},this.textResizeInterval)}e.addListener(o,n,l)},removeResizeListener:function(m,l){if(c){c.removeListener(m,l)}},fireResize:function(){if(c){c.fire(a.getViewWidth(),a.getViewHeight())}},textResizeInterval:50,ieDeferSrc:false,useKeydown:d}}());Ext.EventManager.on=Ext.EventManager.addListener;Ext.apply(Ext.EventObjectImpl.prototype,{BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,RETURN:13,SHIFT:16,CTRL:17,CONTROL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGEUP:33,PAGE_DOWN:34,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,isNavKeyPress:function(){var b=this,a=this.normalizeKey(b.keyCode);return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC},isSpecialKey:function(){var a=this.normalizeKey(this.keyCode);return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=45)},getPoint:function(){return new Ext.lib.Point(this.xy[0],this.xy[1])},hasModifier:function(){return((this.ctrlKey||this.altKey)||this.shiftKey)}});(function(){var i=document;Ext.Element=function(n,o){var p=typeof n=="string"?i.getElementById(n):n,q;if(!p){return null}q=p.id;if(!o&&q&&Ext.Element.cache[q]){return Ext.Element.cache[q]}this.dom=p;this.id=q||Ext.id(p)};var a=Ext.lib.Dom,e=Ext.DomHelper,l=Ext.lib.Event,d=Ext.lib.Anim,g=Ext.Element;g.prototype={set:function(s,p){var q=this.dom,n,r;for(n in s){r=s[n];if(n!="style"&&!Ext.isFunction(r)){if(n=="cls"){q.className=r}else{if(s.hasOwnProperty(n)){if(p||!!q.setAttribute){q.setAttribute(n,r)}else{q[n]=r}}}}}if(s.style){Ext.DomHelper.applyStyles(q,s.style)}return this},defaultUnit:"px",is:function(n){return Ext.DomQuery.is(this.dom,n)},focus:function(q,p){var n=this,p=p||n.dom;try{if(Number(q)){n.focus.defer(q,null,[null,p])}else{p.focus()}}catch(o){}return n},blur:function(){try{this.dom.blur()}catch(n){}return this},getValue:function(n){var o=this.dom.value;return n?parseInt(o,10):o},addListener:function(n,q,p,o){Ext.EventManager.on(this.dom,n,q,p||this,o);return this},removeListener:function(n,p,o){Ext.EventManager.removeListener(this.dom,n,p,o||this);return this},removeAllListeners:function(){Ext.EventManager.removeAll(this.dom);return this},addUnits:function(n){if(n===""||n=="auto"||n===undefined){n=n||""}else{if(!isNaN(n)||!j.test(n)){n=n+(this.defaultUnit||"px")}}return n},load:function(o,p,n){Ext.Ajax.request(Ext.apply({params:p,url:o.url||o,callback:n,el:this.dom,indicatorText:o.indicatorText||""},Ext.isObject(o)?o:{}));return this},isBorderBox:function(){return h[(this.dom.tagName||"").toLowerCase()]||Ext.isBorderBox},remove:function(){var n=this,o=n.dom;n.removeAllListeners();delete g.cache[o.id];delete g.dataCache[o.id];Ext.removeNode(o)},hover:function(o,n,q,p){var r=this;r.on("mouseenter",o,q||r.dom,p);r.on("mouseleave",n,q||r.dom,p);return r},contains:function(n){return !n?false:Ext.lib.Dom.isAncestor(this.dom,n.dom?n.dom:n)},getAttributeNS:function(o,n){return this.getAttribute(n,o)},getAttribute:Ext.isIE?function(n,p){var q=this.dom,o=typeof q[p+":"+n];if(["undefined","unknown"].indexOf(o)==-1){return q[p+":"+n]}return q[n]}:function(n,o){var p=this.dom;return p.getAttributeNS(o,n)||p.getAttribute(o+":"+n)||p.getAttribute(n)||p[n]},update:function(n){this.dom.innerHTML=n;return this}};var m=g.prototype;g.addMethods=function(n){Ext.apply(m,n)};m.on=m.addListener;m.un=m.removeListener;m.autoBoxAdjust=true;var j=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,c;g.cache={};g.dataCache={};g.get=function(o){var n,r,q;if(!o){return null}if(typeof o=="string"){if(!(r=i.getElementById(o))){return null}if(n=g.cache[o]){n.dom=r}else{n=g.cache[o]=new g(r)}return n}else{if(o.tagName){if(!(q=o.id)){q=Ext.id(o)}if(n=g.cache[q]){n.dom=o}else{n=g.cache[q]=new g(o)}return n}else{if(o instanceof g){if(o!=c){o.dom=i.getElementById(o.id)||o.dom;g.cache[o.id]=o}return o}else{if(o.isComposite){return o}else{if(Ext.isArray(o)){return g.select(o)}else{if(o==i){if(!c){var p=function(){};p.prototype=g.prototype;c=new p();c.dom=i}return c}}}}}}return null};g.data=function(o,n,p){var q=g.dataCache[o.id];if(!q){q=g.dataCache[o.id]={}}if(arguments.length==2){return q[n]}else{q[n]=p}};function k(){if(!Ext.enableGarbageCollector){clearInterval(g.collectorThread)}else{var n,o,p;for(n in g.cache){o=g.cache[n];p=o.dom;if(!p||!p.parentNode||(!p.offsetParent&&!i.getElementById(n))){delete g.cache[n];if(p&&Ext.enableListenerCollection){Ext.EventManager.removeAll(p)}}}}}g.collectorThreadId=setInterval(k,30000);var b=function(){};b.prototype=g.prototype;g.Flyweight=function(n){this.dom=n};g.Flyweight.prototype=new b();g.Flyweight.prototype.isFlyweight=true;g._flyweights={};g.fly=function(p,n){var o=null;n=n||"_global";if(p=Ext.getDom(p)){(g._flyweights[n]=g._flyweights[n]||new g.Flyweight()).dom=p;o=g._flyweights[n]}return o};Ext.get=g.get;Ext.fly=g.fly;var h=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1};if(Ext.isIE||Ext.isGecko){h.button=1}Ext.EventManager.on(window,"unload",function(){delete g.cache;delete g.dataCache;delete g._flyweights})})();Ext.Element.addMethods({swallowEvent:function(a,b){var d=this;function c(g){g.stopPropagation();if(b){g.preventDefault()}}if(Ext.isArray(a)){Ext.each(a,function(g){d.on(g,c)});return d}d.on(a,c);return d},relayEvent:function(a,b){this.on(a,function(c){b.fireEvent(a,c)})},clean:function(b){var d=this,e=d.dom,g=e.firstChild,c=-1;if(Ext.Element.data(e,"isCleaned")&&b!==true){return d}while(g){var a=g.nextSibling;if(g.nodeType==3&&!/\S/.test(g.nodeValue)){e.removeChild(g)}else{g.nodeIndex=++c}g=a}Ext.Element.data(e,"isCleaned",true);return d},load:function(){var a=this.getUpdater();a.update.apply(a,arguments);return this},getUpdater:function(){return this.updateManager||(this.updateManager=new Ext.Updater(this))},upda