/*! * jQuery JavaScript Library v1.4.2 * http://jquery.com/ * * Copyright 2010, John Resig * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * Includes Sizzle.js * http://sizzlejs.com/ * Copyright 2010, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * * Date: Sat Feb 13 22:33:48 2010 -0500 */ (function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& (d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== "find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, "_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== "="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); (function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= {},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== "string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== 1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, ""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", ""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, "border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== "string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? "&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== 1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== "json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== "number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": "pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);jQuery.noConflict(); jQuery.ajaxSetup({ cache: false }); jQuery.fn.ljAddContextualPopup = function() { if (!window.ContextualPopup) return this; return this.each(function() { ContextualPopup.searchAndAdd(this); }); } jQuery.fn.hourglass = function(xhr) { var hourglasses = []; this.each(function() { // is complete or was aborted if (xhr && (xhr.readyState == 0 || xhr.readyState == 4)) return; if (this.nodeType) { // node } else { // position from event var e = jQuery.event.fix(this), hourglass = new Hourglass(), offset = {}; // from keyboard if (!e.clientX || !e.clientY) { offset = jQuery(e.target).offset(); } hourglass.init(); hourglass.hourglass_at(offset.left || e.pageX, offset.top || e.pageY); } hourglasses.push(hourglass) if (xhr) { jQuery(hourglass.ele).bind('ajaxComplete', function(event, request) { if (request == xhr) { hourglass.hide(); jQuery(hourglass.ele).unbind('ajaxComplete', arguments.callee); } }); } }); return hourglasses; } /* Core JavaScript Library $Id: core.js 275 2009-11-27 08:42:15Z pkornilov $ Copyright (c) 2005, Six Apart, Ltd. 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 "Six Apart" nor the names of its 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. */ /* stubs */ log = function() {}; log.error = log.warn = log.debug = log; /* utility functions */ defined = function( x ) { return x === undefined ? false : true; } /** * Utility method. * @param x any Any JavaScript value, including undefined. * @return boolean true if the value is not null and is not undefined. */ exists = function( x ) { return (x === undefined || x === null) ? false : true; } finite = function( x ) { return isFinite( x ) ? x : 0; } finiteInt = function( x, base ) { return finite( parseInt( x, base ) ); } finiteFloat = function( x ) { return finite( parseFloat( x ) ); } max = function() { var a = arguments; var n = a[ 0 ]; for( var i = 1; i < a.length; i++ ) if( a[ i ] > n ) n = a[ i ]; return n; } min = function() { var a = arguments; var n = a[ 0 ]; for( var i = 1; i < a.length; i++ ) if( a[ i ] < n ) n = a[ i ]; return n; } /* try block */ Try = { these: function() { for( var i = 0; i < arguments.length; i++ ) { try { return arguments[ i ](); } catch( e ) {} } return undefined; } } /* unique id generator */ Unique = { length: 0, id: function() { return ++this.length; } } /* event methods */ if( !defined( window.Event ) ) Event = {}; Event.stop = function( e ) { // this set in Event.prep e = e || window.event || this; Event.stopPropagation( e ); Event.preventDefault( e ); return false; } Event.stopPropagation = function( e ) { if ( e && e.stopPropagation ) e.stopPropagation(); else window.event.cancelBubble = true; } Event.preventDefault = function( e ) { e = e || window.event; if ( e.preventDefault ) e.preventDefault(); e.returnValue = false; } Event.prep = function( event ) { event = event || window.event; if( !defined( event.stop ) ) event.stop = this.stop; if( !defined( event.target ) ) event.target = event.srcElement; if( !defined( event.relatedTarget ) ) event.relatedTarget = event.toElement; return event; } /* object extensions */ Function.stub = function() {}; if (!Object.extend) Object.extend = function (d, s) { if (d) for (var p in s) if (!d[p]) d[p] = s[p]; return d } if (!Object.override) Object.override = function (d, s) { if (d) for (var p in s) d[p] = s[p]; return d } /* function extensions */ Object.extend(Function.prototype, { bind: function( object ) { var method = this; return function() { return method.apply( object, arguments ); }; }, bindEventListener: function( object ) { var method = this; // Use double closure to work around IE 6 memory leak. return function( event ) { try { event = Event.prep( event ); } catch( e ) {} return method.call( object, event ); }; } } ); /* class helpers */ indirectObjects = []; Class = function( superClass ) { // Set the constructor: var constructor = function() { if( arguments.length ) this.init.apply( this, arguments ); }; // -- Accomplish static-inheritance: Object.override(constructor, Class); // inherit static methods from Class superClass = superClass || function(){}; superClassFunc = function(){} Object.extend(superClassFunc.prototype, superClass.prototype) Object.extend(superClassFunc.prototype, { init: function(){}, destroy: function(){} }) Object.override(constructor, superClass); // inherit static methods from the superClass constructor.superClass = superClassFunc.prototype; // Set the constructor's prototype (accomplish object-inheritance): constructor.prototype = new superClass(); constructor.prototype.constructor = constructor; // rev. 0.7 // -- extend prototype with Class instance methods Object.extend(constructor.prototype, Class.prototype); // -- override prototype with interface methods for( var i = 1; i < arguments.length; i++ ) Object.override(constructor.prototype, arguments[i]); return constructor; } Object.extend(Class, { initSingleton: function() { if( this.singleton ) return this.singleton; this.singleton = this.singletonConstructor ? new this.singletonConstructor() : new this(); this.singleton.init.apply( this.singleton, arguments ); return this.singleton; } } ); Class.prototype = { destroy: function() { try { if( this.indirectIndex ) indirectObjects[ this.indirectIndex ] = undefined; delete this.indirectIndex; } catch( e ) {} for( var property in this ) { try { delete this[ property ]; } catch( e ) {} } }, getBoundMethod: function( methodName ) { return this[ name ].bind( this ); }, getEventListener: function( methodName ) { return this[ methodName ].bindEventListener( this ); }, getIndirectIndex: function() { if( !defined( this.indirectIndex ) ) { this.indirectIndex = indirectObjects.length; indirectObjects.push( this ); } return this.indirectIndex; }, getIndirectMethod: function( methodName ) { if( !this.indirectMethods ) this.indirectMethods = {}; var method = this[ methodName ]; if( typeof method != "function" ) return undefined; var indirectIndex = this.getIndirectIndex(); if( !this.indirectMethods[ methodName ] ) { this.indirectMethods[ methodName ] = new Function( "var o = indirectObjects[" + indirectIndex + "];" + "return o." + methodName + ".apply( o, arguments );" ); } return this.indirectMethods[ methodName ]; }, getIndirectEventListener: function( methodName ) { if( !this.indirectEventListeners ) this.indirectEventListeners = {}; var method = this[ methodName ]; if( typeof method != "function" ) return undefined; var indirectIndex = this.getIndirectIndex(); if( !this.indirectEventListeners[ methodName ] ) { this.indirectEventListeners[ methodName ] = new Function( "event", "try { event = Event.prep( event ); } catch( e ) {}" + "var o = indirectObjects[" + indirectIndex + "];" + "return o." + methodName + ".call( o, event );" ); } return this.indirectEventListeners[ methodName ]; } } /* string extensions */ Object.extend(String, { escapeJSChar: function( c ) { // try simple escaping switch( c ) { case "\\": return "\\\\"; case "\"": return "\\\""; case "'": return "\\'"; case "\b": return "\\b"; case "\f": return "\\f"; case "\n": return "\\n"; case "\r": return "\\r"; case "\t": return "\\t"; } // return raw bytes now ... should be UTF-8 if( c >= " " ) return c; // try \uXXXX escaping, but shouldn't make it for case 1, 2 c = c.charCodeAt( 0 ).toString( 16 ); switch( c.length ) { case 1: return "\\u000" + c; case 2: return "\\u00" + c; case 3: return "\\u0" + c; case 4: return "\\u" + c; } // should never make it here return ""; }, encodeEntity: function( c ) { switch( c ) { case "<": return "<"; case ">": return ">"; case "&": return "&"; case '"': return """; case "'": return "'"; } return c; }, decodeEntity: function( c ) { switch( c ) { case "amp": return "&"; case "quot": return '"'; case "gt": return ">"; case "lt": return "<"; } var m = c.match( /^#(\d+)$/ ); if( m && defined( m[ 1 ] ) ) return String.fromCharCode( m[ 1 ] ); m = c.match( /^#x([0-9a-f]+)$/i ); if( m && defined( m[ 1 ] ) ) return String.fromCharCode( parseInt( hex, m[ 1 ] ) ); return c; } } ); Object.extend(String.prototype, { escapeJS: function() { return this.replace( /([^ -!#-\[\]-~])/g, function( m, c ) { return String.escapeJSChar( c ); } ) }, escapeJS2: function() { return this.replace( /([\u0000-\u0031'"\\])/g, function( m, c ) { return String.escapeJSChar( c ); } ) }, escapeJS3: function() { return this.replace( /[\u0000-\u0031'"\\]/g, function( m ) { return String.escapeJSChar( m ); } ) }, escapeJS4: function() { return this.replace( /./g, function( m ) { return String.escapeJSChar( m ); } ) }, encodeHTML: function() { return this.replace( /([<>&"])/g, function( m, c ) { return String.encodeEntity( c ) } ); }, decodeHTML: function() { return this.replace( /&(.*?);/g, function( m, c ) { return String.decodeEntity( c ) } ); }, cssToJS: function() { return this.replace( /-([a-z])/g, function( m, c ) { return c.toUpperCase() } ); }, jsToCSS: function() { return this.replace( /([A-Z])/g, function( m, c ) { return "-" + c.toLowerCase() } ); }, firstToLowerCase: function() { return this.replace( /^(.)/, function( m, c ) { return c.toLowerCase() } ); }, rgbToHex: function() { var c = this.match( /(\d+)\D+(\d+)\D+(\d+)/ ); if( !c ) return undefined; return "#" + finiteInt( c[ 1 ] ).toString( 16 ).pad( 2, "0" ) + finiteInt( c[ 2 ] ).toString( 16 ).pad( 2, "0" ) + finiteInt( c[ 3 ] ).toString( 16 ).pad( 2, "0" ); }, pad: function( length, padChar ) { var padding = length - this.length; if( padding <= 0 ) return this; if( !defined( padChar ) ) padChar = " "; var out = []; for( var i = 0; i < padding; i++ ) out.push( padChar ); out.push( this ); return out.join( "" ); }, trim: function() { return this.replace( /^\s+|\s+$/g, "" ); } } ); /* extend array object */ Object.extend(Array, { fromPseudo: function ( args ) { var out = []; for ( var i = 0; i < args.length; i++ ) out.push( args[ i ] ); return out; } }); /* extend array object */ Object.extend(Array.prototype, { copy: function() { var out = []; for( var i = 0; i < this.length; i++ ) out[ i ] = this[ i ]; return out; }, first: function( callback, object ) { var length = this.length; for( var i = 0; i < length; i++ ) { var result = object ? callback.call( object, this[ i ], i, this ) : callback( this[ i ], i, this ); if( result ) return this[ i ]; } return null; }, fitIndex: function( fromIndex, defaultIndex ) { if( !defined( fromIndex ) || fromIndex == null ) fromIndex = defaultIndex; else if( fromIndex < 0 ) { fromIndex = this.length + fromIndex; if( fromIndex < 0 ) fromIndex = 0; } else if( fromIndex >= this.length ) fromIndex = this.length - 1; return fromIndex; }, scramble: function() { for( var i = 0; i < this.length; i++ ) { var j = Math.floor( Math.random() * this.length ); var temp = this[ i ]; this[ i ] = this[ j ]; this[ j ] = temp; } }, add: function() { var a = arguments; for( var i = 0; i < a.length; i++ ) { var index = this.indexOf( a[ i ] ); if( index < 0 ) this.push( arguments[ i ] ); } return this.length; }, remove: function() { var a = arguments; for( var i = 0; i < a.length; i++ ) { var j = this.indexOf( a[ i ] ); if( j >= 0 ) this.splice( j, 1 ); } return this.length; }, /* javascript 1.5 array methods */ /* http://developer-test.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array#Methods */ every: function( callback, object ) { var length = this.length; for( var i = 0; i < length; i++ ) { var result = object ? callback.call( object, this[ i ], i, this ) : callback( this[ i ], i, this ); if( !result ) return false; } return true; }, filter: function( callback, object ) { var out = []; var length = this.length; for( var i = 0; i < length; i++ ) { var result = object ? callback.call( object, this[ i ], i, this ) : callback( this[ i ], i, this ); if( result ) out.push( this[ i ] ); } return out; }, forEach: function( callback, object ) { var length = this.length; for( var i = 0; i < length; i++ ) { object ? callback.call( object, this[ i ], i, this ) : callback( this[ i ], i, this ); } }, indexOf: function( value, fromIndex ) { fromIndex = this.fitIndex( fromIndex, 0 ); for( var i = 0; i < this.length; i++ ) { if( this[ i ] === value ) return i; } return -1; }, lastIndexOf: function( value, fromIndex ) { fromIndex = this.fitIndex( fromIndex, this.length - 1 ); for( var i = fromIndex; i >= 0; i-- ) { if( this[ i ] == value ) return i; } return -1; }, some: function( callback, object ) { var length = this.length; for( var i = 0; i < length; i++ ) { var result = object ? callback.call( object, this[ i ], i, this ) : callback( this[ i ], i, this ); if( result ) return true; } return false; }, /* javascript 1.2 array methods */ concat: function() { var a = arguments; var out = this.copy(); for( i = 0; i < a.length; i++ ) { var b = a[ i ]; for( j = 0; j < b.length; j++ ) out.push( b[ j ] ); } return out; }, push: function() { var a = arguments; for( var i = 0; i < a.length; i++ ) this[ this.length ] = a[ i ]; return this.length; }, pop: function() { if( this.length == 0 ) return undefined; var out = this[ this.length - 1 ]; this.length--; return out; }, unshift: function() { var a = arguments; for( var i = 0; i < a.length; i++ ) { this[ i + a.length ] = this[ i ]; this[ i ] = a[ i ]; } return this.length; }, shift: function() { if( this.length == 0 ) return undefined; var out = this[ 0 ]; for( var i = 1; i < this.length; i++ ) this[ i - 1 ] = this[ i ]; this.length--; return out; } } ); /* date extensions */ Object.extend(Date, { /* iso 8601 date format parser this was fun to write... thanks to: http://www.cl.cam.ac.uk/~mgk25/iso-time.html */ matchISOString: new RegExp( "^([0-9]{4})" + // year "(?:-(?=0[1-9]|1[0-2])|$)(..)?" + // month "(?:-(?=0[1-9]|[12][0-9]|3[01])|$)([0-9]{2})?" + // day of the month "(?:T(?=[01][0-9]|2[0-4])|$)T?([0-9]{2})?" + // hours "(?::(?=[0-5][0-9])|\\+|-|Z|$)([0-9]{2})?" + // minutes "(?::(?=[0-5][0-9]|60$|60[+|-|Z]|60.0+)|\\+|-|Z|$):?([0-9]{2})?" + // seconds "(\.[0-9]+)?" + // fractional seconds "(Z|\\+[01][0-9]|\\+2[0-4]|-[01][0-9]|-2[0-4])?" + // timezone hours ":?([0-5][0-9]|60)?$" // timezone minutes ), fromISOString: function( string ) { var t = this.matchISOString.exec( string ); if( !t ) return undefined; var year = finiteInt( t[ 1 ], 10 ); var month = finiteInt( t[ 2 ], 10 ) - 1; var day = finiteInt( t[ 3 ], 10 ); var hours = finiteInt( t[ 4 ], 10 ); var minutes = finiteInt( t[ 5 ], 10 ); var seconds = finiteInt( t[ 6 ], 10 ); var milliseconds = finiteInt( Math.round( parseFloat( t[ 7 ] ) * 1000 ) ); var tzHours = finiteInt( t[ 8 ], 10 ); var tzMinutes = finiteInt( t[ 9 ], 10 ); var date = new this( 0 ); if( defined( t[ 8 ] ) ) { date.setUTCFullYear( year, month, day ); date.setUTCHours( hours, minutes, seconds, milliseconds ); var offset = (tzHours * 60 + tzMinutes) * 60000; if( offset ) date = new this( date - offset ); } else { date.setFullYear( year, month, day ); date.setHours( hours, minutes, seconds, milliseconds ); } return date; } } ); Object.extend(Date.prototype, { getISOTimezoneOffset: function() { var offset = -this.getTimezoneOffset(); var negative = false; if( offset < 0 ) { negative = true; offset *= -1; } var offsetHours = Math.floor( offset / 60 ).toString().pad( 2, "0" ); var offsetMinutes = Math.floor( offset % 60 ).toString().pad( 2, "0" ); return (negative ? "-" : "+") + offsetHours + ":" + offsetMinutes; }, toISODateString: function() { var year = this.getFullYear(); var month = (this.getMonth() + 1).toString().pad( 2, "0" ); var day = this.getDate().toString().pad( 2, "0" ); return year + "-" + month + "-" + day; }, toUTCISODateString: function() { var year = this.getUTCFullYear(); var month = (this.getUTCMonth() + 1).toString().pad( 2, "0" ); var day = this.getUTCDate().toString().pad( 2, "0" ); return year + "-" + month + "-" + day; }, toISOTimeString: function() { var hours = this.getHours().toString().pad( 2, "0" ); var minutes = this.getMinutes().toString().pad( 2, "0" ); var seconds = this.getSeconds().toString().pad( 2, "0" ); var milliseconds = this.getMilliseconds().toString().pad( 3, "0" ); var timezone = this.getISOTimezoneOffset(); return hours + ":" + minutes + ":" + seconds + "." + milliseconds + timezone; }, toUTCISOTimeString: function() { var hours = this.getUTCHours().toString().pad( 2, "0" ); var minutes = this.getUTCMinutes().toString().pad( 2, "0" ); var seconds = this.getUTCSeconds().toString().pad( 2, "0" ); var milliseconds = this.getUTCMilliseconds().toString().pad( 3, "0" ); return hours + ":" + minutes + ":" + seconds + "." + milliseconds + "Z"; }, toISOString: function() { return this.toISODateString() + "T" + this.toISOTimeString(); }, toUTCISOString: function() { return this.toUTCISODateString() + "T" + this.toUTCISOTimeString(); } } ); /* ajax */ if( !defined( window.XMLHttpRequest ) ) { window.XMLHttpRequest = function() { var types = [ "Microsoft.XMLHTTP", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP" ]; for( var i = 0; i < types.length; i++ ) { try { return new ActiveXObject( types[ i ] ); } catch( e ) {} } return undefined; } } /* DOM Library - Copyright 2005 Six Apart $Id: dom.js 278 2009-12-10 08:02:45Z pkornilov $ Copyright (c) 2005, Six Apart, Ltd. 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 "Six Apart" nor the names of its 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. */ /* Node class */ if(!window.Node) Node = {}; try { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_FRAGMENT_NODE: 11 } ); } catch( e ) {} /* DOM class */ if(!window.DOM) DOM = {}; Object.extend(DOM, { getElement: function( e ) { return (typeof e == "string" || typeof e == "number") ? document.getElementById( e ) : e; }, addEventListener: function( e, eventName, func, useCapture ) { try { if( e.addEventListener ) e.addEventListener( eventName, func, useCapture ); else if( e.attachEvent ) e.attachEvent( "on" + eventName, func ); else e[ "on" + eventName ] = func; } catch( e ) {} }, removeEventListener: function( e, eventName, func, useCapture ) { try { if( e.removeEventListener ) e.removeEventListener( eventName, func, useCapture ); else if( e.detachEvent ) e.detachEvent( "on" + eventName, func ); else e[ "on" + eventName ] = undefined; } catch( e ) {} }, ready: function(f, frame) { if (frame) { win = frame.contentWindow; } else { win = window; } if (/(?!.*?compatible|.*?webkit)^mozilla|opera/i.test(navigator.userAgent) && !frame) { document.addEventListener('DOMContentLoaded', f, false); } else { var go = function() { win.document.body ? f() : win.setTimeout(go, 1); } go(); } }, focus: function( e ) { try { e = DOM.getElement( e ); e.focus(); } catch( e ) {} }, blur: function( e ) { try { e = DOM.getElement( e ); e.blur(); } catch( e ) {} }, /* style */ getComputedStyle: function( e ) { if( e.currentStyle ) return e.currentStyle; var style = {}; var owner = DOM.getOwnerDocument( e ); if( owner && owner.defaultView && owner.defaultView.getComputedStyle ) { try { style = owner.defaultView.getComputedStyle( e, null ); } catch( e ) {} } return style; }, getStyle: function( e, p ) { var s = DOM.getComputedStyle( e ); return s[ p ]; }, // given a window (or defaulting to current window), returns // object with .x and .y of client's usable area getClientDimensions: function( w ) { if( !w ) w = window; var d = {}; // most browsers if( w.innerHeight ) { d.x = w.innerWidth; d.y = w.innerHeight; return d; } // IE6, strict var de = w.document.documentElement; if( de && de.clientHeight ) { d.x = de.clientWidth; d.y = de.clientHeight; return d; } // IE, misc if( document.body ) { d.x = document.body.clientWidth; d.y = document.body.clientHeight; return d; } return undefined; }, getDimensions: function( e ) { if( !e ) return undefined; var style = DOM.getComputedStyle( e ); return { offsetLeft: e.offsetLeft, offsetTop: e.offsetTop, offsetWidth: e.offsetWidth, offsetHeight: e.offsetHeight, clientWidth: e.clientWidth, clientHeight: e.clientHeight, offsetRight: e.offsetLeft + e.offsetWidth, offsetBottom: e.offsetTop + e.offsetHeight, clientLeft: finiteInt( style.borderLeftWidth ) + finiteInt( style.paddingLeft ), clientTop: finiteInt( style.borderTopWidth ) + finiteInt( style.paddingTop ), clientRight: e.clientLeft + e.clientWidth, clientBottom: e.clientTop + e.clientHeight }; }, getAbsoluteDimensions: function( e ) { var d = DOM.getDimensions( e ); if( !d ) return d; d.absoluteLeft = d.offsetLeft; d.absoluteTop = d.offsetTop; d.absoluteRight = d.offsetRight; d.absoluteBottom = d.offsetBottom; var bork = 0; while( e ) { try { // IE 6 sometimes gives an unwarranted error ("htmlfile: Unspecified error"). e = e.offsetParent; } catch ( err ) { log( "In DOM.getAbsoluteDimensions: " + err.message ); if ( ++bork > 25 ) return null; } if( !e ) return d; d.absoluteLeft += e.offsetLeft; d.absoluteTop += e.offsetTop; d.absoluteRight += e.offsetLeft; d.absoluteBottom += e.offsetTop; } return d; }, getIframeAbsoluteDimensions: function( e ) { var d = DOM.getAbsoluteDimensions( e ); if( !d ) return d; var iframe = DOM.getOwnerIframe( e ); if( !defined( iframe ) ) return d; var d2 = DOM.getIframeAbsoluteDimensions( iframe ); var scroll = DOM.getWindowScroll( iframe.contentWindow ); var left = d2.absoluteLeft - scroll.left; var top = d2.absoluteTop - scroll.top; d.absoluteLeft += left; d.absoluteTop += top; d.absoluteRight += left; d.absoluteBottom += top; return d; }, setLeft: function( e, v ) { e.style.left = finiteInt( v ) + "px"; }, setTop: function( e, v ) { e.style.top = finiteInt( v ) + "px"; }, setRight: function( e, v ) { e.style.right = finiteInt( v ) + "px"; }, setBottom: function( e, v ) { e.style.bottom = finiteInt( v ) + "px"; }, setWidth: function( e, v ) { e.style.width = max( 0, finiteInt( v ) ) + "px"; }, setHeight: function( e, v ) { e.style.height = max( 0, finiteInt( v ) ) + "px"; }, setZIndex: function( e, v ) { e.style.zIndex = finiteInt( v ); }, getWindowScroll: function( w ) { var s = { left: 0, top: 0 }; if (!w) w = window; var d = w.document; var de = d.documentElement; // most browsers if ( defined( w.pageXOffset ) ) { s.left = w.pageXOffset; s.top = w.pageYOffset; } // ie else if( de && defined( de.scrollLeft ) ) { s.left = de.scrollLeft; s.top = de.scrollTop; } // safari else if( defined( w.scrollX ) ) { s.left = w.scrollX; s.top = w.scrollY; } // opera else if( d.body && defined( d.body.scrollLeft ) ) { s.left = d.body.scrollLeft; s.top = d.body.scrollTop; } return s; }, getAbsoluteCursorPosition: function( event ) { event = event || window.event; var s = DOM.getWindowScroll( window ); return { x: s.left + event.clientX, y: s.top + event.clientY }; }, invisibleStyle: { display: "block", position: "absolute", left: 0, top: 0, width: 0, height: 0, margin: 0, border: 0, padding: 0, fontSize: "0.1px", lineHeight: 0, opacity: 0, MozOpacity: 0, filter: "alpha(opacity=0)" }, makeInvisible: function( e ) { for( var p in this.invisibleStyle ) { e.style[ p ] = this.invisibleStyle[ p ]; } }, /* text and selection related methods */ mergeTextNodes: function( n ) { var c = 0; while( n ) { if( n.nodeType == Node.TEXT_NODE && n.nextSibling && n.nextSibling.nodeType == Node.TEXT_NODE ) { n.nodeValue += n.nextSibling.nodeValue; n.parentNode.removeChild( n.nextSibling ); c++; } else { if( n.firstChild ) c += DOM.mergeTextNodes( n.firstChild ); n = n.nextSibling; } } return c; }, selectElement: function( e ) { var d = e.ownerDocument; // internet explorer if( d.body.createControlRange ) { var r = d.body.createControlRange(); r.addElement( e ); r.select(); } }, /* dom methods */ isImmutable: function( n ) { try { if( n.getAttribute( "contenteditable" ) == "false" ) return true; } catch( e ) {} return false; }, getImmutable: function( n ) { var immutable = null; while( n ) { if( DOM.isImmutable( n ) ) immutable = n; n = n.parentNode; } return immutable; }, getOwnerDocument: function( n ) { if( !n ) return document; if( n.ownerDocument ) return n.ownerDocument; if( n.getElementById ) return n; return document; }, getOwnerWindow: function( n ) { if( !n ) return window; if( n.parentWindow ) return n.parentWindow; var doc = DOM.getOwnerDocument( n ); if( doc && doc.defaultView ) return doc.defaultView; return window; }, getOwnerIframe: function( n ) { if( !n ) return undefined; var nw = DOM.getOwnerWindow( n ); var nd = DOM.getOwnerDocument( n ); var pw = nw.parent || nw.parentWindow; if( !pw ) return undefined; var parentDocument = pw.document; var es = parentDocument.getElementsByTagName( "iframe" ); for( var i = 0; i < es.length; i++ ) { var e = es[ i ]; try { var d = e.contentDocument || e.contentWindow.document; if( d === nd ) return e; }catch(err) {}; } return undefined; }, filterElementsByClassName: function( es, className ) { var filtered = []; for( var i = 0; i < es.length; i++ ) { var e = es[ i ]; if( DOM.hasClassName( e, className ) ) filtered[ filtered.length ] = e; } return filtered; }, filterElementsByAttribute: function( es, attr ) { if( !es ) return []; if( !defined( attr ) || attr == null || attr == "" ) return es; var filtered = []; for( var i = 0; i < es.length; i++ ) { var element = es[ i ]; if( !element ) continue; if( element.getAttribute && ( element.getAttribute( attr ) ) ) filtered[ filtered.length ] = element; } return filtered; }, filterElementsByTagName: function( es, tagName ) { if( tagName == "*" ) return es; var filtered = []; tagName = tagName.toLowerCase(); for( var i = 0; i < es.length; i++ ) { var e = es[ i ]; if( e.tagName && e.tagName.toLowerCase() == tagName ) filtered[ filtered.length ] = e; } return filtered; }, getElementsByTagAndAttribute: function( root, tagName, attr ) { if( !root ) root = document; var es = root.getElementsByTagName( tagName ); return DOM.filterElementsByAttribute( es, attr ); }, getElementsByAttribute: function( root, attr ) { return DOM.getElementsByTagAndAttribute( root, "*", attr ); }, getElementsByAttributeAndValue: function( root, attr, value ) { var es = DOM.getElementsByTagAndAttribute( root, "*", attr ); var filtered = []; for ( var i = 0; i < es.length; i++ ) if ( es[ i ].getAttribute( attr ) == value ) filtered.push( es[ i ] ); return filtered; }, getElementsByTagAndClassName: function( root, tagName, className ) { if( !root ) root = document; var elements = root.getElementsByTagName( tagName ); return DOM.filterElementsByClassName( elements, className ); }, getElementsByClassName: function( root, className ) { return DOM.getElementsByTagAndClassName( root, "*", className ); }, getAncestors: function( n, includeSelf ) { if( !n ) return []; var as = includeSelf ? [ n ] : []; n = n.parentNode; while( n ) { as.push( n ); n = n.parentNode; } return as; }, getAncestorsByTagName: function( n, tagName, includeSelf ) { var es = DOM.getAncestors( n, includeSelf ); return DOM.filterElementsByTagName( es, tagName ); }, getFirstAncestorByTagName: function( n, tagName, includeSelf ) { return DOM.getAncestorsByTagName( n, tagName, includeSelf )[ 0 ]; }, getAncestorsByClassName: function( n, className, includeSelf ) { var es = DOM.getAncestors( n, includeSelf ); return DOM.filterElementsByClassName( es, className ); }, getFirstAncestorByClassName: function( n, className, includeSelf ) { return DOM.getAncestorsByClassName( n, className, includeSelf )[ 0 ]; }, getAncestorsByTagAndClassName: function( n, tagName, className, includeSelf ) { var es = DOM.getAncestorsByTagName( n, tagName, includeSelf ); return DOM.filterElementsByClassName( es, className ); }, getFirstAncestorByTagAndClassName: function( n, tagName, className, includeSelf ) { return DOM.getAncestorsByTagAndClassName( n, tagName, className, includeSelf )[ 0 ]; }, getPreviousElement: function( n ) { n = n.previousSibling; while( n ) { if( n.nodeType == Node.ELEMENT_NODE ) return n; n = n.previousSibling; } return null; }, getNextElement: function( n ) { n = n.nextSibling; while( n ) { if( n.nodeType == Node.ELEMENT_NODE ) return n; n = n.nextSibling; } return null; }, isInlineNode: function( n ) { // text nodes are inline if( n.nodeType == Node.TEXT_NODE ) return n; // document nodes are non-inline if( n.nodeType == Node.DOCUMENT_NODE ) return false; // all nonelement nodes are inline if( n.nodeType != Node.ELEMENT_NODE ) return n; // br elements are not inline if( n.tagName && n.tagName.toLowerCase() == "br" ) return false; // examine the style property of the inline n var display = DOM.getStyle( n, "display" ); if( display && display.indexOf( "inline" ) >= 0 ) return n; }, isTextNode: function( n ) { if( n.nodeType == Node.TEXT_NODE ) return n; }, isInlineTextNode: function( n ) { if( n.nodeType == Node.TEXT_NODE ) return n; if( !DOM.isInlineNode( n ) ) return null; }, /* this and the following classname functions honor w3c case-sensitive classnames */ getClassNames: function( e ) { if( !e || !e.className ) return []; return e.className.split( /\s+/g ); }, hasClassName: function( e, className ) { if( !e || !e.className ) return false; var cs = DOM.getClassNames( e ); for( var i = 0; i < cs.length; i++ ) { if( cs[ i ] == className ) return true; } return false; }, addClassName: function( e, className ) { if( !e || !className ) return false; var cs = DOM.getClassNames( e ); for( var i = 0; i < cs.length; i++ ) { if( cs[ i ] == className ) return true; } cs.push( className ); e.className = cs.join( " " ); return false; }, removeClassName: function( e, className ) { var r = false; if( !e || !e.className || !className ) return r; var cs = (e.className && e.className.length) ? e.className.split( /\s+/g ) : []; var ncs = []; for( var i = 0; i < cs.length; i++ ) { if( cs[ i ] == className ) { r = true; continue; } ncs.push( cs[ i ] ); } if( r ) e.className = ncs.join( " " ); return r; }, /* tree manipulation methods */ replaceWithChildNodes: function( n ) { var firstChild = n.firstChild; var parentNode = n.parentNode; while( n.firstChild ) parentNode.insertBefore( n.removeChild( n.firstChild ), n ); parentNode.removeChild( n ); return firstChild; }, /* factory methods */ createInvisibleInput: function( d ) { if( !d ) d = window.document; var e = document.createElement( "input" ); e.setAttribute( "autocomplete", "off" ); e.autocomplete = "off"; DOM.makeInvisible( e ); return e; }, getMouseEventAttribute: function( event, a ) { if( !a ) return; var es = DOM.getAncestors( event.target, true ); for( var i = 0; i < es.length; i++ ) { try { var e = es[ i ] var v = e.getAttribute ? e.getAttribute( a ) : null; if( v ) { event.attributeElement = e; event.attribute = v; return v; } } catch( e ) {} } }, setElementAttribute: function( e, a, v ) { /* safari workaround * safari's setAttribute assumes you want to use a namespace * when you have a colon in your attribute */ if ( navigator.userAgent.toLowerCase().match(/webkit/) ) { var at = e.attributes; for ( var i = 0; i < at.length; i++ ) if ( at[ i ].name == a ) return at[ i ].nodeValue = v; } else e.setAttribute( a, v ); }, swapAttributes: function( e, tg, at ) { var ar = e.getAttribute( tg ); if( !ar ) return false; /* clone the node with all children */ if ( e.tagName.toLowerCase() == 'script' ) { /* only clone and replace script tags */ var cl = e.cloneNode( true ); if ( !cl ) return false; DOM.setElementAttribute( cl, at, ar ); cl.removeAttribute( tg ); /* replace new, old */ return e.parentNode.replaceChild( cl, e ); } else { DOM.setElementAttribute( e, at, ar ); e.removeAttribute( tg ); } }, findPosX: function( e ) { var curleft = 0; if (e.offsetParent) { while (1) { curleft += e.offsetLeft; if (!e.offsetParent) { break; } e = e.offsetParent; } } else if (e.x) { curleft += e.x; } return curleft; }, findPosY: function( e ) { var curtop = 0; if (e.offsetParent) { while (1) { curtop += e.offsetTop; if (!e.offsetParent) { break; } e = e.offsetParent; } } else if (e.y) { curtop += e.y; } return curtop; }, getSelectedRange: function(node) { var start = 0, end = 0; if ('selectionStart' in node) { start = node.selectionStart; end = node.selectionEnd; } else if (node.createTextRange) { var range = document.selection.createRange(), dup = range.duplicate(); if (range.parentElement() == node) { if (node.type == 'text') { start = -dup.moveStart('character', -100000); end = start + range.text.length; } else // textarea { var rex = /\r/g; dup.moveToElementText(node); dup.setEndPoint('EndToStart', range); start = dup.text.replace(rex, '').length; dup.setEndPoint('EndToEnd', range); end = dup.text.replace(rex, '').length; dup = document.selection.createRange(); dup.moveToElementText(node); dup.moveStart('character', start); while (dup.move('character', -dup.compareEndPoints('StartToStart', range))) { start++; } dup.moveStart('character', end-start); while (dup.move('character', -dup.compareEndPoints('StartToEnd', range))) { end++; } } } } return { start: start, end: end } }, setSelectedRange: function(node, start, end) { // see https://bugzilla.mozilla.org/show_bug.cgi?id=265159 node.focus(); if (node.setSelectionRange) { node.setSelectionRange(start, end); return; } // IE, "else" for opera 10 else if (document.selection && document.selection.createRange) { var range = node.createTextRange(); range.collapse(true); range.moveEnd('character', end); range.moveStart('character', start); range.select(); } } } ); $ = DOM.getElement; var HTTPReq = new Object; HTTPReq.create = function () { var xtr; var ex; if (typeof(XMLHttpRequest) != "undefined") { xtr = new XMLHttpRequest(); } else { try { xtr = new ActiveXObject("Msxml2.XMLHTTP.4.0"); } catch (ex) { try { xtr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (ex) { } } } // let me explain this. Opera 8 does XMLHttpRequest, but not setRequestHeader. // no problem, we thought: we'll test for setRequestHeader and if it's not present // then fall back to the old behavior (treat it as not working). BUT --- IE6 won't // let you even test for setRequestHeader without throwing an exception (you need // to call .open on the .xtr first or something) try { if (xtr && ! xtr.setRequestHeader) xtr = null; } catch (ex) { } return xtr; }; // opts: // url, onError, onData, method (GET or POST), data // url: where to get/post to // onError: callback on error // onData: callback on data received // method: HTTP method, GET by default // data: what to send to the server (urlencoded) HTTPReq.getJSON = function (opts) { var req = HTTPReq.create(); if (! req) { if (opts.onError) opts.onError("noxmlhttprequest"); return; } var state_callback = function () { if (req.readyState != 4) return; if (req.status != 200) { if (opts.onError) opts.onError(req.status ? "status: " + req.status : "no data"); return; } var resObj; var e; try { eval("resObj = " + req.responseText + ";"); } catch (e) { } if (e || ! resObj) { if (opts.onError) opts.onError("Error parsing response: \"" + req.responseText + "\""); return; } if (opts.onData) opts.onData(resObj); }; req.onreadystatechange = state_callback; var method = opts.method || "GET"; var data = opts.data || null; var url = opts.url; if (opts.method == "GET" && opts.data) { url += url.match(/\?/) ? "&" : "?"; url += opts.data } url += url.match(/\?/) ? "&" : "?"; url += "_rand=" + Math.random(); req.open(method, url, true); // we should send null unless we're in a POST var to_send = null; if (method.toUpperCase() == "POST") { req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); to_send = data; } req.send(to_send); }; HTTPReq.formEncoded = function (vars) { var enc = []; var e; for (var key in vars) { enc.push(encodeURIComponent(key) + "=" + encodeURIComponent(vars[key])); } return enc.join("&"); }; // This file contains general-purpose LJ code LiveJournal = { hooks: {} // The hook mappings } LiveJournal.register_hook = function (hook, func) { if (! LiveJournal.hooks[hook]) LiveJournal.hooks[hook] = []; LiveJournal.hooks[hook].push(func); }; // args: hook, params to pass to hook LiveJournal.run_hook = function () { var a = arguments; var hookfuncs = LiveJournal.hooks[a[0]]; if (!hookfuncs || !hookfuncs.length) return; var hookargs = []; for (var i = 1; i < a.length; i++) { hookargs.push(a[i]); } var rv = null; hookfuncs.forEach(function (hookfunc) { rv = hookfunc.apply(null, hookargs); }); return rv; }; LiveJournal.initPage = function () { // set up various handlers for every page LiveJournal.initInboxUpdate(); AdEngine.init(); // run other hooks LiveJournal.run_hook("page_load"); }; jQuery(LiveJournal.initPage); // Set up a timer to keep the inbox count updated LiveJournal.initInboxUpdate = function () { // Don't run if not logged in or this is disabled if (! Site || ! Site.has_remote || ! Site.inbox_update_poll) return; // Don't run if no inbox count var unread = $("LJ_Inbox_Unread_Count"); if (! unread) return; // Update every five minutes window.setInterval(LiveJournal.updateInbox, 1000 * 60 * 5); }; // Do AJAX request to find the number of unread items in the inbox LiveJournal.updateInbox = function () { var postData = { "action": "get_unread_items" }; var opts = { "data": HTTPReq.formEncoded(postData), "method": "POST", "onData": LiveJournal.gotInboxUpdate }; opts.url = Site.currentJournal ? "/" + Site.currentJournal + "/__rpc_esn_inbox" : "/__rpc_esn_inbox"; HTTPReq.getJSON(opts); }; // We received the number of unread inbox items from the server LiveJournal.gotInboxUpdate = function (resp) { if (! resp || resp.error) return; var unread = $("LJ_Inbox_Unread_Count"); if (! unread) return; unread.innerHTML = resp.unread_count ? " (" + resp.unread_count + ")" : ""; }; // Placeholder onclick event LiveJournal.placeholderClick = function(link, html) { // use replaceChild for no blink scroll effect link.parentNode.parentNode.replaceChild(jQuery(unescape(html))[0], link.parentNode); return false } // handy utilities to create elements with just text in them function _textSpan () { return _textElements("span", arguments); } function _textDiv () { return _textElements("div", arguments); } function _textElements (eleType, txts) { var ele = []; for (var i = 0; i < txts.length; i++) { var node = document.createElement(eleType); node.innerHTML = txts[i]; ele.push(node); } return ele.length == 1 ? ele[0] : ele; }; LiveJournal.pollAnswerClick = function(e, data) { if (!data.pollid || !data.pollqid) return false; var xhr = jQuery.post(LiveJournal.getAjaxUrl('poll'), { pollid : data.pollid, pollqid : data.pollqid, page : data.page, pagesize : data.pagesize, action : 'get_answers' }, function(data, status) { status == 'success' ? LiveJournal.pollAnswersReceived(data): LiveJournal.ajaxError(data); }, 'json'); jQuery(e).hourglass(xhr); return false; } LiveJournal.pollAnswersReceived = function(answers) { if (!answers || !answers.pollid || !answers.pollqid) return; if (answers.error) return LiveJournal.ajaxError(answers.error); var id = '#LJ_Poll_' + answers.pollid + '_' + answers.pollqid, to_remove = '.LJ_PollAnswerLink, .lj_pollanswer, .lj_pollanswer_paging', html = '
' + (answers.answer_html || '(No answers)') + '
'; answers.paging_html && (html += '
' + answers.paging_html + '
'); jQuery(id).find(to_remove).remove() .end().prepend(html).find('.lj_pollanswer').ljAddContextualPopup(); } // gets a url for doing ajax requests LiveJournal.getAjaxUrl = function (action) { // if we are on a journal subdomain then our url will be // /journalname/__rpc_action instead of /__rpc_action return Site.currentJournal ? "/" + Site.currentJournal + "/__rpc_" + action : "/__rpc_" + action; }; // generic handler for ajax errors LiveJournal.ajaxError = function (err) { if (LJ_IPPU) { LJ_IPPU.showNote("Error: " + err); } else { alert("Error: " + err); } }; LiveJournal.insertAdsMulti = function (params) { var i = 0; var containers = []; for (i = 0; i < params.length; i++) { if (! params[i].html || params[i].html == "
    \n
") continue; AdEngine.insertAdResponse( params[i] ); containers.push(document.getElementById(params[i].id)); } // add the ad box style to the containers containers.forEach(function (container) { if (! container) return; DOM.addClassName(container.parentNode, "lj_content_ad"); DOM.removeClassName(container.parentNode, "lj_inactive_ad"); }); }; // given a URL, parse out the GET args and return them in a hash LiveJournal.parseGetArgs = function (url) { var getArgsHash = {}; var urlParts = url.split("?"); if (!urlParts[1]) return getArgsHash; var getArgs = urlParts[1].split("&"); for(var arg=0;arg