// 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
var gcstrMSGERROTHER = "Please add a description in the Other box"
var gcstrMSGTEXTAREA = "characters remaining"
// 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, 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}
	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 (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 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) {
	NoCommentBox(field)
	var input=field.value
	var OtherDiv=document.getElementById("DIV" + field.name)
	var strLen=input.length
	var intLeft=maxlen-strLen
		
	if (intLeft<0) {
	 alert("Please keep your entry to a maximum of " + maxlen + " characters. ")
	 field.value = input.substring(0,maxlen)
	 input=field.value
	 strLen=input.length
	 intLeft=maxlen-strLen
	 field.focus();
	}
	var strMsg=intLeft + " " + gcstrMSGTEXTAREA
	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 strOtherText=field.value
	var OtherSaveText=document.getElementById(gcstrOTHER)
  if(strOtherText.length>0){
   OtherSaveText.value=strOtherText
  }else {
   alert (gcstrMSGERROTHER)
   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 OtherSaveText=document.getElementById(gcstrOTHER)
	var strOther=OtherSaveText.value
	var strHTML="&nbsp;Specify&nbsp;<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 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) {				
					alert("Please select only your Top " + n + " choices only.")
					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"
}
