

 (function($, window, document, undefined) {
    $.fn.quicksearch = function(target, opt) {

        var timeout,
        cache,
        rowcache,
        jq_results,
        val = '',
        e = this,
        options = $.extend({
            delay: 100,
            selector: null,
            stripeRows: null,
            loader: null,
            noResults: '',
            bind: 'keyup',
            onBefore: function() {
                return;
            },
            onAfter: function() {
                return;
            },
            show: function() {
                this.style.display = "";
            },
            hide: function() {
                this.style.display = "none";
            },
            prepareQuery: function(val) {
                return val.toLowerCase().split(' ');
            },
            testQuery: function(query, txt, _row) {
                for (var i = 0; i < query.length; i += 1) {
                    if (txt.indexOf(query[i]) === -1) {
                        return false;
                    }
                }
                return true;
            }
        },
        opt);

        this.go = function() {

            var i = 0,
            noresults = true,
            query = options.prepareQuery(val),
            val_empty = (val.replace(' ', '').length === 0);

            for (var i = 0, len = rowcache.length; i < len; i++) {
                if (val_empty || options.testQuery(query, cache[i], rowcache[i])) {
                    options.show.apply(rowcache[i]);
                    noresults = false;
                } else {
                    options.hide.apply(rowcache[i]);
                }
            }

            if (noresults) {
                this.results(false);
            } else {
                this.results(true);
                this.stripe();
            }

            this.loader(false);
            options.onAfter();

            return this;
        };

        this.stripe = function() {

            if (typeof options.stripeRows === "object" && options.stripeRows !== null)
            {
                var joined = options.stripeRows.join(' ');
                var stripeRows_length = options.stripeRows.length;

                jq_results.not(':hidden').each(function(i) {
                    $(this).removeClass(joined).addClass(options.stripeRows[i % stripeRows_length]);
                });
            }

            return this;
        };

        this.strip_html = function(input) {
            var output = input.replace(new RegExp('<[^<]+\>', 'g'), "");
            output = $.trim(output.toLowerCase());
            return output;
        };

        this.results = function(bool) {
            if (typeof options.noResults === "string" && options.noResults !== "") {
                if (bool) {
                    $(options.noResults).hide();
                } else {
                    $(options.noResults).show();
                }
            }
            return this;
        };

        this.loader = function(bool) {
            if (typeof options.loader === "string" && options.loader !== "") {
                (bool) ? $(options.loader).show() : $(options.loader).hide();
            }
            return this;
        };

        this.cache = function() {

            jq_results = $(target);

            if (typeof options.noResults === "string" && options.noResults !== "") {
                jq_results = jq_results.not(options.noResults);
            }

            var t = (typeof options.selector === "string") ? jq_results.find(options.selector) : $(target).not(options.noResults);
            cache = t.map(function() {
                return e.strip_html(this.innerHTML);
            });

            rowcache = jq_results.map(function() {
                return this;
            });

            return this.go();
        };

        this.trigger = function() {
            this.loader(true);
            options.onBefore();

            window.clearTimeout(timeout);
            timeout = window.setTimeout(function() {
                e.go();
            },
            options.delay);

            return this;
        };

        this.cache();
        this.results(true);
        this.stripe();
        this.loader(false);

        return this.each(function() {
            $(this).bind(options.bind,
            function() {
                val = $(this).val();
                e.trigger();
            });
        });

    };

} (jQuery, this, document));





















// tipsy, facebook style tooltips for jquery
// version 1.0.0a
// (c) 2008-2010 jason frame [jason@onehackoranother.com]
// released under the MIT license
 (function($) {

    function Tipsy(element, options) {
        this.$element = $(element);
        this.options = options;
        this.enabled = true;
        this.fixTitle();
    }

    Tipsy.prototype = {
        show: function() {
            var title = this.getTitle();
            if (title && this.enabled) {
                var $tip = this.tip();

                $tip.find('.tipsy-inner')[this.options.html ? 'html': 'text'](title);
                $tip[0].className = 'tipsy';
                // reset classname in case of dynamic gravity
                $tip.remove().css({
                    top: 0,
                    left: 0,
                    visibility: 'hidden',
                    display: 'block'
                }).appendTo(document.body);

                var pos = $.extend({},
                this.$element.offset(), {
                    width: this.$element[0].offsetWidth,
                    height: this.$element[0].offsetHeight
                });

                var actualWidth = $tip[0].offsetWidth,
                actualHeight = $tip[0].offsetHeight;
                var gravity = (typeof this.options.gravity == 'function')
                ? this.options.gravity.call(this.$element[0])
                : this.options.gravity;

                var tp;
                switch (gravity.charAt(0)) {
                case 'n':
                    tp = {
                        top: pos.top + pos.height + this.options.offset,
                        left: pos.left + pos.width / 2 - actualWidth / 2
                    };
                    break;
                case 's':
                    tp = {
                        top: pos.top - actualHeight - this.options.offset,
                        left: pos.left + pos.width / 2 - actualWidth / 2
                    };
                    break;
                case 'e':
                    tp = {
                        top: pos.top + pos.height / 2 - actualHeight / 2,
                        left: pos.left - actualWidth - this.options.offset
                    };
                    break;
                case 'w':
                    tp = {
                        top: pos.top + pos.height / 2 - actualHeight / 2,
                        left: pos.left + pos.width + this.options.offset
                    };
                    break;
                }

                if (gravity.length == 2) {
                    if (gravity.charAt(1) == 'w') {
                        tp.left = pos.left + pos.width / 2 - 15;
                    } else {
                        tp.left = pos.left + pos.width / 2 - actualWidth + 15;
                    }
                }

                $tip.css(tp).addClass('tipsy-' + gravity);

                if (this.options.fade) {
                    $tip.stop().css({
                        opacity: 0,
                        display: 'block',
                        visibility: 'visible'
                    }).animate({
                        opacity: this.options.opacity
                    });
                } else {
                    $tip.css({
                        visibility: 'visible',
                        opacity: this.options.opacity
                    });
                }
            }
        },

        hide: function() {
            if (this.options.fade) {
                this.tip().stop().fadeOut(function() {
                    $(this).remove();
                });
            } else {
                this.tip().remove();
            }
        },

        fixTitle: function() {
            var $e = this.$element;
            if ($e.attr('title') || typeof($e.attr('original-title')) != 'string') {
                $e.attr('original-title', $e.attr('title') || '').removeAttr('title');
            }
        },

        getTitle: function() {
            var title,
            $e = this.$element,
            o = this.options;
            this.fixTitle();
            var title,
            o = this.options;
            if (typeof o.title == 'string') {
                title = $e.attr(o.title == 'title' ? 'original-title': o.title);
            } else if (typeof o.title == 'function') {
                title = o.title.call($e[0]);
            }
            title = ('' + title).replace(/(^\s*|\s*$)/, "");
            return title || o.fallback;
        },

        tip: function() {
            if (!this.$tip) {
                this.$tip = $('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>');
            }
            return this.$tip;
        },

        validate: function() {
            if (!this.$element[0].parentNode) {
                this.hide();
                this.$element = null;
                this.options = null;
            }
        },

        enable: function() {
            this.enabled = true;
        },
        disable: function() {
            this.enabled = false;
        },
        toggleEnabled: function() {
            this.enabled = !this.enabled;
        }
    };

    $.fn.tipsy = function(options) {

        if (options === true) {
            return this.data('tipsy');
        } else if (typeof options == 'string') {
            var tipsy = this.data('tipsy');
            if (tipsy) tipsy[options]();
            return this;
        }

        options = $.extend({},
        $.fn.tipsy.defaults, options);

        function get(ele) {
            var tipsy = $.data(ele, 'tipsy');
            if (!tipsy) {
                tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options));
                $.data(ele, 'tipsy', tipsy);
            }
            return tipsy;
        }

        function enter() {
            var tipsy = get(this);
            tipsy.hoverState = 'in';
            if (options.delayIn == 0) {
                tipsy.show();
            } else {
                tipsy.fixTitle();
                setTimeout(function() {
                    if (tipsy.hoverState == 'in') tipsy.show();
                },
                options.delayIn);
            }
        };

        function leave() {
            var tipsy = get(this);
            tipsy.hoverState = 'out';
            if (options.delayOut == 0) {
                tipsy.hide();
            } else {
                setTimeout(function() {
                    if (tipsy.hoverState == 'out') tipsy.hide();
                },
                options.delayOut);
            }
        };

        if (!options.live) this.each(function() {
            get(this);
        });

        if (options.trigger != 'manual') {
            var binder = options.live ? 'live': 'bind',
            eventIn = options.trigger == 'hover' ? 'mouseenter': 'focus',
            eventOut = options.trigger == 'hover' ? 'mouseleave': 'blur';
            this[binder](eventIn, enter)[binder](eventOut, leave);
        }

        return this;

    };

    $.fn.tipsy.defaults = {
        delayIn: 0,
        delayOut: 0,
        fade: false,
        fallback: '',
        gravity: 'n',
        html: false,
        live: false,
        offset: 0,
        opacity: 0.8,
        title: 'title',
        trigger: 'hover'
    };

    // Overwrite this method to provide options on a per-element basis.
    // For example, you could store the gravity in a 'tipsy-gravity' attribute:
    // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' });
    // (remember - do not modify 'options' in place!)
    $.fn.tipsy.elementOptions = function(ele, options) {
        return $.metadata ? $.extend({},
        options, $(ele).metadata()) : options;
    };

    $.fn.tipsy.autoNS = function() {
        return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's': 'n';
    };

    $.fn.tipsy.autoWE = function() {
        return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e': 'w';
    };

})(jQuery);






 (function(a) {
    a.uniform = {
        options: {
            selectClass: "selector",
            radioClass: "radio",
            checkboxClass: "checker",
            fileClass: "uploader",
            filenameClass: "filename",
            fileBtnClass: "action",
            fileDefaultText: "No file selected",
            fileBtnText: "Choose File",
            checkedClass: "checked",
            focusClass: "focus",
            disabledClass: "disabled",
            activeClass: "active",
            hoverClass: "hover",
            useID: true,
            idPrefix: "uniform",
            resetSelector: false
        },
        elements: []
    };
    if (a.browser.msie && a.browser.version < 7) {
        a.support.selectOpacity = false
    } else {
        a.support.selectOpacity = true
    }
    a.fn.uniform = function(c) {
        c = a.extend(a.uniform.options, c);
        var e = this;
        if (c.resetSelector != false) {
            a(c.resetSelector).mouseup(function() {
                function i() {
                    a.uniform.update(e)
                }
                setTimeout(i, 10)
            })
        }
        function b(k) {
            var l = a("<div />"),
            i = a("<span />");
            l.addClass(c.selectClass);
            if (c.useID) {
                l.attr("id", c.idPrefix + "-" + k.attr("id"))
            }
            var j = k.find(":selected:first");
            if (j.length == 0) {
                j = k.find("option:first")
            }
            i.html(j.text());
            k.css("opacity", 0);
            k.wrap(l);
            k.before(i);
            l = k.parent("div");
            i = k.siblings("span");
            k.change(function() {
                i.text(k.find(":selected").text());
                l.removeClass(c.activeClass)
            }).focus(function() {
                l.addClass(c.focusClass)
            }).blur(function() {
                l.removeClass(c.focusClass);
                l.removeClass(c.activeClass)
            }).mousedown(function() {
                l.addClass(c.activeClass)
            }).mouseup(function() {
                l.removeClass(c.activeClass)
            }).click(function() {
                l.removeClass(c.activeClass)
            }).hover(function() {
                l.addClass(c.hoverClass)
            },
            function() {
                l.removeClass(c.hoverClass)
            }).keyup(function() {
                i.text(k.find(":selected").text())
            });
            if (a(k).attr("disabled")) {
                l.addClass(c.disabledClass)
            }
            a.uniform.noSelect(i);
            h(k)
        }
        function d(j) {
            var k = a("<div />"),
            i = a("<span />");
            k.addClass(c.checkboxClass);
            if (c.useID) {
                k.attr("id", c.idPrefix + "-" + j.attr("id"))
            }
            a(j).wrap(k);
            a(j).wrap(i);
            i = j.parent();
            k = i.parent();
            a(j).css("opacity", 0).focus(function() {
                k.addClass(c.focusClass)
            }).blur(function() {
                k.removeClass(c.focusClass)
            }).click(function() {
                if (!a(j).attr("checked")) {
                    i.removeClass(c.checkedClass)
                } else {
                    i.addClass(c.checkedClass)
                }
            }).mousedown(function() {
                k.addClass(c.activeClass)
            }).mouseup(function() {
                k.removeClass(c.activeClass)
            }).hover(function() {
                k.addClass(c.hoverClass)
            },
            function() {
                k.removeClass(c.hoverClass)
            });
            if (a(j).attr("checked")) {
                i.addClass(c.checkedClass)
            }
            if (a(j).attr("disabled")) {
                k.addClass(c.disabledClass)
            }
            h(j)
        }
        function f(j) {
            var k = a("<div />"),
            i = a("<span />");
            k.addClass(c.radioClass);
            if (c.useID) {
                k.attr("id", c.idPrefix + "-" + j.attr("id"))
            }
            a(j).wrap(k);
            a(j).wrap(i);
            i = j.parent();
            k = i.parent();
            a(j).css("opacity", 0).focus(function() {
                k.addClass(c.focusClass)
            }).blur(function() {
                k.removeClass(c.focusClass)
            }).click(function() {
                if (!a(j).attr("checked")) {
                    i.removeClass(c.checkedClass)
                } else {
                    a("." + c.radioClass + " span." + c.checkedClass + ":has([name='" + a(j).attr("name") + "'])").removeClass(c.checkedClass);
                    i.addClass(c.checkedClass)
                }
            }).mousedown(function() {
                if (!a(j).is(":disabled")) {
                    k.addClass(c.activeClass)
                }
            }).mouseup(function() {
                k.removeClass(c.activeClass)
            }).hover(function() {
                k.addClass(c.hoverClass)
            },
            function() {
                k.removeClass(c.hoverClass)
            });
            if (a(j).attr("checked")) {
                i.addClass(c.checkedClass)
            }
            if (a(j).attr("disabled")) {
                k.addClass(c.disabledClass)
            }
            h(j)
        }
        function g(l) {
            $el = a(l);
            var m = a("<div />"),
            k = a("<span>" + c.fileDefaultText + "</span>"),
            j = a("<span>" + c.fileBtnText + "</span>");
            m.addClass(c.fileClass);
            k.addClass(c.filenameClass);
            j.addClass(c.fileBtnClass);
            if (c.useID) {
                m.attr("id", c.idPrefix + "-" + $el.attr("id"))
            }
            $el.wrap(m);
            $el.after(j);
            $el.after(k);
            m = $el.closest("div");
            k = $el.siblings("." + c.filenameClass);
            j = $el.siblings("." + c.fileBtnClass);
            if (!$el.attr("size")) {
                var i = m.width();
                $el.attr("size", i / 10)
            }
            $el.css("opacity", 0).focus(function() {
                m.addClass(c.focusClass)
            }).blur(function() {
                m.removeClass(c.focusClass)
            }).change(function() {
                var n = a(this).val();
                n = n.split(/[\/\\]+/);
                n = n[(n.length - 1)];
                k.text(n)
            }).mousedown(function() {
                if (!a(l).is(":disabled")) {
                    m.addClass(c.activeClass)
                }
            }).mouseup(function() {
                m.removeClass(c.activeClass)
            }).hover(function() {
                m.addClass(c.hoverClass)
            },
            function() {
                m.removeClass(c.hoverClass)
            });
            if ($el.attr("disabled")) {
                m.addClass(c.disabledClass)
            }
            a.uniform.noSelect(k);
            a.uniform.noSelect(j);
            h(l)
        }
        function h(i) {
            i = a(i).get();
            if (i.length > 1) {
                a.each(i,
                function(j, k) {
                    a.uniform.elements.push(k)
                })
            } else {
                a.uniform.elements.push(i)
            }
        }
        a.uniform.noSelect = function(i) {
            function j() {
                return false
            }
            a(i).each(function() {
                this.onselectstart = this.ondragstart = j;
                a(this).mousedown(j).css({
                    MozUserSelect: "none"
                })
            })
        };
        a.uniform.update = function(i) {
            if (i == undefined) {
                i = a(a.uniform.elements)
            }
            i = a(i);
            i.each(function() {
                $e = a(this);
                if ($e.is("select")) {
                    spanTag = $e.siblings("span");
                    divTag = $e.parent("div");
                    divTag.removeClass(c.hoverClass + " " + c.focusClass + " " + c.activeClass);
                    spanTag.html($e.find(":selected").text());
                    if ($e.is(":disabled")) {
                        divTag.addClass(c.disabledClass)
                    } else {
                        divTag.removeClass(c.disabledClass)
                    }
                } else {
                    if ($e.is(":checkbox")) {
                        spanTag = $e.closest("span");
                        divTag = $e.closest("div");
                        divTag.removeClass(c.hoverClass + " " + c.focusClass + " " + c.activeClass);
                        spanTag.removeClass(c.checkedClass);
                        if ($e.is(":checked")) {
                            spanTag.addClass(c.checkedClass)
                        }
                        if ($e.is(":disabled")) {
                            divTag.addClass(c.disabledClass)
                        } else {
                            divTag.removeClass(c.disabledClass)
                        }
                    } else {
                        if ($e.is(":radio")) {
                            spanTag = $e.closest("span");
                            divTag = $e.closest("div");
                            divTag.removeClass(c.hoverClass + " " + c.focusClass + " " + c.activeClass);
                            spanTag.removeClass(c.checkedClass);
                            if ($e.is(":checked")) {
                                spanTag.addClass(c.checkedClass)
                            }
                            if ($e.is(":disabled")) {
                                divTag.addClass(c.disabledClass)
                            } else {
                                divTag.removeClass(c.disabledClass)
                            }
                        } else {
                            if ($e.is(":file")) {
                                divTag = $e.parent("div");
                                filenameTag = $e.siblings(c.filenameClass);
                                btnTag = $e.siblings(c.fileBtnClass);
                                divTag.removeClass(c.hoverClass + " " + c.focusClass + " " + c.activeClass);
                                filenameTag.text($e.val());
                                if ($e.is(":disabled")) {
                                    divTag.addClass(c.disabledClass)
                                } else {
                                    divTag.removeClass(c.disabledClass)
                                }
                            }
                        }
                    }
                }
            })
        };
        return this.each(function() {
            if (a.support.selectOpacity) {
                var i = a(this);
                if (i.is("select")) {
                    if (i.attr("multiple") != true) {
                        b(i)
                    }
                } else {
                    if (i.is(":checkbox")) {
                        d(i)
                    } else {
                        if (i.is(":radio")) {
                            f(i)
                        } else {
                            if (i.is(":file")) {
                                g(i)
                            }
                        }
                    }
                }
            }
        })
    }
})(jQuery);

















