// JavaScript Document
var Language = "GB";

var choiceGroups = new Array();

var chosen = new Array();  

var noText = /^\s*$/;

var empty_fields = "";

var errors = "";

var decimalMark = '.';

var thouMark = ',';

var currencyConverter = { DM:1.95583 , EUR:1/1.95583};

var EmailFormat = /\S@\S/;

var NumberFormats = new Object();

    NumberFormats["NoDecNoSep"] = {GB: /^\d*$/ , DE: /^\d*$/};

    NumberFormats["DecNoSep"] = {GB: /^\d*(\.(\d)*)?$/ , DE: /^\d*(\,(\d)*)?$/};

    NumberFormats["NoDecSep"] = {GB: /(^\d*$)|(^\d{1,3}(\,\d{3})+$)/, DE: /(^\d*$)|(^\d{1,3}(\.\d{3})+$)/};

    NumberFormats["DecSep"] = {GB: /(^\d*(\.(\d)*)?$)|(^\d{1,3}(\,\d{3})+(\.(\d)*)?$)/, DE: /(^\d*(\,(\d)*)?$)|(^\d{1,3}(\.\d{3})+(\,(\d)*)?$)/};

var ThouMarkReplace = new Object();

    ThouMarkReplace["NoDecNoSep"] = {GB: null , DE: null};

    ThouMarkReplace["DecNoSep"] = {GB: null , DE: null};

    ThouMarkReplace["NoDecSep"] = {GB: /\,/g , DE: /\./g};

    ThouMarkReplace["DecSep"] = {GB: /\,/g , DE: /\./g};

var DecimalMarkReplace = new Object();

    DecimalMarkReplace["NoDecNoSep"] = {GB: null, DE: null};

    DecimalMarkReplace["DecNoSep"] = {GB: /\./, DE: /\,/};

    DecimalMarkReplace["NoDecSep"] = {GB: null, DE: null};

    DecimalMarkReplace["DecSep"] = {GB: /\./, DE: /\,/};



function SubstituteDecimals(inStr)

{return inStr.replace(/\./, decimalMark);}

function GetFieldValue(inField)

{

  var fieldType = inField.type;

  var fieldValue = "";

  if (fieldType.substring(0,4) == "text")  //Text box or text area	

  {fieldValue = GetTextEntered(inField);}

  return fieldValue;

}

function OptionalNumberField(formField, numberFormatFunc)

{

  if (TextEntered(formField) == true)

  {return numberFormatFunc(formField);}

  else

  {return Number.NaN;}

}

function ValidateNumeric(formField)

{return ValidateNumber(formField, "", decimalMark);}

function ValidateMonetary(formField)

{

  fieldName = formField.name;

  var integerPart = "";

  var integerLength = 0;

  var totalLength = ""; 

  var theNum = Number.NaN;

  theNum = ValidateNumber(formField, thouMark, decimalMark);

  integerPart = "" + Math.floor(theNum);

  integerLength = integerPart.length;

  totalLength = (""+theNum).length;

  if ((!isNaN(theNum)) && ((totalLength - integerLength) > 3))

  {theNum = Number.NaN;}

  return theNum;

}

function ValidateInt(formField)

{return ValidateNumber(formField, "", "");}

function ValidateFormattedNum(formField)

{return ValidateNumber(formField, thouMark, decimalMark);}

function ValidateNumber(formField, inThouMark, inDecimalMark)

{

  var theNumStr = "";

  var theNum = "";

  var lNumberFormat = null;

  var lThouMarkReplace = null;

  var lDecimalMarkReplace = null;

  var formatError = false;

  var formatType = "";

  var fieldName = formField.name;

  var theStr = lTrim(rTrim(GetFieldValue(formField)));

  if (theStr == "")

  {theNum = Number.NaN;}

  else

  {

    if ((inDecimalMark == "") && (inThouMark == ""))

    {formatType = "NoDecNoSep";}

    else if ((inDecimalMark != "") && (inThouMark == ""))

    {formatType = "DecNoSep";}

    else if ((inDecimalMark == "") && (inThouMark != ""))

    {formatType = "NoDecSep";}

    else  // decimals and thou separator

    {formatType = "DecSep";}

    lNumberFormat = NumberFormats[formatType][Language];

    lThouMarkReplace = ThouMarkReplace[formatType][Language];

    lDecimalMarkReplace = DecimalMarkReplace[formatType][Language];

    if (theStr.search(lNumberFormat) == -1)

    {formatError = true;}

    else

    {

      if (lThouMarkReplace != null)

      {theStr = theStr.replace(lThouMarkReplace, "");}

      if (lDecimalMarkReplace != null)

      {theStr = theStr.replace(lDecimalMarkReplace, "."); }

      theNum = parseFloat(theStr);

      if (isNaN(theNum))

      {formatError = true;}

    }

    if (formatError == true)

    {theNum = Number.NaN;}

  }

  return theNum;

}

function lTrim(inStr)

{

  var trimmed = null;

  var numStart = inStr.search(/\S/);

  if (numStart == -1)

  {trimmed = "";}

  else

  {trimmed = inStr.substr(numStart);}

  return trimmed;

}

function rTrim(inStr)

{

  var numEnd = -1;

  var chr = "";

  var trimmed = "";

  for (var i = inStr.length -1, numEnd = -1; i >= 0 && numEnd == -1; i--)

  {

    chr = inStr.charAt(i);

    if ((chr != " ") && (chr != '\t'))

    {numEnd = i;}

  }

  trimmed = inStr.slice(0, numEnd+1);

  return trimmed;

}

function GetNumeric(inStr)

{

  var trimmed = "";

  var formatError = false;

  var chr = "";

  if (inStr != "")

  {

    trimmed = rTrim(lTrim(inStr));

    for (i = 0; (i <trimmed.length) && (formatError == false); i++)

    {

      chr = trimmed.charAt(i);

      if ((chr < '0') || (chr > '9'))

      {formatError = true;}

    }

    if (formatError)

    {trimmed = "";}

  }

  return trimmed;

}

function TextEntered(formField)

{

  var fieldType  = formField.type;

  var fieldValue = formField.value;

  var textEntered = false;

  if (fieldType.substring(0,4) == "text")

  {textEntered = !noText.test(fieldValue)}

  return textEntered;

}

function GetTextEntered(formField)

{

  var fieldType  = formField.type;

  var fieldValue = formField.value;

  var textEntered = "";



  if (fieldType.substring(0,4) == "text")

  {

    if(noText.test(fieldValue))

    {textEntered = "";}

    else

    {textEntered = fieldValue;}

   }

  return textEntered;

}



function ValBorrowCalc(e, efield, t)

{

 if (e<=0 || isNaN(e)) 

  {

   if (t==1)

   {alert ("Please enter a numeric value greater than 0");}

  else

  {alert ("Please leave blank or enter a numeric value greater than 0");}

   efield.form.Borrow.value = "";

   efield.focus();

   return false;

  }

  else

  return true;

}



function BorrowCalc()

{

 var f = document.fmBorrow;

 var Result1, Result2;

 var App1a, App1b, App2a, App2b;

 App1a = ValidateMonetary(f.App1a);

  if (!ValBorrowCalc(App1a, f.App1a, 1))



 {return false;}

  if (f.App1b.value=="")

  {App1b = 0;}

  else

  {

   App1b = ValidateMonetary(f.App1b);

   if (!ValBorrowCalc(App1b, f.App1b, 2))

    {return false;}

  }

 if (f.App2a.value=="")

  {App2a = 0;}

  else

  {

    App2a = ValidateMonetary(f.App2a);

    if (!ValBorrowCalc(App2a, f.App2a, 2))

   {return false;}

  }

  if (f.App2b.value=="")

  {App2b = 0;}

 else

  {

   App2b = ValidateMonetary(f.App2b);

   if (!ValBorrowCalc(App2b, f.App2b, 2))

   {return false;}

  }

 var App1Income = App1a + App1b*0.5;

 var App2Income = App2a + App2b*0.5;

 Result1 = (App1Income + App2Income) * 2.75;

 Result2 = (App1Income*3.5) + App2Income;

 if (Result1 > Result2)

  {f.Borrow.value = parseInt(Result1);}

  else

  {f.Borrow.value = parseInt(Result2);}

}



document.write("<form id=\"mform\" name=\"fmBorrow\" onsubmit=\"return false\"><fieldset>");

document.write("<legend>How Much Can You Borrow?</legend>");

document.write("<label for=\"app1a\">1<sup>st</sup> Annual Salary (&pound;)    </label><div><input name=\"App1a\" id=\"App1a\" onkeyup=\"BorrowCalc()\" class=\"input\" /></div><br />");

document.write("<label for=\"app2a\">2<sup>nd</sup> Annual Salary (&pound;)	   </label><div><input name=\"App2a\" id=\"App2a\" onkeyup=\"BorrowCalc()\" class=\"input\" /></div><br />");

document.write("<label for=\"app1b\">1st Bonuses (&pound;)     </label><div><input name=\"App1b\" id=\"App1b\" onkeyup=\"BorrowCalc()\" class=\"input\" /></div><br />");

document.write("<label for=\"app2b\">2nd Bonuses (&pound;)     </label><div><input name=\"App2b\" id=\"App2b\" onkeyup=\"BorrowCalc()\" class=\"input\" /></div><br />");

document.write("</fieldset><fieldset><legend>You May Be Able To Borrow</legend><label for=\"borrow\">Est mortgage (&pound;)</label><div><input onfocus=\"this.form.App2b.focus()\" name=\"Borrow\" class=\"input\" /></div><br />");

document.write("</fieldset></form>");