var preloadImages = [
  'header-btn-act.png',
  'menu-act.png',
  'menu-left-act.png',
  'menu-right-act.png',
  'button-register-act.png',
  'i-settings-act.png',
  'i-datings-act.png',
  'i-payments-act.png',
  'i-subscriptions-act.png',
  'smenu.png',
  'smenu-l.png',
  'smenu-r.png',
  'smenu-t.png',
  'smenu-tl.png',
  'smenu-tr.png',
  'smenu-b.png',
  'smenu-bl.png',
  'smenu-br.png',
];

$(function() {
  // Init menu
  $(".menu .middle > li:first").bind('mouseover', function() {
    $(".menu .left").addClass('act');
  });
  $(".menu .middle > li:first").bind('mouseleave', function() {
    $(".menu .left").removeClass('act');
  });
  
  $(".menu .middle > li:last").bind('mouseover', function() {
    $(".menu .right").addClass('act');
  });
  $(".menu .middle > li:last").bind('mouseleave', function() {
    $(".menu .right").removeClass('act');
  });

  $('#menu li').bind('mouseover', function(e) {
    var mmenu = $(this);
    var smenu = $('#smenu');
    var smenu_content = $('#smenu_content');
    
    if (smenu_items = mmenu.find('ul').html()) {
      smenu_content.html(smenu_items);
    } else {
    $('#smenu').hide();
      return true;
    }
    
    $('#smenu_content li:first').addClass('first');
    $('#smenu_content li:last').addClass('last');
    
    var offset = mmenu.offset();
    var x = offset.left;
    var y = offset.top;

    var x_delta = -2;
    var y_delta = 26;
    
    if (mmenu.hasClass('first')) {
      x_delta -= 8;
    }

    smenu.offset({top: Math.ceil(y+y_delta), left: Math.ceil(x+x_delta)}).show();
    smenu.offset({top: Math.ceil(y+y_delta), left: Math.ceil(x+x_delta)}).show();
    $('.smenu .b .c, .smenu .t .c').css('width', $('#smenu_content').width());
  });
  
  $('#menu, #smenu').bind('mouseleave', function(e) {
    var target = e.relatedTarget;
    var target_id = target.id;
    
    while (target_id == '' && target != null) {
      target = target.parentNode;
      target_id = target.id;
    }

    if (target_id != 'menu' && target_id != 'smenu' && target_id != 'smenu_content') {
      $('#smenu').hide();
    }
  });
  
  // Connect placeholders
  var inputs = document.getElementsByTagName('input');
  for (var i = 0; i < inputs.length; i ++) {
    Placeholder.attach(inputs[i]);
  }

  // Preload images
  var baseUrl = '/assets/images/user/';
  var preloadedImages = [];
  for (var i = 0; i < preloadImages.length; i++) {
    preloadedImages[i] = new Image();
    preloadedImages[i].src = baseUrl + preloadImages[i];
  }
  
  // VK init
  VK.init({
    apiId: API_ID //2016184
  });
  
  // VK login handler
  $('.btn-login-vk').bind('click', function(e) {
    VK.Auth.login(function(response) {
      if (response.session) {
        location.href = '/auth/';
      }
    });  
  });
  
  // Close popup on ESC
  $(document).bind('keydown', function(e) {
    if (e.keyCode == 27) {
      popup.close();
    }
  });
});

function gotoSection(id) {
  $('#'+id+'-content').slideDown(300);
  $('html').animate({scrollTop: $('#'+id).attr('offsetTop')}, 500);
}

function scrollTo(el) {
  $('html').animate({scrollTop: $('#'+el).attr('offsetTop')}, 500);
}

function toggleSection(id) {
  $('#'+id+'-content').slideToggle(300);
}

function checkRegistrationform() {
  var error = '';
 
  var is_vk = parseInt($('#is_vk').val());
  var fn = $('#first_name').val();
  var ln = $('#last_name').val();
  var d = parseInt($('#birthday_d').val());
  var m = parseInt($('#birthday_m').val());
  var y = parseInt($('#birthday_y').val());
  var phone = $('#phone').val().replace(/[^0-9]/g, '');
  var email = $('#email').val();
  var email_re = /^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/;
  var password = $('#password').val();

  if (!is_vk) {
    if (fn == '') {
      error = 'Пожалуйста, укажите имя';
      $('#first_name').focus();
    } else if (ln == '') {
      error = 'Пожалуйста, укажите фамилию';
      $('#last_name').focus();
    } else if (isNaN(d) || isNaN(m) || isNaN(y) || d < 1 || d > 31 || m < 1 || m > 12 || y < 1930 || y > 2010) {
      error = 'Неверно указана дата рождения';
      $('#birthday_d').focus();
    } else if (phone.length < 7) {
      error = 'Неверно указан телефон';
      $('#phone').focus();
    } else if (!email_re.test(email)) {
      error = 'Неверно указан адрес e-mail';
      $('#email').focus();
    } else if (password.length < 6) {
      error = 'Пароль должен состоять не менее чем из 6 символов';
      $('#password').focus();
    } else if (!$('#agreement').attr('checked')) {
      error = 'Необходимо принять условия соглашения';
    }
  } else {
    if (isNaN(d) || isNaN(m) || isNaN(y) || d < 1 || d > 31 || m < 1 || m > 12 || y < 1930 || y > 2010) {
      error = 'Неверно указана дата рождения';
      $('#birthday_d').focus();
    } else if (phone.length < 5) {
      error = 'Неверно указан телефон';
      $('#phone').focus();
    } else if (!email_re.test(email)) {
      error = 'Неверно указан адрес e-mail';
      $('#email').focus();
    } else if (!$('#agreement').attr('checked')) {
      error = 'Необходимо принять условия соглашения';
    }
  }

  if (error) {
    $('#error_registration').removeClass('hidden').html(error);
    return false;
  } else {
    return true;
  }
}

var popup = {
  open: function(content, params) {
    $('.popup-block, .popup-shadow').removeClass('hidden');
    $('.popup-block .m .c').html(content);
  }, 
  close: function() {
    $('.popup-block, .popup-shadow').addClass('hidden');
    $('.popup-block .m .c').html('');
  }
};


// Bonus form

function showBonusForm() {
  Ajax('index.php', {act: 'a_get_bonus_form'}, function(data) {
    popup.open(data.content);
  });
}


// Profile form

function showProfileForm() {
  Ajax('index.php', {act: 'a_get_profile_form'}, function(data) {
    popup.open(data.content);
  });
}

function checkProfileForm() {
  var error = '';
  
  var fn = $('#first_name').val();
  var ln = $('#last_name').val();
  var d = parseInt($('#birthday_d').val());
  var m = parseInt($('#birthday_m').val());
  var y = parseInt($('#birthday_y').val());
  var phone = $('#phone').val().replace(/[^0-9]/g, '');;

  if (fn == '') {
    error = 'Пожалуйста, укажите имя';
    $('#first_name').focus();
  } else if (ln == '') {
    error = 'Пожалуйста, укажите фамилию';
    $('#last_name').focus();
  } else if (isNaN(d) || isNaN(m) || isNaN(y) || d < 1 || d > 31 || m < 1 || m > 12 || y < 1930 || y > 2010) {
    error = 'Неверно указана дата рождения';
    $('#birthday_d').focus();
  } else if (phone.length < 5) {
    error = 'Неверно указан телефон';
    $('#phone').focus();
  }
  
  if (error) {
    $('#error_profile').removeClass('hidden').html(error);
    return false;
  } else {
    return true;
  }
}


// Password form
function showPasswordForm() {
  Ajax('index.php', {act: 'a_get_password_form'}, function(data) {
    popup.open(data.content);
  });
}

function checkPasswordForm() {
  var error = '';
  
  var op = $('#old_password').val();
  var np = $('#new_password').val();
  var npc = $('#new_password_confirm').val();

  if (op == '') {
    error = 'Пожалуйста, укажите старый пароль';
    $('#old_password').focus();
  } else if (np == '') {
    error = 'Пожалуйста, укажите новый пароль';
    $('#new_password').focus();
  } else if (np.length < 6) {
    error = 'Пароль должен содержать не менее 6 символов';
    $('#new_password').focus();
  } else if (np != npc) {
    error = 'Пароль и подтверждение пароля не совпадают';
    $('#new_password').focus();
  }
  
  if (!error) {
    Ajax('index.php', {act: 'a_check_password', old_password: op}, function(data) {
      if (!data.content) {
        error = 'Неверный старый пароль';
      } else {
        $('#passwordForm').submit();
        return true;
      }
      
      if (error) {
        $('#error_password').removeClass('hidden').html(error);
      }
    });
  } else {
    $('#error_password').removeClass('hidden').html(error);
  }
  
  return false;
}


// Datings table switcher

function datingsTableTabSwitch(tab) {
  tab = tab.substring(11);
  $('.dating-tab').removeClass('act');
  $('#dating-tab-'+tab).addClass('act');
  
  $('.datings-table-container').addClass('hidden');
  $('#datings-table-'+tab).removeClass('hidden');
}


// Subscriptions form
function saveSubscriptions() {
  active = [];
  $('#section-subscriptions-content input[type="checkbox"]').each(function(i, item) {
    if ($(item).attr('checked')) {
      active.push($(item).val()); 
    }
  });
  
  Ajax('index.php', {act: 'a_save_subscriptions', active: active}, function(data) {
    $('#subscriptions-result').removeClass('hidden');
  });
}


/* Common */

function debug(msg) {
  $('#debug').append(msg);
}

// Ajax wrapper
Ajax = function (url, params, onSuccess) {
  if (params == undefined) {
    params = {};
  }
  params.ajax = 1;
  $.ajax({
    url: url,
    data: params,
    success: function(data) {
      try {
        json = eval('('+data+')');
        if (json.debug) {
          debug(json.debug);
        }
        if (json.status < 0) {
          if (json.status_message) {
            alert(json.status_message);
            return false;
          }
        }
        onSuccess(json);
      } catch (e) {
        onSuccess(data);
      }
    }
  });
};




