﻿// JScript File

var ControlID = 'ctl00_cphMain_';
var bFormValid;
    
    
function DoValidate()
{
    var txt = document.getElementById('tes').validate();
    alert(!(txt.length>0));
}

function ShowAddress()
{
    var txt = document.getElementById('tes').getAddress();
    alert(txt.AddressRef);
}

function toggleHelp(helpDivClicked, helpIconClicked)
{
    if (document.getElementById(helpDivClicked).style.display == 'none')
    {
       document.getElementById(helpDivClicked).style.display='block';     
       document.getElementById(helpIconClicked).src='style/images/help_16_pressed.png';

    }
    else
    {
        document.getElementById(helpDivClicked).style.display='none'
        document.getElementById(helpIconClicked).src='style/images/help_16.png';
    }
}

function hideHelp(helpDiv2Hide)
{
    document.getElementById(helpDiv2Hide + 'Container').style.display='none'
    document.getElementById(helpDiv2Hide + 'Img').src='style/images/help_16.png';
}

function completeQuickAddress(ParamPrefix)
{
    switch(ParamPrefix)
    {
        case 'Sale':
        {
            ParamPrefix = 'S';
            fillAddress(ParamPrefix)
            break;
        }
        case 'Purchase':
        {
            ParamPrefix = 'P';
            fillAddress(ParamPrefix)
            break;
        }
        case 'Remortgage':
        {
            ParamPrefix = 'R';
            fillAddress(ParamPrefix)
            break;
        }
        case '-1':
        {
            ParamPrefix = 'Nothing';
            fillAddress(ParamPrefix)
            break;
        }
    }
}

function fillAddress(ParamPrefix)
{
    document.getElementById(ControlID + 'CorrespondenceQuickFillAddress_Line1').value = unescape(grabParam(ParamPrefix + "AL1"));
    document.getElementById(ControlID + 'CorrespondenceQuickFillAddress_Line2').value = grabParam(ParamPrefix + "AL2");
    document.getElementById(ControlID + 'CorrespondenceQuickFillAddress_Town').value = grabParam(ParamPrefix + "AT");
    document.getElementById(ControlID + 'CorrespondenceQuickFillAddress_County').value = grabParam(ParamPrefix + "AC");
    document.getElementById(ControlID + 'CorrespondenceQuickFillAddress_Postcode').value = grabParam(ParamPrefix + "ATP");
    var CountrySelectedIndex = grabParam(ParamPrefix + "ACY");
    if (CountrySelectedIndex == '')
    {
        CountrySelectedIndex = 0;
    }
    else
    {
        CountrySelectedIndex =+ 1;
    }
    document.getElementById(ControlID + 'CorrespondenceQuickFillAddress_Country').selectedIndex = CountrySelectedIndex-1;
}

function grabParam(name)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return unescape(results[1].replace(/\+/g,' '));
}

    
function validateDetailsForm()
{
    bFormValid=true;
    var quoteType = document.getElementById(ControlID + 'QuoteType').value;

    switch(quoteType)
    {
        case 'SalePurchase':
        {
            ValidateFieldNumeric('SalePropertyPrice');
            ValidateSelector('SaleTenure');
            ValidateAddress('SaleAddressLookup', '_Add');
            
            ValidateFieldNumeric('PurchasePropertyPrice');
            ValidateSelector('PurchaseTenure');
            break; 
        }
        case 'Sale': 
        {
            ValidateFieldNumeric('SalePropertyPrice');
            ValidateSelector('SaleTenure');
            ValidateAddress('SaleAddressLookup', '_Add');
            break;
        }  
        case 'Purchase':
        {
            ValidateFieldNumeric('PurchasePropertyPrice');
            ValidateSelector('PurchaseTenure');
            break;                
        }  
        case 'Remortgage':
        {
            ValidateFieldNumeric('RemortgagePropertyValue');
            ValidateFieldNumeric('RemortgageAmountRequired');
            ValidateSelector('RemortgageTenure');
            break;                    
        }  

    }
    if (bFormValid)
    {
        var sURL='results.aspx?quotetype=' + escape(document.getElementById(ControlID + 'QuoteType').value)
                    + '&SID=' + document.getElementById(ControlID + 'hidSID').value;
               
        try 
        {
            var SaleAddress;
            SaleAddress = document.getElementById(ControlID + 'SaleAddressLookup').getAddress();
            sURL=sURL+      '&SAL1=' + escape(SaleAddress.Line1) +
                            '&SAL2=' + escape(SaleAddress.Line2) +
                            '&SAT=' + escape(SaleAddress.Town) +
                            '&SAC=' + escape(SaleAddress.County) +
                            '&SATP=' + escape(SaleAddress.Postcode) +
                            '&SACY=' + escape(SaleAddress.Country) +
                            '&SAOSGE=' + escape(SaleAddress.OSGridRefEasting) +
                            '&SAOSGN=' + escape(SaleAddress.OSGridRefNorthing);
        }
        catch(err){}
        try
        {
            var PurchaseAddress;
            PurchaseAddress = document.getElementById(ControlID + 'PurchaseAddressLookup').getAddress();
            sURL=sURL+      '&PAL1=' + escape(PurchaseAddress.Line1) +
                            '&PAL2=' + escape(PurchaseAddress.Line2) +
                            '&PAT=' + escape(PurchaseAddress.Town) +
                            '&PAC=' + escape(PurchaseAddress.County) +
                            '&PATP=' + escape(PurchaseAddress.Postcode) +
                            '&PACY=' + escape(PurchaseAddress.Country) +
                            '&PAOSGE=' + escape(PurchaseAddress.OSGridRefEasting) +
                            '&PAOSGN=' + escape(PurchaseAddress.OSGridRefNorthing);
        }
        catch(err){}
        try
        {     
            var RemortgageAddress = document.getElementById(ControlID + 'RemortgageAddressLookup').getAddress();
            sURL=sURL+      '&RAL1=' + escape(RemortgageAddress.Line1) +
                            '&RAL2=' + escape(RemortgageAddress.Line2) +
                            '&RAT=' + escape(RemortgageAddress.Town) +
                            '&RAC=' + escape(RemortgageAddress.County) +
                            '&RATP=' + escape(RemortgageAddress.Postcode) +
                            '&RACY=' + escape(RemortgageAddress.Country) +
                            '&RAOSGE=' + escape(RemortgageAddress.OSGridRefEasting) +
                            '&RAOSGN=' + escape(RemortgageAddress.OSGridRefNorthing);
        }
        catch(err){}    
            
        switch(quoteType)
        {
            case 'SalePurchase':
            {
                var iSSharedOwnership=0;
                var iSUnregisteredLand=0;
            
                var iPSharedOwnership=0;
                var iPRightToBuy=0;
                var iPNewBuild=0;
                var iPUnregisteredLand=0;
                var iPBuyToLet=0;
                var iPFirstTimeBuyer=0;
            
                // Suplement Flags
                if (document.getElementById('chkSaleSharedOwnership').checked)
                    iSSharedOwnership=1;
                if (document.getElementById('chkSaleUnregisteredLand').checked)
                    iSUnregisteredLand=1;
            
                if (document.getElementById('chkPurchaseSharedOwnership').checked)
                    iPSharedOwnership=1;
                if (document.getElementById('chkPurchaseRTB').checked)
                    iPRightToBuy=1;
                if (document.getElementById('chkPurchaseNewBuild').checked)
                    iPNewBuild=1;
                if (document.getElementById('chkPurchaseUnregisteredLand').checked)
                    iPUnregisteredLand=1;
                if (document.getElementById('chkPurchaseBTL').checked)
                    iPBuyToLet=1;
                if (document.getElementById('chkPurchaseFTB').checked)
                    iPFirstTimeBuyer=1;
            
                var sURL=sURL + '&SPP=' + document.getElementById('SalePropertyPrice').value +
                                '&ST=' + document.getElementById('SaleTenure').value +
                                '&PPP=' + document.getElementById('PurchasePropertyPrice').value +
                                '&PT=' + document.getElementById('PurchaseTenure').value +
                                '&SS_SO=' + iSSharedOwnership +
                                '&SS_UL=' + iSUnregisteredLand +
                                '&PS_SO=' + iPSharedOwnership +
                                '&PS_RTB=' + iPRightToBuy +
                                '&PS_NB=' + iPNewBuild +
                                '&PS_UL=' + iPUnregisteredLand +
                                '&PS_BTL=' + iPBuyToLet +
                                '&PS_FTB=' + iPFirstTimeBuyer;
                                
                                     
                break; 
            }
            case 'Sale': 
            {
                var iSharedOwnership=0;
                var iUnregisteredLand=0;
            
                // Suplement Flags
                if (document.getElementById('chkSaleSharedOwnership').checked)
                    iSharedOwnership=1;
                if (document.getElementById('chkSaleUnregisteredLand').checked)
                    iUnregisteredLand=1;
            
                var sURL=sURL + '&SPP=' + document.getElementById('SalePropertyPrice').value +
                                '&ST=' + document.getElementById('SaleTenure').value +
                                '&SS_SO=' + iSharedOwnership +
                                '&SS_UL=' + iUnregisteredLand;
                                
                                
                break;
            }  
            case 'Purchase':
            {
                var iSharedOwnership=0;
                var iRightToBuy=0;
                var iNewBuild=0;
                var iUnregisteredLand=0;
                var iBuyToLet=0;
                var iFirstTimeBuyer=0;
            
                if (document.getElementById('chkPurchaseSharedOwnership').checked)
                    iSharedOwnership=1;
                if (document.getElementById('chkPurchaseRTB').checked)
                    iRightToBuy=1;
                if (document.getElementById('chkPurchaseNewBuild').checked)
                    iNewBuild=1;
                if (document.getElementById('chkPurchaseUnregisteredLand').checked)
                    iUnregisteredLand=1;
                if (document.getElementById('chkPurchaseBTL').checked)
                    iBuyToLet=1;
                if (document.getElementById('chkPurchaseFTB').checked)
                    iFirstTimeBuyer=1;
            
                var sURL=sURL + '&PPP=' + document.getElementById('PurchasePropertyPrice').value +
                                '&PT=' + document.getElementById('PurchaseTenure').value +
                                '&PS_SO=' + iSharedOwnership +
                                '&PS_RTB=' + iRightToBuy +
                                '&PS_NB=' + iNewBuild +
                                '&PS_UL=' + iUnregisteredLand +
                                '&PS_BTL=' + iBuyToLet +
                                '&PS_FTB=' + iFirstTimeBuyer;
                                
                break;                
            }  
            case 'Remortgage':
            {
                var iTransferOfEquity=0;
                var iSharedOwnership=0;
                var iUnregisteredLand=0;
                var iBuyToLet=0;
                
                if (document.getElementById('chkRemortgageTransferOfEquity').checked)
                    iTransferOfEquity=1;
                if (document.getElementById('chkRemortgageSharedOwnership').checked)
                    iSharedOwnership=1;
                if (document.getElementById('chkRemortgageUnregisteredLand').checked)
                    iUnregisteredLand=1;
                if (document.getElementById('chkRemortgageBuyToLet').checked)
                    iBuyToLet=1;
            
                var sURL=sURL + '&RPV=' + escape(document.getElementById('RemortgagePropertyValue').value) +
                                '&RAR=' + escape(document.getElementById('RemortgageAmountRequired').value) +
                                '&RT=' + escape(document.getElementById('RemortgageTenure').value) +
                                '&RS_TE=' + iTransferOfEquity +
                                '&RS_SO=' + iSharedOwnership +
                                '&RS_UL=' + iUnregisteredLand +
                                '&RS_BTL=' + iBuyToLet +
                                '&RS_EA=' + escape(document.getElementById('txtRemortgageTOFEEquityAmount').value) +
                                '&RS_EM=' + escape(document.getElementById('txtRemortgageTOFEExistingMortgage').value);
                break;                    
            }  
        }

        var sURL=sURL + '&DecacheId=' + Math.random();
        location.href=sURL;
    }
}

function validateClientDetailsForm()
{
    bFormValid=true;
    ValidateFieldString(ControlID + 'ClientTitle');
    ValidateFieldString(ControlID + 'Forename');
    ValidateFieldString(ControlID + 'Surname');
    ValidateEmailAddress(ControlID + 'EmailAddress');
    ValidateTelephoneNumber(ControlID + 'Telephone'); 
    ValidateAddress('CorrespondenceQuickFillAddress', '');
    return bFormValid;
}

function validateRequestCallbackForm()
{
    bFormValid=true;
    ValidateFieldString('ContactName');
    ValidateTelephoneNumber('ContactNumber');
    ValidateFieldString('ContactNotes');
    //ValidateCheckbox('ContactDPA');
    return bFormValid;
}


function ValidateAddress(FieldName, addSuffix)
{  
    var bAddressValid = true;
    try
    {
        Address = new Object;
        Address.Line1 = document.getElementById(ControlID + FieldName + addSuffix + '_Line1').value;
        Address.Line2 = document.getElementById(ControlID + FieldName + addSuffix + '_Line2').value;
        Address.Town = document.getElementById(ControlID + FieldName + addSuffix + '_Town').value;
        Address.County = document.getElementById(ControlID + FieldName + addSuffix +'_County').value;
        Address.Postcode = document.getElementById(ControlID + FieldName + addSuffix + '_Postcode').value; 
        Address.Country = document.getElementById(ControlID + FieldName + addSuffix + '_Country').value;

        var AddressErrorMessage = '';
        
//        if (Address.Line1 == '')
//        {
//            AddressErrorMessage = '<p>Please enter the first line of the address</p>';
//            bAddressValid = false;
//        }
//        if (Address.Town == '')
//        {
//            AddressErrorMessage += '<p>Please enter the town</p>';
//            bAddressValid = false;        
//        }
//        if (Address.County == '')
//        {
//            AddressErrorMessage += '<p>Please enter the county</p>';
//            bAddressValid = false;        
//        }
        if (Address.Country == '-1')
        {
            AddressErrorMessage += '<p>Please select the country</p>';
            bAddressValid = false;        
        }

        if (!bAddressValid)
        {
            document.getElementById(FieldName + '_ErrorMessageContainer').innerHTML = AddressErrorMessage; 
            document.getElementById(FieldName + '_ErrorMessageContainer').style.display='block';
            document.getElementById(FieldName + '_Container').className='FieldValidationerror'; 
            bFormValid = false;
        }
        else
        {
            document.getElementById(FieldName + '_ErrorMessageContainer').style.display='none';
            document.getElementById(FieldName + '_Container').className='Field'; 
        }
    }
    catch(err)
    {
        //If there is an error then the postcode object doesnt exist so we display validation error on page
        document.getElementById(FieldName + '_ErrorMessageContainer').style.display='block';
        document.getElementById(FieldName + '_Container').className='FieldValidationerror';
        bFormValid = false;
    }
}

function ValidateFieldString(FieldName) 
{
    if (document.getElementById(FieldName).value.toString().trim().length == 0)
    {
        document.getElementById(FieldName + '_ErrorMessageContainer').style.display='block';
        document.getElementById(FieldName + '_Container').className='FieldValidationerror';
        bFormValid = false;
    }
    else
    {
        document.getElementById(FieldName + '_ErrorMessageContainer').style.display='none';
        document.getElementById(FieldName + '_Container').className='Field';    
    }
}

function ValidateFieldNumeric(FieldName) 
{
    //remove any currency symbols and commas
    var sFieldValue = document.getElementById(FieldName).value.replace(/[£,]/g,"");
             
    //If the field is not a number or has nothing in it then alert the user
    if(isNaN(sFieldValue) || (sFieldValue.length==0)) {
        try {
            document.getElementById(FieldName + '_ErrorMessageContainer').style.display='block';
            document.getElementById(FieldName + '_Container').className='FieldValidationerror';
            bFormValid = false;
        }
        catch(objError){
        }
    }
    else {
        try {
            document.getElementById(FieldName + '_ErrorMessageContainer').style.display='none';
            document.getElementById(FieldName + '_Container').className='Field';
            hideHelp(FieldName + '_Help');
        }
        catch(objError){
        }
    }
}

function ValidateSelector(FieldName)
{
    if (document.getElementById(FieldName).value=='-1') 
    {
        document.getElementById(FieldName + '_ErrorMessageContainer').style.display='block';
        document.getElementById(FieldName + '_Container').className='FieldValidationerror';  
        bFormValid = false;
    }
    else
    {
        document.getElementById(FieldName + '_ErrorMessageContainer').style.display='none';
        document.getElementById(FieldName + '_Container').className='Field'; 
        try
        {
            //Some forms dont have the help div
            hideHelp(FieldName + '_Help');
        }
        catch(err) {
            // Do nothing
        }
    }
}

function ValidateCheckbox(FieldName) 
{
    if (document.getElementById(FieldName).checked == false)
    {
        document.getElementById(FieldName + '_ErrorMessageContainer').style.display='block';
        document.getElementById(FieldName + '_Container').className='FieldValidationerror';
        bFormValid = false;
    }
    else
    {
        document.getElementById(FieldName + '_ErrorMessageContainer').style.display='none';
        document.getElementById(FieldName + '_Container').className='Field';    
    }
}


function ValidateEmailAddress(FieldName)
{
    if (document.getElementById(FieldName).value.checkEmail()==false)            
    {
        document.getElementById(FieldName + '_ErrorMessageContainer').innerHTML='<p>Please enter a valid email address</p>';
        document.getElementById(FieldName + '_ErrorMessageContainer').style.display='block';
        document.getElementById(FieldName + '_Container').className='FieldValidationerror';
        bFormValid = false;
    }     
    else 
    {
        document.getElementById(FieldName + '_ErrorMessageContainer').innerHTML='<p>Please enter your email address</p>';
        document.getElementById(FieldName + '_ErrorMessageContainer').style.display='none';
        document.getElementById(FieldName + '_Container').className='Field'; 
    }
}

function ValidateTelephoneNumber(FieldName)
{
    var strPatters = /.\d+.*\d+.*\d+.*\d+.*\d+.*\d+.*\d+.*/;
    var regex = new RegExp(strPatters);
    if (regex.test(document.getElementById(FieldName).value.toString().trim()) == false)
    {
        //not valid phone number
        document.getElementById(FieldName + '_ErrorMessageContainer').style.display='block';
        document.getElementById(FieldName + '_Container').className='FieldValidationerror'; 
        bFormValid = false;
    }
    else 
    {
        document.getElementById(FieldName + '_ErrorMessageContainer').style.display='none';
        document.getElementById(FieldName + '_Container').className='Field';                
    }
}

function numericFieldCleanString(sender)
{
    var value = sender.value;   
    var rx = new RegExp(/[^0-9.]/g);
    value = value.replace(rx, "");
    sender.value = value;
}

function telephoneFieldCleanString(sender)
{
    var value = sender.value;   
    var rx = new RegExp(/[^0-9 +.]/g);
    value = value.replace(rx, "");
    sender.value = value;
}

function StripUnsafeChars(fieldId) {
	var field = $(fieldId);
	if (field && field.value && field.value.length > 0) {
		var replaceRgx = new RegExp("[\\/<>]", "g");
		field.value = field.value.replace(replaceRgx, "");
	}
}

String.prototype.checkEmail = function()
{
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(this))
        {
        return (true);
        }
    return (false);
}

String.prototype.trim = function()
{
    var sRetVal;
    
    sRetVal = this.replace(/^[\s]+/g,'');
    sRetVal = this.replace(/[\s]+$/g,'');

    return sRetVal; 
}
