﻿function SetButtons(disable)
{
    var btnStart = document.getElementById('btnStart');
    btnStart.disabled = disable;   
    /*NewLine*/ 
    if (disable)
    {
        btnStart.value = 'Please wait';
    }
    else
    {
        btnStart.value = 'Continue';
    }
    
    var btnCallBack = document.getElementById('btnCallBack');
    btnCallBack.disabled = disable; 
    var btnBack = document.getElementById('btnBack');
    btnBack.disabled = disable; 
    var btnStartActual = document.getElementById('btnStartActual');
    btnStartActual.disabled = disable; 
}
function ValidateAnswer()
{
    var answervaluefield = document.getElementById('answervalue');
    var errorselectvalue_form = document.getElementById('errorselectvalue');
    
    if (answervaluefield.value == -1)
    {
        errorselectvalue_form.style.display = 'block';
        SetButtons(false);
        return false;
    }
    errorselectvalue_form.style.display = 'none';
    return true;
}
function SetUnanswered()
{
    var answervaluefield = document.getElementById('answervalue');
    answervaluefield.value = -1; 
}
function SetQuestionAnswer(answerid)
{
    var answervaluefield = document.getElementById('answervalue');
    answervaluefield.value = answerid; 
}


function InitialCallback()
{   
    SetButtons(true);
    
    var object = new QuestionnaireInfo();
    var IsLeaderField = document.getElementById('IsLeader');
    if (IsLeaderField.value == "1")
    {
        //Save leader information
        object.IsLeader = true;
        object.Token = document.getElementById('Token').value; 
        object.Level = -1;
        object.Firstname = document.getElementById('txtfirstname').value;
        object.Lastname = document.getElementById('txtsurname').value;
        object.EmailAddress = document.getElementById('txtemailaddress').value;
        object.Telephone = document.getElementById('txtTelephone').value;
        object.Cellphone = document.getElementById('txtcellphone').value;
        object.Fax = document.getElementById('txtfax').value;
        object.DOB = document.getElementById('txtdob').value;
        object.HomeLanguage = document.getElementById('homelanguage').value;
        object.Position = document.getElementById('position').value;
        object.Duration = document.getElementById('duration').value;
        object.Education = document.getElementById('education').value;
    }

    if (IsLeaderField.value == "0")
    {
        //Save raters radio button question
        object.IsLeader = false;
        var lower = document.getElementById('lower');
        var same = document.getElementById('same');
        var higher = document.getElementById('higher');
        
        if (lower.checked == true)
            object.Level = 0;
            
        if (same.checked == true)
            object.Level = 1;
        
        if (higher.checked == true)
            object.Level = 2;
            
        object.Token = document.getElementById('Token').value; 
            
    }
   
    QuestionService.SaveInitialQuestionnaireInfo(object, OnInitialCallbackComplete, OnTimeout, OnError);
}
function OnInitialCallbackComplete()
{
    SetButtons(false);
    Callback();
}

function DetermineProfile()
{
    SetButtons(true);    
    var token = document.getElementById('Token');
    DisplayUpdateImage(true);
    if (typeof QuestionService != 'object')
    {
        //alert('Page did not finish loading. Please try again.');
        SetButtons(false);
    }
    QuestionService.GetProfile(token.value, OnDetermineProfileComplete, OnTimeout, OnError);
}
function OnDetermineProfileComplete(response)
{
    SetButtons(false);
    var StartForm = document.getElementById('StartForm');
    var PreStartForm = document.getElementById('PreStartForm');
    
    if (!response.HasError)
    {   
        var QuestionnaireHeaderText;
        
        if (response.IsLeader)
        {
            QuestionnaireHeaderText = "You are a leader in " + response.Division + " of organisation " + response.Company + ".";                
        }
        else
        {
            QuestionnaireHeaderText = "You are rating " + response.LeaderFirstname + ' ' + response.LeaderLastname + " of division " + response.Division + " of organisation " + response.Company + ".";                
        }
        document.getElementById('TokenProfile').innerHTML = QuestionnaireHeaderText;
        
        if (response.LastQuestion != -1)
        {            
            Callback();
            return;
        }
        
         document.getElementById('ProfileText1').innerHTML = QuestionnaireHeaderText;
         document.getElementById('ProfileText2').innerHTML = QuestionnaireHeaderText;
         
         var IsLeaderField = document.getElementById('IsLeader');
         
         
         
         StartForm.style.display = 'none';
         PreStartForm.style.display = 'block';
         
         if (response.IsLeader)
         {
            IsLeaderField.value = "1";
            
            document.getElementById('LeaderForm').style.display = 'block';
            document.getElementById('txtfirstname').value = response.LeaderFirstname;
            document.getElementById('txtsurname').value = response.LeaderLastname;
            
            document.getElementById('txtfirstname').focus();
         }
         else
         {
            IsLeaderField.value = "0";
            var RaterForm = document.getElementById('RaterForm');
            RaterForm.style.display = 'block';
         }        
        
    }
    else
    {
        //HasError true           
        StartForm.style.display = 'none';
        var errorText = document.getElementById('ErrorText');
        var errfrm = document.getElementById('ErrorForm');
        errfrm.style.display = 'block';
        //ErrorForm.style.display = 'block';
        errorText.innerHTML = response.ErrorMessage;
        document.getElementById('btnRetry').focus();
    }
   
    DisplayUpdateImage(false);    
}

function Callback()
{
    SetButtons(true);
    if (!ValidateAnswer())
    {
        return;
    }

    var questionID = document.getElementById('QuestionID');
    var token = document.getElementById('Token');
    var questionnumber = document.getElementById('QuestionNumber');

     
    var answervaluefield = document.getElementById('answervalue');
    
    var answerID = answervaluefield.value;
    
    var object = new Question();
    object.QuestionNumber = questionnumber.value;
    object.Token = token.value;   
    object.QuestionID = questionID.value;
    object.AnswerID = answerID;
    

    DisplayUpdateImage(true);

    QuestionService.GetNext(object, OnComplete, OnTimeout, OnError);
}

// Called when Ajax request is done
function OnComplete(response)
{
    SetButtons(false);
        
    // 3 references to our 3 DIVs
    var StartForm = document.getElementById('StartForm');
    var QuizForm = document.getElementById('QuizForm');
    var EndForm = document.getElementById('EndForm');
    var ErrorForm = document.getElementById('ErrorForm');
    
    var PreStartForm = document.getElementById('PreStartForm');
    PreStartForm.style.display = 'none';
    
    // A reference to the hidden field used to hold the question ID
    var questionID = document.getElementById('QuestionID');
    // A reference to the DIV which will contain the next question text
    var questionText = document.getElementById('QuestionText');
    
    //Additional text
    var additionalText = document.getElementById('AdditionalText');
    
    var token = document.getElementById('Token');
    var questionnumber = document.getElementById('QuestionNumber');

    
    
    // If there is a next question
    if(response != null)
    {
        if (response.ErrorMessage == "")
        {
            ErrorForm.style.display = 'none';
            StartForm.style.display = 'none';
            EndForm.style.display = 'none';
            QuizForm.style.display = 'block';
            
            token.value = response.Token;
            questionID.value = response.QuestionID;
            questionnumber.value = response.QuestionNumber;
            if (response.QuestionNumber > 1)
            {
                document.getElementById('btnBack').disabled = false;            
            }
            else
            {
                document.getElementById('btnBack').disabled = true;                    
            }
            //response.QuestionNumber
            questionText.innerHTML =  response.QuestionText;
            additionalText.innerHTML = response.Additional;
            
            if (response.AnswerID != -1) 
                SetQuestionAnswer(response.AnswerID);
            else
                SetUnanswered();
            
            
            var AnswerOptionsForm = document.getElementById('AnswerOptions');
            AnswerOptionsForm.innerHTML = response.QuestionHTML;
            
           
            setCount(response.ProgressbarCount);
        }
        else
        {
            StartForm.style.display = 'none';
            QuizForm.style.display = 'none';
            
            var errorText = document.getElementById('ErrorText');
            ErrorForm.style.display = 'block';
            errorText.innerHTML = response.ErrorMessage;
            
        }
    }
    // If there's no more questions, we display the EndForm div.
    else
    {
        EndForm.style.display = 'block';
        QuizForm.style.display = 'none';
    }
    // We hide the updating image
    DisplayUpdateImage(false);
}

// Informs user that a timeout occured
function OnTimeout(result) 
{
    DisplayUpdateImage(false);
    alert("Timed out");
    SetButtons(false);
}

// Informs user that an error occured
function OnError(result)
{
    var error = document.getElementById('divError');
    error.innerHTML = result.get_message();
    DisplayUpdateImage(false);
}

// Used to display/hide the updating image
function DisplayUpdateImage(flag)
{
    var img = document.getElementById('imgUpdate');
    var waiting = document.getElementById('Waiting');
    if(flag)
    { 
        waiting.style.display = 'block';
        img.style.display = 'block';
    }
    else 
    {
    waiting.style.display = 'none';        
    img.style.display = 'none';
    }
}
function Retry()
{
var errfrm = document.getElementById('ErrorForm');
errfrm.style.display = 'none';
        
 var startfrm =        document.getElementById('StartForm');
 startfrm.style.display = 'block';
 
 var endform = document.getElementById('EndForm'); 
 endform.style.display = 'none';
 
 var qzfrm = document.getElementById('QuizForm'); 
 qzfrm.style.display = 'none'; 
         
          //  ErrorForm.style.display = 'none';
          //  StartForm.style.display = 'block';
          //  EndForm.style.display = 'none';
          //  QuizForm.style.display = 'none';    
            var token = document.getElementById('Token'); 
         
            token.focus();
            token.select();
            
            
}


/////////////////////////////////


function CallbackPrevious()
{
    SetButtons(true);
    if (!ValidateAnswer())
    {
        return;
    }

    var questionID = document.getElementById('QuestionID');
    var token = document.getElementById('Token');
    var questionnumber = document.getElementById('QuestionNumber');

     
    var answervaluefield = document.getElementById('answervalue');
    
    var answerID = answervaluefield.value;
    
    var object = new Question();
    object.QuestionNumber = questionnumber.value;
    object.Token = token.value;   
    object.QuestionID = questionID.value;
    object.AnswerID = answerID;
    

    DisplayUpdateImage(true);

    QuestionService.GetPrevious(object, OnComplete, OnTimeout, OnError);
}

// Called when Ajax request is done
function OnCompletePrevious(response)
{
    SetButtons(false);
        
    // 3 references to our 3 DIVs
    var StartForm = document.getElementById('StartForm');
    var QuizForm = document.getElementById('QuizForm');
    var EndForm = document.getElementById('EndForm');
    
    var PreStartForm = document.getElementById('PreStartForm');
    PreStartForm.style.display = 'none';
    
    // A reference to the hidden field used to hold the question ID
    var questionID = document.getElementById('QuestionID');
    // A reference to the DIV which will contain the next question text
    var questionText = document.getElementById('QuestionText');
    
    var additionalText = document.getElementById('AdditionalText');
    
    var token = document.getElementById('Token');
    var questionnumber = document.getElementById('QuestionNumber');

    
    
    // If there is a next question
    if(response != null)
    {
        if (response.ErrorMessage == "")
        {
            ErrorForm.style.display = 'none';
            StartForm.style.display = 'none';
            EndForm.style.display = 'none';
            QuizForm.style.display = 'block';
            
            token.value = response.Token;
            questionID.value = response.QuestionID;
            questionnumber.value = response.QuestionNumber;
            questionText.innerHTML = "<table> <tr valign=top><td>  " + response.QuestionNumber + ".</td><td> " + response.QuestionText + "</td></tr></table>";
            
            additionalText.innerHTML = response.Additional;
            
            if (response.AnswerID != -1) 
                SetQuestionAnswer(response.AnswerID);
            else
                SetUnanswered();
            
            
            var AnswerOptionsForm = document.getElementById('AnswerOptions');
            AnswerOptionsForm.innerHTML = response.QuestionHTML;
            
           
            setCount(response.ProgressbarCount);
        }
        else
        {
            StartForm.style.display = 'none';
            QuizForm.style.display = 'none';
            
            var errorText = document.getElementById('ErrorText');
            ErrorForm.style.display = 'block';
            errorText.innerHTML = response.ErrorMessage;
            
        }
    }
    // If there's no more questions, we display the EndForm div.
    else
    {
        EndForm.style.display = 'block';
        QuizForm.style.display = 'none';
    }
    // We hide the updating image
    DisplayUpdateImage(false);
}
