function makeAjaxRequest(url,params,callBack) {
  http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
      // See note below about this line
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
      http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }

  if (!http_request) {
    alert('Giving up :( Cannot create an XMLHTTP instance');
    return false;
  }
  http_request.onreadystatechange = callBack;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", params.length);
  http_request.setRequestHeader("Connection", "close");
  
  http_request.send(params);
}
function emptyCallBack() {}

function calcolaRata(){
  if (validate()){
	var form = document.calcolaRataForm;
  	var params = prepareData(form);
  	var url = '/mm/calcolaRata.do';
  	makeAjaxRequest(
    		url,params,
    	getRataData);
  } else {
  	clearFields();
  }
}

function prepareData(form){
	var numeroElementi = form.elements.length;
	var stringa="";
	for(var i = 0; i < numeroElementi; i++){
		if(i < numeroElementi-1){
			stringa += form.elements[i].name+"="+encodeURIComponent(form.elements[i].value)+"&";
		}else{
			stringa += form.elements[i].name+"="+encodeURIComponent(form.elements[i].value);
		} 
	}
	return stringa;
}

function getRataData(){
  if (http_request.readyState == 4) {
    if (http_request.status == 200) {
      try{
        var esito = http_request.responseXML.getElementsByTagName('result')[0].getAttribute('esito');
        if (esito == "success"){
          var capitaleTotale = http_request.responseXML.getElementsByTagName('totaleCapitale')[0].firstChild.nodeValue;
          var interesseTotale = http_request.responseXML.getElementsByTagName('totaleInteresse')[0].firstChild.nodeValue;
          var numeroRateRegime = http_request.responseXML.getElementsByTagName('numeroRateRegime')[0].firstChild.nodeValue;
          var rataRegime = http_request.responseXML.getElementsByTagName('rataRegime')[0].firstChild.nodeValue;
          updateField(capitaleTotale,interesseTotale,numeroRateRegime,rataRegime);
        } else {
          clearFields();
        }
      } catch (e){
      alert('Errore Ajax');
    }
  }
  else {
    alert('There was a problem with the request.' + http_request.status);
    }
  }
}

function clearFields(){
	document.getElementById('totaleCapitaleField').innerHTML='';
	document.getElementById('totaleInteressiField').innerHTML='';
	document.getElementById('rataRegimeField').innerHTML='';
}

function validateImporto(importo){
	var pattern = /^((\d{1,3}(((,\d{3})*(\.\d{1,2})?)|((\.\d{3})*(,\d{1,2})?)))|(\d+([\.,]\d{1,2})?))$/;	
	
 	if (pattern.test(importo)) {
		return true;
	}
	else {
    		return false;
  	}
}

function validateSpread(spread){
	var pattern = /^(\d{1,3}([\.,]\d{1,4})?)$/;
	var pattern0 = /^0+$/;
	if (pattern.test(spread) && !pattern0.test(spread)) {
		return true;
	}
	else {
    		return false;
  	}
}

function validateRequired(field){
	return field != "";
}

function validate(){
	
	if (!validateImporto(document.calcolaRataForm.importoMutuoStr.value)) {
		crMessage(1);
		return false;
	}
	if (document.calcolaRataForm.tassoRegime.value == 0 && 
		!validateSpread(document.calcolaRataForm.tassoRegimeSpreadStr.value)) {
		crMessage(2);
		return false;
	}
	return true;
}

function showCellaSpread(t) {
	var cellaSpread = document.getElementById('cellaSpread');
	
	var IE=(window.navigator.userAgent.indexOf('MSIE')>-1)?1:0;

	if(t=='true') {
		cellaSpread.style.display = (IE)?'block':'table-row';
	} else {
		cellaSpread.style.display = 'none';
	}
}

function updateSpread(){
	if (document.calcolaRataForm.tassoRegime.value == 0) {
		showCellaSpread('true');
	} else {
		showCellaSpread('false');
	}
}