// Copyright (c) 2008-2010 DSC Services Inc.  All rights reserved. 
// Globals
var gcstrOTHER = "OTHER"		// suffix given to all Other Fields
var gcstrEXCLUSIVE = "EXCLUSIVE"	// Prefix give to all Exclusive fields
var gcstrSURVEY = "frmSurvey"		// Name of the survey form
var gcstrSHADE = "selected"		// CSS class name for selected elements
var gcstrLASTCLICK = "LASTCLICK"	// Hidden variable name for time last field was clicked
// Methods
function initPageForTime() {
	var form=document.getElementById(gcstrSURVEY)
	var LastClickTime = form.elements.namedItem(gcstrLASTCLICK)
	var StartDate = new Date()
	var StartTime = StartDate.getTime()
	LastClickTime.value=StartTime			
}
function ShadeRadio(field, strClass){		
	var strName=field.id
	var form=document.getElementById(gcstrSURVEY)

	document.getElementById(strName).className=gcstrSHADE
	form.elements.namedItem(strName).checked=true

	ShadeCell(field, strClass)
}

function ShadeRadioAuto(field, strClass){
	var strName=field.id
	var form=document.getElementById(gcstrSURVEY)

	document.getElementById(strName).className=gcstrSHADE
	form.elements.namedItem(strName).checked=true

	ShadeCell(field, strClass)

	doSubmit(2)
}

function ShadeRadioOther(field, strClass, size, len){
	var strName=field.id
	var strField=GetFieldName(strName)
	var intField=GetFieldID(strName)	

	if (isNaN(size)) {size=25}
	if (isNaN(len)) {len=100}

	var strHTML=""	
	var elems=document.getElementsByTagName("DIV")
	var elemCount=elems.length;
	for(i=0; i<elemCount ; i++) {
		var strDivName=elems[i].id		
		var strOther=GetFieldID(strDivName)
		if (strOther==gcstrOTHER) {
			var OtherDiv=document.getElementById(strDivName)
			OtherDiv.innerHTML=strHTML 
		}
	}
	ShadeCell(field, strClass)
	if (IsOtherField(intField)==true){
		var strOtherFieldID=strField + "_" + intField + "_" + gcstrOTHER
		var strDivField="DIV" + strOtherFieldID
		var OtherDiv=document.getElementById(strDivField)

		strHTML=getOtherBoxHTML(size, len, strOtherFieldID)
		OtherDiv.innerHTML=strHTML
		var fldOther=document.getElementById(strOtherFieldID)
		select(fldOther)
	}
}

function ShadeCheck(field, strClass){
	var strName=field.id
	try {
		WriteTimeCheck(strName)
	}
	catch (e) {
	}			
	var form=document.getElementById(gcstrSURVEY)
	var box=form.elements.namedItem(strName)
	
	if (box.checked==true) {
		box.checked=false
		document.getElementById(strName).className=strClass
	} else {
		box.checked=true
		document.getElementById(strName).className=gcstrSHADE
	}
}

function ShadeCheckNone(field, strClass, TopN){
	var strName=field.id
	try {
		WriteTimeCheck(strName)
	}
	catch (e) {
	}					
	var strField=GetFieldName(strName)
	var intField=GetFieldID(strName)
	var blnExclusive=IsExclusiveField(intField)
	
	var intMax=(GetMax(strField))
	var form=document.getElementById(gcstrSURVEY)
	if (isNaN(TopN)) {
		var blnTop=false
		} else {
		var blnTop=true
		}
	var box=form.elements.namedItem(strName)
	if (box.checked==true) {
		box.checked=false
		document.getElementById(strName).className=strClass
	} else {
		box.checked=true
		document.getElementById(strName).className=gcstrSHADE
		if (blnTop==true && dscCheckCount(strField, intMax, TopN)==true) {
			box.checked=false
			document.getElementById(strName).className=strClass
		} else {
			if (blnExclusive==true){
				for (var j=1; j<= intMax; j++) {
					var strFieldX=strField  + "_" + j
					try {
							box=form.elements.namedItem(strFieldX)
							if ((box.checked==true) && (j!=intField)) {
								box.checked=false
								document.getElementById(strFieldX).className=strClass
							}
						}
						catch (e) {
						}			
					}	      			
			} else {
				ClearExclusive(strField, intMax, strClass)
			}
		}
	}
}

function ShadeCheckOther(field, strClass, TopN, size, len){
	var strName=field.id
	try {
		WriteTimeCheck(strName)
	}
	catch (e) {
	}			
	var strField=GetFieldName(strName)
	var intField=GetFieldID(strName)
	var blnOtherField=IsOtherField(intField)
	var strHTML=""

	if (isNaN(size)) {size=25}
	if (isNaN(len)) {len=100}
	if (isNaN(TopN)) {
		var blnTop=false
		} else {
		var blnTop=true
		var intMax=(GetMax(strField))
	}
	if (blnOtherField==true){
		var strOtherFieldID=strName + "_" + gcstrOTHER
		var strDivField="DIV" + strOtherFieldID
		var OtherDiv=document.getElementById(strDivField)
	}

	var form=document.getElementById(gcstrSURVEY)
	var box=form.elements.namedItem(strName)

	if (box.checked==true) {
		box.checked=false
		document.getElementById(strName).className=strClass
		if (blnOtherField==true){
			strHTML=""
			OtherDiv.innerHTML=strHTML		
		}
	} else {
		box.checked=true
		document.getElementById(strName).className=gcstrSHADE
		if (blnTop==true && dscCheckCount(strField, intMax, TopN)==true) {
			box.checked=false
			document.getElementById(strName).className=strClass
		} else {
			if (blnOtherField==true){
				strHTML=getOtherBoxHTML(size, len, strOtherFieldID)
				OtherDiv.innerHTML=strHTML
				var fldOther=document.getElementById(strOtherFieldID)
				select(fldOther)
			}
		}
	}
}

function ShadeCheckNoneOther(field, strClass, TopN, size, len){
	var strName=field.id
	try {
		WriteTimeCheck(strName)
	}
	catch (e) {
	}			
	var strField=GetFieldName(strName)
	var intField=GetFieldID(strName)
	var blnExclusive=IsExclusiveField(intField)
	var intMax=(GetMax(strField))

	if (isNaN(size)) {size=25}
	if (isNaN(len)) {len=100}
	if (isNaN(TopN)) {
		var blnTop=false
		} else {
		var blnTop=true
		var intMax2=(GetMax(strField))
	}
	var strHTML=""

	var blnOtherField=IsOtherField(intField)
	if (blnOtherField==true){
		var strOtherFieldID=strName + "_" + gcstrOTHER
		var strDivField="DIV" + strOtherFieldID
		var OtherDiv=document.getElementById(strDivField)
	}
	var form=document.getElementById(gcstrSURVEY)
	var box=form.elements.namedItem(strName)

	if (box.checked==true) {
		box.checked=false
		document.getElementById(strName).className=strClass
		if (blnOtherField==true){
			strHTML=""
			OtherDiv.innerHTML=strHTML		
		}
	} else {
		box.checked=true
		document.getElementById(strName).className=gcstrSHADE

		if (blnTop==true && dscCheckCount(strField, intMax, TopN)==true) {
			box.checked=false
			document.getElementById(strName).className=strClass
		} else {
			if (blnOtherField==true){
				strHTML=getOtherBoxHTML(size, len, strOtherFieldID)
				OtherDiv.innerHTML=strHTML
				var fldOther=document.getElementById(strOtherFieldID)
				select(fldOther)
			}
			if (blnExclusive==true){
				ClearOtherFields()
				for (var j=1; j<= intMax; j++) {
					var strFieldX=strField  + "_" + j
					try {
				  		box=form.elements.namedItem(strFieldX)
				  		if ((box.checked==true) && (j!=intField)) {
				  			box.checked=false
								document.getElementById(strFieldX).className=strClass
				    	}
						}
						catch (e) {
						}			
		    	}	      			
			} else {
				ClearExclusive(strField, intMax, strClass)
			}
		}
	}
}

// Utility Functions
function makeNewWindow(strLink){
	var newWindow = window.open(strLink,"","HEIGHT=750,WIDTH=1000,RESIZABLE=YES,SCROLLBARS=YES,LEFT=5,TOP=5")
}

function makeNewWindow3(strLink){
	var newWindow = window.open(strLink,"","HEIGHT=350,WIDTH=500,RESIZABLE=YES,SCROLLBARS=YES,LEFT=5,TOP=5")
}

function makeNewWindow2(strLink){
	var newWindow = window.open(strLink,"","HEIGHT=750,WIDTH=1000,RESIZABLE=YES,SCROLLBARS=YES,LEFT=5,TOP=5")
	setTimeout("enablenext1()",20000);
}
function makeNewWindowVideo(strLink){
	var newWindow = window.open(strLink,"","HEIGHT=540,WIDTH=800,RESIZABLE=YES,SCROLLBARS=YES,LEFT=20,TOP=20")
}

function enablenext1() {
	var form=document.getElementById(gcstrSURVEY)
	form.navigation.disabled=false
}

function enablenextvideo() {
	document.forms[0].navigation.disabled=false
}

function select(field) {
 field.focus();
 field.select();
}

function EnforceLength(field, maxlen) {
	var form=document.getElementById("frmSurvey")
	var langID=form.elements.namedItem("LANG").value
	var strMSG=""
	var strMSG2=""
	NoCommentBox(field)
	var input=field.value
	var OtherDiv=document.getElementById("DIV" + field.name)
	var strLen=input.length
	var intLeft=maxlen-strLen
		
	if (intLeft<0) {
	 if (langID==1){strMSG="Please keep your entry to a maximum of " + maxlen + " characters."}
	 else if (langID==2){strMSG="Por favor, mantenga su entrada a un máximo de "+ maxlen +" caracteres."}
	 else if (langID==3){strMSG="Please keep your entry to a maximum of " + maxlen + " characters."}
	 else if (langID==4){strMSG="Bitte halten Sie Ihre Eingabe auf maximal "+ maxlen +"-Zeichen."}
	 else if (langID==5){strMSG="S'il vous plaît gardez votre entrée à un maximum de "+ maxlen +" caractères."}
	 else {strMSG="Please keep your entry to a maximum of " + maxlen + " characters."}
	 alert(strMSG)
	 field.value = input.substring(0,maxlen)
	 input=field.value
	 strLen=input.length
	 intLeft=maxlen-strLen
	 field.focus();
	}
	if (langID==1){strMSG2="characters remaining"}
	else if (langID==2){strMSG2="caracteres restantes"}
	else if (langID==3){strMSG2="characters remaining"}
	else if (langID==4){strMSG2="verbleibende Zeichen"}
	else if (langID==5){strMSG2="caractères restants"}
	else {strMSG2="characters remaining"}
	
	var strMsg=intLeft + " " + strMSG2
	OtherDiv.innerHTML=strMsg
}

function NoCommentBox(field){
	var form=document.getElementById(gcstrSURVEY)
	var strName=field.name
	var strNC = strName.match("NC")
	if (strNC=="NC"){
		var strName=GetFieldName(field.id)
		var fld=form.elements.namedItem(strName)
		var OtherDiv=document.getElementById("DIV" + strName)
		OtherDiv.innerHTML="&nbsp;"
		var box=field
		if (box.checked==true) {
			fld.value=""
		}
	} else {
		var strName=field.name + "_NC"
		try {
			var box=document.getElementById(strName)
			if (box.checked==true) {
				box.checked=false
			}
		}
		catch(e) {
		}
	}
}

function ClearOtherFields(){
	var blnOther=false
	var elems=document.getElementsByTagName("DIV")
	var elemCount=elems.length;
	var strHTML=""
	for(i=0; i<elemCount ; i++) {
		var strName=elems[i].id
		var strField=GetFieldName(strName)
		var strOther=GetFieldID(strName)	
		if (strOther==gcstrOTHER) {
			var OtherDiv=document.getElementById(strName)
			OtherDiv.innerHTML=strHTML
		}
	}
}

function ClearExclusive(strField, intMax, strClass) {
	var form=document.getElementById(gcstrSURVEY)
	for (var x=1; x<=intMax; x++) {
		if (IsExclusiveField(x)==true) {
			var strFieldX=strField  + "_" + x
			box=form.elements.namedItem(strFieldX)
			if ((box.checked==true)) {
				box.checked=false
				document.getElementById(strFieldX).className=strClass
			}
		}
	}
}

function ShadeCell(field, strClass){
	var strName=field.id
	try {
		WriteTime(strName)
	}
	catch (e) {
	}
	var strField=GetFieldName(strName)
	var intField=GetFieldID(strName)	
	var form=document.getElementById(gcstrSURVEY)
	var intMax=(GetMax(strField))
	document.getElementById(strName).className=gcstrSHADE
	form.elements.namedItem(strName).checked=true
	x = 0;
	
	for(i=0; i<=intMax; i++) {
  	var strTD=strField + "_" + x
 		if (x != intField ){ 
			try {
				document.getElementById(strTD).className=strClass
			}
			catch (e) {
			}			
		}
  	x = x + 1
	}
}
	
function SaveOther(field){
	var form=document.getElementById("frmSurvey")
	var langID=form.elements.namedItem("LANG").value
	var strMSG=""
 	var strOtherText=field.value
	var OtherSaveText=document.getElementById(gcstrOTHER)
  if(strOtherText.length>0){
   OtherSaveText.value=strOtherText
  }else {
   if (langID==1){strMSG="Please add a description in the Other box"}
   else if (langID==2){strMSG="Por favor, añadir una descripción en el cuadro de Otros"}
   else if (langID==3){strMSG="Please add a description in the Other box"}
   else if (langID==4){strMSG="Bitte fügen Sie eine Beschreibung in die andere Box"}
   else if (langID==5){strMSG="S'il vous plaît ajoutez une description dans la zone Autres"}
   else {strMSG="Please add a description in the Other box"}
   alert(strMSG)
   select(field)
  }
 }
   
function WriteTime(strName){
	var EndDate = new Date()
	var EndTime = EndDate.getTime()
	var form=document.getElementById(gcstrSURVEY)
	var LastClickTime = form.elements.namedItem(gcstrLASTCLICK)
	var strField="EQTIME_" + GetFieldName(strName)
	var ElapsedTime = form.elements.namedItem(strField)
	var msElapsed=EndTime-LastClickTime.value
	if(ElapsedTime.value!=0) {
		msElapsed = msElapsed + parseInt(ElapsedTime.value,10)
	}
	ElapsedTime.value=msElapsed
	LastClickTime.value = EndTime
}

function WriteTimeCheck(strName){
	var EndDate = new Date()
	var EndTime = EndDate.getTime()
	var form=document.getElementById(gcstrSURVEY)
	var LastClickTime = form.elements.namedItem(gcstrLASTCLICK)
	var strField="EQTIME_" + strName
	var ElapsedTime = form.elements.namedItem(strField)
	var msElapsed=EndTime-LastClickTime.value
	if(ElapsedTime.value!=0) {
		msElapsed = msElapsed + parseInt(ElapsedTime.value,10)
	}
	ElapsedTime.value=msElapsed
	LastClickTime.value = EndTime
}
   
// Functions
function GetFieldName(strName) {
	var	intFound=strName.lastIndexOf("_")
		if (intFound==-1) {var intField=999}
	var strField=strName.substring(0, intFound)
	return strField 
}

function GetFieldID(strName) {
	var	intFound=strName.lastIndexOf("_")
		if (intFound==-1) {var intField=999}
	var intField=strName.substring(intFound + 1, strName.length)
	return intField 
}

function IsExclusiveField(intField) {
	var blnExclusive=false
	var elems=document.getElementsByTagName("INPUT")
	var elemCount=elems.length;
	for(i=0; i<elemCount ; i++) {
		var strID=elems[i].id
		var strField=GetFieldName(strID)
		var intField2=GetFieldID(strID)
		if (strField==gcstrEXCLUSIVE) {
			if (intField==intField2){blnExclusive=true}
		}
	}
	return blnExclusive
}

function IsOtherField(intField) {
	var blnOther=false
	var elems=document.getElementsByTagName("DIV")
	var elemCount=elems.length;
	for(i=0; i<elemCount ; i++) {
		var strName=elems[i].id
		var strField=GetFieldName(strName)
		var strOther=GetFieldID(strName)	
		if (strOther==gcstrOTHER) {
			var strField2=GetFieldName(strField)
			var intField2=GetFieldID(strField)	
			if (intField==intField2){blnOther=true}
		}
	}
	return blnOther
}

function GetMax(strField){
	var elems=document.getElementsByTagName("INPUT")
	var elemCount=elems.length;
	var intMax=0
	for(i=0; i<elemCount ; i++) {
		var strID=elems[i].id
		var strField2=GetFieldName(strID)
		var intField2=GetFieldID(strID)
		if (strField2==strField){
			if (intField2>intMax){
				intMax=parseInt(intField2)
			}
		}
	}
	intMax=(parseInt(intMax))
	return intMax
}

function getOtherBoxHTML(size, len, strOtherFieldID){
	var form=document.getElementById("frmSurvey")
	var langID=form.elements.namedItem("LANG").value
	var strMSG=""
	var OtherSaveText=document.getElementById(gcstrOTHER)
	var strOther=OtherSaveText.value
	if (langID==1){strMSG="&nbsp;Specify&nbsp;"}
	else if (langID==2){strMSG="&nbsp;Especificar&nbsp;"}
	else if (langID==3){strMSG="&nbsp;Specify&nbsp;"}
	else if (langID==4){strMSG="&nbsp;angeben&nbsp;"}
	else if (langID==5){strMSG="&nbsp;précisez&nbsp;"}
	else {strMSG="&nbsp;Specify&nbsp;"}

	var strHTML = strMSG + "<input class=\"OtherBox\" type=\"text\" size=\"" + size + "\" maxlength=\"" + len + "\" name=\"" + strOtherFieldID + "\" id=\"" + strOtherFieldID + "\" value=\"" + strOther + "\" onchange=\"SaveOther(this)\" />"
	return strHTML
}

function dscCheckCount(strField, max, n){
	var form=document.getElementById("frmSurvey")
	var langID=form.elements.namedItem("LANG").value
	var strMSG=""
	var c=0
	var bln=false
	var form=document.getElementById(gcstrSURVEY)

	for (var x = 1; x <= max; x++) {
		var strFieldX = strField  + "_" + x

		try {
			var box=form.elements.namedItem(strFieldX)
			if (box.checked == true) {
				c++
				if (c > n) {
					if (langID==1){strMSG="Please select only your Top " + n + " choices only."}
					else if (langID==2){strMSG="Por favor, seleccione sólo los mejores "+ n +" únicas opciones."}
					else if (langID==3){strMSG="Please select only your Top " + n + " choices only."}
					else if (langID==4){strMSG="Bitte wählen Sie nur Ihre Top "+ n +" Entscheidungen nur."}
					else if (langID==5){strMSG="S'il vous plaît ne sélectionner que votre Top "+ n +" seuls choix."}
					else {strMSG="Please select only your Top " + n + " choices only."}
					alert(strMSG)
					bln=true
				}
			}
		}
		catch (e) {
		}			
	}
	return bln
}

function getOtherID() {
	var intOtherID=0
	var elems=document.getElementsByTagName("DIV")
	var elemCount=elems.length;
	for(i=0; i<elemCount ; i++) {
		var strName=elems[i].id
		var strField=GetFieldName(strName)
		var strOther=GetFieldID(strName)	
		if (strOther==gcstrOTHER) {
			var intOtherID=GetFieldID(strField)
		}
	}
	return intOtherID
}

function ShadeRadioOtherOLD(strName) {
var form=document.getElementById("frmSurvey")
var	intFound = strName.lastIndexOf("_")
	if (intFound == -1) {
		var intField = 999}
var strField = strName.substring(0, intFound)
var intField = strName.substring(intFound + 1, strName.length)

var elems = document.getElementsByTagName("INPUT")
var elemCount = elems.length;
	var strFldOther= strField + "_OTHER"
	var strOther=form.elements[strFldOther].value
	var buttonGroup = document.getElementsByName(strField)
	for(i=0; i<buttonGroup.length; i++) {
		var button = buttonGroup[i]
		if(button.checked==true){
	    	var strQNMBR=button.value
		var intID = getOtherIDOLD(strField)
	    	if(strQNMBR==intID)	// CUSTOM ID ????
				form.elements[strFldOther].value=strOther
	    	else
				form.elements[strFldOther].value=""
		}
	}
	document.getElementById(strName).className="selected"
	form.elements[strName].checked=true
	x = 0
	for(i=0; i<elemCount ; i++) {
		var button = elems[i]
    	if (button.name == strField){
	    	x = button.value
	    	strTD = button.id
    		if (x != intField ){ 
				document.getElementById(strTD).className="input"
			}
		}
	}
}

function getOtherIDOLD() {
	var intOtherID=0
	var elems = document.getElementsByTagName("INPUT")
	var elemCount = elems.length;
	for(i=0; i<elemCount ; i++) {
		var strName = elems[i].id
		var	intFound = strName.lastIndexOf("_")
			if (intFound == -1) {var intField = 999}
		var strField = strName.substring(0, intFound)
		var intField = strName.substring(intFound + 1, strName.length)
		if (intField=="OTHER") {
			var	intFound2 = strField.lastIndexOf("_")
				if (intFound2 == -1) {var intField2 = 999}
			var strField2 = strField.substring(0, intFound2)
			var intField2 = strField.substring(intFound2 + 1, strField.length)
			var intOtherID=intField2
		}
	}
	return intOtherID
}

function dscOtherText(strName) {
	var form=document.getElementById("frmSurvey")
	var	intFound = strName.lastIndexOf("_")
		if (intFound == -1) {var intField = 999}
	var strField = strName.substring(0, intFound)
	var intID = getOtherIDOLD(strField)
	var strOther = strField + "_" + intID

	var buttonGroup = document.getElementsByName(strField)
	form.elements[strOther].checked=true
	for(i=0; i<buttonGroup.length; i++) {
		var str=strField + "_" + (i+1)
		try{
			document.getElementById(str).className="input"
		}
		catch (e) {
			
			}
		}
	document.getElementById(strField + "_" + intID).className="selected"
}

function doSubmitOtherVerify(vintID){
	var form=document.getElementById("frmSurvey")
	var langID=form.elements.namedItem("LANG").value
	var strMSG=""
	var elems=document.getElementsByTagName("DIV")
	var elemCount=elems.length;
	for(i=0; i<elemCount ; i++) {
		var strDivName=elems[i].id
		var strOther=GetFieldID(strDivName)
		if (strOther==gcstrOTHER) {
			var strOtherField=strDivName.substring(3, strDivName.length)
			var strField=GetFieldName(strOtherField)
			var strOtherID=GetFieldID(strField)
		}
	}		
	var form=document.getElementById(gcstrSURVEY)
	var elems=document.getElementsByTagName("INPUT")
	var elemCount=elems.length;
	var blnAns=true
	for(i=0; i<elemCount ; i++) {
		var strName=elems[i].name
		if (strName.substring(0, 1)=="Q" && strName.substring(0, 5)!="QPAGE"){
			if (strName==strField) {
				var box=form.elements.namedItem(strName)
				if (box.checked==true) {
					var boxText=form.elements.namedItem(strOtherField)
					var input=boxText.value
					var intLen=input.length
					if (intLen < 2) {
						blnAns=false
						var fldOther=document.getElementById(strOtherField)
						select(fldOther)
					}
				}
			}
		}
	}
	if (blnAns==false){
		if (langID==1){strMSG="You need to provide an answer in the OTHER SPECIFY box before you can continue!"}
		else if (langID==2){strMSG="Para poder continuar, tiene que completar su respuesta en el casillero OTRO, ESPECIFICAR."}
		else if (langID==3){strMSG="You need to provide an answer in the OTHER SPECIFY box before you can continue!"}
		else if (langID==4){strMSG="Sie müssen eine Antwort in der ANDEREN FESTLEGEN Feld bereitstellen, bevor Sie fortfahren können!"}
		else if (langID==5){strMSG="Vous devez fournir une réponse dans la case PRÉCISER AUTRE avant de pouvoir continuer!"}
		else {strMSG="You need to provide an answer in the OTHER SPECIFY box before you can continue!"}
		alert(strMSG)
		return false;
	} else {
		form.elements.namedItem("BUTTONID").value=vintID;
		form.submit();
	}
}

