// Bereken maximalehypotheek
function berekenmaximalehypotheek(form) {
    var elements = Form.getElements($(form));
    var valid = true;
    for (var i = 0; i < elements.length; i++) {
		if(elements[i].name == 'partner' && elements[i].checked) {
			var partner = elements[i].value;
		}
	}
	var xml_string = "<?xml version='1.0' encoding='UTF-8'?><MaximaleHypotheekRequest>";
	
    for (var i = 0; i < elements.length; i++) {
		if (elements[i].name == 'SessionId') {
			xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
		}
		if (partner == 'nee' && ('LeeftijdAanvrager,InkomenAanvrager').indexOf(elements[i].name) !=-1) {
			if (!validate(elements[i])) valid = false;
			xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
		} else if (partner == 'ja' && ('LeeftijdAanvrager,InkomenAanvrager,LeeftijdPartner,InkomenPartner').indexOf(elements[i].name) !=-1) {
			if (!validate(elements[i])) valid = false;
			xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
		}
    }
	xml_string += "</MaximaleHypotheekRequest>";
	
	if (valid) {
		var url = '/common/xml/BerekeningenProvider.aspx?maximalehypotheek';

		processAjax(url,xml_string);
	}
}


// Opslaan financiele gegevens
function opslaanFinancieleGegevens(form) {
    var elements = Form.getElements($(form));
    var valid = true;
    for (var i = 0; i < elements.length; i++) {
		if(elements[i].name == 'partner' && elements[i].checked) {
			var partner = elements[i].value;
		}
	}
	
    for (var i = 0; i < elements.length; i++) {
		if (partner == 'nee' && ('LeeftijdAanvrager,InkomenAanvragerKoopsomWoning,EigenMiddelenOverwaarde,NieuwbouwOfBestaand,HoogteHypotheek,KostenVerbouwing,Vraagprijs').indexOf(elements[i].name) !=-1) {
			if (!validate(elements[i])) valid = false;
		} else if (partner == 'ja' && ('LeeftijdAanvrager,InkomenAanvrager,LeeftijdPartner,InkomenPartnerKoopsomWoning,EigenMiddelenOverwaarde,NieuwbouwOfBestaand,HoogteHypotheek,KostenVerbouwing,Vraagprijs').indexOf(elements[i].name) !=-1) {
			if (!validate(elements[i])) valid = false;
		}
    }

  if (valid) {
    document.getElementById(form).submit();
	}
  else
  {
    return false;
  }
}


// Bereken maximalemaandlasten
function berekenmaximalemaandlasten(form) {
    var elements = Form.getElements($(form));
    var valid = true;
    for (var i = 0; i < elements.length; i++) {
		if(elements[i].name == 'partner' && elements[i].checked) {
			var partner = elements[i].value;
		}
	}
	var xml_string = "<?xml version='1.0' encoding='UTF-8'?><MaximaleMaandlastenRequest>";
    for (var i = 0; i < elements.length; i++) {
		if (elements[i].name == 'SessionId') {
			xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
		}
		if (partner == 'nee' && ('InkomenAanvrager,LeeftijdAanvrager,KoopsomWoning,EigenMiddelenOverwaarde,NieuwbouwOfBestaand,Vraagprijs,Rente,HoogteHypotheek,RentevastePeriode').indexOf(elements[i].name) !=-1) {
			if (!validate(elements[i])) valid = false;
			xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
		} else if (partner == 'ja' && ('InkomenAanvrager,LeeftijdAanvrager,InkomenPartner,LeeftijdPartner,KoopsomWoning,EigenMiddelenOverwaarde,NieuwbouwOfBestaand,Vraagprijs,Rente,HoogteHypotheek,RentevastePeriode').indexOf(elements[i].name) !=-1) {
			if (!validate(elements[i])) valid = false;
			xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
		}
    }
	xml_string += "</MaximaleMaandlastenRequest>";

	if (valid) {
		var url = '/common/xml/BerekeningenProvider.aspx?maximalemaandlasten';
		processAjax(url,xml_string);
	}
}


// Bereken berekenhoeveelhypotheeknodig.
function berekenhoeveelhypotheeknodig(form) {
    var elements = Form.getElements($(form));
    var valid = true;
    for (var i = 0; i < elements.length; i++) {
		if(elements[i].name == 'partner' && elements[i].checked) {
			var partner = elements[i].value;
		}
	}
	var xml_string = "<?xml version='1.0' encoding='UTF-8'?><HoeveelHypotheekNodigRequest>";
    for (var i = 0; i < elements.length; i++) {
      if (elements[i].name == 'SessionId') {
        xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
      }
      if (partner == 'nee' && ('InkomenAanvrager,Vraagprijs,KostenVerbouwing,NieuwbouwOfBestaand,EigenMiddelenOverwaarde').indexOf(elements[i].name) !=-1) {
        if (!validate(elements[i])) valid = false;
        xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
      } else if (partner == 'ja' && ('InkomenAanvrager,InkomenPartner,Vraagprijs,KostenVerbouwing,NieuwbouwOfBestaand,EigenMiddelenOverwaarde').indexOf(elements[i].name) !=-1) {
        if (!validate(elements[i])) valid = false;
        xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
      }
    }
	xml_string += "</HoeveelHypotheekNodigRequest>";

	if (valid) {
		var url = '/common/xml/BerekeningenProvider.aspx?hoeveelhypotheeknodig';
		processAjax(url,xml_string);
	}
}

// Bereken berekenhoeveelkopenvoorhuren
function berekenhoeveelkopenvoorhuren(form) {
    var elements = Form.getElements($(form));
    var valid = true;
    for (var i = 0; i < elements.length; i++) {
		if(elements[i].name == 'partner' && elements[i].checked) {
			var partner = elements[i].value;
		}
	}
	var xml_string = "<?xml version='1.0' encoding='UTF-8'?><HoeveelKopenVoorHurenRequest>";
    for (var i = 0; i < elements.length; i++) {
		if (elements[i].name == 'SessionId') {
			xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
		}
		if (partner == 'nee' && ('InkomenAanvrager,LeeftijdAanvrager,Huurbedrag,NieuwbouwOfBestaand').indexOf(elements[i].name) !=-1) {
			if (!validate(elements[i])) valid = false;
			xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
		} else if (partner == 'ja' && ('InkomenAanvrager,LeeftijdAanvrager,InkomenPartner,LeeftijdPartner,Huurbedrag,NieuwbouwOfBestaand').indexOf(elements[i].name) !=-1) {
			if (!validate(elements[i])) valid = false;
			xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
		}
    }
	xml_string += "</HoeveelKopenVoorHurenRequest>";

	if (valid) {
		var url = '/common/xml/BerekeningenProvider.aspx?hoeveelkopenvoorhuren';
		processAjax(url,xml_string);
	}
}

// Bereken berekenhoeveelkopenvoorhuren
function overstapcheck(form) {
    var elements = Form.getElements($(form));
    var valid = true;
    for (var i = 0; i < elements.length; i++) {
		if(elements[i].name == 'partner' && elements[i].checked) {
			var partner = elements[i].value;
		}
	}
	var xml_string = "<?xml version='1.0' encoding='UTF-8'?><BesparenRequest>";
    for (var i = 0; i < elements.length; i++) {
		if (elements[i].name == 'SessionId') {
			xml_string += "<"+elements[i].name+">"+elements[i].value+"</"+elements[i].name+">";
		}
		if (('Rente,HoogteHypotheek,RentevastePeriode').indexOf(elements[i].name) !=-1) {
			if (!validate(elements[i])) valid = false;
			xml_string += "<"+elements[i].name+">"+elements[i].value.replace(',', '.')+"</"+elements[i].name+">";
		}
    }
	xml_string += "</BesparenRequest>";

	if (valid) {
		var url = '/common/xml/BerekeningenProvider.aspx?overstapcheck';
		processAjax(url,xml_string);
	}
}

// Ajax ding
var temp;
function processAjax(url,xml_string) {
	showwait();
	var myAjax = new Ajax.Request(url, {
		method: 'post', //get om te testen, moet post zijn
		parameters: "request=" + xml_string,
		onComplete: function(originalRequest) {
      temp = originalRequest.responseText;
			setTimeout(hidewait, 1500);
			setTimeout('showdiv(\'hypodetails\')', 1400);
			//setTimeout('parent.scroll(1,250)', 1400);      
      //setTimeout('showdivLp()', 1400);
			setTimeout('processXML(temp)', 1500);
		},
		onFailure: function(t) {
        	alert('Error ' + t.status + ' -- ' + t.statusText);
			hidewait();
	    }
	});
}

function processXML(xml_string) {
	var spans = document.getElementsByTagName('span');
	for(var i=0;i<spans.length;i++) {
		if (xml_string.indexOf(spans[i].className) != -1) {
			var st = xml_string.indexOf('<'+spans[i].className+'>') + ('<'+spans[i].className+'>').length;
			var et = xml_string.indexOf('</'+spans[i].className+'>',st);
			var val = xml_string.substring(st,et);
			
			if (isInteger(val))
			{
				val = splitandextend(val);
			}
			
			switch (spans[i].className) {
				case "NieuwbouwOfBestaand":
					if (val == '1') {
						val = "Bestaande bouw";
					}
					else {
						val = "Nieuwbouw";
					}
					break;
				case "ActualeRente":
				case "Rente":
					val += "%";
					break;
				case "BesparingPerJaar":
					if (val.indexOf("-") == 0)
					{
						document.getElementById('kanBesparen').style.display = 'none';
						document.getElementById('kanNietBesparen').style.display = 'block';
					}
					else
					{
						document.getElementById('kanBesparen').style.display = 'block';
						document.getElementById('kanNietBesparen').style.display = 'none';
					}
					break;
			}
			spans[i].innerHTML = val;
		}
	}
}
	

// Toon error in formulier
function showerror(element,msg) {
    var row = element;
    while (row = row.parentNode) {
		if (row.tagName.toLowerCase() == 'form')  break;
        if (row.className.indexOf('row') != -1) {
			Element.addClassName(row,'error');
            break;
        }
    }
	var divs = row.getElementsByTagName('div');
	for(var i=0;i<divs.length;i++) {
		if (divs[i].className.indexOf('errorTxt') != -1) {
			divs[i].innerHTML = msg;
			break;
		}
	}
}

// Verberg error in formulier
function hideerror(element) {
    var row = element;
    while (row = row.parentNode) {
		if (row.tagName.toLowerCase() == 'form')  break;
        if (row.className.indexOf('row') != -1) {
			if (row.className.indexOf('error') != -1) {
				Element.removeClassName(row,'error');
			}
            break;
        }
    }
}

// Valideer formulieritem
function validate(element) {
	var className = element.className;
	if ($F(element) == '' && className.indexOf('empty-valid-int') ==-1) {
		showerror(element,'Dit veld mag niet leeg zijn.');
		return false;
	} else if (className.indexOf('valid-int') !=-1) {

    isValidInteger = "1";
    if(className.indexOf('empty-valid-int') !=-1 && $F(element) == "")
    {
      element.value = "0";
    }
    else
    {
      if (!isInteger($F(element)))
        isValidInteger = "0";
    }

		if (isValidInteger == "0") {
			showerror(element,'Dit veld moet getallen bevatten.');
			return false;
		} 
    else
    {
      if(className.indexOf('leeftijd') > -1)
      {
        var intValue = parseInt($F(element));
        if(intValue < 18 || intValue > 65)
        {
          showerror(element,'Voer een leeftijd tussen de 18 en 65 in a.u.b.');
          return false;
        }
      }
      else if(className.indexOf('rentevast') > -1)
      {
        var intValue = parseInt($F(element));
        if(intValue < 0 || intValue > 30)
        {
          showerror(element,'Voer een rentevaste periode tussen 0 en 30 jaar in a.u.b.');
          return false;
        }
      }
      else if(className.indexOf('koopsom') > -1)
      {
        var intValue = parseInt($F(element));
        if(intValue < 10000 || intValue > 10000000)
        {
          showerror(element,'Dit veld moet een re&euml;le koopsom bevatten.');
          return false;
        }
      }
      else if(className.indexOf('inkomen') > -1)
      {
        var intValue = parseInt($F(element));
        if(intValue < 0 || intValue > 10000000)
        {
          showerror(element,'Dit veld moet een re&euml;el inkomen bevatten.');
          return false;
        }
      }
      else if(className.indexOf('overwaarde') > -1 || className.indexOf('verbouwing') > -1)
      {
        var intValue = parseInt($F(element));
        if(intValue < 0 || intValue > 10000000)
        {
          showerror(element,'Dit veld moet re&euml;le waarde bevatten.');
          return false;
        }
      }
    }
	} else if (className.indexOf('valid-rente') !=-1) {
		if (!isRente($F(element))) {
			showerror(element,'Dit veld moet een rente waarde hebben. (xx,x)');
			return false;
		}
    else
    {
      var parsed = element.value.replace(',', '.');
      var fltValue = parsed;
      if(fltValue < 2.0 || fltValue > 12.0)
      {
        showerror(element,'Dit veld moet een re&euml;le rente waarde bevatten.');
        return false;
      }
    }
	}
	hideerror(element);
	return true;
}
function isInteger(val) {
	return (val.match("^[0-9]+$") != null);
}

function isRente(val) {
	return ((val.match("^([0-9]{1,2}),[0-9]$") != null) || (val.match("^([0-9]{1,2})$") != null));
}


function splitandextend(val)
{
	var temp = new Array()
	var i = 0;
	var length = val.length;
	var new_number = "";
	
	while (length>0)
	{	
		if(length>3)
		{
			temp[i] = val.substring(length, length-3);
			length = length-3;
			i++;						
		}
		else 
		{
			temp[i] = val.substring(length, 0);
			length = 0;
		}
	}
	
	while (i>0)
	{
		new_number += temp[i] + ".";
		i--;
	}
	new_number += temp[0];
	return new_number;
}