var Ajax;
if(Ajax && (Ajax != null)) {
  Ajax.Responders.register({
    onCreate: function() {
      if($('spinner') && Ajax.activeRequestCount > 0)
        Effect.Appear('spinner', {duration:0.5,queue:'end'});
    },
    onComplete: function() {
      if($('spinner') && Ajax.activeRequestCount == 0)
        Effect.Fade('spinner', {duration:0.5,queue:'end'});
    }
  });
}
;

function generateMessages(messages, className) {
  var content = '<div class="default-message ' + className + '"><ul>';
  $.each(messages, function() {
    content += '<li>' + this + '</li>';
  });
  content += '</ul></div>';
  return content;
}
;

var ArchiveAssessment = {
  handleAjaxResponse: function (response, textStatus) {
    switch (response.status) {
      case 200:
        $('#message').html(generateMessages(response.messages, "success"));
        $('#manage-unarchived-container').replaceWith(response.content.unarchived);
        $('#manage-archived-container').replaceWith(response.content.archived);
        break;

      case 400:
        $('#message').html(generateMessages(response.messages, "error"));
        break;

      case 500:
        break;
    }
  },
  archive: function (event) {
    if(confirm('Once an assessment is archived it cannot be undone, continue?')) {
      jQuery.ajax({
        type:"POST",
        url: event.data.submitTo,
        dataType:"json",
        success: ArchiveAssessment.handleAjaxResponse,
        beforeSend:function() {
          ArchiveAssessment.showSpinner(event.data.token)
        },
        complete: function() {
          ArchiveAssessment.hideSpinner(event.data.token)
        }
      })
    }
  },
  showSpinner: function(token) {
    jQuery('#ajax_spinner_' + token).show()
  },
  hideSpinner: function(token) {
    jQuery('#ajax_spinner_' + token).hide()
  }
};

var EditAccount = {
  handleAjaxResponse: function(response, textStatus) {
    switch (response.result.status) {
      case 200:
        $('#signInName').html(response.result.usersName)

      case 500:
        $('#editAccountMessage').html(response.result.message)
    }
  }
};

var SignIn = {
  setCookie: function() {
    if($('#remember_me').attr('checked')) {
      var username = $('#user_name').attr("value");
//      var password = $('#password').attr("value");
      $.cookie('username', username, { expires: 14 });
//      $.cookie('password', password, { expires: 14 });
      $.cookie('remember', true, { expires: 14 });
    } else {
      // reset cookies
      $.cookie('username', null);
//      $.cookie('password', null);
      $.cookie('remember', null);
    }
  },
  getCookie: function() {
    var remember = $.cookie('remember');
    if (remember == 'true') {
      var username = $.cookie('username');
//      var password = $.cookie('password');
      $('#user_name').attr("value", username);
//      $('#password').attr("value", password);
      $('#remember_me').attr('checked', true);
      $('#password').focus();
    } else {
      $('#user_name').focus();
    }
  },
  handleAjaxResponse: function(response, textStatus) {
    switch (response.status) {
      case 200:
        if(response.url) {
          window.location = response.url;
        }
        else {
          $("#sign_in_dialog").replaceWith(response.content.update);
          $("#password").focus();
        }
        break;

      case 400:
        $('#error_message').html(generateMessages(response.messages, "error"));
        $("#error_message").show();
        $("#user_name").val('');
        $('input[type="password"]').val('');
        $("#user_name").focus();
    }
  }
};

var EditEndDate = {
  handleAjaxResponse: function(response, textStatus) {
    switch (response.status) {
      case 200:
        $('#end_date_value_id_' + response.content.token).html(response.content.endDate);
        break;

      case 400:
        $('#message').html(response.messages);
        break;

      case 500:
        $('#message').html(response.messages);
        break;
    }
  },
  activateDatePicker: function(event) {
    var datePicker = $('#' + event.data.inputElementId).datepicker({
      numberOfMonths: [1,2],
      beforeShow: function(input) {
        $('#' + event.data.linkElementId).hide();
        $('#' + event.data.valueElementId).hide();
        $(input).show();
      },
      onSelect: function(dateText, instance) {
        $.ajax({
          type:"POST",
          url: event.data.submitTo,
          data: {endDate: dateText, token: event.data.token},
          dataType:"json",
          success: EditEndDate.handleAjaxResponse,
          beforeSend:function() {
            EditEndDate.showSpinner(event.data.token)
          },
          complete: function() {
            EditEndDate.hideSpinner(event.data.token)
          }
        })
      },
      onClose: function(dateText, instance) {
        $(this).hide();
        $('#' + event.data.valueElementId).show();
        $('#' + event.data.linkElementId).show();
      }
    });

    datePicker.datepicker('show');
  },
  showSpinner: function(token) {
    $('#ipe_ajax_spinner_' + token).show()
  },
  hideSpinner: function(token) {
    $('#ipe_ajax_spinner_' + token).hide()
  }
};

var Exception = {
  visualize: function() {
    jQuery("a:contains('TECHNICAL SUPPORT')").effect("pulsate", {times:4}, 1000)
  }
};
var Survey = {
  currentFontSize: function() {
    return jQuery('td.even-survey')[1].style.fontSize
  },
  storeFontSize: function() {
    jQuery('#surveyFontSize').val(Survey.currentFontSize());
  },
  updateFontSize: function(newSize) {
    $('document').ready(function() {
      $('#fontResize').fontResize({defaultChangePercent: 5, defaultTargetNode:".survey-question-row td"});
    });

    //alert(newSize)
    //    $(".fontScaler").fontScaler({
    //          target: ".survey-question-row td",
    //          increment: 'variable',
    //          fx: 'smooth',
    //          containerclass: 'fontScaler',
    //          variable:{
    //            step:20
    //          },
    //          store:false, //IE8 breakage
    //          storeTime:2000
    //
    //        });
    //    $('.survey-question-row td').css('font-size',newSize)

  }
};