function WPPersonalityTest(){
	this.profile = {"txtName":{"desc":"Name"},
					"txtEmail":{"desc":"Email"},
					"txtPhone":{"desc":"Phone"},
					"txtAddress1":{"desc":"Address"},
					"txtAddress2":{"desc":"Address2"},
					"txtCity":{"desc":"City"},
					"txtStateProvince":{"desc":"State/Province"},
					"txtPostalZip":{"desc":"Postal/Zip"},
					"txtCountry":{"desc":"Country"}};
					
	this.successTest		  = {};
	this.successScoreMatrix   = [1,1,1,1,1,1,-1,1,1,-1,1,1,1,1,-1,1];
	this.depressionScoreMatix = [[4,3,2,1],[4,3,2,1],[4,3,2,1],[4,3,2,1],[4,3,2,1],[4,3,2,1],
								 [1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4],
								 [1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4],
								 [1,2,3,4],[1,2,3,4]];
	this.optimismScoreMatix   = [[4,3,2,1,0],[0,0,0,0,0],[0,1,2,3,4],[4,3,2,1,0],[0,0,0,0,0],
								 [0,0,0,0,0],[0,1,2,3,4],[0,0,0,0,0],[0,1,2,3,4],[4,3,2,1,0]];
	this.successTestScore     = 0;
	this.depressionTestScore  = 0;
	this.optimismTestScore    = 0;
	this.depressionTest       = {};
	this.optimismTest         = {};
	this.currentQuestionaire  = "ProfileInfo";
};
WPPersonalityTest.prototype.DisplayProfileInfo = function(){
	document.getElementById("ProfileInfo").style.display = "block";
	document.getElementById("SuccessTest").style.display = "none";
	document.getElementById("DepressionTest").style.display = "none";
	document.getElementById("OptimismTest").style.display = "none";
	this.currentQuestionaire = "ProfileInfo";
}
WPPersonalityTest.prototype.DisplaySuccessTest = function(){
	if(!this.ValidateForms()){
		return false;
	}
	document.getElementById("ProfileInfo").style.display = "none";
	document.getElementById("SuccessTest").style.display = "block";
	document.getElementById("DepressionTest").style.display = "none";
	document.getElementById("OptimismTest").style.display = "none";
	this.currentQuestionaire = "SuccessTest";
}
WPPersonalityTest.prototype.DisplayDepressionTest = function(){
	if(!this.ValidateForms()){
		return false;
	}	
	document.getElementById("ProfileInfo").style.display = "none";
	document.getElementById("SuccessTest").style.display = "none";
	document.getElementById("DepressionTest").style.display = "block";
	document.getElementById("OptimismTest").style.display = "none";
	this.currentQuestionaire = "DepressionTest";
}
WPPersonalityTest.prototype.DisplayOptimismTest = function(){
	if(!this.ValidateForms()){
		return false;
	}
	document.getElementById("ProfileInfo").style.display = "none";
	document.getElementById("SuccessTest").style.display = "none";
	document.getElementById("DepressionTest").style.display = "none";
	document.getElementById("OptimismTest").style.display = "block";
	this.currentQuestionaire = "OptimismTest";
}
WPPersonalityTest.prototype.GetSuccessTestScore = function(){
	return this.successTestScore;
}
WPPersonalityTest.prototype.GetDepressionTestScore = function(){
	return this.depressionTestScore;
}
WPPersonalityTest.prototype.GetOptimismTestScore = function(){
	return this.optimismTestScore;
}
WPPersonalityTest.prototype.SubmitForm = function(){
	if(this.ValidateForms()){
		document.getElementById("hdnSuccessTestScore").value  = this.GetSuccessTestScore();
		document.getElementById("hdnDepressionTestScore").value = this.GetDepressionTestScore();
		document.getElementById("hdnOptimismTestScore").value   = this.GetOptimismTestScore();
		return true;
	}
	return false;
}
WPPersonalityTest.prototype.ValidateForms = function(){
	switch(this.currentQuestionaire){
		case "ProfileInfo":
			for(var fieldId in this.profile){
				var field = document.getElementById(fieldId);
				if(field){
					if(fieldId == "txtEmail"){
						if(!this.ValidateEmailField(field)){
							return false;
						}
					}else if(fieldId == "txtAddress2"){
						;
					}else{
						if(this.TrimString(field.value)==""){
							alert("Required field not set. Please enter a value for " + this.profile[fieldId].desc);
							field.focus;
							return false;
						}
					}
				}
			}
			break;
		case "SuccessTest":
			for(var i=0;i<16;i++){
				var isValid = false;
				for(var j=0;j<2;j++){
					var ans = document.getElementById("radSuccess_"+i+"_"+j);
					if(ans && ans.checked){
						isValid = true;
					}
					if(j==0 && ans.checked){
						this.successTestScore += this.successScoreMatrix[i];
					}
				}
				if(!isValid){
					alert("Sorry, you must complete all fields.");
					return false;
				}
			}
			break;
		case "DepressionTest":
			for(var i=0;i<20;i++){
				var isValid = false;
				for(var j=0;j<4;j++){
					var ans = document.getElementById("radDepression_"+i+"_"+j);
					if(ans && ans.checked){
						isValid = true;
						this.depressionTestScore += this.depressionScoreMatix[i][j];
					}
				}
				if(!isValid){
					alert("Sorry, you must complete all fields.");
					return false;
				}
			}
			break;
		case "OptimismTest":
			for(var i=0;i<10;i++){
				var isValid = false;
				for(var j=0;j<5;j++){
					var ans = document.getElementById("radOptimism_"+i+"_"+j);
					if(ans && ans.checked){
						isValid = true;
						this.optimismTestScore += this.optimismScoreMatix[i][j];
					}
				}
				if(!isValid){
					alert("Sorry, you must complete all fields.");
					return false;
				}
			}
			break;
	}
	return true;
}
WPPersonalityTest.prototype.ValidateEmailField = function(field){
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if(!filter.test(field.value)){
		alert("Please provide a valid email address");
		field.focus;
		return false;
	}
	return true;
}
WPPersonalityTest.prototype.TrimString = function(str){
	var chars = " ";
	this.ltrim = function(str, chars){
		chars = chars || "\\s";
		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
	}
	this.rtrim = function(str, chars){
		chars = chars || "\\s";
		return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
	}
	return this.ltrim(this.rtrim(str, chars), chars);
}