﻿(function($) {
    $.widget("ui.combobox", {
        _create: function() {
            var self = this;
            var select = this.element.hide(),
					selected = select.children(":selected"),
					value = selected.val() ? selected.text() : "";
            var divMain = $("<div>")
					.addClass("drop_busca_header")
					.insertAfter(select);

            var div = $("<div>")
					.appendTo(divMain)
					.addClass("bg_drop_busca");

            var input = $("<input>")
					.appendTo(div)
					.val(value)
					.autocomplete({
					    delay: 0,
					    minLength: 0,
					    source: function(request, response) {
					        var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
					        response(select.children("option").map(function() {
					            var text = $(this).text();
					            if (this.value && (!request.term || matcher.test(text)))
					                return {
					                    label: text.replace(
											new RegExp(
												"(?![^&;]+;)(?!<[^<>]*)(" +
												$.ui.autocomplete.escapeRegex(request.term) +
												")(?![^<>]*>)(?![^&;]+;)", "gi"
											), "<strong>$1</strong>"),
					                    value: text,
					                    option: this
					                };
					        }));
					    },
					    select: function(event, ui) {
					        ui.item.option.selected = true;

					        self._trigger("selected", event, {
					            item: ui.item.option
					        });
					    },
					    change: function(event, ui) {
					        if (!ui.item) {
					            var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i"),
									valid = false;
					            select.children("option").each(function() {
					                if (this.value.match(matcher)) {
					                    this.selected = valid = true;
					                    return false;
					                }
					            });
					            if (!valid) {
					                // remove invalid value, as it didn't match anything
					                $(this).val("");
					                select.val("");
					                return false;
					            }
					        }
					    }

					})
					.addClass("form_drop_busca");

            input.data("autocomplete")._renderItem = function(ul, item) {
                $(ul).css("z-index", "1000");
                return $("<li></li>")
						.data("item.autocomplete", item)
						.append("<a class=\"link_drop_auto_complete\">" + item.label + "</a>")
						.appendTo(ul);
            };

            var divButton = $("<div>")
					.appendTo(divMain)
					.addClass("setinha_drop_busca");

            $("<button>&nbsp;</button>")
					.attr("tabIndex", -1)
					.attr("title", "Show All Items")
					.appendTo(divButton)

					.click(function(event, ui) {
					    event.preventDefault();
					    // close if already visible
					    if (input.autocomplete("widget").is(":visible")) {
					        input.autocomplete("close");
					        return;
					    }

					    // pass empty string as value to search for, displaying all results
					    input.autocomplete("search", "");
					    input.focus();
					});
        }
    });


    $.fn.jWIBannerCarousel = function(o) {
        o = $.extend({
            idBannerPosition: 0,
            cssClass: '',
            width: 0,
            height: 0
        }, o || {});
        $(this).hide();
        var divMain = $("<div>")
            .addClass("conteudo_pags_banners")
            .insertAfter($(this));

        var ul = $("<ul>")
            .attr("id", "ulBannerPosition" + o.idBannerPosition)
            .appendTo(divMain);

        $(this).css("width", o.width + "px");
        $(this).css("height", o.height + "px");
        $(this).cycle({
            fx: 'fade',
            speed: 'slow',
            timeout: 7000,
            pager: "#ulBannerPosition" + o.idBannerPosition,

            pagerAnchorBuilder: function(idx, el) {
                return '<li><a href="#">' + (idx + 1) + '</a></li>';
            }
        });
        $(this).show();
    };
})(jQuery);
