// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

soundManager.url = '/swf/'
soundManager.debugMode = false; // disable or enable debug output

soundManager.onready(function(oStatus) {
  if (oStatus.success) {
    "a.track".behave('click', playPause);
  } else {
    // uh-oh, SM2 failed to start - error, unsupported etc.
  }
});

document.onReady(function() {
  "ul.videos li a".behave('click', videoLigthbox);
  initMenu();
  initQuickMenu();
  
  RR.remotize_form('event_answer_form');
  var form = $('fanship_form');
  if (form) {
    form.remotize({spinner: $('spinner')}).enable().action += '.js';
  }
  var form = $('proposed_artist_form');
  if (form) {
    form.remotize({spinner: $('spinner')}).enable().action += '.js';
  }
  
  "#genres_select".behave('change',sendArtistSearchForm);
  
  "#artists".behave('click', paginationLinksDelegation);
});
document.on('click', quickMenuClose());

var pass = "Caprices33"
var lastSound = null
var date = new Date();
var milliseconds = date.getTime();
var events = {
  // handlers for sound events as they're started/stopped/played
  play: function() {
    this.element.toggleClass('playing');
  },
  stop: function() {
    this.element.removeClass('playing');
  },
  pause: function() {
    this.element.toggleClass('playing');
  },
  resume: function() {
    this.element.toggleClass('playing');
  },
  finish: function() {
    this.element.removeClass('playing');
  }
};

function playPause(event) {
  event.stop();
  var trackID = this.id.match(/^track_([0-9]+)$/)[1];
  var thisSound = soundManager.getSoundById('track'+trackID);
  if (thisSound) {
    // already exists
    if (thisSound == lastSound) {
      // and was playing (or paused)
      thisSound.togglePause();
    } else {
      // different sound
      if (lastSound) lastSound.stop();
      thisSound.togglePause(); // start playing current
    }
  }
  else {
    var key = milliseconds + "#" + trackID;
    var cryptedKey = GibberishAES.enc(key, pass, 256);
    thisSound = soundManager.createSound({
      id: 'track'+trackID,
      url: '/tracks?k=' + cryptedKey,
      onplay:events.play,
      onstop:events.stop,
      onpause:events.pause,
      onresume:events.resume,
      onfinish:events.finish
    });
    // tack on some custom data
    if(this) { thisSound.element = this }; // DOM node for reference within object event handlers
    
    // stop last sound
    if (lastSound) lastSound.stop();
    thisSound.play();
  }
  lastSound = thisSound; // reference for next call
};

function videoLigthbox(event) {
  var object = this.next('div').innerHTML;
  var video = new Lightbox();
  video.show(object);
  event.stop();
};

// QuickMenu
var timeout    = 500;
var closeTimer = 0;
var quickMenuItem = 0;

function initQuickMenu() {
  $$('#quick_menu > li').each('observe', 'mouseover', quickMenuOpen);
  $$('#quick_menu > li').each('observe', 'mouseout', quickMenuTimer);
}

function quickMenuOpen() {
  quickMenuCancelTimer();
  quickMenuClose();
  quickMenuItem = this.first('ul');
  if(quickMenuItem) { quickMenuItem.show(); };
}

function quickMenuClose() {
  if(quickMenuItem) quickMenuItem.hide();
}

function quickMenuTimer() {
  closeTimer = window.setTimeout(quickMenuClose, timeout);
}

function quickMenuCancelTimer() {
  if(closeTimer) {
    window.clearTimeout(closeTimer);
    closeTimer = null;
  }
}

function initMenu() {
  $$('#main_menu ul').each('hide');
  $$('#main_menu li.current').each(function(element) {
    var sub_menu = element.first('ul');
    if(sub_menu) { sub_menu.show() };
  });
  $$('#main_menu li div').each('observe','click', function(event) {
    var checkElement = this.next('ul');
    if(checkElement && checkElement.visible()) {
      checkElement.slide();
      event.stop();
    }
    if(checkElement && !checkElement.visible()) {
      $$('#main_menu ul').each(function(element) {
        if(element.visible()) { element.slide() }
      });
      checkElement.slide({onFinish: function() {
        Cufon.refresh();
      }});
      event.stop();
    }
  });
};

function incrementFanshipsCount() {
  var fanshipsCount = $('fanships_count');
  var count = fanshipsCount.first('cufontext').innerHTML.to_int();
  fanshipsCount.innerHTML = count + 1;
  Cufon.refresh();
};
function decrementFanshipsCount() {
  var fanshipsCount = $('fanships_count');
  var count = fanshipsCount.first('cufontext').innerHTML.to_int();
  fanshipsCount.innerHTML = count - 1;
  Cufon.refresh();
};
function removeUidFromFansList(uid) {
  $$('.fb_profile_pic_rendered').each(function(element) {
    if (element.get('uid') == uid) { element.parent().remove() };
  });
};
function removeProposedArtist(liID, href) {
  var li = $(liID);
  Xhr.load(href, {
    method: 'delete',
    params: {proposed: true},
    spinner: li.select('img.spinner').first(),
    onSuccess: function() {
      li.fade();
    }
  });
};

function sendArtistSearchForm() {
  $('search_form').send({
    spinner: $('form_spinner')
  });
}

// var remotizePaginationLinks = new Behavior("#artists .pagination a", "click", function(event) {
//   event.stop();
//   Xhr.load(this.href + '&format=js');
// });

var paginationLinksDelegation = Behavior.delegate({
  ".pagination a": function(event) {
    event.stop();
    var element = $(event.target);
    Xhr.load(element.href + '&format=js', {
      spinner: element.parent().next('.spinner')
    });
  } 
});

// FACEBOOK

function facebookPublish(message, attachment, actionLinks) {
  FB.Connect.streamPublish(message, attachment, actionLinks, null, null, null, true);
};

function facebookQuizPublish(message, attachmentName, quizzUrl, actionLink) {
  $('participation_submit').disable();
  $('spinner').show();
  var attachment = {
   'name':attachmentName,
   'href':quizzUrl
  };
  var actionLinks = [{'text':actionLink, 'href':'http://www.caprices.ch'}];
  FB.Connect.streamPublish(message, attachment, actionLinks, null, null, facebookQuizPublishCallback, true);
};

function facebookQuizPublishCallback(post_id,exception) {
  $('new_participation').submit();
};

