﻿/********************* Login by social network *********************/

function SigninWithFacebookAccount() {
    window.location = '/home/FacebookUserLogin';
}

function FacebookUserLogoff() {
    FB.Connect.logout(
        function() {
            window.location = '/home/FacebookUserLogoff';
        });
}

function ViewResult() {
    window.location = '/home/ViewResult';
}

function ViewQuestion() {
    window.location = '/home/Index';
}

function ShowAnswer() {
    window.location = '/home/ShowAnswer';
}


/********************* Starting Website *********************/
$(document).ready(function() {
    $(document).pngFix();

    try {
        FB.init(ReadConfigSettings(), "/xd_receiver.htm");    //Khuong.Vo        
        //FB.init("5f3fdb6f8591ae60c1633b4eccf4ea14", "/xd_receiver.htm");    //Staging
    } catch (x) {
        alert(x);
    }

    $("#btnSubmit").click(function() {
        var loginUser = $('#hidLoginUser').attr('value');

        var isValid = QuestionValidation();
        if (loginUser == 'True') {
            if (isValid == true) {
                CallSaveFunction();
            }
        } else {
            try {
                Sys.Net.WebServiceProxy.invoke("/Services/CheekyCheckupQuiz.asmx", "PreSaveQuestion", false, { SubmitString: SaveSubmitString },
                                                function(result) {
                                                    if (result == 1) {
                                                        FB.Connect.requireSession(function() { SigninWithFacebookAccount(); });
                                                    }
                                                    else {
                                                        alert('Error is occurred!');
                                                    }
                                                }, null, null);
            } catch (err) {
                alert(err);
            }
        }
    });

    $("#btnAgain").click(function() {
        // todo: need to clear  Session["AnswerCollection"]
        try {
            Sys.Net.WebServiceProxy.invoke("/Services/CheekyCheckupQuiz.asmx", "RefreshQuestion", false, { intVal: 1 },
                                                function(result) {
                                                    if (result == 1) {
                                                        SigninWithFacebookAccount();
                                                    }
                                                    else {
                                                        alert('Error is occurred!');
                                                    }
                                                }, null, null);
        } catch (err) {
            alert(err);
        }
    });

    $("#dlgMessage").dialog({
        bgiframe: true,
        autoOpen: false,
        //height: 502,
        width: 760,
        modal: true
    });

    $("#dlgResultView").click(function() {
        ShowAnswer();
        //        $('body').css("padding-bottom", "500px");
        //        openMessage();
        //        $("#idOverlay").bind("click", closeMessage);
    });

    $("#dlgCloseView").click(function() {
        ViewResult();
        //        closeMessage();
    });

    $("#challengeFriends").click(function() {
        $("#dlgShowFriends").dialog('open');
    });

    $("#closeChallengeFriends").click(function() {
        $("#dlgShowFriends").dialog('close');
    });

    $("#dlgShowFriends").dialog({
        bgiframe: true, autoOpen: false, height: 600, width: 630, modal: true

    });


    $("#sendQuizToFriends").click(function() {
        $("#dlgShowFriends").dialog('open');
    });

});

function openPopUpQuiz() {
    window.open('http://www.nbocc.org.au/cheekyquiz/', 'CheekyQuiz', 'scrollbars=yes,width=720,height=545');
    return false;
}

function CallSaveFunction() {
    // save to database
    FB.Connect.showPermissionDialog('publish_stream',
                                    function(userAllowPerms) {
                                        if (userAllowPerms) { //user has allowed publish access permission                                            
                                            try {
                                                Sys.Net.WebServiceProxy.invoke("/Services/CheekyCheckupQuiz.asmx", "SaveSubmit", false, { SubmitString: SaveSubmitString },
                                                        function(result) {
                                                            if (result >= 0) {
                                                                //alert('Thank you. Your answer is successfully saved.');
                                                                CallWallPost(result);

                                                            } else if (result == -2) {
                                                                alert('Fail to save your answer');
                                                            }
                                                            else {
                                                                alert('Please login before saving your answer');
                                                                FB.Connect.requireSession(function() { SigninWithFacebookAccount(); });
                                                            }

                                                        }, null, null);
                                            } catch (err) {
                                                alert(err);
                                            }
                                        }
                                    }, false);
};

function CallWallPost(point) {
    FB_RequireFeatures(["Connect"], function() {
        FB.Facebook.init(ReadConfigSettings(), 'xd_receiver.htm');
        FB.ensureInit(function() {

            var hidTitle = $('#hidTitle').attr('value');
            var hidTrueAnswer = point; //$('#hidTrueAnswer').attr('value');
            var hidTotalAnswer = $('#hidTotalAnswer').attr('value');
            var hidQuizLink = $('#hidQuizLink').attr('value');
            var hidDomain = $('#hidDomain').attr('value');

            var message = hidTitle;
            var attachment = {
                'caption': '{*actor*} scored ' + hidTrueAnswer + ' out of a possible ' + hidTotalAnswer + '.',
                'media': [{ 'type': 'image', 'src': hidDomain + '/images/logo.png',
                    'href': hidQuizLink}]
                };
                //                var action_links = [{
                //                    'text': '',
                //                    'href': ''}];
                //FB.Connect.streamPublish(message, attachment, action_links, null, "Share your support for Bill The Aircraft Carrier!", callback, false, null);
                FB.Connect.streamPublish(message, attachment, null, null, 'What do you think?', stream_callback);
            });
        });

    };

    function stream_callback(post_id, exception) {
        //alert('Wall Post Complete');
        ViewResult();
    }

    var SaveSubmitString = '';

    function QuestionValidation() {
        var result = true;

        //alert('validate function');
        var _quizCount = $('#hidQuizCount').attr('value');
        SaveSubmitString = '';

        for (var i = 0; i < _quizCount; i++) {
            var _errCond = 'p[id="err_' + (i + 1) + '"]';
            $(_errCond).css("display", "none");

            var _element = 'div[id="Q.' + (i + 1) + '"] > div';
            var _childCount = $(_element).length;

            if (_childCount != 2) {
                // checkbox
                var _inputChecked = 'div[id="Q.' + (i + 1) + '"] input:checked';
                var _checkNum = $(_inputChecked).length;

                //--- Edit Save Submit -------
                if (_checkNum > 0) {
                    SaveSubmitString = SaveSubmitString + (SaveSubmitString.length > 0 ? '-|-' : '') + 'Q.' + (i + 1);
                    for (var _index = 0; _index < _checkNum; _index++) {
                        var chkInput = $(_inputChecked).get(_index).id.replace('chk_', '');
                        SaveSubmitString = SaveSubmitString + '-|-' + chkInput;
                    }
                }
                //--- Edit Save Submit -------
                $(_errCond).css("display", _checkNum > 0 ? "none" : "block");
                //if (_checkNum == 0) result = false;

            } else {
                // check is radio
                var _radioCond = 'div[id="Q.' + (i + 1) + '"] input[type="radio"]';
                var _isRadio = $(_radioCond).length;

                if (_isRadio > 0) {
                    // radio button
                    var _checkCond = 'input[name="Q' + (i + 1) + '"]:checked';
                    var _value = $(_checkCond).val();

                    //--- Edit Save Submit -------
                    if (_value != undefined) {
                        SaveSubmitString = SaveSubmitString + (SaveSubmitString.length > 0 ? '-|-' : '') + 'Q.' + (i + 1);
                        SaveSubmitString = SaveSubmitString + '-|-' + $(_checkCond).get(0).id.replace('rbtn_', '');
                    }
                    //--- Edit Save Submit -------
                    $(_errCond).css("display", _value != undefined ? "none" : "block");
                    if (_value == undefined) result = false;
                } else {
                    // checkbox
                    var _inputChecked = 'div[id="Q.' + (i + 1) + '"] input:checked';
                    var _checkNum = $(_inputChecked).length;

                    //--- Edit Save Submit -------
                    if (_checkNum > 0) {
                        SaveSubmitString = SaveSubmitString + (SaveSubmitString.length > 0 ? '-|-' : '') + 'Q.' + (i + 1);
                        for (var _index = 0; _index < _checkNum; _index++) {
                            var chkInput = $(_inputChecked).get(_index).id.replace('chk_', '');
                            SaveSubmitString = SaveSubmitString + '-|-' + chkInput;
                        }
                    }
                    //--- Edit Save Submit -------
                    $(_errCond).css("display", _checkNum > 0 ? "none" : "block");
                    //if (_checkNum == 0) result = false;
                }
            }
        }
        return result;
    };

    function openMessage() {
        $('#dlgMessage').dialog('open');
    }

    function closeMessage() {
        $('body').css("padding-bottom", "0px");
        $('#dlgMessage').dialog('close');
    }
    /********************* End login by social network *********************/

    function registerProfile() {

        var emailAddress = $('#txtEmailAddress').attr('value');

        if (emailAddress != '') {

            var chkAgree = document.getElementById('chkAgree');
            if (chkAgree.checked) {

                var firstName = $('#hidFirstName').attr('value');
                var lastName = $('#hidLastName').attr('value');
                var phoneNumber = $('#txtPhoneNumber').attr('value');
                var address1 = $('#txtAddress1').attr('value');
                var address2 = $('#txtAddress2').attr('value');
                var postCode = $('#txtPostCode').attr('value');
                var state = $('#txtState').attr('value');
                var country = $('#cmbCountries').attr('value');

                Sys.Net.WebServiceProxy.invoke("/Services/CheekyCheckupServices.asmx", "RegisterProfile", false, { firstName: firstName, lastName: lastName, emailAddress: emailAddress, mobileNumber: phoneNumber, address1: address1, address2: address2, postCode: postCode, state: state, country: country },
                function(result) {
                    if (result) {
                        if (result == 1) {
                            $('#dlgProfile').dialog('close');
                        }
                        else if (result == 2) {
                            alert('Please input valid email address');
                        }
                        else {
                        }
                    }
                }, null, null);

            }
            else {
                alert('You must agree Terms of Conditions');
            }
        }
        else {
            alert('Please input email address');
        }
    }

    function saveAnswer() {
        var chkSendToFacebook = document.getElementById('chkSendToFacebook');
        var chkSendToFriends = document.getElementById('chkSendToFriends');

        var answerString = '';
        for (var i = 1; i <= 3; i++) {
            var rdo = document.getElementById('rdo' + i);
            if (rdo.checked) {
                answerString = rdo.value;
                break;
            }
        }

        var loginUser = $('#hidLoginUser').attr('value');
        if (loginUser == "2") {
            if (chkSendToFacebook.checked || chkSendToFriends.checked) {
                FB.Connect.showPermissionDialog('publish_stream,offline_access,email',
                                    function(userAllowPerms) {
                                        if (userAllowPerms) { //user has allowed publish access permission                                            
                                            try {
                                                Sys.Net.WebServiceProxy.invoke("/Services/CheekyCheckupServices.asmx", "SaveAnswer", false, { question: 'How often do you want us to send you a Cheeky Check-up nudge?', answerString: answerString, sendFacebook: chkSendToFacebook.checked, sendFriends: chkSendToFriends.checked },
                                                        function(result) {
                                                            if (result) {
                                                                if (result == 1) {
                                                                    alert('Thank you. Your answer is successfully saved.');
                                                                } else if (result == -2) {
                                                                    alert('Fail to save your answer');
                                                                }
                                                                else {
                                                                    alert('Please login before saving your answer');
                                                                    FB.Connect.requireSession(function() { SigninWithFacebookAccount(); });
                                                                }
                                                            }
                                                        }, null, null);
                                            } catch (err) {
                                                alert(err);
                                            }
                                        }
                                    }, false);
            } else {
                try {
                    Sys.Net.WebServiceProxy.invoke("/Services/CheekyCheckupServices.asmx", "SaveAnswer", false, { question: 'How often do you want us to send you a Cheeky Check-up nudge?', answerString: answerString, sendFacebook: chkSendToFacebook.checked, sendFriends: chkSendToFriends.checked },
                    function(result) {
                        if (result) {
                            if (result == 1) {
                                alert('Thank you. Your answer is successfully saved.');
                            } else if (result == -2) {
                                alert('Fail to save your answer');
                            }
                            else {
                                alert('Please login before saving your answer');
                                FB.Connect.requireSession(function() { SigninWithFacebookAccount(); });
                            }
                        }
                    }, null, null);
                } catch (err) {
                    alert(err);
                }
            }
        } else {
            //alert('Please login before saving your answer');
            FB.Connect.requireSession(function() { SigninWithFacebookAccount(); });
        }
    }

    function shareWithFriends() {

        var txtSenderName = $('#txtSenderName').attr('value');
        var txtSenderEmail = $('#txtSenderEmail').attr('value');
        var txtFriendEmails = $('#txtFriendEmails').attr('value');
        var txtContent = $('#txtContent').attr('value');

        if (txtSenderEmail == '') {
            alert('Please input sender email');
            return;
        }
        if (txtFriendEmails == '') {
            alert('Please input Friends\' emails');
            return;
        }

        Sys.Net.WebServiceProxy.invoke("/Services/CheekyCheckupServices.asmx", "SendEmailToFriends", false, { yourName: txtSenderName, yourMail: txtSenderEmail, yourFriends: txtFriendEmails, content: txtContent },
        function(result) {
            if (result) {
                if (result == 1) {
                    $('#dlgShareToFriends').dialog('close');
                }
                else if (result == -1) {
                    alert('Sender email is invalid');
                }
                else {
                    alert('Friends\' emails is invalid');
                }
            }
        }, null, null);
    }
