﻿//participant survey js

var failed_validation_color = "#fb9def";
var passed_validation_color = "white";
var wizard_mode = false;

function init(){
 var arraytopdata;
 
 for (key in idmap){
   arraytopdata = getQuestionDependencies(key);
   if (arraytopdata != null){
     if (arraytopdata.length > 0){       
       enableWizardMode();
       break;
     }
   }
 }
}

function enableWizardMode(){  
  wizard_mode = true;
   
  var first_flag = true;
  var targetdiv;
  
  for (key in idmap){
    if (!first_flag){
        targetdiv = document.getElementById("div"+key);
        if (targetdiv != null){
            targetdiv.style.visibility = "hidden";
            targetdiv.style.display = "none";            
        }
    }else{
        first_flag = false;
    }
  }  
}

function showNextQuestion(prevQuestId){
   if (wizard_mode != true){
    return;
   }
   
   var flag = false;
   for (key in idmap){
    if (flag){
        var targetdiv = document.getElementById("div"+key);
        if (targetdiv != null){
          if (targetdiv.blocked != "1"){
            targetdiv.style.visibility = "visible";
            targetdiv.style.display = "block";
            return;
          }
        }        
    }
    if (key == prevQuestId){
      flag = true;
    }
   }
}


/////////////////////////////////////////////////////////
function handleQuestionDependency(questid, answid)
{
    var arraytopdata = getQuestionDependencies(questid); 
    
    if (arraytopdata != null){
      if (arraytopdata.length > 0){
      
      var top_index = 0;      
      var answ_index = 0;
      
      var answerdata;
      var answerAction;        
      if (typemap[questid] != "Checkboxes"){        
          //non checkboxes allowed only one selection
          for (top_index = 0; top_index < arraytopdata.length; top_index ++){          
           answerdata = (arraytopdata[top_index]+"").split(',');
            if (answerdata.length > 2){            
             if (answerdata[0] == answid){
                answerAction = answerdata[1];
             }else{
                answerAction = reverseAction(answerdata[1]);
             }
                          
             for (answ_index = 2; answ_index < answerdata.length; answ_index +=2){
             
                  if (answerdata[answ_index + 1] > 0){
                    doShowHideDependAnswer(answerdata[answ_index], answerdata[answ_index+1], answerAction);
                  }else{
                    doShowHideDependQuestion(answerdata[answ_index], answerdata[answ_index+1], answerAction);
                  }
                  showNextQuestion(questid);
             }         
            } 
          }
        
      }
      else
      {
        //checkboxes allowed multi selection, so we have to check all items
      
       if (idmap[answid] != null){
         for (answer in idmap[answid]){
        
         }
       }
       
          for (top_index = 0; top_index < arraytopdata.length; top_index ++){          
           answerdata = (arraytopdata[top_index]+"").split(',');

             //{questionId: answerId} pairs
             for (answ_index = 2; answ_index < answerdata.length; answ_index +=2){                                    
                  answerAction = reverseAction(answerdata[1]);                  
                  if (document.getElementById("id"+answerdata[0]) != null){
                    if (document.getElementById("id"+answerdata[0]).childNodes[0].checked){
                        answerAction = answerdata[1];
                    }
                  }
                  
                  if (answerdata[answ_index + 1] > 0){
                    doShowHideDependAnswer(answerdata[answ_index], answerdata[answ_index+1], answerAction);
                  }else{
                    doShowHideDependQuestion(answerdata[answ_index], answerdata[answ_index+1], answerAction);
                  }                  
             }

          }  
      }

      } 
    }
}

function reverseAction (action){
 if (action == 1){
    return 0;
 }else{
    return 1;
 }
}

function doShowHideDependQuestion (questid, answid, action){ 
 var targetdiv = document.getElementById("div"+questid);
 if (targetdiv != null){    
   if (action == 0){   
      targetdiv.style.visibility = "visible";
      targetdiv.style.display = "block";
      targetdiv.blocked = "0";
   }else{       
      targetdiv.style.visibility = "hidden";
      targetdiv.style.display = "none";
      targetdiv.blocked = "1";
   }
 }
}

function doShowHideDependAnswer (questid, answid, action){  
 
 if (typemap[questid]=="Checkboxes" || typemap[questid]=="Radio"){    
     if (document.getElementById("id"+answid) != null){
      doShowHideDependAnswerInner(document.getElementById("id"+answid), typemap[questid], action);
     }
 
 }else{
 
    if (typemap[questid]=="DropDown"){
      var targetobj = document.getElementById(idmap[questid]);
        if (targetobj != null){            
           doShowHideDependAnswerInner(document.getElementById("id"+answid), "DropDown", action);
        }
    }
    
 }
}

function doShowHideDependAnswerInner (el, eltype, action){
 if (el != null){
   if (action == 0){
      if (eltype == "DropDown"){
        el.disabled = false;
      }else{
        el.style.visibility = "visible";
        el.style.display = "inherit";      
      }
   }else{
      if (eltype == "DropDown"){
        el.disabled = true;
      }else{
        el.style.visibility = "hidden";
        el.style.display = "none";
      }   
   }
 }else{
    alert("element is null");
 }

}



function doCustomValidation(){
    var check_result = true;
    
    var i = 0;
    var el;
    
    for (key in idmap)
    {
        if (typemap[key] == "TextSingleLine" || typemap[key] == "TextMultiLine")
        {       
            if (document.getElementById(idmap[key]) != null)
            {
                if (document.getElementById(idmap[key]).style.visibility != "hidden" &&
                    document.getElementById(idmap[key]).style.display != "none" )
                {
                    if (document.getElementById(idmap[key]).value.length == 0){
                        check_result = false;
                        document.getElementById("div"+key).style.backgroundColor=failed_validation_color;
                    }else{
                        document.getElementById("div"+key).style.backgroundColor=passed_validation_color;
                    }
                }
            }
        }

        if (typemap[key] == "Phone")
        {
           if (document.getElementById(idmap[key]) != null)
           {
            if (document.getElementById(idmap[key]).getElementsByTagName('input')[0].value.length < 3
                ||
                document.getElementById(idmap[key]).getElementsByTagName('input')[1].value.length < 7)
            {
                 check_result = false;
                 document.getElementById(idmap[key]).style.backgroundColor=failed_validation_color;            
            }
            else
            {
                 document.getElementById(idmap[key]).style.backgroundColor=passed_validation_color;            
            }
           } 
        }


        if (typemap[key] == "Checkboxes" || typemap[key] == "Radio")
        {
            if (document.getElementById("div"+key) != null)
            {
                if (document.getElementById("div"+key).style.visibility != "hidden" &&
                    document.getElementById("div"+key).style.display != "none" )
                {                    
                    if (qanswmap[key]!= null){
                        if (qanswmap[key].length > 0){
                            var any_answ_selected = false;
                            for (i in qanswmap[key]){
                                if (document.getElementById("id"+qanswmap[key][i]) != null){
                                
                                 if (document.getElementById("id"+qanswmap[key][i]).style.visibility != "hidden"
                                    && document.getElementById("id"+qanswmap[key][i]).style.display != "none"){
                                    
                                    if (document.getElementById("id"+qanswmap[key][i]).childNodes[0].checked){
                                        
                                        any_answ_selected = true;
                                        break;
                                        
                                    }                                 
                                 }
                                }
                            }
                            if (any_answ_selected == false){
                                check_result = false;
                                document.getElementById("div"+key).style.backgroundColor=failed_validation_color;
                            }else{
                                document.getElementById("div"+key).style.backgroundColor=passed_validation_color;
                            }
                        }
                    }
                }
            }
        }


        if (typemap[key] == "FiveMarks")
        {
            el = document.getElementById("div"+key);
            if (el != null)
            {
                if (el.style.visibility != "hidden" && el.style.display != "none" )
                {                    
                    if (qanswmap[key]!= null){
                        if (qanswmap[key].length > 0){
                            var any_answ_selected = true;
                            var index1;
                            var index2;
                            
                            for (index1=0; index1< el.getElementsByTagName('span').length; index1++)
                            {
                                var subquest_any_answ_selected = false;
                                for (index2=0; index2< el.getElementsByTagName('span')[index1].getElementsByTagName('input').length; index2++)
                                {
                                    if (el.getElementsByTagName('span')[index1].getElementsByTagName('input')[index2].checked)
                                    {
                                        subquest_any_answ_selected = true;
                                        break;
                                    }
                                }
                                
                                if (subquest_any_answ_selected == false)
                                {
                                    any_answ_selected = false;
                                    break;
                                }
                            }
                            
                            if (any_answ_selected == false){
                                check_result = false;
                                document.getElementById("div"+key).style.backgroundColor=failed_validation_color;
                            }else{
                                document.getElementById("div"+key).style.backgroundColor=passed_validation_color;                                
                            }
                        }
                    }
                }
            }
        }


    }
    return check_result;
}

