﻿// JScript File
var competitionID;
var isLoginClick;
function TestClick(ID)
{
    JoinCompetitionEntry(ID);   
}
function CompetitionKeyPress(e)
{
    var keyNum;
    
    if(window.event) // IE
    {
      keyNum = e.keyCode;
    }
    else if(e.which) // Netscape/Firefox/Opera
    {
      keyNum = e.which;
    }
    if(keyNum == 13)
    {
        if($get('compLoginDiv').style.display == '')
            CompetitionOkClick(true);
        else
            CompetitionOkClick(false);
    }
}
function CloseMessagePopup()
{
    var messageModalPopup = $find('messageModalPopupBehavior');
    messageModalPopup.hide();
}
function ShowAddProfilePopup()
{
    //hide the message popup
    var messageModalPopup = $find('messageModalPopupBehavior');
    messageModalPopup.hide();
    
    var profileModalPopup = $find('profileModalPopupBehavior');
    profileModalPopup.show();
    var magazineName = "";
    if(queryString)
    {
        magazineName = GetRequestStringParamValue(queryString, "MagazineName");
    }
    var so = new SWFObject("demographic.swf?isEdit=true&MagazineName=" + magazineName + "&demographyUrl=" + rootPath + "DemographyWebService.asmx", "addDemographicFlash", "430", "520", "9", "#2d2f34");
    so.addParam("allowScriptAccess", "always");
    so.addParam("wmode", "transparent");
    so.write("addProfileFlashDiv");       
}
function ShowLoginAndRegister()
{
    ResetCompetitionUI();
    ResetCompetitionElement();
    //ClearCompetitionInput();
    competitionID = 0;
    ShowElement('popupTb');
    
    
    var popup = $find('joinCompetitionPopupBehavior');
    popup.show();
    HideElement('joinCompetitionPopupBehavior_backgroundElement');
}
function ShowLogin()
{
    ResetCompetitionUI();
    ResetCompetitionElement();
    ClearCompetitionInput();    
    competitionID = 0;
    SetLabelMessage('lbCompLoginEmail','EMAIL');
    ShowElement('normalTb');
    //show login div
    ShowElement('compLoginDiv');
    var popup = $find('joinCompetitionPopupBehavior');
    popup.show();
    HideElement('joinCompetitionPopupBehavior_backgroundElement');
}
function ShowRegister()
{
    ResetCompetitionUI();
    ResetCompetitionElement();
    ClearCompetitionInput();
    
    competitionID = 0;
    ShowElement('normalTb');
    //show register div
    ShowElement('compRegDiv');
    ShowElement('compBtDiv');
    var popup = $find('joinCompetitionPopupBehavior');
    popup.show();
    HideElement('joinCompetitionPopupBehavior_backgroundElement');
    
    //preload the demographic flash
    var magazineName = "";
    if(queryString)
    {
        magazineName = GetRequestStringParamValue(queryString, "MagazineName");
    }
    var so = new SWFObject("demographic.swf?isEdit=true&MagazineName=" + magazineName + "&demographyUrl=" + rootPath + "DemographyWebService.asmx", "addDemographicFlash", "430", "520", "9", "#2d2f34");
    so.addParam("allowScriptAccess", "always");
    so.addParam("wmode", "transparent");
    so.write("addProfileFlashDiv");
}
/*This function is called by the clickable icon in flash*/
function JoinCompetitionEntry(id)
{
    ResetCompetitionUI();
    ResetCompetitionElement();
    ClearCompetitionInput();
    competitionID = id;
    PageMethods.JoinCompetitionInitialise(competitionID, OnSucceeded, OnFailed);
}
function GetCompTextBoxValue(id, popupId)
{
    if(IsShowLoginAutoPopup())
        return GetTextBoxValue(popupId);
    else
        return GetTextBoxValue(id);        
}
function CompetitionOkClick(isLoginButton)
{
    isLoginClick = isLoginButton;
    var compLoginEmail = GetCompTextBoxValue('txtCompLoginEmail', 'txtLoginPopupEmail');
    var compLoginPassword = GetCompTextBoxValue('txtCompLoginPassword', 'txtLoginPopupPassword');
    var cbCompLoginRememberMe;
    if(IsShowLoginAutoPopup())
        cbCompLoginRememberMe = $get('cbLoginPopupRememberMe');
    else
        cbCompLoginRememberMe = $get('cbCompLoginRememberMe');
    var compRegEmail = GetCompTextBoxValue('txtCompRegEmail', 'txtRegPopupEmail');
    var compRegFirstName = GetCompTextBoxValue('txtCompRegFirstName', 'txtRegPopupFirstName');
    var compRegLastName = GetCompTextBoxValue('txtCompRegLastName', 'txtRegPopupLastName');
    var compRegPassword = GetCompTextBoxValue('txtCompRegPassword', 'txtRegPopupPassword');
    var compRegConfirmPassword = GetCompTextBoxValue('txtCompRegConfirmPassword', 'txtRegPopupConfirmPassword');
    

    
    var compAnswer = GetTextBoxValue('txtCompAnswer');
    var magName = GetRequestStringParamValue(queryString, "MagazineName");
    var isShowSkillQuestion = false;
    if($get('compQADiv').style.display == '')
        isShowSkillQuestion = true;
        
    ResetCompetitionElement();
    if(isLoginButton)
    {
        if(IsShowLoginAutoPopup())
            ShowElement('loginPopupLoadingImg');
        else
            ShowElement('loginLoadImg');
        PageMethods.JoinCompetition(competitionID,
                                            magName,
                                            "Login",
                                            isShowSkillQuestion,
                                            compLoginEmail,
                                            "",
                                            "",
                                            compLoginPassword,
                                            "",
                                            compAnswer,
                                            cbCompLoginRememberMe.checked,
                                            OnSucceeded,
                                            OnFailed)
    }
    else
    {      
        if(IsShowLoginAutoPopup())
        {
            ShowElement('regPopupLoadingImg');
            PageMethods.JoinCompetition(competitionID,
                                                magName,
                                                "Register",
                                                isShowSkillQuestion,
                                                compRegEmail,
                                                compRegFirstName,
                                                compRegLastName,
                                                compRegPassword,
                                                compRegConfirmPassword,
                                                compAnswer,
                                                false,
                                                OnSucceeded, 
                                                OnFailed);
        }
        else
        {
            if($get('compQADiv').style.display == '' && $get('compLoginDiv').style.display == 'none' && $get('compRegDiv').style.display == 'none')
            {
                ShowElement('compLoadingImg');
                PageMethods.JoinCompetition(competitionID, 
                                            magName, 
                                            "AddCompEntry", 
                                            true, 
                                            "", 
                                            "", 
                                            "", 
                                            "", 
                                            "", 
                                            compAnswer,
                                            false,
                                            OnSucceeded,
                                            OnFailed);
            }
            else
            {
                if($get('compRegDiv').style.display == '')
                {
                    ShowElement('compLoadingImg');
                    PageMethods.JoinCompetition(competitionID,
                                                magName,
                                                "Register",
                                                isShowSkillQuestion,
                                                compRegEmail,
                                                compRegFirstName,
                                                compRegLastName,
                                                compRegPassword,
                                                compRegConfirmPassword,
                                                compAnswer,
                                                false,
                                                OnSucceeded, 
                                                OnFailed);
                }
            }
        }        
    }
}
function CompetitionCancelClick()
{
    var popup = $find('joinCompetitionPopupBehavior');
    popup.hide();
    ResetCompetitionUI();
    ResetCompetitionElement();
    ClearCompetitionInput();
}
function SetErrorMessage(id, popupId, message)
{
    if(IsShowLoginAutoPopup())
    {
        var ele = $get(popupId);
        ele.style.display = '';
        ele.title = message;
    }
    else
    {
        var ele = $get(id);
        ele.style.display = '';
        ele.title = message;
    }
}
function IsShowLoginAutoPopup()
{
    if($get('popupTb').style.display == '')
        return true;
    else
        return false;
}
function ProcessCompetitionResult(result)
{
    for(var i=0; i<result.ValidationEntries.length; i++)
    {
        switch(result.ValidationEntries[i].Name)
        {
            case "EmailAddress":
                SetErrorMessage('compRegEmailRequired', 'regPopupEmailRequired', result.ValidationEntries[i].Message);
                break;
            case "FirstName":
                SetErrorMessage('compRegFirstNameRequired', 'regPopupFirstNameRequired', result.ValidationEntries[i].Message);
                break;
            case "LastName":
                SetErrorMessage('compRegLastNameRequired', 'regPopupLastNameRequired', result.ValidationEntries[i].Message);
                break;
            case "Password":
                SetErrorMessage('compRegPasswordRequired', 'regPopupPasswordRequired', result.ValidationEntries[i].Message);
                break;
            case "ConfirmPassword":
                SetErrorMessage('compRegConfirmPasswordRequired', 'regPopupConfirmPasswordRequired', result.ValidationEntries[i].Message);
                break;
            case "Answer":
                var compAnswerRequired = $get('compAnswerRequired');
                compAnswerRequired.style.display = '';
                compAnswerRequired.title = result.ValidationEntries[i].Message;
                break;
            case "ShowLoginDiv":
                ShowElement('normalTb');
                ShowElement('compLoginDiv');
                $get('loginMultiLink').innerHTML = "Need to register?";
                var compPopup = $find('joinCompetitionPopupBehavior');
                compPopup.show();
                HideElement('joinCompetitionPopupBehavior_backgroundElement');
                break;
            case "SkillQuestion":
                ShowElement('normalTb');
                ShowElement('compQADiv');
                HideElement('loginTitleRow');
                SetLabelMessage('lbCompLoginEmail','LOGIN(EMAIL)');
                $get('btLogin').value = 'ENTER';
                $get('btLogin').title = 'ENTER';
                SetLabelMessage("lbCompQuestionText", result.ValidationEntries[i].Message);
                var compPopup = $find('joinCompetitionPopupBehavior');
                compPopup.show();
                HideElement('joinCompetitionPopupBehavior_backgroundElement');
                break;
            case "ShowButton":
                ShowElement('compBtDiv');
                break;            
            case "CompetitionName":
                break;
            case "CompetitionResult":
                ClearCompetitionInput();
                ResetCompetitionElement();
                ResetCompetitionUI();
                var compPopup = $find('joinCompetitionPopupBehavior');
                compPopup.hide();
                if(result.ValidationEntries[i].IsValid)
                {                    
                    ShowPageMessagePopup(result.ValidationEntries[i].Message); 
                    HideElement('pageMessageModalPopupBehavior_backgroundElement');
                    setTimeout("PageMessageOk()", 3000);                
                }
                else
                {
                    if(result.ValidationEntries[i].Message != "NoCompetition")
                    {
                        ShowPageMessagePopup(result.ValidationEntries[i].Message);
                        HideElement('pageMessageModalPopupBehavior_backgroundElement');
                        setTimeout("PageMessageOk()", 3000); 
                    }
                        //ShowPageErrorPopup(result.ValidationEntries[i].Message);
                }                    
                break;
            case "LoginResult":
                if(result.ValidationEntries[i].IsValid)
                {
                    ClearCompetitionInput();
                    ResetCompetitionElement();
                    ResetCompetitionUI();
                    ShowSucceedLogin(result.ValidationEntries[i].Message);
                    //Show score
                    GetUserScore();
                    //Resume page
                    var magazineID = GetRequestStringParamValue(queryString, "MagazineID");
                    GetUserLastVisitedPage(magazineID);
                }
                else
                {
                    if(isLoginClick)
                    {
                        if(IsShowLoginAutoPopup())
                        {
                            SetLabelMessage('lbLoginPopupError', result.ValidationEntries[i].Message);
                            ShowElement('lbLoginPopupError');
                        }
                        else
                        {
                            SetLabelMessage('lbLoginError', result.ValidationEntries[i].Message);
                            ShowElement('lbLoginError');
                        }
                    }
                    else
                    {
                        if(IsShowLoginAutoPopup())
                        {
                            SetLabelMessage('lbRegPopupError', result.ValidationEntries[i].Message);
                            ShowElement('lbRegPopupError');
                        }
                        else
                        {
                            SetLabelMessage('lbCompError', result.ValidationEntries[i].Message);
                            ShowElement('lbCompError');
                        }
                    }
                }
                break;
            case "RegisterResult":
                if(!result.ValidationEntries[i].IsValid)
                {
                    if(IsShowLoginAutoPopup())
                    {
                        SetLabelMessage('lbRegPopupError', result.ValidationEntries[i].Message);
                        ShowElement('lbRegPopupError');
                    }
                    else
                    {
                        SetLabelMessage('lbCompError', result.ValidationEntries[i].Message);
                        ShowElement('lbCompError');
                    }
                }
                else
                {
                    ClearCompetitionInput();
                    ResetCompetitionElement();
                    ResetCompetitionUI();
                    var compPopup = $find('joinCompetitionPopupBehavior');
                    compPopup.hide();
                    //show the message
                    SetLabelMessage('lbPopupMessage', result.ValidationEntries[i].Message);
                    var messageModalPopup = $find('messageModalPopupBehavior');
                    messageModalPopup.show();
                    HideElement('messageModalPopupBehavior_backgroundElement');
                    
                    
                    setTimeout("CloseMessagePopup()", 5000);
                    //set time out to display the add profile
                    //setTimeout("ShowAddProfilePopup()", 6000);
                }
                break;
            default:
                break;   
        }
    }
}
function ResetCompetitionUI()
{
    HideElement('popupTb');
    HideElement('normalTb');
    HideElement('compLoginDiv');
    HideElement('compRegDiv');
    HideElement('compQADiv');
    HideElement('compBtDiv');
    ShowElement('loginTitleRow');
    ShowElement('registerTitleRow');
    $get('loginMultiLink').innerHTML = "Forgotten password?";
    $get('btLogin').value = 'LOGIN';
    $get('btLogin').title = 'LOGIN';
}
function ResetCompetitionElement()
{
    HideElement('compRegEmailRequired');
    HideElement('regPopupEmailRequired');
    HideElement('compRegFirstNameRequired');
    HideElement('regPopupFirstNameRequired');
    HideElement('compRegLastNameRequired');
    HideElement('regPopupLastNameRequired');    
    HideElement('compRegPasswordRequired');
    HideElement('regPopupPasswordRequired');
    HideElement('compRegConfirmPasswordRequired');
    HideElement('regPopupConfirmPasswordRequired');
    HideElement('compAnswerRequired');
    HideElement('lbCompError');
    HideElement('lbRegPopupError');
    HideElement('lbLoginError');
    HideElement('lbLoginPopupError');
}
function ClearCompetitionInput()
{
    SetTextBoxValue('txtCompLoginEmail', '');
    SetTextBoxValue('txtLoginPopupEmail', '');
    SetTextBoxValue('txtCompLoginPassword', '');
    SetTextBoxValue('txtLoginPopupPassword', '');
    SetTextBoxValue('txtCompRegEmail', '');
    SetTextBoxValue('txtRegPopupEmail', '');
    SetTextBoxValue('txtCompRegFirstName', '');
    SetTextBoxValue('txtRegPopupFirstName', '');
    SetTextBoxValue('txtCompRegLastName', '');
    SetTextBoxValue('txtRegPopupLastName', '');
    SetTextBoxValue('txtCompRegPassword', '');
    SetTextBoxValue('txtRegPopupPassword', '');
    SetTextBoxValue('txtCompRegConfirmPassword', '');
    SetTextBoxValue('txtRegPopupConfirmPassword', '');
    SetTextBoxValue('txtCompAnswer', '');
}