function daoInit(){
	var targetID,targetQ,controlcount,targets,targetCount,isRank,hasDefault,defaultValue;
	//ALWAYS CALL THIS IN BODY ONLOAD EVENT TO HIDE ALL ROWS IN TARGET MATRIX
	if(!jdaocontrols){
		return;
	}
	for(var control=1;control<jdaocontrols.length;control++){
		targetArray=jdaotargets[jdaocontrols[control]];
		for(var t=1;t<targetArray.length;t++){
			targetQ=qname2formname(qnames[Math.abs(targetArray[t])]);
			isRank=(qnames[Math.abs(targetArray[t])].split('_')[5]=='k');
			//HIDE QUESTION IF TARGET>0
			if(targetArray[t]>0){
				document.getElementById('div_q_'+targetArray[t]).style.display='none';
			}
			if(isRank==false){
				if(isMatrix(targetArray[t])){
					targetCount=jsmatrix[targetArray[t]]+1;
				}
				else{
					targetCount=document.getElementsByName(targetQ).length;
				}
				for(var target=0;target<targetCount;target++){	
					targetID=Math.abs(targetArray[t]);
					//IF MODE IS HIDE UNLESS THEN SET INITIAL STATE AS HIDDEN - NO NEED TO DO ANYTHING IF MODE IS SHOW UNLESS
					if(targetArray[t]*1>0 && target!=defaultValue){
						//alert('$$daoINIT: '+'row_'+targetID + '_'+target);
						try{
						document.getElementById('row_'+targetID + '_'+target).style.display='none';
						}
						catch(e){
							alert(e)
						}
					}
				}
			}
			else{
				daoRankListInit(targetArray[t]);
			}
		}
	}
	if(hasSliders==true){
		redrawSliders();
	}
}

function doDAOcheckbox(){
	doDAOcheckbox2(this);
}

function doDAOcheckboxImage(){
	var c=document.getElementById(this.id.replace('i_','q_'));
	doDAOcheckbox2(c);
}

function doDAOcheckbox2(incontrol){
	//q_211053_xx_1_x
	var disp,dispnot,isRank;
	var visiblerows=0;
	var thisID=incontrol.id;
	var thisqID=thisID.split('_')[1];
	var thisoption=thisID.split('_')[3];
	var controlValue=incontrol.value;
	thisqname=qname2formname(qnames[thisqID]);
	var optionsArray=document.getElementsByName(thisqname);
	for(var a=0;a<optionsArray.length;a++){
		if(optionsArray[a].checked==true){
			visiblerows++;
		}
	}
	if(!jdaotargets[thisqID]){
		return;	
	}
	targetArray=jdaotargets[thisqID];
	for(t=1;t<targetArray.length;t++){
		target=targetArray[t];
		targetID=qnames[Math.abs(targetArray[t])].split('_')[1];
		targetType=qnames[Math.abs(targetArray[t])].split('_')[5];
		isRank=(targetType=='k');
		targetIsMatrix=isMatrix(targetID);
		targetIsSlider=isSlider(targetID);
		//alert('$$dao '+qnames[Math.abs(targetArray[t])]);
		if(isRank==false){
			switch(target>0){
				case true:
					disp='block';
					dispnot='none';
					break;
				case false:
					disp='none';
					dispnot='block';
					break;
			}
			if(document.getElementById('row_'+Math.abs(target)+'_'+thisoption)){
				targetRow=document.getElementById('row_'+Math.abs(target)+'_'+thisoption);
				if(incontrol.checked){
					targetRow.style.display=disp;
					if(disp=='none'){
						if (targetIsSlider==false){
							//UNANSWER WASN'T SETTING DEFAULT VALUE ON SLIDER WHEN HIDDEN BY INVERSE DAO SO EXCLUDE
							unanswer(target,controlValue);
						}
						else{
							targetqcodearray=qnames[Math.abs(targetArray[t])].split('_').slice(0,4);
							targetselectID=targetqcodearray.join('_')+'_'+thisoption;
							if(!document.getElementById(targetselectID)){
								targetselectID=targetselectID.replace('q_','x_');	
							}
							document.getElementById(targetselectID).selectedIndex=jdefault[targetID];
							//fdSliderController.enableSlider(targetselectID);
							//redosliderhandle(targetselectID);
							//showHideSlider2(targetselectID,false);
							document.getElementById('fd-slider-handle-'+targetselectID).style.background='transparent url(/survey_templates/slider/sliderhollow.gif) no-repeat 0px 0px';
							document.getElementById(targetselectID).disabled=true;
					}
				}
					else{
						if (targetIsSlider==true){
							targetqcodearray=qnames[Math.abs(targetArray[t])].split('_').slice(0,4);
							targetselectID=targetqcodearray.join('_')+'_'+thisoption;
							//fdSliderController.enableSlider(targetselectID);
							//redosliderhandle(targetselectID);
							//CHECK FOR CONSTANT SUM
							if(document.getElementById(targetselectID)){
								//alert('fd-slider-handle-'+targetselectID);
								document.getElementById(targetselectID).selectedIndex=jdefault[targetID];
								//showHideSlider2(targetselectID,false);
								document.getElementById('fd-slider-handle-'+targetselectID).style.background='transparent url(/survey_templates/slider/sliderhollow.gif) no-repeat 0px 0px';
								document.getElementById(targetselectID).disabled=true;
								redosliderhandle(targetselectID);

							}
							else{
								if(document.getElementById(targetselectID.replace('q_','x_'))){
									document.getElementById(targetselectID.replace('q_','x_')).disabled=false;
								}
							}	// END OF CHECK FOR CONSTANT SUM
						}//END OF DISP==NONE
					}
				}
				else{
					targetRow.style.display=dispnot;
					if(dispnot=='none'){
						unanswer(target,controlValue);
					}
				}
			}
			checkQuestionVisibility(target);
		}
		else{
			daoRankListToggle(targetArray[t],thisoption,incontrol.checked);
		}
	}
}

function doDAOradio(){
	doDAOradio2(this);
}

function doDAOradioImage(){
	var c=document.getElementById(this.id.replace('i_','q_'));
	doDAOradio2(c);
}


function doDAOradio2(incontrol){
	//USE FOR NONE OF THE ABOVE
	var isRank;
	var thisID=incontrol.id;
	var thisqID=thisID.split('_')[1];
	if(!jdaotargets[thisqID]){
		return;	
	}

	var controlValue=incontrol.value;
	var targetCount=document.getElementsByName(incontrol.name).length;
	var targetArray=jdaotargets[thisqID];
	visiblerows=0;
	for(t=1;t<targetArray.length;t++){
		target=targetArray[t];
		isRank=(qnames[Math.abs(targetArray[t])].split('_')[5]=='k');
		if(isRank==false){
			switch(target>0){
				case true:
					disp='block';
					dispnot='none';
					break;
				case false:
					disp='none';
					dispnot='block';
					break;
			}
			for(c=0;c<targetCount;c++){
				targetRow=document.getElementById('row_'+Math.abs(target)+'_'+c);
				if(targetRow){
					targetRow.style.display=dispnot;
					if(dispnot=='none'){
						//alert('$$daoRadio: '+target);
						//unanswer(target,controlValue);
					}
				}
			}
			checkQuestionVisibility(target);
		}
		else{
			daoRankListInit(target);
			checkRankingQuestionVisibility(target);
		}
	}
}

function xdoDynamicMatrix2(incontrol){
	//USE THIS WHEN SOURCE OF VISIBILITY IS A MATRIX AND ANY CHOICE ON A ROW
	qid=incontrol.name.split('_')[1];
	thischecked=incontrol.checked;
	thisone=incontrol.value;
	//NEEDED AS THIS IS A MATRIX QUESTION SO VALUE IS 11_0 not 11
	thisone=thisone.split('_')[0]-10;
	//ARRAY BELOW SPECIFIES WHICH MATRIX QUESTIONS ARE AFFECTED BY THIS QUESTION
	var targets=jdao[qid];
	for(var target=0;target<targets.length;target++){
		targetBase=targets[target];
		switch(thischecked){
			case true:
				document.getElementById(targetBase + thisone).style.display='';
				break;
			case false:
				document.getElementById(targetBase + thisone).style.display='none';
				break;
			}
	}
}

function xdoDynamicMatrix3(incontrol,inbool){
	//USE THIS WHEN ONLY SOME OF THE ITEMS IN A MATRIX ROW TRIGGER VISIBILITY
	qid=incontrol.name.split('_')[1];
	thischecked=incontrol.checked;
	thisone=incontrol.value;
	//NEEDED AS THIS IS A MATRIX QUESTION SO VALUE IS 11_0 not 11
	thisone=thisone.split('_')[0]-10;
	//ARRAY BELOW SPECIFIES WHICH MATRIX QUESTIONS ARE AFFECTED BY THIS QUESTION
	var targets=jdao[qid];
	for(var target=0;target<targets.length;target++){
		targetBase=targets[target];
		//CHANGED TO INBOOL AS BASE IS RADIO MATRIX - IS USUALLY THISCHECKED
		switch(inbool){
			case true:
				document.getElementById(targetBase + thisone).style.display='';
				break;
			case false:
				document.getElementById(targetBase + thisone).style.display='none';
				break;
			}
	}
}

//SPECIAL CODE FOR RANKING QUESTIONS
function daoRankListInit(inID){
	var listID,targetCount,ul;
	listID='ranklist'+Math.abs(inID);
	ul = document.getElementById(listID);
	//FIRST ONE IS SEPARATOR SO COUNT IS ONE DOWN
	targetCount=ul.getElementsByTagName('li').length-1;
	for(var row=0;row<targetCount;row++){
  	if(inID>0){
  		rankinggroups[listID].toggleRankingItems('hide',row);
  	}
  	else{
  		rankinggroups[listID].toggleRankingItems('show',row);
  	}
  }
  //rankinggroups[listID].refresh();
}

function daoRankListToggle(inID,row,boolChecked){
	listID='ranklist'+Math.abs(inID);
	switch(inID>0){
		case true:
			disp='show';
			dispnot='hide';
			break;
		case false:
			disp='hide';
			dispnot='show';
			break;
	}
 	switch (boolChecked){
    case true:
      rankinggroups[listID].toggleRankingItems(disp,row);
      break;
    case false:
      rankinggroups[listID].toggleRankingItems(dispnot,row);
      break;
	}
	ul = document.getElementById(listID);
	var rankArray=ul.getElementsByTagName('li');
	var visibleCount=0;
	for(var row=1;row<rankArray.length;row++){
  	if(rankArray[row].style.display =='block'){
  		visibleCount++;
  	}
  }
  //rankinggroups[listID].refresh();
  //rankinggroups[listID].toggleRankingItems('','');

	if(visibleCount>1){
		document.getElementById('div_q_'+Math.abs(inID)).style.display='block';
	}
	else{
		document.getElementById('div_q_'+Math.abs(inID)).style.display='none';
	}
}

function checkRankingQuestionVisibility(inID){
	listID='ranklist'+Math.abs(inID);
	ul = document.getElementById(listID);
	var rankArray=ul.getElementsByTagName('li');
	var visibleCount=0;
	for(var row=1;row<rankArray.length;row++){
  	if(rankArray[row].style.display =='block'){
  		visibleCount++;
  	}
  }
	if(visibleCount>1){
		document.getElementById('div_q_'+Math.abs(inID)).style.display='block';
	}
	else{
		document.getElementById('div_q_'+Math.abs(inID)).style.display='none';
	}
}

function checkQuestionVisibility(target){
	//USE TO CHECK IF ANY OPTIONS ARE VISIBLE 
	//ALSO CHECK FOR NOTA VISIBILITY
	var counter,disp,dispnot;
	var targetID=Math.abs(target);
	var qDiv='div_q_'+targetID;
	var qtype=qnames[targetID].split('_')[5];
	var targetVisCount=0;
	var targetName=qname2formname(qnames[targetID]);
	var targetCount
	if (isMatrix(targetID)==false){
		//THINGS TO COUNT VISIBILITY OF ARE CONTROLS IN ONE FORM NAME
		targetCount=document.getElementsByName(targetName).length;
	}
	else{
		//THINGS TO COUNT ARE ROWS IN MATRIX
		targetCount=jsmatrix[targetID]+1;
	}
	for(row=0;row<targetCount;row++){
		if(document.getElementById('row_'+targetID+'_'+row).style.display!='none'){
			targetVisCount++;
		}
	}
	//IF NOTA IS VISIBLE THEN REMOVE FROM COUNT
	if(hasNOTA(targetID)==true && document.getElementById('row_'+targetID+'_'+(targetCount-1)).style.display!='none'){
		targetVisCount--;
	}
	// DO NOT SHOW QUESTION IF ONLY ONE CONTROL OPTION SELECTED AND IS SINGLE/MULTIPLE/RANKING
	// OR QUESTION IS MULTIPLE CHOICE AND AT LEAST ONE SELECTED
	disp='block';
	dispnot='none';
	switch(isMatrix(targetID)){
		case true:
			if(targetVisCount>0){
				document.getElementById(qDiv).style.display=disp;
				if(hasSliders==true){
					redrawSliders();
				}
			}
			else{
				document.getElementById(qDiv).style.display=dispnot;
			}
			break;
		case false:
			// ### DC 17 October 2011 06:56:55 IF TARGET QUESTION IS CHECKBOX THEN SHOW EVEN IF ONLY ONE SELECTED
			if(targetVisCount>1 || (targetVisCount==1 && qtype=='c')){
					document.getElementById(qDiv).style.display=disp;
			}
			else{
				document.getElementById(qDiv).style.display=dispnot;
			}
			break;
	}
	lastindex=targetCount-1;
		// ### DC 18 October 2011 12:54:12 ALLOW FOR NOTA NOT EXISTING (PEACH BRAND TRACKER)
	if(qtype=='c' && hasNOTA(targetID)==true && document.getElementsByName(targetName)[lastindex] && document.getElementsByName(targetName)[lastindex].type=='radio' && document.getElementById(qDiv).style.display=='block' ){
		document.getElementById('row_'+targetID+'_'+lastindex).style.display='block';
	}
}

//CODE BELOW GOES IN SURVEY FILE OR CODE.JS FILE

// SPECIFIES ID OF CONTROL QUESTION(S) AND HOW MANY ROWS IN TARGET MATRIX
// QUESTION IDs 13 AND 77 CONTROL MATRIXES WITH 6 AND 15 ROWS RESPECTIVELY
//jdaodata=new Array('13.6','77.15');

//FOR EACH CONTROL QUESTION SPECIFIES ID PREFIX OF TARGET MATRIX QUESTIONS
//jdao=new Array();
//jdao[13]=new Array('q_14_x_','q_15_y_');
//jdao[77]=new Array('q_83_x_','q_84_y_');

