var tipcounter = 0;

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

function eraseCookie(name) {
  createCookie(name,"",-1);
}

// MUSICREVOLUTION BASE CLASS
if ( MusicRevolution == undefined ) {
  var MusicRevolution = {};
}

MusicRevolution.getFeaturedProductionMusic = function() {};

MusicRevolution.getPricing = function() {
  return $.ajax({ type: "GET", url: URI_FRONTEND + 'getpricing', async: false }).responseText;
};

MusicRevolution.getRandomTrack = function() {
  return $.ajax({ type: "GET", url: URI_FRONTEND + 'stream/getRandomTrack', async: false }).responseText;
}

MusicRevolution.getCookie = function() {
}

MusicRevolution.playStream = function( streamId, autoRepeat ) {
  $.get( URI_FRONTEND + 'stream/getStream/' + streamId, function( data ) {
    document.getElementById('musicbin').replacePlaylist( data, true, autoRepeat );
  } )
}

MusicRevolution.playCd = function( id, dynamic, from_track ) {
  $.get( URI_FRONTEND + 'cd/getcdplaylistjson/' + id + '/' + dynamic + '/' + from_track, function( data ) {
    document.getElementById('musicbin').replacePlaylist( data, true );
  } )
}

MusicRevolution.playSearchResults = function() {
  $.get( URI_FRONTEND + 'stream/getSearchResults', function( data ) {
    document.getElementById('musicbin').replacePlaylist( data, true );
  } )
}

// Flash calls this when it's ready to accept calls
MusicRevolution.flashReady = function() {

  var player = $('#music-player');
  var pos    = player.position();
  var width  = player.width();

  $('#songtooltip').css( { left: pos.left + width + 20 + 'px', top: pos.top + 240 + 'px' } );

  var matches = location.href.match(/binid=([0-9]+)/);
  if ( matches && matches.length == 2 ) {
    loadBinById( matches[1] );
  }

};

// MUSIC BIN FUNCTIONS
MusicRevolution.MusicBin = {};

MusicRevolution.MusicBin.myBins = function(){
  location = URI_FRONTEND + 'my_account_bins';
};

MusicRevolution.MusicBin.saveBin = function(bin){

  eval( 'var bin = ' + bin );

  var form = $('#savebinform');
  for ( i in bin ) {
    form.append('<input type="hidden" name="catalog[]" value="' + unescape(bin[i].catalog) + '">');
  }

  $('#musicbin-name').val( readCookie( 'musicbinname' ) );

  $('#savebindialog').dialog('open');
  return false
};

MusicRevolution.MusicBin.setSubscriptionData = function(data){
  MusicRevolution.MusicBin.subscriptionData = data;
}

MusicRevolution.MusicBin.showTrackInfo = function(song) {

  songjson = song;
  eval( 'var song = ' + song );

  $('#songtooltip_artist').html('<a class="nodecor" href="' + URI_FRONTEND + 'musician_profile?mppname=' + unescape(song.artist) + '">' + unescape(song.artist) + '</a>');
  $('#songtooltip_title').html(unescape(song.track));
  $('#songtooltip_catalog').html(unescape(song.catalog));

  $('#songtooltip_singletrack_url').attr('href', URI_FRONTEND + 'webshop/addproduct?type=track_catalog&id=' + unescape(song.catalog));
  $('#songtooltip_cd_url').attr('href', URI_FRONTEND + 'cd_details/bytrack_catalog_' + unescape(song.catalog));
  
  if ( this.subscriptionData ){
    if ( this.subscriptionData.treshold_price == 0 || parseFloat(song[this.subscriptionData.pricing]) <= this.subscriptionData.treshold_price ){
      $('#songtooltip a.link.mp3').attr('href', unescape(song.file)+'?downloadsub&mp3');
      $('#songtooltip a.link.wav').attr('href', unescape(song.file)+'?downloadsub&wav');
      $('#songtooltip div.links').show();
    } else {
      $('#songtooltip div.links').hide();
    }
  }

  $('#songtooltip_remove').click(function(e){
    document.getElementById('musicbin').removeFromBin(songjson);
    e.preventDefault();
  });

  var min = Math.floor( song.duration / 60 );
  var sec = Math.floor( song.duration % 60 );
  if ( sec < 10 ) {
    sec = '0' + sec;
  }

  $('#songtooltip_length').html( min + ':' + sec );

  eval('var pricing=' + MusicRevolution.getPricing() );

  var price = pricing.symbol + ' ';

  if ( pricing.rights == 'standard' ) {
    price += (song.standardprice * pricing.exchangerate).toFixed(3).toString().replace(/\.?0+$/, '');
  } else {
    price += (song.premiumprice * pricing.exchangerate).toFixed(3).toString().replace(/\.?0+$/, '');
  }

  $('#songtooltip_price').html(price);

  $('#songtooltip').show();

};

// SONG FUNCTIONS

MusicRevolution.Song = {};

MusicRevolution.Song.showDetails = function(song_id){
  // This isn't needed at all.
};

MusicRevolution.Song.purchase = function(song_id,buy_mode){

  switch ( buy_mode ) {
    case 'single':
      location = URI_FRONTEND + 'webshop/addproduct?type=track_catalog&id=' + song_id;
      break;

    case 'cd':
      location = URI_FRONTEND + 'cd_details/bytrack_catalog_' + song_id;
      break;

    case 'subscribe':
      location = URI_FRONTEND = 'subs_options';
      break;

  }

};

$(document).ready(function(e){

  var flashvars = {};
  flashvars.images = URI_STATIC + "flash_images";
  flashvars.disableAutoLoad = false;
  var params = {};
  params.menu = "false";
  params.allowscriptaccess = 'always';
  params.bgcolor ="#FFFFFF";
  params.wmode = "opaque";
  var attributes = {};
  attributes.id = "musicbin";
  swfobject.embedSWF("music_bin_v1.swf", "flashcontent", "185", "475", "9.0.24", URI_STATIC + "flashes/expressInstall.swf", flashvars, params, attributes);

  $("#savebindialog").dialog({
    bgiframe: true,
    autoOpen: false,
    modal: true
  });

  $('#savebinform').ajaxForm(function(data){
    mrAlert(
      data,
      {
        "Ok": function() {
          $(this).dialog("close");
          $(this).dialog("destroy");
          if ( $('#musicbin-empty:checked').val() ) {
            document.getElementById('musicbin').clearBin();
          }
          $("#savebindialog").dialog("close");
        }
      }
    )
  });

  $().mousemove(function(e){

    tipcounter++;
    if ( tipcounter < 30 ) {
      return;
    }
    tipcounter = 0;

    var tooltip  = $('#songtooltip');
    var h = tooltip.height();
    var w = tooltip.width();
    var p = tooltip.position();

    if ( h == null || w == null || p == null ) {
      return;
    }

    if ( ( e.pageY < p.top || e.pageY > p.top + h ) || e.pageX > p.left + w  ) {
      tooltip.hide();
    }

  });

});

