// 
//  main.js
//  flyjam frontend
//  
//  Created by Zoltán Fehér on 2010-03-20.
//  Copyright 2010 Design Candy. All rights reserved.
// 

var 
  env = getEnv(),
  contentTarget = '#body_content',
  site_entry = true;

$(document).ready(function() 
{
  initAjaxLinks();

  $.address.externalChange(function(event) 
  {
    if ((document.location.hash.length && event.value[0] == '/') || ! site_entry)
    {
      jQuery(contentTarget).load(event.value, function (e) 
      {
        jQuery(contentTarget+' a.ajax_load').click(ajaxLoadClickHandler);
        initContents();
      });      
    }
  });

	$('#dates_select').click(function () { 		
		if ($(this).hasClass('future')) {
			$('#past_dates_list').slideUp(null, function () {
				$.get(env+'/events/future');
				$(this).empty();
				$('#dates_select').removeClass('future');
				$('#future_dates_list').slideDown();	
			});
		} else {
			$('#future_dates_list').slideUp(null, function () {
				$('#dates_select').addClass('future');
				changeYear(env+'/events/past');
			});	
		}
		return false;
	});

  // set fancybox
  initContents();
  
  jQuery('#playlist_container').hover(
    function (e) {
      jQuery('#playlist_items').slideDown('fast');
    },
    function (e) {
      jQuery('#playlist_items').slideUp('fast');
    }
  );
  
  jQuery('#music_player_switch').click(function (e) 
  {
    if (playlist.playing) 
    {
      playlist.stopPlayback();
    }
    else
    {
      playlist.startPlayback();
    }
  });
});

function initContents () 
{
  $(".article_photos a").fancybox();
}

function initAjaxLinks () 
{
  jQuery('a.ajax_load').click(ajaxLoadClickHandler);
}

function ajaxLoadClickHandler () 
{
  site_entry = false;
  document.location.hash = this.href.replace(/^http:\/\/[^\/]+/, '');

  return false;
}

function assignAjaxYearAction (data, status, request) {
	var past = $('#past_dates_list');
	past.html(data);
	$('a.ajax', past).click(changeYear);
	past.slideDown();
}

function changeYear (url) {
	url = typeof url == 'string' ? url : this.href;
	$.get(url, assignAjaxYearAction);
	return false;	
}

function getEnv () {
	if (window.location.pathname.match(/(^\/.+_dev\.php)/) === null) {
		return '';
	} else{
		return RegExp.$1;
	};
}

Playlist = function() {}
Playlist.prototype = {
  currentTrack : null,
  playlist : [],
  flash : null,
  playing: false,
  
  setPlaylist : function (list) 
  {
    $playlist_items = $('#playlist_items');
    this.playlist = list;
    for (var i=0; i < this.playlist.length; i++) 
    {
      jQuery('<li onclick="playlist.flash.changeTrack('+i+');">'+this.playlist[i].title+'</li>').appendTo($playlist_items)
    }
    this.listNode = $playlist_items;
  },
  
  updateCurrentTrack : function (track) 
  {
    document.getElementById('playlist_progress_bar').style.width = '0%';

    this.playing = true;
    this.currentTrack = track;
    
    // size check
    jQuery('#playlist_current_title').css({
      'font-size': this.playlist[track].title.length > 20 ? 10 : 15,
      'letter-spacing': this.playlist[track].title.length > 20 ? 0 : 2
    });
    // set title
    jQuery('#playlist_current_title').html(this.playlist[track].title);
    jQuery('li', this.listNode).removeClass('nowplaying');
    jQuery(this.listNode[0].childNodes[this.currentTrack]).addClass('nowplaying');
  },
  
  updateProgress : function (percent) 
  {
    this.playing = true;
    this.percent = percent;
    document.getElementById('playlist_progress_bar').style.width = percent+'%';
  },
  
  stopPlayback: function ()
  {
    this.flash.stopPlayback();
    this.playing = false;
  },
  
  startPlayback: function ()
  {
    if (this.currentTrack == null) 
    {
      playlist.flash.changeTrack(0);
    }
    else
    {
      playlist.flash.startPlayback();      
    }
  }
};

function playlistLoaded() 
{
  if (navigator.appName.indexOf("Microsoft") != -1) {
      playlist.flash = window['playlist_flash'];
  } else {
      playlist.flash = document['playlist_flash'];
  }
}

playlist = new Playlist();

swfobject.embedSWF("/flash/playlist.swf", "playlist_flash", "1", "1", "8.0.0", "/js/vendor/swfobject/expressInstall.swf", null , 
  {allowscriptaccess: 'sameDomain'}, { wmode: "transparent"}, playlistLoaded);

