var thisanchor='';
var isMacIE=false;
var starttime,endtime,duration,thispageID, thispagenumber=1,jsurveyfolder;
var finishedLoading=0;
var qnames=new Array();
var rankinggroups=new Array();
var errarray=new Array;
var sliderholdvalue=new Array();
var rhGUID;
var thisform;
var jslidersChecked=new Array();
var errorcolor='';

// ADDED FOR PCC TYPE AUTO SURVEY BUILDERS - WHEN TRUE SURVEY IS DISPLAYED IN A DESIGN SYSTEM NOT STANDALONE
// VALUE IS CHANGED BY DESIGN SYSTEM ACROSS FRAMES
var designmode=false;

// BROWSER DETECTION
	// IS THIS AN iPAD?
	var isiPad = (navigator.userAgent.match(/iPad/i) != null);
	// IS THIS AN iPHONE ?
	var isiPhone = (navigator.userAgent.match(/iPhone/i) != null);
	// IS THIS AN iPOD ?
	var isiPod = (navigator.userAgent.match(/iPod/i) != null);

// CHECK FOR MAC IE BEFORE DOING ANYTHING ELSE - THIS SENDS PEOPLE TO CHANGE BROWSER PAGE
checkMacIE();

window.onbeforeunload = obu;

function inits(){
	thisform=document.getElementById("survey");
	checkserver();
	ret=setTimeout("getGUID()",2000);
	get_timezoneoffset();
	get_source();
	makeQnames();
	thispageID=pageorder[thispagenumber];
	if(surveyisPoll()==true){
		if(document.getElementById('loading')){
			hideLoadingGIF();
		}
		checkPollCompleted();
	}
	dorandom();
	if(isInPopUp()==true){document.getElementById('isInPopUp').value='1';}
	if(document.getElementById('loading')){
		hideLoadingGIF();
	}
	//UPDATE PAGE VIEW COUNTER IF PUBLISHED OPEN SURVEY
		jsurveyfolder=document.getElementById('surveyfolder').value;
		if(document.getElementById('surveystatus').value=='2' && designmode==false){
			updatecounter(jsurveyfolder,thispageID);
		}
	//IF PERMALINK THEN USE AJAX TO UPDATE EMAIL TO PERESULT=4
		var permalink=''+document.location.search;
		if(permalink.length>0){
			var rxs='^[a-f0-9]{8}I[0-9]*$';
			var rx=new RegExp(rxs,"gi");
			if(permalink.search(rx)>-1){
				emailClicked(permalink);
			}
		}
	
	//ADD EVENT HANDLERS
	addEventHandlers();
	// ### DC 20 October 2011 10:24:09 IS CALLED IN addEventHandlers
		//addNOTAeventHandlers(jNOTA);
	//FIX FORM LABEL CLICK PROBLEM FOR SAFARI
	fixFormLabels();
	//DON'T HIDE DAO TARGETS IN DESIGN MODE (FOR PCC ETC)
	if(designmode==false){
		daoInit();
	}
	
	//SHOW PAGE 1, REDRAW SLIDERS (NECESSARY WHEN CONTAINER DIV IS MADE VISIBLE) AND SET NEXT/PREVIOUS BUTTONS
	document.getElementById('p'+thispageID).style.display='inline';
	redrawSliders();
	//DISABLE ALL SLIDER SELECTS
	disableSliderSelects();
	disableSliderInputs();
	showhidebuttons(1,pageorder[1]);
	document.getElementById('buttons').style.display='block';
	
	getstarttime();
	if(false==true){
		for (r in rankinggroups){		
			ul = document.getElementById(r);
			optionsArray=ul.getElementsByTagName('li');
			for(l=0;l<optionsArray.length;l++){
				optionsArray[l].style.width='100%';		
			}
		}
	}
	finishedLoading=1;
}

/* ==================================================================================*/
// LOOK UP AND CUSTOM CODING FUNCTIONS
function qname2formname(invalue){
	return invalue.split('_').slice(0,5).join('_');
}

function isSlider(controlID){
	var hold=false;
	for(i=0;i<jsliders.length;i++){
		if (jsliders[i]==controlID){
			hold=true;
		}
	}
	return hold;
}

function isMatrix(inID){
	return !isNaN(jsmatrix[inID]);
}

function getParameterFromURL(inKey){
	//GETS KEY VALUE FROM URL PARAMETER
  inKey = inKey.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]").toLowerCase();
  var regexS = "[\\?&]"+inKey+"=([^&#]*)";
  var regex = new RegExp(regexS);
  var results = regex.exec( window.location.href.toLowerCase());
  if( results == null )
    return "";
  else
    return results[1];
}

function hideQuestionByID(questionID){
	//HIDES POSITIONAL CONTAINER DIV FOR QUESTION FOR $$ QUESTIONS
	//NEED TO HIDE CONTAINER AS MAKING QUESTIONDIV DISPLAY NONE MEANS ITS ANSWERS ARE CLEARED ON SUBMIT
	var source=document.getElementById('div_q_'+questionID);
	if(source){
		var container=source.parentNode;
		if(container){
			container.style.display='none';
		}
	}
}
/* ==================================================================================*/

function disableSliderSelects(){
	var selArray=document.getElementsByTagName('select'),oneSlider;
	for(s=0;s<selArray.length;s++){
		if(selArray[s].className.search('fd_hide_input')>-1){
			jslidersChecked[selArray[s].id]=0;
			/*
			oneSlider=document.getElementById('fd-slider-handle-'+selArray[s].id);
			if(oneSlider){
				document.getElementById('fd-slider-handle-'+selArray[s].id).style.background='transparent url(/survey_templates/slider/sliderhollow.gif) no-repeat 0px 0px';
			}
			*/
		}
	}
	var h='';
	for(s in jslidersChecked){
		//console.log('SELECTS: '+s + '='+jslidersChecked[s]);	
	}
}

function disableSliderInputs(){
	var selArray=document.getElementsByTagName('input'),oneSlider;
	for(s=0;s<selArray.length;s++){
		if(selArray[s].className.search('fd_hide_input')>-1){
			jslidersChecked[selArray[s].id]=0;
			/*
			oneSlider=document.getElementById('fd-slider-handle-'+selArray[s].id);
			if(oneSlider){
				document.getElementById('fd-slider-handle-'+selArray[s].id).style.background='transparent url(/survey_templates/slider/sliderhollow.gif) no-repeat 0px 0px';
			}
			*/
		}
	}
	for(s in jslidersChecked){
		//console.log('INPUTS: '+s + '='+jslidersChecked[s]);	
	}
}

function myround(invalue,dp){
	return Math.round(invalue*Math.pow(10,dp))/Math.pow(10,dp);
}

function stopAllMedia(){
	try{
		var mediaArray=jsMediaString.split('|');
		for(var i=0;i<mediaArray.length;i++){
			thisone=mediaArray[i];
			if (thisone.length>0){
				//try{
				//	stopFlashMovieIE('VideoController'+thisone);
				//	}
				//catch(e){
					stopMedia('fc'+thisone);
				//}
			}
		}
	}
	catch(e){
		//alert(e);
	}
}

function getFlashObjectIE(inmoviename){
  if (window.document[inmoviename])
  {
    return window.document[inmoviename];
  }
  if (navigator.appName.indexOf("Microsoft Internet")==-1)
  {
    if (document.embeds && document.embeds[inmoviename])
      return document.embeds[inmoviename];
  }
  else
  {
    return document.getElementById(inmoviename);
  }
}

function stopFlashMovieIE(swf){
	var flashMovie=getFlashObjectIE(swf);
	flashMovie.stopPlay();
}

function obu() {
return 'If you do that you will lose all of your answers so far.\nTo navigate between pages please use the previous and next buttons';
}

function killobu() {
onbeforeunload = null;
//return true;
}

function accesskey(){
	//return false;
}

function clearplaceholdertext(){
	incontrol=this;
	if(incontrol.value==placeholdertext){
		incontrol.value='';
	}
}

function putplaceholdertext(){
	incontrol=this;
	if(incontrol.value.length==0){
		if(incontrol.id.split('_')[2]=='n' || incontrol.id.split('_')[2]=='nn'){
			//DO NOTHING AS IT'S A NUMBER ENTRY
		}
		else{
			incontrol.value=placeholdertext;
		}
	}
}

function isInPopUp(){
	//IS WINDOW A JS POPUP
	if(window.opener!=null){return true} else {return false};
}

function noneoftheabove(){
	// ### DC 20100604 ALLOW FOR MORE THAN ONE RADIO BUTTON BY UNCHECKINGN ALL RADIOS IF CURRENT IS CHECKBOX RATHER THAN JUST LAST ITE,
	var initem,isImage=false,hasImage=false,imageEquiv;
	initem=this;
	if(initem.id.slice(0,2)=='q_'){
		var n=document.getElementsByName(initem.name);
		imageEquiv=initem;
		if(document.getElementById(initem.id.replace('q_','i_'))){
			hasImage=true;	
		}
	}
	else{
		isImage=true;
		imageEquiv=initem;
		initem=document.getElementById(initem.id.replace('i_','q_'))
		var n=document.getElementsByName(initem.name);
	}
	var nlength=n.length;
	if (initem.type=='radio'){
		// THIS IS A RADIO BUTTON SO UNCHECK EVERYTHING THEN RE-CHECK THIS
		// ALLOWS FOR MORE THAN ONE RADIO BUTTON
		for(var i=0;i<nlength;i++){
			n[i].checked=false;
			if(hasImage==true || isImage==true){
				syncImageRadio2(n[i]); 
			}
		}
		//RECHECK EVENT-TRIGGERING RADIO BUTTON
			initem.checked=true;
		if(isImage==true || hasImage==true){
			syncImageRadio2(initem);
		}
	}
	else{
		// THIS IS A CHECKBOX SO UNCHECK ALL RADIO BUTTONS
		for(var i=0;i<nlength;i++){
			if (n[i].type=='radio'){
				n[i].checked=false;
				if(isImage==true|| hasImage==true){
					syncImageCheckbox2(n[i]);		
				}
			}
		}
	}
	// ### DC 30 SEPTEMBER 2011 07:49:10 CONDITIONS NOT FOLLOWED THROUGH ON NOTA AS CONDITION CHECKED BEFORE CHECKBOXES UNCHECKED
	doQuestionConditions2(initem,false);
}

function pcIsMet(inpage){
	//IS PAGE CONDITON MET
	if(pshowhideif[inpage]){
		var ret=conditionisMet(pshowhideif[inpage]);
		switch(ret){
			case 'show':
				return true;
				break;
			case 'hide':
				return false;
				break;
		}
	}
	else{
		return true;
	}
}


function checkserver(){
	// ### DC 20060924 IF ON FAILOVER SERVER THEN CHANGE FORM ACTION TO RELATIVE PATH
	var isFailover=get_cookie('failover');
	var formaction=document.getElementById('survey').action;
	if(formaction.slice(0,8)=='https://' && isFailover=='True'){
		formactionarray=formaction.split('/');
		document.getElementById('survey').action='/'+formactionarray[formactionarray.length-2]+'/'+formactionarray[formactionarray.length-1];
	}
}

function ok2Go(){
	//CHECK FOR COMPULSORY AND VALIDATED QUESTIONS
	stopAllMedia();
	//CHECK IF PCC OR OTHER SOLUTION SURVEY IS IN EXAMMPLE DESIGN MODE
	if(designmode==true){
		return true;	
	}
	var hold=true;
	var thispqarray=pageqs[thispageID]; //.split('|');
	//clear_errors(thispqarray);
	var thisqid, thisqcode,thisvalidation, thisqtype,errortarget,visTarget,thisvalidation,holdVis;
	for (var i=0;i<thispqarray.length;i++){
		thisqcode=thispqarray[i];
		thisvalidation=thisqcode.split('_')[2];
		thisqcodearray=thisqcode.split('_').slice(0,5);
		thisqcodereal=thisqcodearray.join('_');
		thisqid=(thisqcodearray[1]);
		thisquestiondiv='q'+thisqid;
		thisqdiv='div_q_'+thisqid;
		thisqtype=thisqcode.split('_')[5];
		thisqcoderealNN=thisqcodearray.slice(0,4).join('_');
		row=thisqcodearray[4];
		//DON'T CHECK IF IS RANDOM IMAGE
		if(thisvalidation=='iz'){continue;}
		if(thisqtype=='t' || thisqtype=='n' || thisqtype=='d' || isMatrix(thisqid)==true || thisvalidation=='T' || thisvalidation=='nn' || thisvalidation=='NN'){
			visTarget=document.getElementById('row_'+thisqid+'_'+row);
			if(!isMatrix(thisqid)){
				//NOT MATRIX
				//CAN MARK ERROR ON FORM CONTROL
				errortarget=document.getElementById(thisqcodereal);
				visTarget=document.getElementById(thisqdiv);
				holdVis='TND NO MATRIX '+'['+thisqcodereal + '[=]'+thisqdiv+']';
			}
			else{
				//IS MATRIX
				if(thisqtype=='t' || thisqtype=='n' || thisqtype=='nn' || thisqtype=='NN'){
					//IS WRITE-IN MATRIX SO CAN MARK ERROR ON FORM CONTROL
					if(thisvalidation=='nn' || thisvalidation=='NN'){
						//CONSTANT SUM MATRIX
						errortarget=document.getElementById('q_'+thisqid + '_options');
						visTarget=document.getElementById(thisqdiv);
						holdVis='TND MATRIX NN '+'['+'q_'+thisqid + '_options' + '[=]'+thisqdiv+']';
					}
					else{
						errortarget=document.getElementById(thisqcodereal);
						visTarget=document.getElementById('row_'+thisqid+'_'+row);
						holdVis='TND MATRIX NOT NN '+'['+thisqcodereal + '[=]'+'row_'+thisqid+'_'+row+']';
					}
				}
				else{
					//ERROR TARGET IS MATRIX ROW
					// ### DC 08 June 2011 11:40:15 USE ROWLABEL TO IDENTIFY UNANSWERD ROW NOT ROW BECAUSE OF ROTATION
					//BUT USE parentNode TO STILL HIGHLIGHT WHOLE ROW
					//errortarget=document.getElementById('row_'+thisqid+'_'+row);
					errortarget=document.getElementById(thisqcodereal.replace('q_','rowlabel_')).parentNode;
					visTarget=document.getElementById('row_'+thisqid+'_'+row);
					holdVis='TND NOT MATRIX '+ '['+'row_'+thisqid+'_'+row + '[=]'+'row_'+thisqid+'_'+row+']'+thisqcodereal;
				}
			}
		}
		else{
			if(thisqcode.length>0){
				//NOT EMPTY ITEM IN PQARRAY
				if(document.getElementById('ranklist'+thisqid)){
					errortarget=document.getElementById('ranklist'+thisqid);
					holdVis='OTHER RANKLIST '+'['+'ranklist'+thisqid + '[=]'+'ranklist'+thisqid+']';
				}
				else{
					if(thisqtype=='t' || thisqtype=='n' ){
						//IS WRITE-IN MATRIX SO CAN MARK ERROR ON FORM CONTROL
						errortarget=document.getElementById(thisqcodereal);
						holdVis='OTHER WRITEIN MATRIX '+'['+thisqcodereal + '[=]'+thisqcodereal+ ']';
					}
					else{
						errortarget=document.getElementById('q_'+thisqid + '_options');
						holdVis='OTHER ' + '['+'q_'+thisqid + '_options' + '[=]'+'q_'+thisqid + '_options'+']';
					}
				}
				visTarget=errortarget;
			}
		}
		if(thisqcode.length==0){
			return true;
		}
		
		if(document.getElementById(thisqdiv).style.display!='none' && visTarget.style.display!='none'){
			//ITEM IS VISIBLE AND ROW IS VISIBLE
			switch(thisvalidation){
				case 'x':
				case 'xx':
					break;
				case 'T':	
					var thisvalue=document.getElementById(thisqcodereal).value;
					if(isRealText(thisvalue)==false){
						hold=false;
						setanchor(thisqid);
						markError(errortarget,true);
					}
					else{
						markError(errortarget,false);
					}
					break;
				case 'X': //compulsory
					if(isAnswered(thisqcode)==false){
						hold=false;
						setanchor(thisqid);
						markError(errortarget,true);
					}
					else{
						markError(errortarget,false);
					}
					break;
				case 'P': //UK postcode compulsory
					var thisvalue=document.getElementById(thisqcodereal).value;
					if(isRealText(thisvalue)==false || (isRealText(thisvalue)==true && isPostCode(thisvalue)==false)){
						hold=false;
						setanchor(thisqid);
						markError(errortarget,true);
					}
					else{
						markError(errortarget,false);
					}
					break;
				case 'p': //UK postcode
					var thisvalue=document.getElementById(thisqcodereal).value;
					if(isPostCode(thisvalue)==false){
						hold=false;
						setanchor(thisqid);
						markError(errortarget,true);
					}
					else{
						markError(errortarget,false);
					}
					break;
				case 'N': // number compulsory
					var thisvalue=document.getElementById(thisqcodereal).value;
					// ### DC 17 May 2011 11:45:00 CHANGED FROM isNumeric
					if((isRealText(thisvalue)==false) || (isRealText(thisvalue)==true && isNaN(thisvalue)==true)){
						hold=false;
						setanchor(thisqid);
						markError(errortarget,true);
					}
					else{
						markError(errortarget,false);
					}
				break;
				case 'n': // number
					var thisvalue=document.getElementById(thisqcodereal).value;
					// ### DC 17 May 2011 11:45:00 CHANGED FROM isNumeric
					// ### DC 18 October 2011 07:41:22 ALLOW PLACEHOLDERTEXT IF NOT COMPULSORY
					if(isNaN(thisvalue)==true && thisvalue!=placeholdertext){
						hold=false;
						setanchor(thisqid);
						markError(errortarget,true);
					}
					else{
						markError(errortarget,false);
					}
					break;
				case 'E': //email compulsory
					var thisvalue=document.getElementById(thisqcodereal).value;
					if(isRealText(thisvalue)==false ||(isRealText(thisvalue)==true && isEmail(thisvalue)==false)){
						hold=false;
						setanchor(thisqid);
						markError(errortarget,true);
					}
					else {
						markError(errortarget,false);
					}
					break;
				case 'e': //email
					var thisvalue=document.getElementById(thisqcodereal).value;
					if(isEmail(thisvalue)==false){
						hold=false;
						setanchor(thisqid);
						markError(errortarget,true);
					}
					else{
						markError(errortarget,false);
					}
					break;
				case 'Z': //zip compulsory
					var thisvalue=document.getElementById(thisqcodereal).value;
					if(isRealText(thisvalue)==false ||(isRealText(thisvalue)==true && isZipCode(thisvalue)==false)){
						hold=false;
						setanchor(thisqid);
						markError(errortarget,true)
					}
					else{
						markError(errortarget,false)
					}
					break;
				case 'z': //zip
					var thisvalue=document.getElementById(thisqcodereal).value;
					if(isZipCode(thisvalue)==false){
						hold=false;
						setanchor(thisqid);
						markError(errortarget,true)
						}
					else{
						markError(errortarget,false)
					}
					break;
				case 'W': //web compulsory
					var thisvalue=document.getElementById(thisqcodereal).value;
					if(isRealText(thisvalue)==false ||(isRealText(thisvalue)==true && isURL(thisvalue)==false)){
						hold=false;
						markError(errortarget,true)
						setanchor(thisqid);
						}
					else{
						markError(errortarget,false)
					}
					break;
				case 'w': //web
					var thisvalue=document.getElementById(thisqcodereal).value;
					if(isURL(thisvalue)==false){
						hold=false;
						markError(errortarget,true)
						setanchor(thisqid);
					}
					else {
						markError(errortarget,false)
					}
					break;
				case 'nn': // matrix number constant sum or percent split
					var thismatrixcount=jsmatrix[thisqid];
					var thisqcodeNN=thisqcodearray.slice(0,4).join('_').replace('q_','x_')
					var temp;
					temp=true;
					if(thismatrixcount!='undefined'){
						for(var k=0;k<thismatrixcount+1;k++){
							one=document.getElementById(thisqcodeNN+'_'+k)
							markError(one,false);
							thisone=one.value.replace(' ','');
							// ### DC 17 May 2011 11:45:00 CHANGED FROM isNumeric
							if(isNaN(thisone)==true){
								temp=false;
								markError(one,true);
							}
							else{
								markError(one,false)
							}
						}
						if(temp==false){
							hold=false;
							setanchor(thisqid);
						}
					}
					break;
				case 'NN': // matrix number compulsory
					var thismatrixcount=jsmatrix[thisqid];
					var temp;
					var tally;
					temp=true;
					tally=0;
					if(thismatrixcount!='undefined'){
						for(var k=0;k<thismatrixcount+1;k++){
							one=document.getElementById(thisqcoderealNN.replace('q_','x_')+'_'+k)
							markError(one,false)
							thisone=one.value.replace(' ','');
							tally+=(thisone*1);
							if(isNaN(thisone)==true || thisone.length==0){
								temp=false;
								markError(one,true);
							}
						}
						if(temp==false || tally==0){
							for(var k=0;k<thismatrixcount+1;k++){
								one=document.getElementById(thisqcoderealNN.replace('q_','x_')+'_'+k)
								markError(one,true);
							}
							hold=false;
							setanchor(thisqid);
						}
					}
					break;
				case 'XX': // COMPULSORY MULTIPLE CHOICE OR MATRIX
					var temp;
					temp=true;
					if(jsmatrix[thisqid]){
						var thismatrixcount=jsmatrix[thisqid];
						for(var ii=0;ii<thismatrixcount+1;ii++){
							//alert(thisqcodereal);
							//q_211895_XX_x_0_0_x rowlabel_211895_XX_x_1
							//name=q_211895_XX_x_1
							one=document.getElementById(thisqcodereal.replace('q_','rowlabel_'));
							thisone=one.value
							if(qhaschecked(thisqcodereal)==false){
								temp=false;
								markError(one,true)
							}
							else{
								markError(one,false)
							}
						}
						if(temp==false){
							hold=false;
							setanchor(thisqid);
						}
					}
					else{
						if(isAnswered(thisqcode)==false){
							hold=false;
							setanchor(thisqid);
							markError(errortarget,true);
						}
						else{
							markError(errortarget,false);
						}
					}
					break;
				case 'KK':
					//RANKING
					var rankValues=document.getElementById('q_'+thisqid+'_KK_x_x').value;
					if(rankValues.length==0 || rankValues.split(',')[0]=='-1'){
						hold=false;
						setanchor(thisqid);
						markError(errortarget,true);	
					}
					else{
						markError(errortarget,false);							
					}
				break;
			} //end case
		}
	} // end for
	return hold;
}

function ok2submit(){
	//CHECK COMPULSORY/VALIDATIONS ON LAST PAGE
	var OK=ok2Go();
	return OK;
}

function trysubmit(){
	if(ok2submit()==true){
		for(s in jslidersChecked){
			//console.log(s + '='+jslidersChecked[s]);	
		}
		//CLEAR CALCULATED CONSTANT SUM VALUES ON HIDDEN ROWS OF MATRIX
			clearhiddenwriteins();
		//CLEAR DEFAULT VALUES OF PRE-CHECKED QUESTIONS ON HIDDEN QUESTIONS
			clearHiddenPrechecked();
		//REMOVE OPTIONS IN SELECT BEHIND SLIDERS IF SLIDER IS NOT ANSWERED
			clearUnansweredSliders();

		getduration();
		if(designmode==false){
			document.getElementById('survey').submit();
		}
		else{
			alert('You can\'t submit a survey in design mode');	
		}
	}
	else{
		window.location.hash=thisanchor;
	}
}

function clearHiddenPrechecked(){
	//return;
	var q,controlaArray,hold='',thisname,sel,opt;
	for (q in jdefault){
		// ### DC 11 May 2011 15:58:20 CHECK FOR QNAMES AS MAY BE HIDDEN TEXT
		if(document.getElementById('div_q_'+q).style.display=='none' && qnames[q]){
			// QUESTION IS HIDDEN
			thisname=qnames[q];
			switch(thisname.split('_')[5]){
				case 'r':
				case 'c':
					controlsArray=document.getElementsByName(qname2formname(q));	
					for(opt=0;opt<controlsArray.length;opt++){
						controlsArray[opt].checked=false;	
					}
					break;
				case 'd':
					sel=document.getElementById(qname2formname(qnames[q]));
					//sel.options[sel.selectedIndex].value='';
					sel.options.length=0;
					break;
				case 't':	
					document.getElementById(qname2formname(qnames[q])).value=placeholdertext;
					break;
				case 'n':	
					document.getElementById(qname2formname(qnames[q])).value='';
					break;
				case 'k':
					document.getElementById(qname2formname(qnames[q])).value='-1';
					break;
				case 'nn':
					numberArray=document.getElementById(qname2formname(qnames[q])).value.split('|');
					for(opt=0;opt<numberArray.length;opt++){
						numberArray[opt]='';	
					}
					document.getElementById(qname2formname(qnames[q])).value=numberArray.join('|');
					break;
			}
			hold+=qnames[q]+'\n';
		}	
	}
}

function clearUnansweredSliders(){
	//CLEAR VALUES ON SLIDER SELECTS IF SLIDER HAS NOT BEEN ANSWERED
	var sel,selIDarray,selqID,row;
	var s=document.getElementsByTagName('select');
	for(d=0;d<s.length;d++){
		sel=s[d];
		selIDarray=sel.id.split('_');
		selqID=selIDarray[1];
		row=selIDarray[4];
		//console.log(selqID+'='+isSlider(selqID))
		if(isSlider(selqID)==true){
			sliderID=sel.id.split('_').slice(0,5).join('_');
			slideranswered=(jslidersChecked[sliderID] && jslidersChecked[sliderID]==1);
			if(slideranswered==false){
				sel.options.length=0;
			}
		}
	}
	//CLEAR CONSTANT SUM PERCENTAGE VALUES IN HIDDEN INPUT WHERE SLIDER HAS NOT BEEN ANSWERED
	var CScontainer,CSvaluearray,CSIDarray;
	for(s in jslidersChecked){
		if(s.slice(0,1)=='x'){
			CSIDarray=s.split('_');
			CScontainer=document.getElementById('q_'+CSIDarray[1]+'_'+CSIDarray[2]+'_x_x');
			CSvaluearray=CScontainer.value.split('|');
			row=CSIDarray[4];
			slideranswered=(jslidersChecked[s] && jslidersChecked[s]==1);
			if(slideranswered==false){
				CSvaluearray[row]='';
			}
			CScontainer.value=CSvaluearray.join('|');
		}
	}
}


function clearhiddenwriteins(){
	var thisT,thisTid,thisTvalidation,thisrow,csInput,qID;
	var tArray=document.getElementsByTagName('input');
	for(t=0;t<tArray.length;t++){
		thisT=tArray[t];
		thisTid=thisT.id;
		qID=thisTid.split('_')[1];
		thisTvalidation=thisTid.split('_')[2];
		if(thisT.type=='text' && (thisTvalidation=='nn' || thisTvalidation=='NN')){
			//IS CONSTANT SUM NUMBER MATRIX
			csInput=document.getElementById('q_'+qID+'_'+thisTvalidation+'_x_x');
			csInputArray=csInput.value.split('|');
			thisrow=document.getElementById('row_'+qID+'_'+thisTid.split('_')[4]);
			if(thisrow && thisrow.style.display=='none'){
				csInputArray[thisTid.split('_')[4]]='';
				csInput.value=csInputArray.join('|');
			}
		}
	}
}

function doPagerSNR(inpage){
	//UPDATE PAGE VIEW COUNTER IF PUBLISHED OPEN SURVEY
		if(document.getElementById('surveystatus').value=='2'){
			updatecounter(jsurveyfolder,thispageID);
		}
	var snr1=document.getElementById('divRestore');
	var snrx=document.getElementById('divSave');
	switch (thispagenumber){
		case 1:
			snr1.style.display='block';
			snrx.style.display='none';
			break;
		case maxpage:
			snr1.style.display='none';
			snrx.style.display='none';
			break;
		default:
			snr1.style.display='none';
			snrx.style.display='block';
			break;
	}
}

function changepage(direction){
	//CALLED FROM PREVIOUS/NEXT BUTTONS
	switch(direction){
		case '+':
			var OK=ok2Go();
			if (OK==true){
				thisanchor='';
				gonext();
				break;
			}
			else{
				self.location=thisBaseURL+thisanchor;
				break;
			}
		case '-':
			thisanchor='';
			goback();
			break;
		}
}

function getNextPage(inpage,indir){
	var pCheckOK=false;
	while (pCheckOK==false){
		switch(indir){
			case '++':
				inpage++;
				thispagenumber++;
				break;
			case '--':
				inpage--;
				thispagenumber--;
				break;
			} //end switch
			pCheckOK=pcIsMet(pageorder[thispagenumber]);
			if(pCheckOK==false){
				//UNANSWER ALL QUESTIONS ON THIS PAGE AS IT IS NOT BEING SHOWN
				unanswerPage(pageorder[thispagenumber]);
			}
	} //end while
	return pageorder[inpage];
}

function goback(){
	if(thispagenumber!=1){
		document.getElementById('p'+thispageID).style.display='none';
		thispageID=getNextPage(thispagenumber,'--');
		document.getElementById('p'+thispageID).style.display='inline';
		showhidebuttons(thispagenumber,thispageID)
		self.scrollTo(0,0);
		setprogress(thispagenumber)
		//showHideCompulsory(thispageID);
		doPagerSNR(thispagenumber);
		redrawSliders();
		}
}

function gonext(){
	if(thispagenumber<(maxpage)){
		document.getElementById('p'+thispageID).style.display='none';
		thispageID=getNextPage(thispagenumber,'++');
		document.getElementById('p'+thispageID).style.display='inline';
		showhidebuttons(thispagenumber,thispageID)
		self.scrollTo(0,0);
		setprogress(thispagenumber)
		//showHideCompulsory(thispageID);
		doPagerSNR(thispagenumber);
		redrawSliders();
		}
}

function getpagenumber(inpageID){
	for(p=0;p<pageorder.length;p++){
		if(pageorder[p]==inpageID){
			return p;
		}
	}
}

function gotopageSNR(inpageID){
		document.getElementById('p'+thispageID).style.display='none';
		thispageID=inpageID;
		thispagenumber=getpagenumber(thispageID);
		document.getElementById('p'+thispageID).style.display='inline';
		showhidebuttons(thispagenumber,thispageID)
		self.scrollTo(0,0);
		setprogress(thispagenumber)
		//showHideCompulsory(thispageID);
		doPagerSNR(thispagenumber);
		redrawSliders();
}

function doRotation(inpage){
	try{
		var groups=jsrotation[inpage];
		if(groups.length==0){return;}
		var thisgroupsarray=groups.split(',');
		for(var i=0;i<thisgroupsarray.length;i++){
			if(thisgroupsarray[i].length>0){
				var s=thisgroupsarray[i].split('_')
				switch(s.length){
					case 3: //ordinary group
						randomizeContent('group'+thisgroupsarray[i]);
						break;
					case 5: //drop down
						var sel=s[0]+'_'+s[1]+'_'+s[2]+'_'+s[3];
						var rmode=s[4]*1;
						randomizeSelect(sel,rmode);
						break;
					case 6: //ranking
						var sel=s[0]+'_'+s[1]+'_'+s[2]+'_'+s[3]+'_';
						randomizeRanking(sel);
						break;
				}
			}
		}
		//clear rotations for this page so it does re-rotate after previous/next
		jsrotation[inpage]='';
	}
	catch(e){return;}
}

function showhidebuttons(thispage,thispageID){
	var bn=document.getElementById('bNext');
	var bp=document.getElementById('bPrev');
	var bs=document.getElementById('bSubmit');
	bn.style.display='inline';
	if(jnopreviousbutton[thispageID]){
		bp.style.display='none';
	}
	else{
		bp.style.display='inline';
	}
	bs.style.display='none';
	switch (thispage){
		case maxpage:
			bn.style.display='none';
			//bp.style.display='inline';
			bs.style.display='inline';
			bs.innerHTML=jlexicon['submitAnswers'];
			break;
		case 1:
			bp.style.display='none';
			break;
	}

	//DISABLE PREVIOUOS BUTTON ON QUIZ
	try{
		//if(isquiz()==true){bp.style.display='none';}
		}
	catch(e){
		//do nothing extra
	}

	// ### DC 20060208 CODE TO HANDLE EXIT PAGE AND SHOW MODIFIED SUBMIT BUTTON
	try{
		if(jspageisexitpagearray[thispage]==1){
			bn.style.display='none';
			bs.innerHTML=jlexicon['continue'];
			bs.style.display='inline';
		}
	}
	catch(e){var a=1}
	if(maxpage==1){bp.style.display='none';}
	document.getElementById('buttons').style.display='block';
}

function dorandom(){
	if(randomiser){
		for(rID in randomiser){
			fillrand(rID,-1);
		}
	}
	if(randomimages){
		for (rID in randomimages){
			fillrandomimage(rID,-1);
		}
	}
}

function fillrandomimage(thisID,seed){
	//SEED IS SPECIFIED BY SAVE & RESUME
	var imagecontainer,captioncontainer,valuecontainer,r,thisimage,caption,userfolder;
	imagecontainer=document.getElementById('izimage_'+thisID);
	userfolder=document.getElementById('userfolder').value;
	valuecontainer=document.getElementById(qname2formname(qnames[thisID]));
	valuesArray=randomimages[thisID];
	if(seed==-1){
		r=getRandomIntUnder(valuesArray.length);
	}
	else{
		r=seed	
	}
	thisimage=valuesArray[r].split('=')[1];
	caption=valuesArray[r].split('=')[0];
	imagecontainer.src='/surveys/'+userfolder + '/images/'+thisimage;
	if(document.getElementById('izcaption_'+thisID)){
		captioncontainer=document.getElementById('izcaption_'+thisID);
		captioncontainer.innerHTML=caption;
	}
	imagecontainer.alt='image: '+caption;
	valuecontainer.value=r;
}

function fillrand(thisID,seed){
	var container,valuesArray,randomtext,controlsArray,c,r;
	container=document.getElementById('t_'+thisID+'_z');
	valuesArray=randomiser[thisID];
	if(seed==-1){
		r=getRandomIntUnder(valuesArray.length);
	}
	else{
		r=seed	
	}
	randomtext=valuesArray[r];
	container.innerHTML=randomtext;	
	controlsArray=document.getElementsByName(qname2formname(qnames[thisID]));
	// SET VALUE OF RADIO/CHECKBOXES TO BE LIKE MATRIX TO SAVE RANDOM ITEM SHOWN AS IF ON MATRIX ROW
	for(c=0;c<controlsArray.length;c++){
		t=controlsArray[c].value;
		controlsArray[c].value=(r+10)+'_'+t;
	}
}

function set_cookie(inq,invalue){
	today=new Date();
	expires=new Date(today.getTime()+60*24*60*60);
	document.cookie=inq+"="+invalue +';path=/;expires='+expires.toGMTString();
}

function get_cookie(inq) {
	var jsearch = inq + "=";
	var returnvalue = "";
	//return;
	if (document.cookie.length > 0) {
		var offset = document.cookie.indexOf(jsearch);
		if (offset != -1) {
			offset += jsearch.length
			var end = document.cookie.indexOf(";", offset);
			if (end == -1){ end = document.cookie.length};
			returnvalue=unescape(document.cookie.substring(offset, end));
			}
		}
		return returnvalue;
}

function setanchor(inq){
	if(thisanchor.length==0){
		thisanchor='#v'+inq;
	}
}

function showerrs(instring){
	// $$ DISABLED
	return;

	var errstring='';
	errarray=(instring.split('|')[0]).split(',');
	//alert('$$ showerrs='+instring);
	for(i=1;i<errarray.length-1;i++){
		switch(errarray[i].split('_')[2]){
			case 'X':
				errstring=jlexicon['compulsoryQuestion'];
				break;
			case 'XX':
				errstring=jlexicon['compulsoryQuestions'];
				break;
			case 'P':
			case 'p':
				errstring=jlexicon['invalidPostcode'];
				break;
			case 'N':
			case 'n':
				errstring=jlexicon['invalidNumber'];
				break;
			case 'NN':
			case 'nn':
				errstring=jlexicon['invalidNumbers'];
				break;
			case 'E':
			case 'e':
				errstring=jlexicon['invalidEmailAddress'];
				break;
			case 'W':
			case 'w':
				errstring=jlexicon['invalidWebAddress'];
				break;
			case 'Z':
			case 'z':
				errstring=jlexicon['invalidZipCode'];
				break;
		}
		//errfield=errarray[i].split('_')[0]+ '_'+ errarray[i].split('_')[1] + '_' + errarray[i].split('_')[2]+'v';
		errfield=errarray[i].split('_')[0]+ '_'+ errarray[i].split('_')[1] +'v';
		errID=document.getElementById(errfield);
		errID.innerHTML='&nbsp;'+ errstring;
	}
	//self.location=thisBaseURL+thisanchor;
	window.location.hash=thisanchor;
}

function clear_errors(errarray){
	//$$ DISABLED
	return;
	var thispqcount=errarray.length;
	var errfield='';
	var errValidation='';
	var daggers;
	for (var i=0;i<thispqcount;i++){
		//errfield=errarray[i].split('_')[0]+ '_'+ errarray[i].split('_')[1] + '_' + errarray[i].split('_')[2]+'v';
		errfield=errarray[i].split('_')[0]+ '_'+ errarray[i].split('_')[1] +'v';
		errID=document.getElementById(errfield);
		errValidation=errarray[i].split('_')[2];
		switch(errValidation){
			case 'X':
			case 'XX':
				daggers='***';
				break;
			case 'P':
			case 'N':
			case 'NN':
			case 'E':
			case 'W':
			case 'Z':
				daggers='!!!';
				break;
			case 'p':
			case 'n':
			case 'nn':
			case 'e':
			case 'w':
			case 'z':
				daggers='&dagger;&dagger;&dagger;';
				break;
			}
		if(errID){errID.innerHTML=daggers};
	}
}

function hideLoadingGIF(){
	document.getElementById('loading').style.display='none';
	document.getElementById('p'+pageorder[1]).style.display='inline';
	setprogress(1);
}

function setprogress(inpage){
	var scaler;
	switch(Math.floor(maxpage/10)){
		case 0: //UP TO 9
			scaler=18;
			break;
		case 1: //10 TO 19
			scaler=14;
			break;
		case 2: //20 TO 29
			scaler=10;
			break;
		case 3: //30 TO 39
			scaler=6;
			break;
		default:
			scaler=Math.floor(300/maxpage);
			break;
	}
	scaler=99/maxpage;
	var ptext=document.getElementById('progresstext');
	// ### DC 20060212 MODIFY PROGRESS STATUS IF ON AN EXIT PAGE
	try{
		if(jspageisexitpagearray[thispage]==1){
			inpage=maxpage;
			}
		}
	catch(e){var a=1}
	var pagestogo=maxpage-inpage;

	var progress=document.getElementById('progress');
	var progressx=document.getElementById('progressx');
	var holdprogress;
	switch (progressStyle){
		case 0:
		case 10://none
			break;
		case 1: //progress bar
		case 11:
			switch(inpage){
				case 1:
					progress.style.width='2px';
					//progressx.style.width=scaler*(pagestogo+1)-2+'px';
					progressx.style.width=scaler*(pagestogo+1)+'%';
					holdprogress=jlexicon['SurveyComplete'];
					holdprogress=holdprogress.replace('[jpercentage]','0');
					ptext.innerHTML=holdprogress;
					break;
				default:
					//progress.style.width=scaler*(inpage-1)+'px';
					progress.style.width=scaler*(inpage-1)+'%';
					//progressx.style.width=scaler*(pagestogo+1)+'px';
					progressx.style.width=scaler*(pagestogo+1)+'%';
					//console.log('PROGRESS: '+scaler*(inpage-1)+'%' + ' / '+scaler*(pagestogo+1)+'%');
					holdprogress=jlexicon['SurveyComplete'];
					holdprogress=holdprogress.replace('[jpercentage]',Math.floor(100*(inpage-1)/maxpage));
					ptext.innerHTML=holdprogress;
			}
			break;
		case 2: //text
		case 12:
			holdprogress=jlexicon['PageOf'];
			holdprogress=holdprogress.replace('[jpage]',inpage);
			holdprogress=holdprogress.replace('[jmaxpage]',maxpage);
			ptext.innerHTML=holdprogress;
			break;
		}
}


function get_timezoneoffset(){
	var today=new Date();
	document.getElementById('timezoneoffset').value=0+today.getTimezoneOffset();
}

function get_source(){
	jsq=''+document.location.search;
	if(jsq.length>0){document.getElementById('source').value=jsq.slice(1)};
}

function closeme(){
	self.close();
}

function doPipe(){
	doPipe2(this)
}

function doPipe2(source){
	var div, OK=true;
	var thisID=source.id;
	thisID=thisID.replace('i_','q_');
	source=document.getElementById(thisID);
	var pipetext=getlabel(source);
	//DON'T SHOW PIPE TARGET IF TEXT ENTRY IS EMPTY OR PLACEHOLDER, OR SELECT IS ON FIRST ENTRY 
	if (pipetext.length==0 || pipetext==placeholdertext || (source.type=='select-one' && source.selectedIndex==0)){
		OK=false;
	}
	var sourceID=source.id.split('_')[1];
	targets=jpipes[sourceID];
	for(t=0;t<targets.length;t++){
		if(OK==true){
			// ### DC 06 June 2011 12:20:32 ADDED SPACE AFTERWARDS AS IE7 WAS REMOVING ANY SPACES AFTER PIPED TEXT
			// ### DC 15 June 2011 09:11:29 REMOVED AS SOLUTION IS TO MAKE SURE TARGET SPAN STARTS OFF WITH CONTENT AND NOT NOTHING
			document.getElementById(targets[t]).innerHTML=pipetext;
		}
		else{
			document.getElementById(targets[t]).innerHTML='';
		}
		targetArray=targets[t].split('_');
		switch(targetArray[1]){
			case 'p':
				//PIPE INTO PAGE TITLE
				// do nothing
				break;
			case 'q':
				//PIPE INTO QUESTION TEXT AND MAKE QUESTION VISIBLE
				if(OK==true){
					document.getElementById('div_q_'+targetArray[2]).style.display='inline';
				}
				else{
					document.getElementById('div_q_'+targetArray[2]).style.display='none';
				}
				break;
		}
	}
}

function maxcheckbox(){
	maxcheckbox2(this);
}

function maxcheckbox2(source){
	var source,sourceID,sourceName,maxcb,controlArray,checkCount=0;
	var al=jlexicon['maxCheckBoxes'];
	sourceID=source.id.split('_')[1];
	sourceName=source.name;
	if(jmaxcheckboxed[sourceID]){
		maxcb=jmaxcheckboxed[sourceID];	
		controlArray=document.getElementsByName(sourceName);
		for(var c=0;c<controlArray.length;c++){
			if (controlArray[c].type=='checkbox' && controlArray[c].checked==true){
				//ALLOWS FOR RADIO BUTTONS
				checkCount=checkCount+1;
			}
		}
		if(checkCount>(maxcb)){
			source.checked=false;
			doDAOcheckbox2(source);
			if(al.search('3')>-1){
				alert(al.replace('3',maxcb));
			}
			else {
				alert(maxcb + ' ' + al);
			}
			return false;
		}
		else{
			return true
		}
	}
}

// FUNCTIONS TO GET START AND END TIME FOR SURVEY COMPLETION AND SAVE DURATION IN FORM FIELD IN SECONDS
function getstarttime(){
	starttime=new Date();
}

function getduration(){
	endtime=new Date();
	duration=0+Math.ceil((endtime*1-starttime*1)/1000); //save duration in seconds
	document.getElementById('duration').value=duration*1;
}

function isquiz(){
	var hold=false;
	try{
			hold=document.getElementById('surveyquizstatus').value*1>0;
			}
		catch(e){
		}
	return hold;
}


function doConstantSumMatrix1(){
	incontrol=this;
	doConstantSumMatrix2(incontrol);
}

function doConstantSumMatrix2(incontrol){
	var qnamearray=incontrol.id.split('_');
	var prefix=qnamearray[0]+'_'+qnamearray[1]+'_'+qnamearray[2]+'_'+qnamearray[3]
	var qID=qnamearray[1];
	var cstotal=jcondsum[qID];
	var matrixsize=jsmatrix[qID];
	var tot=0;
	for(c=0;c<matrixsize+1;c++){
		tot+=document.getElementById(prefix + '_'+c).value;
	}
	markError(incontrol,false);
	if(incontrol.value.length==0){ // COMPULSORY NOT CONSTANT SUM
		alert('no number entered');
		markError(incontrol,true);
		incontrol.value='0';
		incontrol.focus();
		return false;
	}
	else {
		if((isNaN(incontrol.value)==true || incontrol.value<0 || incontrol.value*1>cstotal*1) && isNaN(cstotal)==false){
			alert('You must enter a number between 0 and '+ cstotal*1);
			incontrol.value='0';
			markError(incontrol,true);
			incontrol.focus();
			return false;
			}
		}

	var cstarget=document.getElementById('q_'+qnamearray[1]+'_'+qnamearray[2]+'_'+qnamearray[3]+'_x')
	normalise2(incontrol,cstarget,cstotal,matrixsize)
}

function normalise2(incontrol,intarget,intotal,matrixsize){
	//ADJUST ALL FIGURES SO THEY ADD UP TO CONSTANT SUM
	//NEEDS ADJUSTING FOR HIDDEN ROWS
	var qnamearray=incontrol.id.split('_');
	var prefix='x_'+qnamearray[1]+'_'+qnamearray[2]+'_'+qnamearray[3]
	var maxpos=0;
	var maxvalue=0;
	var tally=0;
	nInputArray=new Array(matrixsize);
	nOutputArray=new Array(matrixsize);
	for(i=0;i<matrixsize+1;i++){
		nInputArray[i]=document.getElementById(prefix + '_'+i).value;
		tally+=nInputArray[i]*1;
	}
	//AS THERE ARE EMPTY VALUES IN ARRAY CONVERT TO ZERO TO EVAL TOTAL
	//inOldTotal=eval(nInputArray.join('+'));
	
	if(tally>0){
		//var scaler=intotal/inOldTotal;
		var scaler=intotal/tally;
	}
	else{
		scaler=1;
	}
	var newtally=0;
	for(i=0;i<nInputArray.length;i++){
		//nOutputArray[i]=Math.round(nInputArray[i]*scaler);
		if(nInputArray[i].length>0){
			nOutputArray[i]=myround(nInputArray[i]*scaler,2);
			newtally=newtally+nOutputArray[i]
			if (nInputArray[i]>maxvalue){
				maxpos=i;
				maxvalue=nInputArray[i];
			}
		}
	}
	var interim=tally; //eval(nInputArray.join('+'));
	var interim2=newtally; //eval(nOutputArray.join('+'));
	if(interim!=intotal){
		//adjust highest value to make exact total
		nInputArray[maxpos]=nInputArray[maxpos] + (intotal-interim);
		}
	intarget.value=nOutputArray.join('|');
}

function clearAnswers(inquestionid){
	switch(inquestionid.split('_')[2]){
		case 't':
			document.getElementById(inquestionid).value=placeholdertext;
			break;
		case 'd':
			document.getElementById(inquestionid).selectedIndex=0;
			break;
		case 'r':
		case 'c':
		case 'z':
		case 'n':
			var qoptions=document.getElementsByName(inquestionid);
			for(var i=0;i<qoptions.length;i++){
				qoptions[i].checked=false;
			}
			break;
		case 'x':
		case 'y':
			var rows=jsmatrix[inquestionid.split('_')[3]];
			for (row=0;row<rows+1;row++){
				var qoptions=document.getElementsByName(inquestionid+'_'+row);
				for(var i=0;i<qoptions.length;i++){
					qoptions[i].checked=false;
				}
			}
			break;
		case 'w':
			var rows=jsmatrix[inquestionid.split('_')[3]];
			for (row=0;row<rows+1;row++){
				var qoptions=document.getElementsByName(inquestionid+'_'+row);
				for(var i=0;i<qoptions.length;i++){
					qoptions[i].selectedIndex=0;
				}
			}
			break;
	}
}

function openwindow(inURL){
	//USED FOR POP-UPS FOR LINKS IN SURVEY)
    var mywindow;
    mywindow = window.open(inURL,windowname,'width=1000,height=640,scrollbars=1,resizable=1,toolbar=1,menubar=1');
    mywindow.focus();
}

function checkMacIE(){
    var n = navigator.userAgent.toLowerCase();
    var mac = n.indexOf('mac') >-1;
    var ms = n.indexOf('msie')>-1;
    if(mac && ms){
     	isMacIE=true;
    	document.location.href='/survey_templates/iemac.asp';
     }
    else{
    	isMacIE=false;
    }
}

function showHideSlider(){
	// UNDERLYING SELECT IS ALWAYS DISABLED AS CLICK ON SLIDER ENABLES IT
	// REDOSLIDERHANDLE REINSTATES MOUSEOVER/OUT EVENTS
	// ### DC 28 JUNE 2011 08:21:44	 CHECK FOR : AND THEN ^ AS ID SEPARATOR FOR SLIDER N/A CHECKBOX
	id=this.id;
	if(id.search(':')>-1){
		id=id.split(':')[1];
	}
	else{
		id=id.split('^')[1];
	}
	//MARK SLIDER AS UNSNANSWERED
	jslidersChecked[id]=0;
	
	bool=this.checked;
	var cs=false;
	idArray=id.split('_');
	target=document.getElementById(id); // document.getElementById(idArray[0]+'_'+idArray[1]+'_'+idArray[2]+'_'+idArray[3]);
	switch (bool){
		case true:
			var row=idArray[4]*1+10;
			answerArray=target.value.split(',');
			for (var i=0;i<answerArray.length;i++){
				if(answerArray[i].length>0 && answerArray[i].split('_')[0]==row){
					sliderholdvalue[id]=answerArray[i];
					answerArray[i]='';
				}
			}
			target.value=answerArray.join(',').replace(',,',',');
			document.getElementById('fd-slider-handle-'+id).style.backgroundImage='url(/images/pad1x1.gif)';
			document.getElementById(id).options[document.getElementById(id).selectedIndex].selected = false;
			document.getElementById(id).disabled=true;
			redosliderhandle(id);
			break;
		case false:
			document.getElementById('fd-slider-handle-'+id).style.background='transparent url(/survey_templates/slider/sliderhollow.gif) no-repeat 0px 0px';
			document.getElementById(id).disabled=true;
			target.value+=sliderholdvalue[id]+','
			redosliderhandle(id);
			break;
	}
	eval('doAgain_'+id+'(\''+id+'\')');
}

function redosliderhandle(insliderID){
	//REINSTATES MOUOSE OVER EVENTS FOR SLIDER HANDLE
	addEvent(document.getElementById('fd-slider-handle-'+insliderID),'mouseover',sliderMouseOver);
	addEvent(document.getElementById('fd-slider-handle-'+insliderID),'mouseout',sliderMouseOut);
}

function sliderMouseOver(){
	this.style.background='transparent url(/survey_templates/slider/sliderred.gif) no-repeat 0px 0px';
}

function sliderMouseOut(){
	var selector=document.getElementById(this.id.replace('fd-slider-handle-',''));
	if(selector.disabled==true){
		//ONLY REVERT TO HOLLOW IS UNDERLYING SELECT IS DISABLED
		this.style.background='transparent url(/survey_templates/slider/sliderhollow.gif) no-repeat 0px 0px';
		//MARK SLIDER AS UNSNASWERED
		jslidersChecked[selector.id]=0;
	}
}

function getRandomIntUnder(incount){
	return Math.floor(Math.random()*incount);
}

function setRandomAnswer(){
	// GETS NUMBER OF RADIO BUTTONS AND THEN RANDOMLY SELECTS ONE
	var args=setRandomAnswer.arguments;
	if(args.length==0){
		return;
	}
	// LOOP THROUGH NUMBERS PASSED TO FUNCTION
	for(var a=0;a<args.length;a++){
		// INQ IS QUESTIONID OF A $$ QUESTION EG 123456
			inq=args[a];
		// OPTIONCOUNT=HOW MANY OPTIONS AVAILABLE IN CONTROL QUESTION
			var optionCount=document.getElementsByName('q_'+inq+'_x_x_x').length;

		// GET RANDOM OPTION TO SELECT
			var ret=getRandomIntUnder(optionCount);

		// CHECK RANDOM OPTION IN CONTROL QUESTION
			document.getElementById('q_'+inq+'_x_'+ret+'_x').checked=true;
		// HIDE CONTROL QUESTION
			document.getElementById('div_q_'+inq).style.display='none';
	}
}

function disableAllSliders(){
	if(jdefault){
		for(slider in jdefault){
			if(isNaN(jdefault[slider])==true){
			}
		}
	}
}

 function redrawSliders(){
 	if(hasSliders==true){
 		fdSliderController.redrawAll();
 	}
 }
 
 function checkwordcount(){
	var source,sourceID,qID,wc,maxwc,countbox,words;
	source=this;
	sourceID=source.id;
	qID=sourceID.split('_')[1];
	countbox=document.getElementById(sourceID.replace('q','t'));
	words=source.value;
	wordarray=words.split(/[\s]+/);
	wc=wordarray.length;
	if (wordarray[wc-1].length==0){
		wc=wc-1;
	}
	if(jmaxcheckboxed[qID]){
		maxwc=jmaxcheckboxed[qID];
		if (wc>maxwc){
			source.readOnly=true;
			alert(maxwc + ' words already entered');
			source.value=words.split(/[\s]+/).slice(0,(maxwc)).join(' ');
			source.readOnly=false;
			if(countbox){
				markError(source,true)
				markError(countbox,true);
			}
			countbox.innerHTML=maxwc + '/'+maxwc;
		}
		else{
			markError(source,false)
			markError(countbox,false);
			countbox.innerHTML=wc + '/'+maxwc;
		}
	}
	else{
		countbox.innerHTML=wc + '/'+maxwc;
	}
}
 
 function getlabel(incontrol){
 	//USED FOR PIPING ANSWER
 	var ret='';
 	switch(incontrol.type){
 		case 'radio':
 		case 'checkbox':
			inputElem=incontrol;
			var container=document.getElementById('div_q_'+incontrol.id.split('_')[1]);
			var labels=container.getElementsByTagName("label");
			for( i=0; i<labels.length;i++ ){
				if(labels[i].htmlFor==inputElem.id){
					ret=labels[i].innerHTML;
				}
			}
 			break;
 		case 'select-one':
 			ret=incontrol[incontrol.selectedIndex].text;
 			break;
 		case 'text':
 		case 'textarea':
 			ret=incontrol.value;
 			break;
 	}
 	if(ret.length>0){
 		re=/'/gi;
 		ret=ret.replace(re,"\'");
 		// ### DC 12 October 2011 07:18:23 REMOVE LEADING/TRAINING SPACES
 		ret=jtrim(ret);
 	}
 	return ret;
 }
 
 function jtrim(instring){
 		return instring.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
 
 function toggleImageCheckbox(){
 	var source=this;
 	var target=document.getElementById(source.id.replace('i_','q_'));
 	if(target.checked==true){
 		target.checked=false;
 		removeClass(source,'imageSelected');
 	}
 	else{
 		target.checked=true;
		if(maxcheckbox2(target)==true){
	 		//ONLY ADD BORDER IF MAXCHECKBOX RETURNS TRUE
	 		addClass(source,'imageSelected');
		}
	}
 }
 
 function setImageRadio(){
  var source=this;
 	var target=document.getElementById(source.id.replace('i_','q_'));
  var group=document.getElementsByName(target.name);
  for(i=0;i<group.length;i++){
  	im=document.getElementById(group[i].id.replace('q','i'));
  	removeClass(im,'imageSelected');
  }
 	target.checked=true;
	addClass(source,'imageSelected');
 }
 
 function syncImageRadio(){
 	syncImageRadio2(this);
 }
 
function syncImageRadio2(incontrol){
 	var source=incontrol,group,target,targetCount;
 	controlType=source.id.slice(0,1);
 	switch(controlType){
 		case 'q':
 			//CLEAR ALL IMAGE BORDERS
		  var group=document.getElementsByName(source.name);
 			for(c=0;c<group.length;c++){
 				target=document.getElementById(group[c].id.replace('q','i'));
 		  	removeClass(target,'imageSelected');
 			}
 			//SET THIS IMAGE BORDER
			target=document.getElementById(source.id.replace('q','i'));
			addClass(target,'imageSelected');
			break;
 		case 'i':
		  t=document.getElementById(source.id.replace('i','q'));
		  var group=document.getElementsByName(t.name);
 			for(c=0;c<group.length;c++){
 				target=document.getElementById(group[c].id.replace('q','i'));
 		  	removeClass(target,'imageSelected');
 			}
 			//CHECK RADIO BUTTON
			target=document.getElementById(source.id.replace('i','q'));
			target.checked=true;
 			//SET THIS IMAGE BORDER
			addClass(source,'imageSelected');
			doDAOradio2(t);
			break;
 	}
} 

 function syncImageCheckbox(){
 	syncImageCheckbox2(this);
 }
 
 function syncImageCheckbox2(incontrol){
 	var source=incontrol,target
 	controlType=source.id.slice(0,1);
 	switch(controlType){
 		case 'q':
			target=document.getElementById(source.id.replace('q','i'));
			if(source.checked==true){
				addClass(target,'imageSelected');
			}
			else{
				removeClass(target,'imageSelected');
			}
			break;
		case 'i':
			target=document.getElementById(source.id.replace('i','q'));
			if(target.checked==true){
				removeClass(source,'imageSelected');
				target.checked=false;
			}
			else{
				target.checked=true;
				if(maxcheckbox2(target)!=false){
			 		//ONLY ADD BORDER IF MAXCHECKBOX DOES NOT RETURN FALSE (MAY RETURN UNDEFINED)
			 		addClass(source,'imageSelected');
				}
			}
			doDAOcheckbox2(target);
			break;
 		}
 }
 
 function checkImageBorder(){
 	checkImageBorder2(this);
 }
 
 function checkImageBorder2(incontrol){
 	var im=document.getElementById(incontrol.id.replace('q','i'));
 	if(im.checked==true){
		addClass(im,'imageSelected');
 	}
 	else{
		removeClass(im,'imageSelected');
 	}
 }
 
 function makeQnames(){
 	for(var p in pageqs){
 		onePageArray=pageqs[p];
 		for(q=0;q<onePageArray.length;q++){
 			qID=onePageArray[q].split('_')[1];
 			qnames[qID]=onePageArray[q]; //.split('_').slice(0,5).join('_');
 			//console.log(qID + '=' + qnames[qID]);
 		}
 	}
 }
		
function conditionisMet(qshowhideifArray){
	//RETURNS SHOW OR HIDE BASED ON CONDITION ARRAYS PASSED IN
	//EG Array('show','or','any,211024,1,2','all,211053,1,2')
	var isMetAll=new Array();
	var isMet=new Array();
	var nothide='show';
	var notshow='hide';
	var op, logic,internlallogic,incexc,result;
	var isRandomizer=false;
	//WHETHER TO SHOW
		showhide=qshowhideifArray[0];
		
	// WHETHER ALL CONTROL QUESTIONS SATISFIED OR ANY CONTROL QUESTIONS
		logic=qshowhideifArray[1];
		switch(logic){
			case 'or':
				op=' || ';
				break;
			case 'and':
				op=' && ';
				break;
		}
	//LOOP THROUGH DIFFERENT CONDITIONS
	for (c=2;c<qshowhideifArray.length;c++){
		isMet=[];
		// GET QUESTIONS CONTROLLING THIS TARGET
		condArray=qshowhideifArray[c].split(',');
		internallogic=condArray[0];
		//SET LOGIC OPERATOR BETWEEN QUESTIONS AND WHETHER CONDITION IS FOR ANSWERED OR NOT ANSWERED
		switch(internallogic){
			case 'any':
				internalop=' || ';
				incexc='inc';
				break;
			case 'all':
				internalop=' && ';
				incexc='inc';
				break;
			case 'notany':
				internalop=' || ';
				incexc='exc';
				break;
			case 'notall':
				internalop=' && ';
				incexc='exc';
				break;
			default:
				internalop=' || ';
				incexc='inc';
				break;
		}
		qanswer=condArray[1];
		for(var ca=2;ca<condArray.length;ca++){
			// FOR EACH QUESTION CHECK ANSWERS
			tc=qnames[qanswer];
			tcArray=tc.split('_');
			tcType=tcArray[5];
			switch(tcType){
				case 'r':
				case 'c':
					//ID OF FORM CONTROL TO TEST
					if(condArray[ca].search('_')==-1){
						//NOT MATRIX
						test=tcArray[0]+'_'+tcArray[1]+'_'+tcArray[2]+'_'+condArray[ca]+'_'+tcArray[4];
					}
					else{
						// ### DC 30 JUNE 2011 15:38:24 NEEDED SINGLE CHOICE RANDOMISER ADDING AND ALSO LOWERCASING TO HANDLE COMPULSORY QUESTIONS
						if(tcArray[2].toLowerCase()!='rr' && tcArray[2].toLowerCase()!='r'){
							//NOT RANDOMISER PSEUDO MATRIX
							test=tcArray[0]+'_'+tcArray[1]+'_'+tcArray[2]+'_'+(condArray[ca].split('_')[1]) +'_'+(condArray[ca].split('_')[0]-10);
						}
						else{
							//IS RANDOMISER QUESTION (SINGLE OR MULTIPLE CHOICE)
							isRandomizer=true;
							//test=tcArray[0]+'_'+tcArray[1]+'_'+tcArray[2]+'_'+(condArray[ca].split('_')[0]-10)+'_x'; //+tcArray[4];
							test=tcArray[0]+'_'+tcArray[1]+'_'+tcArray[2]+'_'+(condArray[ca].split('_')[1])+'_x'; //+tcArray[4];
						}
					}
					
					test2=document.getElementById(test);
					//console.log(isRandomizer+' checkValue='+condArray[ca] + ' control checked='+test2.checked+' result='+(test2.checked==true && test2.value==condArray[ca]));
					// ### DC 01 July 2011 08:13:51 FIXED BROKEN CONDITION CHECKING ON RANDOMISER
					switch(incexc){
						case 'inc':
							if(isRandomizer==false){
								isMet[ca-2]=(test2.checked==true);
							}
							else{
								isMet[ca-2]=(test2.checked==true && test2.value==condArray[ca]);
							}
							break;
						case 'exc':
							if(isRandomizer==false){
								isMet[ca-2]=(test2.checked==false);
							}
							else{
								isMet[ca-2]=(test2.checked==false || test2.value!=cndArray[ca]);
							}
							break;
					}
					break;
				case 'd':
					//ID OF SELECT TO TEST
					if(condArray[ca].search('_')==-1){
						//NOT MATRIX
						test=tcArray[0]+'_' + tcArray[1]+'_'+tcArray[2]+'_'+tcArray[3] +'_'+tcArray[4];
						// ### DC 17 February 2012 19:28:20 [CL79] DON'T CONVERT MATCH VALUE TO NUMBER AS SELECT VALUES ARE ALWAYS STRINGS					
						matchValue=condArray[ca];
					}
					else{
						test=tcArray[0]+'_'+tcArray[1]+'_'+tcArray[2]+'_'+ tcArray[3] +'_'+(condArray[ca].split('_')[0]-10);
						matchValue=condArray[ca].split('_')[1];
					}
					test2=document.getElementById(test);
					// ### DC 17 February 2012 19:28:54 [CL79] DO EXACT MATCH (WHICH INCLUDES TYPE) SO NON-EANSWERED SELECT DOESN'T MATCH ANYTHING
					switch(incexc){
						case 'inc':
							isMet[ca-2]=(test2.options[test2.selectedIndex].value===matchValue);					
							break;
						case 'exc':
							isMet[ca-2]=(test2.options[test2.selectedIndex].value!==matchValue);					
							break;
					}
					break;
				default:
					isMet[ca-2]=tcType;
					break;
			}
		}
	isMetAll[c-2]=eval(isMet.join(internalop));
	}//FOR EACH CONDITION
	
	result=eval(isMetAll.join(op));
	if(result==false){
		action=eval('not'+showhide)	
	} 
	else{
		action=showhide;
	}
	return action;
}

function doQuestionConditionsimage(){
  var source=this;
 	var target=document.getElementById(source.id.replace('i_','q_'));
	doQuestionConditions2(target,false);
}

function doQuestionConditions1(){
	doQuestionConditions2(this,false);
}

		
function doQuestionConditions2(control,snr){
	//SNR=FALSE IF CALLED FROM USER INTERACTION/EVENT, TRUE IF CALLED FROM SNR REFILLQUESTIONS
	var targetQ,controlID,targetType;
	controlID=control.id.split('_')[1];
	if(qcontrols[controlID]){
		// THIS QUESTION CONTROLS OTHERS
		qcontrolsArray=qcontrols[controlID];
		for (var target=1;target<qcontrolsArray.length;target++){
			// GO THROUGH TARGET QUESTIONS FOR THIS QUESTION
			ret=conditionisMet(qshowhideif[qcontrolsArray[target]]);
			targetQ=qcontrolsArray[target];
			switch(ret){
				case 'show':
					//SHOW TARGET
					document.getElementById('div_q_'+targetQ).style.display='block';
					// ### DC 05 May 2011 07:10:57 EXIT IF TARGET IS NOT ACTUAL QUESTION WITH ANSWERS
					// ### DC 04 July 2011 06:47:59 AMENDED AS SHOULD JUST IGNORE OPS - WAS EXITING WHOLE CONDITION TREE AT THIS POINT WHEN
					//IT ENCOUNTERED A NON-QUESTION TYPE
					if(qnames[targetQ]){
						targetType=qnames[targetQ].split('_')[5];
						if(targetType=='k'){
							//alert('ranklist'+targetQ);
							rankinggroups['ranklist'+targetQ].refresh();
						}
						if(snr==false){
							reinstateDefault(targetQ);
						}
					}
					break;
				case 'hide':
					//HIDE TARGET
					document.getElementById('div_q_'+targetQ).style.display='none';
					if(snr==false){
						// ### DC 05 May 2011 07:10:57 ONLY CALL IF TARGET IS ACTUAL QUESTION WITH ANSWERS AND NOT TEXT ONLY ETC
						if(qnames[targetQ]){
							unanswerWholeQuestion(targetQ);
						}
					}
					break;
			}
			//r.innerHTML+=qcontrolsArray[t] +'='+ret + '<br />';
		} //FOR EACH TARGET
	} //IF
}

function hasNOTA(inID){
	var counter,res=false;
	for(counter=0;counter<jNOTA.length;counter++){
		if(jNOTA[counter].search(Math.abs(inID))>0){
			res=true;
		}
	}
	return res;
}

function reinstateDefault(inID){
	var thisdefault,qType,qName,idArray,rowcount,r;
	if (document.getElementById('div_q_'+inID).className=='textonly'){
		return;
	}
	if(qnames[Math.abs(inID)]==null){
		return;
	}
	qType=qnames[Math.abs(inID)].split('_')[5];
	qName=qname2formname(qnames[Math.abs(inID)]);
	if(jdefault[inID]){
		thisdefault=jdefault[inID];
	}
	else{
		//AS NO DEFAULT NO NEED TO DO ANYTHING
		return;
	}
	switch(isMatrix(inID)){
		case false:
			switch(qType){
				case 'r':
				case 'c':
					document.getElementsByName(qName)[thisdefault].checked=true;
					break;
				case 'd':
					document.getElementById(qName).selectedIndex=thisdefault;
					break
			}
			break;
		case true:
			idArray=qName.split('_');
			rowcount=jsmatrix[inID];
			switch(qType){
				case 'd': //DROP DOWN
					for(r-0;r<rowcount;r++){
						controlID='q_'+inID+'_'+idArray[2]+'_x_'+r;
						document.getElementById(controlID).selectedIndex=thisdefault;
						document.getElementById(controlID).disabled=false;
					}
					break;
				case 'r': //RADIO BUTTON OR CHECKBOX
				case 'c':
					for(r-0;r<rowcount;r++){
						controlID='q_'+inID+'_'+idArray[2]+'_x_'+r;
						document.getElementsByName(controlID)[thisdefault].checked=true;
					}
					break;
				case 'nn':
				case 't':
					//DO NOTHING AS SET TO DEFAULT WHEN UNANSWERED
					break;
			}
			if(hasSliders==true){
				redrawSliders();
			}
	}
}

function unanswerPage(pageID){
	var p,pqArray,qID;
	pqArray=pageqs[pageID];
	for(p=0;p<pqArray.length;p++){
		if(pqArray.length>0){
			qID=pqArray[p].split('_')[1];
			unanswerWholeQuestion(qID);
		}
	}
}

function unanswerWholeQuestion(inID){
	var optionCount,rowCount,oc,rc,qName;
	if(!document.getElementById('div_q_'+inID)){
		return;
	}
	if (document.getElementById('div_q_'+inID).className=='textonly'){
		return;
	}
	qName=qname2formname(qnames[Math.abs(inID)]);
	if(isMatrix[inID]==true){
		rowCount=jsmatrix[inID];
		for(rc=0;rc<rowCount;rc++){
			unanswer(inID,rc);
		}
	}
	else{
		optionArray=document.getElementsByName(qName);
		for(oc=0;oc<optionArray.length;oc++){
			unanswer(inID,oc);
		}
	}
}

function unanswer(inID,invalue){
	//UNANSWERS ON OPTION ON SINGLE/MULTIPLE CHOICE
	//UNANSWERS ROW ON MATRIX
	//NEEDS COMPLETING FOR RANKING nn
	var qName,qType,idArray,controlID,controlsArray,c,thisID;
	qType=qnames[Math.abs(inID)].split('_')[5];
	qName=qname2formname(qnames[Math.abs(inID)]);
	//alert('$$ unanswer=_'+inID + '\nvalue='+invalue + '\nqnames='+qnames[Math.abs(inID)] + '\nisMatrix='+isMatrix(inID)+'\nqType='+qType);
	idArray=qName.split('_');
	if(jdefault[inID]){
		thisdefault=jdefault[inID];
	}
	else{
		if(qType=='d'){
			thisdefault=0;
		}
		else{
			thisdefault=null;
		}
	}
	switch (isMatrix(inID)){
		case false:
			switch(qType){
				case 'd': //DROP DOWN
					document.getElementById(qName).selectedIndex=thisdefault;
					break;
				case 'r': //RADIO BUTTON OR CHECKBOX
				case 'c':
					controlID='q_'+idArray[1]+'_'+idArray[2]+'_'+invalue+'_'+idArray[4];
					if(document.getElementById(controlID)){
						document.getElementById(controlID).checked=false;
					}
					break;
				case 't':
					document.getElementById(qName).value=placeholdertext;
					break;
				case 'n':
					document.getElementById(qName).value='';
					break;
			}
			break;
		case true:
			controlID='q_'+idArray[1]+'_'+idArray[2]+'_x_'+invalue;
			switch(qType){
				case 'd': //DROP DOWN
					if(isSlider(idArray[1])==true){
						document.getElementById(controlID).selectedIndex=thisdefault;
						document.getElementById(controlID).options[document.getElementById(controlID).selectedIndex].selected = false;
						document.getElementById('fd-slider-handle-'+controlID).style.background='transparent url(/survey_templates/slider/sliderhollow.gif) no-repeat 0px 0px';
						//ONLY DISABLE IF IS SLIDER
						document.getElementById(controlID).disabled=true;
						//MARK SLIDER AS UNSNASWERED
						jslidersChecked[controlID]=0;

						redrawSliders();
					}
					else{
						document.getElementById(controlID).selectedIndex=thisdefault;
					}
					break;
				case 'r': //RADIO BUTTON OR CHECKBOX
				case 'c':
					controlsArray=document.getElementsByName(controlID);
					for(c=0;c<controlsArray.length;c++){
						controlsArray[c].checked=false;
					}
					break;
				case 't':
					document.getElementById(controlID).value=placeholdertext;
					break;
				case 'nn':
					//alert('$$ unanswer controlID='+controlID);
					document.getElementById(controlID.replace('q_','x_')).value=jdefault[inID];
					var cstarget=document.getElementById('q_'+idArray[1]+'_'+idArray[2]+'_x_x');
					incontrol=document.getElementById('x_'+inID+'_nn_x_'+invalue);
					//normalise2(incontrol,cstarget,jcondsum[inID],jsmatrix[inID])
					break;
				default:
				case 'n':
					document.getElementById(controlID).value='';
					break;
					//alert('$$ unanswer '+ idArray[1] + '='+qType);
			}
			if(document.getElementById('x_'+idArray[1]+'_'+idArray[2]+'_x_'+invalue)){
				if(document.getElementById('fd-slider-handle-'+'x_'+idArray[1]+'_'+idArray[2]+'_x_'+invalue)){
					document.getElementById('fd-slider-handle-'+'x_'+idArray[1]+'_'+idArray[2]+'_x_'+invalue).style.background='transparent url(/survey_templates/slider/sliderhollow.gif) no-repeat 0px 0px';
					//SET SLIDER AS UNANSWERED
					jslidersChecked['x_'+idArray[1]+'_'+idArray[2]+'_x_'+invalue]=0;
				}
				//alert('$$$ unsnaswer XQ '+	'fd-slider-handle-'+'x_'+idArray[1]+'_'+idArray[2]+'_x_'+invalue + '='+qType);
			}
			break;
		}
}

function checkIsNumber(){
	var target=this;
	var errSpan=document.getElementById('q_'+target.id.split('_')[1]+'v');
	var errMessage=jlexicon['invalidNumber'];
	var validation=target.id.split('_')[2]
	if (isNaN(target.value)==true && target.value!=placeholdertext){
		markError(target,true);
		if(validation=='nn'){
			target.value='0';
		}
		else{
			target.value=''; //placeholdertext;
		}
		target.focus();
	}
	else{
		markError(target,false);
	}
}

function markError(incontrol,bool){
	//var errorBackgroundColor='#ffc1c1';
		var errorBackgroundColor='#f5ccd3'; //pink
		if(!incontrol){
			return;	
		}
	if(errorcolor.length==0){
		errorBackgroundColor='#f5ccd3';
	}
	else{
		errorBackgroundColor=errorcolor;
	}

	var white='#ffffff';
	var transparent='transparent';
	var span,spanID,row,inID;
	var inID=incontrol.id;	
		if(inID.search('_')>-1){
			spanID='q_'+inID.split('_')[1]+'v';
			row=incontrol.id.split('_')[3];
		}
		else{
			spanID='q_'+inID.replace('q','')+'v';
		}
		if(spanID.search('ranklist')>-1){
			//SPECIAL CASE FOR COMPULSORY RANKING QUESTION
			spanID=spanID.replace('ranklist','');	
		}
		span=document.getElementById(spanID);
	switch (bool){
		case true:
			//addClass(incontrol,'errormarker');
			incontrol.style.backgroundColor=errorBackgroundColor;
			if(span){
				span.className=span.className.replace('Small','Large');
				blinkForTime(spanID);
			}
			break;
		case false:
			switch(incontrol.type){
				case 'text':
					//removeClass(incontrol,'errormarker');	
					incontrol.style.backgroundColor=white;
					break;
				default:
					//removeClass(incontrol,'errormarker');	
					if(incontrol.id.slice(0,4)=='rank'){
						incontrol.style.backgroundColor='#ffffff';
					}
					else{
						incontrol.style.backgroundColor=transparent;
					}
					break;
			}
			if(span){
				span.className=span.className.replace('Large','Small');
			}
			/*
			//span.style.color='#ff0000';
			//span.style.fontSize='60%';
			if(jsmatrix[inID.split('_')[1]] && incontrol.type!='text'){
				if(isMatrixAnswered(inID.split('_')[1])==false){
					//span.style.textDecoration='underline';
					//span.style.fontSize='90%';
				}
			}
			*/
			break;
	}
}

var vArray=[];
var vColor=[];
var flashColor = 'transparent';

function blinkForTime(id) {
  var oneID=id;
  if(vArray[oneID]!=null){
  	return;	
  }
  vColor[oneID]=document.getElementById(oneID).style.color;
	vArray[oneID] = setInterval("toggleColor('"+oneID+"')",400);
  setTimeout("stopBlinking('"+oneID+"')",4000);
}

function stopBlinking(id) {
  var oneID=id;
  clearInterval(vArray[oneID]);
  vArray[oneID]=null;
  document.getElementById(oneID).style.color = vColor[oneID];
}

function toggleColor(id) {
  var oneID=id;
  var e = document.getElementById(oneID);
  var currentColor = e.style.color;
  if(currentColor == vColor[oneID]){
  	e.style.color = flashColor;
  }
  else{
  	e.style.color = vColor[oneID];
 }
}

function surveyisPoll(){
	if(document.getElementById('surveypollstatus')){
		return (document.getElementById('surveypollstatus').value=='1');
	}
}

function checkPollCompleted(){
	var isInIFrame = (window.location != window.parent.location) ? true : false;
	if(isInIFrame==false){return false;}
	var redirect=document.getElementById('redirect').value;
	var surveyfolder=document.getElementById('surveyfolder').value;
	var isCookied=(get_cookie(surveyfolder).length>0);
	if(isCookied==true){
		killobu();
		document.location.href=redirect;	
	}
}

function fixFormLabels(){
	if (navigator.userAgent.match(/iPhone/i) ||  navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/iPad/i)){
		// ### DC 01 May 2011 10:19:29 FIX LABEL CLICK IN IPAD/IPOD/IPHONE
		iPadLabels.fix();
		return;
	}
	// ### DC 05 July 2011 17:51:00	REMOVED
	return;
	// LABEL CLICKING IN SAFARI
	var labels;
	if(navigator.userAgent.indexOf("Safari")> 0){
		labels = document.getElementsByTagName("label");
		for(i=0; i<labels.length; i++){
			labels[i].onclick = function(){
				var target = document.getElementById(this.getAttribute('for'));
				// CHECKBOXES OR RADIO BUTTON LABELS
				switch(target.type){
					case 'checkbox':
						target.checked = (target.checked==false)?true:false;
						break;
					case 'radio':
						target.click();
						break;
				}
			}
		}
	}
}


var iPadLabels = function () {
	function fix() {
		var labels = document.getElementsByTagName('label'),target_id,el;
		for (var i = 0; labels[i]; i++) {
			if (labels[i].getAttribute('for')) {
				labels[i].onclick = labelClick;
			}
		}
	};
	function labelClick() {
		el = document.getElementById(this.getAttribute('for'));
		if (['radio', 'checkbox'].indexOf(el.getAttribute('type')) != -1) {
			el.setAttribute('selected', !el.getAttribute('selected'));
		} else {
		el.focus();
		}
		};
return {fix: fix}}();


// FUNCTIONS TO REDIRECT TO TOP IF IN IFRAME AND SPS=2
function redirectToTop(inURL){
	var ret=setTimeout("doRedirectToTop('"+inURL+"')",3000);
}

function doRedirectToTop(inURL){
	top.document.location.href=inURL;
}


