(function (d) {
    jQuery.fn.pngFix = function (l) {
        l = jQuery.extend({
            blankgif: "blank.gif"
        }, l);
        var h = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
        var f = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);
        if (jQuery.browser.msie && (h || f)) {
            jQuery(this).find("img[@src$=.png]").each(function () {
                jQuery(this).attr("width", jQuery(this).width());
                jQuery(this).attr("height", jQuery(this).height());
                var C = "";
                var A = "";
                var w = (jQuery(this).attr("id")) ? 'id="' + jQuery(this).attr("id") + '" ' : "";
                var B = (jQuery(this).attr("class")) ? 'class="' + jQuery(this).attr("class") + '" ' : "";
                var x = (jQuery(this).attr("title")) ? 'title="' + jQuery(this).attr("title") + '" ' : "";
                var y = (jQuery(this).attr("alt")) ? 'alt="' + jQuery(this).attr("alt") + '" ' : "";
                var z = (jQuery(this).attr("align")) ? "float:" + jQuery(this).attr("align") + ";" : "";
                var u = (jQuery(this).parent().attr("href")) ? "cursor:hand;" : "";
                if (this.style.border) {
                    C += "border:" + this.style.border + ";";
                    this.style.border = ""
                }
                if (this.style.padding) {
                    C += "padding:" + this.style.padding + ";";
                    this.style.padding = ""
                }
                if (this.style.margin) {
                    C += "margin:" + this.style.margin + ";";
                    this.style.margin = ""
                }
                var p = (this.style.cssText);
                A += "<span " + w + B + x + y;
                A += 'style="position:relative;white-space:pre-line;display:inline-block;background:transparent;' + z + u;
                A += "width:" + jQuery(this).width() + "px;height:" + jQuery(this).height() + "px;";
                A += "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + jQuery(this).attr("src") + "', sizingMethod='scale');";
                A += p + '"></span>';
                if (C != "") {
                    A = '<span style="position:relative;display:inline-block;' + C + u + "width:" + jQuery(this).width() + "px;height:" + jQuery(this).height() + 'px;">' + A + "</span>"
                }
                jQuery(this).hide();
                jQuery(this).after(A)
            });
            jQuery(this).find("*").each(function () {
                var u = jQuery(this).css("background-image");
                if (u.indexOf(".png") != -1) {
                    var p = u.split('url("')[1].split('")')[0];
                    jQuery(this).css("background-image", "none");
                    jQuery(this).get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + p + "',sizingMethod='scale')"
                }
            });
            jQuery(this).find("input[@src$=.png]").each(function () {
                var p = jQuery(this).attr("src");
                jQuery(this).get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + p + "', sizingMethod='scale');";
                jQuery(this).attr("src", l.blankgif)
            })
        }
        return jQuery
    }
})(jQuery);
settings = null;
ie55 = null;
ie = null;
prevStyle = null;
strNewHTML = null;
imgId = null;
imgClass = null;
imgTitle = null;
imgAlt = null;
imgAlign = null;
imgHand = null;
prevStyle = null;
imgStyle = null;
strNewHTML = null;
bgIMG = null;
iebg = null;
new
function () {
    var h = {
        browser: function () {
            return y.browser
        },
        version: {
            number: function () {
                return y.version.number
            },
            string: function () {
                return y.version.string
            }
        },
        OS: function () {
            return y.OS
        },
        aol: function () {
            return y.aol
        },
        camino: function () {
            return y.camino
        },
        firefox: function () {
            return y.firefox
        },
        flock: function () {
            return y.flock
        },
        icab: function () {
            return y.icab
        },
        konqueror: function () {
            return y.konqueror
        },
        mozilla: function () {
            return y.mozilla
        },
        msie: function () {
            return y.msie
        },
        netscape: function () {
            return y.netscape
        },
        opera: function () {
            return y.opera
        },
        safari: function () {
            return y.safari
        },
        linux: function () {
            return y.linux
        },
        mac: function () {
            return y.mac
        },
        win: function () {
            return y.win
        }
    };
    $.browser_please_do_not_use_this_shit = h;
    var y = {
        browser: "Unknown",
        version: {
            number: undefined,
            string: "Unknown"
        },
        OS: "Unknown",
        aol: false,
        camino: false,
        firefox: false,
        flock: false,
        icab: false,
        konqueror: false,
        mozilla: false,
        msie: false,
        netscape: false,
        opera: false,
        safari: false,
        linux: false,
        mac: false,
        win: false
    };
    for (var p = 0, d = navigator.userAgent, w = navigator.vendor, u = [{
        name: "Safari",
        browser: function () {
            return /Apple/.test(w)
        }
    },
    {
        name: "Opera",
        browser: function () {
            return window.opera != undefined
        }
    },
    {
        name: "iCab",
        browser: function () {
            return /iCab/.test(w)
        }
    },
    {
        name: "Konqueror",
        browser: function () {
            return /KDE/.test(w)
        }
    },
    {
        identifier: "aol",
        name: "AOL Explorer",
        browser: function () {
            return /America Online Browser/.test(d)
        },
        version: function () {
            return d.match(/rev(\d+(?:\.\d+)+)/)
        }
    },
    {
        name: "Flock",
        browser: function () {
            return /Flock/.test(d)
        }
    },
    {
        name: "Camino",
        browser: function () {
            return /Camino/.test(w)
        }
    },
    {
        name: "Firefox",
        browser: function () {
            return /Firefox/.test(d)
        }
    },
    {
        name: "Netscape",
        browser: function () {
            return /Netscape/.test(d)
        }
    },
    {
        identifier: "msie",
        name: "Internet Explorer",
        browser: function () {
            return /MSIE/.test(d)
        },
        version: function () {
            return d.match(/MSIE (\d+(?:\.\d+)+(?:b\d*)?)/)
        }
    },
    {
        name: "Mozilla",
        browser: function () {
            return /Gecko|Mozilla/.test(d)
        },
        version: function () {
            return d.match(/rv:(\d+(?:\.\d+)+)/)
        }
    }]; p < u.length; p++) {
        if (u[p].browser()) {
            var f = u[p].identifier ? u[p].identifier : u[p].name.toLowerCase();
            y[f] = true;
            y.browser = u[p].name;
            var x;
            if (u[p].version != undefined && (x = u[p].version())) {
                y.version.string = x[1];
                y.version.number = parseFloat(x[1])
            } else {
                var z = new RegExp(u[p].name + "(?:\\s|\\/)(\\d+(?:\\.\\d+)+(?:(?:a|b)\\d*)?)");
                x = d.match(z);
                if (x != undefined) {
                    y.version.string = x[1];
                    y.version.number = parseFloat(x[1])
                }
            }
            break
        }
    }
    for (var p = 0, l = navigator.platform, u = [{
        identifier: "win",
        name: "Windows",
        OS: function () {
            return /Win/.test(l)
        }
    },
    {
        name: "Mac",
        OS: function () {
            return /Mac/.test(l)
        }
    },
    {
        name: "Linux",
        OS: function () {
            return /Linux/.test(l)
        }
    }]; p < u.length; p++) {
        if (u[p].OS()) {
            var f = u[p].identifier ? u[p].identifier : u[p].name.toLowerCase();
            y[f] = true;
            y.OS = u[p].name;
            break
        }
    }
}();
Public = null;
Private = null;
i = null;
ua = null;
ve = null;
data = null;
result = null;
re = null;
pl = null;
(function (h) {
    var f = h.scrollTo = function (u, p, l) {
        h(window).scrollTo(u, p, l)
    };
    f.defaults = {
        axis: "xy",
        duration: parseFloat(h.fn.jquery) >= 1.3 ? 0 : 1
    };
    f.window = function (l) {
        return h(window)._scrollable()
    };
    h.fn._scrollable = function () {
        return this.map(function () {
            var p = this,
                l = !p.nodeName || h.inArray(p.nodeName.toLowerCase(), ["iframe", "#document", "html", "body"]) != -1;
            if (!l) {
                return p
            }
            var u = (p.contentWindow || p).document || p.ownerDocument || p;
            return h.browser.safari || u.compatMode == "BackCompat" ? u.body : u.documentElement
        })
    };
    h.fn.scrollTo = function (u, p, l) {
        if (typeof p == "object") {
            l = p;
            p = 0
        }
        if (typeof l == "function") {
            l = {
                onAfter: l
            }
        }
        if (u == "max") {
            u = 9000000000
        }
        l = h.extend({}, f.defaults, l);
        p = p || l.speed || l.duration;
        l.queue = l.queue && l.axis.length > 1;
        if (l.queue) {
            p /= 2
        }
        l.offset = d(l.offset);
        l.over = d(l.over);
        return this._scrollable().each(function () {
            var B = this,
                y = h(B),
                z = u,
                x, w = {},
                C = y.is("html,body");
            switch (typeof z) {
            case "number":
            case "string":
                if (/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(z)) {
                    z = d(z);
                    break
                }
                z = h(z, this);
            case "object":
                if (z.is || z.style) {
                    x = (z = h(z)).offset()
                }
            }
            h.each(l.axis.split(""), function (G, H) {
                var I = H == "x" ? "Left" : "Top",
                K = I.toLowerCase(),
                F = "scroll" + I,
                E = B[F],
                D = f.max(B, H);
                if (x) {
                    w[F] = x[K] + (C ? 0 : E - y.offset()[K]);
                    if (l.margin) {
                        w[F] -= parseInt(z.css("margin" + I)) || 0;
                        w[F] -= parseInt(z.css("border" + I + "Width")) || 0
                    }
                    w[F] += l.offset[K] || 0;
                    if (l.over[K]) {
                        w[F] += z[H == "x" ? "width" : "height"]() * l.over[K]
                    }
                } else {
                    var J = z[K];
                    w[F] = J.slice && J.slice(-1) == "%" ? parseFloat(J) / 100 * D : J
                }
                if (/^\d+$/.test(w[F])) {
                    w[F] = w[F] <= 0 ? 0 : Math.min(w[F], D)
                }
                if (!G && l.queue) {
                    if (E != w[F]) {
                        A(l.onAfterFirst)
                    }
                    delete w[F]
                }
            });
            A(l.onAfter);

            function A(D) {
                y.animate(w, p, l.easing, D &&
                function () {
                    D.call(this, u, l)
                })
            }
        }).end()
    };
    f.max = function (y, x) {
        var w = x == "x" ? "Width" : "Height",
        z = "scroll" + w;
        if (!h(y).is("html,body")) {
            return y[z] - h(y)[w.toLowerCase()]()
        }
        var u = "client" + w,
            p = y.ownerDocument.documentElement,
            l = y.ownerDocument.body;
        return Math.max(p[z], l[z]) - Math.min(p[u], l[u])
    };

    function d(l) {
        return typeof l == "object" ? l : {
            top: l,
            left: l
        }
    }
})(jQuery);
settings = null;
duration = null;
elem = null;
targ = null;
win = null;
Pos = null;
pos = null;
key = null;
old = null;
max = null;
toff = null;
attr = null;
val = null;
old = null;
jQuery.autocomplete = function (h, I) {
    var E = this;
    var N = $(h).attr("autocomplete", "off");
    var V = h;
    if (I.inputClass) {
        N.addClass(I.inputClass)
    }
    var F = document.createElement("div");
    var U = $(F);
    U.hide().addClass(I.resultsClass).css("position", "absolute");
    if (I.width > 0) {
        U.css("width", I.width)
    }
    $("body").append(F);
    h.autocompleter = E;
    var w = null;
    var M = "";
    var x = -1;
    var z = {};
    var Q = false;
    var B = false;
    var d = null;

    function O() {
        z = {};
        z.data = {};
        z.length = 0
    }
    O();
    if (I.data != null) {
        var G = "",
            ad = {},
            C = [];
        if (typeof I.url != "string") {
            I.cacheLength = 1
        }
        for (var ab = 0; ab < I.data.length; ab++) {
            C = ((typeof I.data[ab] == "string") ? [I.data[ab]] : I.data[ab]);
            if (C[0].length > 0) {
                G = C[0].substring(0, 1).toLowerCase();
                if (!ad[G]) {
                    ad[G] = []
                }
                ad[G].push(C)
            }
        }
        for (var aa in ad) {
            I.cacheLength++;
            p(aa, ad[aa])
        }
    }
    N.keydown(function (ae) {
        d = ae.keyCode;
        switch (ae.keyCode) {
        case 38:
            ae.preventDefault();
            y(-1);
            break;
        case 40:
            ae.preventDefault();
            y(1);
            break;
        case 9:
        case 13:
            if (T()) {
                if (!I.preventBlur) {
                    N.get(0).blur()
                }
                ae.preventDefault()
            }
            break;
        default:
            x = -1;
            if (w) {
                clearTimeout(w)
            }
            w = setTimeout(function () {
                J()
            }, I.delay);
            break
        }
    }).focus(function () {
        B = true
    }).blur(function () {
        B = false;
        l()
    });
    H();

    function J() {
        if (d == 46 || (d > 8 && d < 32)) {
            return U.hide()
        }
        var ae = N.val();
        if (ae == M) {
            return
        }
        M = ae;
        if (ae.length >= I.minChars) {
            N.addClass(I.loadingClass);
            R(ae)
        } else {
            N.removeClass(I.loadingClass);
            U.hide()
        }
    }
    function y(af) {
        var ae = $("li", F);
        if (!ae) {
            return
        }
        x += af;
        if (x < 0) {
            x = 0
        } else {
            if (x >= ae.size()) {
                x = ae.size() - 1
            }
        }
        ae.removeClass("ac_over");
        $(ae[x]).addClass("ac_over")
    }
    function T() {
        var ae = $("li.ac_over", F)[0];
        if (!ae) {
            var af = $("li", F);
            if (I.selectOnly) {
                if (af.length == 1) {
                    ae = af[0]
                }
            } else {
                if (I.selectFirst) {
                    ae = af[0]
                }
            }
        }
        if (ae) {
            K(ae);
            return true
        } else {
            return false
        }
    }
    function K(ae) {
        if (!ae) {
            ae = document.createElement("li");
            ae.extra = [];
            ae.selectValue = ""
        }
        var ag = $.trim(ae.selectValue ? ae.selectValue : ae.innerHTML);
        h.lastSelected = ag;
        M = ag;
        U.html("");
        var af = N.val();
        N.val(ag);
        H();
        if (I.onItemSelect) {
            setTimeout(function () {
                I.onItemSelect(ae)
            }, 1)
        }
        if (I.onValueSelect) {
            setTimeout(function () {
                I.onValueSelect(N, ag, af)
            }, 1)
        }
    }
    function f(ah, af) {
        var ag = N.get(0);
        if (ag.createTextRange) {
            var ae = ag.createTextRange();
            ae.collapse(true);
            ae.moveStart("character", ah);
            ae.moveEnd("character", af);
            ae.select()
        } else {
            if (ag.setSelectionRange) {
                ag.setSelectionRange(ah, af)
            } else {
                if (ag.selectionStart) {
                    ag.selectionStart = ah;
                    ag.selectionEnd = af
                }
            }
        }
        ag.focus()
    }
    function L(ae) {
        if (d != 8) {
            N.val(N.val() + ae.substring(M.length));
            f(M.length, ae.length)
        }
    }
    function S() {
        var af = A(h);
        var ae = (I.width > 0) ? I.width : N.width();
        U.css({
            width: parseInt(ae) + "px",
            top: (af.y + h.offsetHeight) + "px",
            left: af.x + "px"
        }).show()
    }
    function l() {
        if (w) {
            clearTimeout(w)
        }
        w = setTimeout(H, 200)
    }
    function H() {
        if (w) {
            clearTimeout(w)
        }
        N.removeClass(I.loadingClass);
        if (U.is(":visible")) {
            U.hide()
        }
        if (I.mustMatch) {
            var ae = N.val();
            if (ae != h.lastSelected) {
                K(null)
            }
        }
    }
    function X(af, ae) {
        if (ae) {
            N.removeClass(I.loadingClass);
            F.innerHTML = "";
            if (!B || ae.length == 0) {
                return H()
            }
            if ($.browser.msie) {
                U.append(document.createElement("iframe"))
            }
            F.appendChild(u(ae));
            if (I.autoFill && (N.val().toLowerCase() == af.toLowerCase())) {
                L(ae[0][0])
            }
            S()
        } else {
            H()
        }
    }
    function Y(ah) {
        if (!ah) {
            return null
        }
        var af = [];
        var ag = ah.split(I.lineSeparator);
        for (var ae = 0; ae < ag.length; ae++) {
            var ai = $.trim(ag[ae]);
            if (ai) {
                af[af.length] = ai.split(I.cellSeparator)
            }
        }
        return af
    }
    function u(ak) {
        var aj = document.createElement("ul");
        var ah = ak.length;
        if ((I.maxItemsToShow > 0) && (I.maxItemsToShow < ah)) {
            ah = I.maxItemsToShow
        }
        for (var ai = 0; ai < ah; ai++) {
            var al = ak[ai];
            if (!al) {
                continue
            }
            var af = document.createElement("li");
            if (I.formatItem) {
                af.innerHTML = I.formatItem(al, ai, ah);
                af.selectValue = al[0]
            } else {
                af.innerHTML = al[0];
                af.selectValue = al[0]
            }
            var ae = null;
            if (al.length > 1) {
                ae = [];
                for (var ag = 1; ag < al.length; ag++) {
                    ae[ae.length] = al[ag]
                }
            }
            af.extra = ae;
            aj.appendChild(af);
            $(af).hover(function () {
                $("li", aj).removeClass("ac_over");
                $(this).addClass("ac_over");
                x = $("li", aj).indexOf($(this).get(0))
            }, function () {
                $(this).removeClass("ac_over")
            }).click(function (am) {
                am.preventDefault();
                am.stopPropagation();
                K(this)
            })
        }
        return aj
    }
    function R(af) {
        if (!I.matchCase) {
            af = af.toLowerCase()
        }
        var ae = I.cacheLength ? ac(af) : null;
        if (ae) {
            X(af, ae)
        } else {
            if ((typeof I.url == "string") && (I.url.length > 0)) {
                var ag = A(N);
                $.post(I.url, D(af), function (ah) {
                    ah = Y(ah);
                    p(af, ah);
                    X(af, ah)
                })
            } else {
                N.removeClass(I.loadingClass)
            }
        }
    }
    function D(ae) {
        I.extraParams.value = ae;
        return I.extraParams
    }
    function ac(ak) {
        if (!ak) {
            return null
        }
        if (z.data[ak]) {
            return z.data[ak]
        }
        if (I.matchSubset) {
            for (var ai = ak.length - 1; ai >= I.minChars; ai--) {
                var af = ak.substr(0, ai);
                var al = z.data[af];
                if (al) {
                    var aj = [];
                    for (var ag = 0; ag < al.length; ag++) {
                        var ae = al[ag];
                        var ah = ae[0];
                        if (P(ah, ak)) {
                            aj[aj.length] = ae
                        }
                    }
                    return aj
                }
            }
        }
        return null
    }
    function Z(ae) {
        if (I.normalize) {
            ae = ae.replace(" ", "");
            ae = ae.replace("-", "");
            ae = ae.replace("_", "");
            ae = ae.replace("/", "");
            ae = ae.replace("\\", "");
            ae = ae.replace("?", "");
            ae = ae.replace("~", "");
            ae = ae.replace("'", "");
            ae = ae.replace(";", "");
            ae = ae.replace(":", "");
            ae = ae.replace(" ", "");
            ae = ae.replace("`", "");
            ae = ae.replace(",", "");
            ae = ae.replace("!", "");
            ae = ae.replace("%", "");
            ae = ae.replace("#", "");
            ae = ae.replace("*", "");
            ae = ae.replace("$", "");
            ae = ae.replace("^", "");
            ae = ae.replace("<", "");
            ae = ae.replace(">", "");
            ae = ae.replace("|", "");
            ae = ae.replace("@", "");
            ae = ae.replace("{", "");
            ae = ae.replace("}", "");
            ae = ae.replace('"', "")
        }
        return ae
    }
    function P(ag, af) {
        if (!I.matchCase) {
            ag = ag.toLowerCase()
        }
        var ai = Z(ag);
        var ah = Z(af);
        var ae = ai.indexOf(ah);
        if (ae == -1) {
            return false
        }
        return ae == 0 || I.matchContains
    }
    this.flushCache = function () {
        O()
    };
    this.setExtraParams = function (ae) {
        I.extraParams = ae
    };
    this.findValue = function () {
        var af = N.val();
        if (!I.matchCase) {
            af = af.toLowerCase()
        }
        var ae = I.cacheLength ? ac(af) : null;
        if (ae) {
            W(af, ae)
        } else {
            if ((typeof I.url == "string") && (I.url.length > 0)) {
                $.post(I.url, D(af), function (ag) {
                    ag = Y(ag);
                    p(af, ag);
                    W(af, ag)
                })
            } else {
                W(af, null)
            }
        }
    };

    function W(ak, aj) {
        if (aj) {
            N.removeClass(I.loadingClass)
        }
        var ah = (aj) ? aj.length : 0;
        var af = null;
        for (var ai = 0; ai < ah; ai++) {
            var al = aj[ai];
            if (al[0].toLowerCase() == ak.toLowerCase()) {
                af = document.createElement("li");
                if (I.formatItem) {
                    af.innerHTML = I.formatItem(al, ai, ah);
                    af.selectValue = al[0]
                } else {
                    af.innerHTML = al[0];
                    af.selectValue = al[0]
                }
                var ae = null;
                if (al.length > 1) {
                    ae = [];
                    for (var ag = 1; ag < al.length; ag++) {
                        ae[ae.length] = al[ag]
                    }
                }
                af.extra = ae
            }
        }
        if (I.onFindValue) {
            setTimeout(function () {
                I.onFindValue(af)
            }, 1)
        }
    }
    function p(af, ae) {
        if (!ae || !af || !I.cacheLength) {
            return
        }
        if (!z.length || z.length > I.cacheLength) {
            O();
            z.length++
        } else {
            if (!z[af]) {
                z.length++
            }
        }
        z.data[af] = ae
    }
    function A(af) {
        var ag = af.offsetLeft || 0;
        var ae = af.offsetTop || 0;
        while (af = af.offsetParent) {
            ag += af.offsetLeft;
            ae += af.offsetTop
        }
        return {
            x: ag,
            y: ae
        }
    }
};
jQuery.fn.unautocomplete = function () {
    this.each(function () {
        this.autocompleter = null
    });
    this.unbind("keydown").unbind("blur").unbind("focus")
};
jQuery.fn.autocomplete = function (d, f, h) {
    f = f || {};
    f.url = d;
    f.data = ((typeof h == "object") && (h.constructor == Array)) ? h : null;
    f.inputClass = f.inputClass || "ac_input";
    f.resultsClass = f.resultsClass || "ac_results";
    f.lineSeparator = f.lineSeparator || "\n";
    f.cellSeparator = f.cellSeparator || "|";
    f.minChars = f.minChars || 1;
    f.delay = f.delay || 400;
    f.matchCase = f.matchCase || 0;
    f.matchSubset = f.matchSubset || 1;
    f.matchContains = f.matchContains || 0;
    f.cacheLength = f.cacheLength || 1;
    f.mustMatch = f.mustMatch || 0;
    f.extraParams = f.extraParams || {};
    f.loadingClass = f.loadingClass || "ac_loading";
    f.selectFirst = f.selectFirst || false;
    f.selectOnly = f.selectOnly || false;
    f.maxItemsToShow = f.maxItemsToShow || -1;
    f.autoFill = f.autoFill || false;
    f.width = parseInt(f.width, 10) || 0;
    f.normalize = f.normalize || false;
    this.each(function () {
        var l = this;
        new jQuery.autocomplete(l, f)
    });
    return this
};
jQuery.fn.autocompleteArray = function (f, d) {
    return this.autocomplete(null, d, f)
};
jQuery.fn.indexOf = function (f) {
    for (var d = 0; d < this.length; d++) {
        if (this[d] == f) {
            return d
        }
    }
    return -1
};
me = null;
myinput = null;
input = null;
results = null;
options = null;
timeout = null;
prev = null;
active = null;
cache = null;
keyb = null;
hasFocus = null;
lastKeyPressCode = null;
sFirstChar = null;
stMatchSets = null;
row = null;
options = null;
i = null;
rows = null;
sFirstChar = null;
stMatchSets = null;
k = null;
e = null;
v = null;
lis = null;
active = null;
selRange = null;
field = null;
sValue = null;
pos = null;
iWidth = null;
data = null;
parsed = null;
ul = null;
li = null;
num = null;
extra = null;
q = null;
qs = null;
c = null;
csub = null;
x0 = null;
j = null;
r = null;
norm_s = null;
norm_sub = null;
curleft = null;
curtop = null;
jQuery.fn.ajaxSubmit = function (p, d, l) {
    var f = {
        method: false,
        action: false,
        loading: "Loading..."
    };
    f = $.extend(f, d);
    var h = (typeof(p) === "string") ?
    function (u) {
        $(p).html(u)
    } : (typeof(p) === "function") ? p : false;
    return this.each(function () {
        var x = $(this);
        if (x.is("form")) {
            var z = f.method || x.attr("method");
            var w = f.action || x.attr("action");
            var u = $('input[type="submit"]', x);
            var y = {};
            x.submit(function () {
                if (typeof(l) === "function") {
                    if (!l()) {
                        return false
                    }
                }
                try {
                    $(p).css("dislplay", "block");
                    $("#loading").show()
                } catch(A) {}
                $("*[name]", x).each(function () {
                    var B = $(this);
                    var C = (B.attr("type") == "checkbox") ? (B.attr("checked") == true) ? 1 : 0 : B.val();
                    y[B.attr("name")] = C
                });
                u.val(f.loading);
                $[z](w, y, function (B) {
                    h(B)
                });
                return false
            })
        }
    })
};
config = null;
callback = null;
form = null;
method = null;
action = null;
submit = null;
data = null;
validate = null;
(function (l) {
    l.each(["backgroundColor", "borderBottomColor", "borderLeftColor", "borderRightColor", "borderTopColor", "color", "outlineColor"], function (u, p) {
        l.fx.step[p] = function (w) {
            if (w.state == 0) {
                w.start = h(w.elem, p);
                w.end = d(w.end)
            }
            w.elem.style[p] = "rgb(" + [Math.max(Math.min(parseInt((w.pos * (w.end[0] - w.start[0])) + w.start[0]), 255), 0), Math.max(Math.min(parseInt((w.pos * (w.end[1] - w.start[1])) + w.start[1]), 255), 0), Math.max(Math.min(parseInt((w.pos * (w.end[2] - w.start[2])) + w.start[2]), 255), 0)].join(",") + ")"
        }
    });

    function d(p) {
        var u;
        if (p && p.constructor == Array && p.length == 3) {
            return p
        }
        if (u = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(p)) {
            return [parseInt(u[1]), parseInt(u[2]), parseInt(u[3])]
        }
        if (u = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(p)) {
            return [parseFloat(u[1]) * 2.55, parseFloat(u[2]) * 2.55, parseFloat(u[3]) * 2.55]
        }
        if (u = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(p)) {
            return [parseInt(u[1], 16), parseInt(u[2], 16), parseInt(u[3], 16)]
        }
        if (u = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(p)) {
            return [parseInt(u[1] + u[1], 16), parseInt(u[2] + u[2], 16), parseInt(u[3] + u[3], 16)]
        }
        return f[l.trim(p).toLowerCase()]
    }
    function h(w, p) {
        var u;
        do {
            u = l.curCSS(w, p);
            if (u != "" && u != "transparent" || l.nodeName(w, "body")) {
                break
            }
            p = "backgroundColor"
        } while (w = w.parentNode);
        return d(u)
    }
    var f = {
        aqua: [0, 255, 255],
        azure: [240, 255, 255],
        beige: [245, 245, 220],
        black: [0, 0, 0],
        blue: [0, 0, 255],
        brown: [165, 42, 42],
        cyan: [0, 255, 255],
        darkblue: [0, 0, 139],
        darkcyan: [0, 139, 139],
        darkgrey: [169, 169, 169],
        darkgreen: [0, 100, 0],
        darkkhaki: [189, 183, 107],
        darkmagenta: [139, 0, 139],
        darkolivegreen: [85, 107, 47],
        darkorange: [255, 140, 0],
        darkorchid: [153, 50, 204],
        darkred: [139, 0, 0],
        darksalmon: [233, 150, 122],
        darkviolet: [148, 0, 211],
        fuchsia: [255, 0, 255],
        gold: [255, 215, 0],
        green: [0, 128, 0],
        indigo: [75, 0, 130],
        khaki: [240, 230, 140],
        lightblue: [173, 216, 230],
        lightcyan: [224, 255, 255],
        lightgreen: [144, 238, 144],
        lightgrey: [211, 211, 211],
        lightpink: [255, 182, 193],
        lightyellow: [255, 255, 224],
        lime: [0, 255, 0],
        magenta: [255, 0, 255],
        maroon: [128, 0, 0],
        navy: [0, 0, 128],
        olive: [128, 128, 0],
        orange: [255, 165, 0],
        pink: [255, 192, 203],
        purple: [128, 0, 128],
        violet: [128, 0, 128],
        red: [255, 0, 0],
        silver: [192, 192, 192],
        white: [255, 255, 255],
        yellow: [255, 255, 0]
    }
})(jQuery);
fx = null;
color = null;
result = null;
elem = null;
jQuery.fn.numeric = function (d, f) {
    d = d || ".";
    f = typeof f == "function" ? f : function () {};
    this.keypress(function (p) {
        var h = p.charCode ? p.charCode : p.keyCode ? p.keyCode : 0;
        if (h == 13 && this.nodeName.toLowerCase() == "input") {
            return true
        } else {
            if (h == 13) {
                return false
            }
        }
        var l = false;
        if ((p.ctrlKey && h == 97) || (p.ctrlKey && h == 65)) {
            return true
        }
        if ((p.ctrlKey && h == 120) || (p.ctrlKey && h == 88)) {
            return true
        }
        if ((p.ctrlKey && h == 99) || (p.ctrlKey && h == 67)) {
            return true
        }
        if ((p.ctrlKey && h == 122) || (p.ctrlKey && h == 90)) {
            return true
        }
        if ((p.ctrlKey && h == 118) || (p.ctrlKey && h == 86) || (p.shiftKey && h == 45)) {
            return true
        }
        if (h < 48 || h > 57) {
            if (h == 45 && this.value.length == 0) {
                return true
            }
            if (h == d.charCodeAt(0) && this.value.indexOf(d) != -1) {
                l = false
            }
            if (h != 8 && h != 9 && h != 13 && h != 35 && h != 36 && h != 37 && h != 39 && h != 46) {
                l = false
            } else {
                if (typeof p.charCode != "undefined") {
                    if (p.keyCode == p.which && p.which != 0) {
                        l = true
                    } else {
                        if (p.keyCode != 0 && p.charCode == 0 && p.which == 0) {
                            l = true
                        }
                    }
                }
            }
            if (h == d.charCodeAt(0) && this.value.indexOf(d) == -1) {
                l = true
            }
        } else {
            l = true
        }
        return l
    }).blur(function () {
        var l = jQuery(this).val();
        if (l != "") {
            var h = new RegExp("^\\d+$|\\d*" + d + "\\d+");
            if (!h.exec(l)) {
                f.apply(this)
            }
        }
    });
    return this
};
decimal = null;
callback = null;
key = null;
allow = null;
val = null;
re = null;
(function (d) {
    d.extend(d.fn, {
        validate: function (h) {
            if (!this.length) {
                h && h.debug && window.console && console.warn("nothing selected, can't validate, returning nothing");
                return
            }
            var f = d.data(this[0], "validator");
            if (f) {
                return f
            }
            f = new d.validator(h, this[0]);
            d.data(this[0], "validator", f);
            if (f.settings.onsubmit) {
                this.find("input, button").filter(".cancel").click(function () {
                    f.cancelSubmit = true
                });
                if (f.settings.submitHandler) {
                    this.find("input, button").filter(":submit").click(function () {
                        f.submitButton = this
                    })
                }
                this.submit(function (p) {
                    if (f.settings.debug) {
                        p.preventDefault()
                    }
                    function l() {
                        if (f.settings.submitHandler) {
                            if (f.submitButton) {
                                var u = d("<input type='hidden'/>").attr("name", f.submitButton.name).val(f.submitButton.value).appendTo(f.currentForm)
                            }
                            f.settings.submitHandler.call(f, f.currentForm);
                            if (f.submitButton) {
                                u.remove()
                            }
                            return false
                        }
                        return true
                    }
                    if (f.cancelSubmit) {
                        f.cancelSubmit = false;
                        return l()
                    }
                    if (f.form()) {
                        if (f.pendingRequest) {
                            f.formSubmitted = true;
                            return false
                        }
                        return l()
                    } else {
                        f.focusInvalid();
                        return false
                    }
                })
            }
            return f
        },
        valid: function () {
            if (d(this[0]).is("form")) {
                return this.validate().form()
            } else {
                var h = true;
                var f = d(this[0].form).validate();
                this.each(function () {
                    h &= f.element(this)
                });
                return h
            }
        },
        removeAttrs: function (h) {
            var l = {},
                f = this;
            d.each(h.split(/\s/), function (p, u) {
                l[u] = f.attr(u);
                f.removeAttr(u)
            });
            return l
        },
        rules: function (u, x) {
            var l = this[0];
            if (u) {
                var p = d.data(l.form, "validator").settings;
                var z = p.rules;
                var y = d.validator.staticRules(l);
                switch (u) {
                case "add":
                    d.extend(y, d.validator.normalizeRule(x));
                    z[l.name] = y;
                    if (x.messages) {
                        p.messages[l.name] = d.extend(p.messages[l.name], x.messages)
                    }
                    break;
                case "remove":
                    if (!x) {
                        delete z[l.name];
                        return y
                    }
                    var f = {};
                    d.each(x.split(/\s/), function (A, B) {
                        f[B] = y[B];
                        delete y[B]
                    });
                    return f
                }
            }
            var w = d.validator.normalizeRules(d.extend({}, d.validator.metadataRules(l), d.validator.classRules(l), d.validator.attributeRules(l), d.validator.staticRules(l)), l);
            if (w.required) {
                var h = w.required;
                delete w.required;
                w = d.extend({
                    required: h
                }, w)
            }
            return w
        }
    });
    d.extend(d.expr[":"], {
        blank: function (f) {
            return !d.trim(f.value)
        },
        filled: function (f) {
            return !!d.trim(f.value)
        },
        unchecked: function (f) {
            return !f.checked
        }
    });
    d.validator = function (f, h) {
        this.settings = d.extend({}, d.validator.defaults, f);
        this.currentForm = h;
        this.init()
    };
    d.validator.format = function (f, h) {
        if (arguments.length == 1) {
            return function () {
                var l = d.makeArray(arguments);
                l.unshift(f);
                return d.validator.format.apply(this, l)
            }
        }
        if (arguments.length > 2 && h.constructor != Array) {
            h = d.makeArray(arguments).slice(1)
        }
        if (h.constructor != Array) {
            h = [h]
        }
        d.each(h, function (l, p) {
            f = f.replace(new RegExp("\\{" + l + "\\}", "g"), p)
        });
        return f
    };
    d.extend(d.validator, {
        defaults: {
            messages: {},
            groups: {},
            rules: {},
            errorClass: "error",
            validClass: "valid",
            errorElement: "label",
            focusInvalid: true,
            errorContainer: d([]),
            errorLabelContainer: d([]),
            onsubmit: true,
            ignore: [],
            ignoreTitle: false,
            onfocusin: function (f) {
                this.lastActive = f;
                if (this.settings.focusCleanup && !this.blockFocusCleanup) {
                    this.settings.unhighlight && this.settings.unhighlight.call(this, f, this.settings.errorClass, this.settings.validClass);
                    this.errorsFor(f).hide()
                }
            },
            onfocusout: function (f) {
                if (!this.checkable(f) && (f.name in this.submitted || !this.optional(f))) {
                    this.element(f)
                }
            },
            onkeyup: function (f) {
                if (f.name in this.submitted || f == this.lastElement) {
                    this.element(f)
                }
            },
            onclick: function (f) {
                if (f.name in this.submitted) {
                    this.element(f)
                }
            },
            highlight: function (h, f, l) {
                d(h).addClass(f).removeClass(l)
            },
            unhighlight: function (h, f, l) {
                d(h).removeClass(f).addClass(l)
            }
        },
        setDefaults: function (f) {
            d.extend(d.validator.defaults, f)
        },
        messages: {
            required: "This field is required.",
            remote: "Please fix this field.",
            email: "Please enter a valid email address.",
            url: "Please enter a valid URL.",
            date: "Please enter a valid date.",
            dateISO: "Please enter a valid date (ISO).",
            dateDE: "Bitte geben Sie ein gГјltiges Datum ein.",
            number: "Please enter a valid number.",
            numberDE: "Bitte geben Sie eine Nummer ein.",
            digits: "Please enter only digits",
            creditcard: "Please enter a valid credit card number.",
            equalTo: "Please enter the same value again.",
            accept: "Please enter a value with a valid extension.",
            maxlength: d.validator.format("Please enter no more than {0} characters."),
            minlength: d.validator.format("Please enter at least {0} characters."),
            rangelength: d.validator.format("Please enter a value between {0} and {1} characters long."),
            range: d.validator.format("Please enter a value between {0} and {1}."),
            max: d.validator.format("Please enter a value less than or equal to {0}."),
            min: d.validator.format("Please enter a value greater than or equal to {0}.")
        },
        autoCreateRanges: false,
        prototype: {
            init: function () {
                this.labelContainer = d(this.settings.errorLabelContainer);
                this.errorContext = this.labelContainer.length && this.labelContainer || d(this.currentForm);
                this.containers = d(this.settings.errorContainer).add(this.settings.errorLabelContainer);
                this.submitted = {};
                this.valueCache = {};
                this.pendingRequest = 0;
                this.pending = {};
                this.invalid = {};
                this.reset();
                var h = (this.groups = {});
                d.each(this.settings.groups, function (p, u) {
                    d.each(u.split(/\s/), function (x, w) {
                        h[w] = p
                    })
                });
                var l = this.settings.rules;
                d.each(l, function (p, u) {
                    l[p] = d.validator.normalizeRule(u)
                });

                function f(u) {
                    var p = d.data(this[0].form, "validator");
                    p.settings["on" + u.type] && p.settings["on" + u.type].call(p, this[0])
                }
                d(this.currentForm).delegate("focusin focusout keyup", ":text, :password, :file, select, textarea", f).delegate("click", ":radio, :checkbox", f);
                if (this.settings.invalidHandler) {
                    d(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler)
                }
            },
            form: function () {
                this.checkForm();
                d.extend(this.submitted, this.errorMap);
                this.invalid = d.extend({}, this.errorMap);
                if (!this.valid()) {
                    d(this.currentForm).triggerHandler("invalid-form", [this])
                }
                this.showErrors();
                return this.valid()
            },
            checkForm: function () {
                this.prepareForm();
                for (var h = 0, f = (this.currentElements = this.elements()); f[h]; h++) {
                    this.check(f[h])
                }
                return this.valid()
            },
            element: function (f) {
                f = this.clean(f);
                this.lastElement = f;
                this.prepareElement(f);
                this.currentElements = d(f);
                var h = this.check(f);
                if (h) {
                    delete this.invalid[f.name]
                } else {
                    this.invalid[f.name] = true
                }
                if (!this.numberOfInvalids()) {
                    this.toHide = this.toHide.add(this.containers)
                }
                this.showErrors();
                return h
            },
            showErrors: function (h) {
                if (h) {
                    d.extend(this.errorMap, h);
                    this.errorList = [];
                    for (var f in h) {
                        this.errorList.push({
                            message: h[f],
                            element: this.findByName(f)[0]
                        })
                    }
                    this.successList = d.grep(this.successList, function (l) {
                        return ! (l.name in h)
                    })
                }
                this.settings.showErrors ? this.settings.showErrors.call(this, this.errorMap, this.errorList) : this.defaultShowErrors()
            },
            resetForm: function () {
                if (d.fn.resetForm) {
                    d(this.currentForm).resetForm()
                }
                this.submitted = {};
                this.prepareForm();
                this.hideErrors();
                this.elements().removeClass(this.settings.errorClass)
            },
            numberOfInvalids: function () {
                return this.objectLength(this.invalid)
            },
            objectLength: function (l) {
                var h = 0;
                for (var f in l) {
                    h++
                }
                return h
            },
            hideErrors: function () {
                this.addWrapper(this.toHide).hide()
            },
            valid: function () {
                return this.size() == 0
            },
            size: function () {
                return this.errorList.length
            },
            focusInvalid: function () {
                if (this.settings.focusInvalid) {
                    try {
                        d(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").focus()
                    } catch(f) {}
                }
            },
            findLastActive: function () {
                var f = this.lastActive;
                return f && d.grep(this.errorList, function (h) {
                    return h.element.name == f.name
                }).length == 1 && f
            },
            elements: function () {
                var h = this,
                    f = {};
                return d([]).add(this.currentForm.elements).filter(":input").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function () { ! this.name && h.settings.debug && window.console && console.error("%o has no name assigned", this);
                    if (this.name in f || !h.objectLength(d(this).rules())) {
                        return false
                    }
                    f[this.name] = true;
                    return true
                })
            },
            clean: function (f) {
                return d(f)[0]
            },
            errors: function () {
                return d(this.settings.errorElement + "." + this.settings.errorClass, this.errorContext)
            },
            reset: function () {
                this.successList = [];
                this.errorList = [];
                this.errorMap = {};
                this.toShow = d([]);
                this.toHide = d([]);
                this.formSubmitted = false;
                this.currentElements = d([])
            },
            prepareForm: function () {
                this.reset();
                this.toHide = this.errors().add(this.containers)
            },
            prepareElement: function (f) {
                this.reset();
                this.toHide = this.errorsFor(f)
            },
            check: function (f) {
                f = this.clean(f);
                if (this.checkable(f)) {
                    f = this.findByName(f.name)[0]
                }
                var w = d(f).rules();
                var h = false;
                for (method in w) {
                    var u = {
                        method: method,
                        parameters: w[method]
                    };
                    try {
                        var l = d.validator.methods[method].call(this, f.value.replace(/\r/g, ""), f, u.parameters);
                        if (l == "dependency-mismatch") {
                            h = true;
                            continue
                        }
                        h = false;
                        if (l == "pending") {
                            this.toHide = this.toHide.not(this.errorsFor(f));
                            return
                        }
                        if (!l) {
                            this.formatAndAdd(f, u);
                            return false
                        }
                    } catch(p) {
                        this.settings.debug && window.console && console.log("exception occured when checking element " + f.id + ", check the '" + u.method + "' method");
                        throw p
                    }
                }
                if (h) {
                    return
                }
                if (this.objectLength(w)) {
                    this.successList.push(f)
                }
                return true
            },
            customMetaMessage: function (f, l) {
                if (!d.metadata) {
                    return
                }
                var h = this.settings.meta ? d(f).metadata()[this.settings.meta] : d(f).metadata();
                return h && h.messages && h.messages[l]
            },
            customMessage: function (h, l) {
                var f = this.settings.messages[h];
                return f && (f.constructor == String ? f : f[l])
            },
            findDefined: function () {
                for (var f = 0; f < arguments.length; f++) {
                    if (arguments[f] !== undefined) {
                        return arguments[f]
                    }
                }
                return undefined
            },
            defaultMessage: function (f, h) {
                return this.findDefined(this.customMessage(f.name, h), this.customMetaMessage(f, h), !this.settings.ignoreTitle && f.title || undefined, d.validator.messages[h], "<strong>Warning: No message defined for " + f.name + "</strong>")
            },
            formatAndAdd: function (f, l) {
                var h = this.defaultMessage(f, l.method);
                if (typeof h == "function") {
                    h = h.call(this, l.parameters, f)
                }
                this.errorList.push({
                    message: h,
                    element: f
                });
                this.errorMap[f.name] = h;
                this.submitted[f.name] = h
            },
            addWrapper: function (f) {
                if (this.settings.wrapper) {
                    f = f.add(f.parent(this.settings.wrapper))
                }
                return f
            },
            defaultShowErrors: function () {
                for (var l = 0; this.errorList[l]; l++) {
                    var h = this.errorList[l];
                    this.settings.highlight && this.settings.highlight.call(this, h.element, this.settings.errorClass, this.settings.validClass);
                    this.showLabel(h.element, h.message)
                }
                if (this.errorList.length) {
                    this.toShow = this.toShow.add(this.containers)
                }
                if (this.settings.success) {
                    for (var l = 0; this.successList[l]; l++) {
                        this.showLabel(this.successList[l])
                    }
                }
                if (this.settings.unhighlight) {
                    for (var l = 0, f = this.validElements(); f[l]; l++) {
                        this.settings.unhighlight.call(this, f[l], this.settings.errorClass, this.settings.validClass)
                    }
                }
                this.toHide = this.toHide.not(this.toShow);
                this.hideErrors();
                this.addWrapper(this.toShow).show()
            },
            validElements: function () {
                return this.currentElements.not(this.invalidElements())
            },
            invalidElements: function () {
                return d(this.errorList).map(function () {
                    return this.element
                })
            },
            showLabel: function (h, l) {
                var f = this.errorsFor(h);
                if (f.length) {
                    f.removeClass().addClass(this.settings.errorClass);
                    f.attr("generated") && f.html(l)
                } else {
                    f = d("<" + this.settings.errorElement + "/>").attr({
                        "for": this.idOrName(h),
                        generated: true
                    }).addClass(this.settings.errorClass).html(l || "");
                    if (this.settings.wrapper) {
                        f = f.hide().show().wrap("<" + this.settings.wrapper + "/>").parent()
                    }
                    if (!this.labelContainer.append(f).length) {
                        this.settings.errorPlacement ? this.settings.errorPlacement(f, d(h)) : f.insertAfter(h)
                    }
                }
                if (!l && this.settings.success) {
                    f.text("");
                    typeof this.settings.success == "string" ? f.addClass(this.settings.success) : this.settings.success(f)
                }
                this.toShow = this.toShow.add(f)
            },
            errorsFor: function (f) {
                return this.errors().filter("[for='" + this.idOrName(f) + "']")
            },
            idOrName: function (f) {
                return this.groups[f.name] || (this.checkable(f) ? f.name : f.id || f.name)
            },
            checkable: function (f) {
                return /radio|checkbox/i.test(f.type)
            },
            findByName: function (f) {
                var h = this.currentForm;
                return d(document.getElementsByName(f)).map(function (p, l) {
                    return l.form == h && l.name == f && l || null
                })
            },
            getLength: function (h, f) {
                switch (f.nodeName.toLowerCase()) {
                case "select":
                    return d("option:selected", f).length;
                case "input":
                    if (this.checkable(f)) {
                        return this.findByName(f.name).filter(":checked").length
                    }
                }
                return h.length
            },
            depend: function (h, f) {
                return this.dependTypes[typeof h] ? this.dependTypes[typeof h](h, f) : true
            },
            dependTypes: {
                "boolean": function (h, f) {
                    return h
                },
                string: function (h, f) {
                    return !!d(h, f.form).length
                },
                "function": function (h, f) {
                    return h(f)
                }
            },
            optional: function (f) {
                return !d.validator.methods.required.call(this, d.trim(f.value), f) && "dependency-mismatch"
            },
            startRequest: function (f) {
                if (!this.pending[f.name]) {
                    this.pendingRequest++;
                    this.pending[f.name] = true
                }
            },
            stopRequest: function (f, h) {
                this.pendingRequest--;
                if (this.pendingRequest < 0) {
                    this.pendingRequest = 0
                }
                delete this.pending[f.name];
                if (h && this.pendingRequest == 0 && this.formSubmitted && this.form()) {
                    d(this.currentForm).submit()
                } else {
                    if (!h && this.pendingRequest == 0 && this.formSubmitted) {
                        d(this.currentForm).triggerHandler("invalid-form", [this])
                    }
                }
            },
            previousValue: function (f) {
                return d.data(f, "previousValue") || d.data(f, "previousValue", previous = {
                    old: null,
                    valid: true,
                    message: this.defaultMessage(f, "remote")
                })
            }
        },
        classRuleSettings: {
            required: {
                required: true
            },
            email: {
                email: true
            },
            url: {
                url: true
            },
            date: {
                date: true
            },
            dateISO: {
                dateISO: true
            },
            dateDE: {
                dateDE: true
            },
            number: {
                number: true
            },
            numberDE: {
                numberDE: true
            },
            digits: {
                digits: true
            },
            creditcard: {
                creditcard: true
            }
        },
        addClassRules: function (f, h) {
            f.constructor == String ? this.classRuleSettings[f] = h : d.extend(this.classRuleSettings, f)
        },
        classRules: function (f) {
            var l = {};
            var h = d(f).attr("class");
            h && d.each(h.split(" "), function () {
                if (this in d.validator.classRuleSettings) {
                    d.extend(l, d.validator.classRuleSettings[this])
                }
            });
            return l
        },
        attributeRules: function (h) {
            var p = {};
            var f = d(h);
            for (method in d.validator.methods) {
                var l = f.attr(method);
                if (l) {
                    p[method] = l
                }
            }
            if (p.maxlength && /-1|2147483647|524288/.test(p.maxlength)) {
                delete p.maxlength
            }
            return p
        },
        metadataRules: function (f) {
            if (!d.metadata) {
                return {}
            }
            var h = d.data(f.form, "validator").settings.meta;
            return h ? d(f).metadata()[h] : d(f).metadata()
        },
        staticRules: function (h) {
            var l = {};
            var f = d.data(h.form, "validator");
            if (f.settings.rules) {
                l = d.validator.normalizeRule(f.settings.rules[h.name]) || {}
            }
            return l
        },
        normalizeRules: function (h, f) {
            d.each(h, function (u, l) {
                if (l === false) {
                    delete h[u];
                    return
                }
                if (l.param || l.depends) {
                    var p = true;
                    switch (typeof l.depends) {
                    case "string":
                        p = !!d(l.depends, f.form).length;
                        break;
                    case "function":
                        p = l.depends.call(f, f);
                        break
                    }
                    if (p) {
                        h[u] = l.param !== undefined ? l.param : true
                    } else {
                        delete h[u]
                    }
                }
            });
            d.each(h, function (l, p) {
                h[l] = d.isFunction(p) ? p(f) : p
            });
            d.each(["minlength", "maxlength", "min", "max"], function () {
                if (h[this]) {
                    h[this] = Number(h[this])
                }
            });
            d.each(["rangelength", "range"], function () {
                if (h[this]) {
                    h[this] = [Number(h[this][0]), Number(h[this][1])]
                }
            });
            if (d.validator.autoCreateRanges) {
                if (h.min && h.max) {
                    h.range = [h.min, h.max];
                    delete h.min;
                    delete h.max
                }
                if (h.minlength && h.maxlength) {
                    h.rangelength = [h.minlength, h.maxlength];
                    delete h.minlength;
                    delete h.maxlength
                }
            }
            if (h.messages) {
                delete h.messages
            }
            return h
        },
        normalizeRule: function (h) {
            if (typeof h == "string") {
                var f = {};
                d.each(h.split(/\s/), function () {
                    f[this] = true
                });
                h = f
            }
            return h
        },
        addMethod: function (f, l, h) {
            d.validator.methods[f] = l;
            d.validator.messages[f] = h || d.validator.messages[f];
            if (l.length < 3) {
                d.validator.addClassRules(f, d.validator.normalizeRule(f))
            }
        },
        methods: {
            required: function (l, f, p) {
                if (!this.depend(p, f)) {
                    return "dependency-mismatch"
                }
                switch (f.nodeName.toLowerCase()) {
                case "select":
                    var h = d("option:selected", f);
                    return h.length > 0 && (f.type == "select-multiple" || (d.browser.msie && !(h[0].attributes.value.specified) ? h[0].text : h[0].value).length > 0);
                case "input":
                    if (this.checkable(f)) {
                        return this.getLength(l, f) > 0
                    }
                default:
                    return d.trim(l).length > 0
                }
            },
            remote: function (u, l, w) {
                if (this.optional(l)) {
                    return "dependency-mismatch"
                }
                var f = this.previousValue(l);
                if (!this.settings.messages[l.name]) {
                    this.settings.messages[l.name] = {}
                }
                this.settings.messages[l.name].remote = typeof f.message == "function" ? f.message(u) : f.message;
                w = typeof w == "string" && {
                    url: w
                } || w;
                if (f.old !== u) {
                    f.old = u;
                    var h = this;
                    this.startRequest(l);
                    var p = {};
                    p[l.name] = u;
                    d.ajax(d.extend(true, {
                        url: w,
                        mode: "abort",
                        port: "validate" + l.name,
                        dataType: "json",
                        data: p,
                        success: function (y) {
                            var z = y === true;
                            if (z) {
                                var x = h.formSubmitted;
                                h.prepareElement(l);
                                h.formSubmitted = x;
                                h.successList.push(l);
                                h.showErrors()
                            } else {
                                var A = {};
                                A[l.name] = f.message = y || h.defaultMessage(l, "remote");
                                h.showErrors(A)
                            }
                            f.valid = z;
                            h.stopRequest(l, z)
                        }
                    }, w));
                    return "pending"
                } else {
                    if (this.pending[l.name]) {
                        return "pending"
                    }
                }
                return f.valid
            },
            minlength: function (h, f, l) {
                return this.optional(f) || this.getLength(d.trim(h), f) >= l
            },
            maxlength: function (h, f, l) {
                return this.optional(f) || this.getLength(d.trim(h), f) <= l
            },
            rangelength: function (l, h, p) {
                var f = this.getLength(d.trim(l), h);
                return this.optional(h) || (f >= p[0] && f <= p[1])
            },
            min: function (h, f, l) {
                return this.optional(f) || h >= l
            },
            max: function (h, f, l) {
                return this.optional(f) || h <= l
            },
            range: function (h, f, l) {
                return this.optional(f) || (h >= l[0] && h <= l[1])
            },
            email: function (h, f) {
                return this.optional(f) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(h)
            },
            url: function (h, f) {
                return this.optional(f) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(h)
            },
            date: function (h, f) {
                return this.optional(f) || !/Invalid|NaN/.test(new Date(h))
            },
            dateISO: function (h, f) {
                return this.optional(f) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(h)
            },
            dateDE: function (h, f) {
                return this.optional(f) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(h)
            },
            number: function (h, f) {
                return this.optional(f) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(h)
            },
            numberDE: function (h, f) {
                return this.optional(f) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(h)
            },
            digits: function (h, f) {
                return this.optional(f) || /^\d+$/.test(h)
            },
            creditcard: function (u, p) {
                if (this.optional(p)) {
                    return "dependency-mismatch"
                }
                if (/[^0-9-]+/.test(u)) {
                    return false
                }
                var w = 0,
                    l = 0,
                    h = false;
                u = u.replace(/\D/g, "");
                for (n = u.length - 1; n >= 0; n--) {
                    var f = u.charAt(n);
                    var l = parseInt(f, 10);
                    if (h) {
                        if ((l *= 2) > 9) {
                            l -= 9
                        }
                    }
                    w += l;
                    h = !h
                }
                return (w % 10) == 0
            },
            accept: function (h, f, l) {
                l = typeof l == "string" ? l.replace(/,/g, "|") : "png|jpe?g|gif";
                return this.optional(f) || h.match(new RegExp(".(" + l + ")$", "i"))
            },
            equalTo: function (h, f, l) {
                return h == d(l).val()
            }
        }
    });
    d.format = d.validator.format
})(jQuery);
(function (h) {
    var f = h.ajax;
    var d = {};
    h.ajax = function (p) {
        p = h.extend(p, h.extend({}, h.ajaxSettings, p));
        var l = p.port;
        if (p.mode == "abort") {
            if (d[l]) {
                d[l].abort()
            }
            return (d[l] = f.apply(this, arguments))
        }
        return f.apply(this, arguments)
    }
})(jQuery);
(function (d) {
    d.each({
        focus: "focusin",
        blur: "focusout"
    }, function (h, f) {
        d.event.special[f] = {
            setup: function () {
                if (d.browser.msie) {
                    return false
                }
                this.addEventListener(h, d.event.special[f].handler, true)
            },
            teardown: function () {
                if (d.browser.msie) {
                    return false
                }
                this.removeEventListener(h, d.event.special[f].handler, true)
            },
            handler: function (l) {
                arguments[0] = d.event.fix(l);
                arguments[0].type = f;
                return d.event.handle.apply(this, arguments)
            }
        }
    });
    d.extend(d.fn, {
        delegate: function (l, h, f) {
            return this.bind(l, function (p) {
                var u = d(p.target);
                if (u.is(h)) {
                    return f.apply(u, arguments)
                }
            })
        },
        triggerEvent: function (f, h) {
            return this.triggerHandler(f, [d.event.fix({
                type: f,
                target: h
            })])
        }
    })
})(jQuery);
(function (f) {
    f.fn.ajaxSubmit = function (x) {
        if (!this.length) {
            d("ajaxSubmit: skipping submit process - no element selected");
            return this
        }
        if (typeof x == "function") {
            x = {
                success: x
            }
        }
        x = f.extend({
            url: this.attr("action") || window.location.toString(),
            type: this.attr("method") || "GET"
        }, x || {});
        var C = {};
        this.trigger("form-pre-serialize", [this, x, C]);
        if (C.veto) {
            d("ajaxSubmit: submit vetoed via form-pre-serialize trigger");
            return this
        }
        var y = this.formToArray(x.semantic);
        if (x.data) {
            x.extraData = x.data;
            for (var u in x.data) {
                y.push({
                    name: u,
                    value: x.data[u]
                })
            }
        }
        if (x.beforeSubmit && x.beforeSubmit(y, this, x) === false) {
            d("ajaxSubmit: submit aborted via beforeSubmit callback");
            return this
        }
        this.trigger("form-submit-validate", [y, this, x, C]);
        if (C.veto) {
            d("ajaxSubmit: submit vetoed via form-submit-validate trigger");
            return this
        }
        var l = f.param(y);
        if (x.type.toUpperCase() == "GET") {
            x.url += (x.url.indexOf("?") >= 0 ? "&" : "?") + l;
            x.data = null
        } else {
            x.data = l
        }
        var D = this,
            p = [];
        if (x.resetForm) {
            p.push(function () {
                D.resetForm()
            })
        }
        if (x.clearForm) {
            p.push(function () {
                D.clearForm()
            })
        }
        if (!x.dataType && x.target) {
            var A = x.success ||
            function () {};
            p.push(function (E) {
                f(x.target).html(E).each(A, arguments)
            })
        } else {
            if (x.success) {
                p.push(x.success)
            }
        }
        x.success = function (H, G) {
            for (var F = 0, E = p.length; F < E; F++) {
                p[F](H, G, D)
            }
        };
        var h = f("input:file", this).fieldValue();
        var B = false;
        for (var w = 0; w < h.length; w++) {
            if (h[w]) {
                B = true
            }
        }
        if (x.iframe || B) {
            if (f.browser.safari && x.closeKeepAlive) {
                f.get(x.closeKeepAlive, z)
            } else {
                z()
            }
        } else {
            f.ajax(x)
        }
        this.trigger("form-submit-notify", [this, x]);
        return this;

        function z() {
            var F = D[0];
            if (f(":input[@name=submit]", F).length) {
                alert('Error: Form elements must not be named "submit".');
                return
            }
            var E = f.extend({}, f.ajaxSettings, x);
            var G = "jqFormIO" + (new Date().getTime());
            var K = f('<iframe id="' + G + '" name="' + G + '" />');
            var M = K[0];
            if (f.browser.msie || f.browser.opera) {
                M.src = 'javascript:false;document.write("");'
            }
            K.css({
                position: "absolute",
                top: "-1000px",
                left: "-1000px"
            });
            var O = {
                responseText: null,
                responseXML: null,
                status: 0,
                statusText: "n/a",
                getAllResponseHeaders: function () {},
                getResponseHeader: function () {},
                setRequestHeader: function () {}
            };
            var L = E.global;
            if (L && !f.active++) {
                f.event.trigger("ajaxStart")
            }
            if (L) {
                f.event.trigger("ajaxSend", [O, E])
            }
            var N = 0;
            var J = 0;
            setTimeout(function () {
                var R = D.attr("target"),
                    P = D.attr("action");
                D.attr({
                    target: G,
                    encoding: "multipart/form-data",
                    enctype: "multipart/form-data",
                    method: "POST",
                    action: E.url
                });
                if (E.timeout) {
                    setTimeout(function () {
                        J = true;
                        H()
                    }, E.timeout)
                }
                var Q = [];
                try {
                    if (x.extraData) {
                        for (var S in x.extraData) {
                            Q.push(f('<input type="hidden" name="' + S + '" value="' + x.extraData[S] + '" />').appendTo(F)[0])
                        }
                    }
                    K.appendTo("body");
                    M.attachEvent ? M.attachEvent("onload", H) : M.addEventListener("load", H, false);
                    F.submit()
                } finally {
                    D.attr("action", P);
                    R ? D.attr("target", R) : D.removeAttr("target");
                    f(Q).remove()
                }
            }, 10);

            function H() {
                if (N++) {
                    return
                }
                M.detachEvent ? M.detachEvent("onload", H) : M.removeEventListener("load", H, false);
                var Q = 0;
                var R = true;
                try {
                    if (J) {
                        throw "timeout"
                    }
                    var S, U;
                    U = M.contentWindow ? M.contentWindow.document : M.contentDocument ? M.contentDocument : M.document;
                    if (U.body == null && !Q && f.browser.opera) {
                        Q = 1;
                        N--;
                        setTimeout(H, 100);
                        return
                    }
                    O.responseText = U.body ? U.body.innerHTML : null;
                    O.responseXML = U.XMLDocument ? U.XMLDocument : U;
                    O.getResponseHeader = function (V) {
                        var W = {
                            "content-type": E.dataType
                        };
                        return W[V]
                    };
                    if (E.dataType == "json" || E.dataType == "script") {
                        var P = U.getElementsByTagName("textarea")[0];
                        O.responseText = P ? P.value : O.responseText
                    } else {
                        if (E.dataType == "xml" && !O.responseXML && O.responseText != null) {
                            O.responseXML = I(O.responseText)
                        }
                    }
                    S = f.httpData(O, E.dataType)
                } catch(T) {
                    R = false;
                    f.handleError(E, O, "error", T)
                }
                if (R) {
                    E.success(S, "success");
                    if (L) {
                        f.event.trigger("ajaxSuccess", [O, E])
                    }
                }
                if (L) {
                    f.event.trigger("ajaxComplete", [O, E])
                }
                if (L && !--f.active) {
                    f.event.trigger("ajaxStop")
                }
                if (E.complete) {
                    E.complete(O, R ? "success" : "error")
                }
                setTimeout(function () {
                    K.remove();
                    O.responseXML = null
                }, 100)
            }
            function I(P, Q) {
                if (window.ActiveXObject) {
                    Q = new ActiveXObject("Microsoft.XMLDOM");
                    Q.async = "false";
                    Q.loadXML(P)
                } else {
                    Q = (new DOMParser()).parseFromString(P, "text/xml")
                }
                return (Q && Q.documentElement && Q.documentElement.tagName != "parsererror") ? Q : null
            }
        }
    };
    f.fn.ajaxForm = function (h) {
        return this.ajaxFormUnbind().bind("submit.form-plugin", function () {
            f(this).ajaxSubmit(h);
            return false
        }).each(function () {
            f(":submit,input:image", this).bind("click.form-plugin", function (p) {
                var l = this.form;
                l.clk = this;
                if (this.type == "image") {
                    if (p.offsetX != undefined) {
                        l.clk_x = p.offsetX;
                        l.clk_y = p.offsetY
                    } else {
                        if (typeof f.fn.offset == "function") {
                            var u = f(this).offset();
                            l.clk_x = p.pageX - u.left;
                            l.clk_y = p.pageY - u.top
                        } else {
                            l.clk_x = p.pageX - this.offsetLeft;
                            l.clk_y = p.pageY - this.offsetTop
                        }
                    }
                }
                setTimeout(function () {
                    l.clk = l.clk_x = l.clk_y = null
                }, 10)
            })
        })
    };
    f.fn.ajaxFormUnbind = function () {
        this.unbind("submit.form-plugin");
        return this.each(function () {
            f(":submit,input:image", this).unbind("click.form-plugin")
        })
    };
    f.fn.formToArray = function (D) {
        var C = [];
        if (this.length == 0) {
            return C
        }
        var l = this[0];
        var y = D ? l.getElementsByTagName("*") : l.elements;
        if (!y) {
            return C
        }
        for (var z = 0, A = y.length; z < A; z++) {
            var p = y[z];
            var w = p.name;
            if (!w) {
                continue
            }
            if (D && l.clk && p.type == "image") {
                if (!p.disabled && l.clk == p) {
                    C.push({
                        name: w + ".x",
                        value: l.clk_x
                    }, {
                        name: w + ".y",
                        value: l.clk_y
                    })
                }
                continue
            }
            var E = f.fieldValue(p, true);
            if (E && E.constructor == Array) {
                for (var x = 0, h = E.length; x < h; x++) {
                    C.push({
                        name: w,
                        value: E[x]
                    })
                }
            } else {
                if (E !== null && typeof E != "undefined") {
                    C.push({
                        name: w,
                        value: E
                    })
                }
            }
        }
        if (!D && l.clk) {
            var u = l.getElementsByTagName("input");
            for (var z = 0, A = u.length; z < A; z++) {
                var B = u[z];
                var w = B.name;
                if (w && !B.disabled && B.type == "image" && l.clk == B) {
                    C.push({
                        name: w + ".x",
                        value: l.clk_x
                    }, {
                        name: w + ".y",
                        value: l.clk_y
                    })
                }
            }
        }
        return C
    };
    f.fn.formSerialize = function (h) {
        return f.param(this.formToArray(h))
    };
    f.fn.fieldSerialize = function (l) {
        var h = [];
        this.each(function () {
            var x = this.name;
            if (!x) {
                return
            }
            var u = f.fieldValue(this, l);
            if (u && u.constructor == Array) {
                for (var w = 0, p = u.length; w < p; w++) {
                    h.push({
                        name: x,
                        value: u[w]
                    })
                }
            } else {
                if (u !== null && typeof u != "undefined") {
                    h.push({
                        name: this.name,
                        value: u
                    })
                }
            }
        });
        return f.param(h)
    };
    f.fn.fieldValue = function (w) {
        for (var x = [], p = 0, h = this.length; p < h; p++) {
            var u = this[p];
            var l = f.fieldValue(u, w);
            if (l === null || typeof l == "undefined" || (l.constructor == Array && !l.length)) {
                continue
            }
            l.constructor == Array ? f.merge(x, l) : x.push(l)
        }
        return x
    };
    f.fieldValue = function (l, p) {
        var u = l.name,
            D = l.type,
            E = l.tagName.toLowerCase();
        if (typeof p == "undefined") {
            p = true
        }
        if (p && (!u || l.disabled || D == "reset" || D == "button" || (D == "checkbox" || D == "radio") && !l.checked || (D == "submit" || D == "image") && l.form && l.form.clk != l || E == "select" && l.selectedIndex == -1)) {
            return null
        }
        if (E == "select") {
            var z = l.selectedIndex;
            if (z < 0) {
                return null
            }
            var B = [],
                h = l.options;
            var x = (D == "select-one");
            var A = (x ? z + 1 : h.length);
            for (var w = (x ? z : 0); w < A; w++) {
                var y = h[w];
                if (y.selected) {
                    var C = f.browser.msie && !(y.attributes.value.specified) ? y.text : y.value;
                    if (x) {
                        return C
                    }
                    B.push(C)
                }
            }
            return B
        }
        return l.value
    };
    f.fn.clearForm = function () {
        return this.each(function () {
            f("input,select,textarea", this).clearFields()
        })
    };
    f.fn.clearFields = f.fn.clearInputs = function () {
        return this.each(function () {
            var l = this.type,
                h = this.tagName.toLowerCase();
            if (l == "text" || l == "password" || h == "textarea") {
                this.value = ""
            } else {
                if (l == "checkbox" || l == "radio") {
                    this.checked = false
                } else {
                    if (h == "select") {
                        this.selectedIndex = -1
                    }
                }
            }
        })
    };
    f.fn.resetForm = function () {
        return this.each(function () {
            if (typeof this.reset == "function" || (typeof this.reset == "object" && !this.reset.nodeType)) {
                this.reset()
            }
        })
    };
    f.fn.enable = function (h) {
        if (h == undefined) {
            h = true
        }
        return this.each(function () {
            this.disabled = !h
        })
    };
    f.fn.select = function (h) {
        if (h == undefined) {
            h = true
        }
        return this.each(function () {
            var l = this.type;
            if (l == "checkbox" || l == "radio") {
                this.checked = h
            } else {
                if (this.tagName.toLowerCase() == "option") {
                    var p = f(this).parent("select");
                    if (h && p[0] && p[0].type == "select-one") {
                        p.find("option").select(false)
                    }
                    this.selected = h
                }
            }
        })
    };

    function d() {
        if (f.fn.ajaxSubmit.debug && window.console && window.console.log) {
            window.console.log("[jquery.form] " + Array.prototype.join.call(arguments, ""))
        }
    }
})(jQuery);
options = null;
veto = null;
a = null;
n = null;
q = null;
i = null;
files = null;
found = null;
j = null;
form = null;
opts = null;
id = null;
io = null;
xhr = null;
g = null;
timedOut = null;
cbInvoked = null;
t = null;
extraInputs = null;
operaHack = null;
ok = null;
data = null;
doc = null;
els = null;
n = null;
el = null;
v = null;
t = null;
tag = null;
index = null;
ops = null;
one = null;
max = null;
op = null;
b = null;
select = null;
(function (l) {
    l.fn.jCarouselLite = function (p) {
        p = l.extend({
            btnPrev: null,
            btnNext: null,
            btnGo: null,
            mouseWheel: false,
            auto: null,
            speed: 200,
            easing: null,
            vertical: false,
            circular: true,
            visible: 3,
            start: 0,
            scroll: 1,
            beforeStart: null,
            afterEnd: null
        }, p || {});
        return this.each(function () {
            var D = false,
                B = p.vertical ? "top" : "left",
            u = p.vertical ? "height" : "width";
            var w = l(this),
                F = l("ul", w),
                y = l("li", F),
                J = y.size(),
                H = p.visible;
            if (p.circular) {
                F.prepend(y.slice(J - H - 1 + 1).clone()).append(y.slice(0, H).clone());
                p.start += H
            }
            var G = l("li", F),
                E = G.size(),
                K = p.start;
            w.css("visibility", "visible");
            G.css("overflow", "hidden");
            G.css("float", "left");
            F.css({
                margin: "0",
                padding: "0",
                position: "relative",
                "list-style-type": "none",
                "z-index": "1"
            });
            w.css({
                overflow: "hidden",
                position: "relative",
                "z-index": "2",
                left: "0px"
            });
            var A = p.vertical ? h(G) : f(G);
            var I = (A + 3) * E;
            var C = A * H;
            G.css({
                width: G.width(),
                height: G.height()
            });
            F.css(u, I + "px").css(B, -(K * A));
            w.css(u, C + "px");
            if (p.btnPrev) {
                l(p.btnPrev).click(function () {
                    return z(K - p.scroll)
                })
            }
            if (p.btnNext) {
                l(p.btnNext).click(function () {
                    return z(K + p.scroll)
                })
            }
            if (p.btnGo) {
                l.each(p.btnGo, function (L, M) {
                    l(M).click(function () {
                        return z(p.circular ? p.visible + L : L)
                    })
                })
            }
            if (p.mouseWheel && w.mousewheel) {
                w.mousewheel(function (L, M) {
                    return M > 0 ? z(K - p.scroll) : z(K + p.scroll)
                })
            }
            if (p.auto) {
                setInterval(function () {
                    z(K + p.scroll)
                }, p.auto + p.speed)
            }
            function x() {
                return G.slice(K).slice(0, H)
            }
            function z(L) {
                if (!D) {
                    if (p.beforeStart) {
                        p.beforeStart.call(this, x())
                    }
                    if (p.circular) {
                        if (L <= p.start - H - 1) {
                            F.css(B, -((E - (H * 2)) * A) + "px");
                            K = L == p.start - H - 1 ? E - (H * 2) - 1 : E - (H * 2) - p.scroll
                        } else {
                            if (L >= E - H + 1) {
                                F.css(B, -((H) * A) + "px");
                                K = L == E - H + 1 ? H + 1 : H + p.scroll
                            } else {
                                K = L
                            }
                        }
                    } else {
                        if (L < 0 || L > E - H) {
                            return
                        } else {
                            K = L
                        }
                    }
                    D = true;
                    F.animate(B == "left" ? {
                        left: -(K * A)
                    } : {
                        top: -(K * A)
                    }, p.speed, p.easing, function () {
                        if (p.afterEnd) {
                            p.afterEnd.call(this, x())
                        }
                        D = false
                    });
                    if (!p.circular) {
                        l(p.btnPrev + "," + p.btnNext).removeClass("disabled");
                        l((K - p.scroll < 0 && p.btnPrev) || (K + p.scroll > E - H && p.btnNext) || []).addClass("disabled")
                    }
                }
                return false
            }
        })
    };

    function d(p, u) {
        return parseInt(l.css(p[0], u)) || 0
    }
    function f(p) {
        return p[0].offsetWidth + d(p, "marginLeft") + d(p, "marginRight")
    }
    function h(p) {
        return p[0].offsetHeight + d(p, "marginTop") + d(p, "marginBottom")
    }
})(jQuery);
o = null;
running = null;
div = null;
ul = null;
tLi = null;
v = null;
li = null;
itemLength = null;
curr = null;
liSize = null;
ulSize = null;
ulSize = null;
(function (d) {
    d.extend(d.fn, {
        validate: function (h) {
            if (!this.length) {
                h && h.debug && window.console && console.warn("nothing selected, can't validate, returning nothing");
                return
            }
            var f = d.data(this[0], "validator");
            if (f) {
                return f
            }
            f = new d.validator(h, this[0]);
            d.data(this[0], "validator", f);
            if (f.settings.onsubmit) {
                this.find("input, button").filter(".cancel").click(function () {
                    f.cancelSubmit = true
                });
                if (f.settings.submitHandler) {
                    this.find("input, button").filter(":submit").click(function () {
                        f.submitButton = this
                    })
                }
                this.submit(function (p) {
                    if (f.settings.debug) {
                        p.preventDefault()
                    }
                    function l() {
                        if (f.settings.submitHandler) {
                            if (f.submitButton) {
                                var u = d("<input type='hidden'/>").attr("name", f.submitButton.name).val(f.submitButton.value).appendTo(f.currentForm)
                            }
                            f.settings.submitHandler.call(f, f.currentForm);
                            if (f.submitButton) {
                                u.remove()
                            }
                            return false
                        }
                        return true
                    }
                    if (f.cancelSubmit) {
                        f.cancelSubmit = false;
                        return l()
                    }
                    if (f.form()) {
                        if (f.pendingRequest) {
                            f.formSubmitted = true;
                            return false
                        }
                        return l()
                    } else {
                        f.focusInvalid();
                        return false
                    }
                })
            }
            return f
        },
        valid: function () {
            if (d(this[0]).is("form")) {
                return this.validate().form()
            } else {
                var h = true;
                var f = d(this[0].form).validate();
                this.each(function () {
                    h &= f.element(this)
                });
                return h
            }
        },
        removeAttrs: function (h) {
            var l = {},
                f = this;
            d.each(h.split(/\s/), function (p, u) {
                l[u] = f.attr(u);
                f.removeAttr(u)
            });
            return l
        },
        rules: function (u, x) {
            var l = this[0];
            if (u) {
                var p = d.data(l.form, "validator").settings;
                var z = p.rules;
                var y = d.validator.staticRules(l);
                switch (u) {
                case "add":
                    d.extend(y, d.validator.normalizeRule(x));
                    z[l.name] = y;
                    if (x.messages) {
                        p.messages[l.name] = d.extend(p.messages[l.name], x.messages)
                    }
                    break;
                case "remove":
                    if (!x) {
                        delete z[l.name];
                        return y
                    }
                    var f = {};
                    d.each(x.split(/\s/), function (A, B) {
                        f[B] = y[B];
                        delete y[B]
                    });
                    return f
                }
            }
            var w = d.validator.normalizeRules(d.extend({}, d.validator.metadataRules(l), d.validator.classRules(l), d.validator.attributeRules(l), d.validator.staticRules(l)), l);
            if (w.required) {
                var h = w.required;
                delete w.required;
                w = d.extend({
                    required: h
                }, w)
            }
            return w
        }
    });
    d.extend(d.expr[":"], {
        blank: function (f) {
            return !d.trim(f.value)
        },
        filled: function (f) {
            return !!d.trim(f.value)
        },
        unchecked: function (f) {
            return !f.checked
        }
    });
    d.validator = function (f, h) {
        this.settings = d.extend({}, d.validator.defaults, f);
        this.currentForm = h;
        this.init()
    };
    d.validator.format = function (f, h) {
        if (arguments.length == 1) {
            return function () {
                var l = d.makeArray(arguments);
                l.unshift(f);
                return d.validator.format.apply(this, l)
            }
        }
        if (arguments.length > 2 && h.constructor != Array) {
            h = d.makeArray(arguments).slice(1)
        }
        if (h.constructor != Array) {
            h = [h]
        }
        d.each(h, function (l, p) {
            f = f.replace(new RegExp("\\{" + l + "\\}", "g"), p)
        });
        return f
    };
    d.extend(d.validator, {
        defaults: {
            messages: {},
            groups: {},
            rules: {},
            errorClass: "error",
            validClass: "valid",
            errorElement: "label",
            focusInvalid: true,
            errorContainer: d([]),
            errorLabelContainer: d([]),
            onsubmit: true,
            ignore: [],
            ignoreTitle: false,
            onfocusin: function (f) {
                this.lastActive = f;
                if (this.settings.focusCleanup && !this.blockFocusCleanup) {
                    this.settings.unhighlight && this.settings.unhighlight.call(this, f, this.settings.errorClass, this.settings.validClass);
                    this.errorsFor(f).hide()
                }
            },
            onfocusout: function (f) {
                if (!this.checkable(f) && (f.name in this.submitted || !this.optional(f))) {
                    this.element(f)
                }
            },
            onkeyup: function (f) {
                if (f.name in this.submitted || f == this.lastElement) {
                    this.element(f)
                }
            },
            onclick: function (f) {
                if (f.name in this.submitted) {
                    this.element(f)
                }
            },
            highlight: function (h, f, l) {
                d(h).addClass(f).removeClass(l)
            },
            unhighlight: function (h, f, l) {
                d(h).removeClass(f).addClass(l)
            }
        },
        setDefaults: function (f) {
            d.extend(d.validator.defaults, f)
        },
        messages: {
            required: "This field is required.",
            remote: "Please fix this field.",
            email: "Please enter a valid email address.",
            url: "Please enter a valid URL.",
            date: "Please enter a valid date.",
            dateISO: "Please enter a valid date (ISO).",
            dateDE: "Bitte geben Sie ein gГјltiges Datum ein.",
            number: "Please enter a valid number.",
            numberDE: "Bitte geben Sie eine Nummer ein.",
            digits: "Please enter only digits",
            creditcard: "Please enter a valid credit card number.",
            equalTo: "Please enter the same value again.",
            accept: "Please enter a value with a valid extension.",
            maxlength: d.validator.format("Please enter no more than {0} characters."),
            minlength: d.validator.format("Please enter at least {0} characters."),
            rangelength: d.validator.format("Please enter a value between {0} and {1} characters long."),
            range: d.validator.format("Please enter a value between {0} and {1}."),
            max: d.validator.format("Please enter a value less than or equal to {0}."),
            min: d.validator.format("Please enter a value greater than or equal to {0}.")
        },
        autoCreateRanges: false,
        prototype: {
            init: function () {
                this.labelContainer = d(this.settings.errorLabelContainer);
                this.errorContext = this.labelContainer.length && this.labelContainer || d(this.currentForm);
                this.containers = d(this.settings.errorContainer).add(this.settings.errorLabelContainer);
                this.submitted = {};
                this.valueCache = {};
                this.pendingRequest = 0;
                this.pending = {};
                this.invalid = {};
                this.reset();
                var h = (this.groups = {});
                d.each(this.settings.groups, function (p, u) {
                    d.each(u.split(/\s/), function (x, w) {
                        h[w] = p
                    })
                });
                var l = this.settings.rules;
                d.each(l, function (p, u) {
                    l[p] = d.validator.normalizeRule(u)
                });

                function f(u) {
                    var p = d.data(this[0].form, "validator");
                    p.settings["on" + u.type] && p.settings["on" + u.type].call(p, this[0])
                }
                d(this.currentForm).delegate("focusin focusout keyup", ":text, :password, :file, select, textarea", f).delegate("click", ":radio, :checkbox", f);
                if (this.settings.invalidHandler) {
                    d(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler)
                }
            },
            form: function () {
                this.checkForm();
                d.extend(this.submitted, this.errorMap);
                this.invalid = d.extend({}, this.errorMap);
                if (!this.valid()) {
                    d(this.currentForm).triggerHandler("invalid-form", [this])
                }
                this.showErrors();
                return this.valid()
            },
            checkForm: function () {
                this.prepareForm();
                for (var h = 0, f = (this.currentElements = this.elements()); f[h]; h++) {
                    this.check(f[h])
                }
                return this.valid()
            },
            element: function (f) {
                f = this.clean(f);
                this.lastElement = f;
                this.prepareElement(f);
                this.currentElements = d(f);
                var h = this.check(f);
                if (h) {
                    delete this.invalid[f.name]
                } else {
                    this.invalid[f.name] = true
                }
                if (!this.numberOfInvalids()) {
                    this.toHide = this.toHide.add(this.containers)
                }
                this.showErrors();
                return h
            },
            showErrors: function (h) {
                if (h) {
                    d.extend(this.errorMap, h);
                    this.errorList = [];
                    for (var f in h) {
                        this.errorList.push({
                            message: h[f],
                            element: this.findByName(f)[0]
                        })
                    }
                    this.successList = d.grep(this.successList, function (l) {
                        return ! (l.name in h)
                    })
                }
                this.settings.showErrors ? this.settings.showErrors.call(this, this.errorMap, this.errorList) : this.defaultShowErrors()
            },
            resetForm: function () {
                if (d.fn.resetForm) {
                    d(this.currentForm).resetForm()
                }
                this.submitted = {};
                this.prepareForm();
                this.hideErrors();
                this.elements().removeClass(this.settings.errorClass)
            },
            numberOfInvalids: function () {
                return this.objectLength(this.invalid)
            },
            objectLength: function (l) {
                var h = 0;
                for (var f in l) {
                    h++
                }
                return h
            },
            hideErrors: function () {
                this.addWrapper(this.toHide).hide()
            },
            valid: function () {
                return this.size() == 0
            },
            size: function () {
                return this.errorList.length
            },
            focusInvalid: function () {
                if (this.settings.focusInvalid) {
                    try {
                        d(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").focus()
                    } catch(f) {}
                }
            },
            findLastActive: function () {
                var f = this.lastActive;
                return f && d.grep(this.errorList, function (h) {
                    return h.element.name == f.name
                }).length == 1 && f
            },
            elements: function () {
                var h = this,
                    f = {};
                return d([]).add(this.currentForm.elements).filter(":input").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function () { ! this.name && h.settings.debug && window.console && console.error("%o has no name assigned", this);
                    if (this.name in f || !h.objectLength(d(this).rules())) {
                        return false
                    }
                    f[this.name] = true;
                    return true
                })
            },
            clean: function (f) {
                return d(f)[0]
            },
            errors: function () {
                return d(this.settings.errorElement + "." + this.settings.errorClass, this.errorContext)
            },
            reset: function () {
                this.successList = [];
                this.errorList = [];
                this.errorMap = {};
                this.toShow = d([]);
                this.toHide = d([]);
                this.formSubmitted = false;
                this.currentElements = d([])
            },
            prepareForm: function () {
                this.reset();
                this.toHide = this.errors().add(this.containers)
            },
            prepareElement: function (f) {
                this.reset();
                this.toHide = this.errorsFor(f)
            },
            check: function (f) {
                f = this.clean(f);
                if (this.checkable(f)) {
                    f = this.findByName(f.name)[0]
                }
                var w = d(f).rules();
                var h = false;
                for (method in w) {
                    var u = {
                        method: method,
                        parameters: w[method]
                    };
                    try {
                        var l = d.validator.methods[method].call(this, f.value.replace(/\r/g, ""), f, u.parameters);
                        if (l == "dependency-mismatch") {
                            h = true;
                            continue
                        }
                        h = false;
                        if (l == "pending") {
                            this.toHide = this.toHide.not(this.errorsFor(f));
                            return
                        }
                        if (!l) {
                            this.formatAndAdd(f, u);
                            return false
                        }
                    } catch(p) {
                        this.settings.debug && window.console && console.log("exception occured when checking element " + f.id + ", check the '" + u.method + "' method");
                        throw p
                    }
                }
                if (h) {
                    return
                }
                if (this.objectLength(w)) {
                    this.successList.push(f)
                }
                return true
            },
            customMetaMessage: function (f, l) {
                if (!d.metadata) {
                    return
                }
                var h = this.settings.meta ? d(f).metadata()[this.settings.meta] : d(f).metadata();
                return h && h.messages && h.messages[l]
            },
            customMessage: function (h, l) {
                var f = this.settings.messages[h];
                return f && (f.constructor == String ? f : f[l])
            },
            findDefined: function () {
                for (var f = 0; f < arguments.length; f++) {
                    if (arguments[f] !== undefined) {
                        return arguments[f]
                    }
                }
                return undefined
            },
            defaultMessage: function (f, h) {
                return this.findDefined(this.customMessage(f.name, h), this.customMetaMessage(f, h), !this.settings.ignoreTitle && f.title || undefined, d.validator.messages[h], "<strong>Warning: No message defined for " + f.name + "</strong>")
            },
            formatAndAdd: function (f, l) {
                var h = this.defaultMessage(f, l.method);
                if (typeof h == "function") {
                    h = h.call(this, l.parameters, f)
                }
                this.errorList.push({
                    message: h,
                    element: f
                });
                this.errorMap[f.name] = h;
                this.submitted[f.name] = h
            },
            addWrapper: function (f) {
                if (this.settings.wrapper) {
                    f = f.add(f.parent(this.settings.wrapper))
                }
                return f
            },
            defaultShowErrors: function () {
                for (var l = 0; this.errorList[l]; l++) {
                    var h = this.errorList[l];
                    this.settings.highlight && this.settings.highlight.call(this, h.element, this.settings.errorClass, this.settings.validClass);
                    this.showLabel(h.element, h.message)
                }
                if (this.errorList.length) {
                    this.toShow = this.toShow.add(this.containers)
                }
                if (this.settings.success) {
                    for (var l = 0; this.successList[l]; l++) {
                        this.showLabel(this.successList[l])
                    }
                }
                if (this.settings.unhighlight) {
                    for (var l = 0, f = this.validElements(); f[l]; l++) {
                        this.settings.unhighlight.call(this, f[l], this.settings.errorClass, this.settings.validClass)
                    }
                }
                this.toHide = this.toHide.not(this.toShow);
                this.hideErrors();
                this.addWrapper(this.toShow).show()
            },
            validElements: function () {
                return this.currentElements.not(this.invalidElements())
            },
            invalidElements: function () {
                return d(this.errorList).map(function () {
                    return this.element
                })
            },
            showLabel: function (h, l) {
                var f = this.errorsFor(h);
                if (f.length) {
                    f.removeClass().addClass(this.settings.errorClass);
                    f.attr("generated") && f.html(l)
                } else {
                    f = d("<" + this.settings.errorElement + "/>").attr({
                        "for": this.idOrName(h),
                        generated: true
                    }).addClass(this.settings.errorClass).html(l || "");
                    if (this.settings.wrapper) {
                        f = f.hide().show().wrap("<" + this.settings.wrapper + "/>").parent()
                    }
                    if (!this.labelContainer.append(f).length) {
                        this.settings.errorPlacement ? this.settings.errorPlacement(f, d(h)) : f.insertAfter(h)
                    }
                }
                if (!l && this.settings.success) {
                    f.text("");
                    typeof this.settings.success == "string" ? f.addClass(this.settings.success) : this.settings.success(f)
                }
                this.toShow = this.toShow.add(f)
            },
            errorsFor: function (f) {
                return this.errors().filter("[for='" + this.idOrName(f) + "']")
            },
            idOrName: function (f) {
                return this.groups[f.name] || (this.checkable(f) ? f.name : f.id || f.name)
            },
            checkable: function (f) {
                return /radio|checkbox/i.test(f.type)
            },
            findByName: function (f) {
                var h = this.currentForm;
                return d(document.getElementsByName(f)).map(function (p, l) {
                    return l.form == h && l.name == f && l || null
                })
            },
            getLength: function (h, f) {
                switch (f.nodeName.toLowerCase()) {
                case "select":
                    return d("option:selected", f).length;
                case "input":
                    if (this.checkable(f)) {
                        return this.findByName(f.name).filter(":checked").length
                    }
                }
                return h.length
            },
            depend: function (h, f) {
                return this.dependTypes[typeof h] ? this.dependTypes[typeof h](h, f) : true
            },
            dependTypes: {
                "boolean": function (h, f) {
                    return h
                },
                string: function (h, f) {
                    return !!d(h, f.form).length
                },
                "function": function (h, f) {
                    return h(f)
                }
            },
            optional: function (f) {
                return !d.validator.methods.required.call(this, d.trim(f.value), f) && "dependency-mismatch"
            },
            startRequest: function (f) {
                if (!this.pending[f.name]) {
                    this.pendingRequest++;
                    this.pending[f.name] = true
                }
            },
            stopRequest: function (f, h) {
                this.pendingRequest--;
                if (this.pendingRequest < 0) {
                    this.pendingRequest = 0
                }
                delete this.pending[f.name];
                if (h && this.pendingRequest == 0 && this.formSubmitted && this.form()) {
                    d(this.currentForm).submit()
                } else {
                    if (!h && this.pendingRequest == 0 && this.formSubmitted) {
                        d(this.currentForm).triggerHandler("invalid-form", [this])
                    }
                }
            },
            previousValue: function (f) {
                return d.data(f, "previousValue") || d.data(f, "previousValue", previous = {
                    old: null,
                    valid: true,
                    message: this.defaultMessage(f, "remote")
                })
            }
        },
        classRuleSettings: {
            required: {
                required: true
            },
            email: {
                email: true
            },
            url: {
                url: true
            },
            date: {
                date: true
            },
            dateISO: {
                dateISO: true
            },
            dateDE: {
                dateDE: true
            },
            number: {
                number: true
            },
            numberDE: {
                numberDE: true
            },
            digits: {
                digits: true
            },
            creditcard: {
                creditcard: true
            }
        },
        addClassRules: function (f, h) {
            f.constructor == String ? this.classRuleSettings[f] = h : d.extend(this.classRuleSettings, f)
        },
        classRules: function (f) {
            var l = {};
            var h = d(f).attr("class");
            h && d.each(h.split(" "), function () {
                if (this in d.validator.classRuleSettings) {
                    d.extend(l, d.validator.classRuleSettings[this])
                }
            });
            return l
        },
        attributeRules: function (h) {
            var p = {};
            var f = d(h);
            for (method in d.validator.methods) {
                var l = f.attr(method);
                if (l) {
                    p[method] = l
                }
            }
            if (p.maxlength && /-1|2147483647|524288/.test(p.maxlength)) {
                delete p.maxlength
            }
            return p
        },
        metadataRules: function (f) {
            if (!d.metadata) {
                return {}
            }
            var h = d.data(f.form, "validator").settings.meta;
            return h ? d(f).metadata()[h] : d(f).metadata()
        },
        staticRules: function (h) {
            var l = {};
            var f = d.data(h.form, "validator");
            if (f.settings.rules) {
                l = d.validator.normalizeRule(f.settings.rules[h.name]) || {}
            }
            return l
        },
        normalizeRules: function (h, f) {
            d.each(h, function (u, l) {
                if (l === false) {
                    delete h[u];
                    return
                }
                if (l.param || l.depends) {
                    var p = true;
                    switch (typeof l.depends) {
                    case "string":
                        p = !!d(l.depends, f.form).length;
                        break;
                    case "function":
                        p = l.depends.call(f, f);
                        break
                    }
                    if (p) {
                        h[u] = l.param !== undefined ? l.param : true
                    } else {
                        delete h[u]
                    }
                }
            });
            d.each(h, function (l, p) {
                h[l] = d.isFunction(p) ? p(f) : p
            });
            d.each(["minlength", "maxlength", "min", "max"], function () {
                if (h[this]) {
                    h[this] = Number(h[this])
                }
            });
            d.each(["rangelength", "range"], function () {
                if (h[this]) {
                    h[this] = [Number(h[this][0]), Number(h[this][1])]
                }
            });
            if (d.validator.autoCreateRanges) {
                if (h.min && h.max) {
                    h.range = [h.min, h.max];
                    delete h.min;
                    delete h.max
                }
                if (h.minlength && h.maxlength) {
                    h.rangelength = [h.minlength, h.maxlength];
                    delete h.minlength;
                    delete h.maxlength
                }
            }
            if (h.messages) {
                delete h.messages
            }
            return h
        },
        normalizeRule: function (h) {
            if (typeof h == "string") {
                var f = {};
                d.each(h.split(/\s/), function () {
                    f[this] = true
                });
                h = f
            }
            return h
        },
        addMethod: function (f, l, h) {
            d.validator.methods[f] = l;
            d.validator.messages[f] = h || d.validator.messages[f];
            if (l.length < 3) {
                d.validator.addClassRules(f, d.validator.normalizeRule(f))
            }
        },
        methods: {
            required: function (l, f, p) {
                if (!this.depend(p, f)) {
                    return "dependency-mismatch"
                }
                switch (f.nodeName.toLowerCase()) {
                case "select":
                    var h = d("option:selected", f);
                    return h.length > 0 && (f.type == "select-multiple" || (d.browser.msie && !(h[0].attributes.value.specified) ? h[0].text : h[0].value).length > 0);
                case "input":
                    if (this.checkable(f)) {
                        return this.getLength(l, f) > 0
                    }
                default:
                    return d.trim(l).length > 0
                }
            },
            remote: function (u, l, w) {
                if (this.optional(l)) {
                    return "dependency-mismatch"
                }
                var f = this.previousValue(l);
                if (!this.settings.messages[l.name]) {
                    this.settings.messages[l.name] = {}
                }
                this.settings.messages[l.name].remote = typeof f.message == "function" ? f.message(u) : f.message;
                w = typeof w == "string" && {
                    url: w
                } || w;
                if (f.old !== u) {
                    f.old = u;
                    var h = this;
                    this.startRequest(l);
                    var p = {};
                    p[l.name] = u;
                    d.ajax(d.extend(true, {
                        url: w,
                        mode: "abort",
                        port: "validate" + l.name,
                        dataType: "json",
                        data: p,
                        success: function (y) {
                            var z = y === true;
                            if (z) {
                                var x = h.formSubmitted;
                                h.prepareElement(l);
                                h.formSubmitted = x;
                                h.successList.push(l);
                                h.showErrors()
                            } else {
                                var A = {};
                                A[l.name] = f.message = y || h.defaultMessage(l, "remote");
                                h.showErrors(A)
                            }
                            f.valid = z;
                            h.stopRequest(l, z)
                        }
                    }, w));
                    return "pending"
                } else {
                    if (this.pending[l.name]) {
                        return "pending"
                    }
                }
                return f.valid
            },
            minlength: function (h, f, l) {
                return this.optional(f) || this.getLength(d.trim(h), f) >= l
            },
            maxlength: function (h, f, l) {
                return this.optional(f) || this.getLength(d.trim(h), f) <= l
            },
            rangelength: function (l, h, p) {
                var f = this.getLength(d.trim(l), h);
                return this.optional(h) || (f >= p[0] && f <= p[1])
            },
            min: function (h, f, l) {
                return this.optional(f) || h >= l
            },
            max: function (h, f, l) {
                return this.optional(f) || h <= l
            },
            range: function (h, f, l) {
                return this.optional(f) || (h >= l[0] && h <= l[1])
            },
            email: function (h, f) {
                return this.optional(f) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(h)
            },
            url: function (h, f) {
                return this.optional(f) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(h)
            },
            date: function (h, f) {
                return this.optional(f) || !/Invalid|NaN/.test(new Date(h))
            },
            dateISO: function (h, f) {
                return this.optional(f) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(h)
            },
            dateDE: function (h, f) {
                return this.optional(f) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(h)
            },
            number: function (h, f) {
                return this.optional(f) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(h)
            },
            numberDE: function (h, f) {
                return this.optional(f) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(h)
            },
            digits: function (h, f) {
                return this.optional(f) || /^\d+$/.test(h)
            },
            creditcard: function (u, p) {
                if (this.optional(p)) {
                    return "dependency-mismatch"
                }
                if (/[^0-9-]+/.test(u)) {
                    return false
                }
                var w = 0,
                    l = 0,
                    h = false;
                u = u.replace(/\D/g, "");
                for (n = u.length - 1; n >= 0; n--) {
                    var f = u.charAt(n);
                    var l = parseInt(f, 10);
                    if (h) {
                        if ((l *= 2) > 9) {
                            l -= 9
                        }
                    }
                    w += l;
                    h = !h
                }
                return (w % 10) == 0
            },
            accept: function (h, f, l) {
                l = typeof l == "string" ? l.replace(/,/g, "|") : "png|jpe?g|gif";
                return this.optional(f) || h.match(new RegExp(".(" + l + ")$", "i"))
            },
            equalTo: function (h, f, l) {
                return h == d(l).val()
            }
        }
    });
    d.format = d.validator.format
})(jQuery);
(function (h) {
    var f = h.ajax;
    var d = {};
    h.ajax = function (p) {
        p = h.extend(p, h.extend({}, h.ajaxSettings, p));
        var l = p.port;
        if (p.mode == "abort") {
            if (d[l]) {
                d[l].abort()
            }
            return (d[l] = f.apply(this, arguments))
        }
        return f.apply(this, arguments)
    }
})(jQuery);
(function (d) {
    d.each({
        focus: "focusin",
        blur: "focusout"
    }, function (h, f) {
        d.event.special[f] = {
            setup: function () {
                if (d.browser.msie) {
                    return false
                }
                this.addEventListener(h, d.event.special[f].handler, true)
            },
            teardown: function () {
                if (d.browser.msie) {
                    return false
                }
                this.removeEventListener(h, d.event.special[f].handler, true)
            },
            handler: function (l) {
                arguments[0] = d.event.fix(l);
                arguments[0].type = f;
                return d.event.handle.apply(this, arguments)
            }
        }
    });
    d.extend(d.fn, {
        delegate: function (l, h, f) {
            return this.bind(l, function (p) {
                var u = d(p.target);
                if (u.is(h)) {
                    return f.apply(u, arguments)
                }
            })
        },
        triggerEvent: function (f, h) {
            return this.triggerHandler(f, [d.event.fix({
                type: f,
                target: h
            })])
        }
    })
})(jQuery);
validator = null;
hidden = null;
valid = null;
result = null;
element = null;
command = null;
settings = null;
staticRules = null;
existingRules = null;
filtered = null;
data = null;
param = null;
args = null;
params = null;
source = null;
groups = null;
rules = null;
lastActive = null;
dependencyMismatch = null;
rule = null;
method = null;
m = null;
i = null;
error = null;
label = null;
form = null;
classes = null;
meta = null;
keepRule = null;
previous = null;
responce = null;
nCheck = null;
nDigit = null;
bEven = null;
ajax = null;
port = null;
(function (d) {
    d.fn.bgIframe = d.fn.bgiframe = function (h) {
        if (d.browser.msie && /6.0/.test(navigator.userAgent)) {
            h = d.extend({
                top: "auto",
                left: "auto",
                width: "auto",
                height: "auto",
                opacity: true,
                src: "javascript:false;"
            }, h || {});
            var l = function (p) {
                return p && p.constructor == Number ? p + "px" : p
            },
                f = '<iframe class="bgiframe"frameborder="0"tabindex="-1"src="' + h.src + '"style="display:block;position:absolute;z-index:-1;' + (h.opacity !== false ? "filter:Alpha(Opacity='0');" : "") + "top:" + (h.top == "auto" ? "expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+'px')" : l(h.top)) + ";left:" + (h.left == "auto" ? "expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+'px')" : l(h.left)) + ";width:" + (h.width == "auto" ? "expression(this.parentNode.offsetWidth+'px')" : l(h.width)) + ";height:" + (h.height == "auto" ? "expression(this.parentNode.offsetHeight+'px')" : l(h.height)) + ';"/>';
            return this.each(function () {
                if (d("> iframe.bgiframe", this).length == 0) {
                    this.insertBefore(document.createElement(f), this.firstChild)
                }
            })
        }
        return this
    }
})(jQuery);
s = null;
html = null;
prop = null;
