(function($) {

var get_parent_url = (function(str){return str.replace(/\/[^/]+\/?$/, '/');}),
  my_url    = $('script:last').attr('src'),
  js_url    = get_parent_url(my_url),
  media_url = get_parent_url(js_url),
  img_url   = media_url + 'images/';

// website namespace, thx paulirish.com
$.RENCH = {
  // properties
  name: 'Renchaudio.com',
  js_url: js_url,
  media_url: media_url,
  img_url: img_url,

  //helpers
  get_parent_url: get_parent_url,

  // pages
  common: function(){

    // Opens PayPal forms on new tab/window, but keeps code validating :)
    $('form.paypal_form').attr('target','paypal');

    //Embed SoundCloud Flash player on releases that have release_soundcloud_url

    $('div.sc_player a').click(function(){
      var $this = $(this);
        $this.parents('div.sc_player').flashembed(
          {
            src: "http://player.soundcloud.com/player.swf",
            bgcolor: "#debd94",
            allowscriptaccess: "always"
          },
          {
            url: $this.attr('href'),
            auto_play: "true",
            player_type: "artwork",
            color: "9c734e"
          }
        );
      return false;
    });
  },

  other: function(){
    $(document).bind('finalized',function(){

      $('label').inFieldLabels({fadeOpacity:0.3});

      // create an absolute position div.mask on IE6/7/8 versions to emulate rgba
      if ($.browser.msie && $.browser.version <= 8){
        $('#content').find('.section').each(function(i) {

          var $this = $(this), inline_style = $this.attr('style'),
              $mask = $('<div class="mask" style="' + inline_style + '" />');
          $mask.prependTo($this);

          // IE6 needs some help with mask dimensions
          if ($.browser.msie && $.browser.version < 7) {
            var s_height = $this.innerHeight(),
                s_width = $this.innerWidth();
            $mask.css({'height': s_height, 'width': s_width} );

            // creates abbr tag on IE6
            document.createElement("abbr");

            //Fix png transparency
            DD_belatedPNG.fix('#footer, #nav, #logo img, div.sc_player .figcaption a, div.dukebox a, .product_list .figure .img img, .tracklist a.sm2_link');
          }

        });
      }

    });
  },

  finalize: function(){
    // .js remains in place
    $.UTIL.removeFlag('loading');
    //$.UTIL.setFlags('loaded');
  },

  // website specific pages
  s_photos_videos: function(){

    $('a[rel="gallery"]').colorbox({
      current: '',
      opacity: '.6',
      title: function(){
        var caption = $(this).parent().find('.figcaption').text();
        return caption
      }
    });

    $('a.media').media({
      width:420,
      height:340,
      type: 'swf',
      bgColor:'transparent'
    });
    return true; // to process "other"
  },

  s_releases: function(){

    var inlinePlayer = null;
    soundManager.url = js_url + '/soundmanagerv295b-20100323/swf/xdomain/';
    soundManager.flashVersion = 9;
    soundManager.defaultOptions.volume = 75;

    soundManager.onready(function() {
      if (soundManager.supported()) {
        inlinePlayer = new InlinePlayer();
        inlinePlayer.config.playNext = true;


        $('div.tracklist a.no_dl').each(function (i, el) {
          $(el).bind("contextmenu", function(e) {
              e.preventDefault();
          });
          var data = $(el).data('song_link') || $(el).data('song_link', undefined);
          if (!data) {
              $(el).data('song_link', el.href);
          }
          el.href = '#';
        });

        // TODO: implement a control bar
//         $('<ul class="player_controls"><li class="play_pause">play</li><li class="stop">stop</li><li class="mute">mute</li></ul>').appendTo('div.tracklist');
//
//         var ip = inlinePlayer;
//         // play/pause button
//         $('.play_pause').click(function(){
//           if (!ip.lastSound) {
//             // No sound played yet (user's first click was on "play_pause" button)
//             ip.handleClick({'target':ip.links[0]}); // play first mp3 on tracklist
//           } else {
//             // there is some sound
//             ip.lastSound.togglePause();
//           }
//         });
      }
    });
    return true; // to process "other"
  }
};

$.UTIL = {
  fire: function(funcname, args){
    var namespace = $.RENCH;
    if (funcname !== '' && namespace[funcname] && typeof namespace[funcname] == 'function')
      return namespace[funcname](args);
    return true;
  },
  loadEvents: function(){
    var bodyId = document.body.id, fire=$.UTIL.fire;
    fire('common');
    fire(bodyId) && fire('other');
    fire('finalize');
    $(document).trigger('finalized');
  },
  removeFlag: function(flag) {
    var H=document.documentElement, c='className', f=new RegExp('\\b' + flag + '\\b');
    H[c]=H[c].replace(f, '');
  },
  setFlags: function() {
    var H=document.documentElement, c='className';
    H[c]=[H[c]].concat($.makeArray(arguments)).join(' ');
  }
};

// loading & js flags
$.UTIL.setFlags('loading js');

// kick it all off here
$(document).ready($.UTIL.loadEvents);

})(jQuery)
