function ShowSTAF(sendAnother) {
    ClearValidationErrors();
    // clear any old values before displaying the modal
    // maintain the senders name if they're sending to another friend
    if (sendAnother != true) {
        jQuery("#txtYourName").val("");
    }
    jQuery("#txtFriendsName").val("");
    jQuery("#txtFriendsEmail").val("");
    jQuery("#txtCustomMsg").val("");
    jQuery('#modalSTAF').jqmShow();
}

function SendToAFriend() {
    var senderNameVldtr = jQuery('#txtYourName').valid8({
        'regularExpressions': [
        { expression: /^.+$/, errormessage: javascript77 },
        { expression: /^[a-zA-Z0-9-.' ]+$/, errormessage: 'You can only use the letters A-Z and numbers' }
        ]
    });

    var friendsNameVldtr = jQuery('#txtFriendsName').valid8({
        'regularExpressions': [
        { expression: /^.+$/, errormessage: javascript78 },
        { expression: /^[a-zA-Z0-9-.' ]+$/, errormessage: 'You can only use the letters A-Z and numbers' }
        ]
    });

    var toAddressVldtr = jQuery('#txtFriendsEmail').valid8({
        'regularExpressions': [
        { expression: /^.+$/, errormessage: javascript85 },
        { expression: /^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9-_]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/, errormessage: javascript84 }
        ]
    });

    var languageNodeId = (CheckLanguage().substring(0, 2) == 'en') ? 1 : 2;

    //check all exposed fields for profanity
    CheckProfanity(jQuery('#txtCustomMsg').val() + ' ' + jQuery('#txtYourName').val() + ' ' + jQuery('#txtFriendsName').val(), languageNodeId,
        function () {
            // clear the profanity error, if any
            jQuery("#divSTAFError").html("");

            var customMsgVldtr = jQuery('#txtCustomMsg').valid8(
            {
                'regularExpressions': [
                { expression: /^[\s\S.]{0,500}$/, errormessage: javascript69 }
                ]
            });

            if (senderNameVldtr.isValid() && friendsNameVldtr.isValid() && toAddressVldtr.isValid() && customMsgVldtr.isValid()) {
                var senderName = jQuery("#txtYourName").val();
                var friendsName = jQuery("#txtFriendsName").val();
                var friendsEmail = jQuery("#txtFriendsEmail").val();
                var customMsg = jQuery("#txtCustomMsg").val();

                var stafUrl = "";
                var currentUrl = "";

                if(jQuery('#blogSTAFURL').length > 0)
                currentUrl = jQuery('#blogSTAFURL').val();

                
                if (currentUrl.length <= 0) {
                    var currentUrl = document.location.toString();

                    if (currentUrl.search(/sc_lang/i) > 0) {
                        stafUrl = document.location.toString().split("?")[0];
                        var qsv = jQuery.query.REMOVE("sc_lang").REMOVE("lcid");
                        stafUrl += qsv;
                    }
                    else {
                        stafUrl = document.location;
                    }
                }
                else {
                    if (currentUrl.search(/sc_lang/i) > 0) {
                        stafUrl = document.location.toString().split("?")[0];
                        var qsv = jQuery.query.REMOVE("sc_lang").REMOVE("lcid");
                        stafUrl += qsv;
                    }
                    else
                        stafUrl = currentUrl;
                }


                var title = jQuery("#ctl00_hdnItemName").val();

                var dataString = '{"senderName":"' + JSONEncode(senderName) + '", "friendsName":"' + JSONEncode(friendsName) + '", "friendsEmail":"' + friendsEmail + '", "customMsg":"' + JSONEncode(customMsg) + '", "pageUrl":"' + stafUrl + '", "title":"' + JSONEncode(title) + '"}';


                if (stafUrl.toString().search(/recipes/i) > 0) {
                    AddMilestone('M17', 'User completed STAF for Recipe.' + stafUrl);
                }
                else if (stafUrl.toString().search(/blogs/i) > 0) {
                    try {
                        AddMilestone('M88', 'User completed STAF for Blog.' + stafUrl);                       
                    } catch (err) { }
                }
                else if (stafUrl.toString().search(/video/i) > 0) {
                    try {
                        gaTrack('sendEmailVideo');
                    } catch (err) { }
                }
                else {
                    AddMilestone('M24', 'User completed STAF for Article.' + stafUrl);
                    try {
                        gaTrack('sendArticleToFriend');
                    } catch (err) { }
                }

                CallServiceMethod("/services/Email.asmx/SendToAFriend", dataString,
                                    function (msg) {
                                        jQuery('#modalSTAF').jqmHide();
                                        jQuery('#modalSTAFSent').jqmShow();
                                    },
                                    function (xhr, status, error) {
                                        var err = xhr.responseText;
                                        //document.write(err);
                                    });
            }

        },
        function () {
            jQuery("#divSTAFError").html(javascript51);
        }
    );
}

// Comment email
function SendCommentEmail(itemId, comment) {
    var dataString = '{"itemId":"' + itemId + '", "comment":"' + comment + '"}';

    CallServiceMethod("/services/Email.asmx/SendCommentEmail", dataString,
				      function (msg) {
				          //success				          
				      },
				      function (xhr, status, error) {
				          var err = xhr.responseText;
				          //document.write(err);				          
				      });
}


// Welcome email
function SendWelcomeEmail(toAddress, firstName, lang) {
    var dataString = '{"toAddress":"' + toAddress + '", "firstName":"' + firstName + '", "lang":"' + lang + '"}';

    CallServiceMethod("/services/Email.asmx/SendWelcome", dataString,
				      function (msg) {
				          //success
				          AddMilestone('M08', 'Success. Page URL: ' + document.location);
				      },
				      function (xhr, status, error) {
				          var err = xhr.responseText;
				          //document.write(err);
				          AddMilestone('M08', 'Fail. ' + 'Page URL: ' + document.location);
				      });
}

// Forgot password
function SendForgotPasswordEmail(toAddress) {
    var dataString = '{"emailAddress":"' + toAddress + '"}';

    CallServiceMethod("/services/Email.asmx/SendForgotPassword", dataString,
				      function (msg) {
				          AddMilestone('M11', 'Password sent successfully. EmailAddress: ' + toAddress.toString());
				          jQuery('#modalForgotPass').jqmHide();
				          jQuery('#modalForgotPassSent').jqmShow();
				      },
				      function (xhr, status, error) {
				          var err = xhr.responseText;
				          AddMilestone('M11', 'Password not sent successfully.');
				          //document.write(err);
				      });
}

