﻿//web binder.
jQuery(document).ready(        
    function()
    {                                        
        var classNameActive = "active";
        var classNameEmail = "email";
        var selectCollapsed = ".collapsed";
        var selectExpanded = ".expanded";        
        
        var optionButton = $(".optionButton");        
        var sendEmail = $("#btnSendEmail");
        var webBinderPageHandle = ".webBinderPageHandle";
        
        var recipientAddress = $("#txtRecipientAddress");
        
        var mailSubject = $("#mailSubject").val();
        var mailBody = $("#mailBody").val();
        var mailHash = $("#mailHash").val();
        var errorMessageEmailEmpty = $("#errorMessageEmailEmpty").val();
        var errorMessageEmailError = $("#errorMessageEmailError").val();
        var errorMessagePdfEmptyError = $("#errorMessagePdfBinderEmpty").val();
        var emailInstructionsMessage = $(".emailInstructions");
        var emailConfirmMessage = $(".emailConfirm");        
        var pdfFilePath = $(".pdfFilePath");
        var pdfFileLink = $(".pdfFileLink");
        
        var streamNameSendMail = "/binder/SendMailStream.aspx";        
        
        //option button click.
        optionButton.click(
            function()
            {
                var clickedElement = $(this);
                
                if (clickedElement.hasClass(classNameEmail))
                    emailConfirmMessage.hide();                                   
                    
                var parents = clickedElement.parents("TD");
                                
                clickedElement.toggleClass(classNameActive);
                
                if (clickedElement.hasClass(classNameActive))
                {                
                    parents.find(selectCollapsed).hide();                        
                    parents.find(selectExpanded).slideDown();
                }
                else
                {
                    parents.find(selectExpanded).hide();                          
                    parents.find(selectCollapsed).slideDown();
                }                                
            }
        );
        
        //enter key pressed on recipient address.
        recipientAddress.keyup(
            function(e)
            {
                if (e.keyCode == 13)
                    emailLinks();
            }
        );
        
        //send email click.
        sendEmail.click(
            function()            
            {                    
                emailLinks();                                     
                return false;
            }            
        );
        
        //email links.
        function emailLinks()
        {            
            var recipientAddressValue = recipientAddress.val();      
            var currentHandles = getCurrentHandles();
            emailConfirmMessage.hide();                                
                
            if (recipientAddressValue.length > 0)
            {                                    
                disableButton(sendEmail);                
            
                if (currentHandles.length > 0)
                {                                                                                             
                    $.ajax
                    (
                        {                                                
                            url: streamNameSendMail,
                            data: { recipient: recipientAddressValue, handles: currentHandles },
                            cache: false,
                            async: false,
                            success: 
                                function(response)
                                {                                         
                                    emailInstructionsMessage.hide();
                                    emailConfirmMessage.fadeIn();      
                                },
                            error:
                                function(response)
                                {                                                                                
                                    emailInstructionsMessage.show();
                                    showError(errorMessageEmailError);     
                                }         
                         }
                    );                                                                                                                                                                                                                                                                                      
                }
                else
                    showError(errorMessageEmailEmpty);                                        
            }        
            
            enableButton(sendEmail);
        }
        
        //pdf file link click.
        pdfFileLink.click(
            function()
            {                
                var handles = getCurrentHandles();                                                                                
                
                if (handles.replace(/^\s*/, "").replace(/\s*$/, "").length > 0)
                {
                    pdfFileLink.attr("href", pdfFilePath.val() + "&handles=" + handles);                    
                    return true;
                }
                else
                {
                    alert(errorMessagePdfEmptyError);
                    return false;
                }
            }
        );
        
        //get current page handles.
        function getCurrentHandles()
        {
            var handles = "";
            $(webBinderPageHandle).each(function() 
            { 
                var value = $(this).val();
                
                if (value != null && value.length > 0)
                    handles += " " + value;                                
            });
            return handles;
        }
        
        //enable button.
        function enableButton(button)
        {
            button.css("opacity", 1);
            button.removeAttr("disabled");
        }
        
        //disable button.
        function disableButton(button)
        {
            button.css("opacity", 0.4);
            button.attr("disabled", "disabled");
        }                                
        
        //show error.
        function showError(errorMessage)
        {
            alert(errorMessage);    
        }
    }
);
