﻿//Note: make sure "rootPath" variable exists in the pages of Index.aspx and Magazine.aspx
var canBeViewed = 1;
function GoBackToPreviousPage(pageNumber)
{
   var flash;
  
   if(navigator.appName.indexOf("Microsoft") != -1) {
        flash = window["mymovie"];
   }else {
        flash = document["mymovie"];
   }
   flash.CallFromJavaScript(pageNumber);
}
function CanView(key, rightNumber)
{
    PageMethods.CanView(key, rightNumber,
        OnSucceeded, OnFailed);   
}
function Logout()
{
    PageMethods.Logout(OnSucceeded, OnFailed);
}
function HasFilledAllDemography()
{
    PageMethods.HasFilledAllDemography(OnSucceeded, OnFailed);     
}
//function Subscribe()
//{
//    PageMethods.IsAuthenticated(OnSucceeded, OnFailed);
//}
function CloseCompetitionDraw()
{
    var competitionDrawModalPopup = $find('competitionDrawPopupBehavior');
    competitionDrawModalPopup.hide();
}
function OnSucceeded(result, userContext, methodName)
{
    if(methodName == "AddSkyscraperAdTrack")
    {
        adTackID = result;
    }
    if(methodName == "GetSkyscraperAd")
    {
        ProcessGetAdResult(result);
    }
    if(methodName == "GetUnassociatedAds")
    {
        ProcessGetUnassociatedAds(result);
    }
    if(methodName == "GetUserScore")
    {
        ProcessUserScore(Sys.Serialization.JavaScriptSerializer.deserialize(result));
    }
    if(methodName == "JoinCompetitionInitialise")
    {
        ProcessCompetitionResult(Sys.Serialization.JavaScriptSerializer.deserialize(result));
    }
    if(methodName == "JoinCompetition")
    {
        ProcessCompetitionResult(Sys.Serialization.JavaScriptSerializer.deserialize(result));
        HideElement('loginLoadImg');
        HideElement('compLoadingImg');
        HideElement('loginPopupLoadingImg');
        HideElement('regPopupLoadingImg');
    }
    if(methodName == "HasFilledAllDemography")
    {
        if(!result)
        {
            var magName = GetRequestStringParamValue(queryString, "MagazineName");
            if(magName.toString().toLowerCase() == "tech")
                LoadImage("demographyReminder_tech.gif", "showDemographic");
            else
                LoadImage("demographyReminder_me.gif", "showDemographic");
        }
    }
//    if(methodName == "IsAuthenticated")
//    {
//        if(result)
//        {
//            var competitionDrawModalPopup = $find('competitionDrawPopupBehavior');
//            competitionDrawModalPopup.show();
//            setTimeout("CloseCompetitionDraw()" ,3000);
//        }
//        else
//        {
//            ShowLogin();
//        }
//    }
    if(methodName == "CanView")
    {
        if(result == "true")
            canBeViewed = 1;
        else
        {                   
            ShowLoginAndRegister();
            //Go to the previous page(do not delete)
            //GoBackToPreviousPage(result);
            canBeViewed = 0;
        }
    }
    if(methodName == "SendPassword")
    {
        if(result=="true")
        {
            ShowSendPasswordMessage(true, "We just sent you a password reminder email to " + GetSendPasswordUserEmail() + ".");
        }
        else if(result=="false")
            ShowSendPasswordMessage(false, "User doesn't exist or our email server is down.")
        else
        {
            SetSendPasswordErrorMessage(result);
        }
    }
    if(methodName == "Logout")
    {
        if(result)
        {           
            //LoginInputClear();
            loginDiv.style.display = '';
            loginedDiv.style.display = 'none';
            welcomeDiv.style.display = 'none';
            if(document.all)
                userDisplay.innerText = '';
            else
                userDisplay.textContent = '';
            
        }
        else
        {
            ShowPageErrorPopup("Logout failed, please try again. If it failed again, please report to us.");
        }
    }
    if(methodName == "ChangePassword")
    {
        ShowChangePasswordMessage(result);
    }
    if(methodName == "SendQuery")
    {
        if(result == "true" )
        {
            var loadingImg = $get('contactUserEmailLoadingImg');
            loadingImg.style.display = 'none';
            ClearSendQueryTextBox();
            //Control animation
            SetUserEmailSucceedDiv($get('contactUserEmailSubmit'), $get('userEmailSucceedDiv'));
            var onclkBehavior = $find("controlledAnimation").get_OnClickBehavior().get_animation();
            onclkBehavior.play();                  
        }
        else if(result == "false")
        {
            var loadingImg = $get('contactUserEmailLoadingImg');
            loadingImg.style.display = 'none';
            ShowPageErrorPopup('Our mail server failed to work at the moment. Please try it later.'+
                                'If it is still unsuccessful, please report it to us.');
        }
        else
        {
            ShowSendQueryMessage(result);
        }
    }
}
function OnFailed(error, userContext, methodName)
{
    if(error!=null)
    {
        if(methodName == "CanView")
        {
            canBeViewed = 0;
        }
        if(methodName == "SendPassword")
        {
            ShowSendPasswordMessage(false, "Server has an error, please try later.");
        }
        if(methodName == "Login")
        {
            ShowFailedLogin("Server has an error, please try later.", false);
        }
        if(methodName == "Logout")
        {
            ShowPageErrorPopup("Logout failed, please try again. If it failed again, please report it to us.");
        }
        if(methodName == "ChangePassword")
        {
            ShowChangePasswordMessage("Server had an error, please try later.");
        }
        if(methodName == "SendQuery")
        {
            var loadingImg = $get('contactUserEmailLoadingImg');
            loadingImg.style.display = 'none';
            ShowPageErrorPopup('Send Comments/Query failed, please try it later.' +
                                'If it is still unsuccessful, please report it to us.');
        }
    }
}
/********************Term***************/
function ShowTermCondition()
{
    var termModalPopup = $find('termModalPopupBehavior');
    termModalPopup.show();
    var registerModalPopup = $find('registerModalPopupBehavior');
    registerModalPopup.hide();
}
function CloseTermModalPopup()
{
    var termModalPopup = $find('termModalPopupBehavior');
    termModalPopup.hide();
    var registerModalPopup = $find('registerModalPopupBehavior');
    registerModalPopup.show();
    LoadSwf("registerFlashDiv", "registerFlash", "false");
}
/********************Login**************/
function ShowSucceedLogin(userName)
{
    //LoginInputClear();
    loginDiv.style.display = 'none';  
    loginedDiv.style.display = '';
    welcomeDiv.style.display = '';
    if(document.all)
        userDisplay.innerText = userName;
    else
        userDisplay.textContent = userName;
}
/**************Page Error Popup**************/
function PageErrorOk()
{
    var pageErrorPopup = $find('pageErrorModalPopupBehavior');
    pageErrorPopup.hide();
}
function ShowPageErrorPopup(message)
{
    SetLabelMessage('lbPageErrorMessage', message);
    var pageErrorPopup = $find('pageErrorModalPopupBehavior');
    pageErrorPopup.show();
}
/**************Send Password******************/
function ResetRemindPassword()
{
    var txtRemindUserName = $get('txtRemindUserName');
    txtRemindUserName.value = '';
    txtRemindUserName.tabIndex = 0;
    var remindUserNameRequired = $get('RemindUserNameRequired');
    remindUserNameRequired.style.display = 'none'; 
    var loadingImg = $get('sendPasswordImgLoading');
    loadingImg.style.display = 'none';
    var lbRemindInfo = $get('lbRemindInfo');
    lbRemindInfo.style.display = 'none';
    
    btSendPassword.tabIndex = 0;
    var btSendPasswordCancel = $get('btSendPasswordCancel');
    btSendPasswordCancel.tabIndex = 0;
}
function ShowRemindPassword(element)
{
    if(element.innerHTML == 'Forgotten password?')
    {        
        var popup = $find('joinCompetitionPopupBehavior');
        popup.hide();
        
        ResetRemindPassword();
        var forgetPasswordModalPopup = $find('forgetPasswordModalPopupBehavior');
        forgetPasswordModalPopup.show();
        HideElement('forgetPasswordModalPopupBehavior_backgroundElement');
    }
    else if(element.innerHTML == 'Need to register?')
    {
        HideElement('compLoginDiv');
        ShowElement('compRegDiv');
        ShowElement('compBtDiv');
        if($get('compQADiv').style.display == '')
            HideElement('registerTitleRow');
    }
}
function SendPassword()
{
    var remindUserNameRequired = $get('RemindUserNameRequired');
    remindUserNameRequired.style.display = 'none';
    var txtRemindUserName = $get('txtRemindUserName');
    PageMethods.SendPassword(txtRemindUserName.value, OnSucceeded, OnFailed);
    var loadingImg = $get('sendPasswordImgLoading');
    loadingImg.style.display = '';
    var lbInfo = $get('lbRemindInfo');
    lbInfo.style.display = 'none';
}
function SendPasswordCancel()
{
    ResetRemindPassword();
    var forgetPasswordPopup = $find('forgetPasswordModalPopupBehavior');
    forgetPasswordPopup.hide();
    var popup = $find('joinCompetitionPopupBehavior');
    popup.show();
    HideElement('joinCompetitionPopupBehavior_backgroundElement');
}
function SetSendPasswordErrorMessage(message)
{
    var loadingImg = $get('sendPasswordImgLoading');
    loadingImg.style.display = 'none';
    var lbInfo = $get('lbRemindInfo');
    lbInfo.style.display = 'none';
    var remindUserNameRequired = $get('RemindUserNameRequired');
    remindUserNameRequired.style.display = '';
    remindUserNameRequired.title = message;
}
function GetSendPasswordUserEmail()
{
    var txtRemindUserName = $get('txtRemindUserName');
    return txtRemindUserName.value;
}
function ShowSendPasswordMessage(isSucceed, message)
{
    var loadingImg = $get('sendPasswordImgLoading');
    loadingImg.style.display = 'none';
    var lbInfo = $get('lbRemindInfo');
    lbInfo.style.display = '';
    if(document.all)
        lbInfo.innerText = message;
    else
        lbInfo.textContent = message;
    if(isSucceed)
        lbInfo.style.color = 'Green';
    else
        lbInfo.style.color = 'Red';
}
/*******************Page message popup***********************/
function PageMessageOk()
{
    var pageMessageModalPopup = $find('pageMessageModalPopupBehavior');
    pageMessageModalPopup.hide(); 
}
function ShowPageMessagePopup(message)
{
    SetLabelMessage('lbPageMessage',message);
    var pageMessageModalPopup = $find('pageMessageModalPopupBehavior');
    pageMessageModalPopup.show(); 
}
/******************Show user's profile in the edit form*****************/
function ShowEditProfilePopup()
{
     var profileEditPopup = $find('profileEditModalPopupBehavior');
     profileEditPopup.show();
     HideElement('profileEditModalPopupBehavior_backgroundElement');
     var magazineName = "";
     if(queryString)
     {
        magazineName = GetRequestStringParamValue(queryString, "MagazineName");
     }
     var so = new SWFObject("demographic.swf?isEdit=true&MagazineName=" + magazineName + "&demographyUrl=" + rootPath + "DemographyWebService.asmx", "editDemographicFlash", "430", "520", "9", "#2d2f34");
     so.addParam("allowScriptAccess", "always");
     so.addParam("wmode", "transparent");
     so.write("editProfileFlashDiv");
}
/*******************Change user password******************/
function ResetChangePasswordTabIndex()
{
    $get('txtOldPassword').tabIndex = 0;
    $get('txtNewPassword').tabIndex = 0;
    $get('txtConfirmNewPassword').tabIndex = 0;
    $get('btChangePassword').tabIndex = 0;
    $get('btCancelChangePassword').tabIndex = 0;
}
function ResetChangePasswordMessage()
{
    $get('oldPasswordRequired').style.display = 'none';
    $get('newPasswordRequired').style.display = 'none';
    $get('confirmNewPasswordRequired').style.display = 'none';
    $get('changePasswordImgLoading').style.display = 'none';
    $get('lbChangePasswordError').style.display = 'none';
}
function ShowChangePassword()
{
    var profileEditModalPopup = $find('profileEditModalPopupBehavior');
    profileEditModalPopup.hide();
    ResetChangePasswordTabIndex();
    var changePasswordModalPopup = $find('changePasswordModalPopupBehavior');
    changePasswordModalPopup.show();
}
function ChangePassword()
{
    var oldPassword = $get('txtOldPassword').value;
    var newPassword = $get('txtNewPassword').value;
    var confirmNewPassword = $get('txtConfirmNewPassword').value
    PageMethods.ChangePassword(oldPassword,
                               newPassword,
                               confirmNewPassword,
                               OnSucceeded, 
                               OnFailed);
    
    var loadingImg = $get('changePasswordImgLoading');
    loadingImg.style.display = '';
    var lbError = $get('lbChangePasswordError');
    lbError.style.display = 'none';
}
function CancelChangePassword()
{
    ResetChangePasswordMessage();
    //Clear the text boxes value
    $get('txtOldPassword').value = '';
    $get('txtNewPassword').value = '';
    $get('txtConfirmNewPassword').value = '';
    var changePasswordModalPopup = $find('changePasswordModalPopupBehavior');
    changePasswordModalPopup.hide();
}
function ShowChangePasswordMessage(message)
{
    ResetChangePasswordMessage();
    if(message == 'Success')
    {
        //Clear the text boxes value
        $get('txtOldPassword').value = '';
        $get('txtNewPassword').value = '';
        $get('txtConfirmNewPassword').value = '';
        
        //hide the change password popup
        var changePasswordModalPopup = $find('changePasswordModalPopupBehavior');
        changePasswordModalPopup.hide();
        
        //Show the message popup and set the message
        ShowPageMessagePopup('Your password has been updated.');   
    }
    else
    {
        var spliter = message.indexOf("|");
        if(spliter < 0)
        {
            if(document.all)
                lbChangePasswordError.innerText = message;
            else
                lbChangePasswordError.textContent = message;
            lbChangePasswordError.style.display = '';
        }
        else
        {
            var errorMessages = message.split("|");
            for(var i = 0; i<errorMessages.length; i++)
            {
                var commaSpliter = errorMessages[i].indexOf(":");
                if(commaSpliter > 0)
                {
                    var propertyName = errorMessages[i].substring(0, commaSpliter);
                    var description = errorMessages[i].substring(commaSpliter + 1);
                    switch(propertyName)
                    {
                        case "OldPassword":                            
                            var oldPasswordRequired = $get('oldPasswordRequired');
                            oldPasswordRequired.style.display = '';
                            oldPasswordRequired.title = description;                            
                            break;
                        case "NewPassword":
                            var newPasswordRequired = $get('newPasswordRequired');
                            newPasswordRequired.style.display = '';
                            newPasswordRequired.title = description;
                            break;
                        case "ConfirmNewPassword":
                            var confirmNewPasswordRequired = $get('confirmNewPasswordRequired');
                            confirmNewPasswordRequired.style.display = '';
                            confirmNewPasswordRequired.title = description;
                            break;
                    }
                }
            }
        }
    }
}
/******************Comments/Query********************/
function ClearSendQueryTextBox()
{
    $get('userEmailErrorImg').style.display = 'none';
    $get('userEmailTextErrorImg').style.display = 'none';
    userEmailTextBox.value = '';
    userEmailBodyTextBox.value = '';
    var waterMarkUserEmail = $find('wmUserEmail');
    if(waterMarkUserEmail)
        waterMarkUserEmail.initialize();
    var waterMarkUserEmailBody = $find('wmUserEmailBody');
    if(waterMarkUserEmailBody)
        waterMarkUserEmailBody.initialize();
}
function SendQuery()
{
    $get('userEmailErrorImg').style.display = 'none';
    $get('userEmailTextErrorImg').style.display = 'none';
    
    PageMethods.SendQuery(userEmailTextBox.value,
                          userEmailBodyTextBox.value,
                          OnSucceeded,
                          OnFailed);
    
    var loadingImg = $get('contactUserEmailLoadingImg');
    loadingImg.style.display = '';    
}
function ShowSendQueryMessage(message)
{
    $get('userEmailErrorImg').style.display = 'none';
    $get('userEmailTextErrorImg').style.display = 'none';
    
    var loadingImg = $get('contactUserEmailLoadingImg');
    loadingImg.style.display = 'none';
    
    var spliter = message.indexOf("|");
    if(spliter>0)
    {
        var errorMessages = message.split("|");
        for(var i = 0; i<errorMessages.length; i++)
        {
            var commaSpliter = errorMessages[i].indexOf(":");
            if(commaSpliter > 0)
            {
                var propertyName = errorMessages[i].substring(0, commaSpliter);
                var description = errorMessages[i].substring(commaSpliter + 1);
                switch(propertyName)
                {
                    case "UserEmail":
                        var userEmailErrorImage = $get('userEmailErrorImg');
                        userEmailErrorImage.style.display = '';
                        userEmailErrorImage.title = description;
                        break;
                    case "UserEmailText":
                        var userEmailTextErrorImage = $get('userEmailTextErrorImg');
                        userEmailTextErrorImage.style.display = '';
                        userEmailTextErrorImage.title = description;
                        break;
                }
            }
         }
     }
}
/*Close demographic flash popup*/
function CloseDemographic(isEdit)
{
    var editProfileModalPopup = $find('profileEditModalPopupBehavior');
    editProfileModalPopup.hide();

    var profileModalPopup = $find('profileModalPopupBehavior');
    profileModalPopup.hide();
}
/*Get remote page content and display*/
function GetRemotePageRequest(pageUrl)
{
    // Instantiate the WebRequest object.
    var wRequest =  new Sys.Net.WebRequest();
    
    // Set the request Url.  
    wRequest.set_url(pageUrl);  
    
    // Set the request verb.
    wRequest.set_httpVerb("GET");
          
    // Set user's context
    wRequest.set_userContext("user's context");
            
    // Set the web request completed event handler,
    // for processing return data.
    wRequest.add_completed(OnWebRequestCompleted);
       
      
    // Clear the results page element.
    $($get('remotePageContentDiv')).html("");
    
    // Execute the request.
    wRequest.invoke();  

}
function OnWebRequestCompleted(executor, eventArgs) 
{
    if(executor.get_responseAvailable()) 
    {                
        // Display Web request body.                  
        DisplayWebRequestBody(executor);    
    }
    else
    {
        if (executor.get_timedOut())
            $($get('remotePageContentDiv')).html("Timed out, please try again.");
        else if (executor.get_aborted())
            $($get('remotePageContentDiv')).html("Aborted, please try again.");
       
    }
    var remotePageRequestModalPopup = $find('remotePageRequestPopupBehavior');
    remotePageRequestModalPopup.show();
}
function DisplayWebRequestBody(executor)
{   
    $($get('remotePageContentDiv')).html(executor.get_responseData());
}
function CloseRemotePageRequest()
{
    var remotePageRequestModalPopup = $find('remotePageRequestPopupBehavior');
    remotePageRequestModalPopup.hide();
}
