/** 2008 (c) Copyright Personal Life Media, Inc.  All rights reserved. **/
var Constants = {};
Constants.SIZES = [
  { width: 160, height: 324 },
  { width: 219, height: 429 },
  { width: 425, height: 370 }
];

function Dimensions(size) {
  var dimensions = Constants.SIZES[size];
  if (null !== dimensions) {
    this.width = dimensions.width;
    this.height = dimensions.height;
  }
}

function renderWidgetPreview() {
  var backgroundColor = $('#widget_background_color').attr('value');
  var screenColor = $('#widget_screen_color').attr('value');
  var logoUrl = $('#widget_logo_url').attr('value');
  var size = parseInt($('#widget_size').attr('value'), 10);
  var showLinks = $('#widget_show_links').attr('checked');
  var feedFields = $('#widget_selected_feeds li input');
  var feeds = null;
  var dimensions = new Dimensions(size);
  if (null !== feedFields && 0 !== feedFields.size()) {
    feedFields.each(function () {
      var url = $(this).attr('value');
      if (null !== url) {
        feeds = (null === feeds) ? url : feeds + "," + url;
      }
    });
    swfobject.embedSWF(
      'http://assets.personallifemedia.com/widget/container.swf',
      'widget_preview', 
      dimensions.width, 
      dimensions.height, 
      '9.0.0', 
      false, 
      {
        host: escape('http://assets.personallifemedia.com/widget/'),
        bgcolor: backgroundColor.replace(/#/, ''),
        logoUrl: escape(logoUrl),
        size: size + 1,
        links: showLinks,
        screenColor: screenColor,
        feeds: escape(feeds)
      },
      {
        base: 'http://assets.personallifemedia.com/widget/'
      }
    );
    $('#widget_preview').css({
      width: dimensions.width,
      height: dimensions.height
    });
  } else {
    alert('Please select one or more podcasts to add to the widget');
  }
}

/* higlightPodcast jQuery plugin */
$.fn.fadePodcast = function (options) {
  var opts = $.extend({}, $.fn.fadePodcast.defaults, options);
  
  var fadeInClass = opts.fadeInClass;
  var fadeOutClass = opts.fadeOutClass;
  $(this).toggle(function () {
    var elem = $(this);
    if ($.fn.fadePodcast.selectPodcast(elem)) {
      elem.addClass(fadeOutClass);
      elem.removeClass(fadeInClass);
      elem.fadeTo('normal', 0.33);      
    }
  }, function () {
    var elem = $(this);
    if ($.fn.fadePodcast.deSelectPodcast(elem)) {
      elem.addClass(fadeInClass);
      elem.removeClass(fadeOutClass);
      elem.fadeTo('normal', 1);
    }
  });
};

$.fn.fadePodcast.defaults = {
  fadeInClass: 'unselected',
  fadeOutClass: 'selected'
};

$.fn.fadePodcast.translateToSelectedId = function (id) {
  var selectedId = "selected-" + id;
  return selectedId;
};

$.fn.fadePodcast.makeSortable = function (elem) {
  elem.sortable({
    delay: 0,
    opacity: 0.5
  });
};

$.fn.fadePodcast.selectPodcast = function (item) {
  var selectedFeeds = $('#widget_selected_feeds');
  var children = selectedFeeds.children();
  var returnValue = false;
  if (0 <= children.size() && children.size() < 5) {
    var selectedItem = item.clone();
    selectedItem.attr({id: $.fn.fadePodcast.translateToSelectedId(item.attr('id'))});
    selectedFeeds.append(selectedItem);
    returnValue = true;
  } else if (5 === children.size()) {
    alert('You have already selected five feeds to add to the widget.  Please deselect one to select another.');
  }
  $.fn.fadePodcast.makeSortable(selectedFeeds);
  return returnValue;
};

$.fn.fadePodcast.deSelectPodcast = function (item) {
  var selectedFeeds = $('#widget_selected_feeds');
  var children = selectedFeeds.children();
  $('#' + $.fn.fadePodcast.translateToSelectedId(item.attr('id'))).remove();
  $.fn.fadePodcast.makeSortable(selectedFeeds);
  return true;
};

/* coverUp jQuery plugin */
$.fn.coverUp = function (options) {
  var opts = $.extend({}, $.fn.coverUp.defaults, options);
  $(this).addClass(opts['class']);
};

$.fn.coverUp.defaults = {
  'class': 'hide'
};

jQuery(document).ready(function ($) {
  $('form#widget').submit(function () {
    renderWidgetPreview();
    return false;
  });
  $('#widget_logo_url').focus(function () {
    $('#logo_preview').html('Previewing...');
  });
  $('#widget_logo_url').blur(function () {
    var preview_box = $('#logo_preview');
    var url = $('#widget_logo_url').attr('value');
    var bgColor = $('#widget_screen_color').attr('value');
    preview_box.html('<img src="' + url + '" alt="previewed logo"/>');
  });
  $('.feeds input[type*=checkbox]').coverUp();
  jQuery.farbtastic('#color_picker').linkTo('#widget_background_color');
  $('.feeds .feed').fadePodcast({});
  $('#widget_screen_color').change(function () {
    var preview = $('#logo_preview');
    switch($(this).attr('value')) {
      case 'black':
        preview.css('background', '#000');
        preview.css('color', '#fff');
        break;
      case 'white':
        preview.css('background', '#fff');
        preview.css('color', '#000');
        break;
      default:
        preview.css('background', '#000');
        preview.css('color', '#ff');
    }
  });
  $('#logo_preview').css('background', '#000');
  $('#logo_preview').css('color', '#fff');
});
