/**
 * @ngdoc function
 * @name domainManagerApp.controller:AboutCtrl
 * @description
 * # AboutCtrl
 * Controller of the domainManagerApp
 */
angular.module('goApp.contact', ['ngFx', 'ngAnimate', 'goApp.data', 'mandrill'])
  .controller('ContactController',['$scope', '$rootScope', '$famous', '$timeline', '$location', '$route', '$timeout', 'Data', 'Mandrill', '$mixpanel', function ($scope,  $rootScope, $famous, $timeline, $location, $route, $timeout, Data, Mandrill, $mixpanel) {

    'use strict';

    $scope.showError = false;
    $scope.showSuccess = false;
    $scope.showSubmit = true;

    $scope.lang = Data.getLang();

    $scope.t = {
      name    : ["Nome", "Name"],
      email   : ["Email", "Email"],
      message : ["Mensagem", "Message"],
      error   : ["Ocorreu um erro ao enviar a sua mensagem. Por favor tente novamente.", "An error ocured. Please try again."],
      success : ["Mensagem enviada com successo.", "Message sent."]
    };

    console.log('> Loading Contact Page');
    $mixpanel.track('Page View', { "Page": "Contact" });

    // Get Page Data
    var link = $location.url();
    $scope.pageData = Data.getPageData(link);
    $rootScope.$on('data:loaded', function(data) {
      if(!$scope.$$phase) {
        $scope.$apply(function(){
          $scope.pageData = Data.getPageData(link);
          $scope.showSlider();
        });
      }
    });

    $scope.sendMessage = function(msgData){
      console.log("> Sending message from " + msgData.name);
      Mandrill.sendMail(msgData);
      $mixpanel.track('Messsage Sent', { "Name": msgData.name, "email": msgData.email });
      if(!$scope.$$phase) {
        $scope.$apply(function(){
          $scope.showSubmit = false;
        });
      } else {
        $scope.showSubmit = false;
      }
    };

    // FadeIn
    $timeout(function(){
      $scope.showView = true;
    },100);
    // FadeOut
    $scope.fadeOut = function() {
      $scope.showView = false;
      $timeout(function(){
        $scope.showView = false;
        $location.path("/");
      },800);
    };

    $rootScope.$on('email_sent:error', function(data) {
      if(!$scope.$$phase) {
        $scope.$apply(function(){
          $scope.showError = true;
          $scope.showSubmit = false;
          $timeout(function(){
            if(!$scope.$$phase) {
              $scope.$apply(function(){
                $scope.showError = false;
                $scope.showSubmit = true;
              });
            }
          },5000);
        });
      }
    });

    $rootScope.$on('email_sent:success', function(data) {
      if(!$scope.$$phase) {
        $scope.$apply(function(){
          $scope.showSuccess = true;
          $scope.msgData.name = "";
          $scope.msgData.email = "";
          $scope.msgData.message = "";
          $timeout(function(){
            if(!$scope.$$phase) {
              $scope.$apply(function(){
                $scope.showSuccess = false;
                $scope.showSubmit = true;
              });
            } else {
              $scope.showSuccess = false;
              $scope.showSubmit = true;
            }
          },5000);
        });
      } else {
        $scope.showSuccess = true;
        $scope.msgData.name = "";
        $scope.msgData.email = "";
        $scope.msgData.message = "";
        $timeout(function(){
          if(!$scope.$$phase) {
            $scope.$apply(function(){
              $scope.showSuccess = false;
              $scope.showSubmit = true;
            });
          } else {
            $scope.showSuccess = false;
            $scope.showSubmit = true;
          }
        },5000);
      }
    });


  }]);