/*
* jQuery 1.2.1 - New Wave Javascript
*
* Copyright (c) 2007 John Resig (jquery.com)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* $Date: 2007-09-16 23:42:06 -0400 (Sun, 16 Sep 2007) $
* $Rev: 3353 $
*/
(function() {    
    if (typeof jQuery != "undefined") var _jQuery = jQuery; var jQuery = window.jQuery = function(selector, context) { return this instanceof jQuery ? this.init(selector, context) : new jQuery(selector, context); }; if (typeof $ != "undefined") var _$ = $; window.$ = jQuery; var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/; jQuery.fn = jQuery.prototype = { init: function(selector, context) {
        selector = selector || document; if (typeof selector == "string") {
            var m = quickExpr.exec(selector); if (m && (m[1] || !context)) {
                if (m[1]) selector = jQuery.clean([m[1]], context); else {
                    var tmp = document.getElementById(m[3]); if (tmp) if (tmp.id != m[3]) return jQuery().find(selector); else { this[0] = tmp; this.length = 1; return this; } else
                        selector = [];
                }
            } else
                return new jQuery(context).find(selector);
        } else if (jQuery.isFunction(selector)) return new jQuery(document)[jQuery.fn.ready ? "ready" : "load"](selector); return this.setArray(selector.constructor == Array && selector || (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray(selector) || [selector]);
    }, jquery: "1.2.1", size: function() { return this.length; }, length: 0, get: function(num) { return num == undefined ? jQuery.makeArray(this) : this[num]; }, pushStack: function(a) { var ret = jQuery(a); ret.prevObject = this; return ret; }, setArray: function(a) { this.length = 0; Array.prototype.push.apply(this, a); return this; }, each: function(fn, args) { return jQuery.each(this, fn, args); }, index: function(obj) { var pos = -1; this.each(function(i) { if (this == obj) pos = i; }); return pos; }, attr: function(key, value, type) { var obj = key; if (key.constructor == String) if (value == undefined) return this.length && jQuery[type || "attr"](this[0], key) || undefined; else { obj = {}; obj[key] = value; } return this.each(function(index) { for (var prop in obj) jQuery.attr(type ? this.style : this, prop, jQuery.prop(this, obj[prop], type, index, prop)); }); }, css: function(key, value) { return this.attr(key, value, "curCSS"); }, text: function(e) { if (typeof e != "object" && e != null) return this.empty().append(document.createTextNode(e)); var t = ""; jQuery.each(e || this, function() { jQuery.each(this.childNodes, function() { if (this.nodeType != 8) t += this.nodeType != 1 ? this.nodeValue : jQuery.fn.text([this]); }); }); return t; }, wrapAll: function(html) { if (this[0]) jQuery(html, this[0].ownerDocument).clone().insertBefore(this[0]).map(function() { var elem = this; while (elem.firstChild) elem = elem.firstChild; return elem; }).append(this); return this; }, wrapInner: function(html) { return this.each(function() { jQuery(this).contents().wrapAll(html); }); }, wrap: function(html) { return this.each(function() { jQuery(this).wrapAll(html); }); }, append: function() { return this.domManip(arguments, true, 1, function(a) { this.appendChild(a); }); }, prepend: function() { return this.domManip(arguments, true, -1, function(a) { this.insertBefore(a, this.firstChild); }); }, before: function() { return this.domManip(arguments, false, 1, function(a) { this.parentNode.insertBefore(a, this); }); }, after: function() { return this.domManip(arguments, false, -1, function(a) { this.parentNode.insertBefore(a, this.nextSibling); }); }, end: function() { return this.prevObject || jQuery([]); }, find: function(t) { var data = jQuery.map(this, function(a) { return jQuery.find(t, a); }); return this.pushStack(/[^+>] [^+>]/.test(t) || t.indexOf("..") > -1 ? jQuery.unique(data) : data); }, clone: function(events) { var ret = this.map(function() { return this.outerHTML ? jQuery(this.outerHTML)[0] : this.cloneNode(true); }); var clone = ret.find("*").andSelf().each(function() { if (this[expando] != undefined) this[expando] = null; }); if (events === true) this.find("*").andSelf().each(function(i) { var events = jQuery.data(this, "events"); for (var type in events) for (var handler in events[type]) jQuery.event.add(clone[i], type, events[type][handler], events[type][handler].data); }); return ret; }, filter: function(t) { return this.pushStack(jQuery.isFunction(t) && jQuery.grep(this, function(el, index) { return t.apply(el, [index]); }) || jQuery.multiFilter(t, this)); }, not: function(t) { return this.pushStack(t.constructor == String && jQuery.multiFilter(t, this, true) || jQuery.grep(this, function(a) { return (t.constructor == Array || t.jquery) ? jQuery.inArray(a, t) < 0 : a != t; })); }, add: function(t) { return this.pushStack(jQuery.merge(this.get(), t.constructor == String ? jQuery(t).get() : t.length != undefined && (!t.nodeName || jQuery.nodeName(t, "form")) ? t : [t])); }, is: function(expr) { return expr ? jQuery.multiFilter(expr, this).length > 0 : false; }, hasClass: function(expr) { return this.is("." + expr); }, val: function(val) {
        if (val == undefined) {
            if (this.length) {
                var elem = this[0]; if (jQuery.nodeName(elem, "select")) { var index = elem.selectedIndex, a = [], options = elem.options, one = elem.type == "select-one"; if (index < 0) return null; for (var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++) { var option = options[i]; if (option.selected) { var val = jQuery.browser.msie && !option.attributes["value"].specified ? option.text : option.value; if (one) return val; a.push(val); } } return a; } else
                    return this[0].value.replace(/\r/g, "");
            }
        } else
            return this.each(function() {
                if (val.constructor == Array && /radio|checkbox/.test(this.type)) this.checked = (jQuery.inArray(this.value, val) >= 0 || jQuery.inArray(this.name, val) >= 0); else if (jQuery.nodeName(this, "select")) { var tmp = val.constructor == Array ? val : [val]; jQuery("option", this).each(function() { this.selected = (jQuery.inArray(this.value, tmp) >= 0 || jQuery.inArray(this.text, tmp) >= 0); }); if (!tmp.length) this.selectedIndex = -1; } else
                    this.value = val;
            });
    }, html: function(val) { return val == undefined ? (this.length ? this[0].innerHTML : null) : this.empty().append(val); }, replaceWith: function(val) { return this.after(val).remove(); }, eq: function(i) { return this.slice(i, i + 1); }, slice: function() { return this.pushStack(Array.prototype.slice.apply(this, arguments)); }, map: function(fn) { return this.pushStack(jQuery.map(this, function(elem, i) { return fn.call(elem, i, elem); })); }, andSelf: function() { return this.add(this.prevObject); }, domManip: function(args, table, dir, fn) { var clone = this.length > 1, a; return this.each(function() { if (!a) { a = jQuery.clean(args, this.ownerDocument); if (dir < 0) a.reverse(); } var obj = this; if (table && jQuery.nodeName(this, "table") && jQuery.nodeName(a[0], "tr")) obj = this.getElementsByTagName("tbody")[0] || this.appendChild(document.createElement("tbody")); jQuery.each(a, function() { var elem = clone ? this.cloneNode(true) : this; if (!evalScript(0, elem)) fn.call(obj, elem); }); }); }
    }; function evalScript(i, elem) {
        var script = jQuery.nodeName(elem, "script"); if (script) {
            if (elem.src) jQuery.ajax({ url: elem.src, async: false, dataType: "script" }); else
                jQuery.globalEval(elem.text || elem.textContent || elem.innerHTML || ""); if (elem.parentNode) elem.parentNode.removeChild(elem);
        } else if (elem.nodeType == 1) jQuery("script", elem).each(evalScript); return script;
    } jQuery.extend = jQuery.fn.extend = function() { var target = arguments[0] || {}, a = 1, al = arguments.length, deep = false; if (target.constructor == Boolean) { deep = target; target = arguments[1] || {}; } if (al == 1) { target = this; a = 0; } var prop; for (; a < al; a++) if ((prop = arguments[a]) != null) for (var i in prop) { if (target == prop[i]) continue; if (deep && typeof prop[i] == 'object' && target[i]) jQuery.extend(target[i], prop[i]); else if (prop[i] != undefined) target[i] = prop[i]; } return target; }; var expando = "jQuery" + (new Date()).getTime(), uuid = 0, win = {}; jQuery.extend({ noConflict: function(deep) { window.$ = _$; if (deep) window.jQuery = _jQuery; return jQuery; }, isFunction: function(fn) { return !!fn && typeof fn != "string" && !fn.nodeName && fn.constructor != Array && /function/i.test(fn + ""); }, isXMLDoc: function(elem) { return elem.documentElement && !elem.body || elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; }, globalEval: function(data) {
        data = jQuery.trim(data); if (data) {
            if (window.execScript) window.execScript(data); else if (jQuery.browser.safari) window.setTimeout(data, 0); else
                eval.call(window, data);
        }
    }, nodeName: function(elem, name) { return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); }, cache: {}, data: function(elem, name, data) { elem = elem == window ? win : elem; var id = elem[expando]; if (!id) id = elem[expando] = ++uuid; if (name && !jQuery.cache[id]) jQuery.cache[id] = {}; if (data != undefined) jQuery.cache[id][name] = data; return name ? jQuery.cache[id][name] : id; }, removeData: function(elem, name) { elem = elem == window ? win : elem; var id = elem[expando]; if (name) { if (jQuery.cache[id]) { delete jQuery.cache[id][name]; name = ""; for (name in jQuery.cache[id]) break; if (!name) jQuery.removeData(elem); } } else { try { delete elem[expando]; } catch (e) { if (elem.removeAttribute) elem.removeAttribute(expando); } delete jQuery.cache[id]; } }, each: function(obj, fn, args) {
        if (args) {
            if (obj.length == undefined) for (var i in obj) fn.apply(obj[i], args); else
                for (var i = 0, ol = obj.length; i < ol; i++) if (fn.apply(obj[i], args) === false) break;
        } else {
            if (obj.length == undefined) for (var i in obj) fn.call(obj[i], i, obj[i]); else
                for (var i = 0, ol = obj.length, val = obj[0]; i < ol && fn.call(val, i, val) !== false; val = obj[++i]) { }
        } return obj;
    }, prop: function(elem, value, type, index, prop) { if (jQuery.isFunction(value)) value = value.call(elem, [index]); var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i; return value && value.constructor == Number && type == "curCSS" && !exclude.test(prop) ? value + "px" : value; }, className: { add: function(elem, c) { jQuery.each((c || "").split(/\s+/), function(i, cur) { if (!jQuery.className.has(elem.className, cur)) elem.className += (elem.className ? " " : "") + cur; }); }, remove: function(elem, c) { elem.className = c != undefined ? jQuery.grep(elem.className.split(/\s+/), function(cur) { return !jQuery.className.has(c, cur); }).join(" ") : ""; }, has: function(t, c) { return jQuery.inArray(c, (t.className || t).toString().split(/\s+/)) > -1; } }, swap: function(e, o, f) { for (var i in o) { e.style["old" + i] = e.style[i]; e.style[i] = o[i]; } f.apply(e, []); for (var i in o) e.style[i] = e.style["old" + i]; }, css: function(e, p) { if (p == "height" || p == "width") { var old = {}, oHeight, oWidth, d = ["Top", "Bottom", "Right", "Left"]; jQuery.each(d, function() { old["padding" + this] = 0; old["border" + this + "Width"] = 0; }); jQuery.swap(e, old, function() { if (jQuery(e).is(':visible')) { oHeight = e.offsetHeight; oWidth = e.offsetWidth; } else { e = jQuery(e.cloneNode(true)).find(":radio").removeAttr("checked").end().css({ visibility: "hidden", position: "absolute", display: "block", right: "0", left: "0" }).appendTo(e.parentNode)[0]; var parPos = jQuery.css(e.parentNode, "position") || "static"; if (parPos == "static") e.parentNode.style.position = "relative"; oHeight = e.clientHeight; oWidth = e.clientWidth; if (parPos == "static") e.parentNode.style.position = "static"; e.parentNode.removeChild(e); } }); return p == "height" ? oHeight : oWidth; } return jQuery.curCSS(e, p); }, curCSS: function(elem, prop, force) { var ret, stack = [], swap = []; function color(a) { if (!jQuery.browser.safari) return false; var ret = document.defaultView.getComputedStyle(a, null); return !ret || ret.getPropertyValue("color") == ""; } if (prop == "opacity" && jQuery.browser.msie) { ret = jQuery.attr(elem.style, "opacity"); return ret == "" ? "1" : ret; } if (prop.match(/float/i)) prop = styleFloat; if (!force && elem.style[prop]) ret = elem.style[prop]; else if (document.defaultView && document.defaultView.getComputedStyle) { if (prop.match(/float/i)) prop = "float"; prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase(); var cur = document.defaultView.getComputedStyle(elem, null); if (cur && !color(elem)) ret = cur.getPropertyValue(prop); else { for (var a = elem; a && color(a); a = a.parentNode) stack.unshift(a); for (a = 0; a < stack.length; a++) if (color(stack[a])) { swap[a] = stack[a].style.display; stack[a].style.display = "block"; } ret = prop == "display" && swap[stack.length - 1] != null ? "none" : document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop) || ""; for (a = 0; a < swap.length; a++) if (swap[a] != null) stack[a].style.display = swap[a]; } if (prop == "opacity" && ret == "") ret = "1"; } else if (elem.currentStyle) { var newProp = prop.replace(/\-(\w)/g, function(m, c) { return c.toUpperCase(); }); ret = elem.currentStyle[prop] || elem.currentStyle[newProp]; if (!/^\d+(px)?$/i.test(ret) && /^\d/.test(ret)) { var style = elem.style.left; var runtimeStyle = elem.runtimeStyle.left; elem.runtimeStyle.left = elem.currentStyle.left; elem.style.left = ret || 0; ret = elem.style.pixelLeft + "px"; elem.style.left = style; elem.runtimeStyle.left = runtimeStyle; } } return ret; }, clean: function(a, doc) {
        var r = []; doc = doc || document; jQuery.each(a, function(i, arg) {
            if (!arg) return; if (arg.constructor == Number) arg = arg.toString(); if (typeof arg == "string") { arg = arg.replace(/(<(\w+)[^>]*?)\/>/g, function(m, all, tag) { return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area)$/i) ? m : all + "></"
