﻿/*************************************************
 ****************** ENQUIRY FORM *****************
 *************************************************/
 
 //hijack form submission for async handling
        function creditScoreFormHook(valid)
        {        
            if(valid==true) submitEnquiryForm();
        
            else validateform();
        }
        
        function validateform()
        {
            $('#CreditScoreForm').attr("method","");
            $('#CreditScoreForm').attr("action","");
        
                var options = {
                url: "/"+callingController+"/ValidateEnquiry",
                type: "POST",
                dataType: "json",
                success: validateEnquiryResponse,
                error: handleAjaxError
            };
            $('#CreditScoreForm').ajaxForm(options);
            $('#CreditScoreForm').bind('form.pre.serialize',function(type,$form,options,veto) {
                options.semantic = false;
            });
        }


    //checks response from enquiry submission
    //if form valid, submit it, if not report errors back to UI      
    function validateEnquiryResponse(response, status) 
    {
        $("div.error").remove();
        var jsonObj = eval("(" + response + ")");
        
        if(jsonObj.length != 0) //form input not valid
        {                
            for(var i = 0; i < jsonObj.length; i++)
            {
                var targetDiv = $("#" + jsonObj[i].Key+"_error");                
                
                targetDiv.append(jsonObj[i].Value);
            }
        }
        else //form input valid
        {
            creditScoreFormHook(true);   
        }
    }

    //perform actual form submission
    function submitEnquiryForm()
    {           
        $('#CreditScoreForm').ajaxFormUnbind();
        $('#CreditScoreForm').attr("method","post");
        $('#CreditScoreForm').attr("action","/"+callingController+"/GetCreditScore");
        $('#CreditScoreForm').submit();
         
    }

    //provides visual cues of submission success to user
    function postEnquiryRendering(response, status)
    {
    //        $("#quickEnquiry").html(response);
    //        $("#progress li.step-apply").removeClass("selected");
    //        $("#progress li.step-complete").addClass("selected");
    //        $("#progress-bar").css("width", "100%");
    }

    /*************************************************
     ******************* AJAX ERROR ******************
     *************************************************/
    function handleAjaxError(info, xhr)
    {
        alert("there has been an error processing your request. please try again");
        window.location = callingController+"/ApplicationError";
    }

function doFindAddress(inputField,errorField)
{
    $('#Address1').hide();
    var postcode = $(inputField).val();
    if(!testRegEx(postcode,"^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) {0,1}[0-9][A-Za-z]{2})$"))
    { 
        $(errorField).html("<div class='error'>Please enter a valid post code</div>");
        return false;
    }
       
    $.getJSON('/credit-cards/FindAddress',{'Postcode':postcode},handleFindAddressResponse);    
    return false;
}

function testRegEx( input, pattern )
{
    var re = new RegExp( pattern );
    var result=re.exec( input );
    return result!=null;
}


function handleFindAddressResponse(response,status)
{
    removeAddressList();
        
    if(response.length == 0 || response == "")
    {
        displayPostcodeError();
        return;
    }
        
    var addressList = eval("(" + response + ")");
    if(addressList.length > 0)
    {
        var insert = "<ul class='results' id='find-addresslist-results'>";
        for(var count = 0;count < addressList.length;count++)
        {
            insert = insert + "<li>"+addressList[count]+"</li>";
        }
        
        insert = insert + "</ul>";
        
        $("#find-address").after(insert);
    }   
    else{
        displayPostcodeError();
    }
}

function displayPostcodeError()
{
    $('#PostCode_error').html("<div class='error'>Please enter a valid post code</div>");
}

function removeAddressList()
{
    var addresslistitem = $('#find-addresslist-results');
    if(addresslistitem != null)
        $('#find-addresslist-results').remove();
}

function selectAddress(addressItem,address)
{
    removeAddressList();
    
    $('#Address1').html(address).show();
}

function trackHdAppClick() 
{
    var url = "/" + callingController + "/HdApplyClicked";
    $.get(url);
}
