(function($){

    $.Flags = function(el, trigger){
        var base = this;
        
        // Access to jQuery and DOM versions of element
        base.$el = $(el);
        base.el = el;
        base.trigger = (trigger == null ? $(el) : trigger);
        
        base.init = function() {
            base.trigger.unbind('click');
            base.trigger.click(function() {
                var flag = base.$el;
                var target = flag.attr('href');        
                jQuery.getJSON(target, null, function(data) {
                    if (data.status == 'ok') {
                        flag.parent().addClass("blue");
                        if (data.state == 'set') {
                            flag.parent().addClass("strong");
                            flag.parent().siblings().each(function() {
                                $(this).html($(this).find("a").html());
                            });
                            flag.parent().html(flag.html());
                        }
                        if (data.state == 'clear') {
                            flag.parent().removeClass("strong");
                        }
                    }
                });
                $('.tooltip').hide();
                return false;
            });
        }                
        base.init();
    }

    $.fn.flags = function(trigger){
        return this.each(function(){
            (new $.Flags(this, trigger));
        });
    }

})(jQuery);
