function bulk_edit(){
  url = 'bulk-edit-systems';
  $("#bulk-action").load(url, $("#systemListForm").serialize());
  popWindow('bulk-action');
}

function bulkActionSystemSubmit(){
  url = 'bulk-edit-submit-systems';
  $.post(url,
    $("#bulk-action-form").serialize(),
    function(data){
      $("#bulk-action-message").html(data)
    }
  );
}

function bulkActionSystemCertificationSubmit(){
  url = 'bulk-submit-system-certs';
  $.post(url,
    $("#bulk-action-cert-form").serialize(),
    function(data){
      $("#bulk-action-message").html(data)
    }
  );
}

function popWindow(boxId){
  $('#screen').css({	"display": "block", opacity: 0.7, "width":$(document).width(),"height":$(document).height()});
  $('#' + boxId).css("display", "block");
}

function unpopWindow(boxId){
  $('#' + boxId).css("display", "none");
  $('#screen').css("display", "none");
}

function contentPageMenuLoad(slug){
  if(slug){
    $('#cms-secondary-content').fadeOut('slow');

    $.get(slug + '-snip',
        {},
        function(data){
          $('#cms-secondary-content').queue(function()
          {
            $(this).html(data.mainContent);
            $(this).fadeIn('slow');
            $(this).dequeue();
          });

          $('.menu3').removeClass('selected');
          $('#menu-'+data.pageId).addClass('selected');
        },
        'json'
    );
  }
}

function setLoginCallback(){
  $('#loginForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      if($('[name=username]').val().length == 0 || $('[name=password]').val().length == 0){
        alert('Please enter both your username and password');
        return false;
      } else{
        return true;
      }
    },
    success: function processJSON(data){
      if(!data.OK){
        if(data.message){
          alert(data.message);
        } else{
          document.location = data.url;
        }
      } else{
        alert(data.message);
      }
    },
    dataType: 'json'
  });
}

function setAdminLoginCallback(){
  $('#loginForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      if($('[name=username]').val().length == 0 || $('[name=password]').val().length == 0){
        alert('Please enter both your username and password');
        return false;
      } else{
        return true;
      }
    },
    success: function processJSON(data){
      if(!data.OK){
        if(data.message){
          alert(data.message);
        } else{
          document.location = data.url;
        }
      } else{
        alert(data.message);
      }
    },
    dataType: 'json'
  });
}

function setForgotPasswordCallback(){
  $('#forgotForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      if($('[name=email]').val().length == 0 || $('[name=keystring]').val().length == 0){
        alert('Please enter your email and the Captcha value');
        return false;
      } else{
        return true;
      }
    },
    success: function processJSON(data){
      if(!data.OK){
        if(data.message){
          alert(data.message);
        } else{
          document.location = data.url;
        }
      } else{
        alert(data.message);
      }
    },
    dataType: 'json'
  });
}

function registerUser(){
  $('#registerUser').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      //TODO can encapsulate here
      passed = validateUserForm();
      if(!passed){
        return false;
      } else{
        return true;
      }
    },
    success: function processJSON(data){
      $('#message').html(data.message);
      if(data.OK){
        $('#message').removeClass('form-message-bad').addClass('form-message-good');
      } else{
        $('#message').removeClass('form-message-good').addClass('form-message-bad');
      }
      $('#message').show();
    },
    dataType: 'json'
  });
}

function becomePartnerForm(){
  $('#becomeAPartnerForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      //TODO can encapsulate here
      passed = validateBecomePartnerForm();
      if(!passed){
        return false;
      } else{
        return true;
      }
    },
    success: function processJSON(data){
      $('#message').html(data.message);
      if(data.OK){
        $('#message').removeClass('form-message-bad').addClass('form-message-good');
      } else{
        $('#message').removeClass('form-message-good').addClass('form-message-bad');
      }
      $('#message').show();
    },
    dataType: 'json'
  });
}

function becomeBuyerForm(){
  $('#becomeABuyerForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      //TODO can encapsulate here
      passed = validateBecomeBuyerForm();
      if(!passed){
        return false;
      } else{
        return true;
      }
    },
    success: function processJSON(data){
      $('#message').html(data.message);
      if(data.OK){
        $('#message').removeClass('form-message-bad').addClass('form-message-good');
      } else{
        $('#message').removeClass('form-message-good').addClass('form-message-bad');
      }
      $('#message').show();
    },
    dataType: 'json'
  });
}

function contactUsForm(){
  $('#contactUsForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      //TODO can encapsulate here
      passed = validateContactUsForm();
      if(!passed){
        return false;
      } else{
        return true;
      }
    },
    success: function processJSON(data){
      $('#message').html(data.message);
      if(data.OK){
        $('#message').removeClass('form-message-bad').addClass('form-message-good');
      } else{
        $('#message').removeClass('form-message-good').addClass('form-message-bad');
      }
      $('#message').show();
    },
    dataType: 'json'
  });
}

function adminEditUserLogin(){
  $('#adminEditUserLogin').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      return true;
    },
    success: function processJSON(data){
      if(data.OK){
        if(data.message){
          $('#adminEditUserLoginMessage').html(data.message);
          $('#adminEditUserLoginMessage').removeClass('form-message-bad').addClass('form-message-good');
          $('#adminEditUserLoginMessage').show();

          if(data.url){
            if(data.timeout){
              setTimeout("document.location='" + data.url + "'", data.timeout);
            } else{
              document.location = data.url;
            }
          }
        } else{
          document.location = data.url;
        }
      } else{
        $('#adminEditUserLoginMessage').html(data.message);
        $('#adminEditUserLoginMessage').removeClass('form-message-good').addClass('form-message-bad');
        $('#adminEditUserLoginMessage').show();
      }
    },
    dataType:'json'
  });
}

function editUserLogin(){
  $('#registerOwner').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      return true;
    },
    success: function processJSON(data){
      if(data.OK){
        if(data.message){
          $('#message').html(data.message);
          $('#message').removeClass('form-message-bad').addClass('form-message-good');
          $('#message').show();
          $('html, body').animate({scrollTop:0}, 'slow');

          if(data.url){
            if(data.timeout){
              setTimeout("document.location='" + data.url + "'", data.timeout);
            } else{
              document.location = data.url;
            }
          }
        } else{
          document.location = data.url;
        }
      } else{
        $('#message').html(data.message);
        $('#message').removeClass('form-message-good').addClass('form-message-bad');
        $('#message').show();
        $('html, body').animate({scrollTop:0}, 'slow');
      }
    },
    dataType:'json'
  });
}

function registerOwner(){
  $('#registerOwner').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      //TODO can encapsulate here
      passed = validateOwnerForm();
      if(!passed){
        return false;
      } else{
        return true;
      }
    },
    success: function processJSON(data){
      if(data.OK){
        if(data.message){
          updateDiv = 'message';
          $('#' + updateDiv).html(data.message);
          $('#' + updateDiv).removeClass('form-message-bad').addClass('form-message-good');
          $('#' + updateDiv).show();
          var targetOffset = $('#' + updateDiv).offset().top - 10;
          $('html,body').animate({scrollTop: targetOffset}, 'slow');

          if(data.url){
            if(data.timeout){
              setTimeout("document.location='" + data.url + "'", data.timeout);
            } else{
              document.location = data.url;
            }
          }
        } else{
          document.location = data.url;
        }
      } else{
        $('#message').html(data.message);
        $('#message').removeClass('form-message-good').addClass('form-message-bad');
        $('#message').show();
        $('html, body').animate({scrollTop:0}, 'slow');
      }
    },
    dataType:'json'
  });
}

function registerInstaller(formName, updateDiv){
  $('.datepicker').datepicker({dateFormat: 'yy-mm-dd'});
  $('#' + formName).ajaxForm({
    success: function processJSON(data){
      if(data.OK){
        if(data.message){
          $('#' + updateDiv).html(data.message);
          $('#' + updateDiv).removeClass('form-message-bad').addClass('form-message-good');
          $('#' + updateDiv).show();
          var targetOffset = $('#' + updateDiv).offset().top - 10;
          $('html,body').animate({scrollTop: targetOffset}, 'slow');

          if(data.updatePhoto){
            $('#' + data.updatePhoto + '-container').html('<img src="' + data.updatePhotoUrl + '" />');
          }

          if(data.url){
            if(data.timeout){
              setTimeout("document.location='" + data.url + "'", data.timeout);
            } else{
              document.location = data.url;
            }
          }
        } else{
          document.location = data.url;
        }
      } else{
        $('#' + updateDiv).html(data.message);
        $('#' + updateDiv).removeClass('form-message-good').addClass('form-message-bad');
        $('#' + updateDiv).show();
        var targetOffset = $('#' + updateDiv).offset().top - 10;
        $('html,body').animate({scrollTop: targetOffset}, 'slow');
      }
    },
    dataType:'json'
  });
}

function setSaveFlag(on){
  $('[name=saveFlag]').val(on);
}

function registerSystem(formName, updateDiv){
  $('#' + formName).ajaxForm({
    success: function processJSON(data){
      if(data.OK){
        if(data.message){
          $('#' + updateDiv).html(data.message);
          $('#' + updateDiv).removeClass('form-message-bad').addClass('form-message-good');
          $('#' + updateDiv).show();
          var targetOffset = $('#' + updateDiv).offset().top - 10;
          $('html,body').animate({scrollTop: targetOffset}, 'slow');

          if(data.url){
            if(data.timeout){
              setTimeout("document.location='" + data.url + "'", data.timeout);
            } else{
              document.location = data.url;
            }
          }
        } else{
          document.location = data.url;
        }
      } else{
        $('#' + updateDiv).html(data.message);
        $('#' + updateDiv).removeClass('form-message-good').addClass('form-message-bad');
        $('#' + updateDiv).show();
        var targetOffset = $('#' + updateDiv).offset().top - 10;
        $('html,body').animate({scrollTop: targetOffset}, 'slow');
      }
    },
    dataType:'json'
  });
}

function registerCertificationNumbers(formName, updateDiv){
  $('#certifications-table').tableHover({headCols: true, colClass: 'hover', cellClass: 'hovercell'});
  $('.datepicker').datepicker({dateFormat: 'yy-mm-dd'});

  $('#' + formName).ajaxForm({
    success: function processJSON(data){
      if(data.OK){
        if(data.message){
          $('#' + updateDiv).html(data.message);
          $('#' + updateDiv).removeClass('form-message-bad').addClass('form-message-good');
          $('#' + updateDiv).show();
          var targetOffset = $('#' + updateDiv).offset().top - 10;
          $('html,body').animate({scrollTop: targetOffset}, 'slow');

          if(data.url){
            if(data.timeout){
              setTimeout("document.location='" + data.url + "'", data.timeout);
            } else{
              document.location = data.url;
            }
          }
        } else{
          document.location = data.url;
        }
      } else{
        $('#' + updateDiv).html(data.message);
        $('#' + updateDiv).removeClass('form-message-good').addClass('form-message-bad');
        $('#' + updateDiv).show();
        var targetOffset = $('#' + updateDiv).offset().top - 10;
        $('html,body').animate({scrollTop: targetOffset}, 'slow');
      }
    },
    dataType:'json'
  });
}

function verifySystem(){
  $('#verifySystem').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      if($('[name=Individual_Name]').val().length == 0 || $('[name=Individual_Title]').val().length == 0
        || $('[name=Installer_Name]').val().length == 0 || $("[name=Electronic_Signature]:checked").val() == null){

        alert('Please indicate that you have reviewed your system specifications');
        return false;
      } else{
        return true;
      }
    },
    success: function processJSON(data){
      if(data.OK){
        document.location = data.url;
      }
    },
    dataType: 'json'
  });
}

function prepareMeterReading(){
  $('.datepicker').datepicker({dateFormat: 'yy-mm-dd'});
}

function registerMeterReading(){
  $('#newMeterReadingForm').ajaxForm({
    success: function processJSON(data){
      if(data.passed){
        if($('#no-meter-readings').length > 0){ //no meter readings
          $('<ul id="past-meter-reading-list">').insertAfter('#no-meter-readings');
          $('#no-meter-readings').remove();
        }

        $('#past-meter-reading-list').prepend('<li>' + data.latestReading + '</li>');
        $('#past-meter-reading-list').first().effect("highlight", {}, 'slow');
      } else{
        alert(data.message)
      }
    },
    dataType:'json'
  });
}

function uploadContract(){
  $('#uploadContractForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      $("#file-upload-loader").show();
    },
    success: function processJSON(data){
      $("#file-upload-loader").hide();
      if(data.passed){
        $('uploadContractFormContainer').hide();
        $('unsigned-contract-button').hide();
        $('signed-contract-button').show();
      }
      alert(data.message);
    },
    dataType:'json'
  });
}

function referInstaller(){
  $('#referInstallerForm').ajaxForm({
    success: function processJSON(data){
      alert(data.message);
    },
    dataType:'json'
  });
}


function uploadRequiredSystemDoc(){
  $('.datepicker').datepicker({dateformat: 'yy-mm-dd'});
  $("input[type=submit]").click(function(){
    typeName = $(this).attr("name").split('-');
    type = typeName[1];
    $('[name=submittedType]').val(type);
  });

  $('#uploadSystemDocumentForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      $("#status-img-" + type).attr('src', $('#img-path').val() + 'ajax-loader.gif');
    },
    success: function processJSON(data){
      if(data.OK){
        $("#status-img-" + type).attr('src', $('#img-path').val() + 'yellow-o.png');
        $("#file-" + type).hide();
        $("#submit-" + type).hide();

        if(type == 'contract'){
          $('#unsigned-contract-button').hide();
        }

        $("#download-" + type).show();

        alert(data.message);
        window.location.reload();
      } else{
        $("#status-img-" + type).attr('src', $('#img-path').val() + 'red-x.png');
        alert(data.message);
      }
    },
    dataType:'json'
  });
}

function addOperatingState(){
  $('#addOperatingStateForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      return true;
    },
    success: function processJSON(data){
      if(data.OK){
        $('#operating-state-list').prepend('<tr id="state-' + $('[name=Operating_State]').val() + '"><td>' + data.name + '</td><td><a href="#" onclick="removeOperatingState(\'' + $('[name=Operating_State]').val() + '\');return false;">X</a></td></tr>');
      }
    },
    dataType:'json'
  });
}

function terminateSystemContract(systemId){
  if(confirm('Are you sure?  Terminating your contract will permanently delete your contract and system details from our database')){
    $.post('terminate-system-contract',
      { sysid: systemId },
      function(data){
        if(data.OK){
          document.location = '';
        }
      },
      'json'
    );
  }
}

function recreateSystemContract(systemId){
  $.post('recreate-system-contract',
    { id: systemId },
    function(data){
      if(data.OK){
        alert(data.message);
      }
    },
    'json'
  );
}

function removeOperatingState(stateId){
  var installerId = $('#Op_State_Installer_ID').val();
  $.post('remove-operating-state',
    { Operating_State: stateId, Installer_ID:  installerId },
    function(data){
      if(data.OK){
        $('#state-' + stateId).remove();
      }
    },
    'json'
  );
}

function showOperatingStateForm(){
  $("#add-operating-state").show();
}

function chooseSystemMeterReading(){
  if($('[name=sysid]').val() == '-1'){
    return;
  }

  url = 'get-meter-form';
  $('#system-meter-reading-form').load(url, $("#systemMeterReadingForm").serialize());
}

function chooseSystemDocumentUpload(){
  if($('[name=sysid]').val() == '-1'){
    return;
  }

  url = 'get-required-docs';
  $('#system-documents-form').load(url, $("#systemDocumentsForm").serialize());
}

function loadSrecs(){
  url = 'commit-load-srecs-cb';
  $.post(url,
    {},
    function(data){
      alert('Upload Successful');
      document.location = "manage-srecs";
    },
    'json'
  );
}

function sellSrecs(){
  $('.datepicker').datepicker({dateformat: 'yy-mm-dd'});
  $('#sellSrecsForm').ajaxForm({
    beforeSerialize: function($form, options){
      var srecs = [];
      $('#srecListForm :checkbox:checked').each(function() {
        srecs.push($(this).val());
      });

      if(srecs.length > 0){
        $('#sell-srecList').val(srecs.join(','));
      }

      $("#sellSrecsForm input[name=Payment_Year]").val( $('#Payment_Year').val() );
      $("#sellSrecsForm input[name=Payment_Quarter]").val( $('#Payment_Quarter').val() );
    },
    beforeSubmit: function(formData, jqForm, options) {
      if(confirm('are you sure that you want to sell these srecs?')){
        return true;
      } else{
        return false;
      }
    },
    success: function processJSON(data){
      alert(data.message);
      if(data.OK){
        document.location = data.url;
      }
    },
    dataType: 'json'
  });
}

function unsellSrecs(){
  url = 'unsell-srecs-cb';
  $.post(url,
    $("#srecListForm").serialize(),
    function(data){
      alert(data.message);
      if(data.OK){
        document.location = data.url;
      }
    },
    'json'
  );
}

function payForSrecs(){
  url = 'pay-for-srecs-cb';
  $.post(url,
    $("#srecListForm").serialize() + '&' + $("#paymentQuarterForm").serialize(),
    function(data){
      renderCallbackData(data);
    },
    'json'
  );
}

function changeFilterOptions(){
  filterField = $('[name=filterField]').val();
  $('.filterInput').hide();
  $('#filter-srec-yes-no-container').hide();

  if(filterField == 'GATS_System_Name' || filterField == 'Cert' || filterField == 'for_3'){
    $('#filterSrecText').show();
  }
  if(filterField == 'Sell' || filterField == 'Paid' || filterField == 'for_3'){
    $('#filter-srec-yes-no-container').show();
  }
  if(filterField == 'Date_of_Generation' || filterField == 'for_3'){
    $('#filterSrecDateStart').show();
    $('#filterSrecDateEnd').show();
  }
}

function changeSystemFilterOptions(target){
  var filter = $(target).parent('div');
  var filterField = filter.find('.filterField').val();

  if( !filterField ){
    removeFilter(target);
    return;
  }

  filter.find('.filterInput').hide();
  filter.find('.filter-yes-no-container').hide();

  switch( filterField ){
    case 'Missing_Information':
    case 'Remote_Monitoring_Access':
    case 'remote_monitoring_access_verified':
    case 'missingInfoRequestStopped':
    case 'stop_registration_schedule_updates':
    case 'meter_reading_reminder_stopped':
    case 'is_indirectly_managed':
    case 'Information_Verified':
    case 'Contract_Uploaded':
    case 'State_Registration_Submitted':
    case 'GATS_Registration_Submitted' :
    case 'schedule_a_sent_to_gats':
    case 'System_Registration_Completed':
    case 'State_Ready_8':
    case 'State_Ready_5':
    case 'State_Ready_3':
    case 'State_Ready_6':
    case 'State_Ready_13':
    case 'GATS_Ready':
      filter.find('.filter-yes-no-container').show();
      break;
    default:
      filter.find('.filterInput').show();
      break;
  }

  if( !filter.next('.filter').length ){
    var new_filter = buildNewFilter(filter);
    new_filter.appendTo( filter.parent() );
  }

}

function removeFilter(target){
  var filter = $(target).parent('div');
  if( filter.parent().children('.filter').length > 1 ){
    filter.remove();
  }
}

function buildNewFilter(template){
  var new_filter = $(template).clone();

  // reset the fields
  new_filter.find(':checked').removeAttr('checked');
  new_filter.find('.filterInput, .filterField').val('');

  // increment the name
  new_filter.find('input, select').each( function(i,v){
    var parts = v.name.split('.');
    v.name = parts[0] + '.' + (++parts[1]);
  } );

  // hide value fields
  new_filter.find('span, .filterInput').hide();

  // add the missing change event handler
  new_filter.find('.filterField').change( function(e){
    changeSystemFilterOptions(e.target);
  } );

  return new_filter;
}


function filterSrecs(){
  $('.datepicker').datepicker({dateformat: 'yy-mm-dd'});
  $('#srecFilterForm').ajaxForm({
    target: '#srec-list'
  });
}

function filterSystems(){
  $('#systemFilterForm').ajaxForm({
    target: '#system-list'
  });
}

function filterInstallers(){
  $('#installerFilterForm').ajaxForm({
    target: '#installer-list'
  });
}

function recalculatePaymentInfo(){
  url = 'recalculate-payment-info-cb';
  $.post(url,
    $('#paymentQuarterForm').serialize(),
    function(data){
      renderCallbackData(data);
    },
    'json'
  );
}

function soldSRECReport(){
  url = 'pending-payment-report-cb';
  $.post(url,
    $("#srecListForm").serialize() + '&' + $("#paymentQuarterForm").serialize(),
    function(data){
      if(data.OK){
        document.location = data.url
      } else{
        alert(data.message);
      }
    },
    'json'
  );
}

function sendPayments(){
  url = 'send-payments-cb';
  $.post(url,
    $("#srecListForm").serialize() + '&' + $("#paymentQuarterForm").serialize(),
    function(data){
      if(data.OK){
        alert(data.message);
        document.location = data.url
      } else{
        alert(data.message);
      }
    },
    'json'
  );
}

function paymentReport(){
  url = 'batch-payment-report-cb';
  $.post(url,
    $("#srecListForm").serialize() + '&' + $("#paymentQuarterForm").serialize(),
    function(data){
      if(data.OK){
        document.location = data.url
      } else{
        alert(data.message);
      }
    },
    'json'
  );
}

function generateOwnerStatementGroups(){
  url = 'generate-owner-statement-group-report-cb';
  $.post(url,
    $("#srecListForm").serialize() + '&'+ $("#paymentQuarterForm").serialize(),
    function(data){
      if(data.OK){
        document.location = data.url
      } else{
        alert(data.message);
      }
    },
    'json'
  );
}

function bulkPaySrecs(){
  $('#bulkPaySrecsForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      $("#bulkPaySrecsForm input[name=Payment_Year]").val( $('#Payment_Year').val() );
      $("#bulkPaySrecsForm input[name=Payment_Quarter]").val( $('#Payment_Quarter').val() );
      $("#bulkPaySrecsFormContainer .file-upload-loader").show();
    },
    success: function processJSON(data){
      $("#bulkPaySrecsFormContainer .file-upload-loader").hide();
      alert(data.message);
      if(data.OK){
        document.location = data.url;
      }
    },
    dataType:'json'
  });
}

function bulkSellSrecs(){
  $('#bulkSellSrecsForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      $("#bulkSellSrecsForm input[name=Payment_Year]").val( $('#Payment_Year').val() );
      $("#bulkSellSrecsForm input[name=Payment_Quarter]").val( $('#Payment_Quarter').val() );
      $("#bulkSellSrecsFormContainer .file-upload-loader").show();
    },
    success: function processJSON(data){
      $("#bulkSellSrecsFormContainer .file-upload-loader").hide();
      renderCallbackData(data);
    },
    dataType:'json'
  });
}

function loadPortfolioPlans(){
  $('#loadPortfolioPlansForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      $("#loadPortfolioPlansFormContainer .file-upload-loader").show();
    },
    success: function processJSON(data){
      $("#loadPortfolioPlansFormContainer .file-upload-loader").hide();
      alert(data.message);
    },
    dataType:'json'
  });
}

function getSrecSalesSheet(){
  $('#getSrecSalesSheetForm .datepicker').datepicker({dateFormat: 'yy-mm-dd'});
  $('#getSrecSalesSheetForm').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) {
      $("#getSrecSalesSheetFormContainer .file-upload-loader").show();
    },
    success: function processJSON(data){
      $("#getSrecSalesSheetFormContainer .file-upload-loader").hide();
      if( data.OK ){
        document.location = data.url;
      }
      else {
        alert(data.message);
      }
    },
    dataType:'json'
  });
}

function generateStateRegistrationReport(){
  state = $('#sellState').val();
  url = 'state-ready-registration-cb';
  $.post(url,
    $("#systemListForm").serialize() + '&state=' + state,
    function(data){
      if(data.OK){
        document.location = data.url
      } else{
        alert(data.message);
      }
    },
    'json'
  );
}

function setStateSubmitted(){
  state = $('#sellState').val();
  url = 'set-state-submitted-cb';
  $.post(url,
    $("#systemListForm").serialize() + '&state=' + state,
    function(data){
      alert(data.message);
    },
    'json'
  );
}

function setGATSApproved(){
  url = 'set-gats-approved-cb';
  $.post(url,
    $("#systemListForm").serialize(),
    function(data){
      alert(data.message);
    },
    'json'
  );
}

function generateGATSRegistrationReport(){
  state = $('#sellState').val();
  url = 'gats-ready-registration-cb';
  $.post(url,
    $("#systemListForm").serialize() + '&state=' + state,
    function(data){
      if(data.OK){
        document.location = data.url
      } else{
        alert(data.message);
      }
    },
    'json'
  );
}

function submitCertifications(){
  url = 'submit-certifications';
  $.post(url,
    $("#registerCertification").serialize(),
    function(data){
      alert(data.message);
    },
    'json'
  );
}

function addCertification(){
  systemId = $('[name=Curr_Cert_System_ID]').val();
  state = $('[name=Curr_Cert_State]').val();
  stateSubDate = $('[name=Curr_Sub_Date]').val();
  stateAppDate = $('[name=Curr_Iss_Date]').val();
  rtoSubDate = $('[name=Curr_rto_submitted_date]').val();
  rtoAppDate = $('[name=Curr_rto_approved_date]').val();
  certNumber = $('[name=Curr_Cert_Number]').val();
  certStatus = $('[name=Curr_Cert_Status]').val();
  fakeCertNum = $('[name=fakeCertNum]').val();
  isBulk = $('[name=isBulk]').val();

  if(systemId.length == 0 || state.length == 0){
    alert('You must select both a system and state');
  } else{
    newRow = '<tr id="cert-row-' + fakeCertNum + '">';

    if(isBulk){
      newRow += '<td>' + $('#Curr_Cert_System_ID :selected').text() + '</td>';
    }

    newRow += '<td><input type="hidden" id="' + fakeCertNum + '-id_System" name="' + fakeCertNum + '-id_System" value="' + systemId + '" />' +
      '<input type="hidden" id="' + fakeCertNum + '-Cert_State" name="' + fakeCertNum + '-Cert_State" value="' + state + '" />' +
      $('#Curr_Cert_State :selected').text() + '</td>';
    newRow += '<td><input type="text" id="' + fakeCertNum + '-Cert_Number" name="' + fakeCertNum + '-Cert_Number" value="' + certNumber + '"></td>';
    newRow += '<td><input class="datepicker" disabled="disabled" /></td>';
    newRow += '<td><input class="datepicker" type="text" id="' + fakeCertNum + '-Sub_Date" name="' + fakeCertNum + '-Sub_Date" value="' + stateSubDate + '"></td>';
    newRow += '<td><input class="datepicker" type="text" id="' + fakeCertNum + '-Iss_Date" name="' + fakeCertNum + '-Iss_Date" value="' + stateAppDate + '"></td>';
    newRow += '<td><input class="datepicker" disabled="disabled" /></td>';
    newRow += '<td><input class="datepicker" type="text" id="' + fakeCertNum + '-Sub_Date" name="' + fakeCertNum + '-Sub_Date" value="' + stateSubDate + '"></td>';
    newRow += '<td><input class="datepicker" type="text" id="' + fakeCertNum + '-rto_approved_date" name="' + fakeCertNum + '-rto_approved_date" value="' + rtoAppDate + '"></td>';
    newRow += '<td><select id="' + fakeCertNum + '-Cert_Status" name="' + fakeCertNum + '-Cert_Status"></select></td>';
    newRow += '<td><a href="#" onclick="removeCertification(' + fakeCertNum + ');return false;">Delete</a></td></tr>';

    $(newRow).insertBefore('#cert-last-row');

    //add state options to new row
    $("#Curr_Cert_State option").each(function() {
      val = $(this).val();
      if(val != ''){
        $("#" + fakeCertNum + '-Cert_State').append('<option value="' + val + '">' + $(this).text() + '</option>');
      }
    });
    $("#" + fakeCertNum + '-Cert_State').val(state);

    //add status options to new row
    $("#Curr_Cert_Status option").each(function() {
      val = $(this).val();
      if(val != ''){
        $("#" + fakeCertNum + '-Cert_Status').append('<option value="' + val + '">' + $(this).text() + '</option>');
      }
    });
    $("#" + fakeCertNum + '-Cert_Status').val(certStatus);

    $('#certifications-table').tableHover({headCols: true, colClass: 'hover', cellClass: 'hovercell'});
    $('.datepicker').datepicker({dateFormat: 'yy-mm-dd'});

    fakeCertNum += 1;
    $('[name=fakeCertNum]').val(fakeCertNum);

    //empty out curr row
    $('#Curr_Cert_State').val('');
    $('#Curr_Cert_Number').val('');
    $('#Curr_Sub_Date').val('');
    $('#Curr_Iss_Date').val('');
    $('#Curr_rto_submitted_date').val('');
    $('#Curr_rto_approved_date').val('');
    $('#Curr_Cert_Status').val('missing-info');
  }
}

function removeCertification(certNumber){
  $('#cert-row-' + certNumber).remove();
  var $deletedCerts = $('[name=deletedCerts]').val();
  if($deletedCerts != ''){
    certArr = $deletedCerts.split(',');
    certArr[certArr.length] = certNumber;
  } else{
    certArr = [certNumber];
  }

  $('[name=deletedCerts]').val(certArr.join(','));
}

function standardFormCallback(formName, updateDiv, successCallback){
  $('.datepicker').datepicker({dateFormat: 'yyyy-mm-dd'});
  $('#' + formName).ajaxForm({
    success: function processJSON(data){
      if(data.OK){
        if(data.message){
          $('#' + updateDiv).html(data.message);
          $('#' + updateDiv).removeClass('form-message-bad').addClass('form-message-good');
          $('#' + updateDiv).show();
          var targetOffset = $('#' + updateDiv).offset().top - 10;
          $('html,body').animate({scrollTop: targetOffset}, 'slow');

          if( successCallback ){ successCallback(data); }

          if(data.url){
            if(data.timeout){
              setTimeout("document.location='" + data.url + "'", data.timeout);
            } else{
              document.location = data.url;
            }
          }
        } else{
          document.location = data.url;
        }
      } else{
        $('#' + updateDiv).html(data.message);
        $('#' + updateDiv).removeClass('form-message-good').addClass('form-message-bad');
        $('#' + updateDiv).show();
        var targetOffset = $('#' + updateDiv).offset().top - 10;
        $('html,body').animate({scrollTop: targetOffset}, 'slow');
      }
    },
    dataType:'json'
  });
}

function setInstallerIncentives(formName, updateDiv){
  $('#' + formName).ajaxForm({
    success: function processJSON(data){
      if(data.OK){
        if(data.message){
          $('#' + updateDiv).html(data.message);
          $('#' + updateDiv).removeClass('form-message-bad').addClass('form-message-good');
          $('#' + updateDiv).show();
          var targetOffset = $('#' + updateDiv).offset().top - 10;
          $('html,body').animate({scrollTop: targetOffset}, 'slow');

          if(data.url){
            if(data.timeout){
              setTimeout("document.location='" + data.url + "'", data.timeout);
            } else{
              document.location = data.url;
            }
          }
        } else{
          document.location = data.url;
        }
      } else{
        $('#' + updateDiv).html(data.message);
        $('#' + updateDiv).removeClass('form-message-good').addClass('form-message-bad');
        $('#' + updateDiv).show();
        var targetOffset = $('#' + updateDiv).offset().top - 10;
        $('html,body').animate({scrollTop: targetOffset}, 'slow');
      }
    },
    dataType:'json'
  });
}

function setIncentiveOverrides(formName, updateDiv){
  $('#' + formName).ajaxForm({
    success: function processJSON(data){
      if(data.OK){
        if(data.message){
          $('#' + updateDiv).html(data.message);
          $('#' + updateDiv).removeClass('form-message-bad').addClass('form-message-good');
          $('#' + updateDiv).show();
          var targetOffset = $('#' + updateDiv).offset().top - 10;
          $('html,body').animate({scrollTop: targetOffset}, 'slow');

          if(data.url){
            if(data.timeout){
              setTimeout("document.location='" + data.url + "'", data.timeout);
            } else{
              document.location = data.url;
            }
          }
        } else{
          document.location = data.url;
        }
      } else{
        $('#' + updateDiv).html(data.message);
        $('#' + updateDiv).removeClass('form-message-good').addClass('form-message-bad');
        $('#' + updateDiv).show();
        var targetOffset = $('#' + updateDiv).offset().top - 10;
        $('html,body').animate({scrollTop: targetOffset}, 'slow');
      }
    },
    dataType:'json'
  });
}

function processCustomerLogFormSuccess( formId, customerLogId, data ){
  var form = $( '#' + formId );
  // reset the form
  if( form ){
    $(form)
      .find(':input')
      .not(':button, :submit, :reset, :hidden')
      .val('')
      .removeAttr('checked')
      .removeAttr('selected');

    var d             = new Date();
    var formattedDate = ( d.getYear() + 1900 )
      + '-' + (d.getMonth() + 1)
      + '-' + d.getDate();

    // use today's date by default
    $(form).find('.datepicker').val(formattedDate);
  }

  // update the log with the new entry
  if( $( '#' + customerLogId ) ){
    $( '#' + customerLogId ).html( data.customerLog );
  }
}

function renderCallbackData( data ){
  $("<pre align='left'>")
    .text(data.message)
    .dialog( {
      "title": "Result",
      "modal": true,
      "height": 300,
      "width": 500,
      "buttons": {
        "Ok": function(){
          $(this).dialog("close");
          document.location = data.url;
        }
      }
    } );
}

