document.formObject = {
	
	stdCoverage : 300.67,
	stdCoveragePrivate : 162.26,
	stdCoveragePrivatePlus : 32.80,
	amount : 0,
	policyExpense : 4,
	discountDateExpire : new Date(2006, 2, 1),
	
	normalTextColor : "#504470",
	errorTextColor : "#ff0000",
	
	mode : "normal",
	
	/*
	 * Form error messages
	 */
	formAccountNumberError : "Vul een nummer in",
	formEmailError : "Email is niet gelijk",
		
	initForm : function (){
		this.writeAmount();	
		
		/*
		HideContent('stap1content');
		HideContent('stap2content');
		HideContent('stap3content');
		HideContent('stap4content');
		HideContent('stap5content');
		*/
		ShowContent('stap1content');
		//ShowContent('stap2content');
		//ShowContent('stap3content');
		//ShowContent('stap4content');
		//ShowContent('stap5content');
		this.calculatePolicyExpense();
		this.updateOverview();
	},
	
	changeForm1Option : function (){
		this.calculatePolicyExpense();
	},
	
	focusAccountNumber : function(){
		if(document.getElementById("accountNumber").value == this.formAccountNumberError){
			document.getElementById("accountNumber").value = "";
		}
	},
	
	focusEmail : function () {
		if(document.getElementById("email").value == this.formEmailError){
			document.getElementById("email").value = "";
		}
		if(document.getElementById("emailCheck").value == this.formEmailError){
			document.getElementById("emailCheck").value = "";
		}
	},
	
	calculatePolicyExpense : function(){
		var coverageType = "";
		var period = 0;
		var payTerm = "";
		
		var coverageTypeArr = document.getElementsByName("dekking");
		for(x = 0; x <= coverageTypeArr.length - 1; x++){
			if (coverageTypeArr[x].checked == true) 
				coverageType = coverageTypeArr[x].value;
		}

		var periodArr = document.getElementsByName("periode");
		for(x = 0; x <= periodArr.length - 1; x++){
			if (periodArr[x].checked == true) 
				period = periodArr[x].value;
		}
		
		var payTermArr = document.getElementsByName("betaaltermijn");
		for(x = 0; x <= payTermArr.length - 1; x++){
			if (payTermArr[x].checked == true) 
				payTerm = payTermArr[x].value;
		}
		
		switch(coverageType){
			case "stdCoverage":
				this.amount = this.stdCoverage;
				break;
			case "stdCoveragePrivate":
				this.amount = this.stdCoverage + this.stdCoveragePrivate;
				break;
			case "stdCoveragePrivatePlus":
				this.amount = parseFloat(this.stdCoverage) + parseFloat(this.stdCoveragePrivate) + parseFloat(this.stdCoveragePrivatePlus);
				break;
			default:
				this.amount = 0;
				break;
		}
		
		switch(period){
			case "1":
				this.amount *= 1.075;
				break;
			case "5":
				this.amount *= 1;
				break;
		}
		
		var taxCap = "";
		switch(payTerm){
			case "yearly":
				document.getElementById("payMethodAccount").disabled = "";
				document.getElementById("monthCaption").innerHTML = "";
				break;
			case "monthly":
				document.getElementById("payMethodIncasso").checked = true;
				document.getElementById("payMethodAccount").disabled = "true";
				document.getElementById("monthCaption").innerHTML = "&nbsp;&nbsp;&nbsp;per maand";
				taxCap = "&nbsp;per maand";
				this.amount *= 1.05;
				this.amount /= 12;
				this.toggleAccountNumber(true);
				break;
		}
		
		if(new Date() < this.discountDateExpire){
			this.amount *= 0.9;
		}
		
		document.getElementById("tax").innerHTML = "&#8364; " + (this.amount * 0.075).toFixed(2).replace(".", ",") + taxCap;
		
		this.writeAmount();
	},
	
	toggleAdvisor : function () {
		var directInsuranceArr = document.getElementsByName("directInsurance");
		var directInsuranceItem;
		for(x = 0; x <= directInsuranceArr.length - 1; x++){
			if (directInsuranceArr[x].checked == true) 
				directInsuranceItem = directInsuranceArr[x].value;
		}
		
		if(directInsuranceItem == "yes"){
			document.getElementById("cityAdvisor").disabled = "";
			document.getElementById("nameAdvisor").disabled = "";
			document.getElementById("numberAdvisor").disabled = "";
		}
		else {
			document.getElementById("cityAdvisor").disabled = "true";
			document.getElementById("nameAdvisor").disabled = "true";
			document.getElementById("numberAdvisor").disabled = "true";
		}
	},
	
	toggleAccountNumber : function (enabled){
		var accountNumberField = document.getElementById("accountNumber");
		if(enabled){
			accountNumberField.disabled = "";
		}
		else {
			accountNumberField.disabled = "true";
		}
	},
	
	writeAmount : function (){
		var amountDiv = document.getElementById("amount");
		var rounded = this.amount == 0 ? this.amount : this.amount.toFixed(2);
		amountDiv.innerHTML = rounded.toString().replace(".", ",");
		document.getElementById("amountField").value = rounded.toString().replace(".", ",");
		
	},
	
	checkStep1 : function(){
		var coverageChecked = false;
		var periodChecked = false;
		var payTermChecked = false;
		var payMethodValid = false;
		
		var coverageTypeArr = document.getElementsByName("dekking");
		for(x = 0; x <= coverageTypeArr.length - 1; x++){
			if (coverageTypeArr[x].checked == true) 
				coverageChecked = true;
		}
	
		var periodArr = document.getElementsByName("periode");
		for(x = 0; x <= periodArr.length - 1; x++){
			if (periodArr[x].checked == true) 
				periodChecked = true;
		}
		
		var payTermArr = document.getElementsByName("betaaltermijn");
		for(x = 0; x <= payTermArr.length - 1; x++){
			if (payTermArr[x].checked == true) 
				payTermChecked = true;
		}
		
		if(document.getElementById("payMethodIncasso").checked){
			if(document.getElementById("accountNumber").value != ""){
				payMethodValid = true;
			}
			if(document.getElementById("accountNumber").value == this.formAccountNumberError){
				payMethodValid = false;
			}
		}
		else if(document.getElementById("payMethodAccount").checked){
			payMethodValid = true;
		}
		// Reset all error codes
		document.getElementById("stdCoverage").className = "caption";
		document.getElementById("stdCoveragePrivate").className = "caption";
		document.getElementById("stdCoveragePrivatePlus").className = "caption";
		
		document.getElementById("period1").className = "caption";
		document.getElementById("period5").className = "caption";
		
		document.getElementById("payTermYearly").className = "caption";
		document.getElementById("payTermMonthly").className = "caption";
		
		document.getElementById("payMethodAccountCaption").className = "caption";
		document.getElementById("payMethodIncassoCaption").className = "caption";
		
		//document.getElementById("accountNumber").value = "";
		document.getElementById("accountNumber").className = "normal"
		
		
		if(coverageChecked && periodChecked && payTermChecked && payMethodValid){
			HideContent('stap1content');
			ShowContent('stap2content');
			this.updateOverview();
			return true;
		}
		else {
			if(!coverageChecked){
				document.getElementById("stdCoverage").className = "errorCaption";
				document.getElementById("stdCoveragePrivate").className = "errorCaption";
				document.getElementById("stdCoveragePrivatePlus").className = "errorCaption";
			}
			if(!periodChecked){
				document.getElementById("period1").className = "errorCaption";
				document.getElementById("period5").className = "errorCaption";	
			}
			
			if(!payTermChecked){
				document.getElementById("payTermYearly").className = "errorCaption";
				document.getElementById("payTermMonthly").className = "errorCaption";	
			}
			
			if(!payMethodValid){
				
				if(document.getElementById("payMethodIncasso").checked){
					if(document.getElementById("accountNumber").value == ""){
						document.getElementById("payMethodIncassoCaption").className = "errorCaption";
						document.getElementById("accountNumber").value = this.formAccountNumberError;
						document.getElementById("accountNumber").className = "error"
					}
				}
				else if(!document.getElementById("payMethodAccount").checked && !document.getElementById("payMethodIncasso").checked){
					document.getElementById("payMethodAccountCaption").className = "errorCaption";
					document.getElementById("payMethodIncassoCaption").className = "errorCaption";
				}
				
			}
			return false;
		}
	},
	
	checkStep2 : function (){
		var step2Valid = true;
		
		document.getElementById("companyNameCaption").className = "caption";
		document.getElementById("letterOfFirstNameCaption").className = "caption";
		document.getElementById("lastNameCaption").className = "caption";
		document.getElementById("addressCaption").className = "caption";
		document.getElementById("houseNumberCaption").className = "caption";
		document.getElementById("cityCaption").className = "caption";
		document.getElementById("emailCaption").className = "caption";
		document.getElementById("emailCheckCaption").className = "caption";
		document.getElementById("brancheCaption").className = "caption";
		document.getElementById("genderCaption").className = "caption";	
		document.getElementById("postalCodeCaption").className = "caption";
		document.getElementById("emailCaption").className = "caption";
		document.getElementById("kvkCaption").className = "caption";
		document.getElementById("descActionsCaption").className = "caption";
		
		document.getElementById("companyName").className = "normal";
		document.getElementById("letterOfFirstName").className = "normal";
		document.getElementById("lastName").className = "normal";
		document.getElementById("address").className = "normal";
		document.getElementById("houseNumber").className = "normal";
		document.getElementById("city").className = "normal";
		document.getElementById("email").className = "normal";
		document.getElementById("emailCheck").className = "normal";
		document.getElementById("branche").className = "normal";
		document.getElementById("postalCodeNumbers").className = "normal";
		document.getElementById("postalCodeLetters").className = "normal"
		document.getElementById("email").className = "normal";
		document.getElementById("kvkDay").className = "normal";
		document.getElementById("kvkMonth").className = "normal";
		document.getElementById("kvkYear").className = "normal";
		
		if(document.getElementById("companyName").value == ""){
			document.getElementById("companyName").className = "error";
			document.getElementById("companyNameCaption").className = "errorCaption";
			step2Valid = false;
		}
		if(document.getElementById("letterOfFirstName").value == ""){
			document.getElementById("letterOfFirstNameCaption").className = "errorCaption";
			document.getElementById("letterOfFirstName").className = "error";
			step2Valid = false;
		}
		if(document.getElementById("lastName").value == ""){
			document.getElementById("lastName").className = "error";
			document.getElementById("lastNameCaption").className = "errorCaption";
			step2Valid = false;
		}
		if(document.getElementById("address").value == ""){
			document.getElementById("addressCaption").className = "errorCaption";
			document.getElementById("address").className = "error";
			step2Valid = false;
		}
		if(document.getElementById("houseNumber").value == ""){
			document.getElementById("houseNumberCaption").className = "errorCaption";
			document.getElementById("houseNumber").className = "error";
			step2Valid = false;
		}
		if(document.getElementById("city").value == ""){
			document.getElementById("cityCaption").className = "errorCaption";
			document.getElementById("city").className = "error";
			step2Valid = false;
		}
		if(document.getElementById("email").value == ""){
			document.getElementById("emailCaption").className = "errorCaption";
			document.getElementById("email").className = "error";
			step2Valid = false;
		}
		if(document.getElementById("emailCheck").value == ""){
			document.getElementById("emailCheckCaption").className = "errorCaption";
			document.getElementById("emailCheck").className = "error";
			step2Valid = false;
		}
		if(document.getElementById("branche").value == "0"){
			document.getElementById("brancheCaption").className = "errorCaption";
			document.getElementById("branche").className = "error";
			step2Valid = false;
		}
		
		var genderArr = document.getElementsByName("gender");
		var genderChecked = false;
		for(x = 0; x <= genderArr.length - 1; x++){
			if (genderArr[x].checked == true) 
				genderChecked = true;
		}
		if(!genderChecked){
			step2Valid = false;
			document.getElementById("genderCaption").className = "errorCaption";
		}
		
		if(document.getElementById("postalCodeNumbers").value == ""){
			document.getElementById("postalCodeNumbers").className = "error";
			document.getElementById("postalCodeCaption").className = "errorCaption";
			step2Valid = false;
		}
		
		if(document.getElementById("postalCodeLetters").value == ""){
			document.getElementById("postalCodeLetters").className = "error"
			document.getElementById("postalCodeCaption").className = "errorCaption";
			step2Valid = false;
		}
		
		if(document.getElementById("postalCodeNumbers").value != ""){
			if(!(this.isNumeric(document.getElementById("postalCodeNumbers").value)) || !(document.getElementById("postalCodeNumbers").value.length == 4)){
				document.getElementById("postalCodeNumbers").className = "error";
				document.getElementById("postalCodeCaption").className = "errorCaption";
				step2Valid = false;
			}
		}
		
		if(document.getElementById("postalCodeLetters").value != ""){
			if(!(document.getElementById("postalCodeLetters").value.length == 2)){
				document.getElementById("postalCodeLetters").className = "error";
				document.getElementById("postalCodeCaption").className = "errorCaption";
				step2Valid = false;
			}
		}
		
		if(document.getElementById("email").value != document.getElementById("emailCheck").value){
			document.getElementById("email").className = "error";
			document.getElementById("emailCheck").className = "error";
			document.getElementById("emailCaption").className = "errorCaption";
			document.getElementById("emailCheckCaption").className = "errorCaption";
			document.getElementById("email").value = this.formEmailError;
			document.getElementById("emailCheck").value = this.formEmailError;
			step2Valid = false;
		}
		
		var da = document.getElementById("descActions"); 
		if(da.value == ""){
			document.getElementById("descActionsCaption").className = "errorCaption";
			step2Valid = false;
		}	
		
		var dateStr = document.getElementById("kvkMonth").value + "/" +
						document.getElementById("kvkDay").value + "/" +
						document.getElementById("kvkYear").value;
		
		if(!isDate(dateStr)){
			document.getElementById("kvkYear").className = "error";
			document.getElementById("kvkMonth").className = "error";
			document.getElementById("kvkDay").className = "error";
			document.getElementById("kvkCaption").className = "errorCaption";
			step2Valid = false;	
		}
	
		if(!step2Valid){
			return false;
		}
		else {
			HideContent('stap2content');
			if(this.mode == "normal"){
				ShowContent('stap3content');
			}
			else {
				ShowContent('stap4content');
			}
			this.updateOverview();
			return true;
		}
			
	},
	
	checkStep3 : function () {
		step3Valid = true;
		
		document.getElementById("nameAdvisorCaption").className = "caption";
		document.getElementById("cityAdvisorCaption").className = "caption";
		document.getElementById("nameAdvisor").className = "normal";
		document.getElementById("cityAdvisor").className = "normal";
		document.getElementById("directInsuranceCaption").className = "caption";
		
		var directInsuranceArr = document.getElementsByName("directInsurance");
		var directInsuranceItem = null;
		for(x = 0; x <= directInsuranceArr.length - 1; x++){
			if (directInsuranceArr[x].checked == true) 
				directInsuranceItem = directInsuranceArr[x].value;
		}
		
		if(directInsuranceItem == null){
			document.getElementById("directInsuranceCaption").className = "errorCaption";
			step3Valid = false;
		}
		
		if(directInsuranceItem == "yes"){
			if(document.getElementById("cityAdvisor").value == ""){
				document.getElementById("cityAdvisorCaption").className = "errorCaption";
				document.getElementById("cityAdvisor").className = "error";
				step3Valid = false;
			}
			if(document.getElementById("nameAdvisor").value == ""){
				document.getElementById("nameAdvisorCaption").className = "errorCaption";
				document.getElementById("nameAdvisor").className = "error";
				step3Valid = false;
			}
		}
		if(step3Valid){
			HideContent('stap3content');
			ShowContent('stap4content');
			this.updateOverview();
			return true;
		}
		else {
			return false;
		}
		
	},
	
	checkStep4 : function (){
		step4Valid = true;
		
		document.getElementById("acceptStatementNoCaption").className = "caption";
		document.getElementById("acceptStatementYesCaption").className = "caption";
		
		var acceptStatementArr = document.getElementsByName("acceptStatement");
		var acceptStatementItem = null;
		for(x = 0; x <= acceptStatementArr.length - 1; x++){
			if (acceptStatementArr[x].checked == true) 
				acceptStatementItem = acceptStatementArr[x].value;
		}
		
		if(acceptStatementItem == null){
			document.getElementById("acceptStatementNoCaption").className = "errorCaption";
			document.getElementById("acceptStatementYesCaption").className = "errorCaption";
			step4Valid = false;
		}
		
		if(acceptStatementItem == "no"){
			var asr = document.getElementById("acceptStatementReason"); 
			if(asr.value == ""){
				document.getElementById("acceptStatementNoCaption").className = "errorCaption";
				step4Valid = false;
			}		
		}
	
		if(step4Valid){
			HideContent('stap4content');
			ShowContent('stap5content');
			this.updateOverview();
			return true;
		}
		else {
			return false;
		}
	},
	
	checkStep5 : function () {
		
		if(document.getElementById('acceptConditions').checked){
			document.getElementById('acceptConditionsTd').className = "";
			document.getElementById('directForm').submit();
			return true;
		}
		else {
			document.getElementById('acceptConditionsTd').className = "errorCaption";
			return false;
		}
		
		
	},
	
	getRadioValue : function (groupName){
		var radioArr = document.getElementsByName(groupName);
		var radioItem = null;
		for(x = 0; x <= radioArr.length - 1; x++){
			if (radioArr[x].checked == true) 
				radioItem = radioArr[x].value;
		}
		return radioItem;
	},
	
	updateOverview : function (){
		if(this.getRadioValue("betaaltermijn") == "monthly")
			document.getElementById("finalAmount").innerHTML = (this.amount * 12).toFixed(2);
		else
			document.getElementById("finalAmount").innerHTML = this.amount.toFixed(2);
		
		if(this.getRadioValue("periode") == "5"){
			document.getElementById("finalPeriode").innerHTML = "5 jaar";
		}
		else {
			document.getElementById("finalPeriode").innerHTML = "1 jaar";
		}
			
		if(this.getRadioValue("betaalwijze") == "incasso"){
			document.getElementById("finalPayMethod").innerHTML = "Automatische incasso: " + document.getElementById("accountNumber").value;
			
		} else if (this.getRadioValue("betaalwijze") == "accept") {
			document.getElementById("finalPayMethod").innerHTML = "Acceptgiro";
		}
		
		switch(this.getRadioValue("dekking")){
			case "stdCoverage":
				document.getElementById("finalCoverage").innerHTML = "DAS rechtsbijstand voor ZZP'ers";
				break;
			case "stdCoveragePrivate":
				document.getElementById("finalCoverage").innerHTML = "DAS rechtsbijstand voor ZZP'ers met particuliere dekking";
				break;
			case "stdCoveragePrivatePlus":
				document.getElementById("finalCoverage").innerHTML = "DAS rechtsbijstand voor ZZP'ers met particuliere dekking en pluspakket";
				break;
			case null:
				document.getElementById("finalCoverage").innerHTML = "";
				break;
		}
		
		document.getElementById("finalCompanyName").innerHTML = document.getElementById("companyName").value;
		
		document.getElementById("finalName").innerHTML = document.getElementById("letterOfFirstName").value + " " + document.getElementById("lastName").value;
		document.getElementById("finalAddress").innerHTML = document.getElementById("address").value;
		document.getElementById("finalHouseNumber").innerHTML = document.getElementById("houseNumber").value;
		document.getElementById("finalPostalCode").innerHTML = document.getElementById("postalCodeNumbers").value + " " + document.getElementById("postalCodeLetters").value;
		document.getElementById("finalCity").innerHTML = document.getElementById("city").value;
		document.getElementById("finalEmail").innerHTML = document.getElementById("email").value;
		document.getElementById("finalBranche").innerHTML = document.getElementById("branche").value;
		document.getElementById("finalDescActions").innerHTML = document.getElementById("descActions").value;
		
		document.getElementById("finalKvK").innerHTML = document.getElementById("kvkDay").value + "-" + document.getElementById("kvkMonth").value + "-" + document.getElementById("kvkYear").value;
		
		if(this.mode == "normal"){
			switch(this.getRadioValue("directInsurance")){
				case "no":
					document.getElementById("finalAdvisor").innerHTML = "Direct verzekeren bij DAS";
					break;
				case "yes":
					document.getElementById("finalAdvisor").innerHTML = document.getElementById("nameAdvisor").value + ", " + document.getElementById("cityAdvisor").value;
					if(document.getElementById("numberAdvisor").value != "") document.getElementById("finalAdvisor").innerHTML += ", " + document.getElementById("numberAdvisor").value;
			}
		}
		
		if(document.getElementById("acceptStatementYes").checked){
			document.getElementById("finalAcceptStatement").innerHTML = "Ja, ik ga akkoord met bovenstaande verklaring.";
			
		}
		else {
			document.getElementById("finalAcceptStatement").innerHTML = "Nee, ik kan niet (volledig) instemmen met bovenstaande verklaring omdat:<br />";
			document.getElementById("finalAcceptStatement").innerHTML += document.getElementById("acceptStatementReason").value;
		}
	},
	
	showStep : function (stepNumber){
		if(this.mode == "tp" && stepNumber == "3")
			stepNumber = "4";
		
		HideContent('stap1content');
		HideContent('stap2content');
		
		if(this.mode == "normal") 
			HideContent('stap3content');
		
		HideContent('stap4content');
		HideContent('stap5content');
		ShowContent('stap' + stepNumber + 'content');
	},
	
	goToThanks : function (){
		if(this.mode == "normal"){
				document.location = "http://ondernemen.das.nl/bedankt.html";
			}
			else {
				document.location = "http://ondernemen.das.nl/tp_bedankt.php?tpnaam=";
			}
	},
	
	goToThanksTp : function (name){
		if(this.mode == "normal"){
				document.location = "http://ondernemen.das.nl/bedankt.html";
			}
			else {
				document.location = "http://ondernemen.das.nl/tp_bedankt.php?tpnaam=" + name;
			}
	},
	
	isNumeric: function (sText) {
		var ValidChars = "0123456789";
		var IsNumber=true;
		var Char;
		for (i = 0; i < sText.length && IsNumber == true; i++) { 
			Char = sText.charAt(i); 
			if (ValidChars.indexOf(Char) == -1) {
				IsNumber = false;
			}
		}
		return IsNumber;
	}
}