var mnAJAX = null;
function ajaxInit()
{
	if (mnAJAX == null)
	{
		try
		{    
			// Firefox, Opera 8.0+, Safari    
			mnAJAX = new XMLHttpRequest();    
		}
		catch (e)
    {    
			// Internet Explorer    
			try
			{      
				mnAJAX = new ActiveXObject("Msxml2.XMLHTTP");      
			}
    	catch (e)
      {      
				try
				{        
					mnAJAX = new ActiveXObject("Microsoft.XMLHTTP");        
				}
      	catch (e)
        {        
          return null;        
				}	      
			}    
		}
	}
	else if (mnAJAX.readyState != 0)
	{
		mnAJAX.abort();
	}
	return mnAJAX;
}
function ajaxObject(url, obj, cb) 
{
	var that=this;      
  this.updating = false;
  this.update = function(passData,postMethod) 
	{ 
    if (that.updating==true) 
		{ 
			return false; 
		}
    that.updating=true;                       
    var AJAX = ajaxInit();                    
    if (AJAX == null) 
		{                             
      return false;                               
    } 
		else 
		{
      AJAX.onreadystatechange = function() 
      {  
        if (AJAX.readyState==4) 
				{             
					that.updating=false;
					if (that.object != null)
					{
						that.object.innerHTML = AJAX.responseText;
					}                
					else
					{
						that.callback(AJAX.responseText,AJAX.status,AJAX.responseXML);
					}        
          delete AJAX;                                         
        }                                                      
      }                                                        
      var timestamp = new Date();                              
      if (postMethod=='POST') 
			{
        var uri=urlCall;
        AJAX.open("POST", uri, true);
        AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
				AJAX.setRequestHeader("Content-length", passData.length);
				AJAX.setRequestHeader("Connection", "close");
        AJAX.send(passData);
      } 
			else 
			{
        var uri=urlCall+'?'+passData;
        AJAX.open("GET", uri, true);                             
        AJAX.send(null);                                         
      }              
      return true;                                             
    }                                                                           
  }
  var urlCall = url;
	this.object = obj; 
  this.callback = cb || function () { };
} 
function ajaxAttachScriptCb(responseText, responseStatus) 
{
	if (responseStatus==200) 
	{
		eval(responseText);
	}
}

function ajaxPostMe(url,form,target,cb)
{
	var params = ajaxGetParams(form);
	var f = new ajaxObject(url,target,cb);
	f.update(params,'POST');
}
function ajaxGetMe(url,params,target,cb)
{
	var f = new ajaxObject(url,target,cb);
	f.update(params,'GET');
}
function goQ()
{
  var form = document.getElementById('calculator');
  var amount = form.amount.value;
  var months = form.months.value;
  var rate = form.rate.value;
  if (!IsNumeric(amount) || (amount.length == 0))
  {
    alert("Beloppet får bara innehålla siffror!");
    return;
  }
  if (!IsNumeric(months) || (months.length == 0))
  {
    alert("Återbetalningstiden får bara innehålla siffror!");
    return;
  }
  amount.replace(',','');
  months.replace(',','');
  rate.replace(',','.');
  if (!IsNumeric(rate) || (rate.length == 0))
  {
    alert("Räntan får bara innehålla siffror (och punkt)!");
    return;
  }
  
  if (amount > 100000000)
  {
    amount = 100000000;
    alert("Beloppet får vara högst 100000000");
  }
  else if (amount < 1000)
  {
    amount = 1000;
    alert("Beloppet får vara lägst 1000 kr");
  } 
  if (months > 900)
  {
    months = 900;
    alert("Återbetalningstiden får vara högst 900 månader (75 år)");
  }
  else if (months < 1)
  {
    months = 1;
    alert("Återbetalningstiden får vara lägst 1 månad");
  }
  if (rate > 100)
  {
    rate = 100;
    alert("Räntan får vara högst 100%");
  }
  else if (rate < 0.1)
  {
    rate = 0.1;
    alert("Räntan får vara lägst 0.1%");
  }
  
  form.amount.value = amount;
  form.months.value = months;
  form.rate.value = rate;

  var params = 'amount='+escape(amount)+'&months='+escape(months)+'&rate='+escape(rate);
  obj  = document.getElementById('ajax');
  url = './calculate.php';
  f = new ajaxObject(url,obj);
  if (f)
	{
    obj.style.display = 'block';
		f.update(params,'GET');
	}
	else
	{
		obj.style.display = 'none';
	}
	
}

function IsNumeric(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;   
}

function setStatus(text)
{
  window.status = text;
  alert(text);
}