/* 
laanefilterCalc.js  version 1.0.0
*/



laanefilterCalc = {
	jsversion: '1.0.0',
	
  init: function() {
	 
		var Toolbox = CalculatorToolbox;
  		var CoreCompliance=DBcore.getJSversion(DBcore,'1.16.0');
		var ToolCompliant=DBcore.getJSversion(CalculatorToolbox,'1.35.0');
		var ErrorCompliant=DBcore.getJSversion(ErrorHandler,'1.10.0');
  		//if (CoreCompliance.compliant && ToolCompliant.compliant && ErrorCompliant.compliant) {
			 Toolbox.calculatorObj=laanefilterCalc;
			 Toolbox.listOfTriggers=['changeNumberOfAppliers','changeLoanType','changeRequestType','showhidesteps','validateLoan','changeRelationshipStatus','shiftshow','validateSection','setContactData','sendform','pushValueToField'];
			 Toolbox.pseudoChangeElementIdsFromCalc=[];
			 Toolbox.setClickListeners(); 
			 Toolbox.setChangeListeners();
			 Toolbox.setButtonActivation();
			 //Toolbox.setKeydownListeners();
			 //Toolbox.activateExcel();
			 Toolbox.overwritePrintIcon();
		//}
 },

	dispLocalValidators: function(field,classFunction,classParams,eventType) {
		 
			var self=laanefilterCalc;
			var ok=true;
			switch (classFunction){
					case 'changeNumberOfAppliers':
									if (eventType=='change') {
										self.handlechangeNumberOfAppliers(field,classParams);
									}
									break;
					case 'changeRequestType':
									if (eventType=='change') {
										self.handlechangeRequestType(field,classParams);
									}
									break;
					case 'changeLoanType':
									if (eventType=='change') {
										self.handlechangeLoanType(field,classParams);
									}
									break;
					case 'shiftshow':
							 		if (eventType=='click') {
							 			 self.shiftShow(field,classParams);
									}
									break;
									
					case 'validateLoan':
							 		if (eventType=='click') {
									  ok=self.handlevalidateLoan(field,classParams);
									}
									break;
					
					case 'showhidesteps':
							 		if (eventType=='click') {
									  ok=self.handleshowhidesteps(field,classParams);
									}
									break;
						
									
					case 'changeRelationshipStatus':
					
									if (eventType=='click') {
							 			 self.handlechangeRelationshipStatus(field,classParams);
									}
									break;
									
					case 'validateSection':
							 		if (eventType=='click') {
									  ok=self.validateSection(field,classParams);
									}
									break;
												
					case 'sendform':
							 	  if (eventType=='click') {
							 			 self.handleSend(field);
									 }
				                     break;
				
				    case 'pushValueToField':
								  if (eventType=='change') {
								      self.handlepushValueToField(field,classParams);
								  }
								  break;
					default:
								  break;
			}
			return ok;
	},
	
	handlechangeNumberOfAppliers: function(field,theparams){
		var fieldgroup = document.getElementById('fieldgroup_inntektmedlaan');
		if (field.checked) {
			fieldgroup.className='fieldgroup';
		}else {
			fieldgroup.className='fieldgroup hide';
		}
	},
	
	handlechangeRequestType: function(field,theparams){
		var fieldgrouplaanetype = document.getElementById('fieldgrouplaanetype');
		var fieldgroupa = document.getElementById('fieldgroup_a_boligensverdi');
		var fieldgroupb = document.getElementById('fieldgroup_b_boligensverdi');
		
		if ((field.value=="Finansieringsbevis") || (field.value=="")) {
			fieldgrouplaanetype.className='fieldgroup hide';
			fieldgroupa.className='fieldgroup hide';
			fieldgroupb.className='fieldgroup';
		}else if((field.value=="Laantilkjoep") || (field.value=="Flyttelaan") || (field.value=="Refinansiering")){
			fieldgrouplaanetype.className='fieldgroup';
			fieldgroupa.className='fieldgroup';
			fieldgroupb.className='fieldgroup hide';
		}
	},
	
	handlechangeLoanType: function(field,theparams){
		var fieldgroupbindingstid = document.getElementById('fieldgroupbindingstid');
		
		if ((field.value=="Fastrentelaan") || (field.value=="")) {
			fieldgroupbindingstid.className='fieldgroup';
		}else {
			fieldgroupbindingstid.className='fieldgroup hide';
		}
	},
	
	shiftShow: function(field,theparams) {
			var currentelement = document.getElementById(theparams[0]);
			var nextelement = document.getElementById(theparams[1]);
			
			DisplayToolbox.showElement(nextelement);
			DisplayToolbox.hideElement(currentelement);
			
	},
	
	handlevalidateLoan: function(field,theparams) {
		
		var ok = CalculatorToolbox.fieldsAreValid(field.form);
		if (ok) {
			if (laanefilterCalc.handleCalculateLaanefilter() ) {
				//godkendt til lån
				//hvis der er en medlåntager så skal  der vises 6 trin, ellers 4
				laanefilterCalc.changeHeadings();
				laanefilterCalc.shiftShow(field,[theparams[0],theparams[1]]);
			} else {
				//ikke godkendt til lån
				//hvis der er en medlåntager så skal  der vises 6 trin, ellers 4
				laanefilterCalc.shiftShow(field,[theparams[0],theparams[2]]);
			}
		}
	},
	
	changeHeadings: function(){
		var medlaantaker = document.getElementById('medlaantaker');
		var ismedlaantaker = (medlaantaker.checked) ? true : false; 
		
		var heading2 = document.getElementById('header2');
		var heading3 = document.getElementById('header3');
		var heading4 = document.getElementById('header4');
		var heading5 = document.getElementById('header5');
		var heading6 = document.getElementById('header6');
		var heading7 = document.getElementById('header7');
		
		if (ismedlaantaker) {
			heading2.innerHTML='Boligen (trinn 1/6)'; 
			heading3.innerHTML='Personopplysninger - L&aring;ntaker (trinn 2/6)'; 
			heading4.innerHTML='L&aring;n og andre utgifter - L&aring;ntaker (trinn 3/6)'; 
			//heading5.innerHTML=''; 
			//heading6.innerHTML='';
			heading7.innerHTML='Informasjon om eiendom (trinn 6/6)';
		}else {
			heading2.innerHTML='Boligen (trinn 1/4)'; 
			heading3.innerHTML='Personopplysninger - L&aring;ntaker (trinn 2/4)'; 
			heading4.innerHTML='L&aring;n og andre utgifter - L&aring;ntaker (trinn 3/4)'; 
			//heading5.innerHTML=''; 
			//heading6.innerHTML='';
			heading7.innerHTML='Informasjon om eiendom (trinn 4/4)';
		}
	},
	
	handlechangeRelationshipStatus: function(field,theparams) {		 
		var civilstatusSelectbox= document.getElementById(theparams[0]); 
		var civilstatus = DBcore.selectedValueOf(civilstatusSelectbox);
		
		var medlaantakerheading1 = document.getElementById(theparams[1]); 
		var medlaantakerheading2 = document.getElementById(theparams[2]);
		
		switch (civilstatus) { 
			case 'Gift': 
			medlaantakerheading1.innerHTML='Personopplysninger - Ektefelle/partner (trinn 4/6)'; 
			medlaantakerheading2.innerHTML='L&aring;n og andre utgifter - Ektefelle/partner (trinn 5/6)'; 
			break; 
			
			case 'Samboer': 
			medlaantakerheading1.innerHTML='Personopplysninger - Samboer (trinn 4/6)'; 
			medlaantakerheading2.innerHTML='L&aring;n og andre utgifter - Samboer (trinn 5/6)'; 
			break; 
			
			default: 
			medlaantakerheading1.innerHTML='Personopplysninger - Medl&aring;ntaker (trinn 4/6)'; 
			medlaantakerheading2.innerHTML='L&aring;n og andre utgifter - Medl&aring;ntaker (trinn 5/6)'; 
			break; 
		} 
	},
	
	handleshowhidesteps: function(field,theparams) {
		var medlaantaker = document.getElementById('medlaantaker');
		var ismedlaantaker = (medlaantaker.checked) ? true : false;
		var stepdirection = theparams[0];
		
		if (stepdirection=="forward"){
			if (ismedlaantaker) {
				laanefilterCalc.validateSection(field,["side4","side5"]);
			} else {
				laanefilterCalc.validateSection(field,["side4","side7"]);
			}
		} else {
			if (ismedlaantaker) {
				laanefilterCalc.shiftShow(field,["side7","side6"]);
			} else {
				laanefilterCalc.shiftShow(field,["side7","side4"]);
			}
		}
		
	},
	
	validateSection: function(field,theparams) {
		var ok = CalculatorToolbox.fieldsAreValid(field.form);
		if (ok) {
			laanefilterCalc.shiftShow(field,theparams);
		}
		return ok;
	},
	
	handleCalculateLaanefilter: function() {
	var boligvaerdigodkendt = false;	
	var godkendt=false;
	
	var inntekt= parseInt(document.getElementById('inntekt').value);
	var inntektmedlaan = parseInt(document.getElementById('inntektmedlaan').value);
	var laanebeloep = parseInt(document.getElementById('laanebeloep').value);
	var boligensantattevaerdi = parseInt(document.getElementById('BoligensAntatteVaerdi').value);
	var alder = parseInt(document.getElementById('Alder').value);
	
	var medlaantaker = document.getElementById('medlaantaker');
	var ismedlaantaker = (medlaantaker.checked) ? true : false; 
	
	
	// the customer can only get a loan on 90% of the value og the house
	if ((laanebeloep / 0.9) > boligensantattevaerdi) {
		boligvaerdigodkendt=false;
	} else {
		boligvaerdigodkendt=true;
	}
	
	
	
	if (ismedlaantaker) {
		// Hvis der er en medlånstager
		if ((inntekt + inntektmedlaan) < 550000){
			godkendt=false
		} 
		else if ((inntekt + inntektmedlaan) < 750000)  {
			if (laanebeloep > (4 * (inntekt + inntektmedlaan))) {
				godkendt=false;	
			} else {
				godkendt=true;
			}
		}
		else if ((inntekt + inntektmedlaan) < 900000) {
			if (laanebeloep > (5 * (inntekt + inntektmedlaan))) {
				godkendt=false;	
			} else {
				godkendt=true;
			}
		}
		else if ((inntekt + inntektmedlaan) >= 900000) {
			godkendt=true;	
		}
		
	} else {
		// Hvis der IKKE er en medlånstager
		if (inntekt < 300000){
			godkendt=false
		} 
		else if (inntekt < 400000)  {
			if (laanebeloep > (4 * inntekt)) {
				godkendt=false;	
			} else {
				godkendt=true;
			}
		}
		else if (inntekt < 600000) {
			if (laanebeloep > (5 * inntekt)) {
				godkendt=false;	
			} else {
				godkendt=true;
			}
		}
		else if (inntekt >= 600000) {
			godkendt=true;	
		}
	}
	
	if (boligvaerdigodkendt && godkendt) {
		return true;	
	} else {
		return false;	
	}
	
	},
	
	handleCbaseSubject: function(field) {
	   var subjectField=document.forms[0].MessageSubject;
		 if (subjectField) {
  		 var subject=subjectField.value;
  		 var fieldValue='';
  		 if (field.type=='select-one') {
  		 		fieldValue=DBcore.selectedValueOf(field); 
			 } else if (field.type=='radio') {
			 	  fieldValue= DBcore.getRadioValue(field);
  		 } else {
  		 	  fieldValue=field.value;
  		 }
			 if (field.type=='checkbox' && !field.checked) {
			   fieldValue='';
			 }
  		 subjectField.value=subject+' -  '+fieldValue;
		 }
	},
	
	handleSend: function (field) {
		
				laanefilterCalc.activeButton='send';
				var form = document.getElementsByTagName('form')[0];
    		var ok=CalculatorToolbox.fieldsAreValid(form);
				if (ok) {
					var namesubj = document.getElementById("laantakersnavn");
					  laanefilterCalc.handleCbaseSubject(namesubj);
					  var found=false;
    				var block;
    				var blockId;
    				var action = form.__formActionUrl.value;
    				var charset = form.__formCharset.value;
    				var formId = form.__formID.value;
    				var encoding = form.__formEncoding.value;
    			  var divs=document.getElementsByTagName('DIV');
    				for (var i=0;divs.length;i++) {
    						if (divs[i].id.substr(0,12)=='ContactFormg') {
    							 block=divs[i];
    							 blockId=block.id;
    							 found=true;
    							 break;
    						}
    				}
    				if (found) laanefilterCalc.sendForm(block,formId,action,'post',encoding,charset);
    		} else {
					 laanefilterCalc.activeButton='';
				}
	},
	
	handlepushValueToField: function(thefield, theparams) {
		for(i=0;i<theparams.length;i++){
			if (document.getElementById(theparams[i])){
				document.getElementById(theparams[i]).value = thefield.value;	
			}
		}
	},
	
	sendForm: function(block,formID,action,method,encoding,charset) {
	
		function saveCheckedNodes(saved_nodes,current_node)
 		{
      if(current_node.type && ((current_node.type == 'checkbox') || (current_node.type == 'radio'))) {
       saved_nodes[saved_nodes.length] = new Array(current_node, current_node.checked);
      }
      for(var i = 0; i < current_node.childNodes.length; i++) {
       saveCheckedNodes(saved_nodes, current_node.childNodes[i]);
      }
 		}
		
	  var node;
	  if (arguments.length<5) {
		  var encoding = 'application/x-www-form-urlencoded';
		}
		if (arguments.length<6) {
		  var charset= 'iso-8859-1';
		}
		document.charset=charset;
		var formObj = document.createElement('form');
		formObj.id=formID;
		document.body.appendChild(formObj);
		formObj.action=action;
		formObj.method=method;
		formObj.encoding=encoding;
		formObj.style.marginLeft="-9000px";
		formObj.acceptCharset = charset;
 		var checked_nodes = new Array();
 		saveCheckedNodes(checked_nodes, block);
		while(block.childNodes.length > 0){
      var node = block.childNodes[0];
			if (node.name=='kvitURL') {
				 if (node.value.indexOf('//')==-1) {
				   node.value= '//'+location.host+node.value;
				 }
			}
      formObj.appendChild(node);
    }
 		for(j = 0; j < checked_nodes.length; j++) {
      checked_nodes[j][0].checked = checked_nodes[j][1];
    }
		formObj.submit();
	 }
	
	}
DBcore.start(laanefilterCalc);	
	
	
