$(document).ready(function(){    

    if (window.location.hash && auth)  open_popup(window.location.hash.substr(1));
    
    $(".pull-down").bind("click", function(e){  
        $(this).next('div').toggle();
        return false;
    });
    
    bind_add_friend();
    
    // сохранение
    $("div.submit").each(function(e) {
      var id = $(this).attr('id');
      var form = $('#'+id+'_form');
      var div = $(this).find('div');
      if (!form) return;
    
      $(this).find("a").bind("click", function(e) {
          
          var ret = 0;
          form.find(":input").each(function() {
              if ($(this).prev('label').hasClass('req') && !$(this).val()) {
                  $(this).nextAll('.error').text('Поле обязательно для заполнения').show();
                  ret = 1;
              }
          });
          
          if (ret) return false;
          
          div.html('<img src="/img/ajax-loader.gif" /><br />');
          
          $.ajax({
              type: 'POST',
              url : form.attr('action'),
              dataType : 'json',
              data:form.serializeArray(),
              success: function (data) {  
                  div.html('');                              
                  if (!data.success) {
                      if (data.field)
                          $("#fid-"+data.field).nextAll('.error').text(data.message).show();
                          else alert(data.message);
                  } else {
                      div.html('Данные сохранены.<br /><br />');
                  }
              }
          });
          
          return false;
              
      });
    });
    
});

function bind_add_friend() {
    // Добавить в друзья
    $(".add-friend").bind("click", function(e){  
        var a = $(this).attr('id').split('_');
        open_popup('/page/friend/add/'+a[1], add_friend_cb);
        return false;
    });
}


function add_friend_cb() {
    $("#popup .cancel").bind("click", close_popup); 
    $("#popup .ok").bind("click", function(e){
           
        var data = [];         
        $("#popup input:checked").each(function() {
            data[data.length] = $(this).val();
        });
        
        if (!data.length) {
            alert('Выберите хотя бы один из вариантов.');
            return;
        }
            
        var a = $(this).attr('id').split('_');
        $.ajax({
            data: {'f[]': data},
            url : '/page/friend/request/'+a[1]
        });
        close_popup();
        $('#add_'+a[1]).replaceWith('<div class="request-friend">Отправлен запрос</div>');
    }); 
}

function close_popup() {
    $('#popup').hide().html('');
}

function open_popup(url, callback) {
    var top = $("html").scrollTop()+100;
    $('#popup').css({top: top+'px'}).show().html('<div class="loading"><img src="/img/ajax-loader.gif" /></div>');
    $.ajax({
        url : url,
        success: function (data) {                                
            $('#popup').html(data);
            if (callback) callback();
        }
    });  
}

var to,lastchecked;

function checkLogin() {
    clearTimeout(to);
    if (!$("#reg-login").attr('value') || $("#reg-login").attr('value') == lastchecked) return;
    to = setTimeout(checkLoginNow, 1000);
}

function checkLoginNow() {
    lastchecked = $("#reg-login").attr('value');
    $.ajax({
        url : '/action/user/check',
        dataType : 'json',
        data: {
            login: $("#reg-login").attr('value')
        },
        success: function (data) {                                
            $("#reg-login-msg").html(data.message).show();
        }
    });   
}

function isEmail(email) {
    var reg = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
    return email.match(reg); 
}

function submitReg() {
    $(".error").hide();
    
    var ret = 0;
    $("#reg-form :input").each(function() {
        if ($(this).attr('id') != 'reg-submit' && !$(this).val()) {
            ret = 1;
           $("#"+$(this).attr('id')+"-msg").html('<span style="color:red">Поле обязательно для заполнения</span>').show();
        } 
    });
    
    if (!isEmail($('#reg-email').val())) {
           ret = 1;
           $("#reg-email-msg").html('<span style="color:red">Пожалуйста, введите свой настоящий e-mail</span>').show();      
    }
    
    if (ret) return false;
        
    $.ajax({
        type: 'POST',
        url : '/action/user/register',
        dataType : 'json',
        data: $("#reg-form").serializeArray(),
        success: function (data) {                                
            if (!data.success) {
                if (data.field)
                    $("#reg-"+data.field+"-msg").html('<span style="color:red">'+data.message+'</span>').show();
                    else alert(data.message);
            } else {
                $("#reg-form").hide();
                $("#success").html(data.message).show();
            }
        }
    }); 
    return false;  
}

function friendRequests() {
    open_popup('/page/friend/requests/');
}

function friendAccept(id) {
    $('#line_'+id+' div.right').html('<div class="loading"><img src="/img/ajax-small.gif" /></div>');
    $.ajax({
        type: 'POST',
        url : '/page/friend/accept/'+id,
        success: function (data) {                                
            $('#line_'+id+' div.right').html('добавлен в друзья');
            $('#friend-request span').html(data);
            if (data == '0') $('#friend-request').hide();
        }
    });
}

function sendPrivate(id) {
    if (!$('#private textarea').val()) return false;
    $('#private .loading').show();
    $.ajax({
        type: 'POST',
        url : '/action/user/private',
        dataType : 'json',
        data: {
            'id': id,
            'text': $('#private textarea').val()
        },
        success: function (data) {    
            $('#private textarea').val('');                            
            $('#private .loading').hide();
        }
    }); 
    return false;
}

function bind_personal_media() {
    $('.media-left .cat div').bind("click", function(e) {
        if ($(this).parent('.cat').hasClass('active')) return;
        $('.media-left .icons .active').removeClass('active');  
        $(this).parent('.cat').addClass('active');  
        var a = $(this).attr('id').split('_');
        $('#media-files').html('<div class="loading"><img src="/images/ajax-loader.gif" /></div>');
        $.ajax({
            type: 'POST',
            url : '/page/show/albums/'+login,
            data: {
                'filetype': a[1]
            },
            success: function (data) {    
                $('#media-files').html(data);
                bind_personal_files();
            }
        }); 
    });
    bind_personal_files();
}

function bind_personal_files() {
    $('#media-files .albums li').bind("click", function(e) {
        $('#media-files .albums li.active div').hide();
        $('#media-files .albums li.active').removeClass('active');
        if ($(this).children('div').length) {
            $(this).children('div').show();
            $(this).addClass('active');
        } else {
            var a = $(this).attr('id').split('_');
            var album = $(this).attr('id');
            $(this).append('<div class="loading"><img src="/images/ajax-loader.gif" /></div>');
            var b = $('.media-left .icons .active div').attr('id').split('_');
            $.ajax({
                type: 'POST',
                url : '/page/show/files/'+login,
                data: {
                    'filetype': b[1],
                    'album': a[1]
                },
                success: function (data) {    
                    $('#'+album).addClass('active');
                    $('#'+album+' div').removeClass('loading').html(data);
                }
            }); 
        }   
    });
}

function applyTheme(theme) {
    document.location = '/page/user/config/theme?cat='+cat+'&apply='+theme;
}

function bind_themes() {
    $('.themes ul li').bind("click", function(e) {
        $('.themes ul li.checked').removeClass('checked');
        var a = $(this).attr('id').split('_');
        var cat = $(this).attr('id'); 
        $('#themes').addClass('loading').html('<img src="/images/ajax-loader.gif" />');
        $.ajax({
            type: 'POST',
            url : '/page/user/config/theme',
            data: {
                'cat': a[1]
            },
            success: function (data) {    
                $('#'+cat).addClass('checked');
                $('#themes').replaceWith(data);
            }
        }); 
        return false;
    });
}

function bind_recomend() {
    // Рекомендовать
    $(".recomend").bind("click", function(e){  
        var a = $(this).attr('id').split('_');
        open_popup('/page/user/recomend/'+a[1], recomend_cb);
        return false;
    });
}

function recomend_cb() {
    $("#popup .cancel").bind("click", close_popup); 
    $("#popup .ok").bind("click", function(e){
        if (!parseInt($('#speciality').val())) {
            alert('Выберите специальность!');
            return false;
        }
        var a = $(this).attr('id').split('_');
        $.ajax({
            data: {
                'confirm': 1,
                'speciality' : $('#speciality').val()
            },
            url : '/page/user/recomend/'+a[1]
        });
        close_popup();
    }); 
}

var msg_user = 0;
function bind_messages() {
    $("#left .line").bind("click", function(e){  
        var a = $(this).attr('id').split('_');
        $("#left .active").removeClass('active');
        $(this).addClass('active');
        $('#messages #line').addClass('loading').html('').show();
        msg_user = a[1];
        $.ajax({
            type: 'GET',
            url : '/page/messages/user/'+msg_user,
            success: function (data) {    
                $('#messages #line').removeClass('loading').html(data);
                $("form.messages").show();
                $("#messages #line").scrollTop($("#messages #line div").height() - $("#messages #line").height());

            }
        }); 
        return false;
    });
}

function new_message() {
    if (!msg_user) return false;
    if (!$("form.messages textarea").val()) return false;

    $('#messages #line').addClass('loading').html('').show();
    $.ajax({
        type: 'POST',
        url : '/page/messages/user/'+msg_user,
        data: {
            'text': $("form.messages textarea").val(),
        },
        success: function (data) {   
            $("form.messages textarea").val(''); 
            $('#messages #line').removeClass('loading').html(data);
            $("#messages #line").scrollTop($("#messages #line div").height() - $("#messages #line").height());
        }
    });
}

function bind_wall() {
    $("#wall .delete").unbind('click').bind("click", function(e){ 
        var a = $(this).attr('id').split('_');
        open_popup('/page/user/deleteStatus/'+a[1], wall_cb);
    });
}

function wall_cb() {
    $("#popup .cancel").bind("click", close_popup); 
    $("#popup .ok").bind("click", function(e){
        close_popup();
        var a = $(this).attr('id').split('_');
        $.ajax({
            url : '/page/user/deleteStatus/'+a[1]+'?confirm=1',
            success: function (data) {   
                $('#wall_'+a[1]).hide(300, function() {
                    $(this).remove();
                });
            }
        });      
    });
}

function post_status() {
    if (!$("form.messages textarea").val()) return false;
    $('form.messages .button').attr('disabled', 1);
    $('form.messages .loading-small').show();
    
    $.ajax({
        type: 'POST',
        url : '/page/user/status/',
        data: {
            'text': $("form.messages textarea").val(),
        },
        success: function (data) {   
            $("form.messages textarea").val(''); 
            $('form.messages .button').attr('disabled', 0);
            $('form.messages .loading-small').hide();
            $('#wall').prepend(data);
            $('#wall div:hidden').show(300);
            bind_wall();
        }
    });
}
