function bulk_edit(){
  url = 'bulk-edit-systems';
  $("#bulk-action").load(url, $("#bulkActionForm").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 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 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){
          $('#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 registerInstaller(){
  $('#registerInstaller').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) { 
      //TODO can encapsulate here
      passed = validateInstallerForm();
      if(!passed){
        return false;
      } else{
        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 setSaveFlag(on){
  $('[name=saveFlag]').val(on);
}

function registerSystem(){
  $('#registerSystem').ajaxForm({
    beforeSubmit: function(formData, jqForm, options) { 
      if($('[name=saveFlag]').val() == '1'){
        return true;
      } else{
        //TODO can encapsulate here
        passed = validateSystemForm();
        if(!passed){
          return false;
        } else{
          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 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({
    beforeSubmit: function(formData, jqForm, options) { 
      if($('[name=wattage]').val().length != 0 && $('[name=meterDate]').val().length != 0){
        return true;
      } else{
        alert('Please fill in your wattage and a date');
        return false;
      }
    },
    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 uploadRequiredSystemDoc(){
  $("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();
      } 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 removeOperatingState(stateId){
  $.post('remove-operating-state', 
    { Operating_State: stateId }, 
    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());
}
