/*
* jQuery 1.2.6 - New Wave Javascript
*
* Copyright (c) 2008 John Resig (jquery.com)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
* $Rev: 5685 $
*/
(function() {
    var _jQuery = window.jQuery, _$ = window.$; var jQuery = window.jQuery = window.$ = function(selector, context) { return new jQuery.fn.init(selector, context); }; var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/, isSimple = /^.[^:#\[\.]*$/, undefined; jQuery.fn = jQuery.prototype = { init: function(selector, context) {
        selector = selector || document; if (selector.nodeType) { this[0] = selector; this.length = 1; return this; } if (typeof selector == "string") {
            var match = quickExpr.exec(selector); if (match && (match[1] || !context)) { if (match[1]) selector = jQuery.clean([match[1]], context); else { var elem = document.getElementById(match[3]); if (elem) { if (elem.id != match[3]) return jQuery().find(selector); return jQuery(elem); } selector = []; } } else
                return jQuery(context).find(selector);
        } else if (jQuery.isFunction(selector)) return jQuery(document)[jQuery.fn.ready ? "ready" : "load"](selector); return this.setArray(jQuery.makeArray(selector));
    }, jquery: "1.2.6", size: function() { return this.length; }, length: 0, get: function(num) { return num == undefined ? jQuery.makeArray(this) : this[num]; }, pushStack: function(elems) { var ret = jQuery(elems); ret.prevObject = this; return ret; }, setArray: function(elems) { this.length = 0; Array.prototype.push.apply(this, elems); return this; }, each: function(callback, args) { return jQuery.each(this, callback, args); }, index: function(elem) { var ret = -1; return jQuery.inArray(elem && elem.jquery ? elem[0] : elem, this); }, attr: function(name, value, type) { var options = name; if (name.constructor == String) if (value === undefined) return this[0] && jQuery[type || "attr"](this[0], name); else { options = {}; options[name] = value; } return this.each(function(i) { for (name in options) jQuery.attr(type ? this.style : this, name, jQuery.prop(this, options[name], type, i, name)); }); }, css: function(key, value) { if ((key == 'width' || key == 'height') && parseFloat(value) < 0) value = undefined; return this.attr(key, value, "curCSS"); }, text: function(text) { if (typeof text != "object" && text != null) return this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(text)); var ret = ""; jQuery.each(text || this, function() { jQuery.each(this.childNodes, function() { if (this.nodeType != 8) ret += this.nodeType != 1 ? this.nodeValue : jQuery.fn.text([this]); }); }); return ret; }, 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, false, function(elem) { if (this.nodeType == 1) this.appendChild(elem); }); }, prepend: function() { return this.domManip(arguments, true, true, function(elem) { if (this.nodeType == 1) this.insertBefore(elem, this.firstChild); }); }, before: function() { return this.domManip(arguments, false, false, function(elem) { this.parentNode.insertBefore(elem, this); }); }, after: function() { return this.domManip(arguments, false, true, function(elem) { this.parentNode.insertBefore(elem, this.nextSibling); }); }, end: function() { return this.prevObject || jQuery([]); }, find: function(selector) { var elems = jQuery.map(this, function(elem) { return jQuery.find(selector, elem); }); return this.pushStack(/[^+>] [^+>]/.test(selector) || selector.indexOf("..") > -1 ? jQuery.unique(elems) : elems); }, clone: function(events) {
        var ret = this.map(function() {
            if (jQuery.browser.msie && !jQuery.isXMLDoc(this)) { var clone = this.cloneNode(true), container = document.createElement("div"); container.appendChild(clone); return jQuery.clean([container.innerHTML])[0]; } else
                return 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) { if (this.nodeType == 3) return; 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(selector) { return this.pushStack(jQuery.isFunction(selector) && jQuery.grep(this, function(elem, i) { return selector.call(elem, i); }) || jQuery.multiFilter(selector, this)); }, not: function(selector) {
        if (selector.constructor == String) if (isSimple.test(selector)) return this.pushStack(jQuery.multiFilter(selector, this, true)); else
            selector = jQuery.multiFilter(selector, this); var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; return this.filter(function() { return isArrayLike ? jQuery.inArray(this, selector) < 0 : this != selector; });
    }, add: function(selector) { return this.pushStack(jQuery.unique(jQuery.merge(this.get(), typeof selector == 'string' ? jQuery(selector) : jQuery.makeArray(selector)))); }, is: function(selector) { return !!selector && jQuery.multiFilter(selector, this).length > 0; }, hasClass: function(selector) { return this.is("." + selector); }, val: function(value) {
        if (value == undefined) {
            if (this.length) {
                var elem = this[0]; if (jQuery.nodeName(elem, "select")) { var index = elem.selectedIndex, values = [], 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) { value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value; if (one) return value; values.push(value); } } return values; } else
                    return (this[0].value || "").replace(/\r/g, "");
            } return undefined;
        } if (value.constructor == Number) value += ''; return this.each(function() {
            if (this.nodeType != 1) return; if (value.constructor == Array && /radio|checkbox/.test(this.type)) this.checked = (jQuery.inArray(this.value, value) >= 0 || jQuery.inArray(this.name, value) >= 0); else if (jQuery.nodeName(this, "select")) { var values = jQuery.makeArray(value); jQuery("option", this).each(function() { this.selected = (jQuery.inArray(this.value, values) >= 0 || jQuery.inArray(this.text, values) >= 0); }); if (!values.length) this.selectedIndex = -1; } else
                this.value = value;
        });
    }, html: function(value) { return value == undefined ? (this[0] ? this[0].innerHTML : null) : this.empty().append(value); }, replaceWith: function(value) { return this.after(value).remove(); }, eq: function(i) { return this.slice(i, i + 1); }, slice: function() { return this.pushStack(Array.prototype.slice.apply(this, arguments)); }, map: function(callback) { return this.pushStack(jQuery.map(this, function(elem, i) { return callback.call(elem, i, elem); })); }, andSelf: function() { return this.add(this.prevObject); }, data: function(key, value) {
        var parts = key.split("."); parts[1] = parts[1] ? "." + parts[1] : ""; if (value === undefined) { var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); if (data === undefined && this.length) data = jQuery.data(this[0], key); return data === undefined && parts[1] ? this.data(parts[0]) : data; } else
            return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() { jQuery.data(this, key, value); });
    }, removeData: function(key) { return this.each(function() { jQuery.removeData(this, key); }); }, domManip: function(args, table, reverse, callback) { var clone = this.length > 1, elems; return this.each(function() { if (!elems) { elems = jQuery.clean(args, this.ownerDocument); if (reverse) elems.reverse(); } var obj = this; if (table && jQuery.nodeName(this, "table") && jQuery.nodeName(elems[0], "tr")) obj = this.getElementsByTagName("tbody")[0] || this.appendChild(this.ownerDocument.createElement("tbody")); var scripts = jQuery([]); jQuery.each(elems, function() { var elem = clone ? jQuery(this).clone(true)[0] : this; if (jQuery.nodeName(elem, "script")) scripts = scripts.add(elem); else { if (elem.nodeType == 1) scripts = scripts.add(jQuery("script", elem).remove()); callback.call(obj, elem); } }); scripts.each(evalScript); }); } 
    }; jQuery.fn.init.prototype = jQuery.fn; function evalScript(i, elem) {
        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);
    } function now() { return +new Date; } jQuery.extend = jQuery.fn.extend = function() { var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; if (target.constructor == Boolean) { deep = target; target = arguments[1] || {}; i = 2; } if (typeof target != "object" && typeof target != "function") target = {}; if (length == i) { target = this; --i; } for (; i < length; i++) if ((options = arguments[i]) != null) for (var name in options) { var src = target[name], copy = options[name]; if (target === copy) continue; if (deep && copy && typeof copy == "object" && !copy.nodeType) target[name] = jQuery.extend(deep, src || (copy.length != null ? [] : {}), copy); else if (copy !== undefined) target[name] = copy; } return target; }; var expando = "jQuery" + now(), uuid = 0, windowData = {}, exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, defaultView = document.defaultView || {}; 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 && /^[\s[]?function/.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) {
            var head = document.getElementsByTagName("head")[0] || document.documentElement, script = document.createElement("script"); script.type = "text/javascript"; if (jQuery.browser.msie) script.text = data; else
                script.appendChild(document.createTextNode(data)); head.insertBefore(script, head.firstChild); head.removeChild(script);
        } 
    }, nodeName: function(elem, name) { return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); }, cache: {}, data: function(elem, name, data) { elem = elem == window ? windowData : 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 ? windowData : 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(object, callback, args) {
        var name, i = 0, length = object.length; if (args) {
            if (length == undefined) { for (name in object) if (callback.apply(object[name], args) === false) break; } else
                for (; i < length; ) if (callback.apply(object[i++], args) === false) break;
        } else {
            if (length == undefined) { for (name in object) if (callback.call(object[name], name, object[name]) === false) break; } else
                for (var value = object[0]; i < length && callback.call(value, i, value) !== false; value = object[++i]) { } 
        } return object;
    }, prop: function(elem, value, type, i, name) { if (jQuery.isFunction(value)) value = value.call(elem, i); return value && value.constructor == Number && type == "curCSS" && !exclude.test(name) ? value + "px" : value; }, className: { add: function(elem, classNames) { jQuery.each((classNames || "").split(/\s+/), function(i, className) { if (elem.nodeType == 1 && !jQuery.className.has(elem.className, className)) elem.className += (elem.className ? " " : "") + className; }); }, remove: function(elem, classNames) { if (elem.nodeType == 1) elem.className = classNames != undefined ? jQuery.grep(elem.className.split(/\s+/), function(className) { return !jQuery.className.has(classNames, className); }).join(" ") : ""; }, has: function(elem, className) { return jQuery.inArray(className, (elem.className || elem).toString().split(/\s+/)) > -1; } }, swap: function(elem, options, callback) { var old = {}; for (var name in options) { old[name] = elem.style[name]; elem.style[name] = options[name]; } callback.call(elem); for (var name in options) elem.style[name] = old[name]; }, css: function(elem, name, force) {
        if (name == "width" || name == "height") {
            var val, props = { position: "absolute", visibility: "hidden", display: "block" }, which = name == "width" ? ["Left", "Right"] : ["Top", "Bottom"]; function getWH() { val = name == "width" ? elem.offsetWidth : elem.offsetHeight; var padding = 0, border = 0; jQuery.each(which, function() { padding += parseFloat(jQuery.curCSS(elem, "padding" + this, true)) || 0; border += parseFloat(jQuery.curCSS(elem, "border" + this + "Width", true)) || 0; }); val -= Math.round(padding + border); } if (jQuery(elem).is(":visible")) getWH(); else
                jQuery.swap(elem, props, getWH); return Math.max(0, val);
        } return jQuery.curCSS(elem, name, force);
    }, curCSS: function(elem, name, force) { var ret, style = elem.style; function color(elem) { if (!jQuery.browser.safari) return false; var ret = defaultView.getComputedStyle(elem, null); return !ret || ret.getPropertyValue("color") == ""; } if (name == "opacity" && jQuery.browser.msie) { ret = jQuery.attr(style, "opacity"); return ret == "" ? "1" : ret; } if (jQuery.browser.opera && name == "display") { var save = style.outline; style.outline = "0 solid black"; style.outline = save; } if (name.match(/float/i)) name = styleFloat; if (!force && style && style[name]) ret = style[name]; else if (defaultView.getComputedStyle) { if (name.match(/float/i)) name = "float"; name = name.replace(/([A-Z])/g, "-$1").toLowerCase(); var computedStyle = defaultView.getComputedStyle(elem, null); if (computedStyle && !color(elem)) ret = computedStyle.getPropertyValue(name); else { var swap = [], stack = [], a = elem, i = 0; for (; a && color(a); a = a.parentNode) stack.unshift(a); for (; i < stack.length; i++) if (color(stack[i])) { swap[i] = stack[i].style.display; stack[i].style.display = "block"; } ret = name == "display" && swap[stack.length - 1] != null ? "none" : (computedStyle && computedStyle.getPropertyValue(name)) || ""; for (i = 0; i < swap.length; i++) if (swap[i] != null) stack[i].style.display = swap[i]; } if (name == "opacity" && ret == "") ret = "1"; } else if (elem.currentStyle) { var camelCase = name.replace(/\-(\w)/g, function(all, letter) { return letter.toUpperCase(); }); ret = elem.currentStyle[name] || elem.currentStyle[camelCase]; if (!/^\d+(px)?$/i.test(ret) && /^\d/.test(ret)) { var left = style.left, rsLeft = elem.runtimeStyle.left; elem.runtimeStyle.left = elem.currentStyle.left; style.left = ret || 0; ret = style.pixelLeft + "px"; style.left = left; elem.runtimeStyle.left = rsLeft; } } return ret; }, clean: function(elems, context) {
        var ret = []; context = context || document; if (typeof context.createElement == 'undefined') context = context.ownerDocument || context[0] && context[0].ownerDocument || document; jQuery.each(elems, function(i, elem) {
            if (!elem) return; if (elem.constructor == Number) elem += ''; if (typeof elem == "string") { elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag) { return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? all : front + "></" + tag + ">"; }); var tags = jQuery.trim(elem).toLowerCase(), div = context.createElement("div"); var wrap = !tags.indexOf("<opt") && [1, "<select multiple='multiple'>", "</select>"] || !tags.indexOf("<leg") && [1, "<fieldset>", "</fieldset>"] || tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && [1, "<table>", "</table>"] || !tags.indexOf("<tr") && [2, "<table><tbody>", "</tbody></table>"] || (!tags.indexOf("<td") || !tags.indexOf("<th")) && [3, "<table><tbody><tr>", "</tr></tbody></table>"] || !tags.indexOf("<col") && [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"] || jQuery.browser.msie && [1, "div<div>", "</div>"] || [0, "", ""]; div.innerHTML = wrap[1] + elem + wrap[2]; while (wrap[0]--) div = div.lastChild; if (jQuery.browser.msie) { var tbody = !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 ? div.firstChild && div.firstChild.childNodes : wrap[1] == "<table>" && tags.indexOf("<tbody") < 0 ? div.childNodes : []; for (var j = tbody.length - 1; j >= 0; --j) if (jQuery.nodeName(tbody[j], "tbody") && !tbody[j].childNodes.length) tbody[j].parentNode.removeChild(tbody[j]); if (/^\s/.test(elem)) div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]), div.firstChild); } elem = jQuery.makeArray(div.childNodes); } if (elem.length === 0 && (!jQuery.nodeName(elem, "form") && !jQuery.nodeName(elem, "select"))) return; if (elem[0] == undefined || jQuery.nodeName(elem, "form") || elem.options) ret.push(elem); else
                ret = jQuery.merge(ret, elem);
        }); return ret;
    }, attr: function(elem, name, value) { if (!elem || elem.nodeType == 3 || elem.nodeType == 8) return undefined; var notxml = !jQuery.isXMLDoc(elem), set = value !== undefined, msie = jQuery.browser.msie; name = notxml && jQuery.props[name] || name; if (elem.tagName) { var special = /href|src|style/.test(name); if (name == "selected" && jQuery.browser.safari) elem.parentNode.selectedIndex; if (name in elem && notxml && !special) { if (set) { if (name == "type" && jQuery.nodeName(elem, "input") && elem.parentNode) throw "type property can't be changed"; elem[name] = value; } if (jQuery.nodeName(elem, "form") && elem.getAttributeNode(name)) return elem.getAttributeNode(name).nodeValue; return elem[name]; } if (msie && notxml && name == "style") return jQuery.attr(elem.style, "cssText", value); if (set) elem.setAttribute(name, "" + value); var attr = msie && notxml && special ? elem.getAttribute(name, 2) : elem.getAttribute(name); return attr === null ? undefined : attr; } if (msie && name == "opacity") { if (set) { elem.zoom = 1; elem.filter = (elem.filter || "").replace(/alpha\([^)]*\)/, "") + (parseInt(value) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")"); } return elem.filter && elem.filter.indexOf("opacity=") >= 0 ? (parseFloat(elem.filter.match(/opacity=([^)]*)/)[1]) / 100) + '' : ""; } name = name.replace(/-([a-z])/ig, function(all, letter) { return letter.toUpperCase(); }); if (set) elem[name] = value; return elem[name]; }, trim: function(text) { return (text || "").replace(/^\s+|\s+$/g, ""); }, makeArray: function(array) {
        var ret = []; if (array != null) {
            var i = array.length; if (i == null || array.split || array.setInterval || array.call) ret[0] = array; else
                while (i) ret[--i] = array[i];
        } return ret;
    }, inArray: function(elem, array) { for (var i = 0, length = array.length; i < length; i++) if (array[i] === elem) return i; return -1; }, merge: function(first, second) {
        var i = 0, elem, pos = first.length; if (jQuery.browser.msie) { while (elem = second[i++]) if (elem.nodeType != 8) first[pos++] = elem; } else
            while (elem = second[i++]) first[pos++] = elem; return first;
    }, unique: function(array) { var ret = [], done = {}; try { for (var i = 0, length = array.length; i < length; i++) { var id = jQuery.data(array[i]); if (!done[id]) { done[id] = true; ret.push(array[i]); } } } catch (e) { ret = array; } return ret; }, grep: function(elems, callback, inv) { var ret = []; for (var i = 0, length = elems.length; i < length; i++) if (!inv != !callback(elems[i], i)) ret.push(elems[i]); return ret; }, map: function(elems, callback) { var ret = []; for (var i = 0, length = elems.length; i < length; i++) { var value = callback(elems[i], i); if (value != null) ret[ret.length] = value; } return ret.concat.apply([], ret); } 
    }); var userAgent = navigator.userAgent.toLowerCase(); jQuery.browser = { version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1], safari: /webkit/.test(userAgent), opera: /opera/.test(userAgent), msie: /msie/.test(userAgent) && !/opera/.test(userAgent), mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent) }; var styleFloat = jQuery.browser.msie ? "styleFloat" : "cssFloat"; jQuery.extend({ boxModel: !jQuery.browser.msie || document.compatMode == "CSS1Compat", props: { "for": "htmlFor", "class": "className", "float": styleFloat, cssFloat: styleFloat, styleFloat: styleFloat, readonly: "readOnly", maxlength: "maxLength", cellspacing: "cellSpacing"} }); jQuery.each({ parent: function(elem) { return elem.parentNode; }, parents: function(elem) { return jQuery.dir(elem, "parentNode"); }, next: function(elem) { return jQuery.nth(elem, 2, "nextSibling"); }, prev: function(elem) { return jQuery.nth(elem, 2, "previousSibling"); }, nextAll: function(elem) { return jQuery.dir(elem, "nextSibling"); }, prevAll: function(elem) { return jQuery.dir(elem, "previousSibling"); }, siblings: function(elem) { return jQuery.sibling(elem.parentNode.firstChild, elem); }, children: function(elem) { return jQuery.sibling(elem.firstChild); }, contents: function(elem) { return jQuery.nodeName(elem, "iframe") ? elem.contentDocument || elem.contentWindow.document : jQuery.makeArray(elem.childNodes); } }, function(name, fn) { jQuery.fn[name] = function(selector) { var ret = jQuery.map(this, fn); if (selector && typeof selector == "string") ret = jQuery.multiFilter(selector, ret); return this.pushStack(jQuery.unique(ret)); }; }); jQuery.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function(name, original) { jQuery.fn[name] = function() { var args = arguments; return this.each(function() { for (var i = 0, length = args.length; i < length; i++) jQuery(args[i])[original](this); }); }; }); jQuery.each({ removeAttr: function(name) { jQuery.attr(this, name, ""); if (this.nodeType == 1) this.removeAttribute(name); }, addClass: function(classNames) { jQuery.className.add(this, classNames); }, removeClass: function(classNames) { jQuery.className.remove(this, classNames); }, toggleClass: function(classNames) { jQuery.className[jQuery.className.has(this, classNames) ? "remove" : "add"](this, classNames); }, remove: function(selector) { if (!selector || jQuery.filter(selector, [this]).r.length) { jQuery("*", this).add(this).each(function() { jQuery.event.remove(this); jQuery.removeData(this); }); if (this.parentNode) this.parentNode.removeChild(this); } }, empty: function() { jQuery(">*", this).remove(); while (this.firstChild) this.removeChild(this.firstChild); } }, function(name, fn) { jQuery.fn[name] = function() { return this.each(fn, arguments); }; }); jQuery.each(["Height", "Width"], function(i, name) { var type = name.toLowerCase(); jQuery.fn[type] = function(size) { return this[0] == window ? jQuery.browser.opera && document.body["client" + name] || jQuery.browser.safari && window["inner" + name] || document.compatMode == "CSS1Compat" && document.documentElement["client" + name] || document.body["client" + name] : this[0] == document ? Math.max(Math.max(document.body["scroll" + name], document.documentElement["scroll" + name]), Math.max(document.body["offset" + name], document.documentElement["offset" + name])) : size == undefined ? (this.length ? jQuery.css(this[0], type) : null) : this.css(type, size.constructor == String ? size : size + "px"); }; }); function num(elem, prop) { return elem[0] && parseInt(jQuery.curCSS(elem[0], prop, true), 10) || 0; } var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ? "(?:[\\w*_-]|\\\\.)" : "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)", quickChild = new RegExp("^>\\s*(" + chars + "+)"), quickID = new RegExp("^(" + chars + "+)(#)(" + chars + "+)"), quickClass = new RegExp("^([#.]?)(" + chars + "*)"); jQuery.extend({ expr: { "": function(a, i, m) { return m[2] == "*" || jQuery.nodeName(a, m[2]); }, "#": function(a, i, m) { return a.getAttribute("id") == m[2]; }, ":": { lt: function(a, i, m) { return i < m[3] - 0; }, gt: function(a, i, m) { return i > m[3] - 0; }, nth: function(a, i, m) { return m[3] - 0 == i; }, eq: function(a, i, m) { return m[3] - 0 == i; }, first: function(a, i) { return i == 0; }, last: function(a, i, m, r) { return i == r.length - 1; }, even: function(a, i) { return i % 2 == 0; }, odd: function(a, i) { return i % 2; }, "first-child": function(a) { return a.parentNode.getElementsByTagName("*")[0] == a; }, "last-child": function(a) { return jQuery.nth(a.parentNode.lastChild, 1, "previousSibling") == a; }, "only-child": function(a) { return !jQuery.nth(a.parentNode.lastChild, 2, "previousSibling"); }, parent: function(a) { return a.firstChild; }, empty: function(a) { return !a.firstChild; }, contains: function(a, i, m) { return (a.textContent || a.innerText || jQuery(a).text() || "").indexOf(m[3]) >= 0; }, visible: function(a) { return "hidden" != a.type && jQuery.css(a, "display") != "none" && jQuery.css(a, "visibility") != "hidden"; }, hidden: function(a) { return "hidden" == a.type || jQuery.css(a, "display") == "none" || jQuery.css(a, "visibility") == "hidden"; }, enabled: function(a) { return !a.disabled; }, disabled: function(a) { return a.disabled; }, checked: function(a) { return a.checked; }, selected: function(a) { return a.selected || jQuery.attr(a, "selected"); }, text: function(a) { return "text" == a.type; }, radio: function(a) { return "radio" == a.type; }, checkbox: function(a) { return "checkbox" == a.type; }, file: function(a) { return "file" == a.type; }, password: function(a) { return "password" == a.type; }, submit: function(a) { return "submit" == a.type; }, image: function(a) { return "image" == a.type; }, reset: function(a) { return "reset" == a.type; }, button: function(a) { return "button" == a.type || jQuery.nodeName(a, "button"); }, input: function(a) { return /input|select|textarea|button/i.test(a.nodeName); }, has: function(a, i, m) { return jQuery.find(m[3], a).length; }, header: function(a) { return /h\d/i.test(a.nodeName); }, animated: function(a) { return jQuery.grep(jQuery.timers, function(fn) { return a == fn.elem; }).length; } } }, parse: [/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/, /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/, new RegExp("^([:.#]*)(" + chars + "+)")], multiFilter: function(expr, elems, not) { var old, cur = []; while (expr && expr != old) { old = expr; var f = jQuery.filter(expr, elems, not); expr = f.t.replace(/^\s*,\s*/, ""); cur = not ? elems = f.r : jQuery.merge(cur, f.r); } return cur; }, find: function(t, context) { if (typeof t != "string") return [t]; if (context && context.nodeType != 1 && context.nodeType != 9) return []; context = context || document; var ret = [context], done = [], last, nodeName; while (t && last != t) { var r = []; last = t; t = jQuery.trim(t); var foundToken = false, re = quickChild, m = re.exec(t); if (m) { nodeName = m[1].toUpperCase(); for (var i = 0; ret[i]; i++) for (var c = ret[i].firstChild; c; c = c.nextSibling) if (c.nodeType == 1 && (nodeName == "*" || c.nodeName.toUpperCase() == nodeName)) r.push(c); ret = r; t = t.replace(re, ""); if (t.indexOf(" ") == 0) continue; foundToken = true; } else { re = /^([>+~])\s*(\w*)/i; if ((m = re.exec(t)) != null) { r = []; var merge = {}; nodeName = m[2].toUpperCase(); m = m[1]; for (var j = 0, rl = ret.length; j < rl; j++) { var n = m == "~" || m == "+" ? ret[j].nextSibling : ret[j].firstChild; for (; n; n = n.nextSibling) if (n.nodeType == 1) { var id = jQuery.data(n); if (m == "~" && merge[id]) break; if (!nodeName || n.nodeName.toUpperCase() == nodeName) { if (m == "~") merge[id] = true; r.push(n); } if (m == "+") break; } } ret = r; t = jQuery.trim(t.replace(re, "")); foundToken = true; } } if (t && !foundToken) { if (!t.indexOf(",")) { if (context == ret[0]) ret.shift(); done = jQuery.merge(done, ret); r = ret = [context]; t = " " + t.substr(1, t.length); } else { var re2 = quickID; var m = re2.exec(t); if (m) { m = [0, m[2], m[3], m[1]]; } else { re2 = quickClass; m = re2.exec(t); } m[2] = m[2].replace(/\\/g, ""); var elem = ret[ret.length - 1]; if (m[1] == "#" && elem && elem.getElementById && !jQuery.isXMLDoc(elem)) { var oid = elem.getElementById(m[2]); if ((jQuery.browser.msie || jQuery.browser.opera) && oid && typeof oid.id == "string" && oid.id != m[2]) oid = jQuery('[@id="' + m[2] + '"]', elem)[0]; ret = r = oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : []; } else { for (var i = 0; ret[i]; i++) { var tag = m[1] == "#" && m[3] ? m[3] : m[1] != "" || m[0] == "" ? "*" : m[2]; if (tag == "*" && ret[i].nodeName.toLowerCase() == "object") tag = "param"; r = jQuery.merge(r, ret[i].getElementsByTagName(tag)); } if (m[1] == ".") r = jQuery.classFilter(r, m[2]); if (m[1] == "#") { var tmp = []; for (var i = 0; r[i]; i++) if (r[i].getAttribute("id") == m[2]) { tmp = [r[i]]; break; } r = tmp; } ret = r; } t = t.replace(re2, ""); } } if (t) { var val = jQuery.filter(t, r); ret = r = val.r; t = jQuery.trim(val.t); } } if (t) ret = []; if (ret && context == ret[0]) ret.shift(); done = jQuery.merge(done, ret); return done; }, classFilter: function(r, m, not) { m = " " + m + " "; var tmp = []; for (var i = 0; r[i]; i++) { var pass = (" " + r[i].className + " ").indexOf(m) >= 0; if (!not && pass || not && !pass) tmp.push(r[i]); } return tmp; }, filter: function(t, r, not) { var last; while (t && t != last) { last = t; var p = jQuery.parse, m; for (var i = 0; p[i]; i++) { m = p[i].exec(t); if (m) { t = t.substring(m[0].length); m[2] = m[2].replace(/\\/g, ""); break; } } if (!m) break; if (m[1] == ":" && m[2] == "not") r = isSimple.test(m[3]) ? jQuery.filter(m[3], r, true).r : jQuery(r).not(m[3]); else if (m[1] == ".") r = jQuery.classFilter(r, m[2], not); else if (m[1] == "[") { var tmp = [], type = m[3]; for (var i = 0, rl = r.length; i < rl; i++) { var a = r[i], z = a[jQuery.props[m[2]] || m[2]]; if (z == null || /href|src|selected/.test(m[2])) z = jQuery.attr(a, m[2]) || ''; if ((type == "" && !!z || type == "=" && z == m[5] || type == "!=" && z != m[5] || type == "^=" && z && !z.indexOf(m[5]) || type == "$=" && z.substr(z.length - m[5].length) == m[5] || (type == "*=" || type == "~=") && z.indexOf(m[5]) >= 0) ^ not) tmp.push(a); } r = tmp; } else if (m[1] == ":" && m[2] == "nth-child") { var merge = {}, tmp = [], test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3] == "even" && "2n" || m[3] == "odd" && "2n+1" || !/\D/.test(m[3]) && "0n+" + m[3] || m[3]), first = (test[1] + (test[2] || 1)) - 0, last = test[3] - 0; for (var i = 0, rl = r.length; i < rl; i++) { var node = r[i], parentNode = node.parentNode, id = jQuery.data(parentNode); if (!merge[id]) { var c = 1; for (var n = parentNode.firstChild; n; n = n.nextSibling) if (n.nodeType == 1) n.nodeIndex = c++; merge[id] = true; } var add = false; if (first == 0) { if (node.nodeIndex == last) add = true; } else if ((node.nodeIndex - last) % first == 0 && (node.nodeIndex - last) / first >= 0) add = true; if (add ^ not) tmp.push(node); } r = tmp; } else { var fn = jQuery.expr[m[1]]; if (typeof fn == "object") fn = fn[m[2]]; if (typeof fn == "string") fn = eval("false||function(a,i){return " + fn + ";}"); r = jQuery.grep(r, function(elem, i) { return fn(elem, i, m, r); }, not); } } return { r: r, t: t }; }, dir: function(elem, dir) { var matched = [], cur = elem[dir]; while (cur && cur != document) { if (cur.nodeType == 1) matched.push(cur); cur = cur[dir]; } return matched; }, nth: function(cur, result, dir, elem) { result = result || 1; var num = 0; for (; cur; cur = cur[dir]) if (cur.nodeType == 1 && ++num == result) break; return cur; }, sibling: function(n, elem) { var r = []; for (; n; n = n.nextSibling) { if (n.nodeType == 1 && n != elem) r.push(n); } return r; } }); jQuery.event = { add: function(elem, types, handler, data) { if (elem.nodeType == 3 || elem.nodeType == 8) return; if (jQuery.browser.msie && elem.setInterval) elem = window; if (!handler.guid) handler.guid = this.guid++; if (data != undefined) { var fn = handler; handler = this.proxy(fn, function() { return fn.apply(this, arguments); }); handler.data = data; } var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}), handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function() { if (typeof jQuery != "undefined" && !jQuery.event.triggered) return jQuery.event.handle.apply(arguments.callee.elem, arguments); }); handle.elem = elem; jQuery.each(types.split(/\s+/), function(index, type) { var parts = type.split("."); type = parts[0]; handler.type = parts[1]; var handlers = events[type]; if (!handlers) { handlers = events[type] = {}; if (!jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem) === false) { if (elem.addEventListener) elem.addEventListener(type, handle, false); else if (elem.attachEvent) elem.attachEvent("on" + type, handle); } } handlers[handler.guid] = handler; jQuery.event.global[type] = true; }); elem = null; }, guid: 1, global: {}, remove: function(elem, types, handler) {
        if (elem.nodeType == 3 || elem.nodeType == 8) return; var events = jQuery.data(elem, "events"), ret, index; if (events) {
            if (types == undefined || (typeof types == "string" && types.charAt(0) == ".")) for (var type in events) this.remove(elem, type + (types || "")); else {
                if (types.type) { handler = types.handler; types = types.type; } jQuery.each(types.split(/\s+/), function(index, type) {
                    var parts = type.split("."); type = parts[0]; if (events[type]) {
                        if (handler) delete events[type][handler.guid]; else
                            for (handler in events[type]) if (!parts[1] || events[type][handler].type == parts[1]) delete events[type][handler]; for (ret in events[type]) break; if (!ret) { if (!jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem) === false) { if (elem.removeEventListener) elem.removeEventListener(type, jQuery.data(elem, "handle"), false); else if (elem.detachEvent) elem.detachEvent("on" + type, jQuery.data(elem, "handle")); } ret = null; delete events[type]; } 
                    } 
                });
            } for (ret in events) break; if (!ret) { var handle = jQuery.data(elem, "handle"); if (handle) handle.elem = null; jQuery.removeData(elem, "events"); jQuery.removeData(elem, "handle"); } 
        } 
    }, trigger: function(type, data, elem, donative, extra) { data = jQuery.makeArray(data); if (type.indexOf("!") >= 0) { type = type.slice(0, -1); var exclusive = true; } if (!elem) { if (this.global[type]) jQuery("*").add([window, document]).trigger(type, data); } else { if (elem.nodeType == 3 || elem.nodeType == 8) return undefined; var val, ret, fn = jQuery.isFunction(elem[type] || null), event = !data[0] || !data[0].preventDefault; if (event) { data.unshift({ type: type, target: elem, preventDefault: function() { }, stopPropagation: function() { }, timeStamp: now() }); data[0][expando] = true; } data[0].type = type; if (exclusive) data[0].exclusive = true; var handle = jQuery.data(elem, "handle"); if (handle) val = handle.apply(elem, data); if ((!fn || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on" + type] && elem["on" + type].apply(elem, data) === false) val = false; if (event) data.shift(); if (extra && jQuery.isFunction(extra)) { ret = extra.apply(elem, val == null ? data : data.concat(val)); if (ret !== undefined) val = ret; } if (fn && donative !== false && val !== false && !(jQuery.nodeName(elem, 'a') && type == "click")) { this.triggered = true; try { elem[type](); } catch (e) { } } this.triggered = false; } return val; }, handle: function(event) { var val, ret, namespace, all, handlers; event = arguments[0] = jQuery.event.fix(event || window.event); namespace = event.type.split("."); event.type = namespace[0]; namespace = namespace[1]; all = !namespace && !event.exclusive; handlers = (jQuery.data(this, "events") || {})[event.type]; for (var j in handlers) { var handler = handlers[j]; if (all || handler.type == namespace) { event.handler = handler; event.data = handler.data; ret = handler.apply(this, arguments); if (val !== false) val = ret; if (ret === false) { event.preventDefault(); event.stopPropagation(); } } } return val; }, fix: function(event) { if (event[expando] == true) return event; var originalEvent = event; event = { originalEvent: originalEvent }; var props = "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" "); for (var i = props.length; i; i--) event[props[i]] = originalEvent[props[i]]; event[expando] = true; event.preventDefault = function() { if (originalEvent.preventDefault) originalEvent.preventDefault(); originalEvent.returnValue = false; }; event.stopPropagation = function() { if (originalEvent.stopPropagation) originalEvent.stopPropagation(); originalEvent.cancelBubble = true; }; event.timeStamp = event.timeStamp || now(); if (!event.target) event.target = event.srcElement || document; if (event.target.nodeType == 3) event.target = event.target.parentNode; if (!event.relatedTarget && event.fromElement) event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement; if (event.pageX == null && event.clientX != null) { var doc = document.documentElement, body = document.body; event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0); event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0); } if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode)) event.which = event.charCode || event.keyCode; if (!event.metaKey && event.ctrlKey) event.metaKey = event.ctrlKey; if (!event.which && event.button) event.which = (event.button & 1 ? 1 : (event.button & 2 ? 3 : (event.button & 4 ? 2 : 0))); return event; }, proxy: function(fn, proxy) { proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++; return proxy; }, special: { ready: { setup: function() { bindReady(); return; }, teardown: function() { return; } }, mouseenter: { setup: function() { if (jQuery.browser.msie) return false; jQuery(this).bind("mouseover", jQuery.event.special.mouseenter.handler); return true; }, teardown: function() { if (jQuery.browser.msie) return false; jQuery(this).unbind("mouseover", jQuery.event.special.mouseenter.handler); return true; }, handler: function(event) { if (withinElement(event, this)) return true; event.type = "mouseenter"; return jQuery.event.handle.apply(this, arguments); } }, mouseleave: { setup: function() { if (jQuery.browser.msie) return false; jQuery(this).bind("mouseout", jQuery.event.special.mouseleave.handler); return true; }, teardown: function() { if (jQuery.browser.msie) return false; jQuery(this).unbind("mouseout", jQuery.event.special.mouseleave.handler); return true; }, handler: function(event) { if (withinElement(event, this)) return true; event.type = "mouseleave"; return jQuery.event.handle.apply(this, arguments); } }}
    }; jQuery.fn.extend({ bind: function(type, data, fn) { return type == "unload" ? this.one(type, data, fn) : this.each(function() { jQuery.event.add(this, type, fn || data, fn && data); }); }, one: function(type, data, fn) { var one = jQuery.event.proxy(fn || data, function(event) { jQuery(this).unbind(event, one); return (fn || data).apply(this, arguments); }); return this.each(function() { jQuery.event.add(this, type, one, fn && data); }); }, unbind: function(type, fn) { return this.each(function() { jQuery.event.remove(this, type, fn); }); }, trigger: function(type, data, fn) { return this.each(function() { jQuery.event.trigger(type, data, this, true, fn); }); }, triggerHandler: function(type, data, fn) { return this[0] && jQuery.event.trigger(type, data, this[0], false, fn); }, toggle: function(fn) { var args = arguments, i = 1; while (i < args.length) jQuery.event.proxy(fn, args[i++]); return this.click(jQuery.event.proxy(fn, function(event) { this.lastToggle = (this.lastToggle || 0) % i; event.preventDefault(); return args[this.lastToggle++].apply(this, arguments) || false; })); }, hover: function(fnOver, fnOut) { return this.bind('mouseenter', fnOver).bind('mouseleave', fnOut); }, ready: function(fn) {
        bindReady(); if (jQuery.isReady) fn.call(document, jQuery); else
            jQuery.readyList.push(function() { return fn.call(this, jQuery); }); return this;
    } 
    }); jQuery.extend({ isReady: false, readyList: [], ready: function() { if (!jQuery.isReady) { jQuery.isReady = true; if (jQuery.readyList) { jQuery.each(jQuery.readyList, function() { this.call(document); }); jQuery.readyList = null; } jQuery(document).triggerHandler("ready"); } } }); var readyBound = false; function bindReady() { if (readyBound) return; readyBound = true; if (document.addEventListener && !jQuery.browser.opera) document.addEventListener("DOMContentLoaded", jQuery.ready, false); if (jQuery.browser.msie && window == top) (function() { if (jQuery.isReady) return; try { document.documentElement.doScroll("left"); } catch (error) { setTimeout(arguments.callee, 0); return; } jQuery.ready(); })(); if (jQuery.browser.opera) document.addEventListener("DOMContentLoaded", function() { if (jQuery.isReady) return; for (var i = 0; i < document.styleSheets.length; i++) if (document.styleSheets[i].disabled) { setTimeout(arguments.callee, 0); return; } jQuery.ready(); }, false); if (jQuery.browser.safari) { var numStyles; (function() { if (jQuery.isReady) return; if (document.readyState != "loaded" && document.readyState != "complete") { setTimeout(arguments.callee, 0); return; } if (numStyles === undefined) numStyles = jQuery("style, link[rel=stylesheet]").length; if (document.styleSheets.length != numStyles) { setTimeout(arguments.callee, 0); return; } jQuery.ready(); })(); } jQuery.event.add(window, "load", jQuery.ready); } jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick," + "mousedown,mouseup,mousemove,mouseover,mouseout,change,select," + "submit,keydown,keypress,keyup,error").split(","), function(i, name) { jQuery.fn[name] = function(fn) { return fn ? this.bind(name, fn) : this.trigger(name); }; }); var withinElement = function(event, elem) { var parent = event.relatedTarget; while (parent && parent != elem) try { parent = parent.parentNode; } catch (error) { parent = elem; } return parent == elem; }; jQuery(window).bind("unload", function() { jQuery("*").add(document).unbind(); }); jQuery.fn.extend({ _load: jQuery.fn.load, load: function(url, params, callback) { if (typeof url != 'string') return this._load(url); var off = url.indexOf(" "); if (off >= 0) { var selector = url.slice(off, url.length); url = url.slice(0, off); } callback = callback || function() { }; var type = "GET"; if (params) if (jQuery.isFunction(params)) { callback = params; params = null; } else { params = jQuery.param(params); type = "POST"; } var self = this; jQuery.ajax({ url: url, type: type, dataType: "html", data: params, complete: function(res, status) { if (status == "success" || status == "notmodified") self.html(selector ? jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g, "")).find(selector) : res.responseText); self.each(callback, [res.responseText, status, res]); } }); return this; }, serialize: function() { return jQuery.param(this.serializeArray()); }, serializeArray: function() { return this.map(function() { return jQuery.nodeName(this, "form") ? jQuery.makeArray(this.elements) : this; }).filter(function() { return this.name && !this.disabled && (this.checked || /select|textarea/i.test(this.nodeName) || /text|hidden|password/i.test(this.type)); }).map(function(i, elem) { var val = jQuery(this).val(); return val == null ? null : val.constructor == Array ? jQuery.map(val, function(val, i) { return { name: elem.name, value: val }; }) : { name: elem.name, value: val }; }).get(); } }); jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i, o) { jQuery.fn[o] = function(f) { return this.bind(o, f); }; }); var jsc = now(); jQuery.extend({ get: function(url, data, callback, type) { if (jQuery.isFunction(data)) { callback = data; data = null; } return jQuery.ajax({ type: "GET", url: url, data: data, success: callback, dataType: type }); }, getScript: function(url, callback) { return jQuery.get(url, null, callback, "script"); }, getJSON: function(url, data, callback) { return jQuery.get(url, data, callback, "json"); }, post: function(url, data, callback, type) { if (jQuery.isFunction(data)) { callback = data; data = {}; } return jQuery.ajax({ type: "POST", url: url, data: data, success: callback, dataType: type }); }, ajaxSetup: function(settings) { jQuery.extend(jQuery.ajaxSettings, settings); }, ajaxSettings: { url: location.href, global: true, type: "GET", timeout: 0, contentType: "application/x-www-form-urlencoded", processData: true, async: true, data: null, username: null, password: null, accepts: { xml: "application/xml, text/xml", html: "text/html", script: "text/javascript, application/javascript", json: "application/json, text/javascript", text: "text/plain", _default: "*/*"} }, lastModified: {}, ajax: function(s) {
        s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s)); var jsonp, jsre = /=\?(&|$)/g, status, data, type = s.type.toUpperCase(); if (s.data && s.processData && typeof s.data != "string") s.data = jQuery.param(s.data); if (s.dataType == "jsonp") { if (type == "GET") { if (!s.url.match(jsre)) s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?"; } else if (!s.data || !s.data.match(jsre)) s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?"; s.dataType = "json"; } if (s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre))) { jsonp = "jsonp" + jsc++; if (s.data) s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1"); s.url = s.url.replace(jsre, "=" + jsonp + "$1"); s.dataType = "script"; window[jsonp] = function(tmp) { data = tmp; success(); complete(); window[jsonp] = undefined; try { delete window[jsonp]; } catch (e) { } if (head) head.removeChild(script); }; } if (s.dataType == "script" && s.cache == null) s.cache = false; if (s.cache === false && type == "GET") { var ts = now(); var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2"); s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : ""); } if (s.data && type == "GET") { s.url += (s.url.match(/\?/) ? "&" : "?") + s.data; s.data = null; } if (s.global && !jQuery.active++) jQuery.event.trigger("ajaxStart"); var remote = /^(?:\w+:)?\/\/([^\/?#]+)/; if (s.dataType == "script" && type == "GET" && remote.test(s.url) && remote.exec(s.url)[1] != location.host) { var head = document.getElementsByTagName("head")[0]; var script = document.createElement("script"); script.src = s.url; if (s.scriptCharset) script.charset = s.scriptCharset; if (!jsonp) { var done = false; script.onload = script.onreadystatechange = function() { if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) { done = true; success(); complete(); head.removeChild(script); } }; } head.appendChild(script); return undefined; } var requestDone = false; var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); if (s.username) xhr.open(type, s.url, s.async, s.username, s.password); else
            xhr.open(type, s.url, s.async); try { if (s.data) xhr.setRequestHeader("Content-Type", s.contentType); if (s.ifModified) xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT"); xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); xhr.setRequestHeader("Accept", s.dataType && s.accepts[s.dataType] ? s.accepts[s.dataType] + ", */*" : s.accepts._default); } catch (e) { } if (s.beforeSend && s.beforeSend(xhr, s) === false) { s.global && jQuery.active--; xhr.abort(); return false; } if (s.global) jQuery.event.trigger("ajaxSend", [xhr, s]); var onreadystatechange = function(isTimeout) {
                if (!requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout")) {
                    requestDone = true; if (ival) { clearInterval(ival); ival = null; } status = isTimeout == "timeout" && "timeout" || !jQuery.httpSuccess(xhr) && "error" || s.ifModified && jQuery.httpNotModified(xhr, s.url) && "notmodified" || "success"; if (status == "success") { try { data = jQuery.httpData(xhr, s.dataType, s.dataFilter); } catch (e) { status = "parsererror"; } } if (status == "success") { var modRes; try { modRes = xhr.getResponseHeader("Last-Modified"); } catch (e) { } if (s.ifModified && modRes) jQuery.lastModified[s.url] = modRes; if (!jsonp) success(); } else
                        jQuery.handleError(s, xhr, status); complete(); if (s.async) xhr = null;
                } 
            }; if (s.async) { var ival = setInterval(onreadystatechange, 13); if (s.timeout > 0) setTimeout(function() { if (xhr) { xhr.abort(); if (!requestDone) onreadystatechange("timeout"); } }, s.timeout); } try { xhr.send(s.data); } catch (e) { jQuery.handleError(s, xhr, null, e); } if (!s.async) onreadystatechange(); function success() { if (s.success) s.success(data, status); if (s.global) jQuery.event.trigger("ajaxSuccess", [xhr, s]); } function complete() { if (s.complete) s.complete(xhr, status); if (s.global) jQuery.event.trigger("ajaxComplete", [xhr, s]); if (s.global && ! --jQuery.active) jQuery.event.trigger("ajaxStop"); } return xhr;
    }, handleError: function(s, xhr, status, e) { if (s.error) s.error(xhr, status, e); if (s.global) jQuery.event.trigger("ajaxError", [xhr, s, e]); }, active: 0, httpSuccess: function(xhr) { try { return !xhr.status && location.protocol == "file:" || (xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || xhr.status == 1223 || jQuery.browser.safari && xhr.status == undefined; } catch (e) { } return false; }, httpNotModified: function(xhr, url) { try { var xhrRes = xhr.getResponseHeader("Last-Modified"); return xhr.status == 304 || xhrRes == jQuery.lastModified[url] || jQuery.browser.safari && xhr.status == undefined; } catch (e) { } return false; }, httpData: function(xhr, type, filter) { var ct = xhr.getResponseHeader("content-type"), xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0, data = xml ? xhr.responseXML : xhr.responseText; if (xml && data.documentElement.tagName == "parsererror") throw "parsererror"; if (filter) data = filter(data, type); if (type == "script") jQuery.globalEval(data); if (type == "json") data = eval("(" + data + ")"); return data; }, param: function(a) {
        var s = []; if (a.constructor == Array || a.jquery) jQuery.each(a, function() { s.push(encodeURIComponent(this.name) + "=" + encodeURIComponent(this.value)); }); else
            for (var j in a) if (a[j] && a[j].constructor == Array) jQuery.each(a[j], function() { s.push(encodeURIComponent(j) + "=" + encodeURIComponent(this)); }); else
            s.push(encodeURIComponent(j) + "=" + encodeURIComponent(jQuery.isFunction(a[j]) ? a[j]() : a[j])); return s.join("&").replace(/%20/g, "+");
    } 
    }); jQuery.fn.extend({ show: function(speed, callback) { return speed ? this.animate({ height: "show", width: "show", opacity: "show" }, speed, callback) : this.filter(":hidden").each(function() { this.style.display = this.oldblock || ""; if (jQuery.css(this, "display") == "none") { var elem = jQuery("<" + this.tagName + " />").appendTo("body"); this.style.display = elem.css("display"); if (this.style.display == "none") this.style.display = "block"; elem.remove(); } }).end(); }, hide: function(speed, callback) { return speed ? this.animate({ height: "hide", width: "hide", opacity: "hide" }, speed, callback) : this.filter(":visible").each(function() { this.oldblock = this.oldblock || jQuery.css(this, "display"); this.style.display = "none"; }).end(); }, _toggle: jQuery.fn.toggle, toggle: function(fn, fn2) { return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ? this._toggle.apply(this, arguments) : fn ? this.animate({ height: "toggle", width: "toggle", opacity: "toggle" }, fn, fn2) : this.each(function() { jQuery(this)[jQuery(this).is(":hidden") ? "show" : "hide"](); }); }, slideDown: function(speed, callback) { return this.animate({ height: "show" }, speed, callback); }, slideUp: function(speed, callback) { return this.animate({ height: "hide" }, speed, callback); }, slideToggle: function(speed, callback) { return this.animate({ height: "toggle" }, speed, callback); }, fadeIn: function(speed, callback) { return this.animate({ opacity: "show" }, speed, callback); }, fadeOut: function(speed, callback) { return this.animate({ opacity: "hide" }, speed, callback); }, fadeTo: function(speed, to, callback) { return this.animate({ opacity: to }, speed, callback); }, animate: function(prop, speed, easing, callback) {
        var optall = jQuery.speed(speed, easing, callback); return this[optall.queue === false ? "each" : "queue"](function() {
            if (this.nodeType != 1) return false; var opt = jQuery.extend({}, optall), p, hidden = jQuery(this).is(":hidden"), self = this; for (p in prop) { if (prop[p] == "hide" && hidden || prop[p] == "show" && !hidden) return opt.complete.call(this); if (p == "height" || p == "width") { opt.display = jQuery.css(this, "display"); opt.overflow = this.style.overflow; } } if (opt.overflow != null) this.style.overflow = "hidden"; opt.curAnim = jQuery.extend({}, prop); jQuery.each(prop, function(name, val) {
                var e = new jQuery.fx(self, opt, name); if (/toggle|show|hide/.test(val)) e[val == "toggle" ? hidden ? "show" : "hide" : val](prop); else {
                    var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/), start = e.cur(true) || 0; if (parts) { var end = parseFloat(parts[2]), unit = parts[3] || "px"; if (unit != "px") { self.style[name] = (end || 1) + unit; start = ((end || 1) / e.cur(true)) * start; self.style[name] = start + unit; } if (parts[1]) end = ((parts[1] == "-=" ? -1 : 1) * end) + start; e.custom(start, end, unit); } else
                        e.custom(start, val, "");
                } 
            }); return true;
        });
    }, queue: function(type, fn) { if (jQuery.isFunction(type) || (type && type.constructor == Array)) { fn = type; type = "fx"; } if (!type || (typeof type == "string" && !fn)) return queue(this[0], type); return this.each(function() { if (fn.constructor == Array) queue(this, type, fn); else { queue(this, type).push(fn); if (queue(this, type).length == 1) fn.call(this); } }); }, stop: function(clearQueue, gotoEnd) { var timers = jQuery.timers; if (clearQueue) this.queue([]); this.each(function() { for (var i = timers.length - 1; i >= 0; i--) if (timers[i].elem == this) { if (gotoEnd) timers[i](true); timers.splice(i, 1); } }); if (!gotoEnd) this.dequeue(); return this; } 
    }); var queue = function(elem, type, array) { if (elem) { type = type || "fx"; var q = jQuery.data(elem, type + "queue"); if (!q || array) q = jQuery.data(elem, type + "queue", jQuery.makeArray(array)); } return q; }; jQuery.fn.dequeue = function(type) { type = type || "fx"; return this.each(function() { var q = queue(this, type); q.shift(); if (q.length) q[0].call(this); }); }; jQuery.extend({ speed: function(speed, easing, fn) { var opt = speed && speed.constructor == Object ? speed : { complete: fn || !fn && easing || jQuery.isFunction(speed) && speed, duration: speed, easing: fn && easing || easing && easing.constructor != Function && easing }; opt.duration = (opt.duration && opt.duration.constructor == Number ? opt.duration : jQuery.fx.speeds[opt.duration]) || jQuery.fx.speeds.def; opt.old = opt.complete; opt.complete = function() { if (opt.queue !== false) jQuery(this).dequeue(); if (jQuery.isFunction(opt.old)) opt.old.call(this); }; return opt; }, easing: { linear: function(p, n, firstNum, diff) { return firstNum + diff * p; }, swing: function(p, n, firstNum, diff) { return ((-Math.cos(p * Math.PI) / 2) + 0.5) * diff + firstNum; } }, timers: [], timerId: null, fx: function(elem, options, prop) { this.options = options; this.elem = elem; this.prop = prop; if (!options.orig) options.orig = {}; } }); jQuery.fx.prototype = { update: function() { if (this.options.step) this.options.step.call(this.elem, this.now, this); (jQuery.fx.step[this.prop] || jQuery.fx.step._default)(this); if (this.prop == "height" || this.prop == "width") this.elem.style.display = "block"; }, cur: function(force) { if (this.elem[this.prop] != null && this.elem.style[this.prop] == null) return this.elem[this.prop]; var r = parseFloat(jQuery.css(this.elem, this.prop, force)); return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0; }, custom: function(from, to, unit) { this.startTime = now(); this.start = from; this.end = to; this.unit = unit || this.unit || "px"; this.now = this.start; this.pos = this.state = 0; this.update(); var self = this; function t(gotoEnd) { return self.step(gotoEnd); } t.elem = this.elem; jQuery.timers.push(t); if (jQuery.timerId == null) { jQuery.timerId = setInterval(function() { var timers = jQuery.timers; for (var i = 0; i < timers.length; i++) if (!timers[i]()) timers.splice(i--, 1); if (!timers.length) { clearInterval(jQuery.timerId); jQuery.timerId = null; } }, 13); } }, show: function() { this.options.orig[this.prop] = jQuery.attr(this.elem.style, this.prop); this.options.show = true; this.custom(0, this.cur()); if (this.prop == "width" || this.prop == "height") this.elem.style[this.prop] = "1px"; jQuery(this.elem).show(); }, hide: function() { this.options.orig[this.prop] = jQuery.attr(this.elem.style, this.prop); this.options.hide = true; this.custom(this.cur(), 0); }, step: function(gotoEnd) { var t = now(); if (gotoEnd || t > this.options.duration + this.startTime) { this.now = this.end; this.pos = this.state = 1; this.update(); this.options.curAnim[this.prop] = true; var done = true; for (var i in this.options.curAnim) if (this.options.curAnim[i] !== true) done = false; if (done) { if (this.options.display != null) { this.elem.style.overflow = this.options.overflow; this.elem.style.display = this.options.display; if (jQuery.css(this.elem, "display") == "none") this.elem.style.display = "block"; } if (this.options.hide) this.elem.style.display = "none"; if (this.options.hide || this.options.show) for (var p in this.options.curAnim) jQuery.attr(this.elem.style, p, this.options.orig[p]); } if (done) this.options.complete.call(this.elem); return false; } else { var n = t - this.startTime; this.state = n / this.options.duration; this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration); this.now = this.start + ((this.end - this.start) * this.pos); this.update(); } return true; } }; jQuery.extend(jQuery.fx, { speeds: { slow: 600, fast: 200, def: 400 }, step: { scrollLeft: function(fx) { fx.elem.scrollLeft = fx.now; }, scrollTop: function(fx) { fx.elem.scrollTop = fx.now; }, opacity: function(fx) { jQuery.attr(fx.elem.style, "opacity", fx.now); }, _default: function(fx) { fx.elem.style[fx.prop] = fx.now + fx.unit; } } }); jQuery.fn.offset = function() { var left = 0, top = 0, elem = this[0], results; if (elem) with (jQuery.browser) { var parent = elem.parentNode, offsetChild = elem, offsetParent = elem.offsetParent, doc = elem.ownerDocument, safari2 = safari && parseInt(version) < 522 && !/adobeair/i.test(userAgent), css = jQuery.curCSS, fixed = css(elem, "position") == "fixed"; if (elem.getBoundingClientRect) { var box = elem.getBoundingClientRect(); add(box.left + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), box.top + Math.max(doc.documentElement.scrollTop, doc.body.scrollTop)); add(-doc.documentElement.clientLeft, -doc.documentElement.clientTop); } else { add(elem.offsetLeft, elem.offsetTop); while (offsetParent) { add(offsetParent.offsetLeft, offsetParent.offsetTop); if (mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName) || safari && !safari2) border(offsetParent); if (!fixed && css(offsetParent, "position") == "fixed") fixed = true; offsetChild = /^body$/i.test(offsetParent.tagName) ? offsetChild : offsetParent; offsetParent = offsetParent.offsetParent; } while (parent && parent.tagName && !/^body|html$/i.test(parent.tagName)) { if (!/^inline|table.*$/i.test(css(parent, "display"))) add(-parent.scrollLeft, -parent.scrollTop); if (mozilla && css(parent, "overflow") != "visible") border(parent); parent = parent.parentNode; } if ((safari2 && (fixed || css(offsetChild, "position") == "absolute")) || (mozilla && css(offsetChild, "position") != "absolute")) add(-doc.body.offsetLeft, -doc.body.offsetTop); if (fixed) add(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), Math.max(doc.documentElement.scrollTop, doc.body.scrollTop)); } results = { top: top, left: left }; } function border(elem) { add(jQuery.curCSS(elem, "borderLeftWidth", true), jQuery.curCSS(elem, "borderTopWidth", true)); } function add(l, t) { left += parseInt(l, 10) || 0; top += parseInt(t, 10) || 0; } return results; }; jQuery.fn.extend({ position: function() { var left = 0, top = 0, results; if (this[0]) { var offsetParent = this.offsetParent(), offset = this.offset(), parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0} : offsetParent.offset(); offset.top -= num(this, 'marginTop'); offset.left -= num(this, 'marginLeft'); parentOffset.top += num(offsetParent, 'borderTopWidth'); parentOffset.left += num(offsetParent, 'borderLeftWidth'); results = { top: offset.top - parentOffset.top, left: offset.left - parentOffset.left }; } return results; }, offsetParent: function() { var offsetParent = this[0].offsetParent; while (offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static')) offsetParent = offsetParent.offsetParent; return jQuery(offsetParent); } }); jQuery.each(['Left', 'Top'], function(i, name) { var method = 'scroll' + name; jQuery.fn[method] = function(val) { if (!this[0]) return; return val != undefined ? this.each(function() { this == window || this == document ? window.scrollTo(!i ? val : jQuery(window).scrollLeft(), i ? val : jQuery(window).scrollTop()) : this[method] = val; }) : this[0] == window || this[0] == document ? self[i ? 'pageYOffset' : 'pageXOffset'] || jQuery.boxModel && document.documentElement[method] || document.body[method] : this[0][method]; }; }); jQuery.each(["Height", "Width"], function(i, name) { var tl = i ? "Left" : "Top", br = i ? "Right" : "Bottom"; jQuery.fn["inner" + name] = function() { return this[name.toLowerCase()]() + num(this, "padding" + tl) + num(this, "padding" + br); }; jQuery.fn["outer" + name] = function(margin) { return this["inner" + name]() + num(this, "border" + tl + "Width") + num(this, "border" + br + "Width") + (margin ? num(this, "margin" + tl) + num(this, "margin" + br) : 0); }; });
})();

/*
* jMsAjax 0.2.1 - Microsoft Ajax jQuery Plugin
*
* Copyright (c) 2008 Adam Schröder (schotime.net)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* $Date: 2008-07-12 $
*/

(function($){$.jmsajax=function(options){var defaults={type:"POST",dataType:"msjson",data:{},beforeSend:function(xhr){xhr.setRequestHeader("Content-type","application/json; charset=utf-8");},contentType:"application/json; charset=utf-8",error:function(x,s,m){alert("Status: "+((x.statusText)?x.statusText:"Unknown")+"\nMessage: "+msJSON.parse(((x.responseText)?x.responseText:"Unknown")).Message);}};var options=$.extend(defaults,options);if(options.method)
options.url+="/"+options.method;if(options.data){if(options.type=="GET"){var data="";for(var i in options.data){if(data!="")
data+="&";data+=i+"="+msJSON.stringify(options.data[i]);}
options.url+="?"+data;data=null;options.data="{}";}
else if(options.type=="POST")
{options.data=msJSON.stringify(options.data);}}
if(options.success){if(options.dataType){if(options.dataType=="msjson"){var base=options.success;options.success=function(response,status){var y=dateparse(response);if(options.version){if(options.version>=3.5)
y=y.d;}
else{if(response.indexOf("{\"d\":")==0)
y=y.d;}
base(y,status);}}}}
return $.ajax(options);};dateparse=function(data){try{return msJSON.parse(data,function(key,value){var a;if(typeof value==="string"){if(value.indexOf("Date")>=0)
{a=/^\/Date\(([0-9]+)\)\/$/.exec(value);if(a){return new Date(parseInt(a[1],10));}}}
return value;});}
catch(e){return null;}}
msJSON=function(){function f(n){return n<10?'0'+n:n;}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapeable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapeable.lastIndex=0;return escapeable.test(string)?'"'+string.replace(escapeable,function(a){var c=meta[a];if(typeof c==='string'){return c;}
return'\\u'+('0000'+
(+(a.charCodeAt(0))).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
if(value.toUTCString){return'"\\/Date('+(Date.UTC(value.getFullYear(),value.getMonth(),value.getDate()))+')\\/"';}
gap+=indent;partial=[];if(typeof value.length==='number'&&!(value.propertyIsEnumerable('length'))){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value,rep);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value,rep);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
return{stringify:function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});},parse:function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+('0000'+
(+(a.charCodeAt(0))).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');}};}();})(jQuery);

/*
* jqModal - Minimalist Modaling with jQuery
*   (http://dev.iceburg.net/jquery/jqmodal/)
*
* Copyright (c) 2007,2008 Brice Burgess <bhb@iceburg.net>
* Dual licensed under the MIT and GPL licenses:
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.gnu.org/licenses/gpl.html
* 
* $Version: 07/06/2008 +r13
*/

(function($){$.fn.jqm=function(o){var p={overlay:50,overlayClass:'jqmOverlay',closeClass:'jqmClose',trigger:'.jqModal',ajax:F,ajaxText:'',target:F,modal:F,toTop:F,onShow:F,onHide:F,onLoad:F};return this.each(function(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s;H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s};if(p.trigger)$(this).jqmAddTrigger(p.trigger);});};$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide');};$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow');};$.fn.jqmShow=function(t){return this.each(function(){$.jqm.open(this._jqm,t);});};$.fn.jqmHide=function(t){return this.each(function(){$.jqm.close(this._jqm,t)});};$.jqm={hash:{},open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index'))),z=(z>0)?z:3000,o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z);if(c.modal){if(!A[0])L('bind');A.push(s);}
else if(c.overlay>0)h.w.jqmAddClose(o);else o=F;h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F;if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in{Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'");}}
if(c.ajax){var r=c.target||h.w,u=c.ajax,r=(typeof r=='string')?$(r,h.w):$(r),u=(u.substr(0,1)=='@')?$(t).attr(u.substring(1)):u;r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h);});}
else if(cc)h.w.jqmAddClose($(cc,h.w));if(c.toTop&&h.o)h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o);(c.onShow)?c.onShow(h):h.w.show();e(h);return F;},close:function(s){var h=H[s];if(!h.a)return F;h.a=F;if(A[0]){A.pop();if(!A[0])L('unbind');}
if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove();if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove();}return F;},params:{}};var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version=="6.0"),F=false,i=$('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),e=function(h){if(ie6)if(h.o)h.o.html('<p style="width:100%;height:100%"/>').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i);f(h);},f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}},L=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);},m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return!r;},hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function(){if(!this[c]){this[c]=[];$(this).click(function(){for(var i in{jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F;});}this[c].push(s);});});};})(jQuery);

/*  JQuery Autocomplete Plug-in
Original code by Dylan Verheul
http://www.dyve.net/jquery/?autocomplete    
*/

jQuery.autocomplete=function(input,options){var me=this;var $input=$(input).attr("autocomplete","off");if(options.inputClass){$input.addClass(options.inputClass);}
var results=document.createElement("div");var $results=$(results).hide().addClass(options.resultsClass).css("position","absolute");if(options.width>0){$results.css("width",options.width);}
$("body").append(results);input.autocompleter=me;var timeout=null;var prev="";var active=-1;var cache={};var keyb=false;var hasFocus=false;var lastKeyPressCode=null;var mouseDownOnSelect=false;var hidingResults=false;function flushCache(){cache={};cache.data={};cache.length=0;};flushCache();if(options.data!=null){var sFirstChar="",stMatchSets={},row=[];if(typeof options.url!="string"){options.cacheLength=1;}
for(var i=0;i<options.data.length;i++){row=((typeof options.data[i]=="string")?[options.data[i]]:options.data[i]);if(row[0].length>0){sFirstChar=row[0].substring(0,1).toLowerCase();if(!stMatchSets[sFirstChar])stMatchSets[sFirstChar]=[];stMatchSets[sFirstChar].push(row);}}
for(var k in stMatchSets){options.cacheLength++;addToCache(k,stMatchSets[k]);}}
$input.keydown(function(e){lastKeyPressCode=e.keyCode;switch(e.keyCode){case 38:e.preventDefault();moveSelect(-1);break;case 40:e.preventDefault();moveSelect(1);break;case 9:case 13:if(selectCurrent()){$input.get(0).blur();e.preventDefault();}
break;default:active=-1;if(timeout)clearTimeout(timeout);timeout=setTimeout(function(){onChange();},options.delay);break;}}).focus(function(){hasFocus=true;}).blur(function(){hasFocus=false;if(!mouseDownOnSelect){hideResults();}});hideResultsNow();function onChange(){if(lastKeyPressCode==46||(lastKeyPressCode>8&&lastKeyPressCode<32))return $results.hide();var v=$input.val();if(v==prev)return;prev=v;if(v.length>=options.minChars){$input.addClass(options.loadingClass);requestData(v);}else{$input.removeClass(options.loadingClass);$results.hide();}};function moveSelect(step){var lis=$("li",results);if(!lis)return;active+=step;if(active<0){active=0;}else if(active>=lis.size()){active=lis.size()-1;}
lis.removeClass("ac_over");$(lis[active]).addClass("ac_over");};function selectCurrent(){var li=$("li.ac_over",results)[0];if(!li){var $li=$("li",results);if(options.selectOnly){if($li.length==1)li=$li[0];}else if(options.selectFirst){li=$li[0];}}
if(li){selectItem(li);return true;}else{return false;}};function selectItem(li){if(!li){li=document.createElement("li");li.extra=[];li.selectValue="";}
if(options.displayValue){var v=$.trim(li.selectValue?li.selectValue:li.innerHTML);input.lastSelected=v;prev=v;$results.html("");$input.val(v);}
hideResultsNow();if(options.onItemSelect){setTimeout(function(){options.onItemSelect(li)},1);}};function createSelection(start,end){var field=$input.get(0);if(field.createTextRange){var selRange=field.createTextRange();selRange.collapse(true);selRange.moveStart("character",start);selRange.moveEnd("character",end);selRange.select();}else if(field.setSelectionRange){field.setSelectionRange(start,end);}else{if(field.selectionStart){field.selectionStart=start;field.selectionEnd=end;}}
field.focus();};function autoFill(sValue){if(lastKeyPressCode!=8){$input.val($input.val()+sValue.substring(prev.length));createSelection(prev.length,sValue.length);}};function showResults(){var pos=findPos(input);var iWidth=(options.width>0)?options.width:$input.width();$results.css({width:parseInt(iWidth)+"px",top:(pos.y+input.offsetHeight)+"px",left:pos.x+"px"}).show();};function hideResults(){if(timeout)clearTimeout(timeout);timeout=setTimeout(hideResultsNow,200);};function hideResultsNow(){if(hidingResults){return;}
hidingResults=true;if(timeout){clearTimeout(timeout);}
var v=$input.removeClass(options.loadingClass).val();if($results.is(":visible")){$results.hide();}
if(options.mustMatch){if(!input.lastSelected||input.lastSelected!=v){selectItem(null);}}
hidingResults=false;};function receiveData(q,data){if(data){$input.removeClass(options.loadingClass);results.innerHTML="";if(!hasFocus||data.length==0)return hideResultsNow();if($.browser.msie){$results.append(document.createElement('iframe'));}
results.appendChild(dataToDom(data));if(options.autoFill&&($input.val().toLowerCase()==q.toLowerCase()))autoFill(data[0][0]);showResults();}else{hideResultsNow();}};function parseData(data){if(!data)return null;var parsed=[];var rows=data.split(options.lineSeparator);for(var i=0;i<rows.length;i++){var row=$.trim(rows[i]);if(row){parsed[parsed.length]=row.split(options.cellSeparator);}}
return parsed;};function dataToDom(data){var ul=document.createElement("ul");var num=data.length;if((options.maxItemsToShow>0)&&(options.maxItemsToShow<num))num=options.maxItemsToShow;for(var i=0;i<num;i++){var row=data[i];if(!row)continue;var li=document.createElement("li");if(options.formatItem){li.innerHTML=options.formatItem(row,i,num);li.selectValue=row[0];}else{li.innerHTML=row[0];li.selectValue=row[0];}
var extra=null;if(row.length>1){extra=[];for(var j=1;j<row.length;j++){extra[extra.length]=row[j];}}
li.extra=extra;ul.appendChild(li);$(li).hover(function(){$("li",ul).removeClass("ac_over");$(this).addClass("ac_over");active=$("li",ul).indexOf($(this).get(0));},function(){$(this).removeClass("ac_over");}).click(function(e){e.preventDefault();e.stopPropagation();selectItem(this)});}
$(ul).mousedown(function(){mouseDownOnSelect=true;}).mouseup(function(){mouseDownOnSelect=false;});return ul;};function requestData(q){if(!options.matchCase)q=q.toLowerCase();var data=options.cacheLength?loadFromCache(q):null;if(data){receiveData(q,data);}else if((typeof options.url=="string")&&(options.url.length>0)){$.get(makeUrl(q),function(data){data=parseData(data);addToCache(q,data);receiveData(q,data);});}else{$input.removeClass(options.loadingClass);}};function makeUrl(q){var sep=options.url.indexOf('?')==-1?'?':'&';var url=options.url+sep+"q="+encodeURI(q);for(var i in options.extraParams){url+="&"+i+"="+encodeURI(options.extraParams[i]);}
return url;};function loadFromCache(q){if(!q)return null;if(cache.data[q])return cache.data[q];if(options.matchSubset){for(var i=q.length-1;i>=options.minChars;i--){var qs=q.substr(0,i);var c=cache.data[qs];if(c){var csub=[];for(var j=0;j<c.length;j++){var x=c[j];var x0=x[0];if(matchSubset(x0,q)){csub[csub.length]=x;}}
return csub;}}}
return null;};function matchSubset(s,sub){if(!options.matchCase)s=s.toLowerCase();var i=s.indexOf(sub);if(i==-1)return false;return i==0||options.matchContains;};this.flushCache=function(){flushCache();};this.setExtraParams=function(p){options.extraParams=p;};this.findValue=function(){var q=$input.val();if(!options.matchCase)q=q.toLowerCase();var data=options.cacheLength?loadFromCache(q):null;if(data){findValueCallback(q,data);}else if((typeof options.url=="string")&&(options.url.length>0)){$.get(makeUrl(q),function(data){data=parseData(data)
addToCache(q,data);findValueCallback(q,data);});}else{findValueCallback(q,null);}}
function findValueCallback(q,data){if(data)$input.removeClass(options.loadingClass);var num=(data)?data.length:0;var li=null;for(var i=0;i<num;i++){var row=data[i];if(row[0].toLowerCase()==q.toLowerCase()){li=document.createElement("li");if(options.formatItem){li.innerHTML=options.formatItem(row,i,num);li.selectValue=row[0];}else{li.innerHTML=row[0];li.selectValue=row[0];}
var extra=null;if(row.length>1){extra=[];for(var j=1;j<row.length;j++){extra[extra.length]=row[j];}}
li.extra=extra;}}
if(options.onFindValue)setTimeout(function(){options.onFindValue(li)},1);}
function addToCache(q,data){if(!data||!q||!options.cacheLength)return;if(!cache.length||cache.length>options.cacheLength){flushCache();cache.length++;}else if(!cache[q]){cache.length++;}
cache.data[q]=data;};function findPos(obj){var curleft=obj.offsetLeft||0;var curtop=obj.offsetTop||0;while(obj=obj.offsetParent){curleft+=obj.offsetLeft
curtop+=obj.offsetTop}
return{x:curleft,y:curtop};}}
jQuery.fn.autocomplete=function(url,options,data){options=options||{};options.url=url;options.data=((typeof data=="object")&&(data.constructor==Array))?data:null;options=$.extend({inputClass:"ac_input",resultsClass:"ac_results",lineSeparator:"\n",cellSeparator:"|",minChars:1,delay:400,matchCase:0,matchSubset:1,matchContains:0,cacheLength:1,mustMatch:0,extraParams:{},loadingClass:"ac_loading",selectFirst:false,selectOnly:false,maxItemsToShow:-1,autoFill:false,displayValue:true,width:0},options);options.width=parseInt(options.width,10);this.each(function(){var input=this;new jQuery.autocomplete(input,options);});return this;}
jQuery.fn.autocompleteArray=function(data,options){return this.autocomplete(null,options,data);}
jQuery.fn.indexOf=function(e){for(var i=0;i<this.length;i++){if(this[i]==e)return i;}
return -1;
};

/*jquery.cookie.js*/
/**
* Cookie plugin
*
* Copyright (c) 2006 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/

/**
* Create a cookie with the given name and value and other optional parameters.
*
* @example $.cookie('the_cookie', 'the_value');
* @desc Set the value of a cookie.
* @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
* @desc Create a cookie with all available options.
* @example $.cookie('the_cookie', 'the_value');
* @desc Create a session cookie.
* @example $.cookie('the_cookie', null);
* @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
*       used when the cookie was set.
*
* @param String name The name of the cookie.
* @param String value The value of the cookie.
* @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
* @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
*                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
*                             If set to null or omitted, the cookie will be a session cookie and will not be retained
*                             when the the browser exits.
* @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
* @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
* @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
*                        require a secure protocol (like HTTPS).
* @type undefined
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/

/**
* Get the value of a cookie with the given name.
*
* @example $.cookie('the_cookie');
* @desc Get the value of a cookie.
*
* @param String name The name of the cookie.
* @return The value of the cookie.
* @type String
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};

/*jquery.pagePeel.1.2.1.js*/
/*
* Copyright (c) 2008-2009 John McMullen (http://www.smple.com)
* This is licensed under GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
*/

(function($) {
    $.fn.pagePeel = function(options) {

        var defaults = {

            // SET WIDTH / HEIGHT OF CORNER AD WHEN SMALL
            smallWidth: 120,
            smallHeight: 120,
            smallBG: 'pp-src/smallBG.png',

            // SET WIDTH / HEIGHT OF CORNER AD INTRO
            introWidth: 300,
            introHeight: 300,

            // SET WIDTH / HEIGHT OF BIG AD (SAME AS .SWF)
            bigWidth: 500,
            bigHeight: 500,
            bigBG: 'pp-src/bigBG.png',
            bigAd: 'pp-src/bigAd.jpg',
            bigSWF: 'pp-src/page-peel-big.swf',

            // POSITION WILL REMAIN THE SAME FOR BOTH
            hPosition: 'right', // can use 'left' or 'right'
            vPosition: 'top', // can use 'top' or 'bottom'

            // CHOOSE WHETHER TO USE FLASH OR NOT
            flash: true,

            // WHETHER TO USE INTRO ANIMATION AND WHAT FILE TO USE
            introAnim: false,
            bigSWFIntro: 'pp-src/page-peel-big-intro.swf',

            // ADD LINK IF LEFT 'BLANK', NO ADD LINK WILL BE APPLIED
            adLink: 'blank',
            adLinkTarget: '_blank'
        };

        var options = $.extend(defaults, options);

        var element = this;

        return this.each(function() {

            if (options.flash === true) {
                if (options.introAnim === true) {
                    $(element).after("<div class='page-peel-adjuster' style='overflow:hidden; width:" + options.introWidth + "px; height: " + options.introHeight + "px; display:none; position:absolute; " + options.vPosition + ":0px; " + options.hPosition + ":0px;'><div class='page-peel-holder' style='width:" + options.bigWidth + "px; height: " + options.bigHeight + "px; display:block; position:absolute; " + options.vPosition + ":0px; " + options.hPosition + ":0px; z-index:9999;'><embed style='display: block;' src='" + options.bigSWFIntro + "' flashvars='linkURL=" + options.adLink + "&linkURLTarget=" + options.adLinkTarget + "&bigURL=" + options.bigAd + "' type='application/x-shockwave-flash' pluginspage='http://www.adobe.com/go/getflashplayer' wmode='transparent' autoplay='false' width='" + options.bigWidth + "' height='" + options.bigHeight + "'></div></div>");
                }
                if (options.introAnim === false) {
                    $(element).after("<div class='page-peel-adjuster' style='overflow:hidden; width:" + options.smallWidth + "px; height: " + options.smallHeight + "px; display:none; position:absolute; " + options.vPosition + ":0px; " + options.hPosition + ":0px;'><div class='page-peel-holder' style='width:" + options.bigWidth + "px; height: " + options.bigHeight + "px; display:block; position:absolute; " + options.vPosition + ":0px; " + options.hPosition + ":0px; z-index:9999;'><embed style='display: block;' src='" + options.bigSWF + " 'flashvars='linkURL=" + options.adLink + "&linkURLTarget=" + options.adLinkTarget + "&bigURL=" + options.bigAd + "' type='application/x-shockwave-flash' pluginspage='http://www.adobe.com/go/getflashplayer' wmode='transparent' autoplay='false' width='" + options.bigWidth + "' height='" + options.bigHeight + "'></div></div>");
                }

                $('.page-peel-adjuster').hover(
				function() {
				    var w = $(this).width();
				    if (w === 300) {
				        $(this).stop().css({
				            width: options.smallWidth,
				            height: options.smallHeight
				        });
				    } else {
				        $(this).css('z-index', '9999');
				        $(this).stop().css({
				            width: options.bigWidth,
				            height: options.bigHeight
				        });
				    }
				},
				function() {
				    $(this).animate({ width: options.smallWidth, height: options.smallHeight }, 1000)
				    $(this).css('z-index', '1000');
				}
			);

                $('.page-peel-adjuster').css('display', 'block');
            }

            if (options.flash !== true) {
                $(element).after("<div class='page-peel-adjuster' style='width:" + options.smallWidth + "px; height: " + options.smallHeight + "px; display:block; position:absolute; " + options.vPosition + ":0px; " + options.hPosition + ":0px; background:url(" + options.smallBG + ") " + options.vPosition + " " + options.hPosition + " no-repeat;'");

                $('.page-peel-adjuster').hover(
				function() {
				    $(this).css('z-index', '9999');
				    $(this).css({
				        width: options.bigWidth,
				        height: options.bigHeight,
				        background: 'url(' + options.bigBG + ') top right no-repeat'
				    });
				},
				function() {
				    $(this).css({
				        width: options.smallWidth,
				        height: options.smallHeight,
				        background: 'url(' + options.smallBG + ') top right no-repeat'
				    });
				    $(this).css('z-index', '1000');
				}
			);
            }
        });

    };
})(jQuery);
