surveyResponse = {
		
	validateFeedBack : function(surveyResponseForm, multiLineRspnLimit, feedBackLimit, ajaxURL) {	
	
		var questionsInfo = document.getElementsByName('questionsInfo');
		for (var i = 0; i < questionsInfo.length; i++) {
			var questionIdInfo = (questionsInfo[i].value).split('_', 2);
			var questionId = questionIdInfo[0] + '_' + questionIdInfo[1];
			
			// Verfiy the number of characters entered in feedback
			var quesFeedBack 
				= document.getElementById('feedBack_' + questionIdInfo[1]);
				
			if (quesFeedBack) {
				quesFeedBack.value = common.trimfunction(quesFeedBack.value);
				if (quesFeedBack.value.length > 100) {
					alert(feedBackLimit);
					quesFeedBack.focus();
					return false;
				}
			}
		}
		if(this.enableResponseSubmission(surveyResponseForm, multiLineRspnLimit)) {	
			surveyResponseForm.surveyResponseSubmit.disabled = true;
			this.createAjaxRequest(surveyResponseForm, ajaxURL, multiLineRspnLimit);			
		}		
	},

	enableResponseSubmission : 	function(surveyResponseForm, multiLineRspnLimit) {
		var questionsInfo = document.getElementsByName('questionsInfo');
		var isValid = true;
		
		for (var i = 0; i < questionsInfo.length; i++) {

			var questionIdInfo = (questionsInfo[i].value).split('_', 2);
			var questionId = questionIdInfo[0] + '_' + questionIdInfo[1];
			
			if (!(this.isQuestionAnswered(questionId, multiLineRspnLimit))) {
				isValid = false;
				break;
			}				
		}
		if (isValid) {
			surveyResponseForm.surveyResponseSubmit.disabled=false;
			surveyResponseForm.surveyResponseSubmit.className="btnyellow shortSurveyFont";
		}

		return isValid;
	},

	isQuestionAnswered : function(questionId, multiLineRspnLimit) {
		var questionAnswered = false;
		var questionChoices = document.getElementsByName(questionId);
				
		for (var i = 0; i < questionChoices.length; i++) {		
			var choiceTagName = questionChoices[i].tagName;

			if (choiceTagName == 'TEXTAREA') {
				questionChoices[i].value = common.trimfunction(questionChoices[i].value);
						
				if (questionChoices[i].value.length > 500) {
					alert(multiLineRspnLimit);
					questionChoices[i].focus();
					return false;
				}
			}
		}
		return true;	
	},
	
	displayResult : function(formObj) {
		formObj.submit();
	},
	
	setCookieForAnonymous : function(surveyResponseForm) {	

		// Cookie expires in 10 days
		cookieUtil.createCookie(surveyResponseForm.cookieName.value, 
			surveyResponseForm.surveyId.value , 10);
		
	},
	
	createAjaxRequest : function (formObj, ajaxURL, multiLineRspnLimit) {
		var url = this.constructURLParameters(formObj, multiLineRspnLimit);
		
		$.ajax({
		  type: "POST",
		  url: ajaxURL,
		  data: url,
		  success: function(msg){
		  	var response;
		  	try {
			  	response = eval('(' +msg+')');
			} catch (e) {
				alert("An error has occured while saving the response. Please try again.")
		  		formObj.surveyResponseSubmit.disabled = false;	
			}
		  	
		  	if (response) {
			    document.getElementById('surveySpan').innerHTML="";
			    document.getElementById('surveyResultsTable').style.display="inline";	
			    surveyResponse.formSurveyResults(formObj, response);
			    
			    if (formObj.attemptMoreThanOnce.value == 'false' && 
					formObj.anonymousUser.value == 'true') {
					surveyResponse.setCookieForAnonymous(formObj);
				}							    
		  	}
		  }
		});
		
	},
	constructURLParameters : function (formObj, multiLineRspnLimit) {
		var url = "surveyId=" + formObj.surveyId.value + "&";
		var params = this.getQuestionsInfo(formObj);
		url = url + "questionsInfo=" + params.quesInfo + "&";
		url = url + params.choiceInfo;
		url = url + params.feedback;
		url = url + "nonAnonymousSurvey=" + formObj.nonAnonymousSurvey.value + "&";
		url = url + "internalUser=" +  document.getElementById('internalUser').innerHTML + "&";
		url = url + "userPin=" +  document.getElementById('userPin').innerHTML + "&";
		url = url + "name=" +  document.getElementById('name').innerHTML + "&";
		url = url + "company=" +  document.getElementById('company').innerHTML + "&";
		url = url + "role=" +  document.getElementById('role').innerHTML + "&";
		url = url + "city=" +  document.getElementById('city').innerHTML + "&";
		url = url + "state=" +  document.getElementById('state').innerHTML + "&";
		url = url + "zip=" +  document.getElementById('zip').innerHTML + "&";
		url = url + "country=" +  document.getElementById('country').innerHTML + "&";
		url = url + "businessSiteId=" +  document.getElementById('businessSiteId').innerHTML + "&";
		url = url + "securityGroups=" +  document.getElementById('securityGroups').innerHTML + "&";
		url = url + "siteUrl=" +  document.getElementById('siteUrl').innerHTML + "&";
		return url;
	},
	
	getQuestionsInfo : function (formObj, multiLineRspnLimit) {
		//var ques = formObj.questionsInfo;
		var ques = document.getElementsByName('questionsInfo');
		var param = new Object();
		param.quesInfo = "";
		param.choiceInfo = "";
		param.feedback = "";
		if (ques.length) {
			for (var i = 0; i < ques.length; i++) {
				param.quesInfo = param.quesInfo + ques[i].value + "~";
				var questionIdInfo = (ques[i].value).split('_', 2);
				var questionId = questionIdInfo[0] + '_' + questionIdInfo[1];
				var choice = this.getChoicesAnswered(questionId, multiLineRspnLimit);
				param.choiceInfo = param.choiceInfo + questionId + '=' + choice + '&'
				var feedback = document.getElementById('feedBack_' + questionIdInfo[1]);
				
				if (feedback) {
					param.feedback = param.feedback + 'feedBack_' + questionIdInfo[1] + '=' + feedback.value + '&'
				}
			}
		}
		return param;
	},
	
	getChoicesAnswered : function(questionId, multiLineRspnLimit) {
		var choice = "";
		var questionChoices = document.getElementsByName(questionId);
		
		for (var i = 0; i < questionChoices.length; i++) {		
			var choiceTagName = questionChoices[i].tagName;

			if (choiceTagName == 'INPUT') {

				if (questionChoices[i].type == 'checkbox') {
					if (questionChoices[i].checked) {
						choice = choice + questionChoices[i].value + "~";						
					} 									
				} else if (questionChoices[i].type == 'text') {
					questionChoices[i].value = common.trimfunction(questionChoices[i].value);
					
					if (questionChoices[i].value != '') {
						choice = questionChoices[i].value;
						break;		
					}
				} else {
					if (questionChoices[i].checked) {
						choice = questionChoices[i].value;
						break;
					} 
				}				 
			} else if (choiceTagName == 'TEXTAREA') {
				questionChoices[i].value = common.trimfunction(questionChoices[i].value);
				
				if (questionChoices[i].value != '') {					
					choice = questionChoices[i].value;
					break;
				}				
			} else if (choiceTagName == 'SELECT') {
				if (questionChoices[i].selectedIndex != 0) {
					choice = questionChoices[i].value;	
					break;
				}
			}
		}
		return choice;	
	},
	
	formSurveyResults : function(formObj, response) {
		if (document.getElementById('surveyResultShow')) {
			if (document.getElementById('responseCount')) {
				document.getElementById('responseCount').innerHTML = response.surveyResponseCount;
			}
			for (var j = 0; j < response.survey.length; j++) {
				var choicePercent = 0;
				
				if (response.survey[j].questionResponseCount && response.survey[j].questionResponseCount != 0) {
					
					if (response.survey[j].choiceResponseCount != 0) {
						var counter = response.survey[j].choiceResponseCount;
						if (typeof(counter) != 'undefined') {
							choicePercent = (parseFloat(response.survey[j].choiceResponseCount)/parseFloat(response.survey[j].questionResponseCount))*100
						}
					}
				}
				choicePercent = choicePercent + "";
				var percentIndex = choicePercent.indexOf('.');
				
				if (percentIndex != -1 && (percentIndex + 3) < choicePercent.length) {						
					choicePercent = choicePercent.substring(0, percentIndex + 3)
				}
				if (response.survey[j].choiceColor && response.survey[j].choiceColor != '') {
					document.getElementById('choiceResultsGraph_' + response.survey[j].choiceId).style.background=response.survey[j].choiceColor;
				} else {
					document.getElementById('choiceResultsGraph_' + response.survey[j].choiceId).style.background=response.survey[j].colorCode;
				}
				document.getElementById('choiceResultsGraph_' + response.survey[j].choiceId).style.width = choicePercent + "%";
				document.getElementById('choiceResultsPercent_' + response.survey[j].choiceId).innerHTML = choicePercent + "%";
			}
		}	
	},
	
	showHideTooltip : function (e) {
		var toolTip = document.getElementById("tooltip");
	
		if (window.event) {
			e = window.event;
		}
	
		var obj = e.srcElement? e.srcElement : e.target;		
		var curleft = 0;
		var curtop = 0;
		
		if (obj.offsetParent) {
			curleft = obj.offsetLeft;
			curtop = obj.offsetTop;
	
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
			}
		}
	
		obj = e.srcElement? e.srcElement : e.target;
	
		if (obj.tagName == 'SELECT') {
			toolTip.innerHTML = obj.options[obj.selectedIndex].text;
			
			if(e.type == "mouseout") {
				toolTip.style.display = "none";
			} else {
				toolTip.style.display = "inline";
				toolTip.style.left = curleft + 20;
				toolTip.style.top = curtop + 25;
			}			
		}
	}
}