﻿
function questionnaire() 
{        
    this.init = function(nb)
    {
        this.error=false;
        this.maxQ = nb;    
        this.q = 1;
        this.div = document.getElementById("q1");
        this.lkPrev = document.getElementById("bt_precedente");
        this.lkNext = document.getElementById("bt_suivante");
        this.lkFinish = document.getElementById("bt_je_valide");
        this.top = document.getElementById("q1").style.top;
        this.left = document.getElementById("q1").style.left;
        
        this.ddReady = new Array(false,false);
        
    
        for(var i=1;i<=this.maxQ;i++)
        {
            document.getElementById("q"+i).style.position="absolute";
        }
        
        this.hideResult();
        
        var hf=document.getElementById("ctl00_center_valid");
        if( hf.value != null && hf.value != "")
            this.result = hf.value.split('|');
        else
            this.result = new Array(8);
        
        this.result.unshift("");
            
    }
    
    this.changeQuestion = function(next)
    {
        if( (next == 1 && this.validate())||next == -1)
        {
            var temp = this.q + next;
            if(temp > 0 && temp <= this.maxQ)
            {
                this.q = temp;
                this.div = document.getElementById('q'+this.q);
                this.swDisplay();
                this.mkBtns();
                this.error=false;
            }
            else return;
        }
        else
        {
            this.error=true;
        }
        this.updateSpanError();
    }
    
    this.swDisplay = function()
    {
        for(var i = 1; i<=this.maxQ; i++)
        {
            var idQ = 'q'+i;
            document.getElementById(idQ).style.left = (i != this.q) ? "-5000px" : this.left;
            document.getElementById(idQ).style.top = (i != this.q) ? "-5000px" : this.top;
            document.getElementById("imgNbQuestion").src="../App_Themes/Default/img/decouverte_gout/"+this.q+"sur8.gif";
            document.getElementById("imgNbQuestion").alt="Question "+this.q+" sur "+this.maxQ;
            this.autoFill();
        }
        
        if( document.getElementById("ctl00_center_panResultat") != null && document.getElementById("ctl00_center_panResultat") && document.getElementById("ctl00_center_etat")!="resultat")
        {
            document.getElementById("ctl00_center_panResultat").style.position="absolute";
            document.getElementById("ctl00_center_panResultat").style.left="-5000px";
        }
            
    }
    
    this.mkBtns = function()
    {
        if(this.q <= 1)
        {
            this.lkPrev.style.visibility="hidden";
            this.lkFinish.style.visibility="hidden";
        }
        else if(this.q >= this.maxQ)
        {
            this.lkPrev.style.visibility="hidden";
            this.lkNext.style.visibility="hidden";
            this.lkFinish.style.visibility="visible";
        }
        else
        {
            this.lkPrev.style.visibility="visible";
            this.lkNext.style.visibility="visible";
            this.lkFinish.style.visibility="hidden";
        }
    }
    
    this.validate =function()
    {
        var inputs = this.div.getElementsByTagName("input");
        if(inputs.length==0)
            inputs = this.div.getElementsByTagName("select");
        var valid = false;
        this.result[this.q]="";
        if(inputs.length>0)
        {
            var type = inputs[0].type;
            switch(type)
            {
                case "radio":
                case "checkbox":
                for(var c = 0;c<inputs.length;c++)
                    if(inputs[c].checked == true && inputs[c].id.charAt(0) == 'q')
                    {
                        var assocTxt = document.getElementById(inputs[c].id+"text");
                        if( assocTxt == null)
                        {
                            this.result[this.q] = this.result[this.q].toString() + inputs[c].value.split(',')[1].toString()+',';
                            valid = true;
                        }
                        else
                        {
                            if(assocTxt.value != null && assocTxt.value != "")
                            {
                                this.result[this.q] = this.result[this.q].toString() + inputs[c].value.split(',')[1].toString()+',';
                                valid = true;
                            }
                        }
                    }
                break;
                case "select-one":
                    for(var c = 0;c<inputs.length;c++)
                        for(var d = 0;d<inputs[c].options.length;d++)
                            if(inputs[c].options[d].selected == true)
                            {
                                if(this.result[this.q].indexOf(inputs[c].options[d].value.split(',')[1]+',') != -1)
                                {
                                    valid=false;
                                    break;
                                }
                                this.result[this.q] = this.result[this.q].toString() + inputs[c].options[d].value.split(',')[1].toString()+',';
                                valid = true;
                                break;
                            }
                break;
            }
            if(this.result[this.q].charAt(this.result[this.q].length-1) == ',')
                this.result[this.q] = this.result[this.q].substring(0,this.result[this.q].length-1);
        }
        
        return valid;
    }
    
    this.autoFill = function()
    {
        var inputs = this.div.getElementsByTagName("input");
        if(inputs.length==0)
            inputs = this.div.getElementsByTagName("select");
        if(inputs.length>0 && this.result[this.q]!=null)
        {
            var type = inputs[0].type;
            switch(type)
            {
                case "radio":
                case "checkbox":
                    var values = this.result[this.q] != null ? this.result[this.q].split(',') : new Array(0);
                    var tempArray = new Array(3);
                    for(var c = 0;c<inputs.length;c++)
                        for(var d = 0;d<values.length;d++)
                            if(inputs[c].value.split(',')[1] == values[d])
                            {
                                inputs[c].checked = true;
                                tempArray.push(inputs[c].value);
                                break;
                            }
                            else
                            {
                                if(!tempArray.join('|').match(inputs[c].value))
                                    inputs[c].checked = false;
                            }
                break;
                case "select-one":
                    var values = this.result[this.q] != null ? this.result[this.q].split(',') : new Array(0);
                    var tempArray = new Array(3);
                    for(var c = 0;c<inputs.length;c++)
                    {
                        for(var e = 0; e < inputs[c].options.length;e++)
                            for(var d = 0;d<values.length;d++)
                                if(inputs[c].options[e].value.split(',')[1] == values[d] && d == c)
                                {
                                    inputs[c].options[e].selected = true;
                                    tempArray.push(inputs[c].options[e].value);
                                    break;
                                }
                                else
                                {
                                    if(!tempArray.join('|').match(inputs[c].options[e].value))
                                        inputs[c].options[e].selected = false;
                                }
                    this.updateDDL(document.getElementById("selQ"+this.q+"."+c), inputs.length);
                    }
                break;
            }
        }
    }
    
    this.updateSpanError = function(err)
    {
        document.getElementById("spanError").style.visibility = (this.error == true)? "visible": "hidden";
    }   
    
    this.clickCB = function(cb,max)
    {
        if(this.result[this.q] != null && this.result[this.q].split(',').length >= max && cb.checked == true)
        {
            var first = this.result[this.q].split(',')[0];
            this.result[this.q] = this.result[this.q].replace(first+',','');
            this.result[this.q] = this.result[this.q].toString()+','+cb.value.split(',')[1];
            this.autoFill();
        }
        else
        {
            this.validate();
        }
    }
     
    this.changeDDL = function(ddl,nbDDLs)
    {
        var curDDL = ddl.id.split('.')[1];
        var curValue = ddl.options.selectedIndex;
        for(var c = 0;c<nbDDLs;c++)
            if(c!=curDDL)
            {
                ddl2 = document.getElementById(ddl.id.split('.')[0]+'.'+c.toString());
                if(ddl2.value == ddl.value)
                {
                    ddl.selectedIndex = this.result[this.q].split(',')[ddl.id.split('.')[1]];
                    return;
                }                
            }            
        this.validate();
        this.updateDDL(ddl,nbDDLs);
    }
    
    this.updateDDL = function(ddl, nbDDLs)
    {
        var curDDL = ddl.id.split('.')[1];
        var curValue = ddl.options.selectedIndex;
        var valueArray = this.result[this.q].split(',');
        var tempArray = new Array(nbDDLs);
        for(var c = 0;c<nbDDLs;c++)
            if(c!=curDDL)
            {
                ddl2 = document.getElementById(ddl.id.split('.')[0]+'.'+c.toString());
                for(var d = 0;d<ddl2.options.length;d++)
                {
                    for(var e = 0; e<valueArray.length;e++)
                        if( e != c && ddl2.options[d].value.split(',')[1] == valueArray[e])
                        {
                            ddl2.options[d].className="unselectableDDL";
                            tempArray[c] = d;
                        }
                        else if(tempArray[c] != d)
                            ddl2.options[d].className="selectableDDL";
                }
            }        
    }
    
    this.initDDL = function(ddl)
    {  
        var name = ddl.name;
        var next = true;
        switch(name)
        {
            case "6":
            if(this.ddReady[0] == true)
                next = false;
            this.ddReady[0] = true;
            break;
            
            case "7":
            if(this.ddReady[1] == true)
                next = false;            
            this.ddReady[1] = true;
            break;
        }
        
        //valide pour trois ddl
        if(next == true)
        {
            var values = document.getElementById("selQ"+name+".0").selectedIndex +','+document.getElementById("selQ"+name+".1").selectedIndex+','+document.getElementById("selQ"+name+".2").selectedIndex;
            this.result[this.q] = values;
            document.getElementById("selQ"+name+".0").options[1].setAttribute("selectable",false);
            document.getElementById("selQ"+name+".0").options[2].setAttribute("selectable",false);
            document.getElementById("selQ"+name+".1").options[0].setAttribute("selectable",false);
            document.getElementById("selQ"+name+".1").options[2].setAttribute("selectable",false);
            document.getElementById("selQ"+name+".2").options[1].setAttribute("selectable",false);
            document.getElementById("selQ"+name+".2").options[2].setAttribute("selectable",false);
        }
        
    }
    
    this.valid = function()
    {
        //result commence à l'index 1
        if(this.validate())
        {
            this.result.shift();
            var strValues = this.result.join("|");
            document.getElementById("ctl00_center_valid").value=strValues;
            __doPostBack('ctl00$center$lbValid',strValues);
        }
        else
        {
            this.error=true;
            this.updateSpanError();
        }
    }
    
    this.displayResult = function()
    {
        var etat = document.getElementById("ctl00_center_etat");
        if(etat.value != null && etat.value == "resultat")
        {
            this.div.style.left="-5000px";
            document.getElementById("ctl00_center_panQuestionnaire").style.position="absolute";
            document.getElementById("ctl00_center_panQuestionnaire").style.left="-5000px";
            etat.value="";
            document.getElementById("ctl00_center_panResultat").position="";
            document.getElementById("ctl00_center_panResultat").style.left="0px";
        }
        else if(etat.value != null && etat.value == "end" )
            this.valid();
    }
    
    this.hideResult = function()
    {
        var etat = document.getElementById("ctl00_center_etat");
        if(etat.value != null && etat.value == "")
        {
            this.div.style.left="0px";
            document.getElementById("ctl00_center_panQuestionnaire").style.position="";
            document.getElementById("ctl00_center_panQuestionnaire").style.left="0px";
            document.getElementById("ctl00_center_panResultat").style.position="absolute";
            document.getElementById("ctl00_center_panResultat").style.left="-5000px";
            
            this.top = document.getElementById("q1").style.top;
            this.left = document.getElementById("q1").style.left;
        }
    }
    
}




