var G_Invite = {};
function inviteClientReview(){
    if(G_Invite.ClientReview) G_Invite.ClientReview.dialog('open');
    return false;
}
function inviteFriend(){
    if(G_Invite.Friend) G_Invite.Friend.dialog('open');
    return false;
}
function inviteClient(){
    if(G_Invite.Client) G_Invite.Client.dialog('open');
    return false;
}
function inviteBetterist(){
    if(G_Invite.Betterist) G_Invite.Betterist.dialog('open');
    return false;
}
function inviteFriendPlugin(){
    showPlaxoABChooser('recipients_list', '/plaxo_emails.php');
}
function inviteFriendPluginOnAdd(Data){
    G_Invite.InvitePlugin.dialog('open');
    var Emails = [];
    for(var I=0; I<Data.length; I++){
        Emails.push(Data[I][1]);
    }
    G_Invite.InvitePlugin.find('.invite_emails').val(Emails.join(', '));
}

jQuery( function($){
    var Error = $('#j_invite_error_table');
    Error.Msg = Error.find('.error');
    var validateEmails = function(onPass){
        Error.css('display', 'none').Msg.html('');
        var Emls = $('#j_invite_emails').val().split(/,\s*/g);
        for(var I=0; I<Emls.length; I++){
            if(!Emls[I]){
                Emls.splice(I, 1);
                I--;
            }
        }
        if(!Emls.length || (Emls.length == 1 && Emls[0]=='')){
            Error.css('display', '').Msg.html('Please provide friend email address.');
            return;
        }
        $('#j_invite_emails').val(Emls.join(', '));
        var Num = 0;
        var check = function(){
            var onReady = function(Valid, Obj){
                if(!Valid){
                    Error.css('display', '').Msg.html('This is not a vlid email: "'+Emls[Num]+'".');
                    return;
                }
                Num++;
                if(Num == Emls.length){
                    if(typeof onPass == 'function') onPass();
                    return;
                }
                check();
            };
            CForm.validate(Emls[Num], {required: {}, email: {}}, onReady);
        };
        check();
    }
    $('#j_invite_emails').blur(validateEmails);
    var Form = $('#j_invite_form').submit( function(){
        var onPass = function(){
            Form.unbind('submit').submit();
        };
        validateEmails(onPass);
        return false;
    } );

    /*
     * Invite Popups
     */
    var DialogSets = {
        resizable: false,
        modal: true,
        autoOpen: false,
        height: 'auto',
        width: 450,
        buttons: {
            Cancel: function(){
                $(this).dialog('close');
            },
            Invite: function(){
                var Obj = $(this);
                var Error = Obj.find('.field_error').html('');
                var Emails = Obj.find('.invite_emails').val();
                var YName = Obj.find('.invite_your_name').val();
                var YEmail = Obj.find('.invite_your_email').val();
                var Message = Obj.find('.invite_message').val();
                if(!Emails || !YName || !YEmail){
                    Error.html('Please fill out all required fields.');
                    return;
                }
                Emails = Emails.split(/,\s*/g);
                if(Emails.length > 10){
                    Error.html('You can invite up to 10 people at a time.');
                    return;
                }
                var Num = 0;
                var check = function(){
                    var onReady = function(Valid){
                        if(!Valid){
                            Error.html('This is not a valid email: "'+Emails[Num]+'".');
                            return;
                        }
                        Num++;
                        if(Num == Emails.length){
                            var Ico = $('<img src="/images/_bf_custom/ajax-loader.gif" style="float:right; margin:5px 10px 0 0;">');
                            Ico.appendTo(Obj.parent().find('.ui-dialog-buttonpane'));
                            var onComplete = function(Resp){
                                Ico.remove();
                                var Data = null;
                                try{eval('Data = '+Resp)}catch(e){
                                    Error.html('Server error, please try again.');
                                    return;
                                }
                                if(!Data.status){
                                    Error.html(Data.error?Data.error:'Server error, please try again.');
                                    return;
                                }
                                Obj.dialog('close');
                                G_Invite.LastPopup = Obj;
                                G_Invite.Sent.dialog('open');
                            }
                            var Data = {
                                emails: Emails.join(','),
                                your_email: YEmail,
                                your_name: YName,
                                message: Message,
                                type: Obj.attr('id').replace('j_invite_', '')
                            };
                            $.post('/ajaxcall/sendinvites', Data, onComplete);
                            return;
                        }
                        check();
                    };
                    CForm.validate(Emails[Num], {required: {}, email: {}}, onReady);
                };
                var checkYourEmail = function(Valid){
                    if(!Valid){
                        Error.html('Your email address is not valid.');
                        return;
                    }
                    check();
                }
                CForm.validate(YEmail, {required: {}, email: {}}, checkYourEmail);
            }
        },
        open: function(){
            var Obj = $(this);
            Obj.parent().find('button:contains("Invite")').addClass('greenbutton');
            Obj.find('.invite_emails').val('');
            var YName = Obj.find('.invite_your_name');
            var YEmail = Obj.find('.invite_your_email');
            var Message = Obj.find('.invite_message');
            YName.val(YName.attr('data'));
            YEmail.val(YEmail.attr('data'));
            Message.val(Message.attr('data'));
            YEmail.attr('disabled', (YEmail.val()?'disabled':''));
        }
    }
    G_Invite.Sent = $('#j_invites_sent').dialog({
        resizable: false,
        modal: true,
        autoOpen: false,
        height: 'auto',
        width: 450,
        buttons: {
            "Not Right Now": function(){
                $(this).dialog('close');
            },
            "Send Another Invite": function(){
                $(this).dialog('close');
                if(G_Invite.LastPopup) G_Invite.LastPopup.dialog('open');
            }
        }
    });
    G_Invite.PluginSent = $('#j_invites_plugin_sent').dialog({
        resizable: false,
        modal: true,
        autoOpen: false,
        height: 'auto',
        width: 450,
        buttons: {
            "Not Right Now": function(){
                $(this).dialog('close');
            },
            "Invite More People": function(){
                $(this).dialog('close');
                inviteFriendPlugin();
            }
        }
    });
    G_Invite.Sent.parent().find('button:contains("Send Another Invite")').addClass('greenbutton');
    G_Invite.PluginSent.parent().find('button:contains("Invite More People")').addClass('greenbutton');
    G_Invite.ClientReview = $('#j_invite_client_review').dialog(DialogSets);
    G_Invite.Friend = $('#j_invite_friend').dialog(DialogSets);
    G_Invite.Client = $('#j_invite_client').dialog(DialogSets);
    G_Invite.Betterist = $('#j_invite_betterist').dialog(DialogSets);
    G_Invite.InvitePlugin = $('#j_invite_plugin').dialog({
        resizable: false,
        modal: true,
        autoOpen: false,
        height: 'auto',
        width: 550,
        buttons: {
            Cancel: function(){
                $(this).dialog('close');
            },
            Invite: function(){
                var Obj = $(this);
                var Error = Obj.find('.field_error').html('');
                var Emails = Obj.find('.invite_emails').val();
                var YName = Obj.find('.invite_your_name').val();
                if(!Emails || !YName){
                    Error.html('Please fill out all required fields.');
                    return;
                }
                Emails = Emails.split(/,\s*/g);
                var Num = 0;
                var check = function(){
                    var onReady = function(Valid){
                        if(!Valid){
                            Error.html('This is not a valid email: "'+Emails[Num]+'".');
                            return;
                        }
                        Num++;
                        if(Num == Emails.length){
                            var Ico = $('<img src="/images/_bf_custom/ajax-loader.gif" style="float:right; margin:5px 10px 0 0;">');
                            Ico.appendTo(Obj.parent().find('.ui-dialog-buttonpane'));
                            var onComplete = function(Resp){
                                Ico.remove();
                                var Data = null;
                                try{eval('Data = '+Resp)}catch(e){
                                    Error.html('Server error, please try again.');
                                    return;
                                }
                                if(!Data.status){
                                    Error.html(Data.error?Data.error:'Server error, please try again.');
                                    return;
                                }
                                Obj.dialog('close');
                                G_Invite.PluginSent.dialog('open');
                            }
                            var Data = {
                                emails: Emails.join(','),
                                your_name: YName,
                                type: Obj.attr('id').replace('j_invite_', '')
                            };
                            $.post('/ajaxcall/sendinvites', Data, onComplete);
                            return;
                        }
                        check();
                    };
                    CForm.validate(Emails[Num], {required: {}, email: {}}, onReady);
                };
                check();
            }
        },
        open: function(){
            var Obj = $(this);
            Obj.parent().find('button:contains("Invite")').addClass('greenbutton');
            Obj.find('.invite_emails').val('');
            var YName = Obj.find('.invite_your_name');
            YName.val(YName.attr('data')).blur(function(){
                Obj.find('.invite_message_name').html(this.value);
            });
            YName.blur();
        }
    });
});
