jQuery(function($) {
  $.qi.auto_all();
});

/**
 * plugin to convert html5 metadata em atributos data do jQuery
 * nao faz o mesmo que o plugin metadata, pois este apenas:
 * <input data-foo="foo" data-bar="bar" /> em:
 * {foo:"foo", bar:"bar"} através de $("input").data()
*/
(function($) {
  var old_data = $.data;
  $.data = function( elem, name, data ) {
    html5data2metadata(elem);
    return old_data(elem, name, data);
  }

  function html5data2metadata(elem) {
    if (elem["html5data2metadata"]) return;
    elem["html5data2metadata"] = true;
    $that = $(elem);
    if(elem.dataset) {
      $that.data(elem.dataset);
    }else{
      if (!elem.attributes) return;
      $.each(elem.attributes, function(index, attrib) {
        if(attrib.name.indexOf("data-") == 0) {
          var value = attrib.value;
          if( typeof value == "string" 
              && value[0] == "{"
              && value[value.length-1] == "}" )
              value = eval("(" + value + ")")
          old_data(elem, attrib.name.substring(5), value);
        }
      })
    }
  }
})(jQuery);

(function($){

  $.qi = {

    auto_flash: function() {
      $.flash.expressInstaller = "http://neves.github.com/js/expressInstall.swf";
      $('a[rel=flash]').each(function() {
        var default_conf = {
          swf: this.href,
          width: "100%",
          height: "100%",
          hasVersion: 10
        };
        var $this = $(this);
        var local = $this.data();
        local.flashvars = {};
        $.each(local, function(index, value) {
          if(index.indexOf("flashvars-") == 0) {
            delete local[index];
            local.flashvars[index.substring(10)] = value;
          }
        })
        var conf = $.extend(true, {}, default_conf, local);
        var flash = $.flash.create(conf);
        var f = $(flash);
        $.each("class id style name".split(" "), function(index, attr) {
          if ( $this.attr(attr) ) f.attr( attr, $this.attr(attr) );
        })
        $this.replaceWith(flash);
      })
    },

    auto_fancybox: function() {
      // se estiver dentro de um frame, chama o fancybox no frame top.
      if (window.top == window) {
        $(".fancybox a").fancybox({
          transitionIn: 'elastic',
          transitionOut: 'elastic',
          overlayOpacity: 0.75,
          overlayColor: '#000',
          centerOnScroll: true,
          cyclic: true
        });
      }else{
        if(window.top.jQuery) {
          $(".fancybox a").click(function() {
            window.top.jQuery.fancybox({href:this.href});
            return false;
          })
        }else{
          if (window.console)
            console.log("coloque o fancybox no frame pai para funcionar.");
        }
      }
    },

    auto_input_default_text: function() {
      $("input[title], textarea[title]").focus(function() {
          if ($(this).val() == $(this)[0].title) {
              $(this).removeClass("default-text").val("");
          }
      }).blur(function() {
          if ($(this).val() == "" || $(this).val() == $(this)[0].title) {
              $(this).addClass("default-text").val($(this)[0].title);
          }
      }).blur();
    },

    auto_date: function() {
      $("input.qi-date").each(function(){
        var options = {
           changeMonth: true
          ,changeYear: true
          ,showOn: 'button'
          ,buttonText: '&nbsp;'
        };
        $.extend( true, options, $.data(this, "datepicker") );
        $(this).datepicker(options);
      })
    },

    auto_mask: function() {
      $.mask.options.autoTab = false;
      $("input[type=text][alt]").setMask();
    },

    auto_all: function() {
      if ($.flash) this.auto_flash();
      if ($.fancybox) this.auto_fancybox();
      this.auto_input_default_text();
      if ($.fn.datepicker) this.auto_date();
      if ($.fn.setMask) this.auto_mask();
    }

  }

})(jQuery);

