// Namespacing
var getsatisfaction = getsatisfaction || {};
getsatisfaction.main = getsatisfaction.main || {};
getsatisfaction.modal = getsatisfaction.modal || {modal_contents: []};

/**
 * Page setup for modal windows.
 */
getsatisfaction.main.setup_modal = function() {
  if (Drupal.settings.gs_tour_present) {
    getsatisfaction.modal.setup_tour_modal();
  }
  getsatisfaction.modal.setup_inline_modals();
}

/**
 * Dialog setup for page-specific modal windows.
 */
getsatisfaction.modal.setup_inline_modals = function() {
  if (Drupal.settings.inline_modals) {
    for (index in Drupal.settings.inline_modals) {
      var $modalWindow = $('<div id="gs-inline-modal-' + index + '" class="jqmWindow"><a class="jqmClose">' + Drupal.t('Close') + '</a><div id="jqmContent" class="modal clearfix"></div></div>');
		  $modalWindow.appendTo('body:not(.modal)');      
      var params = Drupal.settings.inline_modals[index];
      getsatisfaction.modal.init({target: '#gs-inline-modal-' + index, triggers: params.triggers, callback: getsatisfaction.modal.load_inline});
      getsatisfaction.modal.modal_contents.push(params.content);
    }
  }
}

/**
 * Dialog setup for the tour modal.
 */
getsatisfaction.modal.setup_tour_modal = function() {
  if (!$('#gs-tour-modal').length) {
	  var $modalWindow = $('<div id="gs-tour-modal" class="jqmWindow"><a class="jqmClose">' + Drupal.t('Close') + '</a><div id="jqmContent" class="modal clearfix"></div></div>');
		$modalWindow.appendTo('body:not(.modal)');
		getsatisfaction.modal.init({target: '#gs-tour-modal', triggers: '#sf-tour, .home .intro a', callback: getsatisfaction.modal.load_tour})
  }
}

/**
 * Preps a modal with its parameters.
 */
getsatisfaction.modal.init = function(params) {
	$(params.target).jqm({
		trigger: $(params.triggers),
		target: '#jqmContent',
		modal: true,
		toTop: true,
		onShow: params.callback,
		onHide: getsatisfaction.modal.close
	});
}

/**
 * Modal close callback
 */
getsatisfaction.modal.close = function(modal) {
	modal.w.hide();
	modal.o.hide();  
}

/**
 * Re-sizes and centers the specified modal window.
 */
getsatisfaction.modal.center = function(modal) {
  var $window = $(modal.w);
  var target_window = '#' + $window.attr('id');
  var $iframe = $('iframe, object', $('#jqmContent', target_window));
  var iframe_width = parseInt($iframe.attr('width'));
  $(target_window).css('width', (iframe_width + 50) + 'px');
  $(target_window).css('margin-left', ((iframe_width / 2) * -1) + 'px');  
}

/**
 * Loads the tour modal
 */
getsatisfaction.modal.load_tour = function(modal) {
  var $window = $(modal.w);
  $('#jqmContent', $window).html($('#video-content-tour').html());
  getsatisfaction.modal.center(modal);
  $window.hide().fadeIn();  
}

/**
 * Loads a generic inline modal.
 */
getsatisfaction.modal.load_inline = function(modal) {
  var index = modal.w.attr('id').split('-')[3];
  var $window = $(modal.w);
  $('#jqmContent', $window).html($(getsatisfaction.modal.modal_contents[index]).html());
  getsatisfaction.modal.center(modal);
  $window.hide().fadeIn();  
}


Drupal.behaviors.setup_modal = getsatisfaction.main.setup_modal;
