/* This file was compressed using MbCompression library. http://blog.mironabramson.com */ /*!
* jQuery JavaScript Library v1.4
* http://jquery.com/
*
* Copyright 2010, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://docs.jquery.com/License
*
* Includes Sizzle.js
* http://sizzlejs.com/
* Copyright 2010, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
* Date: Wed Jan 13 15:23:05 2010 -0500
*/
(function(A, w) {
    function oa() { if (!c.isReady) { try { s.documentElement.doScroll("left") } catch (a) { setTimeout(oa, 1); return } c.ready() } } function La(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 $(a, b, d, f, e, i) {
        var j = a.length; if (typeof b === "object") { for (var o in b) $(a, o, b[o], f, e, d); return a } if (d !== w) { f = !i && f && c.isFunction(d); for (o = 0; o < j; o++) e(a[o], b, f ? d.call(a[o], o, e(a[o], b)) : d, i); return a } return j ?
e(a[0], b) : null
    } function K() { return (new Date).getTime() } function aa() { return false } function ba() { return true } function pa(a, b, d) { d[0].type = a; return c.event.handle.apply(b, d) } function qa(a) {
        var b = true, d = [], f = [], e = arguments, i, j, o, p, n, t = c.extend({}, c.data(this, "events").live); for (p in t) { j = t[p]; if (j.live === a.type || j.altLive && c.inArray(a.type, j.altLive) > -1) { i = j.data; i.beforeFilter && i.beforeFilter[a.type] && !i.beforeFilter[a.type](a) || f.push(j.selector) } else delete t[p] } i = c(a.target).closest(f, a.currentTarget);
        n = 0; for (l = i.length; n < l; n++) for (p in t) { j = t[p]; o = i[n].elem; f = null; if (i[n].selector === j.selector) { if (j.live === "mouseenter" || j.live === "mouseleave") f = c(a.relatedTarget).closest(j.selector)[0]; if (!f || f !== o) d.push({ elem: o, fn: j }) } } n = 0; for (l = d.length; n < l; n++) { i = d[n]; a.currentTarget = i.elem; a.data = i.fn.data; if (i.fn.apply(i.elem, e) === false) { b = false; break } } return b
    } function ra(a, b) { return ["live", a, b.replace(/\./g, "`").replace(/ /g, "&")].join(".") } function sa(a) {
        return !a || !a.parentNode || a.parentNode.nodeType ===
11
    } function ta(a, b) { var d = 0; b.each(function() { if (this.nodeName === (a[d] && a[d].nodeName)) { var f = c.data(a[d++]), e = c.data(this, f); if (f = f && f.events) { delete e.handle; e.events = {}; for (var i in f) for (var j in f[i]) c.event.add(this, i, f[i][j], f[i][j].data) } } }) } function ua(a, b, d) {
        var f, e, i; if (a.length === 1 && typeof a[0] === "string" && a[0].length < 512 && a[0].indexOf("<option") < 0) { e = true; if (i = c.fragments[a[0]]) if (i !== 1) f = i } if (!f) { b = b && b[0] ? b[0].ownerDocument || b[0] : s; f = b.createDocumentFragment(); c.clean(a, b, f, d) } if (e) c.fragments[a[0]] =
i ? f : 1; return { fragment: f, cacheable: e}
    } function T(a) { for (var b = 0, d, f; (d = a[b]) != null; b++) if (!c.noData[d.nodeName.toLowerCase()] && (f = d[H])) delete c.cache[f] } function L(a, b) { var d = {}; c.each(va.concat.apply([], va.slice(0, b)), function() { d[this] = a }); return d } function wa(a) { return "scrollTo" in a && a.document ? a : a.nodeType === 9 ? a.defaultView || a.parentWindow : false } var c = function(a, b) { return new c.fn.init(a, b) }, Ma = A.jQuery, Na = A.$, s = A.document, U, Oa = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/, Pa = /^.[^:#\[\.,]*$/, Qa = /\S/,
Ra = /^(\s|\u00A0)+|(\s|\u00A0)+$/g, Sa = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, P = navigator.userAgent, xa = false, Q = [], M, ca = Object.prototype.toString, da = Object.prototype.hasOwnProperty, ea = Array.prototype.push, R = Array.prototype.slice, V = 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 (typeof a === "string") if ((d = Oa.exec(a)) && (d[1] || !b)) if (d[1]) {
        f = b ? b.ownerDocument || b : s; if (a = Sa.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 = ua([d[1]], [f]); a = (a.cacheable ? a.fragment.cloneNode(true) : a.fragment).childNodes } 
    } else { if (b = s.getElementById(d[2])) { if (b.id !== d[2]) return U.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) } else return !b || b.jquery ? (b || U).find(a) : c(b).find(a); else if (c.isFunction(a)) return U.ready(a); if (a.selector !== w) {
        this.selector = a.selector;
        this.context = a.context
    } return c.isArray(a) ? this.setArray(a) : c.makeArray(a, this)
}, selector: "", jquery: "1.4", 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) { a = c(a || null); a.prevObject = this; a.context = this.context; if (b === "find") a.selector = this.selector + (this.selector ? " " : "") + d; else if (b) a.selector = this.selector + "." + b + "(" + d + ")"; return a }, setArray: function(a) {
    this.length =
0; ea.apply(this, a); return this
}, 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: ea, 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, i, j, 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 < d; b++) if ((e = arguments[b]) != null) for (i in e) {
        j = a[i]; o = e[i]; if (a !== o) if (f && o && (c.isPlainObject(o) || c.isArray(o))) { j = j && (c.isPlainObject(j) || c.isArray(j)) ? j : c.isArray(o) ? [] : {}; a[i] = c.extend(f, j, o) } else if (o !== w) a[i] =
o
    } return a
}; c.extend({ noConflict: function(a) { A.$ = Na; if (a) A.jQuery = Ma; return c }, isReady: false, ready: function() { if (!c.isReady) { if (!s.body) return setTimeout(c.ready, 13); c.isReady = true; if (Q) { for (var a, b = 0; a = Q[b++]; ) a.call(s, c); Q = null } c.fn.triggerHandler && c(s).triggerHandler("ready") } }, bindReady: function() {
    if (!xa) {
        xa = true; if (s.readyState === "complete") return c.ready(); if (s.addEventListener) { s.addEventListener("DOMContentLoaded", M, false); A.addEventListener("load", c.ready, false) } else if (s.attachEvent) {
            s.attachEvent("onreadystatechange",
M); A.attachEvent("onload", c.ready); var a = false; try { a = A.frameElement == null } catch (b) { } s.documentElement.doScroll && a && oa()
        } 
    } 
}, isFunction: function(a) { return ca.call(a) === "[object Function]" }, isArray: function(a) { return ca.call(a) === "[object Array]" }, isPlainObject: function(a) { if (!a || ca.call(a) !== "[object Object]" || a.nodeType || a.setInterval) return false; if (a.constructor && !da.call(a, "constructor") && !da.call(a.constructor.prototype, "isPrototypeOf")) return false; var b; for (b in a); return b === w || da.call(a, b) },
    isEmptyObject: function(a) { for (var b in a) return false; return true }, noop: function() { }, globalEval: function(a) { if (a && Qa.test(a)) { var b = s.getElementsByTagName("head")[0] || s.documentElement, d = s.createElement("script"); d.type = "text/javascript"; if (c.support.scriptEval) d.appendChild(s.createTextNode(a)); else d.text = a; b.insertBefore(d, b.firstChild); b.removeChild(d) } }, nodeName: function(a, b) { return a.nodeName && a.nodeName.toUpperCase() === b.toUpperCase() }, each: function(a, b, d) {
        var f, e = 0, i = a.length, j = i === w || c.isFunction(a);
        if (d) if (j) for (f in a) { if (b.apply(a[f], d) === false) break } else for (; e < i; ) { if (b.apply(a[e++], d) === false) break } else if (j) for (f in a) { if (b.call(a[f], f, a[f]) === false) break } else for (d = a[0]; e < i && b.call(d, e, d) !== false; d = a[++e]); return a
    }, trim: function(a) { return (a || "").replace(Ra, "") }, makeArray: function(a, b) { b = b || []; if (a != null) a.length == null || typeof a === "string" || c.isFunction(a) || typeof a !== "function" && a.setInterval ? ea.call(b, a) : c.merge(b, a); return b }, inArray: function(a, b) {
        if (b.indexOf) return b.indexOf(a); for (var d =
0, f = b.length; d < f; d++) if (b[d] === a) return d; return -1
    }, merge: function(a, b) { var d = a.length, f = 0; if (typeof b.length === "number") for (var e = b.length; f < e; f++) a[d++] = b[f]; else for (; b[f] !== w; ) a[d++] = b[f++]; a.length = d; return a }, grep: function(a, b, d) { for (var f = [], e = 0, i = a.length; e < i; e++) !d !== !b(a[e], e) && f.push(a[e]); return f }, map: function(a, b, d) { for (var f = [], e, i = 0, j = a.length; i < j; i++) { e = b(a[i], i, d); if (e != null) f[f.length] = e } return f.concat.apply([], f) }, guid: 1, proxy: function(a, b, d) {
        if (arguments.length === 2) if (typeof b ===
"string") { d = a; a = d[b]; b = w } else if (b && !c.isFunction(b)) { d = b; b = w } if (!b && a) b = function() { return a.apply(d || this, arguments) }; if (a) b.guid = a.guid = a.guid || b.guid || c.guid++; return b
    }, uaMatch: function(a) {
        var b = { browser: "" }; a = a.toLowerCase(); if (/webkit/.test(a)) b = { browser: "webkit", version: /webkit[\/ ]([\w.]+)/ }; else if (/opera/.test(a)) b = { browser: "opera", version: /version/.test(a) ? /version[\/ ]([\w.]+)/ : /opera[\/ ]([\w.]+)/ }; else if (/msie/.test(a)) b = { browser: "msie", version: /msie ([\w.]+)/ }; else if (/mozilla/.test(a) &&
!/compatible/.test(a)) b = { browser: "mozilla", version: /rv:([\w.]+)/ }; b.version = (b.version && b.version.exec(a) || [0, "0"])[1]; return b
    }, browser: {}
}); P = c.uaMatch(P); if (P.browser) { c.browser[P.browser] = true; c.browser.version = P.version } if (c.browser.webkit) c.browser.safari = true; if (V) c.inArray = function(a, b) { return V.call(b, a) }; U = c(s); if (s.addEventListener) M = function() { s.removeEventListener("DOMContentLoaded", M, false); c.ready() }; else if (s.attachEvent) M = function() {
    if (s.readyState === "complete") {
        s.detachEvent("onreadystatechange",
M); c.ready()
    } 
}; if (V) c.inArray = function(a, b) { return V.call(b, a) }; (function() {
    c.support = {}; var a = s.documentElement, b = s.createElement("script"), d = s.createElement("div"), f = "script" + K(); d.style.display = "none"; d.innerHTML = "   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; var e = d.getElementsByTagName("*"), i = d.getElementsByTagName("a")[0]; if (!(!e || !e.length || !i)) {
        c.support = { leadingWhitespace: d.firstChild.nodeType === 3, tbody: !d.getElementsByTagName("tbody").length,
            htmlSerialize: !!d.getElementsByTagName("link").length, style: /red/.test(i.getAttribute("style")), hrefNormalized: i.getAttribute("href") === "/a", opacity: /^0.55$/.test(i.style.opacity), cssFloat: !!i.style.cssFloat, checkOn: d.getElementsByTagName("input")[0].value === "on", optSelected: s.createElement("select").appendChild(s.createElement("option")).selected, scriptEval: false, noCloneEvent: true, boxModel: null
        }; b.type = "text/javascript"; try { b.appendChild(s.createTextNode("window." + f + "=1;")) } catch (j) { } a.insertBefore(b,
a.firstChild); if (A[f]) { c.support.scriptEval = true; delete A[f] } a.removeChild(b); if (d.attachEvent && d.fireEvent) { d.attachEvent("onclick", function o() { c.support.noCloneEvent = false; d.detachEvent("onclick", o) }); d.cloneNode(true).fireEvent("onclick") } c(function() { var o = s.createElement("div"); o.style.width = o.style.paddingLeft = "1px"; s.body.appendChild(o); c.boxModel = c.support.boxModel = o.offsetWidth === 2; s.body.removeChild(o).style.display = "none" }); a = function(o) {
    var p = s.createElement("div"); o = "on" + o; var n = o in
p; if (!n) { p.setAttribute(o, "return;"); n = typeof p[o] === "function" } return n
}; c.support.submitBubbles = a("submit"); c.support.changeBubbles = a("change"); a = b = d = e = i = null
    } 
})(); c.props = { "for": "htmlFor", "class": "className", readonly: "readOnly", maxlength: "maxLength", cellspacing: "cellSpacing", rowspan: "rowSpan", colspan: "colSpan", tabindex: "tabIndex", usemap: "useMap", frameborder: "frameBorder" }; var H = "jQuery" + K(), Ta = 0, ya = {}, Ua = {}; c.extend({ cache: {}, expando: H, noData: { embed: true, object: true, applet: true }, data: function(a,
b, d) { if (!(a.nodeName && c.noData[a.nodeName.toLowerCase()])) { a = a == A ? ya : a; var f = a[H], e = c.cache; if (!b && !f) return null; f || (f = ++Ta); if (typeof b === "object") { a[H] = f; e = e[f] = c.extend(true, {}, b) } else e = e[f] ? e[f] : typeof d === "undefined" ? Ua : (e[f] = {}); if (d !== w) { a[H] = f; e[b] = d } return typeof b === "string" ? e[b] : e } }, removeData: function(a, b) {
    if (!(a.nodeName && c.noData[a.nodeName.toLowerCase()])) {
        a = a == A ? ya : a; var d = a[H], f = c.cache, e = f[d]; if (b) { if (e) { delete e[b]; c.isEmptyObject(e) && c.removeData(a) } } else {
            try { delete a[H] } catch (i) {
                a.removeAttribute &&
a.removeAttribute(H)
            } 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 za = /[\n\t]/g, fa = /\s+/, Va = /\r/g, Wa = /href|src|style/, Xa = /(button|input)/i, Ya = /(button|input|object|select|textarea)/i, Za = /^(a|area)$/i, Aa = /radio|checkbox/; c.fn.extend({ attr: function(a,
b) { return $(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(p) { var n = c(this); n.addClass(a.call(this, p, n.attr("class"))) }); if (a && typeof a === "string") for (var b = (a || "").split(fa), d = 0, f = this.length; d < f; d++) {
        var e = this[d]; if (e.nodeType === 1) if (e.className) for (var i = " " + e.className + " ", j = 0, o = b.length; j < o; j++) {
            if (i.indexOf(" " + b[j] + " ") < 0) e.className +=
" " + b[j]
        } else e.className = a
    } return this
}, removeClass: function(a) { if (c.isFunction(a)) return this.each(function(p) { var n = c(this); n.removeClass(a.call(this, p, n.attr("class"))) }); if (a && typeof a === "string" || a === w) for (var b = (a || "").split(fa), d = 0, f = this.length; d < f; d++) { var e = this[d]; if (e.nodeType === 1 && e.className) if (a) { for (var i = (" " + e.className + " ").replace(za, " "), j = 0, o = b.length; j < o; j++) i = i.replace(" " + b[j] + " ", " "); e.className = i.substring(1, i.length - 1) } else e.className = "" } return this }, toggleClass: function(a,
b) { var d = typeof a, f = typeof b === "boolean"; if (c.isFunction(a)) return this.each(function(e) { var i = c(this); i.toggleClass(a.call(this, e, i.attr("class"), b), b) }); return this.each(function() { if (d === "string") for (var e, i = 0, j = c(this), o = b, p = a.split(fa); e = p[i++]; ) { o = f ? o : !j.hasClass(e); j[o ? "addClass" : "removeClass"](e) } else if (d === "undefined" || d === "boolean") { this.className && c.data(this, "__className__", this.className); this.className = this.className || a === false ? "" : c.data(this, "__className__") || "" } }) }, hasClass: function(a) {
    a =
" " + a + " "; for (var b = 0, d = this.length; b < d; b++) if ((" " + this[b].className + " ").replace(za, " ").indexOf(a) > -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 i = b ? d : 0; for (d = b ? d + 1 : e.length; i < d; i++) { var j = e[i]; if (j.selected) { a = c(j).val(); if (b) return a; f.push(a) } } return f } if (Aa.test(b.type) &&
!c.support.checkOn) return b.getAttribute("value") === null ? "on" : b.value; return (b.value || "").replace(Va, "")
        } return w
    } var o = c.isFunction(a); return this.each(function(p) {
        var n = c(this), t = a; if (this.nodeType === 1) {
            if (o) t = a.call(this, p, n.val()); if (typeof t === "number") t += ""; if (c.isArray(t) && Aa.test(this.type)) this.checked = c.inArray(n.val(), t) >= 0; else if (c.nodeName(this, "select")) {
                var z = c.makeArray(t); c("option", this).each(function() { this.selected = c.inArray(c(this).val(), z) >= 0 }); if (!z.length) this.selectedIndex =
-1
            } else this.value = t
        } 
    })
} 
}); 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 i = Wa.test(b); if (b in a && f && !i) {
            if (e) { if (b === "type" && Xa.test(a.nodeName) && a.parentNode) throw "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 : Ya.test(a.nodeName) || Za.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 && i ? a.getAttribute(b, 2) : a.getAttribute(b); return a === null ? w : a
    } return c.style(a, b, d)
} 
}); var $a = 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; if (!d.guid) d.guid = c.guid++; if (f !== w) { d = c.proxy(d); d.data = f } var e = c.data(a, "events") || c.data(a, "events", {}), i = c.data(a, "handle"), j; if (!i) { j = function() { return typeof c !== "undefined" && !c.event.triggered ? c.event.handle.apply(j.elem, arguments) : w }; i = c.data(a, "handle", j) } if (i) {
            i.elem = a; b = b.split(/\s+/); for (var o, p = 0; o = b[p++]; ) {
                var n = o.split("."); o = n.shift(); d.type = n.slice(0).sort().join("."); var t = e[o], z = this.special[o] || {}; if (!t) {
                    t = e[o] = {};
                    if (!z.setup || z.setup.call(a, f, n, d) === false) if (a.addEventListener) a.addEventListener(o, i, false); else a.attachEvent && a.attachEvent("on" + o, i)
                } if (z.add) if ((n = z.add.call(a, d, f, n, t)) && c.isFunction(n)) { n.guid = n.guid || d.guid; d = n } t[d.guid] = d; this.global[o] = true
            } a = null
        } 
    } 
}, global: {}, remove: function(a, b, d) {
    if (!(a.nodeType === 3 || a.nodeType === 8)) {
        var f = c.data(a, "events"), e, i, j; if (f) {
            if (b === w || typeof b === "string" && b.charAt(0) === ".") for (i in f) this.remove(a, i + (b || "")); else {
                if (b.type) { d = b.handler; b = b.type } b = b.split(/\s+/);
                for (var o = 0; i = b[o++]; ) {
                    var p = i.split("."); i = p.shift(); var n = !p.length, t = c.map(p.slice(0).sort(), $a); t = new RegExp("(^|\\.)" + t.join("\\.(?:.*\\.)?") + "(\\.|$)"); var z = this.special[i] || {}; if (f[i]) {
                        if (d) { j = f[i][d.guid]; delete f[i][d.guid] } else for (var B in f[i]) if (n || t.test(f[i][B].type)) delete f[i][B]; z.remove && z.remove.call(a, p, j); for (e in f[i]) break; if (!e) {
                            if (!z.teardown || z.teardown.call(a, p) === false) if (a.removeEventListener) a.removeEventListener(i, c.data(a, "handle"), false); else a.detachEvent && a.detachEvent("on" +
i, c.data(a, "handle")); e = null; delete f[i]
                        } 
                    } 
                } 
            } for (e in f) break; if (!e) { if (B = c.data(a, "handle")) B.elem = null; c.removeData(a, "events"); c.removeData(a, "handle") } 
        } 
    } 
}, trigger: function(a, b, d, f) {
    var e = a.type || a; if (!f) {
        a = typeof a === "object" ? a[H] ? a : c.extend(c.Event(e), a) : c.Event(e); if (e.indexOf("!") >= 0) { a.type = e = e.slice(0, -1); a.exclusive = true } if (!d) { a.stopPropagation(); this.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; var i = c.data(d, "handle"); i && i.apply(d, b); var j, o; try { if (!(d && d.nodeName && c.noData[d.nodeName.toLowerCase()])) { j = d[e]; o = d["on" + e] } } catch (p) { } i = c.nodeName(d, "a") && e === "click"; if (!f && j && !a.isDefaultPrevented() && !i) { this.triggered = true; try { d[e]() } catch (n) { } } else if (o && d["on" + e].apply(d, b) === false) a.result = false; this.triggered = false; if (!a.isPropagationStopped()) (d = d.parentNode || d.ownerDocument) && c.event.trigger(a, b, d, true)
},
    handle: function(a) { var b, d; a = arguments[0] = c.event.fix(a || A.event); a.currentTarget = this; d = a.type.split("."); a.type = d.shift(); b = !d.length && !a.exclusive; var f = new RegExp("(^|\\.)" + d.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)"); d = (c.data(this, "events") || {})[a.type]; for (var e in d) { var i = d[e]; if (b || f.test(i.type)) { a.handler = i; a.data = i.data; i = i.apply(this, arguments); if (i !== w) { a.result = i; if (i === false) { a.preventDefault(); a.stopPropagation() } } if (a.isImmediatePropagationStopped()) break } } return a.result },
    props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), fix: function(a) {
        if (a[H]) return a; var b = a; a = c.Event(b); for (var d = this.props.length, f; d; ) { f = this.props[--d]; a[f] = b[f] } if (!a.target) a.target = a.srcElement ||
s; if (a.target.nodeType === 3) a.target = a.target.parentNode; if (!a.relatedTarget && a.fromElement) a.relatedTarget = a.fromElement === a.target ? a.toElement : a.fromElement; if (a.pageX == null && a.clientX != null) { b = s.documentElement; d = s.body; a.pageX = a.clientX + (b && b.scrollLeft || d && d.scrollLeft || 0) - (b && b.clientLeft || d && d.clientLeft || 0); a.pageY = a.clientY + (b && b.scrollTop || d && d.scrollTop || 0) - (b && b.clientTop || d && d.clientTop || 0) } if (!a.which && (a.charCode || a.charCode === 0 ? a.charCode : a.keyCode)) a.which = a.charCode || a.keyCode; if (!a.metaKey &&
a.ctrlKey) a.metaKey = a.ctrlKey; if (!a.which && a.button !== w) a.which = a.button & 1 ? 1 : a.button & 2 ? 3 : a.button & 4 ? 2 : 0; return a
    }, guid: 1E8, proxy: c.proxy, special: { ready: { setup: c.bindReady, teardown: c.noop }, live: { add: function(a, b) { c.extend(a, b || {}); a.guid += b.selector + b.live; c.event.add(this, b.live, qa, b) }, remove: function(a) { if (a.length) { var b = 0, d = new RegExp("(^|\\.)" + a[0] + "(\\.|$)"); c.each(c.data(this, "events").live || {}, function() { d.test(this.type) && b++ }); b < 1 && c.event.remove(this, a[0], qa) } }, special: {} }, beforeunload: { setup: function(a,
b, d) { if (this.setInterval) this.onbeforeunload = d; return false }, teardown: function(a, b) { if (this.onbeforeunload === b) this.onbeforeunload = null } }}
    }; c.Event = function(a) { if (!this.preventDefault) return new c.Event(a); if (a && a.type) { this.originalEvent = a; this.type = a.type } else this.type = a; this.timeStamp = K(); this[H] = true }; c.Event.prototype = { preventDefault: function() { this.isDefaultPrevented = ba; var a = this.originalEvent; if (a) { a.preventDefault && a.preventDefault(); a.returnValue = false } }, stopPropagation: function() {
        this.isPropagationStopped =
ba; var a = this.originalEvent; if (a) { a.stopPropagation && a.stopPropagation(); a.cancelBubble = true } 
    }, stopImmediatePropagation: function() { this.isImmediatePropagationStopped = ba; this.stopPropagation() }, isDefaultPrevented: aa, isPropagationStopped: aa, isImmediatePropagationStopped: aa
    }; var Ba = function(a) { for (var b = a.relatedTarget; b && b !== this; ) try { b = b.parentNode } catch (d) { break } if (b !== this) { a.type = a.data; c.event.handle.apply(this, arguments) } }, Ca = function(a) { a.type = a.data; c.event.handle.apply(this, arguments) }; c.each({ mouseenter: "mouseover",
        mouseleave: "mouseout"
    }, function(a, b) { c.event.special[a] = { setup: function(d) { c.event.add(this, b, d && d.selector ? Ca : Ba, a) }, teardown: function(d) { c.event.remove(this, b, d && d.selector ? Ca : Ba) } } }); if (!c.support.submitBubbles) c.event.special.submit = { setup: function(a, b, d) {
        if (this.nodeName.toLowerCase() !== "form") {
            c.event.add(this, "click.specialSubmit." + d.guid, function(f) { var e = f.target, i = e.type; if ((i === "submit" || i === "image") && c(e).closest("form").length) return pa("submit", this, arguments) }); c.event.add(this, "keypress.specialSubmit." +
d.guid, function(f) { var e = f.target, i = e.type; if ((i === "text" || i === "password") && c(e).closest("form").length && f.keyCode === 13) return pa("submit", this, arguments) })
        } else return false
    }, remove: function(a, b) { c.event.remove(this, "click.specialSubmit" + (b ? "." + b.guid : "")); c.event.remove(this, "keypress.specialSubmit" + (b ? "." + b.guid : "")) } 
    }; if (!c.support.changeBubbles) {
        var ga = /textarea|input|select/i; function Da(a) {
            var b = a.type, d = a.value; if (b === "radio" || b === "checkbox") d = a.checked; else if (b === "select-multiple") d = a.selectedIndex >
-1 ? c.map(a.options, function(f) { return f.selected }).join("-") : ""; else if (a.nodeName.toLowerCase() === "select") d = a.selectedIndex; return d
        } function ha(a, b) { var d = a.target, f, e; if (!(!ga.test(d.nodeName) || d.readOnly)) { f = c.data(d, "_change_data"); e = Da(d); if (e !== f) { if (a.type !== "focusout" || d.type !== "radio") c.data(d, "_change_data", e); if (d.type !== "select" && (f != null || e)) { a.type = "change"; return c.event.trigger(a, b, this) } } } } c.event.special.change = { filters: { focusout: ha, click: function(a) {
            var b = a.target, d = b.type; if (d ===
"radio" || d === "checkbox" || b.nodeName.toLowerCase() === "select") return ha.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 ha.call(this, a) }, beforeactivate: function(a) { a = a.target; a.nodeName.toLowerCase() === "input" && a.type === "radio" && c.data(a, "_change_data", Da(a)) } 
        }, setup: function(a, b, d) { for (var f in W) c.event.add(this, f + ".specialChange." + d.guid, W[f]); return ga.test(this.nodeName) },
            remove: function(a, b) { for (var d in W) c.event.remove(this, d + ".specialChange" + (b ? "." + b.guid : ""), W[d]); return ga.test(this.nodeName) } 
        }; var W = 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 i in d) this[b](i, f, d[i], e); return this } if (c.isFunction(f)) { thisObject = e; e = f; f = w } var j = b === "one" ? c.proxy(e, function(o) { c(this).unbind(o, j); return e.apply(this, arguments) }) : e; return d === "unload" && b !== "one" ? this.one(d, f, e, thisObject) : this.each(function() { c.event.add(this, d, j, f) }) } 
    }); c.fn.extend({ unbind: function(a, b) { if (typeof a === "object" && !a.preventDefault) { for (var d in a) this.unbind(d, a[d]); return this } return this.each(function() { c.event.remove(this, a, b) }) }, trigger: function(a,
b) { return this.each(function() { c.event.trigger(a, b, this) }) }, triggerHandler: function(a, b) { if (this[0]) { a = c.Event(a); a.preventDefault(); a.stopPropagation(); c.event.trigger(a, b, this[0]); return a.result } }, toggle: function(a) { for (var b = arguments, d = 1; d < b.length; ) c.proxy(a, b[d++]); return this.click(c.proxy(a, function(f) { var e = (c.data(this, "lastToggle" + a.guid) || 0) % d; c.data(this, "lastToggle" + a.guid, e + 1); f.preventDefault(); return b[e].apply(this, arguments) || false })) }, hover: function(a, b) {
    return this.mouseenter(a).mouseleave(b ||
a)
}, live: function(a, b, d) { if (c.isFunction(b)) { d = b; b = w } c(this.context).bind(ra(a, this.selector), { data: b, selector: this.selector, live: a }, d); return this }, die: function(a, b) { c(this.context).unbind(ra(a, this.selector), b ? { guid: b.guid + this.selector + a} : null); return this } 
    }); c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "), function(a, b) {
        c.fn[b] = function(d) {
            return d ?
this.bind(b, d) : this.trigger(b)
        }; if (c.attrFn) c.attrFn[b] = true
    }); A.attachEvent && !A.addEventListener && A.attachEvent("onunload", function() { for (var a in c.cache) if (c.cache[a].handle) try { c.event.remove(c.cache[a].handle.elem) } catch (b) { } }); (function() {
        function a(g) { for (var h = "", k, m = 0; g[m]; m++) { k = g[m]; if (k.nodeType === 3 || k.nodeType === 4) h += k.nodeValue; else if (k.nodeType !== 8) h += a(k.childNodes) } return h } function b(g, h, k, m, r, q) {
            r = 0; for (var v = m.length; r < v; r++) {
                var u = m[r]; if (u) {
                    u = u[g]; for (var y = false; u; ) {
                        if (u.sizcache ===
k) { y = m[u.sizset]; break } if (u.nodeType === 1 && !q) { u.sizcache = k; u.sizset = r } if (u.nodeName.toLowerCase() === h) { y = u; break } u = u[g]
                    } m[r] = y
                } 
            } 
        } function d(g, h, k, m, r, q) { r = 0; for (var v = m.length; r < v; r++) { var u = m[r]; if (u) { u = u[g]; for (var y = false; u; ) { if (u.sizcache === k) { y = m[u.sizset]; break } if (u.nodeType === 1) { if (!q) { u.sizcache = k; u.sizset = r } if (typeof h !== "string") { if (u === h) { y = true; break } } else if (p.filter(h, [u]).length > 0) { y = u; break } } u = u[g] } m[r] = y } } } var f = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
e = 0, i = Object.prototype.toString, j = false, o = true; [0, 0].sort(function() { o = false; return 0 }); var p = function(g, h, k, m) {
    k = k || []; var r = h = h || s; if (h.nodeType !== 1 && h.nodeType !== 9) return []; if (!g || typeof g !== "string") return k; for (var q = [], v, u, y, S, I = true, N = x(h), J = g; (f.exec(""), v = f.exec(J)) !== null; ) { J = v[3]; q.push(v[1]); if (v[2]) { S = v[3]; break } } if (q.length > 1 && t.exec(g)) if (q.length === 2 && n.relative[q[0]]) u = ia(q[0] + q[1], h); else for (u = n.relative[q[0]] ? [h] : p(q.shift(), h); q.length; ) {
        g = q.shift(); if (n.relative[g]) g += q.shift();
        u = ia(g, u)
    } else { if (!m && q.length > 1 && h.nodeType === 9 && !N && n.match.ID.test(q[0]) && !n.match.ID.test(q[q.length - 1])) { v = p.find(q.shift(), h, N); h = v.expr ? p.filter(v.expr, v.set)[0] : v.set[0] } if (h) { v = m ? { expr: q.pop(), set: B(m)} : p.find(q.pop(), q.length === 1 && (q[0] === "~" || q[0] === "+") && h.parentNode ? h.parentNode : h, N); u = v.expr ? p.filter(v.expr, v.set) : v.set; if (q.length > 0) y = B(u); else I = false; for (; q.length; ) { var E = q.pop(); v = E; if (n.relative[E]) v = q.pop(); else E = ""; if (v == null) v = h; n.relative[E](y, v, N) } } else y = [] } y || (y = u); if (!y) throw "Syntax error, unrecognized expression: " +
(E || g); if (i.call(y) === "[object Array]") if (I) if (h && h.nodeType === 1) for (g = 0; y[g] != null; g++) { if (y[g] && (y[g] === true || y[g].nodeType === 1 && F(h, y[g]))) k.push(u[g]) } else for (g = 0; y[g] != null; g++) y[g] && y[g].nodeType === 1 && k.push(u[g]); else k.push.apply(k, y); else B(y, k); if (S) { p(S, r, k, m); p.uniqueSort(k) } return k
}; p.uniqueSort = function(g) { if (D) { j = o; g.sort(D); if (j) for (var h = 1; h < g.length; h++) g[h] === g[h - 1] && g.splice(h--, 1) } return g }; p.matches = function(g, h) { return p(g, null, null, h) }; p.find = function(g, h, k) {
    var m, r; if (!g) return [];
    for (var q = 0, v = n.order.length; q < v; q++) { var u = n.order[q]; if (r = n.leftMatch[u].exec(g)) { var y = r[1]; r.splice(1, 1); if (y.substr(y.length - 1) !== "\\") { r[1] = (r[1] || "").replace(/\\/g, ""); m = n.find[u](r, h, k); if (m != null) { g = g.replace(n.match[u], ""); break } } } } m || (m = h.getElementsByTagName("*")); return { set: m, expr: g}
}; p.filter = function(g, h, k, m) {
    for (var r = g, q = [], v = h, u, y, S = h && h[0] && x(h[0]); g && h.length; ) {
        for (var I in n.filter) if ((u = n.leftMatch[I].exec(g)) != null && u[2]) {
            var N = n.filter[I], J, E; E = u[1]; y = false; u.splice(1, 1); if (E.substr(E.length -
1) !== "\\") { if (v === q) q = []; if (n.preFilter[I]) if (u = n.preFilter[I](u, v, k, q, m, S)) { if (u === true) continue } else y = J = true; if (u) for (var X = 0; (E = v[X]) != null; X++) if (E) { J = N(E, u, X, v); var Ea = m ^ !!J; if (k && J != null) if (Ea) y = true; else v[X] = false; else if (Ea) { q.push(E); y = true } } if (J !== w) { k || (v = q); g = g.replace(n.match[I], ""); if (!y) return []; break } } 
        } if (g === r) if (y == null) throw "Syntax error, unrecognized expression: " + g; else break; r = g
    } return v
}; var n = p.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\))?/
}, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(g) { return g.getAttribute("href") } },
    relative: { "+": function(g, h) { var k = typeof h === "string", m = k && !/\W/.test(h); k = k && !m; if (m) h = h.toLowerCase(); m = 0; for (var r = g.length, q; m < r; m++) if (q = g[m]) { for (; (q = q.previousSibling) && q.nodeType !== 1; ); g[m] = k || q && q.nodeName.toLowerCase() === h ? q || false : q === h } k && p.filter(h, g, true) }, ">": function(g, h) {
        var k = typeof h === "string"; if (k && !/\W/.test(h)) { h = h.toLowerCase(); for (var m = 0, r = g.length; m < r; m++) { var q = g[m]; if (q) { k = q.parentNode; g[m] = k.nodeName.toLowerCase() === h ? k : false } } } else {
            m = 0; for (r = g.length; m < r; m++) if (q = g[m]) g[m] =
k ? q.parentNode : q.parentNode === h; k && p.filter(h, g, true)
        } 
    }, "": function(g, h, k) { var m = e++, r = d; if (typeof h === "string" && !/\W/.test(h)) { var q = h = h.toLowerCase(); r = b } r("parentNode", h, m, g, q, k) }, "~": function(g, h, k) { var m = e++, r = d; if (typeof h === "string" && !/\W/.test(h)) { var q = h = h.toLowerCase(); r = b } r("previousSibling", h, m, g, q, k) } 
    }, find: { ID: function(g, h, k) { if (typeof h.getElementById !== "undefined" && !k) return (g = h.getElementById(g[1])) ? [g] : [] }, NAME: function(g, h) {
        if (typeof h.getElementsByName !== "undefined") {
            var k = [];
            h = h.getElementsByName(g[1]); for (var m = 0, r = h.length; m < r; m++) h[m].getAttribute("name") === g[1] && k.push(h[m]); return k.length === 0 ? null : k
        } 
    }, TAG: function(g, h) { return h.getElementsByTagName(g[1]) } 
    }, preFilter: { CLASS: function(g, h, k, m, r, q) { g = " " + g[1].replace(/\\/g, "") + " "; if (q) return g; q = 0; for (var v; (v = h[q]) != null; q++) if (v) if (r ^ (v.className && (" " + v.className + " ").replace(/[\t\n]/g, " ").indexOf(g) >= 0)) k || m.push(v); else if (k) h[q] = 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, k, m, r, q) { h = g[1].replace(/\\/g, ""); if (!q && n.attrMap[h]) g[1] = n.attrMap[h]; if (g[2] === "~=") g[4] = " " + g[4] + " "; return g }, PSEUDO: function(g, h, k, m, r) {
            if (g[1] === "not") if ((f.exec(g[3]) || "").length > 1 || /^\w/.test(g[3])) g[3] = p(g[3], null, null, h); else {
                g = p.filter(g[3], h, k, true ^ r); k || 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, k) { return !!p(k[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, k, 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, k) { return h < k[3] - 0 }, gt: function(g, h, k) { return h > k[3] - 0 }, nth: function(g, h, k) { return k[3] - 0 === h }, eq: function(g, h, k) { return k[3] - 0 === h } }, filter: { PSEUDO: function(g, h, k, m) {
        var r = h[1], q = n.filters[r]; if (q) return q(g, k, h, m); else if (r === "contains") return (g.textContent || g.innerText || a([g]) || "").indexOf(h[3]) >= 0; else if (r === "not") {
            h =
h[3]; k = 0; for (m = h.length; k < m; k++) if (h[k] === g) return false; return true
        } else throw "Syntax error, unrecognized expression: " + r;
    }, CHILD: function(g, h) {
        var k = h[1], m = g; switch (k) {
            case "only": case "first": for (; m = m.previousSibling; ) if (m.nodeType === 1) return false; if (k === "first") return true; m = g; case "last": for (; m = m.nextSibling; ) if (m.nodeType === 1) return false; return true; case "nth": k = h[2]; var r = h[3]; if (k === 1 && r === 0) return true; h = h[0]; var q = g.parentNode; if (q && (q.sizcache !== h || !g.nodeIndex)) {
                    var v = 0; for (m = q.firstChild; m; m =
m.nextSibling) if (m.nodeType === 1) m.nodeIndex = ++v; q.sizcache = h
                } g = g.nodeIndex - r; return k === 0 ? g === 0 : g % k === 0 && g / k >= 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 k = h[1]; g = n.attrHandle[k] ? n.attrHandle[k](g) : g[k] != null ? g[k] : g.getAttribute(k); k = g + ""; var m = h[2]; h = h[4]; return g == null ? m === "!=" : m ===
"=" ? k === h : m === "*=" ? k.indexOf(h) >= 0 : m === "~=" ? (" " + k + " ").indexOf(h) >= 0 : !h ? k && g !== false : m === "!=" ? k !== h : m === "^=" ? k.indexOf(h) === 0 : m === "$=" ? k.substr(k.length - h.length) === h : m === "|=" ? k === h || k.substr(0, h.length + 1) === h + "-" : false
    }, POS: function(g, h, k, m) { var r = n.setFilters[h[2]]; if (r) return r(g, k, h, m) } }
    }, t = n.match.POS; for (var z in n.match) {
            n.match[z] = new RegExp(n.match[z].source + /(?![^\[]*\])(?![^\(]*\))/.source); n.leftMatch[z] = new RegExp(/(^(?:.|\r|\n)*?)/.source + n.match[z].source.replace(/\\(\d+)/g, function(g,
h) { return "\\" + (h - 0 + 1) }))
        } var B = 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) { B = function(g, h) { h = h || []; if (i.call(g) === "[object Array]") Array.prototype.push.apply(h, g); else if (typeof g.length === "number") for (var k = 0, m = g.length; k < m; k++) h.push(g[k]); else for (k = 0; g[k]; k++) h.push(g[k]); return h } } var D; if (s.documentElement.compareDocumentPosition) D = function(g, h) {
            if (!g.compareDocumentPosition ||
!h.compareDocumentPosition) { if (g == h) j = true; return g.compareDocumentPosition ? -1 : 1 } g = g.compareDocumentPosition(h) & 4 ? -1 : g === h ? 0 : 1; if (g === 0) j = true; return g
        }; else if ("sourceIndex" in s.documentElement) D = function(g, h) { if (!g.sourceIndex || !h.sourceIndex) { if (g == h) j = true; return g.sourceIndex ? -1 : 1 } g = g.sourceIndex - h.sourceIndex; if (g === 0) j = true; return g }; else if (s.createRange) D = function(g, h) {
            if (!g.ownerDocument || !h.ownerDocument) { if (g == h) j = true; return g.ownerDocument ? -1 : 1 } var k = g.ownerDocument.createRange(), m =
h.ownerDocument.createRange(); k.setStart(g, 0); k.setEnd(g, 0); m.setStart(h, 0); m.setEnd(h, 0); g = k.compareBoundaryPoints(Range.START_TO_END, m); if (g === 0) j = true; return g
        }; (function() {
            var g = s.createElement("div"), h = "script" + (new Date).getTime(); g.innerHTML = "<a name='" + h + "'/>"; var k = s.documentElement; k.insertBefore(g, k.firstChild); if (s.getElementById(h)) {
                n.find.ID = function(m, r, q) {
                    if (typeof r.getElementById !== "undefined" && !q) return (r = r.getElementById(m[1])) ? r.id === m[1] || typeof r.getAttributeNode !== "undefined" &&
r.getAttributeNode("id").nodeValue === m[1] ? [r] : w : []
                }; n.filter.ID = function(m, r) { var q = typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id"); return m.nodeType === 1 && q && q.nodeValue === r } 
            } k.removeChild(g); k = g = null
        })(); (function() {
            var g = s.createElement("div"); g.appendChild(s.createComment("")); if (g.getElementsByTagName("*").length > 0) n.find.TAG = function(h, k) { k = k.getElementsByTagName(h[1]); if (h[1] === "*") { h = []; for (var m = 0; k[m]; m++) k[m].nodeType === 1 && h.push(k[m]); k = h } return k }; g.innerHTML = "<a href='#'></a>";
            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 = p, h = s.createElement("div"); h.innerHTML = "<p class='TEST'></p>"; if (!(h.querySelectorAll && h.querySelectorAll(".TEST").length === 0)) { p = function(m, r, q, v) { r = r || s; if (!v && r.nodeType === 9 && !x(r)) try { return B(r.querySelectorAll(m), q) } catch (u) { } return g(m, r, q, v) }; for (var k in g) p[k] = g[k]; h = null } } ();
        (function() { var g = s.createElement("div"); g.innerHTML = "<div class='test e'></div><div class='test'></div>"; 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, k, m) { if (typeof k.getElementsByClassName !== "undefined" && !m) return k.getElementsByClassName(h[1]) }; g = null } } })(); var F = 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 }, ia = function(g, h) { var k = [], m = "", r; for (h = h.nodeType ? [h] : h; r = n.match.PSEUDO.exec(g); ) { m += r[0]; g = g.replace(n.match.PSEUDO, "") } g = n.relative[g] ? g + "*" : g; r = 0; for (var q = h.length; r < q; r++) p(g, h[r], k); return p.filter(m, k) }; c.find = p; c.expr = p.selectors; c.expr[":"] = c.expr.filters; c.unique = p.uniqueSort; c.getText = a; c.isXMLDoc = x; c.contains = F
    })(); var ab = /Until$/, bb = /^(?:parents|prevUntil|prevAll)/,
cb = /,/; R = Array.prototype.slice; var Fa = function(a, b, d) { if (c.isFunction(b)) return c.grep(a, function(e, i) { return !!b.call(e, i, e) === d }); else if (b.nodeType) return c.grep(a, function(e) { return e === b === d }); else if (typeof b === "string") { var f = c.grep(a, function(e) { return e.nodeType === 1 }); if (Pa.test(b)) return c.filter(b, f, !d); else b = c.filter(b, a) } return c.grep(a, function(e) { return c.inArray(e, b) >= 0 === d }) }; c.fn.extend({ find: function(a) {
    for (var b = this.pushStack("", "find", a), d = 0, f = 0, e = this.length; f < e; f++) {
        d = b.length;
        c.find(a, this[f], b); if (f > 0) for (var i = d; i < b.length; i++) for (var j = 0; j < d; j++) if (b[j] === b[i]) { b.splice(i--, 1); break } 
    } return b
}, has: function(a) { var b = c(a); return this.filter(function() { for (var d = 0, f = b.length; d < f; d++) if (c.contains(this, b[d])) return true }) }, not: function(a) { return this.pushStack(Fa(this, a, false), "not", a) }, filter: function(a) { return this.pushStack(Fa(this, a, true), "filter", a) }, is: function(a) { return !!a && c.filter(a, this).length > 0 }, closest: function(a, b) {
    if (c.isArray(a)) {
        var d = [], f = this[0], e, i =
{}, j; if (f && a.length) { e = 0; for (var o = a.length; e < o; e++) { j = a[e]; i[j] || (i[j] = c.expr.match.POS.test(j) ? c(j, b || this.context) : j) } for (; f && f.ownerDocument && f !== b; ) { for (j in i) { e = i[j]; if (e.jquery ? e.index(f) > -1 : c(f).is(e)) { d.push({ selector: j, elem: f }); delete i[j] } } f = f.parentNode } } return d
    } var p = c.expr.match.POS.test(a) ? c(a, b || this.context) : null; return this.map(function(n, t) { for (; t && t.ownerDocument && t !== b; ) { if (p ? p.index(t) > -1 : c(t).is(a)) return t; t = t.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(sa(a[0]) || sa(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); ab.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 || cb.test(f)) && bb.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 || !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 Ga = / jQuery\d+="(?:\d+|null)"/g, Y = /^\s+/, db = /(<([\w:]+)[^>]*?)\/>/g, eb = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i, Ha = /<([\w:]+)/, fb = /<tbody/i, gb = /<|&\w+;/, hb = function(a, b, d) { return eb.test(d) ? a : b + "></" + d + ">" }, G = { option: [1, "<select multiple='multiple'>", "</select>"],
    legend: [1, "<fieldset>", "</fieldset>"], thead: [1, "<table>", "</table>"], tr: [2, "<table><tbody>", "</tbody></table>"], td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"], area: [1, "<map>", "</map>"], _default: [0, "", ""]
}; G.optgroup = G.option; G.tbody = G.tfoot = G.colgroup = G.caption = G.thead; G.th = G.td; if (!c.support.htmlSerialize) G._default = [1, "div<div>", "</div>"]; c.fn.extend({ text: function(a) {
    if (c.isFunction(a)) return this.each(function(b) {
        var d = c(this);
        return 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.getText(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) { 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
        } 
    }, 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(Ga, "").replace(Y, "")], f)[0] } else return this.cloneNode(true) }); if (a === true) { ta(this, b); ta(this.find("*"), b.find("*")) } return b }, html: function(a) {
        if (a === w) return this[0] && this[0].nodeType ===
1 ? this[0].innerHTML.replace(Ga, "") : null; else if (typeof a === "string" && !/<script/i.test(a) && (c.support.leadingWhitespace || !Y.test(a)) && !G[(Ha.exec(a) || ["", ""])[1].toLowerCase()]) try { for (var b = 0, d = this.length; b < d; b++) if (this[b].nodeType === 1) { T(this[b].getElementsByTagName("*")); this[b].innerHTML = a } } catch (f) { this.empty().append(a) } else c.isFunction(a) ? this.each(function(e) { var i = c(this), j = i.html(); i.empty().append(function() { return a.call(this, e, j) }) }) : this.empty().append(a); return this
    }, replaceWith: function(a) {
        if (this[0] &&
this[0].parentNode) { c.isFunction(a) || (a = c(a).detach()); return this.each(function() { var b = this.nextSibling, d = this.parentNode; c(this).remove(); b ? c(b).before(a) : c(d).append(a) }) } else return this.pushStack(c(c.isFunction(a) ? a() : a), "replaceWith", a)
    }, detach: function(a) { return this.remove(a, true) }, domManip: function(a, b, d) {
        function f(t) { return c.nodeName(t, "table") ? t.getElementsByTagName("tbody")[0] || t.appendChild(t.ownerDocument.createElement("tbody")) : t } var e, i, j = a[0], o = []; if (c.isFunction(j)) return this.each(function(t) {
            var z =
c(this); a[0] = j.call(this, t, b ? z.html() : w); return z.domManip(a, b, d)
        }); if (this[0]) { e = a[0] && a[0].parentNode && a[0].parentNode.nodeType === 11 ? { fragment: a[0].parentNode} : ua(a, this, o); if (i = e.fragment.firstChild) { b = b && c.nodeName(i, "tr"); for (var p = 0, n = this.length; p < n; p++) d.call(b ? f(this[p], i) : this[p], e.cacheable || this.length > 1 || p > 0 ? e.fragment.cloneNode(true) : e.fragment) } o && c.each(o, La) } 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); for (var e = 0, i = d.length; e < i; e++) { var j = (e > 0 ? this.clone(true) : this).get(); c.fn[b].apply(c(d[e]), j); f = f.concat(j) } return this.pushStack(f, a, d.selector) } }); c.each({ remove: function(a, b) { if (!a || c.filter(a, [this]).length) { if (!b && this.nodeType === 1) { T(this.getElementsByTagName("*")); T([this]) } this.parentNode && this.parentNode.removeChild(this) } }, empty: function() { for (this.nodeType === 1 && T(this.getElementsByTagName("*")); this.firstChild; ) this.removeChild(this.firstChild) } },
function(a, b) { c.fn[a] = function() { return this.each(b, arguments) } }); 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; var e = []; c.each(a, function(i, j) {
        if (typeof j === "number") j += ""; if (j) {
            if (typeof j === "string" && !gb.test(j)) j = b.createTextNode(j); else if (typeof j === "string") {
                j = j.replace(db, hb); var o = (Ha.exec(j) || ["", ""])[1].toLowerCase(), p = G[o] || G._default, n = p[0]; i = b.createElement("div"); for (i.innerHTML = p[1] + j + p[2]; n--; ) i = i.lastChild;
                if (!c.support.tbody) { n = fb.test(j); o = o === "table" && !n ? i.firstChild && i.firstChild.childNodes : p[1] === "<table>" && !n ? i.childNodes : []; for (p = o.length - 1; p >= 0; --p) c.nodeName(o[p], "tbody") && !o[p].childNodes.length && o[p].parentNode.removeChild(o[p]) } !c.support.leadingWhitespace && Y.test(j) && i.insertBefore(b.createTextNode(Y.exec(j)[0]), i.firstChild); j = c.makeArray(i.childNodes)
            } if (j.nodeType) e.push(j); else e = c.merge(e, j)
        } 
    }); if (d) for (a = 0; e[a]; a++) if (f && c.nodeName(e[a], "script") && (!e[a].type || e[a].type.toLowerCase() ===
"text/javascript")) f.push(e[a].parentNode ? e[a].parentNode.removeChild(e[a]) : e[a]); else { e[a].nodeType === 1 && e.splice.apply(e, [a + 1, 0].concat(c.makeArray(e[a].getElementsByTagName("script")))); d.appendChild(e[a]) } return e
} 
}); var ib = /z-?index|font-?weight|opacity|zoom|line-?height/i, Ia = /alpha\([^)]*\)/, Ja = /opacity=([^)]*)/, ja = /float/i, ka = /-([a-z])/ig, jb = /([A-Z])/g, kb = /^-?\d+(?:px)?$/i, lb = /^-?\d/, mb = { position: "absolute", visibility: "hidden", display: "block" }, nb = ["Left", "Right"], ob = ["Top", "Bottom"], pb = s.defaultView &&
s.defaultView.getComputedStyle, Ka = c.support.cssFloat ? "cssFloat" : "styleFloat", la = function(a, b) { return b.toUpperCase() }; c.fn.css = function(a, b) { return $(this, a, b, true, function(d, f, e) { if (e === w) return c.curCSS(d, f); if (typeof e === "number" && !ib.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 = Ia.test(a) ? a.replace(Ia, b) : b
        } return f.filter && f.filter.indexOf("opacity=") >= 0 ? parseFloat(Ja.exec(f.filter)[1]) / 100 + "" : ""
    } if (ja.test(b)) b = Ka; b = b.replace(ka, la); if (e) f[b] = d; return f[b]
}, css: function(a, b, d, f) {
    if (b === "width" || b === "height") {
        var e, i = b === "width" ? nb : ob; function j() {
            e = b === "width" ? a.offsetWidth : a.offsetHeight; f !== "border" && c.each(i, 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 ? j() : c.swap(a, mb, j); 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 = Ja.test(a.currentStyle.filter || "") ? parseFloat(RegExp.$1) / 100 + "" : ""; return f === "" ? "1" : f } if (ja.test(b)) b = Ka; if (!d && e && e[b]) f = e[b]; else if (pb) {
        if (ja.test(b)) b = "float"; b = b.replace(jb, "-$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(ka, la); f = a.currentStyle[b] || a.currentStyle[d]; if (!kb.test(f) && lb.test(f)) { b = e.left; var i = 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 = i } } 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 qb = K(), rb = /<script(.|\s)*?\/script>/gi, sb = /select|textarea/i, tb = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i, O = /=\?(&|$)/, ma = /\?/, ub = /(\?|&)_=.*?(&|$)/, vb = /^(\w+:)?\/\/([^\/?#]+)/,
wb = /%20/g; c.fn.extend({ _load: c.fn.load, load: function(a, b, d) {
    if (typeof a !== "string") return this._load(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" } c.ajax({ url: a, type: f, dataType: "html", data: b, context: this, complete: function(i, j) {
        if (j === "success" || j === "notmodified") this.html(e ? c("<div />").append(i.responseText.replace(rb,
"")).find(e) : i.responseText); d && this.each(d, [i.responseText, j, 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 || sb.test(this.nodeName) || tb.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(p, o, j, x); e.global && f("ajaxSuccess", [x, e]) } function d() { e.complete && e.complete.call(p, x, j); e.global && f("ajaxComplete", [x, e]); e.global && ! --c.active && c.event.trigger("ajaxStop") } function f(r, q) { (e.context ? c(e.context) : c.event).trigger(r, q) } var e = c.extend(true, {}, c.ajaxSettings, a), i, j, o, p = e.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") O.test(e.url) || (e.url += (ma.test(e.url) ? "&" : "?") + (e.jsonp || "callback") + "=?"); else if (!e.data || !O.test(e.data)) e.data = (e.data ? e.data + "&" : "") + (e.jsonp || "callback") + "=?"; e.dataType = "json" } if (e.dataType === "json" && (e.data && O.test(e.data) || O.test(e.url))) {
                i = e.jsonpCallback || "jsonp" + qb++; if (e.data) e.data = (e.data + "").replace(O, "=" + i + "$1"); e.url = e.url.replace(O, "=" + i + "$1"); e.dataType = "script"; A[i] = A[i] || function(r) {
                    o = r; b(); d(); A[i] = w; try { delete A[i] } catch (q) { } B &&
B.removeChild(C)
                } 
            } if (e.dataType === "script" && e.cache === null) e.cache = false; if (e.cache === false && n === "GET") { var t = K(), z = e.url.replace(ub, "$1_=" + t + "$2"); e.url = z + (z === e.url ? (ma.test(e.url) ? "&" : "?") + "_=" + t : "") } if (e.data && n === "GET") e.url += (ma.test(e.url) ? "&" : "?") + e.data; e.global && !c.active++ && c.event.trigger("ajaxStart"); t = (t = vb.exec(e.url)) && (t[1] && t[1] !== location.protocol || t[2] !== location.host); if (e.dataType === "script" && n === "GET" && t) {
                var B = s.getElementsByTagName("head")[0] || s.documentElement, C = s.createElement("script");
                C.src = e.url; if (e.scriptCharset) C.charset = e.scriptCharset; if (!i) { var D = false; C.onload = C.onreadystatechange = function() { if (!D && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) { D = true; b(); d(); C.onload = C.onreadystatechange = null; B && C.parentNode && B.removeChild(C) } } } B.insertBefore(C, B.firstChild); return w
            } var F = 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]) } t || x.setRequestHeader("X-Requested-With", "XMLHttpRequest"); x.setRequestHeader("Accept", e.dataType && e.accepts[e.dataType] ? e.accepts[e.dataType] + ", */*" : e.accepts._default)
                } catch (ia) { } if (e.beforeSend && e.beforeSend.call(p, 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(r) {
    if (!x || x.readyState === 0) { F || d(); F = true; if (x) x.onreadystatechange = c.noop } else if (!F && x && (x.readyState === 4 || r === "timeout")) {
        F = true; x.onreadystatechange = c.noop; j = r === "timeout" ? "timeout" : !c.httpSuccess(x) ? "error" : e.ifModified && c.httpNotModified(x, e.url) ? "notmodified" : "success"; if (j === "success") try { o = c.httpData(x, e.dataType, e) } catch (q) { j = "parsererror" } if (j === "success" || j === "notmodified") i || b(); else c.handleError(e, x, j); d(); r === "timeout" && x.abort(); if (e.async) x =
null
    } 
}; try { var h = x.abort; x.abort = function() { if (x) { h.call(x); if (x) x.readyState = 0 } g() } } catch (k) { } e.async && e.timeout > 0 && setTimeout(function() { x && !F && 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; if (e && a.documentElement.nodeName === "parsererror") throw "parsererror"; if (d &&
d.dataFilter) a = d.dataFilter(a, b); if (typeof a === "string") if (b === "json" || !b && f.indexOf("json") >= 0) if (/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) a = A.JSON && A.JSON.parse ? A.JSON.parse(a) : (new Function("return " + a))(); else throw "Invalid JSON: " + a; else if (b === "script" || !b && f.indexOf("javascript") >= 0) c.globalEval(a); return a
        }, param: function(a, b) {
            function d(e, i) {
                i =
c.isFunction(i) ? i() : i; f[f.length] = encodeURIComponent(e) + "=" + encodeURIComponent(i)
            } var f = []; if (b === w) b = c.ajaxSettings.traditional; c.isArray(a) || a.jquery ? c.each(a, function() { d(this.name, this.value) }) : c.each(a, function e(i, j) { if (c.isArray(j)) c.each(j, function(o, p) { b ? d(i, p) : e(i + "[" + (typeof p === "object" || c.isArray(p) ? o : "") + "]", p) }); else !b && j != null && typeof j === "object" ? c.each(j, function(o, p) { e(i + "[" + o + "]", p) }) : d(i, j) }); return f.join("&").replace(wb, "+")
        } 
    }); var na = {}, xb = /toggle|show|hide/, yb = /^([+-]=)?([\d+-.]+)(.*)$/,
Z, va = [["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"], ["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"], ["opacity"]]; c.fn.extend({ show: function(a, b) {
    if (a != null) return this.animate(L("show", 3), a, b); else {
        a = 0; for (b = this.length; a < b; a++) {
            var d = c.data(this[a], "olddisplay"); this[a].style.display = d || ""; if (c.css(this[a], "display") === "none") {
                d = this[a].nodeName; var f; if (na[d]) f = na[d]; else {
                    var e = c("<" + d + " />").appendTo("body"); f = e.css("display"); if (f === "none") f = "block"; e.remove();
                    na[d] = f
                } c.data(this[a], "olddisplay", f)
            } 
        } a = 0; for (b = this.length; a < b; a++) this[a].style.display = c.data(this[a], "olddisplay") || ""; return this
    } 
}, hide: function(a, b) { if (a != null) return this.animate(L("hide", 3), a, b); else { a = 0; for (b = this.length; a < b; a++) { var d = c.data(this[a], "olddisplay"); !d && d !== "none" && c.data(this[a], "olddisplay", c.css(this[a], "display")) } a = 0; for (b = this.length; a < b; a++) this[a].style.display = "none"; return this } }, _toggle: c.fn.toggle, toggle: function(a, b) {
    var d = typeof a === "boolean"; if (c.isFunction(a) &&
c.isFunction(b)) this._toggle.apply(this, arguments); else a == null || d ? this.each(function() { var f = d ? a : c(this).is(":hidden"); c(this)[f ? "show" : "hide"]() }) : this.animate(L("toggle", 3), a, b); return this
}, fadeTo: function(a, b, d) { return this.filter(":hidden").css("opacity", 0).show().end().animate({ opacity: b }, a, d) }, animate: function(a, b, d, f) {
    var e = c.speed(b, d, f); if (c.isEmptyObject(a)) return this.each(e.complete); return this[e.queue === false ? "each" : "queue"](function() {
        var i = c.extend({}, e), j, o = this.nodeType === 1 && c(this).is(":hidden"),
p = this; for (j in a) { var n = j.replace(ka, la); if (j !== n) { a[n] = a[j]; delete a[j]; j = n } if (a[j] === "hide" && o || a[j] === "show" && !o) return i.complete.call(this); if ((j === "height" || j === "width") && this.style) { i.display = c.css(this, "display"); i.overflow = this.style.overflow } if (c.isArray(a[j])) { (i.specialEasing = i.specialEasing || {})[j] = a[j][1]; a[j] = a[j][0] } } if (i.overflow != null) this.style.overflow = "hidden"; i.curAnim = c.extend({}, a); c.each(a, function(t, z) {
    var B = new c.fx(p, i, t); if (xb.test(z)) B[z === "toggle" ? o ? "show" : "hide" : z](a);
    else { var C = yb.exec(z), D = B.cur(true) || 0; if (C) { z = parseFloat(C[2]); var F = C[3] || "px"; if (F !== "px") { p.style[t] = (z || 1) + F; D = (z || 1) / B.cur(true) * D; p.style[t] = D + F } if (C[1]) z = (C[1] === "-=" ? -1 : 1) * z + D; B.custom(D, z, F) } else B.custom(D, z, "") } 
}); return true
    })
}, stop: function(a, b) { var d = c.timers; a && this.queue([]); this.each(function() { for (var f = d.length - 1; f >= 0; f--) if (d[f].elem === this) { b && d[f](true); d.splice(f, 1) } }); b || this.dequeue(); return this } 
}); c.each({ slideDown: L("show", 1), slideUp: L("hide", 1), slideToggle: L("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(i) { return e.step(i) } this.startTime = K(); 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) && !Z) Z = 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 = K(), 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.length; b++) a[b]() || a.splice(b--, 1); a.length || c.fx.stop() }, stop: function() { clearInterval(Z); Z = null }, speeds: { slow: 600, fast: 200, _default: 400 }, step: { opacity: function(a) { c.style(a.elem, "opacity", a.now) }, _default: function(a) {
    if (a.elem.style && a.elem.style[a.prop] !=
null) a.elem.style[a.prop] = (a.prop === "width" || a.prop === "height" ? Math.max(0, a.now) : a.now) + a.unit; else a.elem[a.prop] = a.now
} }
}); if (c.expr && c.expr.filters) c.expr.filters.animated = function(a) { return c.grep(c.timers, function(b) { return a === b.elem }).length }; c.fn.offset = "getBoundingClientRect" in s.documentElement ? function(a) {
    var b = this[0]; if (!b || !b.ownerDocument) return null; if (a) return this.each(function(e) { c.offset.setOffset(this, a, e) }); if (b === b.ownerDocument.body) return c.offset.bodyOffset(b); var d = b.getBoundingClientRect(),
f = b.ownerDocument; b = f.body; f = f.documentElement; return { top: d.top + (self.pageYOffset || c.support.boxModel && f.scrollTop || b.scrollTop) - (f.clientTop || b.clientTop || 0), left: d.left + (self.pageXOffset || c.support.boxModel && f.scrollLeft || b.scrollLeft) - (f.clientLeft || b.clientLeft || 0)}
} : function(a) {
    var b = this[0]; if (!b || !b.ownerDocument) return null; if (a) return this.each(function(t) { c.offset.setOffset(this, a, t) }); if (b === b.ownerDocument.body) return c.offset.bodyOffset(b); c.offset.initialize(); var d = b.offsetParent, f =
b, e = b.ownerDocument, i, j = e.documentElement, o = e.body; f = (e = e.defaultView) ? e.getComputedStyle(b, null) : b.currentStyle; for (var p = b.offsetTop, n = b.offsetLeft; (b = b.parentNode) && b !== o && b !== j; ) {
        if (c.offset.supportsFixedPosition && f.position === "fixed") break; i = e ? e.getComputedStyle(b, null) : b.currentStyle; p -= b.scrollTop; n -= b.scrollLeft; if (b === d) {
            p += b.offsetTop; n += b.offsetLeft; if (c.offset.doesNotAddBorder && !(c.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(b.nodeName))) {
                p += parseFloat(i.borderTopWidth) ||
0; n += parseFloat(i.borderLeftWidth) || 0
            } f = d; d = b.offsetParent
        } if (c.offset.subtractsBorderForOverflowNotVisible && i.overflow !== "visible") { p += parseFloat(i.borderTopWidth) || 0; n += parseFloat(i.borderLeftWidth) || 0 } f = i
    } if (f.position === "relative" || f.position === "static") { p += o.offsetTop; n += o.offsetLeft } if (c.offset.supportsFixedPosition && f.position === "fixed") { p += Math.max(j.scrollTop, o.scrollTop); n += Math.max(j.scrollLeft, o.scrollLeft) } return { top: p, left: n}
}; c.offset = { initialize: function() {
    var a = s.body, b = s.createElement("div"),
d, f, e, i = parseFloat(c.curCSS(a, "marginTop", true)) || 0; c.extend(b.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" }); b.innerHTML = "<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>"; 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 !== i; 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(), i = parseInt(c.curCSS(a, "top", true), 10) || 0, j = parseInt(c.curCSS(a, "left", true), 10) || 0; if (c.isFunction(b)) b = b.call(a, d, e); d = { top: b.top - e.top + i, left: b.left -
e.left + j
        }; "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], i; if (!e) return null; if (f !== w) return this.each(function() { if (i = wa(this)) i.scrollTo(!a ? f : c(i).scrollLeft(), a ? f : c(i).scrollTop()); else this[d] = f }); else return (i = wa(e)) ? "pageXOffset" in i ? i[a ? "pageYOffset" : "pageXOffset"] : c.support.boxModel && i.document.documentElement[d] || i.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; 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 Color Animations
 * Copyright 2007 John Resig
 * Released under the MIT and GPL licenses.
 */

(function(jQuery){

	// We override the animation for all of these color styles
	jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
		jQuery.fx.step[attr] = function(fx){
			if ( fx.state == 0 ) {
				fx.start = getColor( fx.elem, attr );
				fx.end = getRGB( fx.end );
			}

			fx.elem.style[attr] = "rgb(" + [
				Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),
				Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),
				Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
			].join(",") + ")";
		}
	});

	// Color Conversion functions from highlightFade
	// By Blair Mitchelmore
	// http://jquery.offput.ca/highlightFade/

	// Parse strings looking for color tuples [255,255,255]
	function getRGB(color) {
		var result;

		// Check if we're already dealing with an array of colors
		if ( color && color.constructor == Array && color.length == 3 )
			return color;

		// Look for rgb(num,num,num)
		if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
			return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];

		// Look for rgb(num%,num%,num%)
		if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
			return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];

		// Look for #a0b1c2
		if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
			return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];

		// Look for #fff
		if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
			return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];

		// Otherwise, we're most likely dealing with a named color
		return colors[jQuery.trim(color).toLowerCase()];
	}
	
	function getColor(elem, attr) {
		var color;

		do {
			color = jQuery.curCSS(elem, attr);

			// Keep going until we find an element that has color, or we hit the body
			if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )
				break; 

			attr = "backgroundColor";
		} while ( elem = elem.parentNode );

		return getRGB(color);
	};
	
	// Some named colors to work with
	// From Interface by Stefan Petre
	// http://interface.eyecon.ro/

	var colors = {
		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]
	};
	
})(jQuery);

// ColorBox v1.3.6 - a full featured, light-weight, customizable lightbox based on jQuery 1.3
// c) 2009 Jack Moore - www.colorpowered.com - jack@colorpowered.com
// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php

(function ($) {
	// Shortcuts (to increase compression)
	var colorbox = 'colorbox',
	hover = 'hover',
	TRUE = true,
	FALSE = false,
	cboxPublic,
	isIE = !$.support.opacity,
	isIE6 = isIE && !window.XMLHttpRequest,

	// Event Strings (to increase compression)
	cbox_open = 'cbox_open',
	cbox_load = 'cbox_load',
	cbox_complete = 'cbox_complete',
	cbox_cleanup = 'cbox_cleanup',
	cbox_closed = 'cbox_closed',
	cbox_resize = 'resize.cbox_resize',

	// Cached jQuery Object Variables
	$overlay,
	$cbox,
	$wrap,
	$content,
	$topBorder,
	$leftBorder,
	$rightBorder,
	$bottomBorder,
	$related,
	$window,
	$loaded,
	$loadingBay,
	$loadingOverlay,
	$loadingGraphic,
	$title,
	$current,
	$slideshow,
	$next,
	$prev,
	$close,

	// Variables for cached values or use across multiple functions
	interfaceHeight,
	interfaceWidth,
	loadedHeight,
	loadedWidth,
	element,
	bookmark,
	index,
	settings,
	open,
	active,
	
	// ColorBox Default Settings.	
	// See http://colorpowered.com/colorbox for details.
	defaults = {
		transition: "elastic",
		speed: 350,
		width: FALSE,
		height: FALSE,
		innerWidth: FALSE,
		innerHeight: FALSE,
		initialWidth: "400",
		initialHeight: "400",
		maxWidth: FALSE,
		maxHeight: FALSE,
		scalePhotos: TRUE,
		scrolling: TRUE,
		inline: FALSE,
		html: FALSE,
		iframe: FALSE,
		photo: FALSE,
		href: FALSE,
		title: FALSE,
		rel: FALSE,
		opacity: 0.9,
		preloading: TRUE,
		current: "image {current} of {total}",
		previous: "previous",
		next: "next",
		close: "close",
		open: FALSE,
		overlayClose: TRUE,
		
		slideshow: FALSE,
		slideshowAuto: TRUE,
		slideshowSpeed: 2500,
		slideshowStart: "start slideshow",
		slideshowStop: "stop slideshow",
		
		onOpen: FALSE,
		onLoad: FALSE,
		onComplete: FALSE,
		onCleanup: FALSE,
		onClosed: FALSE
	};
	
	// ****************
	// HELPER FUNCTIONS
	// ****************
		
	// Convert % values to pixels
	function setSize(size, dimension) {
		dimension = dimension === 'x' ? $window.width() : $window.height();//document.documentElement.clientWidth : document.documentElement.clientHeight;
		return (typeof size === 'string') ? Math.round((size.match(/%/) ? (dimension / 100) * parseInt(size, 10) : parseInt(size, 10))) : size;
	}

	// Checks an href to see if it is a photo.
	// There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.
	function isImage(url) {
		url = $.isFunction(url) ? url.call(element) : url;
		return settings.photo || url.match(/\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i);
	}
	
	// Assigns functions results to their respective settings.  This allows functions to be used to set ColorBox options.
	function process() {
		for (var i in settings) {
			if ($.isFunction(settings[i]) && i.substring(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
			    settings[i] = settings[i].call(element);
			}
		}
		settings.rel = settings.rel || element.rel;
		settings.href = settings.href || element.href;
		settings.title = settings.title || element.title;
	}

	function launch(elem) {
		
		element = elem;
		
		settings = $(element).data(colorbox);
		
		process(); // Convert functions to their returned values.
		
		if (settings.rel && settings.rel !== 'nofollow') {
			$related = $('.cboxElement').filter(function () {
				var relRelated = $(this).data(colorbox).rel || this.rel;
				return (relRelated === settings.rel);
			});
			index = $related.index(element);
			
			// Check direct calls to ColorBox.
			if (index < 0) {
				$related = $related.add(element);
				index = $related.length - 1;
			}
		} else {
			$related = $(element);
			index = 0;
		}
		
		if (!open) {
			open = TRUE;
			
			active = TRUE; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
			
			bookmark = element;
			
			bookmark.blur(); // Remove the focus from the calling element.
			
			// Set Navigation Key Bindings
			$(document).bind("keydown.cbox_close", function (e) {
				if (e.keyCode === 27) {
					e.preventDefault();
					cboxPublic.close();
				}
			}).bind("keydown.cbox_arrows", function (e) {
				if ($related.length > 1) {
					if (e.keyCode === 37) {
						e.preventDefault();
						$prev.click();
					} else if (e.keyCode === 39) {
						e.preventDefault();
						$next.click();
					}
				}
			});
			
			if (settings.overlayClose) {
				$overlay.css({"cursor": "pointer"}).one('click', cboxPublic.close);
			}
			
			$.event.trigger(cbox_open);
			if (settings.onOpen) {
				settings.onOpen.call(element);
			}
			
			$overlay.css({"opacity": settings.opacity}).show();
			
			// Opens inital empty ColorBox prior to content being loaded.
			settings.w = setSize(settings.initialWidth, 'x');
			settings.h = setSize(settings.initialHeight, 'y');
			cboxPublic.position(0);
			
			if (isIE6) {
				$window.bind('resize.cboxie6 scroll.cboxie6', function () {
					$overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});
				}).trigger("scroll.cboxie6");
			}
		}
		
		$current.add($prev).add($next).add($slideshow).add($title).hide();
		
		$close.html(settings.close).show();
		
		cboxPublic.slideshow();
		
		cboxPublic.load();
	}

	// ****************
	// PUBLIC FUNCTIONS
	// Usage format: $.fn.colorbox.close();
	// Usage from within an iframe: parent.$.fn.colorbox.close();
	// ****************
	
	cboxPublic = $.fn.colorbox = function (options, callback) {
		var $this = this;
		
		if (!$this.length) {
			if ($this.selector === '') { // empty selector means a direct call, ie: $.fn.colorbox();
				$this = $('<a/>');
				options.open = TRUE;
			} else { // else the selector didn't match anything, and colorbox should go ahead and return.
				return this;
			}
		}
		
		$this.each(function () {
			var data = $.extend({}, $(this).data(colorbox) ? $(this).data(colorbox) : defaults, options);
			
			$(this).data(colorbox, data).addClass("cboxElement");
			
			if (callback) {
				$(this).data(colorbox).onComplete = callback;
			}
		});
		
		if (options && options.open) {
			launch($this);
		}
		
		return this;
	};

	// Initialize ColorBox: store common calculations, preload the interface graphics, append the html.
	// This preps colorbox for a speedy open when clicked, and lightens the burdon on the browser by only
	// having to run once, instead of each time colorbox is opened.
	cboxPublic.init = function () {
		
		// jQuery object generator to save a bit of space
		function $div(id) {
			return $('<div id="cbox' + id + '"/>');
		}
		
		// Create & Append jQuery Objects
		$window = $(window);
		$cbox = $('<div id="colorbox"/>');
		$overlay = $div("Overlay").hide();
		$wrap = $div("Wrapper");
		$content = $div("Content").append(
			$loaded = $div("LoadedContent").css({width: 0, height: 0}),
			$loadingOverlay = $div("LoadingOverlay"),
			$loadingGraphic = $div("LoadingGraphic"),
			$title = $div("Title"),
			$current = $div("Current"),
			$slideshow = $div("Slideshow"),
			$next = $div("Next"),
			$prev = $div("Previous"),
			$close = $div("Close")
		);
		$wrap.append( // The 3x3 Grid that makes up ColorBox
			$('<div/>').append(
				$div("TopLeft"),
				$topBorder = $div("TopCenter"),
				$div("TopRight")
			),
			$('<div/>').append(
				$leftBorder = $div("MiddleLeft"),
				$content,
				$rightBorder = $div("MiddleRight")
			),
			$('<div/>').append(
				$div("BottomLeft"),
				$bottomBorder = $div("BottomCenter"),
				$div("BottomRight")
			)
		).children().children().css({'float': 'left'});
		
		$loadingBay = $("<div style='position:absolute; top:0; left:0; width:9999px; height:0;'/>");
		
		$('body').prepend($overlay, $cbox.append($wrap, $loadingBay));
				
		if (isIE) {
			$cbox.addClass('cboxIE');
			if (isIE6) {
				$overlay.css('position', 'absolute');
			}
		}
		
		// Add rollover event to navigation elements
		$content.children()
		.bind('mouseover mouseout', function(){
			$(this).toggleClass(hover);
		}).addClass(hover);
		
		// Cache values needed for size calculations
		interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(TRUE) - $content.height();//Subtraction needed for IE6
		interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(TRUE) - $content.width();
		loadedHeight = $loaded.outerHeight(TRUE);
		loadedWidth = $loaded.outerWidth(TRUE);
		
		// Setting padding to remove the need to do size conversions during the animation step.
		$cbox.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth}).hide();
		
		// Setup button & key events.
		$next.click(cboxPublic.next);
		$prev.click(cboxPublic.prev);
		$close.click(cboxPublic.close);
		
		// Adding the 'hover' class allowed the browser to load the hover-state
		// background graphics.  The class can now can be removed.
		$content.children().removeClass(hover);
		
		$('.cboxElement').live('click', function (e) {
			if (e.button !== 0 && typeof e.button !== 'undefined') {// checks to see if it was a non-left mouse-click.
				return TRUE;
			} else {
				launch(this);			
				return FALSE;
			}
		});
	};

	cboxPublic.position = function (speed, loadedCallback) {
		var
		animate_speed,
		winHeight = $window.height(),
		// keeps the top and left positions within the browser's viewport.
		posTop = Math.max(winHeight - settings.h - loadedHeight - interfaceHeight,0)/2 + $window.scrollTop(),
		posLeft = Math.max(document.documentElement.clientWidth - settings.w - loadedWidth - interfaceWidth,0)/2 + $window.scrollLeft();
		
		// setting the speed to 0 to reduce the delay between same-sized content.
		animate_speed = ($cbox.width() === settings.w+loadedWidth && $cbox.height() === settings.h+loadedHeight) ? 0 : speed;
		
		// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
		// but it has to be shrank down around the size of div#colorbox when it's done.  If not,
		// it can invoke an obscure IE bug when using iframes.
		$wrap[0].style.width = $wrap[0].style.height = "9999px";
		
		function modalDimensions (that) {
			// loading overlay size has to be sure that IE6 uses the correct height.
			$topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = that.style.width;
			$loadingGraphic[0].style.height = $loadingOverlay[0].style.height = $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = that.style.height;
		}
		
		$cbox.dequeue().animate({width:settings.w+loadedWidth, height:settings.h+loadedHeight, top:posTop, left:posLeft}, {duration: animate_speed,
			complete: function(){
				modalDimensions(this);
				
				active = FALSE;
				
				// shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
				$wrap[0].style.width = (settings.w+loadedWidth+interfaceWidth) + "px";
				$wrap[0].style.height = (settings.h+loadedHeight+interfaceHeight) + "px";
				
				if (loadedCallback) {loadedCallback();}
			},
			step: function(){
				modalDimensions(this);
			}
		});
	};

	cboxPublic.resize = function (object) {
		if(!open){ return; }
		
		var topMargin,
		prev,
		prevSrc,
		next,
		nextSrc,
		photo,
		timeout,
		speed = settings.transition==="none" ? 0 : settings.speed;
		
		$window.unbind(cbox_resize);
		
		if(!object){
			timeout = setTimeout(function(){ // timer allows IE to render the dimensions before attempting to calculate the height
				var $child = $loaded.wrapInner("<div style='overflow:auto'></div>").children(); // temporary wrapper to get an accurate estimate of just how high the total content should be.
				settings.h = $child.height();
				$loaded.css({height:settings.h});
				$child.replaceWith($child.children()); // ditch the temporary wrapper div used in height calculation
				cboxPublic.position(speed);
			}, 1);
			return;
		}
		
		$loaded.remove();
		$loaded = $('<div id="cboxLoadedContent"/>').html(object);
		
		function getWidth(){
			settings.w = settings.w || $loaded.width();
			settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
			return settings.w;
		}
		function getHeight(){
			settings.h = settings.h || $loaded.height();
			settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
			return settings.h;
		}
		
		$loaded.hide()
		.appendTo($loadingBay)// content has to be appended to the DOM for accurate size calculations.  Appended to an absolutely positioned element, rather than BODY, which avoids an extremely brief display of the vertical scrollbar in Firefox that can occur for a small minority of websites.
		.css({width:getWidth(), overflow:settings.scrolling ? 'auto' : 'hidden'})
		.css({height:getHeight()})// sets the height independently from the width in case the new width influences the value of height.
		.prependTo($content);
		
		$('#cboxPhoto').css({cssFloat:'none'});// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
		
		// Hides SELECT elements in IE6 because they would otherwise sit on top of the overlay.
		if (isIE6) {
			$('select:not(#colorbox select)').filter(function(){
				return this.style.visibility !== 'hidden';
			}).css({'visibility':'hidden'}).one(cbox_cleanup, function(){
				this.style.visibility = 'inherit';
			});
		}
				
		function setPosition (s) {
			cboxPublic.position(s, function(){
				if (!open) { return; }
				
				if (isIE) {
					//This fadeIn helps the bicubic resampling to kick-in.
					if( photo ){$loaded.fadeIn(100);}
					//IE adds a filter when ColorBox fades in and out that can cause problems if the loaded content contains transparent pngs.
					$cbox[0].style.removeAttribute("filter");
				}
				
				//Waited until the iframe is added to the DOM & it is visible before setting the src.
				//This increases compatability with pages using DOM dependent JavaScript.
				if(settings.iframe){
					$loaded.append("<iframe id='cboxIframe'" + (settings.scrolling ? " " : "scrolling='no'") + " name='iframe_"+new Date().getTime()+"' frameborder=0 src='"+settings.href+"' " + (isIE ? "allowtransparency='true'" : '') + " />");
				}
				
				$loaded.show();
				
				$title.show().html(settings.title);
				
				if ($related.length>1) {
					$current.html(settings.current.replace(/\{current\}/, index+1).replace(/\{total\}/, $related.length)).show();
					$next.html(settings.next).show();
					$prev.html(settings.previous).show();
					
					if(settings.slideshow){
						$slideshow.show();
					}
				}
				
				$loadingOverlay.hide();
				$loadingGraphic.hide();
				
				$.event.trigger(cbox_complete);
				if (settings.onComplete) {
					settings.onComplete.call(element);
				}
				
				if (settings.transition === 'fade'){
					$cbox.fadeTo(speed, 1, function(){
						if(isIE){$cbox[0].style.removeAttribute("filter");}
					});
				}
				
				$window.bind(cbox_resize, function(){
					cboxPublic.position(0);
				});
			});
		}
		
		if((settings.transition === 'fade' && $cbox.fadeTo(speed, 0, function(){setPosition(0);})) || setPosition(speed)){}
		
		// Preloads images within a rel group
		if (settings.preloading && $related.length>1) {
			prev = index > 0 ? $related[index-1] : $related[$related.length-1];
			next = index < $related.length-1 ? $related[index+1] : $related[0];
			nextSrc = $(next).data(colorbox).href || next.href;
			prevSrc = $(prev).data(colorbox).href || prev.href;
			
			if(isImage(nextSrc)){
				$('<img />').attr('src', nextSrc);
			}
			
			if(isImage(prevSrc)){
				$('<img />').attr('src', prevSrc);
			}
		}
	};

	cboxPublic.load = function () {
		var href, img, setResize, resize = cboxPublic.resize;
		
		active = TRUE;
		
		/*
		 
		// I decided to comment this out because I can see it causing problems as users
		// really should just set the dimensions on their IMG elements instead,
		// but I'm leaving the code in as it may be useful to someone.
		// To use, uncomment the function and change 'if(textStatus === "success"){ resize(this); }'
		// to 'if(textStatus === "success"){ preload(this); }'
		
		// Preload loops through the HTML to find IMG elements and loads their sources.
		// This allows the resize method to accurately estimate the dimensions of the new content.
		function preload(html){
			var
			$ajax = $(html),
			$imgs = $ajax.find('img'),
			x = $imgs.length;
			
			function loadloop(){
				var img = new Image();
				x = x-1;
				if(x >= 0){
					img.onload = loadloop;
					img.src = $imgs[x].src;
				} else {
					resize($ajax);
				}
			}
			
			loadloop();
		}
		*/
		
		element = $related[index];
		
		settings = $(element).data(colorbox);
		
		//convert functions to static values
		process();
		
		$.event.trigger(cbox_load);
		if (settings.onLoad) {
			settings.onLoad.call(element);
		}
		
		// Evaluate the height based on the optional height and width settings.
		settings.h = settings.height ?
				setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
				settings.innerHeight ?
					setSize(settings.innerHeight, 'y') :
					FALSE;
		settings.w = settings.width ?
				setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
				settings.innerWidth ?
					setSize(settings.innerWidth, 'x') :
					FALSE;
		
		// Sets the minimum dimensions for use in image scaling
		settings.mw = settings.w;
		settings.mh = settings.h;
		
		// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
		// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
		if(settings.maxWidth){
			settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
			settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
		}
		if(settings.maxHeight){
			settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
			settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
		}
		
		href = settings.href;
		
		$loadingOverlay.show();
		$loadingGraphic.show();
		
		if (settings.inline) {
			// Inserts an empty placeholder where inline content is being pulled from.
			// An event is bound to put inline content back when ColorBox closes or loads new content.
			$('<div id="cboxInlineTemp" />').hide().insertBefore($(href)[0]).bind(cbox_load+' '+cbox_cleanup, function(){
				$(this).replaceWith($loaded.children());
			});
			resize($(href));
		} else if (settings.iframe) {
			// IFrame element won't be added to the DOM until it is ready to be displayed,
			// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
			resize(" ");
		} else if (settings.html) {
			resize(settings.html);
		} else if (isImage(href)){
			img = new Image();
			img.onload = function(){
				var percent;
				
				img.onload = null;
				
				img.id = 'cboxPhoto';
				
				$(img).css({margin:'auto', border:'none', display:'block', cssFloat:'left'});
				
				if(settings.scalePhotos){
					setResize = function(){
						img.height -= img.height * percent;
						img.width -= img.width * percent;	
					};
					if(settings.mw && img.width > settings.mw){
						percent = (img.width - settings.mw) / img.width;
						setResize();
					}
					if(settings.mh && img.height > settings.mh){
						percent = (img.height - settings.mh) / img.height;
						setResize();
					}
				}
				
				if (settings.h) {
					img.style.marginTop = Math.max(settings.h - img.height,0)/2 + 'px';
				}
				
				resize(img);
				
				if($related.length > 1){
					$(img).css({cursor:'pointer'}).click(cboxPublic.next);
				}
				
				if(isIE){
					img.style.msInterpolationMode='bicubic';
				}
			};
			img.src = href;
		} else {
			$('<div />').appendTo($loadingBay).load(href, function(data, textStatus){
				if(textStatus === "success"){
					resize(this);
				} else {
					resize($("<p>Request unsuccessful.</p>"));
				}
			});
		}
	};

	// Navigates to the next page/image in a set.
	cboxPublic.next = function () {
		if(!active){
			index = index < $related.length-1 ? index+1 : 0;
			cboxPublic.load();
		}
	};
	
	cboxPublic.prev = function () {
		if(!active){
			index = index > 0 ? index-1 : $related.length-1;
			cboxPublic.load();
		}
	};

	cboxPublic.slideshow = function () {
		var stop, timeOut, className = 'cboxSlideshow_';
		
		$slideshow.bind(cbox_closed, function(){
			$slideshow.unbind();
			clearTimeout(timeOut);
			$cbox.removeClass(className+"off"+" "+className+"on");
		});
		
		function start(){
			$slideshow
			.text(settings.slideshowStop)
			.bind(cbox_complete, function(){
				timeOut = setTimeout(cboxPublic.next, settings.slideshowSpeed);
			})
			.bind(cbox_load, function(){
				clearTimeout(timeOut);	
			}).one("click", function(){
				stop();
				$(this).removeClass(hover);
			});
			$cbox.removeClass(className+"off").addClass(className+"on");
		}
		
		stop = function(){
			clearTimeout(timeOut);
			$slideshow
			.text(settings.slideshowStart)
			.unbind(cbox_complete+' '+cbox_load)
			.one("click", function(){
				start();
				timeOut = setTimeout(cboxPublic.next, settings.slideshowSpeed);
				$(this).removeClass(hover);
			});
			$cbox.removeClass(className+"on").addClass(className+"off");
		};
		
		if(settings.slideshow && $related.length>1){
			if(settings.slideshowAuto){
				start();
			} else {
				stop();
			}
		}
	};

	// Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();
	cboxPublic.close = function () {
		
		$.event.trigger(cbox_cleanup);
		if (settings.onCleanup) {
			settings.onCleanup.call(element);
		}
		
		open = FALSE;
		$(document).unbind("keydown.cbox_close keydown.cbox_arrows");
		$window.unbind(cbox_resize+' resize.cboxie6 scroll.cboxie6');
		$overlay.css({cursor: 'auto'}).fadeOut('fast');
		
		$cbox
		.stop(TRUE, FALSE)
		.fadeOut('fast', function () {
			$('#colorbox iframe').attr('src', 'about:blank');
			$loaded.remove();
			$cbox.css({'opacity': 1});
			
			try{
				bookmark.focus();
			} catch (er){
				// do nothing
			}
			
			$.event.trigger(cbox_closed);
			if (settings.onClosed) {
				settings.onClosed.call(element);
			}
		});
	};

	// A method for fetching the current element ColorBox is referencing.
	// returns a jQuery object.
	cboxPublic.element = function(){ return $(element); };

	cboxPublic.settings = defaults;

	// Initializes ColorBox when the DOM has loaded
	$(cboxPublic.init);

}(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. 
 *
 */
/*
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version 1.03
 */
var Cufon=(function(){var m=function(){return m.replace.apply(null,arguments)};var x=m.DOM={ready:(function(){var C=false,E={loaded:1,complete:1};var B=[],D=function(){if(C){return}C=true;for(var F;F=B.shift();F()){}};if(document.addEventListener){document.addEventListener("DOMContentLoaded",D,false);window.addEventListener("pageshow",D,false)}if(!window.opera&&document.readyState){(function(){E[document.readyState]?D():setTimeout(arguments.callee,10)})()}if(document.readyState&&document.createStyleSheet){(function(){try{document.body.doScroll("left");D()}catch(F){setTimeout(arguments.callee,1)}})()}q(window,"load",D);return function(F){if(!arguments.length){D()}else{C?F():B.push(F)}}})(),root:function(){return document.documentElement||document.body}};var n=m.CSS={Size:function(C,B){this.value=parseFloat(C);this.unit=String(C).match(/[a-z%]*$/)[0]||"px";this.convert=function(D){return D/B*this.value};this.convertFrom=function(D){return D/this.value*B};this.toString=function(){return this.value+this.unit}},addClass:function(C,B){var D=C.className;C.className=D+(D&&" ")+B;return C},color:j(function(C){var B={};B.color=C.replace(/^rgba\((.*?),\s*([\d.]+)\)/,function(E,D,F){B.opacity=parseFloat(F);return"rgb("+D+")"});return B}),fontStretch:j(function(B){if(typeof B=="number"){return B}if(/%$/.test(B)){return parseFloat(B)/100}return{"ultra-condensed":0.5,"extra-condensed":0.625,condensed:0.75,"semi-condensed":0.875,"semi-expanded":1.125,expanded:1.25,"extra-expanded":1.5,"ultra-expanded":2}[B]||1}),getStyle:function(C){var B=document.defaultView;if(B&&B.getComputedStyle){return new a(B.getComputedStyle(C,null))}if(C.currentStyle){return new a(C.currentStyle)}return new a(C.style)},gradient:j(function(F){var G={id:F,type:F.match(/^-([a-z]+)-gradient\(/)[1],stops:[]},C=F.substr(F.indexOf("(")).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);for(var E=0,B=C.length,D;E<B;++E){D=C[E].split("=",2).reverse();G.stops.push([D[1]||E/(B-1),D[0]])}return G}),hasClass:function(C,B){return RegExp("(?:^|\\s)"+B+"(?=\\s|$)").test(C.className)},quotedList:j(function(E){var D=[],C=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,B;while(B=C.exec(E)){D.push(B[3]||B[1])}return D}),recognizesMedia:j(function(G){var E=document.createElement("style"),D,C,B;E.type="text/css";E.media=G;try{E.appendChild(document.createTextNode("/**/"))}catch(F){}C=g("head")[0];C.insertBefore(E,C.firstChild);D=(E.sheet||E.styleSheet);B=D&&!D.disabled;C.removeChild(E);return B}),removeClass:function(D,C){var B=RegExp("(?:^|\\s+)"+C+"(?=\\s|$)","g");D.className=D.className.replace(B,"");return D},supports:function(D,C){var B=document.createElement("span").style;if(B[D]===undefined){return false}B[D]=C;return B[D]===C},textAlign:function(E,D,B,C){if(D.get("textAlign")=="right"){if(B>0){E=" "+E}}else{if(B<C-1){E+=" "}}return E},textDecoration:function(G,F){if(!F){F=this.getStyle(G)}var C={underline:null,overline:null,"line-through":null};for(var B=G;B.parentNode&&B.parentNode.nodeType==1;){var E=true;for(var D in C){if(!k(C,D)||C[D]){continue}if(F.get("textDecoration").indexOf(D)!=-1){C[D]=F.get("color")}E=false}if(E){break}F=this.getStyle(B=B.parentNode)}return C},textShadow:j(function(F){if(F=="none"){return null}var E=[],G={},B,C=0;var D=/(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;while(B=D.exec(F)){if(B[0]==","){E.push(G);G={};C=0}else{if(B[1]){G.color=B[1]}else{G[["offX","offY","blur"][C++]]=B[2]}}}E.push(G);return E}),textTransform:(function(){var B={uppercase:function(C){return C.toUpperCase()},lowercase:function(C){return C.toLowerCase()},capitalize:function(C){return C.replace(/\b./g,function(D){return D.toUpperCase()})}};return function(E,D){var C=B[D.get("textTransform")];return C?C(E):E}})(),whiteSpace:(function(){var B={inline:1,"inline-block":1,"run-in":1};return function(E,C,D){if(B[C.get("display")]){return E}if(!D.previousSibling){E=E.replace(/^\s+/,"")}if(!D.nextSibling){E=E.replace(/\s+$/,"")}return E}})()};n.ready=(function(){var B=!n.recognizesMedia("all"),E=false;var D=[],H=function(){B=true;for(var K;K=D.shift();K()){}};var I=g("link"),J=g("style");function C(K){return K.disabled||G(K.sheet,K.media||"screen")}function G(M,P){if(!n.recognizesMedia(P||"all")){return true}if(!M||M.disabled){return false}try{var Q=M.cssRules,O;if(Q){search:for(var L=0,K=Q.length;O=Q[L],L<K;++L){switch(O.type){case 2:break;case 3:if(!G(O.styleSheet,O.media.mediaText)){return false}break;default:break search}}}}catch(N){}return true}function F(){if(document.createStyleSheet){return true}var L,K;for(K=0;L=I[K];++K){if(L.rel.toLowerCase()=="stylesheet"&&!C(L)){return false}}for(K=0;L=J[K];++K){if(!C(L)){return false}}return true}x.ready(function(){if(!E){E=n.getStyle(document.body).isUsable()}if(B||(E&&F())){H()}else{setTimeout(arguments.callee,10)}});return function(K){if(B){K()}else{D.push(K)}}})();function s(C){var B=this.face=C.face;this.glyphs=C.glyphs;this.w=C.w;this.baseSize=parseInt(B["units-per-em"],10);this.family=B["font-family"].toLowerCase();this.weight=B["font-weight"];this.style=B["font-style"]||"normal";this.viewBox=(function(){var E=B.bbox.split(/\s+/);var D={minX:parseInt(E[0],10),minY:parseInt(E[1],10),maxX:parseInt(E[2],10),maxY:parseInt(E[3],10)};D.width=D.maxX-D.minX;D.height=D.maxY-D.minY;D.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")};return D})();this.ascent=-parseInt(B.ascent,10);this.descent=-parseInt(B.descent,10);this.height=-this.ascent+this.descent}function f(){var C={},B={oblique:"italic",italic:"oblique"};this.add=function(D){(C[D.style]||(C[D.style]={}))[D.weight]=D};this.get=function(H,I){var G=C[H]||C[B[H]]||C.normal||C.italic||C.oblique;if(!G){return null}I={normal:400,bold:700}[I]||parseInt(I,10);if(G[I]){return G[I]}var E={1:1,99:0}[I%100],K=[],F,D;if(E===undefined){E=I>400}if(I==500){I=400}for(var J in G){if(!k(G,J)){continue}J=parseInt(J,10);if(!F||J<F){F=J}if(!D||J>D){D=J}K.push(J)}if(I<F){I=F}if(I>D){I=D}K.sort(function(M,L){return(E?(M>I&&L>I)?M<L:M>L:(M<I&&L<I)?M>L:M<L)?-1:1});return G[K[0]]}}function r(){function D(F,G){if(F.contains){return F.contains(G)}return F.compareDocumentPosition(G)&16}function B(G){var F=G.relatedTarget;if(!F||D(this,F)){return}C(this)}function E(F){C(this)}function C(F){setTimeout(function(){m.replace(F,d.get(F).options,true)},10)}this.attach=function(F){if(F.onmouseenter===undefined){q(F,"mouseover",B);q(F,"mouseout",B)}else{q(F,"mouseenter",E);q(F,"mouseleave",E)}}}function u(){var C=[],D={};function B(H){var E=[],G;for(var F=0;G=H[F];++F){E[F]=C[D[G]]}return E}this.add=function(F,E){D[F]=C.push(E)-1};this.repeat=function(){var E=arguments.length?B(arguments):C,F;for(var G=0;F=E[G++];){m.replace(F[0],F[1],true)}}}function A(){var D={},B=0;function C(E){return E.cufid||(E.cufid=++B)}this.get=function(E){var F=C(E);return D[F]||(D[F]={})}}function a(B){var D={},C={};this.extend=function(E){for(var F in E){if(k(E,F)){D[F]=E[F]}}return this};this.get=function(E){return D[E]!=undefined?D[E]:B[E]};this.getSize=function(F,E){return C[F]||(C[F]=new n.Size(this.get(F),E))};this.isUsable=function(){return !!B}}function q(C,B,D){if(C.addEventListener){C.addEventListener(B,D,false)}else{if(C.attachEvent){C.attachEvent("on"+B,function(){return D.call(C,window.event)})}}}function v(C,B){var D=d.get(C);if(D.options){return C}if(B.hover&&B.hoverables[C.nodeName.toLowerCase()]){b.attach(C)}D.options=B;return C}function j(B){var C={};return function(D){if(!k(C,D)){C[D]=B.apply(null,arguments)}return C[D]}}function c(F,E){var B=n.quotedList(E.get("fontFamily").toLowerCase()),D;for(var C=0;D=B[C];++C){if(i[D]){return i[D].get(E.get("fontStyle"),E.get("fontWeight"))}}return null}function g(B){return document.getElementsByTagName(B)}function k(C,B){return C.hasOwnProperty(B)}function h(){var B={},D,F;for(var E=0,C=arguments.length;D=arguments[E],E<C;++E){for(F in D){if(k(D,F)){B[F]=D[F]}}}return B}function o(E,M,C,N,F,D){var K=document.createDocumentFragment(),H;if(M===""){return K}var L=N.separate;var I=M.split(p[L]),B=(L=="words");if(B&&t){if(/^\s/.test(M)){I.unshift("")}if(/\s$/.test(M)){I.push("")}}for(var J=0,G=I.length;J<G;++J){H=z[N.engine](E,B?n.textAlign(I[J],C,J,G):I[J],C,N,F,D,J<G-1);if(H){K.appendChild(H)}}return K}function l(C,J){var B=n.getStyle(v(C,J)).extend(J);var D=c(C,B),E,H,G,F,I;for(E=C.firstChild;E;E=G){H=E.nodeType;G=E.nextSibling;if(H==3){if(F){F.appendData(E.data);C.removeChild(E)}else{F=E}if(G){continue}}if(F){C.replaceChild(o(D,n.whiteSpace(F.data,B,F),B,J,E,C),F);F=null}if(H==1&&E.firstChild){if(n.hasClass(E,"cufon")){z[J.engine](D,null,B,J,E,C)}else{arguments.callee(E,J)}}}}var t=" ".split(/\s+/).length==0;var d=new A();var b=new r();var y=new u();var e=false;var z={},i={},w={enableTextDecoration:false,engine:null,forceHitArea:false,hover:false,hoverables:{a:true},printable:true,selector:(window.Sizzle||(window.jQuery&&function(B){return jQuery(B)})||(window.dojo&&dojo.query)||(window.Ext&&Ext.query)||(window.$$&&function(B){return $$(B)})||(window.$&&function(B){return $(B)})||(document.querySelectorAll&&function(B){return document.querySelectorAll(B)})||g),separate:"words",textShadow:"none"};var p={words:/[^\S\u00a0]+/,characters:"",none:/^/};m.now=function(){x.ready();return m};m.refresh=function(){y.repeat.apply(y,arguments);return m};m.registerEngine=function(C,B){if(!B){return m}z[C]=B;return m.set("engine",C)};m.registerFont=function(D){var B=new s(D),C=B.family;if(!i[C]){i[C]=new f()}i[C].add(B);return m.set("fontFamily",'"'+C+'"')};m.replace=function(D,C,B){C=h(w,C);if(!C.engine){return m}if(!e){n.addClass(x.root(),"cufon-active cufon-loading");n.ready(function(){n.addClass(n.removeClass(x.root(),"cufon-loading"),"cufon-ready")});e=true}if(C.hover){C.forceHitArea=true}if(typeof C.textShadow=="string"){C.textShadow=n.textShadow(C.textShadow)}if(typeof C.color=="string"&&/^-/.test(C.color)){C.textGradient=n.gradient(C.color)}if(!B){y.add(D,arguments)}if(D.nodeType||typeof D=="string"){D=[D]}n.ready(function(){for(var F=0,E=D.length;F<E;++F){var G=D[F];if(typeof G=="string"){m.replace(C.selector(G),C,true)}else{l(G,C)}}});return m};m.set=function(B,C){w[B]=C;return m};return m})();Cufon.registerEngine("canvas",(function(){var b=document.createElement("canvas");if(!b||!b.getContext||!b.getContext.apply){return}b=null;var a=Cufon.CSS.supports("display","inline-block");var e=!a&&(document.compatMode=="BackCompat"||/frameset|transitional/i.test(document.doctype.publicId));var f=document.createElement("style");f.type="text/css";f.appendChild(document.createTextNode((".cufon-canvas{text-indent:0;}@media screen,projection{.cufon-canvas{display:inline;display:inline-block;position:relative;vertical-align:middle;"+(e?"":"font-size:1px;line-height:1px;")+"}.cufon-canvas .cufon-alt{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}"+(a?".cufon-canvas canvas{position:relative;}":".cufon-canvas canvas{position:absolute;}")+"}@media print{.cufon-canvas{padding:0;}.cufon-canvas canvas{display:none;}.cufon-canvas .cufon-alt{display:inline;}}").replace(/;/g,"!important;")));document.getElementsByTagName("head")[0].appendChild(f);function d(p,h){var n=0,m=0;var g=[],o=/([mrvxe])([^a-z]*)/g,k;generate:for(var j=0;k=o.exec(p);++j){var l=k[2].split(",");switch(k[1]){case"v":g[j]={m:"bezierCurveTo",a:[n+~~l[0],m+~~l[1],n+~~l[2],m+~~l[3],n+=~~l[4],m+=~~l[5]]};break;case"r":g[j]={m:"lineTo",a:[n+=~~l[0],m+=~~l[1]]};break;case"m":g[j]={m:"moveTo",a:[n=~~l[0],m=~~l[1]]};break;case"x":g[j]={m:"closePath"};break;case"e":break generate}h[g[j].m].apply(h,g[j].a)}return g}function c(m,k){for(var j=0,h=m.length;j<h;++j){var g=m[j];k[g.m].apply(k,g.a)}}return function(ah,H,Z,D,L,ai){var n=(H===null);if(n){H=L.alt}var J=ah.viewBox;var p=Z.getSize("fontSize",ah.baseSize);var X=Z.get("letterSpacing");X=(X=="normal")?0:p.convertFrom(parseInt(X,10));var K=0,Y=0,W=0,F=0;var I=D.textShadow,U=[];if(I){for(var ag=I.length;ag--;){var O=I[ag];var T=p.convertFrom(parseFloat(O.offX));var R=p.convertFrom(parseFloat(O.offY));U[ag]=[T,R];if(R<K){K=R}if(T>Y){Y=T}if(R>W){W=R}if(T<F){F=T}}}var al=Cufon.CSS.textTransform(H,Z).split(""),B;var o=ah.glyphs,E,r,ac;var h=0,v,N=[];for(var ag=0,ae=0,ab=al.length;ag<ab;++ag){E=o[B=al[ag]]||ah.missingGlyph;if(!E){continue}if(r){h-=ac=r[B]||0;N[ae-1]-=ac}h+=v=N[ae++]=~~(E.w||ah.w)+X;r=E.k}if(v===undefined){return null}Y+=J.width-v;F+=J.minX;var C,q;if(n){C=L;q=L.firstChild}else{C=document.createElement("span");C.className="cufon cufon-canvas";C.alt=H;q=document.createElement("canvas");C.appendChild(q);if(D.printable){var ad=document.createElement("span");ad.className="cufon-alt";ad.appendChild(document.createTextNode(H));C.appendChild(ad)}}var am=C.style;var Q=q.style;var m=p.convert(J.height);var ak=Math.ceil(m);var V=ak/m;var P=V*Cufon.CSS.fontStretch(Z.get("fontStretch"));var S=h*P;var aa=Math.ceil(p.convert(S+Y-F));var t=Math.ceil(p.convert(J.height-K+W));q.width=aa;q.height=t;Q.width=aa+"px";Q.height=t+"px";K+=J.minY;Q.top=Math.round(p.convert(K-ah.ascent))+"px";Q.left=Math.round(p.convert(F))+"px";var A=Math.ceil(p.convert(S))+"px";if(a){am.width=A;am.height=p.convert(ah.height)+"px"}else{am.paddingLeft=A;am.paddingBottom=(p.convert(ah.height)-1)+"px"}var aj=q.getContext("2d"),M=m/J.height;aj.scale(M,M*V);aj.translate(-F,-K);aj.lineWidth=ah.face["underline-thickness"];aj.save();function s(i,g){aj.strokeStyle=g;aj.beginPath();aj.moveTo(0,i);aj.lineTo(h,i);aj.stroke()}var u=D.enableTextDecoration?Cufon.CSS.textDecoration(ai,Z):{};if(u.underline){s(-ah.face["underline-position"],u.underline)}if(u.overline){s(ah.ascent,u.overline)}function af(){aj.scale(P,1);for(var x=0,k=0,g=al.length;x<g;++x){var y=o[al[x]]||ah.missingGlyph;if(!y){continue}if(y.d){aj.beginPath();if(y.code){c(y.code,aj)}else{y.code=d("m"+y.d,aj)}aj.fill()}aj.translate(N[k++],0)}aj.restore()}if(I){for(var ag=I.length;ag--;){var O=I[ag];aj.save();aj.fillStyle=O.color;aj.translate.apply(aj,U[ag]);af()}}var z=D.textGradient;if(z){var G=z.stops,w=aj.createLinearGradient(0,J.minY,0,J.maxY);for(var ag=0,ab=G.length;ag<ab;++ag){w.addColorStop.apply(w,G[ag])}aj.fillStyle=w}else{aj.fillStyle=Z.get("color")}af();if(u["line-through"]){s(-ah.descent,u["line-through"])}return C}})());Cufon.registerEngine("vml",(function(){var e=document.namespaces;if(!e){return}e.add("cvml","urn:schemas-microsoft-com:vml");e=null;var b=document.createElement("cvml:shape");b.style.behavior="url(#default#VML)";if(!b.coordsize){return}b=null;var g=(document.documentMode||0)<8;document.write(('<style type="text/css">.cufon-vml-canvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}.cufon-vml-canvas{position:absolute;text-align:left;}.cufon-vml{display:inline-block;position:relative;vertical-align:'+(g?"middle":"text-bottom")+";}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px;}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none;}.cufon-vml .cufon-alt{display:inline;}}</style>").replace(/;/g,"!important;"));function c(h,i){return a(h,/(?:em|ex|%)$|^[a-z-]+$/i.test(i)?"1em":i)}function a(k,l){if(/px$/i.test(l)){return parseFloat(l)}var j=k.style.left,i=k.runtimeStyle.left;k.runtimeStyle.left=k.currentStyle.left;k.style.left=l.replace("%","em");var h=k.style.pixelLeft;k.style.left=j;k.runtimeStyle.left=i;return h}var f={};function d(o){var p=o.id;if(!f[p]){var m=o.stops,n=document.createElement("cvml:fill"),h=[];n.type="gradient";n.angle=180;n.focus="0";n.method="sigma";n.color=m[0][1];for(var l=1,i=m.length-1;l<i;++l){h.push(m[l][0]*100+"% "+m[l][1])}n.colors=h.join(",");n.color2=m[i][1];f[p]=n}return f[p]}return function(aj,K,ad,G,O,ak,ab){var o=(K===null);if(o){K=O.alt}var M=aj.viewBox;var q=ad.computedFontSize||(ad.computedFontSize=new Cufon.CSS.Size(c(ak,ad.get("fontSize"))+"px",aj.baseSize));var aa=ad.computedLSpacing;if(aa==undefined){aa=ad.get("letterSpacing");ad.computedLSpacing=aa=(aa=="normal")?0:~~q.convertFrom(a(ak,aa))}var C,r;if(o){C=O;r=O.firstChild}else{C=document.createElement("span");C.className="cufon cufon-vml";C.alt=K;r=document.createElement("span");r.className="cufon-vml-canvas";C.appendChild(r);if(G.printable){var ag=document.createElement("span");ag.className="cufon-alt";ag.appendChild(document.createTextNode(K));C.appendChild(ag)}if(!ab){C.appendChild(document.createElement("cvml:shape"))}}var ap=C.style;var V=r.style;var m=q.convert(M.height),am=Math.ceil(m);var Z=am/m;var T=Z*Cufon.CSS.fontStretch(ad.get("fontStretch"));var Y=M.minX,X=M.minY;V.height=am;V.top=Math.round(q.convert(X-aj.ascent));V.left=Math.round(q.convert(Y));ap.height=q.convert(aj.height)+"px";var v=G.enableTextDecoration?Cufon.CSS.textDecoration(ak,ad):{};var J=ad.get("color");var ao=Cufon.CSS.textTransform(K,ad).split(""),B;var p=aj.glyphs,H,s,af;var h=0,P=[],W=0,x;var z,L=G.textShadow;for(var ai=0,ah=0,ae=ao.length;ai<ae;++ai){H=p[B=ao[ai]]||aj.missingGlyph;if(!H){continue}if(s){h-=af=s[B]||0;P[ah-1]-=af}h+=x=P[ah++]=~~(H.w||aj.w)+aa;s=H.k}if(x===undefined){return null}var A=-Y+h+(M.width-x);var an=q.convert(A*T),ac=Math.round(an);var S=A+","+M.height,n;var N="r"+S+"ns";var y=G.textGradient&&d(G.textGradient);for(ai=0,ah=0;ai<ae;++ai){H=p[ao[ai]]||aj.missingGlyph;if(!H){continue}if(o){z=r.childNodes[ah];while(z.firstChild){z.removeChild(z.firstChild)}}else{z=document.createElement("cvml:shape");r.appendChild(z)}z.stroked="f";z.coordsize=S;z.coordorigin=n=(Y-W)+","+X;z.path=(H.d?"m"+H.d+"xe":"")+"m"+n+N;z.fillcolor=J;if(y){z.appendChild(y.cloneNode(false))}var al=z.style;al.width=ac;al.height=am;if(L){var u=L[0],t=L[1];var F=Cufon.CSS.color(u.color),D;var R=document.createElement("cvml:shadow");R.on="t";R.color=F.color;R.offset=u.offX+","+u.offY;if(t){D=Cufon.CSS.color(t.color);R.type="double";R.color2=D.color;R.offset2=t.offX+","+t.offY}R.opacity=F.opacity||(D&&D.opacity)||1;z.appendChild(R)}W+=P[ah++]}var Q=z.nextSibling,w,E;if(G.forceHitArea){if(!Q){Q=document.createElement("cvml:rect");Q.stroked="f";Q.className="cufon-vml-cover";w=document.createElement("cvml:fill");w.opacity=0;Q.appendChild(w);r.appendChild(Q)}E=Q.style;E.width=ac;E.height=am}else{if(Q){r.removeChild(Q)}}ap.width=Math.max(Math.ceil(q.convert(h*T)),0);if(g){var U=ad.computedYAdjust;if(U===undefined){var I=ad.get("lineHeight");if(I=="normal"){I="1em"}else{if(!isNaN(I)){I+="em"}}ad.computedYAdjust=U=0.5*(a(ak,I)-parseFloat(ap.height))}if(U){ap.marginTop=Math.ceil(U)+"px";ap.marginBottom=U+"px"}}return C}})());
Cufon.registerFont({"w":200,"face":{"font-family":"serifa","font-weight":400,"font-stretch":"normal","units-per-em":"360","panose-1":"2 6 6 3 3 5 5 2 2 4","ascent":"235","descent":"-125","x-height":"4","bbox":"0 -270 354 90","underline-thickness":"18","underline-position":"-18","stemh":"24","stemv":"30","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":100},"!":{"d":"88,-235r-6,179r-24,0r-6,-179r36,0xm53,0r0,-34r34,0r0,34r-34,0","w":140},"\"":{"d":"57,-153r0,-82r27,0r0,82r-27,0xm116,-153r0,-82r27,0r0,82r-27,0"},"#":{"d":"37,0r12,-73r-37,0r0,-21r39,0r8,-48r-37,0r0,-21r40,0r11,-73r24,0r-11,73r45,0r10,-73r25,0r-11,73r34,0r0,21r-37,0r-8,48r34,0r0,21r-37,0r-11,73r-24,0r11,-73r-44,0r-11,73r-25,0xm83,-142r-7,48r44,0r7,-48r-44,0"},"$":{"d":"108,-102r0,83v22,-2,44,-16,44,-44v0,-21,-16,-30,-44,-39xm87,-142r0,-74v-19,3,-37,16,-37,41v0,15,13,24,37,33xm87,-21r0,-88v-42,-12,-70,-26,-70,-66v0,-40,33,-64,70,-64r0,-31r21,0r0,31v20,3,32,15,44,26r0,-22r27,0r0,77r-28,0v1,-33,-14,-54,-43,-58r0,81v43,16,78,26,78,72v0,42,-34,67,-78,67r0,33r-21,0r0,-35v-19,-3,-30,-15,-42,-29r0,27r-28,0r0,-80r28,0v0,31,16,54,42,59"},"%":{"d":"67,-177v0,18,4,44,28,44v37,0,37,-85,0,-87v-24,0,-28,22,-28,43xm41,-177v0,-33,15,-62,54,-62v37,0,51,29,51,62v0,35,-14,63,-51,63v-39,0,-54,-28,-54,-63xm174,-59v0,-33,15,-62,54,-62v37,0,51,29,51,62v0,35,-14,63,-51,63v-39,0,-54,-28,-54,-63xm199,-59v0,18,5,44,29,44v36,0,35,-88,0,-88v-24,0,-29,23,-29,44xm81,6r137,-248r22,0r-136,248r-23,0","w":320},"&":{"d":"255,-139r0,23r-32,0v0,24,-9,49,-23,69r24,24r36,0r0,23r-56,0r-25,-25v-44,48,-159,39,-158,-39v0,-35,23,-56,53,-69v-17,-15,-33,-30,-33,-56v0,-35,32,-50,65,-50v34,0,64,13,64,50v0,30,-24,50,-50,61r60,61v10,-14,15,-32,15,-49r-29,0r0,-23r89,0xm161,-43r-68,-70v-21,9,-39,25,-39,49v0,56,79,55,107,21xm75,-189v0,17,17,32,27,44v15,-11,36,-22,36,-44v0,-20,-13,-27,-32,-27v-17,0,-31,8,-31,27","w":280},"(":{"d":"99,43r-27,0v-71,-92,-72,-219,2,-303r26,0v-66,88,-64,216,-1,303","w":119},")":{"d":"21,-260r27,0v71,92,72,220,-2,303r-27,0v67,-87,65,-215,2,-303","w":119},"*":{"d":"114,-235r-6,46r42,-20r8,28r-45,7r31,34r-25,17r-19,-42r-23,41r-23,-17r33,-33r-45,-9r8,-28r42,22r-7,-46r29,0"},"+":{"d":"94,-105r0,-77r28,0r0,77r77,0r0,28r-77,0r0,77r-28,0r0,-77r-77,0r0,-28r77,0","w":216},",":{"d":"32,0r0,-36r36,0v3,36,-7,58,-15,83r-21,0r16,-47r-16,0","w":100},"-":{"d":"17,-83r0,-28r86,0r0,28r-86,0","w":119},".":{"d":"32,0r0,-36r36,0r0,36r-36,0","w":100},"\/":{"d":"7,4r98,-243r28,0r-98,243r-28,0","w":140},"0":{"d":"17,-118v0,-53,15,-121,84,-121v69,0,82,68,82,121v0,59,-13,122,-82,122v-69,0,-84,-63,-84,-122xm51,-118v0,44,4,99,50,99v45,0,48,-55,48,-99v0,-38,-3,-98,-48,-98v-46,0,-50,60,-50,98"},"1":{"d":"57,0r0,-23r36,0r0,-179v-16,17,-38,31,-57,45r0,-33v26,-18,35,-26,56,-45r32,0r0,212r36,0r0,23r-103,0"},"2":{"d":"18,0r0,-38v31,-30,121,-92,121,-138v0,-25,-16,-40,-39,-40v-28,0,-46,19,-46,49r-34,0v-5,-90,152,-99,153,-9v0,62,-96,125,-128,153r104,0r0,-39r27,0r0,62r-158,0"},"3":{"d":"87,-108r0,-23v28,0,54,-10,54,-42v0,-26,-15,-43,-41,-43v-26,0,-43,18,-45,44r-34,0v1,-42,36,-67,79,-67v39,0,75,16,75,62v0,34,-23,53,-54,59v31,0,56,21,56,56v0,45,-32,66,-77,66v-47,0,-81,-18,-81,-69r34,0v1,30,18,46,47,46v23,0,44,-18,44,-43v0,-35,-26,-46,-57,-46"},"4":{"d":"82,0r0,-23r36,0r0,-38r-109,0r0,-34r101,-140r39,0r0,151r36,0r0,23r-36,0r0,38r36,0r0,23r-103,0xm118,-84r-1,-119r-85,119r86,0"},"5":{"d":"172,-235r0,23r-110,0r-4,88v31,-51,124,-25,124,48v0,51,-31,80,-82,80v-43,0,-76,-21,-76,-67r34,0v0,24,15,44,42,44v32,0,50,-21,50,-57v0,-57,-78,-70,-92,-20r-30,0r4,-139r140,0"},"6":{"d":"103,4v-68,0,-84,-59,-84,-116v0,-64,18,-127,95,-127v38,0,63,20,63,59r-32,0v0,-54,-72,-39,-83,-2v-6,21,-11,54,-11,73v6,-25,30,-41,58,-41v44,0,72,28,72,72v0,49,-29,82,-78,82xm103,-19v31,0,44,-27,44,-54v0,-31,-13,-54,-44,-54v-60,0,-63,109,0,108"},"7":{"d":"184,-235r0,27v-35,67,-65,137,-92,208r-34,0v29,-73,67,-153,96,-212r-106,0r0,45r-28,0r0,-68r164,0"},"8":{"d":"24,-177v1,-81,152,-84,153,-2v1,34,-22,50,-52,58v34,5,54,22,54,58v0,46,-35,67,-78,67v-42,0,-80,-18,-80,-66v0,-35,21,-56,54,-60v-30,-5,-51,-23,-51,-55xm55,-174v0,26,21,42,46,42v25,0,44,-16,44,-43v0,-28,-20,-41,-44,-41v-27,0,-46,16,-46,42xm53,-65v0,30,20,46,48,46v30,0,47,-19,47,-47v0,-27,-17,-43,-47,-43v-27,0,-48,15,-48,44"},"9":{"d":"98,-239v68,0,83,59,83,116v0,64,-18,127,-95,127v-38,0,-63,-21,-63,-60r32,0v-1,55,71,41,83,3v6,-21,11,-55,11,-74v-6,25,-30,42,-58,42v-44,0,-72,-29,-72,-73v0,-49,30,-81,79,-81xm94,-108v57,1,65,-105,5,-108v-67,-3,-68,109,-5,108"},":":{"d":"32,0r0,-36r36,0r0,36r-36,0xm68,-164r0,36r-36,0r0,-36r36,0","w":100},";":{"d":"32,0r0,-36r36,0v3,36,-7,58,-15,83r-21,0r16,-47r-16,0xm68,-164r0,36r-36,0r0,-36r36,0","w":100},"<":{"d":"199,-24r0,27r-182,-82r0,-24r182,-82r0,27r-149,67","w":216},"=":{"d":"199,-141r0,27r-182,0r0,-27r182,0xm199,-68r0,27r-182,0r0,-27r182,0","w":216},">":{"d":"17,-24r149,-67r-149,-67r0,-27r182,82r0,24r-182,82r0,-27","w":216},"?":{"d":"63,-56v-9,-63,66,-68,66,-121v0,-24,-15,-37,-40,-37v-26,0,-41,16,-42,40r-34,0v-3,-80,145,-90,150,-7v4,58,-73,65,-68,125r-32,0xm63,0r0,-34r33,0r0,34r-33,0","w":180},"@":{"d":"129,-69v28,0,48,-38,48,-64v0,-16,-12,-30,-26,-30v-28,0,-48,36,-48,63v0,18,11,31,26,31xm188,-161r6,-20r22,0r-29,106v0,5,2,8,7,8v23,0,46,-34,46,-69v0,-51,-42,-82,-91,-82v-58,0,-99,46,-99,101v0,92,126,134,180,64r22,0v-21,35,-60,57,-101,57v-69,0,-124,-53,-124,-122v0,-67,55,-121,122,-121v60,0,112,41,112,100v0,58,-49,93,-78,93v-12,0,-18,-8,-21,-20v-25,35,-86,19,-86,-31v0,-60,75,-126,112,-64","w":288},"A":{"d":"182,-101r-43,-104r-44,104r87,0xm5,0r0,-23r26,0r91,-212r37,0r90,212r26,0r0,23r-97,0r0,-23r36,0r-23,-55r-105,0r-24,56r37,0r0,22r-94,0","w":280},"B":{"d":"78,-212r0,82v47,-1,97,8,97,-43v0,-54,-53,-36,-97,-39xm78,-107r0,84v48,-1,103,9,104,-43v1,-49,-56,-40,-104,-41xm10,0r0,-23r37,0r0,-189r-37,0r0,-23r107,0v39,0,91,1,91,62v0,25,-17,48,-46,52v33,0,54,20,54,55v-2,94,-120,59,-206,66","w":240},"C":{"d":"238,-235r0,84r-27,0v-4,-43,-30,-65,-71,-65v-54,0,-86,32,-86,98v0,57,29,99,86,99v35,0,66,-22,66,-61r33,0v0,60,-47,84,-99,84v-78,0,-119,-46,-119,-122v0,-76,41,-121,119,-121v22,-1,56,12,71,33r0,-29r27,0","w":259},"D":{"d":"11,0r0,-23r36,0r0,-189r-36,0r0,-23v120,0,232,-15,232,117v0,132,-111,118,-232,118xm78,-212r0,189v78,2,132,-11,132,-95v0,-84,-54,-96,-132,-94","w":259},"E":{"d":"14,0r0,-23r36,0r0,-189r-36,0r0,-23r206,0r0,71r-28,0r0,-48r-110,0r0,82r53,0r0,-34r27,0r0,91r-27,0r0,-34r-53,0r0,84r110,0r0,-50r28,0r0,73r-206,0","w":240},"F":{"d":"11,0r0,-23r36,0r0,-189r-37,0r0,-23r200,0r0,74r-28,0r0,-51r-104,0r0,82r52,0r0,-31r27,0r0,88r-27,0r0,-34r-52,0r0,84r43,0r0,23r-110,0","w":219,"k":{"A":27,",":46,".":46}},"G":{"d":"235,-235r0,83r-27,0v-3,-41,-27,-64,-68,-64v-54,0,-86,32,-86,98v0,57,29,99,86,99v43,0,69,-32,69,-74r-40,0r0,-23r101,0r0,23r-32,0r0,93r-29,0v-1,-10,2,-25,-1,-33v-14,22,-42,37,-68,37v-78,0,-119,-46,-119,-122v0,-76,41,-121,119,-121v25,-1,54,13,68,33r0,-29r27,0","w":280},"H":{"d":"233,-23r36,0r0,23r-103,0r0,-23r36,0r0,-84r-124,0r0,84r36,0r0,23r-103,0r0,-23r36,0r0,-189r-36,0r0,-23r103,0r0,23r-36,0r0,82r124,0r0,-82r-36,0r0,-23r103,0r0,23r-36,0r0,189","w":280},"I":{"d":"8,0r0,-23r36,0r0,-189r-36,0r0,-23r104,0r0,23r-36,0r0,189r36,0r0,23r-104,0","w":119},"J":{"d":"175,-235r0,23r-29,0r0,144v0,36,-15,72,-70,72v-51,0,-69,-29,-69,-77r34,0v0,26,7,54,37,54v35,0,36,-40,36,-57r0,-136r-35,0r0,-23r96,0","w":180},"K":{"d":"11,0r0,-23r36,0r0,-189r-36,0r0,-23r103,0r0,23r-36,0r0,86r92,-86r-30,0r0,-23r90,0r0,23r-20,0r-93,87r95,102r26,0r0,23r-96,0r0,-23r30,0r-94,-101r0,101r36,0r0,23r-103,0","w":240},"L":{"d":"11,0r0,-23r36,0r0,-189r-36,0r0,-23r110,0r0,23r-43,0r0,189r99,0r0,-57r28,0r0,80r-194,0","w":219,"k":{"T":33,"V":33,"W":27,"y":20,"Y":33}},"M":{"d":"10,0r0,-23r36,0r0,-189r-36,0r0,-23r92,0r68,197r72,-197r88,0r0,23r-36,0r0,189r36,0r0,23r-100,0r0,-23r32,0r-1,-189r-77,212r-28,0r-78,-212r0,189r32,0r0,23r-100,0","w":339},"N":{"d":"271,-235r0,23r-38,0r0,212r-42,0r-115,-206r0,183r36,0r0,23r-103,0r0,-23r38,0r0,-189r-38,0r0,-23r85,0r110,198r0,-175r-36,0r0,-23r103,0","w":280},"O":{"d":"226,-118v0,-66,-32,-98,-86,-98v-54,0,-86,32,-86,98v0,57,32,99,86,99v54,0,86,-42,86,-99xm260,-118v0,76,-42,122,-120,122v-78,0,-119,-46,-119,-122v0,-76,41,-121,119,-121v78,0,120,45,120,121","w":280},"P":{"d":"78,-212r0,94v48,-2,96,11,96,-47v0,-58,-48,-45,-96,-47xm11,0r0,-23r36,0r0,-189r-36,0r0,-23v86,5,197,-26,197,70v0,73,-63,71,-130,70r0,72r44,0r0,23r-111,0","w":219,"k":{"A":20,",":46,".":46}},"Q":{"d":"140,-19v54,0,86,-42,86,-99v0,-66,-32,-98,-86,-98v-54,0,-86,32,-86,98v0,57,32,99,86,99xm190,0v-97,18,-169,-22,-169,-118v0,-76,41,-121,119,-121v78,0,120,45,120,121v1,36,-13,74,-43,95r57,0r0,23r-84,0","w":280},"R":{"d":"78,-212r0,86v47,-2,97,10,97,-46v0,-50,-54,-38,-97,-40xm11,0r0,-23r36,0r0,-189r-36,0r0,-23v83,8,193,-30,198,63v1,34,-21,54,-53,60v45,5,37,54,53,89r27,0r0,23r-52,0v-19,-42,-12,-113,-77,-103r-29,0r0,80r36,0r0,23r-103,0","w":240,"k":{"T":6,"V":13,"W":13,"Y":13}},"S":{"d":"45,0r-28,0r0,-80r28,0v0,37,22,61,58,61v23,0,49,-13,49,-44v0,-24,-21,-34,-58,-44v-46,-13,-77,-26,-77,-68v0,-66,101,-85,133,-38r2,0r0,-22r27,0r0,77r-28,0v1,-38,-18,-58,-55,-58v-23,0,-46,12,-46,41v0,20,22,30,62,42v45,14,74,26,74,70v0,71,-108,90,-141,36r0,27"},"T":{"d":"65,0r0,-23r39,0r0,-189r-62,0r0,54r-27,0r0,-77r210,0r0,77r-27,0r0,-54r-62,0r0,189r39,0r0,23r-110,0","w":240,"k":{"w":27,"y":20,"A":27,",":27,".":27,"-":27,"a":27,"c":27,"e":27,"i":13,"o":27,"r":20,"s":20,"u":20,":":20,";":20}},"U":{"d":"254,-235r0,23r-30,0r0,122v0,62,-32,94,-94,94v-126,0,-86,-111,-93,-216r-32,0r0,-23r102,0r0,23r-38,0v9,83,-32,189,62,193v87,4,55,-114,61,-193r-35,0r0,-23r97,0","w":259},"V":{"d":"255,-235r0,23r-21,0r-86,212r-36,0r-86,-212r-20,0r0,-23r91,0r0,23r-36,0r70,180r72,-180r-36,0r0,-23r88,0","w":259,"k":{"y":13,"A":31,",":40,".":40,"-":27,"a":20,"e":20,"i":13,"o":20,"r":13,"u":13,":":27,";":27}},"W":{"d":"354,-235r0,23r-21,0r-52,212r-43,0r-57,-209r-59,209r-42,0r-52,-212r-21,0r0,-23r89,0r0,23r-37,0r45,180r57,-203r45,0r55,203r45,-180r-37,0r0,-23r85,0","w":360,"k":{"y":6,"A":20,",":27,".":35,"-":13,"a":11,"e":15,"i":6,"o":11,"r":6,"u":6,":":28,";":24}},"X":{"d":"6,0r0,-23r25,0r79,-101r-69,-88r-26,0r0,-23r98,0r0,23r-36,0r54,67r53,-67r-34,0r0,-23r95,0r0,23r-26,0r-69,88r80,101r23,0r0,23r-100,0r0,-23r39,0r-64,-80r-64,80r40,0r0,23r-98,0","w":259},"Y":{"d":"63,0r0,-23r40,0r0,-75r-78,-114r-20,0r0,-23r93,0r0,23r-37,0r60,89r63,-89r-37,0r0,-23r88,0r0,23r-20,0r-80,114r0,75r40,0r0,23r-112,0","w":240,"k":{"v":13,"A":27,",":33,".":33,"-":33,"a":24,"e":24,"i":13,"o":20,"u":13,":":33,";":33,"p":13,"q":24}},"Z":{"d":"206,0r-192,0r0,-31r154,-181r-124,0r0,49r-27,0r0,-72r185,0r0,29r-156,183r132,0r0,-50r28,0r0,73","w":219},"[":{"d":"88,-260r0,21r-29,0r0,261r29,0r0,21r-56,0r0,-303r56,0","w":119},"\\":{"d":"35,-239r98,243r-28,0r-98,-243r28,0","w":140},"]":{"d":"32,43r0,-21r28,0r0,-261r-28,0r0,-21r56,0r0,303r-56,0","w":119},"^":{"d":"19,-83r76,-152r26,0r76,152r-28,0r-61,-124r-61,124r-28,0","w":216},"_":{"d":"0,45r0,-18r180,0r0,18r-180,0","w":180},"a":{"d":"135,0v-1,-11,2,-25,-1,-34v-13,56,-121,50,-119,-13v2,-61,65,-52,120,-53v2,-32,-10,-46,-40,-45v-22,0,-40,5,-42,28r-32,0v2,-38,35,-51,70,-51v39,0,74,9,74,51r0,94r28,0r0,23r-58,0xm46,-47v0,22,19,28,37,28v36,0,52,-27,52,-58v-35,1,-89,-8,-89,30"},"b":{"d":"8,0r0,-23r29,0r0,-189r-29,0r0,-23r59,0r0,101v35,-64,149,-30,138,52v11,80,-106,119,-138,49r0,33r-59,0xm67,-82v0,37,18,63,57,63v31,0,50,-26,50,-63v0,-33,-18,-63,-50,-63v-40,0,-57,30,-57,63","w":219},"c":{"d":"168,-164r0,62r-23,0v-3,-26,-20,-43,-46,-43v-35,0,-54,29,-54,63v0,61,87,90,98,27r28,0v-1,40,-35,59,-72,59v-51,0,-86,-32,-86,-86v0,-73,90,-116,132,-62r0,-20r23,0","w":180},"d":{"d":"153,0r0,-31v-9,21,-33,35,-59,35v-55,0,-79,-37,-79,-86v0,-80,102,-118,138,-52r0,-78r-29,0r0,-23r59,0r0,212r29,0r0,23r-59,0xm153,-82v0,-35,-16,-63,-52,-63v-37,0,-55,28,-55,63v0,32,18,63,55,63v36,0,52,-31,52,-63","w":219},"e":{"d":"184,-74r-135,0v0,38,21,55,60,55v19,0,44,-11,46,-32r28,0v-1,40,-43,55,-78,55v-53,0,-88,-32,-88,-86v0,-54,35,-86,88,-86v58,0,79,41,79,94xm49,-97r105,0v-2,-30,-19,-48,-51,-48v-28,0,-54,18,-54,48"},"f":{"d":"12,0r0,-23r29,0r0,-118r-32,0r0,-23r32,0v-9,-60,28,-85,87,-72r0,23v-38,-10,-68,4,-58,49r39,0r0,23r-39,0r0,118r36,0r0,23r-94,0","w":119},"g":{"d":"212,-164r0,23r-29,0v-3,61,11,122,-9,170v-11,27,-44,34,-75,34v-36,0,-78,-7,-77,-49r33,0v0,22,23,26,43,26v48,2,57,-28,55,-76v-34,66,-151,29,-140,-50v-10,-78,106,-113,140,-48r0,-30r59,0xm45,-86v0,34,18,61,55,61v36,0,53,-28,53,-61v0,-32,-16,-59,-50,-59v-39,0,-58,22,-58,59","w":219},"h":{"d":"14,0r0,-23r28,0r0,-189r-28,0r0,-23r58,0r1,101v8,-21,31,-34,55,-34v75,0,56,78,58,145r29,0r0,23r-87,0r0,-23r29,0v-5,-50,19,-122,-38,-122v-58,0,-46,66,-47,122r28,0r0,23r-86,0","w":219},"i":{"d":"10,0r0,-23r29,0r0,-118r-29,0r0,-23r58,0r0,141r28,0r0,23r-86,0xm68,-235r0,33r-34,0r0,-33r34,0","w":100},"j":{"d":"71,-164r0,169v4,54,-27,64,-71,55r0,-23v25,4,42,11,41,-32r0,-146r-30,0r0,-23r60,0xm71,-235r0,33r-34,0r0,-33r34,0","w":100},"k":{"d":"10,0r0,-23r28,0r0,-189r-28,0r0,-23r58,0r0,148r64,-54r-25,0r0,-23r83,0r0,23r-24,0r-45,37r53,81r20,0r0,23r-76,0r0,-23r22,0r-41,-63r-31,26r0,37r26,0r0,23r-84,0"},"l":{"d":"10,0r0,-23r29,0r0,-189r-29,0r0,-23r58,0r0,212r28,0r0,23r-86,0","w":100},"m":{"d":"10,0r0,-23r29,0r0,-118r-29,0r0,-23r58,0v1,9,-2,22,1,29v13,-43,91,-45,105,0v9,-21,29,-33,52,-33v73,0,58,78,59,145r29,0r0,23r-87,0r0,-23r29,0v-6,-50,20,-122,-36,-122v-57,0,-41,69,-43,122r28,0r0,23r-86,0r0,-23r28,0v-7,-49,23,-122,-34,-122v-56,0,-44,67,-45,122r29,0r0,23r-87,0","w":320},"n":{"d":"14,0r0,-23r28,0r0,-118r-28,0r0,-23r58,0v1,9,-2,23,1,30v8,-21,31,-34,55,-34v75,0,56,78,58,145r29,0r0,23r-87,0r0,-23r29,0v-5,-50,19,-122,-38,-122v-58,0,-46,66,-47,122r28,0r0,23r-86,0","w":219},"o":{"d":"45,-82v0,34,19,63,56,63v37,0,54,-29,54,-63v0,-34,-17,-63,-54,-63v-37,0,-56,29,-56,63xm13,-82v0,-54,35,-86,88,-86v53,0,86,32,86,86v0,54,-33,86,-86,86v-53,0,-88,-32,-88,-86"},"p":{"d":"8,59r0,-23r29,0r0,-177r-29,0r0,-23r59,0r0,33v8,-21,30,-37,57,-37v51,0,81,33,81,86v0,81,-105,119,-138,50r0,68r28,0r0,23r-87,0xm67,-82v0,37,18,63,57,63v31,0,50,-26,50,-63v0,-33,-18,-63,-50,-63v-40,0,-57,30,-57,63","w":219},"q":{"d":"46,-80v0,34,18,61,54,61v36,0,53,-29,53,-62v0,-32,-17,-64,-53,-64v-40,0,-54,29,-54,65xm212,-164r0,23r-29,0r0,177r29,0r0,23r-87,0r0,-23r28,0r0,-64v-12,21,-36,32,-62,32v-47,0,-76,-39,-76,-84v0,-51,25,-88,79,-88v25,0,51,15,59,37r0,-33r59,0","w":219},"r":{"d":"13,0r0,-23r28,0r0,-118r-28,0r0,-23r58,0r0,33v6,-29,32,-41,64,-36r0,24v-67,-13,-67,55,-64,120r33,0r0,23r-91,0","w":140,"k":{",":20,".":20,"t":-9,"-":13}},"s":{"d":"135,-110v0,-27,-18,-35,-45,-35v-17,0,-40,5,-40,26v0,19,29,19,50,23v29,5,62,10,62,47v-1,60,-94,70,-120,26r0,23r-23,0r0,-57r23,0v0,31,26,37,54,38v14,0,34,-8,34,-26v0,-22,-24,-21,-42,-24v-30,-5,-67,-9,-67,-47v0,-56,89,-70,114,-28r0,-20r23,0r0,54r-23,0","w":180},"t":{"d":"122,-164r0,23r-54,0r0,96v0,14,3,26,18,26v18,0,19,-17,19,-31r25,0v0,34,-13,54,-48,54v-70,0,-35,-87,-43,-145r-33,0r0,-23r33,0r0,-36r29,-10r0,46r54,0","w":140},"u":{"d":"180,-164r0,141r28,0r0,23r-58,0v-1,-9,2,-21,-1,-28v-6,20,-29,32,-53,32v-76,0,-58,-77,-60,-145r-28,0r0,-23r58,0v8,54,-26,144,37,145v58,1,46,-67,47,-122r-28,0r0,-23r58,0","w":219},"v":{"d":"195,-164r0,23r-20,0r-58,141r-36,0r-56,-141r-20,0r0,-23r80,0r0,23r-30,0r45,114r47,-114r-30,0r0,-23r78,0","k":{",":27,".":27}},"w":{"d":"314,-164r0,23r-21,0r-49,141r-38,0r-46,-137r-47,137r-38,0r-48,-141r-22,0r0,-23r86,0r0,23r-33,0r38,114r45,-137r41,0r45,137r38,-114r-32,0r0,-23r81,0","w":320,"k":{",":20,".":20}},"x":{"d":"5,0r0,-23r19,0r58,-61r-55,-57r-18,0r0,-23r79,0r0,23r-24,0r39,42r40,-42r-27,0r0,-23r76,0r0,23r-18,0r-54,57r56,61r19,0r0,23r-83,0r0,-23r27,0r-41,-45r-43,45r30,0r0,23r-80,0"},"y":{"d":"196,-164r0,23r-18,0r-67,156v-12,35,-32,55,-76,46r0,-22v35,7,44,-14,53,-39r-64,-141r-18,0r0,-23r82,0r0,23r-31,0r47,110r46,-110r-32,0r0,-23r78,0","k":{",":27,".":27}},"z":{"d":"18,0r0,-23r107,-118r-79,0r0,32r-25,0r0,-55r140,0r0,23r-108,118r85,0r0,-36r25,0r0,59r-145,0","w":180},"{":{"d":"110,-260r0,23v-44,-10,-34,40,-34,78v0,36,-24,46,-30,51v7,2,30,14,30,51v0,34,-14,86,34,77r0,23v-57,12,-61,-36,-61,-94v0,-27,-12,-46,-29,-46r0,-23v32,1,29,-55,29,-93v0,-40,23,-51,61,-47","w":119},"|":{"d":"26,-270r28,0r0,360r-28,0r0,-360","w":79},"}":{"d":"10,43r0,-23v44,10,34,-40,34,-78v0,-36,24,-46,30,-51v-7,-2,-30,-14,-30,-51v0,-34,14,-86,-34,-77r0,-23v56,-12,61,36,61,94v0,27,12,46,29,46r0,23v-32,-1,-29,56,-29,94v0,40,-24,50,-61,46","w":119},"~":{"d":"38,-65r-13,-20v11,-36,62,-37,93,-16v23,15,50,11,60,-16r13,20v-15,35,-60,36,-91,14v-22,-16,-56,-9,-62,18","w":216},"'":{"d":"36,-153r0,-82r28,0r0,82r-28,0","w":100},"`":{"d":"3,-240r39,0r31,51r-23,0","w":100},"\u00a0":{"w":100}}});Cufon.registerFont({"w":200,"face":{"font-family":"serifa","font-weight":850,"font-stretch":"normal","units-per-em":"360","panose-1":"2 6 9 4 4 5 5 2 2 4","ascent":"235","descent":"-125","x-height":"5","bbox":"-14 -270 355 90","underline-thickness":"18","underline-position":"-18","stemh":"39","stemv":"68","unicode-range":"U+0020-U+007E"},"glyphs":{" ":{"w":100},"!":{"d":"45,-77r-12,-158r74,0r-12,158r-50,0xm40,0r0,-59r60,0r0,59r-60,0","w":140},"\"":{"d":"116,-129r0,-106r52,0r0,106r-52,0xm32,-129r0,-106r52,0r0,106r-52,0"},"#":{"d":"66,-235r38,0r-9,65r30,0r10,-65r38,0r-10,65r26,0r0,32r-30,0r-6,40r25,0r0,32r-30,0r-10,66r-38,0r10,-66r-31,0r-10,66r-38,0r10,-66r-29,0r0,-32r34,0r6,-40r-30,0r0,-32r35,0xm121,-138r-31,0r-6,40r31,0"},"$":{"d":"121,-56v0,-55,-110,-43,-110,-119v0,-33,26,-62,61,-65r0,-30r47,0r0,35v4,0,6,6,10,10r0,-10r55,0r0,73r-55,0v1,-18,-5,-40,-27,-40v-12,0,-23,9,-23,22v0,22,27,30,55,42v28,12,55,29,55,74v0,38,-25,64,-62,69r0,30r-47,0r0,-35v-5,0,-7,-7,-12,-10r0,10r-56,0r0,-75r56,0v0,18,10,41,31,41v13,0,22,-9,22,-22"},"%":{"d":"229,-90v-15,0,-15,21,-15,31v0,9,0,35,13,35v15,0,15,-26,15,-36v0,-10,0,-30,-13,-30xm228,-119v40,0,55,26,55,61v0,35,-15,63,-56,63v-38,0,-54,-27,-54,-60v0,-34,15,-64,55,-64xm92,-240v40,0,55,25,55,60v0,35,-15,64,-56,64v-38,0,-54,-28,-54,-61v0,-34,15,-63,55,-63xm94,-212v-15,0,-16,22,-16,32v0,9,0,35,13,35v15,0,15,-27,15,-37v0,-10,1,-30,-12,-30xm100,8r-33,0r152,-251r34,0","w":320},"&":{"d":"147,-47r-48,-48v-31,9,-25,65,11,61v6,0,29,-3,37,-13xm108,-162v20,-6,37,-42,3,-44v-34,0,-22,34,-3,44xm142,-126r42,43v6,-6,10,-16,11,-25r-15,0r0,-39r87,0r0,39r-24,0v-3,21,-12,40,-26,55r50,14r0,39r-77,0r-13,-15v-56,37,-165,28,-164,-54v0,-33,21,-51,48,-66v-16,-14,-27,-29,-27,-48v0,-42,40,-57,76,-57v34,0,75,12,75,53v0,27,-18,47,-43,61","w":280},"(":{"d":"68,-260r47,0v-53,91,-56,215,1,303r-47,0v-31,-39,-48,-98,-48,-147v0,-64,20,-98,47,-156","w":119},")":{"d":"52,43r-47,0v53,-90,55,-215,-1,-303r46,0v31,39,49,99,49,148v0,64,-20,97,-47,155","w":119},"*":{"d":"115,-194r37,-19r13,41r-38,6r26,27r-35,27r-18,-34r-19,35r-35,-27r28,-28r-39,-5r13,-42r37,19r-7,-41r44,0"},"+":{"d":"86,-113r0,-69r44,0r0,69r69,0r0,44r-69,0r0,69r-44,0r0,-69r-69,0r0,-44r69,0","w":216},",":{"d":"20,0r0,-60r60,0r0,60r-17,53r-43,0r17,-53r-17,0","w":100},"-":{"d":"14,-72r0,-50r91,0r0,50r-91,0","w":119},".":{"d":"20,-60r60,0r0,60r-60,0r0,-60","w":100},"\/":{"d":"107,-240r42,0r-115,245r-43,0","w":140},"0":{"d":"75,-118v0,24,-1,82,25,82v26,0,26,-58,26,-82v0,-24,0,-81,-26,-81v-26,0,-25,57,-25,81xm9,-118v0,-59,17,-122,91,-122v74,0,92,63,92,122v0,59,-18,123,-92,123v-74,0,-91,-64,-91,-123"},"1":{"d":"50,0r0,-41r33,0r0,-135r-59,42r0,-55r65,-46r62,0r0,194r27,0r0,41r-128,0"},"2":{"d":"9,-162v-2,-55,38,-78,91,-78v45,0,88,17,88,68v0,28,-13,44,-32,62r-75,69r55,0r0,-28r56,0r0,69r-182,0r0,-52v24,-24,110,-83,110,-125v0,-12,-8,-22,-21,-22v-21,0,-25,20,-24,37r-66,0"},"3":{"d":"74,-66v0,18,9,29,25,30v19,0,25,-17,25,-33v0,-32,-29,-29,-45,-29r0,-41v28,1,43,-5,42,-33v0,-15,-8,-27,-22,-27v-18,1,-24,16,-23,33r-66,0v0,-49,42,-75,89,-74v45,0,90,18,90,68v0,32,-21,48,-51,52v31,3,54,19,54,53v0,58,-41,72,-93,72v-52,0,-91,-20,-91,-71r66,0"},"4":{"d":"175,-235r0,135r19,0r0,41r-19,0r0,22r18,0r0,37r-113,0r0,-37r31,0r0,-22r-105,0r0,-51r89,-125r80,0xm111,-100r-1,-85r-56,85r57,0"},"5":{"d":"79,-64v-1,16,7,28,22,28v19,0,24,-25,24,-40v0,-16,-3,-39,-24,-39v-15,0,-21,10,-23,25r-63,0r0,-145r166,0r0,41r-102,0v1,19,-2,43,1,60v34,-49,113,-11,113,52v0,62,-35,87,-92,87v-46,0,-89,-17,-90,-69r68,0"},"6":{"d":"188,-177r-64,0v1,-12,-9,-22,-21,-22v-31,2,-34,45,-34,70v34,-55,123,-20,123,49v0,58,-36,85,-93,85v-71,0,-91,-53,-91,-116v0,-69,22,-129,101,-129v42,0,78,17,79,63xm99,-36v34,-2,39,-77,0,-79v-37,3,-37,78,0,79"},"7":{"d":"193,-235r0,46r-84,189r-72,0r90,-194r-64,0r0,36r-56,0r0,-77r186,0"},"8":{"d":"100,5v-43,0,-92,-14,-92,-69v-1,-34,26,-51,55,-59v-32,-5,-51,-20,-51,-54v0,-46,48,-63,88,-63v41,0,88,15,88,63v0,33,-21,51,-51,55v31,4,55,26,55,58v0,55,-47,69,-92,69xm100,-143v18,0,26,-13,26,-29v0,-16,-8,-30,-26,-30v-17,0,-25,15,-25,30v0,16,7,29,25,29xm100,-34v20,0,28,-14,28,-32v0,-18,-6,-38,-28,-38v-22,0,-28,19,-28,38v0,18,8,32,28,32"},"9":{"d":"13,-58r63,0v-2,12,10,22,22,22v31,-2,32,-45,33,-70v-34,54,-123,19,-123,-49v0,-58,36,-85,93,-85v71,0,91,52,91,115v0,69,-22,130,-101,130v-42,0,-77,-17,-78,-63xm103,-121v33,-1,37,-76,0,-78v-37,3,-37,77,0,78"},":":{"d":"20,-111r0,-61r60,0r0,61r-60,0xm20,0r0,-60r60,0r0,60r-60,0","w":100},";":{"d":"20,0r0,-60r60,0r0,60r-17,53r-43,0r17,-53r-17,0xm20,-111r0,-61r60,0r0,61r-60,0","w":100},"<":{"d":"199,-39r0,42r-182,-77r0,-34r182,-77r0,41r-126,53","w":216},"=":{"d":"199,-153r0,43r-182,0r0,-43r182,0xm199,-72r0,43r-182,0r0,-43r182,0","w":216},">":{"d":"17,3r0,-42r126,-52r-126,-53r0,-41r182,77r0,34","w":216},"?":{"d":"53,-77v-9,-58,47,-59,51,-103v0,-11,-5,-19,-18,-19v-15,0,-19,16,-18,25r-63,0v0,-48,38,-66,83,-66v40,0,83,16,83,63v0,23,-12,46,-33,63v-23,19,-27,29,-27,37r-58,0xm112,-59r0,59r-61,0r0,-59r61,0","w":180},"@":{"d":"147,-144v-37,-2,-49,60,-8,61v40,4,51,-62,8,-61xm16,-117v0,-70,60,-123,134,-123v62,0,122,38,122,99v0,75,-70,95,-90,95v-11,1,-16,-7,-19,-16v-31,36,-91,3,-91,-43v0,-57,73,-102,113,-56r3,-15r33,0r-15,78v-1,6,-5,18,2,18v15,0,33,-15,33,-50v0,-53,-39,-79,-92,-79v-58,0,-95,38,-95,92v0,84,105,112,167,72r35,0v-63,92,-240,47,-240,-72","w":288},"A":{"d":"7,0r0,-41r15,0r79,-194r80,0r77,194r15,0r0,41r-112,0r0,-41r27,0r-11,-26r-84,0r-11,26r27,0r0,41r-102,0xm108,-106r54,0r-27,-78","w":280},"B":{"d":"7,0r0,-41r23,0r0,-153r-23,0r0,-41r123,0v53,0,96,-1,96,58v0,32,-22,53,-53,56v36,3,57,21,57,56v0,100,-133,55,-223,65xm98,-194r0,55v30,-1,57,7,60,-29v3,-31,-31,-26,-60,-26xm98,-100r0,59v31,0,62,5,64,-28v2,-34,-31,-32,-64,-31","w":240},"C":{"d":"139,-36v24,0,42,-20,42,-44r68,0v-3,62,-54,85,-110,85v-84,0,-127,-46,-127,-128v0,-65,37,-117,107,-117v26,0,54,4,70,27r0,-22r56,0r0,88r-60,0v0,-29,-15,-52,-46,-52v-45,0,-55,48,-55,85v0,37,11,78,55,78","w":259},"D":{"d":"10,0r0,-41r24,0r0,-153r-24,0r0,-41r83,0v24,0,60,-1,83,2v101,13,121,161,44,213v-56,38,-130,15,-210,20xm102,-194r0,153v63,8,92,-24,92,-79v0,-56,-29,-82,-92,-74","w":280},"E":{"d":"7,0r0,-41r23,0r0,-153r-23,0r0,-41r221,0r0,73r-52,0r0,-32r-78,0r0,55r22,0r0,-24r41,0r0,87r-41,0r0,-24r-22,0r0,59r78,0r0,-36r52,0r0,77r-221,0","w":240},"F":{"d":"7,0r0,-41r23,0r0,-153r-23,0r0,-41r221,0r0,77r-52,0r0,-36r-78,0r0,60r22,0r0,-24r41,0r0,89r-41,0r0,-26r-22,0r0,54r30,0r0,41r-121,0","w":240,"k":{"A":27,",":46,".":46}},"G":{"d":"192,-153v-1,-29,-22,-46,-52,-46v-46,0,-56,45,-56,81v0,36,10,82,56,82v32,0,53,-19,54,-46r-26,0r0,-41r105,0r0,41r-19,0r0,82r-56,0v-1,-7,2,-18,-1,-23v-15,21,-40,28,-66,28v-74,0,-119,-49,-119,-122v0,-73,35,-123,112,-123v28,-1,55,6,73,28r0,-23r55,0r0,82r-60,0","w":280},"H":{"d":"7,0r0,-41r23,0r0,-153r-23,0r0,-41r118,0r0,41r-27,0r0,53r85,0r0,-53r-27,0r0,-41r117,0r0,41r-22,0r0,153r22,0r0,41r-117,0r0,-41r27,0r0,-57r-85,0r0,57r27,0r0,41r-118,0","w":280},"I":{"d":"9,0r0,-41r27,0r0,-153r-27,0r0,-41r122,0r0,41r-27,0r0,153r27,0r0,41r-122,0","w":140},"J":{"d":"175,-82v8,54,-33,87,-82,87v-60,0,-86,-27,-83,-88r64,0v0,18,-2,47,17,47v15,0,17,-18,17,-30r0,-128r-33,0r0,-41r119,0r0,41r-19,0r0,112"},"K":{"d":"7,0r0,-41r23,0r0,-153r-23,0r0,-41r113,0r0,41r-22,0r0,63r58,-63r-17,0r0,-41r111,0r0,41r-20,0r-65,67r74,86r16,0r0,41r-114,0r0,-41r20,0r-63,-77r0,77r22,0r0,41r-113,0","w":259},"L":{"d":"7,0r0,-41r23,0r0,-153r-23,0r0,-41r125,0r0,41r-34,0r0,153r56,0r0,-49r56,0r0,90r-203,0","w":219,"k":{"T":33,"V":33,"W":27,"y":20,"Y":33}},"M":{"d":"6,0r0,-41r21,0r0,-153r-21,0r0,-41r122,0r42,170r42,-170r122,0r0,41r-21,0r0,153r21,0r0,41r-106,0r0,-41r23,0r-1,-153r-54,194r-62,0r-55,-194r0,153r22,0r0,41r-95,0","w":339},"N":{"d":"7,0r0,-41r23,0r0,-153r-23,0r0,-41r115,0r76,176r0,-135r-25,0r0,-41r100,0r0,41r-20,0r0,194r-84,0r-83,-186r0,145r26,0r0,41r-105,0","w":280},"O":{"d":"140,-36v46,0,56,-46,56,-82v0,-36,-10,-81,-56,-81v-46,0,-56,45,-56,81v0,36,10,82,56,82xm140,5v-79,0,-128,-47,-128,-123v0,-76,49,-122,128,-122v79,0,128,46,128,122v0,76,-49,123,-128,123","w":280},"P":{"d":"10,0r0,-41r24,0r0,-153r-24,0r0,-41v94,5,221,-28,220,75v0,70,-57,79,-128,75r0,44r32,0r0,41r-124,0xm102,-194r0,68v33,2,59,-3,59,-35v0,-34,-26,-34,-59,-33","w":240,"k":{"A":27,",":46,".":46}},"Q":{"d":"275,0v-48,-1,-91,5,-135,5v-79,0,-128,-47,-128,-123v0,-76,49,-122,128,-122v79,0,128,46,128,122v1,28,-16,63,-47,77r54,0r0,41xm140,-36v46,0,56,-46,56,-82v0,-36,-10,-81,-56,-81v-46,0,-56,45,-56,81v0,36,10,82,56,82","w":280},"R":{"d":"172,0v-16,-26,-11,-108,-71,-94r0,53r25,0r0,41r-116,0r0,-41r23,0r0,-153r-23,0r0,-41v88,8,219,-31,219,64v1,37,-26,53,-59,58v48,0,45,38,59,72r21,0r0,41r-78,0xm101,-194r0,59v32,1,60,3,60,-32v0,-34,-31,-26,-60,-27","w":259,"k":{"T":13,"V":13,"W":13,"y":6,"Y":13}},"S":{"d":"9,0r0,-81r59,0v-1,26,15,45,42,45v16,0,33,-7,33,-25v0,-43,-133,-23,-133,-109v0,-50,40,-70,86,-70v18,-1,47,6,55,23r0,-18r55,0r0,74r-55,0v2,-27,-15,-38,-40,-38v-14,0,-33,5,-33,22v0,40,133,19,133,106v0,56,-35,76,-88,76v-22,1,-48,-8,-59,-28r0,23r-55,0","w":219},"T":{"d":"10,-235r239,0r0,85r-55,0r0,-44r-30,0r0,153r30,0r0,41r-128,0r0,-41r30,0r0,-153r-30,0r0,44r-56,0r0,-85","w":259,"k":{"w":33,"y":27,"A":33,",":33,".":33,"a":20,"c":27,"e":27,"i":13,"o":27,"r":20,"s":20,"u":27,":":27,"-":40,";":27}},"U":{"d":"255,-235r0,41r-19,0r0,98v0,75,-28,101,-103,101v-77,0,-109,-22,-109,-101r0,-98r-19,0r0,-41r113,0r0,41r-26,0v8,61,-27,158,41,158v70,0,34,-97,43,-158r-25,0r0,-41r104,0","w":259},"V":{"d":"274,-235r0,41r-17,0r-80,194r-75,0r-79,-194r-17,0r0,-41r118,0r0,41r-28,0r49,141r49,-141r-28,0r0,-41r108,0","w":280,"k":{"y":17,"A":33,",":46,".":46,"a":26,"e":26,"i":13,"o":27,"r":17,"u":17,":":33,"-":27,";":33}},"W":{"d":"355,-235r0,41r-14,0r-50,194r-78,0r-33,-185r-33,185r-80,0r-48,-194r-14,0r0,-41r107,0r0,41r-27,0r27,141r37,-182r73,0r37,182r27,-141r-27,0r0,-41r96,0","w":360,"k":{"y":14,"A":20,",":27,".":27,"a":13,"e":13,"i":6,"o":17,"r":6,"u":14,":":20,"-":13,";":20}},"X":{"d":"6,0r0,-41r17,0r73,-80r-69,-73r-17,0r0,-41r124,0r0,37r-27,0r40,50r39,-50r-26,0r0,-37r109,0r0,41r-17,0r-68,74r73,79r17,0r0,41r-126,0r0,-37r29,0r-44,-53r-43,53r29,0r0,37r-113,0","w":280},"Y":{"d":"255,-235r0,41r-15,0r-77,110r0,43r33,0r0,41r-132,0r0,-41r32,0r0,-41r-77,-112r-14,0r0,-41r120,0r0,41r-28,0r38,61r40,-61r-27,0r0,-41r107,0","w":259,"k":{"v":17,"A":27,",":33,".":33,"a":28,"e":28,"i":13,"o":28,"u":17,":":27,"-":33,";":27,"p":17,"q":20}},"Z":{"d":"11,0r0,-50r132,-144r-73,0r0,39r-55,0r0,-80r212,0r0,50r-134,144r81,0r0,-41r55,0r0,82r-218,0","w":240},"[":{"d":"22,43r0,-303r84,0r0,37r-30,0r0,229r30,0r0,37r-84,0","w":119},"\\":{"d":"-9,-240r42,0r116,245r-43,0","w":140},"]":{"d":"98,-260r0,303r-84,0r0,-37r30,0r0,-229r-30,0r0,-37r84,0","w":119},"^":{"d":"68,-104r-42,0r63,-131r38,0r63,131r-42,0r-40,-89","w":216},"_":{"d":"180,45r-180,0r0,-18r180,0r0,18","w":180},"a":{"d":"131,-107v1,-19,-5,-36,-24,-36v-18,0,-26,12,-26,27r-63,0v1,-45,42,-61,86,-61v45,0,89,11,89,62r0,76r19,0r0,39r-77,0r0,-26v-26,49,-126,41,-126,-23v0,-55,64,-62,122,-58xm133,-76v-24,-1,-63,-1,-62,26v0,14,12,18,24,18v24,0,38,-22,38,-44","w":219},"b":{"d":"8,0r0,-39r21,0r0,-165r-21,0r0,-39r88,0r1,94v12,-20,37,-28,60,-28v53,0,73,43,73,91v0,50,-21,91,-76,91v-25,1,-47,-12,-63,-29r0,24r-83,0xm130,-36v27,0,31,-30,31,-51v0,-22,-5,-49,-32,-49v-49,0,-47,100,1,100","w":240},"c":{"d":"193,-62v-1,52,-47,68,-89,67v-59,0,-95,-35,-95,-93v0,-53,28,-89,83,-89v21,0,39,6,48,25r0,-20r52,0r0,67r-56,0v2,-16,-11,-31,-26,-31v-26,0,-31,26,-31,46v0,21,3,54,31,54v16,0,25,-11,26,-26r57,0"},"d":{"d":"211,-243r0,204r19,0r0,39r-82,0v-1,-10,2,-24,-1,-32v-10,28,-36,37,-63,37v-57,0,-75,-42,-75,-92v0,-49,22,-90,76,-90v23,0,48,6,58,29r0,-56r-22,0r0,-39r90,0xm110,-36v47,0,50,-100,1,-100v-28,0,-32,31,-32,53v0,22,5,47,31,47","w":240},"e":{"d":"188,-50v-9,43,-48,55,-87,55v-58,0,-92,-33,-92,-91v0,-55,34,-91,90,-91v79,0,93,53,92,108r-116,0v0,18,4,37,26,37v13,0,21,-5,24,-18r63,0xm75,-105r50,0v0,-18,-4,-35,-26,-35v-22,0,-24,18,-24,35"},"f":{"d":"11,0r0,-39r22,0r0,-94r-24,0r0,-39r24,0v-13,-73,51,-85,111,-72r0,41v-27,-2,-48,2,-43,31r31,0r0,39r-31,0r0,94r28,0r0,39r-118,0","w":140},"g":{"d":"88,12v4,27,56,24,55,-7v-1,-11,2,-25,-1,-34v-12,21,-36,26,-59,26v-54,0,-73,-39,-73,-87v0,-48,25,-87,76,-87v27,-1,48,13,63,35r0,-30r83,0r0,39r-21,0r0,132v0,53,-52,70,-97,70v-37,0,-93,-7,-93,-57r67,0xm110,-136v-44,0,-44,92,0,92v26,0,35,-22,35,-44v0,-24,-8,-48,-35,-48","w":240},"h":{"d":"9,0r0,-39r20,0r0,-165r-20,0r0,-39r87,0r1,101v15,-54,116,-45,116,19r0,84r18,0r0,39r-102,0r0,-39r17,0v-4,-35,14,-93,-23,-93v-41,0,-24,56,-27,93r20,0r0,39r-107,0","w":240},"i":{"d":"9,0r0,-39r20,0r0,-94r-20,0r0,-39r87,0r0,133r18,0r0,39r-105,0xm29,-190r0,-53r67,0r0,53r-67,0","w":119},"j":{"d":"9,-133r0,-39r87,0r0,178v9,60,-40,70,-95,60r0,-40v24,4,28,-13,28,-34r0,-125r-20,0xm29,-190r0,-53r67,0r0,53r-67,0","w":119},"k":{"d":"9,0r0,-39r20,0r0,-165r-20,0r0,-39r87,0r0,143v16,-12,36,-20,49,-35r-28,0r0,-37r111,0r0,38r-57,26r44,69r16,0r0,39r-103,0r0,-37r20,0r-24,-37v-10,11,-32,12,-28,37r15,0r0,37r-102,0","w":240},"l":{"d":"9,0r0,-39r20,0r0,-165r-20,0r0,-39r87,0r0,204r18,0r0,39r-105,0","w":119},"m":{"d":"13,0r0,-39r20,0r0,-94r-20,0r0,-39r84,0v1,10,-2,23,1,31v21,-45,92,-51,116,-4v25,-51,119,-41,119,22r0,84r20,0r0,39r-103,0r0,-39r15,0v-4,-35,14,-88,-22,-93v-40,4,-22,56,-26,93r15,0r0,39r-98,0r0,-39r15,0v-5,-34,15,-93,-22,-93v-41,0,-23,55,-27,93r16,0r0,39r-103,0","w":360},"n":{"d":"9,0r0,-39r20,0r0,-94r-20,0r0,-39r81,0v1,11,-2,25,1,34v18,-56,122,-53,122,15r0,84r18,0r0,39r-102,0r0,-39r17,0v-4,-35,14,-93,-23,-93v-41,0,-24,56,-27,93r16,0r0,39r-103,0","w":240},"o":{"d":"79,-86v0,21,4,50,31,50v27,0,31,-29,31,-50v0,-21,-4,-50,-31,-50v-27,0,-31,29,-31,50xm9,-86v0,-59,46,-91,101,-91v55,0,101,32,101,91v0,58,-46,91,-101,91v-55,0,-101,-33,-101,-91","w":219},"p":{"d":"9,64r0,-39r20,0r0,-158r-20,0r0,-39r82,0v1,10,-2,23,1,31v18,-27,33,-36,65,-36v53,0,73,43,73,91v0,50,-21,91,-76,91v-25,1,-44,-9,-58,-29r0,49r25,0r0,39r-112,0xm130,-36v27,0,31,-30,31,-51v0,-22,-5,-49,-32,-49v-49,0,-47,100,1,100","w":240},"q":{"d":"118,64r0,-39r25,0r0,-49v-10,22,-37,29,-59,29v-57,0,-75,-42,-75,-92v0,-49,22,-90,76,-90v27,-1,54,13,64,38r0,-33r81,0r0,39r-19,0r0,158r19,0r0,39r-112,0xm110,-36v47,0,50,-100,1,-100v-28,0,-32,31,-32,53v0,22,5,47,31,47","w":240},"r":{"d":"9,0r0,-39r20,0r0,-94r-20,0r0,-39r82,0v1,13,-2,31,1,42v6,-30,33,-56,67,-44r0,61v-31,-10,-63,5,-63,39r0,35r25,0r0,39r-112,0","w":159,"k":{",":13,".":13}},"s":{"d":"13,0r0,-60r49,0v-5,26,46,44,46,14v0,-35,-98,-4,-98,-75v0,-58,79,-74,109,-32r0,-19r45,0r0,59r-50,0v6,-25,-42,-42,-42,-14v0,31,98,5,98,76v0,58,-85,74,-111,32r0,19r-46,0","w":180},"t":{"d":"6,-133r0,-39r23,0r0,-32r67,-23r0,55r43,0r0,39r-43,0r0,84v0,7,3,13,11,13v12,-1,10,-17,10,-28r36,0v3,48,-20,69,-60,69v-78,0,-63,-69,-64,-138r-23,0","w":159},"u":{"d":"208,-172r0,133r21,0r0,39r-82,0r0,-34v-17,56,-123,53,-123,-14r0,-85r-18,0r0,-39r85,0r0,107v0,15,8,25,23,25v41,0,23,-56,27,-93r-15,0r0,-39r82,0","w":240},"v":{"d":"5,-133r0,-39r100,0r0,39r-18,0r28,82r28,-82r-18,0r0,-39r90,0r0,40r-11,0r-53,132r-82,0r-53,-133r-11,0","w":219,"k":{",":20,".":20}},"w":{"d":"7,-133r0,-39r98,0r0,39r-20,0r21,88r30,-127r76,0r30,127r20,-88r-18,0r0,-39r89,0r0,39r-13,0r-42,133r-83,0r-25,-118r-27,118r-83,0r-40,-133r-13,0","w":339,"k":{",":13,".":13}},"x":{"d":"10,-133r0,-39r97,0r0,36r-16,0r25,28r24,-28r-15,0r0,-36r85,0r0,39r-13,0r-41,44r46,50r11,0r0,39r-99,0r0,-35r20,0r-30,-33r-29,33r20,0r0,35r-88,0r0,-39r11,0r46,-50r-41,-44r-13,0","w":219},"y":{"d":"5,-133r0,-39r101,0r0,39r-18,0r29,80r26,-80r-18,0r0,-39r90,0r0,39r-12,0r-70,157v-15,45,-48,49,-97,42r0,-43v20,7,55,4,42,-26r-59,-130r-14,0","w":219,"k":{",":20,".":20}},"z":{"d":"15,0r0,-46r94,-90r-41,0r0,19r-50,0r0,-55r166,0r0,46r-95,91r46,0r0,-22r50,0r0,57r-170,0"},"{":{"d":"120,8r0,35v-48,1,-89,3,-89,-49r0,-61v0,-21,-22,-24,-31,-24r0,-35v9,0,31,-3,31,-27r0,-57v7,-52,41,-52,89,-50r0,35v-48,-8,-36,36,-36,78v0,35,-31,35,-42,39v13,1,42,7,42,35v0,37,-20,87,36,81","w":119},"|":{"d":"18,-270r44,0r0,360r-44,0r0,-360","w":79},"}":{"d":"0,43r0,-35v48,9,36,-39,36,-81v0,-29,30,-32,41,-36v-13,-1,-41,-4,-41,-38v0,-35,18,-85,-36,-78r0,-35v48,-2,89,-2,89,50r0,57v0,24,22,27,31,27r0,35v-9,0,-31,3,-31,24r0,61v-7,52,-42,51,-89,49","w":119},"~":{"d":"146,-59v-36,0,-90,-51,-108,1r-13,-34v8,-15,21,-30,45,-30v24,0,56,22,77,23v14,0,23,-13,31,-26r13,35v-11,15,-23,31,-45,31","w":216},"'":{"d":"24,-129r0,-106r52,0r0,106r-52,0","w":100},"`":{"d":"48,-240r38,53r-44,0r-56,-44r0,-9r62,0","w":100},"\u00a0":{"w":100}}});
$(function() {

    Cufon.replace('#sidebar h2', {
        textShadow: '#444 1px 1px'
    });
    Cufon.replace('#main h1', {
        textShadow: '#afa892 2px 2px'
    });
    Cufon.replace('#main h2');
    Cufon.replace(".cu");

    var d = 800;
    var colors = ["#bf6a8e", "#8ebf6a", "#8e6abf", "#bf8e6a", "#6a8ebf"];

//    $("#logo").data("index", -1);
//    $("#logo").click(function() {

//        //		$("#header").css({ height: "400px" });

//        $("#header")
//			.animate({
//			    backgroundPosition: "-=120px -25px"
//			}, d, "easeOutElastic");
//    });

    $("#do a").click(function(e) {
        e.preventDefault();
        $("#header")
			.animate({
			    backgroundPosition: "-=320px 0",
			    backgroundColor: $(this).css("backgroundColor")
			}, d, "easeOutCubic");
        return false;
    });

    // Highlights selected tree from sidebar menu
    $("#sidebar li a").each(function(i, a) {
        if ($(this).attr("href").indexOf(window.location.pathname.toLowerCase()) == 0 && window.location.pathname.lastIndexOf("/") > 0) {
            $(this).closest("#sidebar>ul>li").addClass("selected");
        }
    });

    // Highlights selected tree from sidebar menu
    $("#main-nav li a").each(function(i, a) {
        if (window.location.pathname.toLowerCase().indexOf($(a).attr("href")) == 0) {
            $(a).closest("li").addClass("selected");
        }
    });

    // Hides all nested <ul> in sidebar
    $("#sidebar li ul").hide();

    // Shows all selected <ul> in sidebar
    $("#sidebar li.selected ul").show();

});
//
// String.Format implementation
//
String.format = function(format,args){
    var result = format;
    for(var i = 1 ; i < arguments.length ; i++) {
        result = result.replace(new RegExp( '\\{' + (i-1) + '\\}', 'g' ),arguments[i]);
    }
    return result;
}


//
// string.isEmpty implementation
//
String.isEmpty = function(value) {
    if(value){ 
        if( typeof( value ) == 'string' ){
             if( value.length > 0 )
                return false;
       }
       if( value != null )
           return false;
    }
    return true; 
}

//
// string.isNumber implementation
//
String.isNumber = function(value) {
	if (String.isEmpty(value)) return false;
	return !isNaN(parseFloat(value));
}

//
// string.isNumber implementation
//
String.isDate = function(value) {
	if (String.isEmpty(value)) return false;
	var scratch = new Date(value);
	return (scratch.toString() != "NaN" && scratch.toString() != "Invalid Date");
}

//
// string.isEmail implementation
//
String.isEmail = function(value) {
	if (String.isEmpty(value)) return false;
	var emailReg = /^[a-z][a-z-_0-9\.]+@[a-z-_=>0-9\.]+\.[a-z]{2,3}$/i
    return emailReg.test(value);
}


//
// string.StartWith implementation
//
String.prototype.startsWith = function(prefix,ignoreCase) {
    if( !prefix ) return false;
    if( prefix.length > this.length ) return false;
    if( ignoreCase ) {
        if( ignoreCase == true ) {
            return (this.substr(0, prefix.length).toUpperCase() == prefix.toUpperCase());
        }
    }
    return (this.substr(0, prefix.length) === prefix);
}

 //
// string.EndsWith implementation
//
String.prototype.endsWith = function(suffix,ignoreCase) {
    if( !suffix ) return false;
    if( suffix.length > this.length ) return false;
    if( ignoreCase ) {
        if( ignoreCase == true ) {
            return (this.substr(this.length - suffix.length).toUpperCase() == suffix.toUpperCase());
        }
    }
    return (this.substr(this.length - suffix.length) === suffix);
}

 //
// string.Trim implementation
//
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, '');
}





function Validator() {};
Validator.prototype = {

	errorClass : "error",

	summaryElement: null,
	
	errors: [],
	
	addError : function(selector, message, highlite) {
		this.errors.push({ "selector": selector, "message" : message});
		
		var items = [selector];
		
		if (typeof highlite == "undefined") {
			var id = $(selector).attr("id");
			if (id) highlite = "label[for='"+ id +"']";
		}
		if (typeof highlite == "string")  items.push(highlite);

		$(items.join(",")).addClass(this.errorClass).attr("title", message).tooltip({ top: 0, left: 10, track: true });
 
	},
	
	removeError : function(selector, highlite) {
		var el = $(selector);
		el.removeClass(this.errorClass).attr("title", "");
		
		var items = [selector];
		
		if (typeof highlite == "undefined") {
			var id = $(selector).attr("id");
			if (id) highlite = "label[for='"+ id +"']";
		}
		if (typeof highlite == "string") items.push(highlite);

		$(items.join(",")).removeClass(this.errorClass).removeAttr("title").each(function(i,e) {
			e.tooltipText = null;
		});
	},
	
	validate : function(options) {

		// Default Settings
		var hasError = false;
		var settings = { required: true };
		
		// Handle method overloading
		if (arguments.length == 2 && typeof arguments[0] == "string") {
			settings.selector = arguments[0];
			settings.requiredText = arguments[1];
		}
		else
		{
			$.extend(settings, options);
		}

		// Get value based on 'type'		
		var value = "";
		switch(settings.fieldType) {
		
			case "list":
				value = $(settings.selector).serialize();
				break;
				
			default:
				value = $(settings.selector).val();
				break;
		}
		
		
		// Check if it's a required field and it is empty
		if (settings.required && String.isEmpty(value)) {
			this.addError(settings.selector, settings.requiredText, settings.highlite);
			hasError = true;
		}
		
		
		// If not empty, make sure it's valid
		if (!String.isEmpty(value)) 
		{
			var message = (settings.invalidText) ? settings.invalidText : "This is not a valid value";
			var func = this.getValidationFunction(settings.type);
			if (!func(value)) {
				this.addError(settings.selector, message, settings.highlite);
				hasError = true;
			}
		}
		
		if (!hasError)
			this.removeError(settings.selector, settings.highlite);
	},
	
	getValidationFunction : function(type) {
		switch (type) {
			case "number" : return String.isNumber;
			case "email" : return String.isEmail;
			case "date" : return String.isDate;
			default: return function() { return true; }
		}
	},
	
	displayErrors : function() {
		
		if (this.summaryElement) {
			var list = $("<ul></ul>");
			$.each(this.errors, function(i,e) {
				$("<li>"+ e.message +"</li>").data("ref", e.selector).click(errorItemClick).appendTo(list);
			});
			
			$(this.summaryElement)
				.hide()
				.empty()
				.append(list)
				.slideDown();
				
		} else {
		
			var alertString = "Errors: ";
			$.each(this.errors, function(i,e) {
				alertString += "\n - "+ e.message;
			});
			alert(alertString);
		}
	},
	
	isValid : function() {
		if (this.errors.length > 0) {
			this.displayErrors();
			return false;
		}
		return true;
	}
};

function errorItemClick() {
	alert($(this).data("ref"));
};
