    var invalidaddress=new Array();
    var mortgagetypesPercentage = new Array('0','80','85','80','85','85','85','80','80','100');

/*						'0','95','95','85','85','85','95','80','80','100'

 loan to value steve
		0 = Null?
		1 = remortgage 80%
		2 = first time buyer 85%
		3 = self cert remortgage 80%
		4 = self cert other 85%
		5 = buy to let 85%
		6 = purchase 85%
		7 = adverse remortge 80%
		8 = adverse other 80%
		9 = over seas
		
*/
    // Declaring valid date character, minimum year and maximum year
    var dtCh= "/";
    var minYear=1900;
    var maxYear=2100;

    function isInteger(s){
      var i;
      for (i = 0; i < s.length; i++){
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
        }
        // All characters are numbers.
        return true;
    }

    function stripCharsInBag(s, bag){
      var i;
      var returnString = "";
      // Search through string's characters one by one.
      // If character is not in bag, append to returnString.
      for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
      }
      return returnString;
    }

    function daysInFebruary (year){
      // February has 29 days in any year evenly divisible by four,
      // EXCEPT for centurial years which are not also divisible by 400.
      return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
    }

    function DaysArray(n) {
      for (var i = 1; i <= n; i++) {
        this[i] = 31
        if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
        if (i==2) {this[i] = 29}
      }
       return this
    }

    function isDate(dtStr){
            var daysInMonth = DaysArray(12)
            var pos1=dtStr.indexOf(dtCh)
            var pos2=dtStr.indexOf(dtCh,pos1+1)
            var strMonth=dtStr.substring(0,pos1)
            var strDay=dtStr.substring(pos1+1,pos2)
            var strYear=dtStr.substring(pos2+1)
            strYr=strYear
            if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
            if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
            for (var i = 1; i <= 3; i++) {
                    if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
            }
            month=parseInt(strMonth)
            day=parseInt(strDay)
            year=parseInt(strYr)
            if (pos1==-1 || pos2==-1){
                    //alert("The date format should be : mm/dd/yyyy")
                    return false
            }
            if (strMonth.length<1 || month<1 || month>12){
                    //alert("Please enter a valid month")
                    return false
            }
            if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
                    //alert("Please enter a valid day")
                    return false
            }
            if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
                    //alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
                    return false
            }
            if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
                    //alert("Please enter a valid date")
                    return false
            }
    return true
    }

/*
    function checkemail(){
      var invalidcheck=0;
      var str = document.getElementById('Email').value;
      var filter=/^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i

      if (filter.test(str)) {
        var tempstring=str.split("@")
        tempstring=tempstring[1].split(".")
        for (i=0;i<invalidaddress.length;i++){
          if (tempstring[0]==invalidaddress[i])
          invalidcheck=1
        }
        if (invalidcheck!=1)
          testresults=true
        else{
          //alert("Please input a more official email address!")
          testresults=false
        }
      }
      else{
        //alert("Please input a valid email address!")
        testresults=false
      }

      return (testresults)
    }
*/

    function checkemail(strEmail) {
      var x = strEmail;
      var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

      if (filter.test(x)) {
        return true;
      } else {
        return false;
      }
    }

    function createRequestObject(strUrl) {

          FORM_DATA1 = new Object();
          separator = ',';
          query = '' + strUrl;
          qu = query;
          query = query.substring((query.indexOf('?')) + 1);
          if (query.length < 1) { return false; }  // Perhaps we got some bad data?
          keypairs = new Object();
          numKP = 1;
          while (query.indexOf('&') > -1) {
            keypairs[numKP] = query.substring(0,query.indexOf('&'));
            query = query.substring((query.indexOf('&')) + 1);
            numKP++;
          }

          keypairs[numKP] = query;
          var i;
          for (i in keypairs) {
            keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));

            keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
            while (keyValue.indexOf('+') > -1) {
              keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
            }
            keyValue = unescape(keyValue);

            if (FORM_DATA1[keyName]) {
              FORM_DATA1[keyName] = FORM_DATA1[keyName] + separator + keyValue;
            } else {
              FORM_DATA1[keyName] = keyValue;
            }
          }
          return FORM_DATA1;
        }

      function calcltvpercent() {
        var intPropertyvalue = document.forms[appFormName].elements['Property_Value'].value;
        var intMortgageSize = document.forms[appFormName].elements['Mortgage_Size'].value;

        return  (intMortgageSize/intPropertyvalue)*100;
      }

      function SendScheduledEmails() {

        var i = new Date();
        var str = Date.parse(i.toString());

        url = strURLtoIncludes + '/sysadmin_scheduler_sendemails.php?dt='+str;

        //alert(url);
        //ajax_do (url);
      }

      function AddClientErrorStep1(txtError) {

        strAllErrors += ',' + txtError;
        SaveClientErrors('1')

      }

      function AddClientErrorStep2(txtError) {

        strAllErrorsStep2 += ',' + txtError;
        SaveClientErrors('2')

      }

      function SaveClientErrors(strStep) {

        var strFormver = '2steps_v1';

        if (document.forms[appFormName].elements["FormVersion"]) {
          strFormver = document.forms[appFormName].elements["FormVersion"].value;
        }

        var i = new Date();
        var str = Date.parse(i.toString());
        url =  strURLtoIncludes + '/save_clienterrors.php';
        url += '?formversion='+ strFormver + '&dt='+str+'&ErrorStep1='+escape(strAllErrors) + '&ErrorStep2='+escape(strAllErrorsStep2)+'&ErrorId='+intErrorId;

        if (strStep == '2') {
          url += '&step=2';
        }

        //alert(url);
        ajax_do (url);
      }


      function getBrokerFromIframe() {
        //validate
        var omt = document.getElementById("Mortgage_Type");

        // ltv validation
        var intLeadbayMT = getMortgageType();
        var intPropertyvalue = document.forms[appFormName].elements['Property_Value'].value;
        var intMortgageSize = document.forms[appFormName].elements['Mortgage_Size'].value;
        var percentage = mortgagetypesPercentage[parseInt(intLeadbayMT)];
        var allowed_amount = (intPropertyvalue * (percentage))/100;

        if (intMortgageSize > allowed_amount) {
          return false;
        }

        //clear variables
        document.forms[appFormName].elements['sch_broker_id'].value = 0;
        document.forms[appFormName].elements['sch_broker_msg'].value = '';
        //document.getElementById('brokerdetail').innerHTML = '';

        //call iframe
        var omortgagesize=document.forms[appFormName].elements["Mortgage_Size"];
        var opostcode=document.forms[appFormName].elements["Postcode"];
        var obadcredit=document.forms[appFormName].elements["bad_credit"];
        var opropertyvalue=document.forms[appFormName].elements["Property_Value"];

        var ofirsttimebuyer=document.forms[appFormName].elements["ftbyes"];
        var oselfcert=document.forms[appFormName].elements["sc"];
        var ofpyes = document.forms[appFormName].elements["fpyes"];

        if (omt.value != '9') {
          if (!validatePostcode(opostcode.value)) {
            AddClientErrorStep2('Broker Search - inv psc: '+opostcode.value);
            return false;
          }
        }

        var osc = '0';
        var fp = '0';
        var firsttimebuyer = '0';
		var propertyonmarket = '1';

        if (ofpyes.checked) fp = '1';
        if (oselfcert.checked) osc='1';
        if (ofirsttimebuyer.checked) firsttimebuyer = '1';
        if (omt.value == '1') fp = '1';

        var sUrl = '';
        sUrl = strURLtoIncludes + '/broker_search.php';
        sUrl+="?ajax=Y";
        sUrl+="&mortgage_type=" + omt.value;
        sUrl+="&mortgage_size=" + omortgagesize.value;
        sUrl+="&badcredit=" + obadcredit.value;
        sUrl+="&selfcert=" + osc;
        sUrl+="&property_value=" + opropertyvalue.value;
        sUrl+="&ftb=" + firsttimebuyer;
		//steve added line below
        sUrl+="&IsPropertyOnTheMarket=" + '1';
		sUrl+="&postcode=" + opostcode.value;
        sUrl+="&fp=" + fp;

        //document.write(sUrl);
        //alert(sUrl);
        AddClientErrorStep2('INFO: BROKER SEARCH PAGE');
        ajax_do (sUrl);
      }

      function setBroker(strExpress, strSessionId, strError) {

        document.forms[appFormName].elements['sch_broker_id'].value = strSessionId;

        myString = new String(strExpress)
        rExp = /Please click OK/gi;
        newString = new String ("<span style='color: red'><br />Please click the button above</span>")
        strExpress = myString.replace(rExp, newString)

        document.forms[appFormName].elements['sch_broker_msg'].value = strExpress;

        var arr = document.forms[appFormName].getElementsByTagName('DIV');
        for(i = 0; i < arr.length; i++){
          if (arr[i].id == 'brokerdetail') {
            obj = arr[i];
            obj.innerHTML = strExpress;
          }
        }
        //document.forms[appFormName].elements['brokerdetail'].innerHTML = strExpress;

        //setSubmitEnabled();
      }

      // ************************************************
      function removeNonNumbers(obj) {
        var str = obj.value;
        var res = '';
        var mychar;

        for (i=0; i<str.length; i++) {

          mychar = str.substring(i,i+1);
          if (!isNaN(mychar)) {
            res += mychar;
          }
        }
        obj.value = res;
      }

      function isNumberKey(evt)
      {
         var charCode;
         if (evt) {
           if (evt.which) {
             charCode = evt.which;
           } else {
             charCode = evt.keyCode;
           }

           if (charCode > 31 && (charCode < 48 || charCode > 57))
              return false;
         }
         return true;
      }


      function MortgageTypeChange(intMTId) {
        var ftbyes = document.forms[appFormName].elements['ftbyes'];
        var ftbno = document.forms[appFormName].elements['ftbno'];
        var mortgagetypebasic = document.forms[appFormName].elements['mortgagetypebasic'];

        mortgagetypebasic.value = intMTId;

        if (intMTId == "")
        {
          HideObject('trFp');
          HideObject('trFtb');
          HideObject('trOverseas');

          ftbyes.checked=false;
          ftbno.checked=false;
        }

        if(intMTId == "1") //remortgage
        {
          HideObject('trFp');
          HideObject('trFtb');
          HideObject('trOverseas');

          ftbyes.checked=false;
          ftbno.checked=false;
        }

        if(intMTId == "6") //purchase
        {
          ShowObject('trFp');
          ShowObject('trFtb');
          HideObject('trOverseas');
        }

        if(intMTId == "9")
        {
          HideObject('trFp');
          HideObject('trFtb');
          ShowObject('trOverseas');
        }

        if(intMTId == "5") //btl
        {
          ShowObject('trFp');
          HideObject('trFtb');
          HideObject('trOverseas');
        }
      }

      function HideObject(objId) {
        var obj; // = document.forms[appFormName].elements[objId];
        var arr = document.forms[appFormName].getElementsByTagName('TR');

        for(i = 0; i < arr.length; i++){
            if (arr[i].id == objId) {
              obj = arr[i];
            }
        }

        if (obj) {
          obj.style.display = 'none';
        }
      }

      function ShowObject(objId) {
        var obj; // = document.forms[appFormName].elements[objId];
        var arr = document.forms[appFormName].getElementsByTagName('TR');

        for(i = 0; i < arr.length; i++){
            if (arr[i].id == objId) {
              obj = arr[i];
            }
        }

        if (obj) {
          obj.style.display = '';
        }
      }

      function limitText (textObj, maxCharacters){
        if(textObj.value.length<maxCharacters){
            textObj.pref=textObj.value
        }else{
            textObj.value=textObj.pref;
        }
      }

      function getMortgageType() {
        var mt = document.forms[appFormName].elements["Mortgage_Type"].value;
        var bc = document.forms[appFormName].elements["bad_credit"].value;
        var sc = document.forms[appFormName].elements["sc"].checked;
        var ftb = document.forms[appFormName].elements["ftbyes"].checked;

        if (bc == '1') {
          bc = true;
        } else {
          bc = false;
        }

        var LeadbayMT;

        if (mt == '1') //remortgage checked
        {
          LeadbayMT = '1';
          if (sc) {
            LeadbayMT = '3'; //"SelfCert-Re-Mortgage";
          }

          if (bc) {
            LeadbayMT = '7'; //"Adverse-Re-Mortgage";
          }
        }

        if (mt == '6') //buy new checked
        {
          LeadbayMT = '6'; //"Purchase";
          if (ftb) {
            if (bc) {
              if (calcltvpercent()<= mortgagetypesPercentage[8]) // 8 adv other
              {
                LeadbayMT = '8'; //omtype.value="Adverse-Other";
              } else {
                LeadbayMT = '2'; //FTB;
              }
            } else {
              LeadbayMT = '2'; //mtype.value="FTB";
            }
          } else {
            if (sc) {
              LeadbayMT = '4'; //"SelfCert-Other";
            }
            if (bc) {
              LeadbayMT = '8'; //"Adverse-Other";
            }
            if (mt == '5') //btl chekced
            {
              LeadbayMT = '5'; //"Buy To Let";
              if (bc) {
                LeadbayMT = '8'; //"Adverse-Other";
              }
            }

          }
        }

        if (mt == '9') //oseas
        {
          LeadbayMT = '9';
        }


        if (mt == '5') //buy to let
        {
          LeadbayMT = '5';
          if (bc) {
            LeadbayMT = '8'; //"Adverse-Other";
          }
        }

        return LeadbayMT;
      }

        function getVariables() {

          FORM_DATA = createRequestObject(document.location);

          var preMT = '';
          var preMS = '';
          var prePV = '';
          var preSC = '';
          var preFP = '';
          var preFTB = '';
          var preCountry = '';
          var preBC1 = '';
          var preBC2 = '';
          var preBC3 = '';
          var preBC = '';
          var showstep = '';
          var preRef = '';
          var preReferrer = '';

          // Mortgage Type ##########################################

          if (!isNaN(FORM_DATA['mortgage_type']) && FORM_DATA['mortgage_type'] != '') {
            preMT = FORM_DATA['mortgage_type'];
          }

          if (preMT != '') {

            if (preMT == '6') {
              document.forms[appFormName].elements["Mortgage_Type"].value = 6;
              MortgageTypeChange(6);

              var arr = document.forms[appFormName].getElementsByTagName('TR');
              for(i = 0; i < arr.length; i++){
                if (arr[i].id == 'trMortgage_Type') {
                  obj = arr[i];
                  obj.style.display='none';
                }
              }

              //document.forms[appFormName].elements["trMortgage_Type"].style.display='none';
            };
            if (preMT == '1') {
              document.forms[appFormName].elements["Mortgage_Type"].value = 1;
              MortgageTypeChange(1);


              var arr = document.forms[appFormName].getElementsByTagName('TR');
              for(i = 0; i < arr.length; i++){
                if (arr[i].id == 'trMortgage_Type') {
                  obj = arr[i];
                  obj.style.display='none';
                }
              }

              //document.forms[appFormName].elements["trMortgage_Type"].style.display='none';
            };

            if (preMT == '5') {
              document.forms[appFormName].elements["Mortgage_Type"].value = 5;
              MortgageTypeChange(5);

              var arr = document.forms[appFormName].getElementsByTagName('TR');
              for(i = 0; i < arr.length; i++){
                if (arr[i].id == 'trMortgage_Type') {
                  obj = arr[i];
                  obj.style.display='none';
                }
              }

              //document.forms[appFormName].elements["trMortgage_Type"].style.display='none';
            };
            if (preMT == '9') {
              document.forms[appFormName].elements["Mortgage_Type"].value = 9;
              MortgageTypeChange(9);

              var arr = document.forms[appFormName].getElementsByTagName('TR');
              for(i = 0; i < arr.length; i++){
                if (arr[i].id == 'trMortgage_Type') {
                  obj = arr[i];
                  obj.style.display='none';
                }
              }

              //document.forms[appFormName].elements["trMortgage_Type"].style.display='none';
            };

          }
          // ###########################################################

          // Mortgage Size #############################################
          if ((!isNaN(FORM_DATA['mortgage_size'])) && (FORM_DATA['mortgage_size'] != '')) {
            preMS = FORM_DATA['mortgage_size'];
          }

          if (preMS != '') {
            document.forms[appFormName].elements["Mortgage_Size"].value = preMS;
          }

          // ##########################################################

          // Property Value #############################################
          if ((!isNaN(FORM_DATA['property_value'])) && (FORM_DATA['property_value'] != '')) {
            prePV = FORM_DATA['property_value'];
          }

          if (prePV != '') {
            document.forms[appFormName].elements["Property_Value"].value = prePV;
          }
          // ##########################################################

          // Found Property #############################################
          if ((!isNaN(FORM_DATA['fp'])) && (FORM_DATA['fp'] != '')) {
            preFP = FORM_DATA['fp'];
          }

          if (preFP != '') {
            if (preFP == '1') {document.forms[appFormName].elements['fpyes'].checked = true;}
            if (preFP == '0') {document.forms[appFormName].elements['fpno'].checked = true;}
          }

          // Bad credit #############################################
          if ((!isNaN(FORM_DATA['bad_credit'])) && (FORM_DATA['bad_credit'] != '')) {
            preBC = FORM_DATA['bad_credit'];
          }

          if (preBC != '') {
            if (preBC == '1') {
                document.forms[appFormName].elements['bc1'].checked = true;
                document.forms[appFormName].elements["bad_credit"].value = 1;
            }


            //if (preBC == '0') {document.getElementById('bad_credit').checked = true;}
          }

          // First time buyer #############################################
          if ((!isNaN(FORM_DATA['ftb'])) && (FORM_DATA['ftb'] != '')) {
            preFTB = FORM_DATA['ftb'];
          }

          if (preFTB != '') {
            if (preFTB == '1') {document.forms[appFormName].elements['ftbyes'].checked = true;}
            if (preFTB == '0') {document.forms[appFormName].elements['ftbno'].checked = true;}

              var arr = document.forms[appFormName].getElementsByTagName('TR');
              for(i = 0; i < arr.length; i++){
                if (arr[i].id == 'trFtb') {
                  obj = arr[i];
                  obj.style.display='none';
                }
              }

            //document.forms[appFormName].elements["trFtb"].style.display='none';
          }

          // country #############################################
          if ((!isNaN(FORM_DATA['country'])) && (FORM_DATA['country'] != '')) {
            preCountry = FORM_DATA['country'];
          }

          if (preCountry != '') {
            document.forms[appFormName].elements['country'].selectedIndex = preCountry;
          }

          // #########################################################
          if (!isNaN(FORM_DATA['showstep']) && FORM_DATA['showstep'] != '') {
            showstep = FORM_DATA['showstep'];
          }

          if (showstep == '2') {
            document.getElementById('divStep2').style.display = '';
          } else {
            document.getElementById('divStep1').style.display = '';
          }

          // UrlReferrer #############################################
          if (preRef != '') {
            document.forms[appFormName].elements["UrlReferrer"].value = preRef;
          }

          // Referrer ################################################

          if (FORM_DATA['referrer'] != '') {
            preReferrer = FORM_DATA['referrer'];
          }

          if (preReferrer != '') {
            document.forms[appFormName].elements["referrer"].value = preReferrer;
          }

          // Error ID

          if (intErrorId == '') {
            if (!isNaN(FORM_DATA['intErrorId'])) {
              intErrorId = FORM_DATA['intErrorId'];
              document.forms[appFormName].elements['intErrorDbId'].value = intErrorId;
            }
          }



        }

      function postcode_to_address(postcode){

      HideAddressFields();

      if(postcode==""){
        return false;
      }

      if (!validatePostcode(postcode)) {
        return false;
      }

      //document.getElementById("message").style.display = '';
      //document.getElementById("message").innerHTML="Finding Your Address. Please wait...";

      var sUrl = '';
      sUrl = strSSLURLtoApp + '/postcode_search.php';
      sUrl+="?ajax=Y&postcode=" + postcode;

      //alert(sUrl);

      ajax_do (sUrl);
    }

    function ClearAddressBox() {
      var ddl = document.forms[appFormName].elements["ddlAddressList"];
      ddl.options.length = 0;
      ddl.options[0] = new Option(' --- ','');
    }

    function set_postcode_to_address(address){
      var ar = address;
      var ddl = document.forms[appFormName].elements["ddlAddressList"];
      var psc = new String(document.forms[appFormName].elements["Postcode"].value);
      psc = psc.toUpperCase();

      // clear drop down
      ddl.options.length = 0;

      for(i=0;i<ar.length;i++){
        ddl.options[i] = new Option(psc + ' ' + ar[i]['address'],ar[i]['id']);
      }

      if (ar.length == 0) {
      } else {
        selectAddress(ddl.value);
      }
    }

    function validatePostcode(strPostcode) {
      var psc = new String(strPostcode);
      psc = psc.toUpperCase();

      //var regExp = ^(([A-Z]{1,2}\d{1,2})|([A-Z]{1,2}\d[A-Z]))\s?\d[ABDEFGHJLNPQRSTUWXYZ]{2}$;
      var regExp = /(([A-Z]{1,2}\d{1,2})|([A-Z]{1,2}\d[A-Z]))\s?\d{1}[ABDEFGHJLNPQRSTUWXYZ]{2}/;

      if(regExp.test(psc.toString())) {
        return true;
      } else {
        return false;
      }
    }

    function selectAddress(id) {

        var sUrl = strSSLURLtoApp + '/postcode_search.php';
        sUrl+="?ajax=Y";
        sUrl+="&postcodeid=" + id;

        //alert(sUrl);
        ajax_do (sUrl);
     }

     function set_address_details(det){
        var add = det;

        //document.getElementById("message").style.display = '';
        //document.getElementById("message").innerHTML="";

        document.forms[appFormName].elements["address_line1"].value=add['line1'];

        var strLine2 = ''+add['line2'];
        if (strLine2 == 'null') {
          document.forms[appFormName].elements["address_line2"].value = '';
        } else {
          document.forms[appFormName].elements["address_line2"].value = add['line2'];
        }

        document.forms[appFormName].elements["town"].value=add['town'];

        if(add['county']){
                document.forms[appFormName].elements["county"].value=add['county'];
        }else{
                document.forms[appFormName].elements["county"].value=add['town'];
        }

     }


     function HideAddressFields() {
       document.getElementById('trAddressList').style.display = '';
       document.getElementById('trAddress1').style.display = 'none';
       document.getElementById('trAddress2').style.display = 'none';
       document.getElementById('trTown').style.display = 'none';
       document.getElementById('trCounty').style.display = 'none';
     }

     function ShowAddressFields() {
       document.getElementById('trAddressList').style.display = 'none';
       document.getElementById('trAddress1').style.display = '';
       document.getElementById('trAddress2').style.display = '';
       document.getElementById('trTown').style.display = '';
       document.getElementById('trCounty').style.display = '';

       document.forms[appFormName].elements['address_line1'].value = '';
       document.forms[appFormName].elements['address_line2'].value = '';
       document.forms[appFormName].elements['town'].value = '';
       document.forms[appFormName].elements['county'].value = '';

       document.forms[appFormName].elements['address_line1'].focus();
     }