<!--
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };
//var baseurl = 'http://www.knvb.nl/verzekeringen/selectie';
var baseurl = '/verzekeringen/';
var storage = new Array();
var errors = {
  'data' : 'Er kon geen data ingelezen worden.',
  'dienstwijzer' : 'U bent niet akkoord gegaan met de dienstwijzer.\nU kunt dan niet verder gaan met het afsluiten van een verzekering.',
  'eigenaar' : "Op dit moment kunt helaas alleen een verzekering\naanvragen indien u naast bestuurder\nook de eigenaar bent.",
  'geboortedatum' : 'Er is geen geldige geboortedatum ingevoerd.',
  'ingangsdatum' : 'De ingangsdatum mag maximaal zeven dagen in het\nverleden liggen, en één jaar in de toekomst.',
  'jarenRijbewijs' : "Het aantal jaren rijbewijs komt niet overeen met uw geboortedatum.",
  'kenteken' : 'Er is geen geldig kenteken ingevoerd.',
  'kenteken_ongeldig' : 'Er is een ongeldig kenteken ingevoerd.\nWellicht betreft het een motor, caravan of een bestelwagen.',
  'laadmodellen' : "Er zijn geen auto-modellen gevonden.\nSelecteer een ander merk.",
  'laadtypen' : "Er zijn geen auto-typen gevonden.\nSelecteer een ander model.",
  'leeftijd' : "U dient ten minste 18 jaar oud te zijn om een verzekering aan te vragen.",
  'nationaliteit' : "U kunt momenteel alleen een verzekering aanvragen\nindien u de Nederlandse nationaliteit heeft.",
  'nieuwendagwaarde' : 'De dagwaarde van uw auto mag\nniet hoger zijn dan de nieuwwaarde.',
  'ovi' :  "Uw gegevens omtrent de ongevallen inzittenden verzekering zijn incorrect of onvolledig.",
  'postcode' : 'Er is geen geldige postcode ingevoerd.',
  'rbv' : "Uw gegevens omtrent de rechtsbijstandverzekering zijn incorrect of onvolledig.",
  'reden' : "U dient voor het volgende veld ook een reden op te geven:\n",
  'rekeningnummer' : "U dient een geldig rekeningnummer in te voeren",
  'schadevrij' : "U kunt niet meer schadevrije jaren hebben \ndan het aantal jaar dat u uw rijbewijs heeft.",
  'svi' :  "Uw gegevens omtrent de schadeverzekeringen inzittenden zijn incorrect of onvolledig.",
  'vergelijkTeVeel' : "Er zijn te veel resultaten geselecteerd.\nSelecteer er maximaal drie.",
  'vergelijkTeWeinig' : "Er zijn te weinig resultaten geselecteerd.\nSelecteer er minimaal twee.",
  'verplicht' : "U heeft het volgende veld niet ingevuld:\n",
  'verzekeringsaanvraag' : "Het gekozen resultaat kan niet worden geselecteerd.",
  'voorwaarden' : "U dient akkoord te gaan met de voorwaarden,\nalvorens u kunt verder gaan."
};

function MM_openBrWindow(theURL,winName,width,height)
{ //v2.0
    height = height ;
    var winl = (screen.width - width) / 2;
    var wint = (screen.height - height) / 2;
    var i = width ;
    var j = height ;
    var features = 'scrollBars=yes,resizable=yes,width='+width+',height='+height+',top='+wint+',left='+winl+'';
    var popupscherm;
    popupscherm=window.open(theURL,winName,features);
    popupscherm.resizeTo(i,j);
    popupscherm.focus();
}

/* Generic Ajax functions */
function init()
{
  var obj = document.getElementById('bouwjaar');
  if(obj)
  {
    obj.onchange = onSelectChange;
    obj.onkeyup = onSelectKeyUp;
    resetAllForms();
  }
  obj = document.getElementById('polis_dekking');
  if(obj)
  {
    obj.onchange = onSelectChange;
    obj.onkeyup = onSelectKeyUp;
  }
  obj = document.getElementById('polis_betalingstermijn');
  if(obj)
  {
    obj.onchange = onSelectChange;
    obj.onkeyup = onSelectKeyUp;
  }
  obj = document.getElementById('rijinvloed_ext');
  if(obj)
  {
    var radioVal = getRadioValueByName('rijinvloed');
    setExplanation(obj.id,(radioVal=='true'));
  }
  obj = document.getElementById('aanrakingjustitie_ext');
  if(obj)
  {
    var radioVal = getRadioValueByName('aanrakingjustitie');
    setExplanation(obj.id,(radioVal=='true'));
  }
  obj = document.getElementById('opzeggingachtjaar_ext');
  if(obj)
  {
    var radioVal = getRadioValueByName('opzeggingachtjaar');
    setExplanation(obj.id,(radioVal=='true'));
  }
  obj = document.getElementById('rijbewijs_ext');
  if(obj)
  {
    var radioVal = getRadioValueByName('rijbewijs');
    setExplanation(obj.id,(radioVal=='false'));
  }
  obj = document.getElementById('ontzegging_ext');
  if(obj)
  {
    var radioVal = getRadioValueByName('ontzegging');
    setExplanation(obj.id,(radioVal=='true'));
  }
  obj = document.getElementById('nrschuldschaden');
  if(obj)
  {
    setExplanation(obj.id+'_ext',(!(obj.value=='as0' || obj.value=='')));
    obj.onchange = onSelectChange;
    obj.onkeyup = onSelectKeyUp;
  }
  obj = document.getElementById('ovi_ext');
  if(obj)
  {
    var radioVal = getRadioValueByName('ovi');
    setExplanation(obj.id,(radioVal=='true'));
  }
  obj = document.getElementById('svi_ext');
  if(obj)
  {
    var radioVal = getRadioValueByName('svi');
    setExplanation(obj.id,(radioVal=='true'));
  }
  obj = document.getElementById('rbv_ext');
  if(obj)
  {
    var radioVal = getRadioValueByName('rbv');
    setExplanation(obj.id,(radioVal=='true'));
    updatePrice();
  }
  obj = document.getElementById('ovi_aantal');
  if(obj)
  {
    obj.onchange = onSelectChange;
    obj.onkeyup = onSelectKeyUp;
  }
  obj = document.getElementById('ovi_invaliditeit');
  if(obj)
  {
    obj.onchange = onSelectChange;
    obj.onkeyup = onSelectKeyUp;
  }
  obj = document.getElementById('ovi_overlijden');
  if(obj)
  {
    obj.onchange = onSelectChange;
    obj.onkeyup = onSelectKeyUp;
  }
}

  function onRadioClick(name)
  {
    var val = getRadioValueByName(name);
    switch(name)
    {
      case 'ovi':
      case 'svi':
      case 'rbv':
        setExplanation(name+'_ext', (val=='true'));
        updatePrice();
        break;
      case 'rijinvloed':
      case 'aanrakingjustitie':
      case 'ontzegging':
      case 'opzeggingachtjaar':
        setExplanation(name+'_ext', (val=='true'));
        break;
      case 'rijbewijs':
        setExplanation(name+'_ext', (val=='false'));
        break;
      default:
        break;
    }
  }

  // #######################################################
  // ####     GENERAL FUNCTIONS FOR AJAX CALLS          ####
  // #######################################################
  var processing = false;
  var ajaxMethod = '';
  var http_request = false;
  var divName = '';
  var ajaxAction = true;
  var ajaxErrorAction = true;
  function processAjax(methodName, targetURL, targetDiv, parameters, values, nocache, submitMethod)
  // General funcion to handle ajax calls. The necessary parameters are the targetURL
  // and the targetDiv. Optional parameters (and values) can be attached. From dynamic pages
  // the nocache can be set on true (by default false) and the method can be POST or GET
  // default GET)
  // After the call, processResult will be called by this function to finish the result
  {
     var paramStr = '';
     if(typeof(setBusyState) === 'function')
     {
       setBusyState(true);
     }
     if(targetDiv!=null)
       divName = targetDiv;
     if(methodName!=null)
       ajaxMethod = methodName;
     if(!(parameters==null && values==null))
     {
        for(i=0; i < parameters.length; i++)
        {
        paramStr += (i==0?'':'&');
        paramStr += parameters[i]+'='+values[i];
        }
     }
     http_request = false;
     if (window.XMLHttpRequest)
     { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType)
           http_request.overrideMimeType('text/xml');
     } 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)
        return false;
     http_request.onreadystatechange = processResult;
     if(submitMethod=='POST')
     {
       if(paramStr.length > 0)
       {
         http_request.open('POST', targetURL, true);
         http_request.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=iso-8859-1");
         http_request.setRequestHeader("Content-length", (parameters?parameters.length:0));
         http_request.setRequestHeader("Connection", "close");
         http_request.send(paramStr);
       }else
       {
         alert('URL-call without parameters, should not be POST');
         if(ajaxErrorAction)
           doAjaxErrorAction(null);
         else
         {
           if(typeof(setBusyState) === 'function')
           {
             setBusyState(false);
           }
         }
       }
     }else
     {
        http_request.open('GET', targetURL + '?' + paramStr, true);
        //For example for dynamic index-pages
        if(nocache=== true)
           http_request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
        http_request.send(null);
     }
  }

  function processResult()
  // If an ajax call was done succesfully, the targetDIV (set in processAjax) will be filled.
  // If doSpecialAjaxAction has been set on true, this function is being called.
  // If there is no success and doSpecialAjaxErrorAction has been set on true, that function is
  // called instead
  {
    var reset = false;
     if (http_request.readyState == 4)
     { // Complete
        if (http_request.status == 200)
        { // OK response
           if(ajaxAction)
              doAjaxAction(http_request);
           else
           {
              reset = true;
           }
        }else
        {
           if(ajaxErrorAction)
              doAjaxErrorAction();
           else
           {
              reset = true;
           }
        }
     }
     if(reset ==true && typeof(setBusyState) === 'function')
     {
       setBusyState(false);
     }
  }

  function doAjaxAction(input)
  {
    if(ajaxMethod == null || ajaxMethod.length == 0)
      return;
    try {
      if(typeof input.responseXML === 'undefined')
      {
        // for mozzila, should not be required, Content-Type text/xml
        var parser = new DOMparser();
        var doc = parser.parseFromString( input.responseText, "text/xml" );
        var xmlDoc = doc.documentElement;
       }
      else {
        if ((input.responseXML) && (input.responseXML.documentElement === null ))
        {
          var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
          xmlDoc.loadXML(input.responseText);
        }else
        {
          var xmlDoc = input.responseXML.documentElement;
        }
      }

      var obj = document.getElementById(divName);
      /*
        obj.innerHTML = input.responseText;
      */
      switch(ajaxMethod)
      {
        case 'laadModellen':
          var models = new Array(new Array('0', '---Selecteer---'));
          if(obj)
          {
            var status = xmlDoc.getElementsByTagName('status')[0].firstChild.data;
            if(status == 'success')
            {
              var items = xmlDoc.getElementsByTagName('item');
              for (j=0;j<items.length;j++)
    	        {
                var modelId = items[j].childNodes[0].firstChild.data;
                var omschrijving = items[j].childNodes[1].firstChild.data;
                models.push(new Array(modelId, omschrijving));
    	        }
            }else
            {
              alert(errors['data']);
            }
          }
          //Busy state reset before fillObj, otherwise the "old"
          //disabled value will be used for "model"
          setBusyState(false);
          if(models.length > 1)
            fillObj('model', models);
          else
            alert(errors['laadmodellen']);

        break;
        case 'laadTypen':
          var types = new Array(new Array('0', '---Selecteer---'));
          if(obj)
          {
            var status = xmlDoc.getElementsByTagName('status')[0].firstChild.data;
            if(status == 'success')
            {
              var items = xmlDoc.getElementsByTagName('item');
              for (j=0;j<items.length;j++)
    	        {
                var typeId = items[j].childNodes[0].firstChild.data;
                var omschrijving = items[j].childNodes[1].firstChild.data;
                types.push(new Array(typeId, omschrijving));
    	        }
            }else
            {
              alert(errors['data']);
            }
          }
          //Busy state reset before fillObj, otherwise the "old"
          //disabled value will be used for "model"
          setBusyState(false);
          if(types.length > 1)
            fillObj('type', types);
          else
            alert(errors['laadtypen']);
        break;
        default:
          setBusyState(false);
        break;
      }
    }catch (e) {
      //alert("Error occurred:"+e.message);
      setBusyState(false);
    }
  }

  function doAjaxErrorAction(input)
  {
    if(typeof(setBusyState) === 'function')
    {
      setBusyState(false);
    }
  }

function onLcCheck(suffix)
{
  if(!suffix) {
    suffix = '';
  }
  var kenteken = getVal('kenteken'+suffix);
  kenteken = kenteken.replace(/-/g,"");

  /*
  var kenteken1 = getVal('kenteken1'+suffix);
  var kenteken2 = getVal('kenteken2'+suffix);
  var kenteken3 = getVal('kenteken3'+suffix);
  */
  //if(checkVal(kenteken1, 'alphanum') && checkVal(kenteken2, 'alphanum') && checkVal(kenteken3, 'alphanum'))
    if(checkVal(kenteken, 'alphanum') && kenteken.length == 6)
  {
    //if(kenteken1.substr(0,1) == 'M' || kenteken1.substr(0,1) == 'W' || kenteken1.substr(0,1) == 'V' || kenteken1.substr(0,1) == 'B' )
    if(kenteken.substr(0,1) == 'M' || kenteken.substr(0,1) == 'W' || kenteken.substr(0,1) == 'V' || kenteken.substr(0,1) == 'B' )
    {
      alert(errors['kenteken_ongeldig']);
      return;
    }
    //var kenteken = kenteken1+'-'+kenteken2+'-'+kenteken3;
    var datum = getVal('datum'+suffix);
    if(checkDate(datum))
    {
      var postcode = getVal('postcode'+suffix);
      if(postcode.length==6 && checkVal(postcode, 'alphanum'))
      {
        var result = (getAge(datum) >= 18 && getAge(datum) <= 110);
        if(!result)
        {
          alert(errors['leeftijd']);
          return;
        }
//        document.getElementById('kenteken'+suffix).value = kenteken;
        document.getElementById('datum'+suffix).value = datum;
        document.getElementById('postcode'+suffix).value = postcode;
        document.getElementById('inputform'+suffix).submit();
      }else
      {
        alert(errors['postcode']);
      }
    }else
    {
      alert(errors['geboortedatum']);
    }
  }else
  {
    alert(errors['kenteken']);
  }
}

function forceUC(obj,len,next_field)
{
  if(obj)
  {
    obj.value = getVal(obj).toUpperCase();
  }
  var val =getVal(obj);
  if(val)
  {
    var next = document.getElementById(next_field);
    var selection = getSelectionRange(obj);
    if(obj.id.indexOf('kenteken') == 0) {
      makeKenteken(obj);
    }    
    if(selection.start == val.length)
    {
  		if (val.length == len) {
  		  if(next)
          next.focus();
  		}else if(obj.id.toLowerCase().indexOf('datum')>=0 && val.length == 8 && checkVal(val, 'integer'))
  		{
  		  obj.value = val.substr(0,2)+'-'+val.substr(2,2)+'-'+val.substr(4,4);
        if(next)
          next.focus();
  		}
    }//
    //else correction made in input field
  }
}
function makeKenteken(obj)  {
  var val =getVal(obj);
  val = val.replace(/-/g,"");
  if(val.length  >= 6){
    if(val.search(/[a-zA-Z]\d$/g) != -1)
      obj.value = val.substr(0, 2) + "-" + val.substr(2, 3) + "-" + val.substr(5, 1);
    else
      obj.value = val.substr(0, 2) + "-" + val.substr(2, 2) + "-" + val.substr(4, 2);
    }
}

function checkAndSetLicense() {
  var obj = document.getElementById('jarenRijbewijs');
  var rijbewijsVal = getVal(obj.options[obj.selectedIndex]);
  var gebobj = document.getElementById('geboortedatum');
  if(rijbewijsVal=="" && gebobj.value.length > 2 && gebobj) {
    var age = getAge(getVal(gebobj));
    var diff = parseInt(age - 19);
    if(diff >= 0) {
      if(diff <= 7){
         obj.selectedIndex=diff+1;
      }else {
        obj.selectedIndex=9;
      }
    }
  }
}

function fillDate() {
  var obj = document.getElementById('ingangsdatum');
  if(obj.value == '') {
    var today = new Date();
    var day = today.getDay();
    if(parseInt(day) < 10) {
      day = '0'+day;
    }
    var month = parseInt(today.getMonth())+1;
    if(parseInt(month) < 10) {
      month = '0'+month;
    }
    var year = today.getFullYear();
    obj.value = day + '-' + month + '-' + year;
  }
}
function getVal(input, area)
{
  var type = (typeof input);
  type = type.toLowerCase();
  if(!input)
    return null;
  if(!area)
    area = 'value';
  if(type == 'object')
  {
    if(input.type && input.type.toLowerCase() == 'checkbox')
    {
      return (input.checked == true)?'yes':'no';
    }
    else
      return input.value.trim();
  }else
  {
    if(!document.getElementById(input))
      return null;
    else if(area=='html')
      return document.getElementById(input).innerHTML.trim();
    else
      return document.getElementById(input).value.trim();
  }
}

function checkVal(val, type)
{
  if(val == null)
    return false;
  var regExpr = {
  	'alpha'   : /^[a-zA-Z\.\-]*$/,
  	'alphanum': /^\w+$/,
  	'integer' : /^[\+\-]?\d*$/
  }
  var empty = (val.length == 0);
  if(!empty && type!=null && regExpr[type]!=null)
  {
      return regExpr[type].test(val);
  }else
  {
    return !empty;
  }
}

function checkDate(val)
{
  re_dt = /^(\d{1,2})\-(\d{1,2})\-(\d{4})$/;
	if (!re_dt.test(val))
		return false;
	// check allowed ranges
	if (RegExp.$1 > 31 || RegExp.$2 > 12)
		return false;
	// check number of day in month
	var dt_test = new Date(RegExp.$3, Number(RegExp.$2-1), RegExp.$1);
	if (dt_test.getMonth() != Number(RegExp.$2-1))
		return false;
	return true;
}


/* Manual process, with auto-updating dropdown boxes */
function onSelectKeyUp(e)
{
  var evt;
	var keyCodeTab = "9";
	var keyCodeEnter = "13";
	var keyCodeEsc = "27";
	if (e)
	{
		evt = e;
	}
	else
	{
		evt = event;
	}
	if ((evt.keyCode == keyCodeEnter || evt.keyCode == keyCodeTab))
	{
			(evt.target == null)?processChange(evt.srcElement):processChange(evt.target);
	}
	return true;
}



function onSelectChange(e)
{
  var evt;
	if (e)
	{
		evt = e;
	}
	else
	{
		evt = event;
	}
  (evt.target == null)?processChange(evt.srcElement):processChange(evt.target);
}

function fillObj(id, options)
{
  if(document.getElementById(id))
  {
    var obj = document.getElementById(id);
    if(obj.nodeName == 'SELECT' || obj.nodeName == 'INPUT')
    {
      if(!options)
      {
        //do nothing
      }else if(options.length > 0 && obj.nodeName == 'SELECT')
      {
        obj.options.length = 0;
        for(i=0;i<options.length;i++)
        {
          obj.options[i] = new Option(options[i][1],options[i][0]);
        }
      }
      obj.disabled = false;
      obj.onchange = onSelectChange;
      obj.onkeyup = onSelectKeyUp;
    }
  }
}

function processChange(obj)
{
  if(!obj)
    return;
  if(obj.nodeName == 'SELECT')
  {
    var val = getVal(obj.options[obj.selectedIndex]);
    switch(obj.id)
    {
      case 'bouwjaar':
        if(val.length == 4 && val > 0)
        {
          resetObj('bouwmaand');
          resetObj('model');
          resetObj('merk');
          resetObj('type');
          resetObj('brandstof');
          resetObj('kmstand');
          fillObj('bouwmaand');
        }
        break;
      case 'bouwmaand':
        if(val > 0 && val < 13)
        {
          resetObj('merk');
          resetObj('model');
          resetObj('type');
          resetObj('brandstof');
          resetObj('kmstand');
          fillObj('merk');
        }
        break;
     case 'merk':
        if(val > 0)
        {
          resetObj('model');
          resetObj('type');
          resetObj('brandstof');
          resetObj('kmstand');
          var obj = document.getElementById('bouwjaar');
          var bouwjaar = (obj==null)?0:getVal(obj.options[obj.selectedIndex]);
          obj = document.getElementById('bouwmaand');
          var bouwmaand = getVal(obj.options[obj.selectedIndex]);
          obj = document.getElementById('merk');
          var merk = getVal(obj.options[obj.selectedIndex]);
          processAjax('laadModellen', baseurl, 'ajaxLoader',new Array('method','bouwjaar','bouwmaand','merk'), new Array('getCarModels',bouwjaar,bouwmaand,merk), false, 'GET');
          break;
        }
        break;
      case 'model':
        resetObj('type');
        resetObj('brandstof');
        resetObj('kmstand');
        var obj = document.getElementById('bouwjaar');
        var bouwjaar = (obj==null)?0:getVal(obj.options[obj.selectedIndex]);
        obj = document.getElementById('bouwmaand');
        var bouwmaand = getVal(obj.options[obj.selectedIndex]);
        obj = document.getElementById('merk');
        var merk = getVal(obj.options[obj.selectedIndex]);
        obj = document.getElementById('model');
        var model = getVal(obj.options[obj.selectedIndex]);
        processAjax('laadTypen', baseurl, 'ajaxLoader',new Array('method','bouwjaar','bouwmaand','merk','model'), new Array('getCarTypes',bouwjaar,bouwmaand,merk,model), false, 'GET');
        break;
      case 'type':
        if(val > 0)
        {
          resetObj('brandstof');
          resetObj('kmstand');
          fillObj('brandstof');
        }
        break;
      case 'brandstof':
          resetObj('kmstand');
          fillObj('kmstand');
      case 'polis_dekking':
      case 'polis_betalingstermijn':
        var form = document.getElementById('polisform');
        if(form)
          form.submit();
        break;
      case 'rijinvloed':
      case 'aanrakingjustitie':
      case 'ontzegging':
      case 'opzeggingachtjaar':
        setExplanation(obj.id+'_ext', (val=='true'));
        break;
      case 'rijbewijs':
        setExplanation(obj.id+'_ext', (val=='false'));
        break;
      case 'nrschuldschaden':
        setExplanation(obj.id+'_ext', (!(obj.value=='as0' || obj.value=='')));
        break;
      case 'svi':
      case 'ovi':
      case 'rbv':
        setExplanation(obj.id+'_ext', (val=='true'));
        updatePrice();
        break;
      case 'ovi_aantal':
      case 'ovi_invaliditeit':
      case 'ovi_overlijden':
        var val_nr = getVal('ovi_aantal');
        var val_in = getVal('ovi_invaliditeit');
        var val_ov = getVal('ovi_overlijden');
        if(!val_nr || !val_in || !val_ov ||
            val_nr == '' || val_in == '' || val_ov == '')
          return;
        else
          submitExtraVerzekeringen(1);
      default:
        //No match, do nothing
        break;
    }
  }
}

function submitExtraVerzekeringen(update)
{
  var obj = document.getElementById('continue');
  var form = document.getElementById('inputform');
  if(!(!obj || !form))
  {
    obj.value = 'update';
    form.submit();
  }
}

function updatePrice()
{
  var base = getVal('price_base','html');
  base = parseFloat(base.substr(base.indexOf(' ')).replace(',','.'));
  var oviCont = document.getElementById('ovi_ext');
  var sviCont = document.getElementById('svi_ext');
  var rbvCont = document.getElementById('rbv_ext');
  if(!oviCont || !sviCont || !rbvCont)
    return
  var oviObj = checkRadio('inputform','ovi_select');
  var sviObj = checkRadio('inputform','svi_select');
  var rbvObj = checkRadio('inputform','rbv_select');

  var ovi = (oviObj && oviCont.style.display=='block')?parseInt(oviObj.id.substr(oviObj.id.lastIndexOf('_')+1)):0;
  var svi = (sviObj && sviCont.style.display=='block')?parseInt(sviObj.id.substr(sviObj.id.lastIndexOf('_')+1)):0;
  var rbv = (rbvObj && rbvCont.style.display=='block')?parseInt(rbvObj.id.substr(rbvObj.id.lastIndexOf('_')+1)):0;
  if(ovi != 0)
  {
    ovi_premie = getVal('ovi_premie_'+ovi,'html');
    ovi_premie = parseFloat(ovi_premie.substr(ovi_premie.indexOf(' ')+1).replace(',','.'));
  }else
    ovi_premie=0
  if(svi != 0)
  {
    svi_premie = getVal('svi_premie_'+svi,'html').replace(',','.');
    svi_premie = parseFloat(svi_premie.substr(svi_premie.indexOf(' ')+1).replace(',','.'));
  }else
    svi_premie=0
  if(rbv != 0)
  {
    rbv_premie = getVal('rbv_premie_'+rbv,'html');
    rbv_premie = parseFloat(rbv_premie.substr(rbv_premie.indexOf(' ')+1).replace(',','.'));
  }else
    rbv_premie=0
  var tax = parseFloat((base+svi_premie+rbv_premie)*0.075);//ovi_premie excluded
  var total = base+ovi_premie+svi_premie+rbv_premie+tax;
  var obj = document.getElementById('price_ovi');
  if(obj)
    obj.innerHTML = '€ ' + num2money(ovi_premie);
  copyValue('ovi_premie',('&#8364; ' + num2money(ovi_premie)));
  copyValue('ovi_value',(ovi==0?'':getVal('ovi_value_'+ovi)));
  copyValue('ovi_maatschappij',(ovi==0?'':getVal('ovi_maatschappij_'+ovi,'html')));
  obj = document.getElementById('price_svi');
  if(obj)
    obj.innerHTML = '€ ' + num2money(svi_premie);
  copyValue('svi_premie',('&#8364; ' + num2money(svi_premie)));
  copyValue('svi_value',(svi==0?'':getVal('svi_value_'+svi)));
  copyValue('svi_maatschappij',(svi==0?'':getVal('svi_maatschappij_'+svi,'html')));
  obj = document.getElementById('price_rbv');
  if(obj)
    obj.innerHTML = '€ ' + num2money(rbv_premie);
  copyValue('rbv_premie',('&#8364; ' + num2money(rbv_premie)));
  copyValue('rbv_value',(rbv==0?'':getVal('rbv_value_'+rbv)));
  copyValue('rbv_maatschappij',(rbv==0?'':getVal('rbv_maatschappij_'+rbv,'html')));
  obj = document.getElementById('price_tax');
  if(obj)
    obj.innerHTML = '€ ' + num2money(tax);
  copyValue('tot_belasting',('&#8364; ' + num2money(tax)));
  obj = document.getElementById('price_total');
  if(obj)
    obj.innerHTML = '€ ' + num2money(total);
  copyValue('tot_premie',('&#8364; ' + num2money(total)));

}

function copyValue(id,value)
{
  var obj = document.getElementById(id);
  if(obj)
  {
    obj.value = value;
  }
}


function checkRadio(frmName, rbGroupName) {
  var radios = document[frmName].elements[rbGroupName];
  if(!radios)
    return null;
  for (var i=0; i <radios.length; i++)
  {
    if (radios[i].checked)
    {
      return radios[i];
    }
  }
  return null;
}

function setExplanation(id,state)
{
  var obj = document.getElementById(id);
  if(!obj)
    return;
  if(state == true)
  {
    obj.style.display = 'block';
    obj.style.visibility = 'visible';
  }else
  {
    obj.style.display = 'none';
    obj.style.visibility = 'hidden';
  }
}


function getAge(born,on)
{
  if(!born)
    return false;
  if (typeof(on) == 'undefined') on = new Date();
	var day = parseInt(born.substr(0,2));
	var month = parseInt(born.substr(3,2)) - 1;
  var year = parseInt(born.substr(6,4));
	var theirDate = new Date((year), month, day);
	var age = -1;
	while (on >= theirDate)
  {
    age++;
    theirDate.setFullYear(theirDate.getFullYear() + 1);
  }
  return age;
}

function checkStartingDate(chkDate)
{
	var day = parseFloat(chkDate.substr(0,2));
	var month = parseFloat(chkDate.substr(3,2)) - 1;
  var year = parseFloat(chkDate.substr(6,4));

  var minDate = new Date();
  minDate.setDate(minDate.getDate() - 8);
  var curDate = new Date(year, month, day);
  var maxDate = new Date();
  maxDate.setYear(maxDate.getFullYear() + 1);
  return (minDate < curDate && curDate < maxDate);
}

function getRadioValueByName(objName)
{
  var elements = document.getElementsByName(objName);
  if(!elements)
    return -1;

  for(var i=0; i<elements.length; i++)
  {
    if(elements[i].checked == true)
      return elements[i].value;
  }
  return -1;
}

function additionalValidate(page)
{
  var result = true;
  switch(page)
  {
    case "car":
      var obj = document.getElementById("dagwaarde");
      var obj2 = document.getElementById("nieuwwaarde");
      if(!obj || !obj2)
        break;
      result = (parseInt(getVal(obj2)) >= parseInt(getVal(obj)));
      if(!result)
      {
        alert(errors['nieuwendagwaarde']);
        return false;
      }
      break;
    case "owner":
      //Eigenaar
      var ownerValue = getRadioValueByName("eigenaar");
      var obj2 = null;
      result = (ownerValue == 'yes');
      if(!result)
      {
        alert(errors['eigenaar']);
        return false;
      }
      result = (getVal(obj) == 'yes');
      //Leeftijd
      var gebobj = document.getElementById("geboortedatum");
      if(!gebobj)
        break;
      result = (getAge(getVal(gebobj)) >= 18 && getAge(getVal(gebobj)) <= 110);
      if(!result)
      {
        alert(errors['leeftijd']);
        return false;
      }
      //Rijbewijs
      obj2 = document.getElementById("jarenRijbewijs");
      if(!obj2)
        break;
      //Value of obj2 is jr0 t/m jr8
      result = ((getAge(getVal(gebobj)) - parseInt(getVal(obj2).substr(2,1))) >= 18);
      if(!result)
      {
        alert(errors['jarenRijbewijs']);
        return false;
      }
      //Schadevrij
      obj = document.getElementById("jarenRijbewijs");
      obj2 = document.getElementById("schadevrijeJaren");
      if(!obj)
        break;
      var objval = parseInt(getVal(obj).substr(2,1));
      var obj2val = getVal(obj2);
      if(obj2val.length >= 4) {
        //geen controle bij negatieve nummers
      }else if(objval < 8)
        result = (objval >= obj2val);
      else
        result = (getAge(getVal(gebobj)) -obj2val) >=18;
      if(!result)
      {
        alert(errors['schadevrij']);
        return false;
      }
      /*
      obj = document.getElementById("dienstwijzer");
      if(!obj)
        break;
      result = (getVal(obj) == 'yes');
      if(!result)
      {
        alert(errors['dienstwijzer']);
        return false;
      }
      */
      obj = document.getElementById("ingangsdatum");
      if(!obj)
        break;
      result = checkStartingDate(getVal(obj));
      if(!(result == true))
      {
        alert(errors['ingangsdatum']);
        return false;
      }
      break;
    case "confirm":
      var obj = document.getElementById("voorwaarden_akkoord");
      if(!obj)
        break;
      result = (getVal(obj) == 'yes');
      if(!result)
        alert(errors['voorwaarden']);
      break;
    case "accept":
      if(!checkDetails('rijinvloed', 'Rij invloed', 'true'))
        return false;
      if(!checkDetails('aanrakingjustitie', 'Aanraking met justitie', 'true'))
        return false;
      if(!checkDetails('rijbewijs', 'Rijbewijs', 'false'))
        return false;
      if(!checkDetails('ontzegging', 'Ontzegging', 'true'))
        return false;
      var radioVal = getRadioValueByName('opzeggingachtjaar');
      if(radioVal == 'yes')
      {
        if(!checkDetails('opzegging', 'Opzegging', 'true', true))
          return false;
        if(!checkDetails('weigering', 'Weigering', 'true', true))
          return false;
        if(!checkDetails('beperking', 'Beperking', 'true', true))
          return false;
      }
      var obj = document.getElementById('nrschuldschaden');
      if(obj)
      {
        var val = getVal(obj);
        if(val && val!='as0')
        {
           var obj = document.getElementById('scs_wacasco');
           if(!obj || getVal(obj) == '')
           {
             alert(errors['verplicht']+'scs_wacasco');
             return false;
           }
           var obj = document.getElementById('scs_wabeperktcasco');
           if(!obj || getVal(obj) == '')
           {
             alert(errors['verplicht']+'scs_wabeperktcasco');
             return false;
           }
           var obj = document.getElementById('scs_laatstedatum');
           if(!obj || getVal(obj) == '')
           {
             alert(errors['verplicht']+'scs_laatstedatum');
             return false;
           }
           var obj = document.getElementById('scs_laatstebedrag');
           if(!obj || getVal(obj) == '')
           {
             alert(errors['verplicht']+'scs_laatstebedrag');
             return false;
           }
        }
      }
      break;
    case "extra":
      var ovi = checkRadio('inputform','ovi');
      if(ovi && ovi.value == 'true')
      {
        if(getVal('ovi_aantal').length <= 2)
        {
          alert(errors['ovi']);
          return false;
        }
        if(getVal('ovi_invaliditeit').length <=3)
        {
          alert(errors['ovi']);
          return false;
        }
        if(getVal('ovi_overlijden').length <= 3)
        {
          alert(errors['ovi']);
          return false;
        }
        var oviObj = checkRadio('inputform','ovi_select');
        if(!oviObj)
        {
          alert(errors['ovi']);
          return false;
        }
      }
      var svi = checkRadio('inputform','svi');
      if(svi && svi.value == 'true')
      {
        var sviObj = checkRadio('inputform','svi_select');
        if(!sviObj)
        {
          alert(errors['svi']);
          return false;
        }
      }
      var rbv = checkRadio('inputform','rbv');
      if(rbv && rbv.value == 'true')
      {
        var rbvObj = checkRadio('inputform','rbv_select');
        if(!rbvObj)
        {
          alert(errors['rbv']);
          return false;
        }
      }
      break;
    case "profile":
      var obj = document.getElementById('rekeningnummer');
      if(!obj)
      {
        alert(errors['rekeningnummer']);
        return;
      }
      //Strip spaces and points
      var rekeningnummer = obj.value;
      rekeningnummer = rekeningnummer.trim();
      //No more then ten tries
      var count = 0;
      while(rekeningnummer.indexOf('.') >= 0 && count <10)
      {
        rekeningnummer = rekeningnummer.replace('.','');
        count++;
      }
      if(checkVal(rekeningnummer, 'integer') && !(rekeningnummer.length < 3 || rekeningnummer.length > 9))
      {
        if (rekeningnummer.length == 9)
        {
          // Elf proef
          var position = 9;
          var total = 0;
          for (var i = 0; i < rekeningnummer.length; i++)
          {
              var val = rekeningnummer.substring(i, i+1);
              total += position * val;
              position--;
          }
          if((total % 11) != 0)
          {
            alert(errors['rekeningnummer']);
            return;
          }
        }
        //Make sure the original number (with points) is kept
        obj.value = obj.value.trim();
      }else
      {
        alert(errors['rekeningnummer']);
        return;
      }
      var obj = document.getElementById("nationaliteit");
      if(!obj)
        break;
      result = (getVal(obj) == 'NL');
      if(!result)
      {
        alert(errors['nationaliteit']);
        return false;
      }
    default:
      result = true;
      break;
  }
  return result;
}

function checkDetails(name, label, requiredIf, notNull)
{
  var radioVal = getRadioValueByName(name);
  if(radioVal == -1)
    return false;
  result = (radioVal == requiredIf);
  if(result)
  {
    var det = document.getElementById(name+"_reden");
    if(det)
    {
      var val = getVal(det);
      if(!(val.length > 0))
      {
        alert(errors['reden']+label);
        return false;
      }
    }
  }else
  {
    //clean up, before submitting
    switch(name)
    {
      case 'rijinvloed':
      case 'aanrakingjustitie':
      case 'ontzegging':
      case 'rijbewijs':
        resetObj(name+'_reden', false);
        break;
      case 'opzeggingachtjaar':
        resetObj('beperking_reden', false);
        resetObj('weigering_reden', false);
        resetObj('opzegging_reden', false);
        break;
      case 'nrschuldschaden':
        resetObj('scs_wacasco');
        resetObj('scs_wabeperktcasco', false);
        resetObj('scs_laatstedatum', false);
        resetObj('scs_laatstebedrag', false);
        break;
      default:
        break;
    }
  }
  if(notNull && notNull == true && radioVal != -1)
  {
    alert(errors['reden']+label);
    return false;
  }
  return true;

}

function setBusyState(val)
{
  processing = val;
  if(val == false)
  {
      ajaxMethod = '';
  }
  var obj = document.getElementById('loading');
  if(obj)
  {
    obj.style.display = (val)?'block':'none';
  }
  setReadOnly('bouwjaar', val);
  setReadOnly('bouwmaand', val);
  setReadOnly('merk', val);
  setReadOnly('model', val);
  setReadOnly('brandstof', val);

}

function resetObj(id, disable)
{
  if(disable == null)
    disable = true;
  if(document.getElementById(id))
  {
    var obj = document.getElementById(id);
    if(obj.nodeName == 'SELECT' || obj.nodeName == 'INPUT' || obj.nodeName == 'TEXTAREA')
    {
      (obj.nodeName == 'SELECT')?(obj.options.selectedIndex = 0):(obj.value = '');
      if(disable==true)
        obj.disabled = true;
      obj.onchange = null;
    }
  }
}

function setReadOnly(id, val)
{
  if(document.getElementById(id))
  {
    var obj = document.getElementById(id);
    if(val == true)
    {
      storage[id] = obj.disabled;
      obj.disabled = true;

    }else if(storage[id] != null)
    {
      obj.disabled = storage[id];
      storage[id] = null;
    }
  }
}

function resetAllForms()
{
  var obj = document.getElementById('bouwjaar');
  if(obj)
  {
    obj.options.selectedIndex = 0;
  }
  resetObj('bouwmaand');
  resetObj('merk');
  resetObj('model');
  resetObj('type');
  resetObj('brandstof');
  resetObj('kmstand');
  fillObj('bouwjaar');
}


/* Polissen */
function checkPolissen()
{
  var obj = document.getElementById('selectform');
  if(obj)
  {
    //Read polissen
    var elements = document.getElementsByTagName('input');
    var selected = new Array();
    for(var i=0;i<elements.length;i++)
    {
    
      if(!elements[i].type.toLowerCase() == 'checkbox' || elements[i].className != 'check_polis')
        continue;
      if(elements[i].checked == true)
        selected.push(elements[i].id);
      if(selected.length > 3)
      {
        alert(errors['vergelijkTeVeel']);
        return false
      }
    }
    if(selected.length <= 1)
    {
      alert(errors['vergelijkTeWeinig']);
      return false;
    }else
    {
      for(var i=0;i<elements.length;i++)
      {
        elements[i].checked = false;
      }
      var hidden = document.getElementById('selected');
      if(hidden)
        hidden.value = selected.toString();
      return true;
    }
  }
  return false;
}

function request(id, code)
{
  var dekkingObj = document.getElementById('polis_dekking');
  var dekking = getVal(dekkingObj.options[dekkingObj.selectedIndex]);
  //var val = getVal(dekkingObj.options[dekkingObj.selectedIndex]);
  var trede = (document.getElementById('trede_'+id))?document.getElementById('trede_'+id).innerHTML:-1;
  var korting = (document.getElementById('korting_'+id))?document.getElementById('korting_'+id).innerHTML:-1;
  var eigenrisico = (document.getElementById('eigenrisico_'+id))?document.getElementById('eigenrisico_'+id).innerHTML:-1;
  var premie = (document.getElementById('premie_'+id))?document.getElementById('premie_'+id).innerHTML:-1;
  //var voordeel = (document.getElementById('voordeel_'+id))?document.getElementById('voordeel_'+id).innerHTML:-1;
  //var voordeellabel = (document.getElementById('voordeellabel_'+id))?document.getElementById('voordeellabel_'+id).innerHTML:-1;
  var maatschappij = (document.getElementById('maatschappij_'+id))?document.getElementById('maatschappij_'+id).innerHTML:-1;
  //if(code && dekking!=-1 && trede!=-1 && korting!=-1 && eigenrisico!=-1 && premie!=-1 && voordeel!=-1 && maatschappij!=-1)
  if(code && dekking!=-1 && trede!=-1 && korting!=-1 && eigenrisico!=-1 && premie!=-1 && maatschappij!=-1)
  {
    var obj = document.getElementById('dekking');
    if(obj)
      obj.value = dekking;
    obj = document.getElementById('trede');
    if(obj)
      obj.value = trede;
    obj = document.getElementById('korting');
    if(obj)
      obj.value = korting;
    obj = document.getElementById('eigenrisico');
    if(obj)
      obj.value = eigenrisico;
    obj = document.getElementById('premie');
    if(obj)
      obj.value = premie;
    /*
    obj = document.getElementById('voordeel');
    if(obj)
      obj.value = voordeel;
    obj = document.getElementById('voordeellabel');
    if(obj)
      obj.value = voordeellabel;
      */
    obj = document.getElementById('maatschappij');
    if(obj)
      obj.value = maatschappij;
    obj = document.getElementById('id');
    if(obj)
      obj.value = code;
    obj = document.getElementById('submitForm');
    if(obj)
      obj.submit();
    return false;
  }
  alert(errors['verzekeringsaanvraag']);
  return false;
}


/* Tooltip JS */

//Edit the informaiton between the quotes below with the path to your image.
var imagePath = "http://files.datawire.nl/uploads/images/Xfut-hOn_ZzmzbbnerW5YQ/tooltiparrow2.gif";

function addwarning(){
  if (ie||ns6) {
	 tipobj=document.all? document.all["theToolTip"] : document.getElementById? document.getElementById("theToolTip") : "";
  }
  pointerobj=document.all? document.all["ToolTipPointer"] : document.getElementById? document.getElementById("ToolTipPointer") : "";
  blocker = (document.getElementById('select_blocker'))?document.getElementById('select_blocker'):null;
  var thealinks = document.getElementsByTagName("a");
  var thedivs = document.getElementsByTagName("td");

  if (!thealinks && !thedivs) { return; }
  for(var x=0;x!=thealinks.length;x++){
    if(thealinks[x].className == "addToolTip"){
      thealinks[x].setAttribute("tooltiptext",thealinks[x].title);
      thealinks[x].removeAttribute("title");
      thealinks[x].onmouseover=function gomouseover(){ddrivetip(this.getAttribute("tooltiptext"))};
      thealinks[x].onmouseout=function gomouseout(){hideddrivetip();};
    }
  }
  for(var x=0;x!=thedivs.length;x++){
    if(thedivs[x].className == "addToolTip"){
      thedivs[x].setAttribute("tooltiptext",thedivs[x].title);
      thedivs[x].removeAttribute("title");
      thedivs[x].onmouseover=function gomouseover(){ddrivetip(this.getAttribute("tooltiptext"))};
      thedivs[x].onmouseout=function gomouseout(){hideddrivetip();};
    }
  }
}

var offsetfromcursorX=-7; //Customize x offset of tooltip
var offsetfromcursorY=12; //Customize y offset of tooltip

var offsetdivfrompointerX=13; //Customize x offset of tooltip DIV relative to pointer image
var offsetdivfrompointerY=13; //Customize y offset of tooltip DIV relative to pointer image. Tip: Set it to (height_of_pointer_image-1).

//document.write('<div id="theToolTip"></div>'); //write out tooltip DIV
//document.write('<img id="ToolTipPointer" src="'+imagePath+'">'); //write out pointer image

var ie=document.all;
var ns6=document.getElementById && !document.all;
var enabletip=false;
var tipobj;
var pointerobj;
var blocker;

function ietruebody(){
  return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
}

function ddrivetip(thetext, thewidth, thecolor){
if (ns6||ie){
    if (typeof thewidth!=="undefined") {tipobj.style.width=thewidth+"px";}
    if (typeof thecolor!=="undefined" && thecolor!=="") {tipobj.style.backgroundColor=thecolor;}
    tipobj.innerHTML=thetext;
    enabletip=true;
    return false;
  }
}

function positiontip(e){
  if (enabletip){
    var nondefaultpos=false;
    var curX=(ns6)?e.pageX : event.clientX+ietruebody().scrollLeft;
    var curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop;
    //Find out how close the mouse is to the corner of the window
    var winwidth=ie&&!window.opera? ietruebody().clientWidth : window.innerWidth-20;
    var winheight=ie&&!window.opera? ietruebody().clientHeight : window.innerHeight-20;

    var rightedge=ie&&!window.opera? winwidth-event.clientX-offsetfromcursorX : winwidth-e.clientX-offsetfromcursorX;
    var bottomedge=ie&&!window.opera? winheight-event.clientY-offsetfromcursorY : winheight-e.clientY-offsetfromcursorY;

    var leftedge=(offsetfromcursorX<0)? offsetfromcursorX*(-1) : -1000;
    //if the horizontal distance isn't enough to accomodate the width of the context menu
    if (rightedge<tipobj.offsetWidth){
      //move the horizontal position of the menu to the left by it's width
      tipobj.style.left=curX-tipobj.offsetWidth+"px";
      nondefaultpos=true;
    }
    else if (curX<leftedge)
    {
      tipobj.style.left="5px";
    }
    else{
    //position the horizontal position of the menu where the mouse is positioned
      //blocker.style.left=curX+offsetfromcursorX-offsetdivfrompointerX+"px";
      tipobj.style.left=curX+offsetfromcursorX-offsetdivfrompointerX+"px";
      pointerobj.style.left=curX+offsetfromcursorX+"px";
    }
    //same concept with the vertical position
    if (bottomedge<tipobj.offsetHeight){
      tipobj.style.top=curY-tipobj.offsetHeight-offsetfromcursorY+"px";
      nondefaultpos=true;
    }
    else{
      //blocker.style.top=curY+offsetfromcursorY+offsetdivfrompointerY+"px";
      tipobj.style.top=curY+offsetfromcursorY+offsetdivfrompointerY+"px";
      pointerobj.style.top=curY+offsetfromcursorY+"px";
    }

    if(blocker)
    {
        blocker.style.left = tipobj.style.left;
        blocker.style.top = tipobj.style.top;
        blocker.style.height = parseInt(tipobj.offsetHeight) + 'px';
        blocker.style.width = parseInt(tipobj.offsetWidth) + 'px';
        blocker.style.visibility="visible";
    }

    tipobj.style.visibility="visible";
    if (!nondefaultpos) {
      pointerobj.style.visibility="visible";
    }
    else{
      pointerobj.style.visibility="hidden";
    }
  }
}

function hideddrivetip(){
  if (ns6||ie){
    enabletip=false;
    if(blocker)
    {
        blocker.style.visibility="hidden";
    }
    tipobj.style.visibility="hidden";
    pointerobj.style.visibility="hidden";
    tipobj.style.left="-1000px";
    tipobj.style.backgroundColor='';
    tipobj.style.width='';
  }
}

/*
Deprecated
function num2money(n_value) {

// validate input
if (isNaN(Number(n_value)))
return 'ERROR';

// save the sign
var b_negative = Boolean(n_value < 0);
n_value = Math.abs(n_value);
alert(n_value)
// round to 1/100 precision, add ending zeroes if needed
var s_result_inner = Math.round(n_value*1e2);
if(s_result_inner == 100)
  s_result = String(1 + '00').substring(0,2);
else
  s_result = String(s_result_inner%1e2 + '00').substring(0,2);
alert(s_result)

// separate all orders
var b_first = true;
var s_subresult;
while (n_value > 1) {
s_subresult = (n_value >= 1e3 ? '00' : '') + Math.floor(n_value%1e3);
s_result = s_subresult.slice(-3) + (b_first ? ',' : '.') + s_result;
b_first = false;
n_value = n_value/1e3;
}
// add at least one integer digit
if (b_first)
s_result = '0,' + s_result;

// apply formatting and return
return b_negative
? '' + s_result + ')'
: '' + s_result;
}
*/

function num2money(num) {
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num))
    num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10)
    cents = "0" + cents;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
    num = num.substring(0,num.length-(4*i+3))+'.'+
  num.substring(num.length-(4*i+3));
  if(cents == 00)
    return (((sign)?'':'-') + num + ',-');
  else
    return (((sign)?'':'-') + num + ',' + cents);
}


/*
  This work is licensed under Creative Commons GNU GPL License
  http://creativecommons.org/licenses/GPL/2.0/
  Copyright (C) 2006 Russel Lindsay
  www.weetbixthecat.com
  version 0.5 (no TEXTAREA support, so it's only half complete)
*/


/*
  sets the index of the cursor and optionally selects text inside a text input
  element must be a reference to an INPUT (textarea not yet supported)
  if end omitted then cursor is positioned but no text is selected
*/
function setSelectionRange(element, start, end)
{
  if(end === undefined) end = start;

  // firefox
  if("selectionStart" in element)
  {
    element.setSelectionRange(start, end);
    element.focus(); // to make behaviour consistent with IE
  }
  // ie win
  else if(document.selection)
  {
    var range = element.createTextRange();
    range.collapse(true);
    range.moveStart("character", start);
    range.moveEnd("character", end - start);
    range.select();
  }
}

/*
  calculates the index of the cursor inside a text input
  element must be a reference to an INPUT (textarea not yet supported)
  returns a simple object {start:<int>, end:<int>} where <int> is -1 if cursor
  is not in input field or functionality is not supported
*/
function getSelectionRange(element)
{
  var result = {start:-1, end:-1};

  // firefox
  if("selectionStart" in element)
    result = {start: element.selectionStart, end: element.selectionEnd};
  // ie win
  else if(document.selection)
  {
    // inputs only
    var range = document.selection.createRange();
    if(range.parentElement() == element)
    {
      var rangeS = range.duplicate();
      rangeS.moveEnd("textedit", 1);
      var rangeE = range.duplicate();
      rangeE.moveStart("textedit", -1);
      result = {start: element.value.length - rangeS.text.length, end: rangeE.text.length};
    }
  }

  return result;
}
//-->
