function SocialRegister(options) {
    this.dom = options.dom;
    this.dom_btn_yes = this.dom.find('#acc_yes');
    this.dom_btn_no = this.dom.find('#acc_no');

    this.dom_page_bind = this.dom.find('#page_bind');

    this.dom_page_register = this.dom.find('#page_register');
    this.dom_page_register_nick = this.dom_page_register.find('input[name=client_nick]');

    this.client_nick = options.client_nick;
    this.success_url = options.success_url;

    this.init();
}
SocialRegister.prototype.init = function() {
    var that = this;

    that.pageBindInit();
    that.pageRegisterInit();

    // привязка к существующему аккаунту
    that.dom_btn_yes.click(function() {
        that.dom_btn_yes.addClass('button_active');
        that.dom_btn_no.removeClass('button_active');

        that.dom_page_register.hide();
        that.dom_page_bind.fadeIn();

        $('#button_gif').hide();
    });

    // регистрация
    that.dom_btn_no.click(function(){
        that.dom_btn_no.addClass('button_active');
        that.dom_btn_yes.removeClass('button_active');

        that.dom_page_bind.hide();
        that.dom_page_register.fadeIn();

        $('#button_gif').hide();
    });
};
SocialRegister.prototype.pageBindInit = function() {
    var that = this;

    that.dom_page_bind.find('.bind-item').click(function() {
        that.dom_page_bind.find('#' + $(this).attr('id') + '_content').siblings().hide()
                          .end().fadeIn();
    });

    var frm = that.dom_page_bind.find('#soc_login');
    var setError = function(msg, fields) {
        if (!msg) {
            that.dom_page_bind.find('#old_smi_error').hide();
            frm.find('input.auth').css('background', '');
            return;
        }

        that.dom_page_bind.find('#text').hide();
        that.dom_page_bind.find('#old_smi_error').html(msg).show();

        if (fields) {
            for (var i in fields) {
                frm.find('input[name=' + fields[i] + ']').css('background','#ffe5e6');
            }
        }
    };

    frm.ajaxForm({
        'beforeSubmit': function() { 
            that.dom.find('#button_gif').show();
            setError();

            var l = $.trim(frm.find('input[name=l]').val());

            if (!/^\S+@[\w.-]+\.\w+$/.test(l)) {
                setError(incorrect_email + '.', ['l']);
                return false;
            }
        },
        'dataType': 'json',
        'success': function(json) {
            if (json.status == 0) {
                setError(json.msg, json.fields);
            } else if (json.status == 1) {
                location.href = '/';
            } else if (json.status == 2) {
                setError(incorrect_email + '.', ['l', 'p']);
            }
        }
    });
};
SocialRegister.prototype.pageRegisterInit = function() { /* регистрация и приглашение друзей */
    var that = this;

    if (that.client_nick.length > 1) {
        that.dom_page_register_nick.autocomplete({
            'source': that.client_nick,
            'minLength': 0
        }).focus(function() {
            that.dom_page_register_nick.autocomplete('search', '');
        });
    } else {
        that.dom_page_register_nick.val(that.client_nick[0]);
    }

    that.dom_page_register.find('form').ajaxForm({
        'beforeSubmit': function () {
            $('#button_vk, #button_fb, #register_error').hide();

            $('#button_gif').show();
        },
        'dataType': 'json',
        'success': function(r) {
            $('#button_gif').hide();

            $('#button_vk, #button_fb').show();

            if (r.error) {
                //$('#form_sidebar_text').hide();
                $('#register_error').html(r.error).show();
            } else {
                location.href = that.success_url;
            }
        }
    });
};

function SocialTips(options) {
    this.dom = options.dom;

    this.dom_page_smi = this.dom.find('#page_smi');
    this.dom_page_smi_btn = this.dom.find('#page_smi_btn');

    this.dom_page_smi_clans = this.dom_page_smi.find('#page_smi_clans');
    this.dom_page_smi_clans_btn = this.dom_page_smi.find('#page_smi_clans_btn');
    this.dom_page_smi_friends = this.dom_page_smi.find('#page_smi_friends');
    this.dom_page_smi_friends_btn = this.dom_page_smi.find('#page_smi_friends_btn');

    this.dom_page_inviter = this.dom.find('#page_inviter');
    this.dom_page_inviter_btn = this.dom.find('#page_inviter_btn');

    this.dom_page_finish_btn = this.dom.find('#page_finish_btn');

    this.generator_id = options.generator_id;
    this.provider = options.provider;

    this.inviter = null;

    this.init();
}
SocialTips.prototype.init = function() {
    var that = this;

    var pf = new block_possible_friends({
        'limit': 12,
        'mode': 'smi'
    });
    
    that.inviter = new Inviter({
        'provider': that.provider,
        'theme': 'register',
        'dom': $('#inviter')
    });
    
    // рекомендации
    that.dom_page_smi_btn.click(function() {
        that.dom_page_smi_btn.hide();
        that.dom_page_finish_btn.hide();
        that.dom_page_inviter.hide();

        that.dom_page_smi.show();
        that.dom_page_inviter_btn.show();
        
        that.dom.find('h1').html(best_on_smi2);
    });

    // рекомендации: сообщества
    that.dom_page_smi_clans.find('[data-role=join]').click(function() {
        var clan_id = $(this).data('clan-id');
        $.ajax({
            'url': '/community/?a=joinToCommunity&id=' + clan_id,
            'type': 'post',
            'dataType': 'text',
            'context': this,
            'success': function(r) { },
            'error': function() { }
        });
        $(this).closest('.soc-item').hide('fast');
        return false;
    });
    
    that.dom_page_smi_clans_btn.click(function() {
        that.dom_page_smi_clans.show();
        that.dom_page_smi_friends.hide();
        
        $(this).css('font-weight', 'bold');
        $(this).siblings().css('font-weight', 'normal');
        
        $('#triangle').animate({ 'left': '-140px' });
    });

    // рекомендации: друзья
    that.dom_page_smi_friends_btn.click(function() {
        that.dom_page_smi_clans.hide();
        that.dom_page_smi_friends.show();
        
        $(this).css('font-weight', 'bold');
        $(this).siblings().css('font-weight', 'normal');
        
        $('#triangle').animate({ 'left': '-35px' });
    });

    // приглашение друзей
    that.dom_page_inviter_btn.click(function() {
        that.dom_page_smi.hide();
        that.dom_page_inviter_btn.hide();

        that.dom_page_smi_btn.show();
        that.dom_page_finish_btn.show();
        that.dom_page_inviter.show();

        that.dom.find('h1').html(new_user);
    });
    
    // переход на сайт
    that.dom_page_finish_btn.click(function() {
        location.href = '/';
    });
};


function wallPostFb(message, link, receiver, name) {
    $.ajax({
        'url': '/_social_/',
        'type': 'post',
        'dataType': 'json',
        'data': { 'action': 'wallpost_fb', 'message': message, 'link': link, 'receiver': receiver },
        'success': function(json) {
            if (json.st==1) {
                $('#receiver').html(name);
                $('#fb_wallpost_ok_text').html(message);
            } else {
                $('#fb_wallpost_ok_body').html('<br />'+error_occured);
                $('#fb_wallpost_ok_text').html(wallpost_fail);
            }
            var winH = $(window).height();
            $('#fb_wallpost_ok').css('top', $(document).scrollTop() + winH / 2 - $('#fb_wallpost_ok').height() / 2);
            $('#fb_wallpost_ok').show();
            setTimeout(function() {
                $('#fb_wallpost_ok').fadeOut();
            }, 3000);            
        }
    });
}

/* блок с друзьями с целью им наспамить*/
function block_friends_wallpost(message, link) {
    $.ajax({
        url:'/_social_/',
        type:'post',
        dataType:'json',
        data:{action:'friends_all', mode:'invite', include_invited:true},
        success: function(friends_arr){
            for(var item in friends_arr) {
                var value = friends_arr[item];
				var action='';
				if (value.provider!='livejournal') { /*в жж на стену друзьям не постится*/
					if (value.provider=='vkontakte') {
						action = 'onclick="wallPostVK(\'some_text\', \''+message+'\', '+value.provider_id+');$(\'#'+value.provider_id+'\').hide(500);return false;"';
					} else if (value.provider=='facebook'){
						action = 'onclick="wallPostFb(\''+message+'\', \''+link+'\', '+value.provider_id+', \''+value.name+'\');$(\'#'+value.provider_id+'\').hide(500);return false;"';
					} /*else if (value.prov=='twitter'){
						action = 'onclick="wallPostTw(\''+message+'\', \''+link+'\', '+value.uid+');$(\'#'+value.uid+'\').hide(500);return false;"';
					}*/
					var post_link =  '<div class="one_friend" data-name="'+value.name+'"><a href="#send" '+action+'><img src="'+value.photo+'" style="padding:5px;width:60px;height:60px;cursor:pointer;" title="'+value.name+' ('+value.provider+')"/></a><br />'+value.name+'</div>';
					$("#block_friends_list").append('<div id="'+value.provider_id+'" style="float:left;">'+post_link+" <br /> </div>");
				}
			}
            $('.friends-loading').hide();
        }
    });
}

