﻿var me_lastPostcodeChecked = null;

var me_detailedPolicyTypes = { remortgage: {ltvPercent: 95.0, id: 1}, firstTimeBuyer: {ltvPercent: 95.0, id: 2}, selfCertifyRemortgage: {ltvPercent: 85.0, id: 3}, selfCertifyOther: {ltvPercent: 85.0, id: 4}, buyToLet: {ltvPercent: 85.0, id: 5}, purchase: {ltvPercent: 95.0, id: 6}, adverseRemortgage: {ltvPercent: 80.0, id: 7}, adverseOther: {ltvPercent: 80.0, id: 8} };

//// URLs for web services on hades
var me_ajaxTestProcessLeadUrl = 'localhost:2263/Partners/YourMortgage/Enquiry/SubmitLead.aspx';

// URLs for web services
//var me_ajaxBrokerSearchUrl = 'www.moneyexpert.com/Partners/YourMortgage/Enquiry/SearchBroker.aspx';
var me_ajaxProcessLeadUrl = 'www.moneyexpert.com/Partners/YourMortgage/Enquiry/SubmitLead.aspx';

//var me_ajaxTestBrokerSearchUrl = 'moneyexpert.com/Partners/YourMortgage/Search/SearchBroker.aspx';
//var me_ajaxTestProcessLeadUrl = 'moneyexpert.com/Partners/YourMortgage/Enquiry/SubmitLead.aspx';


/* ==================================================================================
   DEBT ADVICE FORM VALIDATION SETUP
   ================================================================================== */

// Step 1

addValidation( [ $('ME_CurrentDebt') ], [{validator: selectHasValueValidator, validationData: null, errorMessages: ["Make a selection"]}], $('ME_CurrentDebt_Label'), $('ME_CurrentDebt_ErrorAdvice'), false, false, true, $('ME_Step3_FinishButton'), true, true, false, null, null, null );
addValidation( [ $('ME_CreditAgreement') ], [{validator: selectHasValueValidator, validationData: null, errorMessages: ["Make a selection"]}], $('ME_CreditAgreement_Label'), $('ME_CreditAgreement_ErrorAdvice'), false, false, true, $('ME_Step3_FinishButton'), true, true, false, null, null, null );
addValidation( [ $('ME_Title') ], [{validator: selectHasValueValidator, validationData: null, errorMessages: ["Make a selection"]}], $('ME_Title_Label'), $('ME_Title_ErrorAdvice'), false, false, true, $('ME_Step3_FinishButton'), true, true, false, null, null, null );

addValidation( [ $('ME_FirstName') ], [{validator: textboxHasValueValidator, validationData: null, errorMessages: ["Enter first name"]}, {validator: RegexValidator, validationData: "^[-`'\\wÁáĆćÉéÍíĹĺŃńÓóŔŕŚśÚúÝýŹźÀàÈèÌìÒòÙùÂâĈĉÊêĜĝĤĥÎîĴĵÔôŜŝÛûŴŵŶŷÄäËëÏïÖöÜüŸÿßÃãẼẽĨĩÑñÕõŨũỸỹÇçĢģĶķĻļŅņŖŗŞşŢţĐđŮůǍǎČčĎďĚěǏǐĽľŇňǑǒŘřŠšŤťǓǔŽžĀāĒēĪīŌōŪūǢǣǖǘǚǜĂăĔĕĞğĬĭŎŏŬŭĊċĖėĠġİıŻżĄąĘęĮįǪǫŲųḌḍḤḥḶḷḸḹṂṃṆṇṚṛṜṝṢṣṬṭŁłŐőŰűĿŀĦħÐðÞþŒœÆæØøÅåƏə\\s]{2,50}$", errorMessages: ["Enter valid name"]}, {validator: RegexValidator, validationData: "^[\\D]{2,}$", errorMessages: ["Enter valid name"]} ], $('ME_FirstName_Label'), $('ME_FirstName_ErrorAdvice'), true, false, true, $('ME_Step3_FinishButton'), false, false, false, null, null, null );
addValidation( [ $('ME_LastName') ], [{validator: textboxHasValueValidator, validationData: null, errorMessages: ["Enter last name"]}, {validator: RegexValidator, validationData: "^[-`'\\wÁáĆćÉéÍíĹĺŃńÓóŔŕŚśÚúÝýŹźÀàÈèÌìÒòÙùÂâĈĉÊêĜĝĤĥÎîĴĵÔôŜŝÛûŴŵŶŷÄäËëÏïÖöÜüŸÿßÃãẼẽĨĩÑñÕõŨũỸỹÇçĢģĶķĻļŅņŖŗŞşŢţĐđŮůǍǎČčĎďĚěǏǐĽľŇňǑǒŘřŠšŤťǓǔŽžĀāĒēĪīŌōŪūǢǣǖǘǚǜĂăĔĕĞğĬĭŎŏŬŭĊċĖėĠġİıŻżĄąĘęĮįǪǫŲųḌḍḤḥḶḷḸḹṂṃṆṇṚṛṜṝṢṣṬṭŁłŐőŰűĿŀĦħÐðÞþŒœÆæØøÅåƏə\\s]{2,50}$", errorMessages: ["Enter valid name"]}, {validator: RegexValidator, validationData: "^[\\D]{2,}$", errorMessages: ["Enter valid name"]} ], $('ME_LastName_Label'), $('ME_LastName_ErrorAdvice'), true, false, true, $('ME_Step3_FinishButton'), false, false, false, null, null, null );
addValidation( [ $('ME_Gender') ], [{validator: radioButtonListHasValueValidator, validationData: null, errorMessages: ["Make a selection"]}], $('ME_Gender_Label'), $('ME_Gender_ErrorAdvice'), false, false, true, $('ME_Step3_FinishButton'), true, true, false, null, null, null );
addValidation( [ $('ME_Smoker') ], [{validator: radioButtonListHasValueValidator, validationData: null, errorMessages: ["Make a selection"]}], $('ME_Smoker_Label'), $('ME_Smoker_ErrorAdvice'), false, false, true, $('ME_Step3_FinishButton'), true, true, false, null, null, null );
addValidation( [ $('ME_EmailAddress') ], [{validator: textboxHasValueValidator, validationData: null, errorMessages: ["Enter e-mail address"]}, {validator: EmailAddressValidator, validationData: null, errorMessages: ["Invalid e-mail address"]} ], $('ME_EmailAddress_Label'), $('ME_EmailAddress_ErrorAdvice'), true, false, true, $('ME_Step3_FinishButton'), false, false, false, null, null, null );
addValidation( [ $('ME_PhoneNumber') ], [{validator: textboxHasValueValidator, validationData: null, errorMessages: ["Enter number"]}, {validator: UkPhoneNumberValidator, validationData: null, errorMessages: UkPhoneNumberErrorMessages} ], $('ME_PhoneNumber_Label'), $('ME_PhoneNumber_ErrorAdvice'), true, false, true, $('ME_Step3_FinishButton'), false, false, false, null, null, null );
addValidation( [ $('ME_AlternatePhoneNumber') ], [{validator: textboxHasValueValidator, validationData: null, errorMessages: ["Enter number"]}, {validator: UkPhoneNumberValidator, validationData: null, errorMessages: UkPhoneNumberErrorMessages} ], $('ME_AlternatePhoneNumber_Label'), $('ME_AlternatePhoneNumber_ErrorAdvice'), true, false, true, $('ME_Step3_FinishButton'), false, false, false, null, null, null );

/* ==================================================================================
   DEBT ADVICE FORM EVENT SETUP
   ================================================================================== */

addEvent( $('ME_Step3_FinishButton'), 'onclick', ME_Step3_FinishButton_Event_Click );


/* ==================================================================================
   DEBT ADVICE FORM BUTTON EVENT HANDLERS
   ================================================================================== */

function findElementPosition(element)
{
	var curleft = curtop = 0;
	if (element.offsetParent)
	{
		curleft = element.offsetLeft;
		curtop = element.offsetTop;
		while (element = element.offsetParent)
		{
			curleft += element.offsetLeft;
			curtop += element.offsetTop;
		}

	}

	return {left: curleft, top: curtop};
}



function ME_Step3_FinishButton_Event_Click( event )
{
	var event = new Event(event);
	setCurrentControlFocus( event.target );

	if( validateMultiple( event ) )
	{
		$('ME_Step3_FinishButton').disabled = true;
		$('ME_Step3_FinishButton').value = "Submitting details...";
		
		setTimeout('revertSubmitButton()', 20000);

		submitLead();
	}
	
	return false;
}

function revertSubmitButton()
{
	$('ME_Step3_FinishButton').disabled = false;
	$('ME_Step3_FinishButton').value = "Submit";
	
	return;
}

function ProcessLeadCallBackMEX()
{	
	$('ME_Step3').className = 'ME_FormStep ME_FormStepHidden';
	$('ME_Step4').className = 'ME_FormStep ME_FormStepVisible';
   
}

function PublishError()
{
	$('ME_Step3').className = 'ME_FormStep ME_FormStepHidden';
	$('ME_Step4b').className = 'ME_FormStep ME_FormStepVisible';
   
}



/* ==================================================================================
   JSON AJAX DEBT ADVICE CALMEACK FUNCTIONS
   ================================================================================== */

function BrokerSearchCallback(BrokerDetails)
{
    
	if( BrokerDetails )
	{
		if( BrokerDetails.Error.ErrorNumber == '0' )
		{
		    
			var BrokerText = BrokerDetails.Broker.DisplayText;
    			
    			$('ME_Consent').innerHTML  = "Based on your requirements we have selected the FSA regulated broker <strong>" + BrokerText + "</strong> Click 'Submit' to confirm that you are happy to be contacted by telephone or email regarding your life insurance policy.";
                $('ME_Consent').style.visibility = 'visible';
			    $('hidBrokerGuid').value = BrokerDetails.Broker.Id;
			    $('ME_Step3_FinishButton').disabled = false;
			    $('ME_Step3_FinishButton').value = "Submit";
		}
		else
		{
			$('ME_BrokerName').innerHTML = "There has been a problem trying to find an FSA regulated broker to pass on your life insurance details.";
			$('ME_Consent').style.visibility = 'hidden';
			$('hidBrokerGuid').value = BrokerDetails.Broker.Id;
			$('ME_SessionId').value = '';
		}
	}
}

function WriteBrokerName (returnData)
{
    $('ME_Consent').innerHTML = returnData;
    $('ME_Consent').innerHTML += 'Click <b>SUBMIT</b> to confirm that you are happy to be contacted by telephone or email.';    
    $('ME_Consent').style.visibility = 'visible';
    $('ME_Step3_FinishButton').disabled = false;
	$('ME_Step3_FinishButton').value = "Submit";
    
    
    	
}

     
function ProcessLeadCallback( returnData )
{
	var grossLeadPrice = 0;
	if( returnData.Lead && returnData.Lead.GrossPrice )
	{
		grossLeadPrice = returnData.Lead.GrossPrice;
	}

	switch( returnData.Error.ErrorNumber )
	{
		case '235':
		case '0':
		{
			// Update the status of this session in the database
			sessionStepPing( "FINISH", 1, "&lp=" + grossLeadPrice );

			if( me_redirectThankYouPage )
			{
				if( me_leadPriceQueryStringParameterName )
				{
					if( me_thankYouPageHref.indexOf("?") > 0 )
					{
						me_thankYouPageHref += "&" + me_leadPriceQueryStringParameterName + "=" + grossLeadPrice;
					}
					else
					{
						me_thankYouPageHref += "?" + me_leadPriceQueryStringParameterName + "=" + grossLeadPrice;
					}
				}
							
				window.location.href = me_thankYouPageHref;
			}
			else
			{
				$('ME_Step3').className = 'ME_FormStep ME_FormStepHidden';
				$('ME_Step4').className = 'ME_FormStep ME_FormStepVisible';
				createMarketingMessageElement(returnData.Lead.BrokerMarketingMessage);
			}
			
			break;
		}

		case '100':
		{
			setControlToErrorState( me_postcodeValidator, "Enter valid UK postcode" );
			break;
		}
		
		default:
		{
			// Unknown error
			break;
		}
	}
}


function ProcessLeadCallBackMEX()
{	
	$('ME_Step3').className = 'ME_FormStep ME_FormStepHidden';
	$('ME_Step4').className = 'ME_FormStep ME_FormStepVisible';
   
}
function FriendlyErrorMessage(returnData)
{
    if (returnData)
        {
            $('ME_Consent').innerHTML = returnData;    
            $('ME_Consent').style.visibility = 'visible';
            $('ME_Step3_FinishButton').disabled = false;
	        $('ME_Step3_FinishButton').value = "Submit";
	    }
	else 
	    {
	        $('ME_Step3').className = 'ME_FormStep ME_FormStepHidden';
	        $('ME_Step4b').className = 'ME_FormStep ME_FormStepVisible';
	    }
}	
	
function PublishError()
{
	$('ME_Step3').className = 'ME_FormStep ME_FormStepHidden';
	$('ME_Step4b').className = 'ME_FormStep ME_FormStepVisible';
   
}

/* ==================================================================================
   JSON AJAX DEBT ADVICE CALLOUT FUNCTIONS
   ================================================================================== */


function getBrokerName(overrideIdenticalPostcodeCheck)
{
  
	var postcode = $('ME_Postcode').value.trim().toUpperCase();

	if( me_lastPostcodeChecked == postcode && overrideIdenticalPostcodeCheck != true )
	{
		return;
	}
	else
	{
		me_lastPostcodeChecked = postcode;
	}

	if( postcodeTest( postcode ) != -1 )
	{
		$('ME_Consent').style.visibility = 'hidden';
		$('ME_SessionId').value = '';
		$('ME_Step3_FinishButton').disabled = false;
		$('ME_Step3_FinishButton').value = "Submit";
		return;
	}

	$('ME_Step3_FinishButton').disabled = true;
	$('ME_Step3_FinishButton').value = "Submitting details...";

	var queryString = buildBasicQueryString();
    
   
	if( me_testing )
	{
		remoteJson({"uri": getPageProtocol()  + me_ajaxTestBrokerSearchUrl + queryString});
		
        //alert(getPageProtocol()  + me_ajaxTestBrokerSearchUrl + queryString);
		 
	}
	else
	{
		remoteJson({"uri": getPageProtocol() + me_ajaxBrokerSearchUrl + queryString});
	}
 
	return true;
}

function buildBasicQueryString()
{
	var queryString = '?';	
    queryString += 'Type=DebtAdvice';		
    queryString += '&CurrentDebt=' + $('ME_CurrentDebt').value;   	
   	queryString += '&CreditAgreements=' + $('ME_CreditAgreement').value;   	
    queryString += '&FormCategory=1'; // full form - 2 used to be    
	queryString += '&IPAddress=1.1.1.1' ;
	queryString += '&AffiliateID=' + (me_testing ? me_testAffiliateId : me_affiliateId);   	
    queryString += '&Title=' + $('ME_Title').value;
    queryString += '&First_Name=' + $('ME_FirstName').value;
	queryString += '&Surname=' + $('ME_LastName').value;	
	queryString += '&Home_Phone=' + $('ME_PhoneNumber').value;
	queryString += '&Work_Phone=' + $('ME_AlternatePhoneNumber').value;
	queryString += '&Email=' + $('ME_EmailAddress').value;
	queryString += '&hidBrokerGuid=' + $('hidBrokerGuid').value;
	return queryString;
	
}


function submitLead()
{

//	if( $('ME_SessionId').value.length < 1 || $('ME_SessionId').value == '' )
//	{   
//	   getBrokerName();		
//	}    
	
	var queryString = buildBasicQueryString();

	if( me_testing )
	{
	    remoteJson({"uri": getPageProtocol() + me_ajaxTestProcessLeadUrl + queryString});
	
	}
	else
	{
		remoteJson({"uri": getPageProtocol() + me_ajaxProcessLeadUrl + queryString});
	}
		
	//call final method
	//ProcessLeadCallBackMEX();
	
	return true;
}


// uses me_formPrefillQueryStringParameters to get names for qs parameter values like policyType, 
// creates an object with appropriate property names,
// then passes it to generic prefillForm function
function prefillFormFromQueryString()
{
   var prefillObject = {};
    convertQueryStringParamsToLower();
    
	if( me_queryObject[me_formPrefillQueryStringParameters.mortgageSize] )
	{    
	    prefillObject.mortgageSize = me_queryObject[me_formPrefillQueryStringParameters.mortgageSize];
	}
	
	if( me_queryObject[me_formPrefillQueryStringParameters.policyType] )
	{    
	    prefillObject.policyType = me_queryObject[me_formPrefillQueryStringParameters.policyType];
	}
	
	if( me_queryObject[me_formPrefillQueryStringParameters.mortgagePeriod] )
	{    
	    prefillObject.mortgagePeriod = me_queryObject[me_formPrefillQueryStringParameters.mortgagePeriod];
	}
	
	if( me_queryObject[me_formPrefillQueryStringParameters.propertyValue] )
	{    
	    prefillObject.propertyValue = me_queryObject[me_formPrefillQueryStringParameters.propertyValue];
	}
	
	if( me_queryObject[me_formPrefillQueryStringParameters.firstTimeBuyer] )
	{    
	    prefillObject.firstTimeBuyer = me_queryObject[me_formPrefillQueryStringParameters.firstTimeBuyer];
	}

	prefillForm(prefillObject)
}

function convertQueryStringParamsToLower()
{
    if( me_formPrefillQueryStringParameters.mortgageSize ) me_formPrefillQueryStringParameters.mortgageSize = me_formPrefillQueryStringParameters.mortgageSize.toLowerCase();
    if( me_formPrefillQueryStringParameters.policyType ) me_formPrefillQueryStringParameters.policyType = me_formPrefillQueryStringParameters.policyType.toLowerCase();
    if( me_formPrefillQueryStringParameters.mortgagePeriod ) me_formPrefillQueryStringParameters.mortgagePeriod = me_formPrefillQueryStringParameters.mortgagePeriod.toLowerCase();
    if ( me_formPrefillQueryStringParameters.propertyValue ) me_formPrefillQueryStringParameters.propertyValue = me_formPrefillQueryStringParameters.propertyValue.toLowerCase();
    if (me_formPrefillQueryStringParameters.firstTimeBuyer ) me_formPrefillQueryStringParameters.firstTimeBuyer = me_formPrefillQueryStringParameters.firstTimeBuyer.toLowerCase();
}

function prefillForm(prefillObject)
{

   if(me_formPrefillQueryStringParameters)
        $('ME_Form').style.display = '';
		
}

function createMarketingMessageElement(MarketingMessage)
{
    if(typeof(MarketingMessage) != 'undefined')
   {
        if(MarketingMessage != '')
        {
            MarketingMessage = MarketingMessage.replace(/&lt;/gi, '<').replace(/&gt;/gi, '>').replace(/&amp;/gi, '&').replace(/&quot;/gi, '"');
	    MarketingMessage = '<strong>A message from the broker</strong><br/>' + MarketingMessage;
            $('ME_Step4').innerHTML = '<tr><td class="ME_Headline">Finished</td></tr><tr><td class="ME_FormStepContent" id="ME_Step4_Content"><br />Thank you for your enquiry.<br /><br />Your adviser will be in touch with you shortly.<br /><br />' + MarketingMessage +'<br /><br /></td></tr>';
        }   
   }      
}

try

{

    if (document.location.href.indexOf("https") != 0)

    {

        var wl_ord=new Date().getTime();
        //document.write('<img  width="1" height="1" style="border-width\: 0\;" src="' + 'http://tu.connect.wunderloop.net/TU/483/1556/5912/?ord=' + wl_ord + '" />');

    }

}

catch(e){}
