var advancedSearchLoaded   = false;
var newVehicleSearchLoaded = false;
var offerTypesSearchLoaded = false;
var advancedSearchCarCount = 0;
var advancedSearchVanCount = 0;

var resultDisplayKeyboardHighlight = 0;
var currentISearch = '';
var totalResults   = 0;
var favouritesLimit  = 6;
var quickSearchResults = new Array();

// Remembers the value for when moving away from the quick search and coming back
var rememberQuickVehicleSearchValue = '';

// Remembers results from quick search to show them again without ajax call
var rememberedDisplayText = '';

var possibleVehicleTypes   = ['car', 'van', 'bike'];

document.onkeydown = detectkeyPress;

function showEamonnHolmes () {
    // Open the dialog box
    $('#dialogEamonHolmes' ).dialog('open');

}

function showVideo(item){

    $('#eamonVideo1').hide();
    $('#eamonVideo2').hide();
    $('#eamonVideo3').hide();
    $('#eamonVideo4').hide();
    $('#eamonVideo5').hide();
    $('#eamonVideo' + item).show();
}

$(document).ready(function() {

        collectAllMakes('#valuemyvehicle_my_make', 0);
        collectAllMakes('#custom_my_make', 0);
        collectAllMakes('#valuemyvehicle_my_make_id', 0);

        $("#globaltestdrive_preferred_date, #preferred_date").datepicker();
        $('#globaltestdrive_preferred_date, #preferred_date').datepicker('option', {showAnim: 'fadeIn',dateFormat: 'dd/mm/yy'});


    $("#booking_preferred_date").datepicker();
    $('#booking_preferred_date').datepicker('option', {
        showAnim: 'fadeIn',
        dateFormat: 'dd/mm/yy'
    });

    $("#custom_dob, #preferred_date").datepicker();
    $('#custom_dob, #preferred_date').datepicker('option', {
        showAnim: 'fadeIn',
        dateFormat: 'dd/mm/yy'
    });

    // Create tabs and start them working
    $("#tabSaveCompare").tabs();
    $("#tabNewVehicleDetails").tabs();
    $("#tabUsedVehicleDetails").tabs();

    $('input[name=addToCompare]').change( function( event ) {
        if ( event.target.checked ) {
            addToCompare( event.target.value );
        } else {
            removeFromCompare( event.target.value );
        }
    });

    initialiseAdvancedSearch();


    // Generate Price
    showMyFavourites()

    $('#layout_stockUpdates_email').click(
        function(event) {
            if ($('#layout_stockUpdates_email').val() == '- Enter Email Here -') {
                $('#layout_stockUpdates_email').val('');
            }
        }
        );


    /**
    * @ desc This is the pop up dialog box for Retrieving Favourites
    */
    $("#dialogRetrieveFavourites").dialog({
        autoOpen: false,
        width: 600,
        modal: true,
        resizable: false,
        buttons: {
            'Submit': function() {
                retrieveFavourites();
            },
            Cancel: function() {
                $(this).dialog('close');
            }
        },
        close: function() {
        }
    });


    /**
    * @ desc This is the pop up dialog box for Saving Favourites
    */
    $("#dialogSaveFavourites").dialog({
        autoOpen: false,
        width: 600,
        modal: true,
        resizable: false,
        buttons: {
            'Submit': function() {
                saveFavourites();
            },
            Cancel: function() {
                $(this).dialog('close');
            }
        },
        close: function() {
        }
    });


    /**
     * @desc Popup for homepage part exchange form.
     */
    $('#dialogGlobalValueMyVehicle').dialog({
        autoOpen : false,
        width : 600,
        model : true,
        resizable : false,
        buttons : {
            'Submit' : function () {
                submitGlobalForm('GlobalValueMyVehicle');
            },
            Cancel : function () {
                $(this).dialog('close');
            }
        }
    });

        /**
    * @ desc This is the pop up dialog box for Value My Vehicle
    */
    $("#dialogUsedVehicleCustomValueMyVehicle").dialog({
        autoOpen: false,
        width: 600,
        modal: true,
        resizable: false,
        buttons: {
            'Submit': function() {
                submitCustomForm('UsedVehicleCustomValueMyVehicle');
            },
            Cancel: function() {
                $(this).dialog('close');
            }
        },
        close: function() {
        }
    });

        /**
    * @ desc This is the pop up dialog box for Enquiry
    */
    $("#dialogUsedVehicleCustomEnquiry").dialog({
        autoOpen: false,
        width: 600,
        modal: true,
        resizable: false,
        buttons: {
            'Submit': function() {
                submitCustomForm('UsedVehicleCustomEnquiry');
            },
            Cancel: function() {
                $(this).dialog('close');
            }
        },
        close: function() {
        }
    });

        /**
    * @ desc This is the pop up dialog box for Test Drive
    */
    $("#dialogGlobalTestDrive").dialog({
        autoOpen: false,
        width: 600,
        modal: true,
        resizable: false,
        buttons: {
            'Submit': function() {
                submitCustomForm('GlobalTestDrive');
            },
            Cancel: function() {
                $(this).dialog('close');
            }
        },
        close: function() {
        }
    });


    /**
     * @desc Popup for homepage video
     */
    $('#dialogEamonHolmes').dialog({
        autoOpen : false,
        width : 569,
        model : true,
        resizable : false
    });

    //collectNewVehicleMarqueLists(searchParams.newMarque, searchParams.newModel);

    //collectOfferTypes();

    // populate the title
    $('.prePopulateTitleList').each( function (item){
        // remove items
        $(this).removeOption(/./);

        // add titles
        $(this).addOption('', 'Please Select');
        $(this).addOption('mr', 'Mr');
        $(this).addOption('mrs', 'Mrs');
        $(this).addOption('miss', 'Miss');
        $(this).addOption('ms', 'Ms');
        $(this).addOption('dr', 'Dr');
        $(this).addOption('prof', 'Prof');
        
        $('.prePopulateTitleList').attr( "selectedIndex", 0);
    });


    // Add event listener to home baner make select and form submit.
    $('#homeBanner .selectMarque form').submit
    (
        function ()
        {
            var value = $(this).find('select').val();

            if (value !== '0')
            {
                window.location = $(this).find('select').val();
            }

            return false;
        }
        );

    $('#homeBanner .selectMarque form select').change
    (
        function ()
        {
            $(this).parent().parent().submit();
        }
        );


    $('.ui-dialog-buttonpane button').each( function () {

        var html = $(this).html();
        $(this).addClass('btn' + html);
        $(this).html('<span class="ui-button-text">' + html + '</span');
    });

    var buttons = $('.ui-dialog-buttonpane').children('button');
    buttons.removeClass('ui-button-text-only').addClass('ui-button-text-icon').addClass('ui-button');

    // Main nav hover.
    var removeActiveClass;
    $('#primaryNav #nav a.active').data('isActive', true);

    $('#primaryNav #nav ul a').mouseover(function (){
        clearTimeout(removeActiveClass);
        $(this).parent().parent().parent().find('>a').addClass('active');
    });

    $('#primaryNav #nav ul a').mouseout(function (){
        var parentA = $(this).parent().parent().parent().find('a');

        if (parentA.data('isActive')){
            return;
        }

        removeActiveClass = setTimeout(function () {
            parentA.removeClass('active');
        }, 10);
    });
    
    // Stock updates.
    if (!netdirector.franchiseUrl.length)
    {
        $('#stockupdate_marqueList option').bind
        (
            'click', 
            function ()
            {
                checkSelectedStockMarques();
            }
        );
    }
    
    
    setTimeout
    (
        function ()
        {
            var checked = document.getElementsByName('signup_to_mailing_list');
            for (i = 0; i < checked.length; i++)
            {
                checked[i].checked = true;
            }
        },
        10
    );
});

function checkSelectedModels()
{
    if($('#stockUpdates_form').valid())
    {
        $('.modelList').each
        (
            function ()
            {
                var ele = $(this);

                if(ele.val() == '' || ele.val() == null)
                {
                    $('option', $(this)).each
                    (
                        function ()
                        {
                            $(this).attr("selected",true);
                        }
                    );
                }
            }
        );

        return true;
    }
    else
    {
        return false;
    }
}


function checkSelectedStockMarques()
{
    $('#stockupdate_marqueList option').each
    (
        function ()
        {
            var ele = $('#marque' + $(this).attr('value'));
            
            if ($(this).is('option:selected'))
            {
                ele.slideDown(400);
            }
            
            else
            {
                ele.slideUp(400);
            }
        }
    );
};



function submitValueMyVehicleForm(){

    // Check if form is valid before proceeding
    if ($('#formValueMyVehicle').valid())
    {
        $('body').css('cursor', 'progress');

        $.ajax
        ({
            url : '/frontend-operations/submit-form/',
            dataType : 'json',
            data : $('#formValueMyVehicle').serialize(),
            success: function (data)
            {
                if (data.status === true)
                {
                    itForm(data.intellitracker);
                    // Submitted ok.
                    updateTips('Enquiry sent', 'Thank you for your enquiry. We will respond as soon as possible', 'highlight', '', 'alertBoxValueMyVehicle');
                    clearFormElements('#formValueMyVehicle');
                    setTimeout
                    (
                        function ()
                        {
                            autoCloseDialog('dialogValueMyVehicle');
                        }, 4000);
                }

                else
                {
                    // Show generic message
                    updateTips('Request Failed', 'The form submit request failed, please try again.', 'error', '', 'alertBoxValueMyVehicle');
                }
            },
            error : function (objRequest)
            {
                updateTips('Request Failed', 'The request to submit failed, please try again.', 'error', '', 'alertBoxValueMyVehicle');
            }
        });

        $('body').css('cursor', 'default');
    }
}


function doPostcodeLookup( prefix ) {

    if ( $('#' + prefix + '_postcode').val() ) {

        $('body').css('cursor', 'progress');
        $('.loadingIcon').show();

        $.ajax({
            url: '/frontend-operations/postcode-lookup-custom/',
            dataType: 'json',
            data: "postcode=" + $('#' + prefix + '_postcode').val(),
            success: function(data){
                if ( data.addresses.length > 0 && typeof data.addresses[0].error_number == 'undefined' ) {
                    if( data.addresses != null ){
                        $('#' + prefix + '_postcode_results').show();
                        $('#' + prefix + '_postcode_addresses').attr("disabled", "disabled");
                        $('#' + prefix + '_postcode_addresses').removeOption(/./);

                        $.each(data.addresses, function(i,item){

                            $('#' + prefix + '_postcode_addresses').addOption(item.id, item.description);

                        });

                        $('#' + prefix + '_postcode_addresses').removeAttr('disabled').attr( "selectedIndex", 0);
                    }
                } else {
                    alert("Please enter a valid postcode, or manually supply your address.");
                }

                $('body').css('cursor', 'default');
                $('.loadingIcon').hide();

            },
            error: function(objRequest){
                $('body').css('cursor', 'default');
                $('.loadingIcon').hide();
            }
        });

    }
}


function selectPostcode( prefix ) {
    if ( $('#' + prefix + '_postcode_addresses').val() ) {
        $.ajax({
            url: '/frontend-operations/postcode-address-custom/',
            dataType: 'json',
            data: "address=" + $('#' + prefix + '_postcode_addresses').val(),
            success: function(data){
                if( data.address[0] != null ){
                    $('#' + prefix + '_postcode_results').hide();
                    $('#' + prefix +'_addressline1').val(data.address[0].line1);

                    if ( typeof data.address[0].line2 != 'undefined' ) {
                        $('#' + prefix +'_addressline2').val(data.address[0].line2);
                    } else {
                        $('#' + prefix +'_addressline2').val("");
                    }

                    if ( typeof data.address[0].line3 != 'undefined' ) {
                        $('#' + prefix +'_addressline2').val( $('#' + prefix +'_addressline2').val() + ", " + data.address[0].line3);
                    }

                    $('#' + prefix +'_town').val(data.address[0].post_town);

                    if ( typeof data.address[0].county != 'undefined' ) {

                        if ( $('#' + prefix +'_county').length > 0 ) {
                            $('#' + prefix +'_county').val(data.address[0].county);
                        } else {
                            $('#' + prefix +'_town').val($('#' + prefix +'_town').val() + ", " + data.address[0].county);
                        }

                    }

                    $('#' + prefix +'_postcode').val(data.address[0].postcode);

                }
            },
            error: function(objRequest){

            }
        });
    }
}

/**
* @ desc This will collect All Models under a particular Make
*/
function collectAllModels(elementId, marqueId, isVan, selectedId){

    if ($('#vehicle_type_van:checked').val() !== undefined) {
          isVan = 1;
    }
   
    
    var modelId = $( elementId );
    modelId.attr('disabled', 'disabled');

    $.ajax({
        url: '/frontend-operations/all-model-list/',
        dataType: 'json',
        data: 'marque_id=' + marqueId + '&is_van=' + isVan,
        success: function(data){

            // Remove all options
            modelId.removeOption(/./).addOption('', '- Select Model -');

            // Add Options
            $.each(data, function(i,item){

                modelId.addOption(item.id, item.modelName);
            });

            // If previously selected..
            if( selectedId != null && selectedId > 0){
                modelId.selectOptions(selectedId);
            }else{
                // select 1st one if only one available
                var preSelect = ( data.length == 1 ) ? 1: 0;
                modelId.attr( "selectedIndex", preSelect);
            }
            modelId.removeAttr('disabled');
        },
        error: function(objRequest){

            modelId.removeAttr('disabled').removeOption(/./).addOption('', '- Select Model -');
        }
    });
}


/**
* @ desc This will collect All Makes under a particular Vehicle Type
*/
function collectAllMakes(elementId, isVan, selectedId){

    var marqueId = $( elementId );
    marqueId.attr('disabled', 'disabled');

    $.ajax({
        url: '/frontend-operations/all-marque-list/',
        dataType: 'json',
        data: 'is_van=' + isVan,
        success: function(data){

            // Remove all options
            marqueId.removeOption(/./).addOption('', '- Select Marque -');

            // Add Options
            $.each(data, function(i,item){

                marqueId.addOption(item.id, item.marqueName);
            });

            // If previously selected..
            if( selectedId != null && selectedId > 0){
                marqueId.selectOptions(selectedId);
            }else{
                // select 1st one if only one available
                var preSelect = ( data.length == 1 ) ? 1: 0;
                marqueId.attr( "selectedIndex", preSelect);
            }
            marqueId.removeAttr('disabled');
        },
        error: function(objRequest){

            marqueId.removeAttr('disabled').removeOption(/./).addOption('', '- Select Marque -');
        }
    });
}


function updateUsedMarques () {

    $('#motorcycle_auto_marque_detail_id').attr('disabled', 'disabled');
    $('#makeOfferMotorcycle').attr('disabled', 'disabled');

    var is_van = 0;

    if ( isVanSearch() ) {
        is_van = 1;
        $('#van_auto_marque_detail_id').attr('disabled', 'disabled');
    } else {
        if ( isBikeSearch() ) {
            is_van = 2;
        }
        $('#auto_marque_detail_id').attr('disabled', 'disabled');
    }
    $.ajax({
        url: '/frontend-operations/used-vehicle-marques-custom/',
        dataType: 'json',
        data: 'is_van=' + is_van,
        success: function(data){

            // Add Options
            if( data.marques != null ){
                if ( is_van == 0 ) {
                    $("#auto_marque_detail_id").removeOption(/./);
                } else {
                    $("#van_auto_marque_detail_id").removeOption(/./);
                }
                $("#motorcycle_auto_marque_detail_id").removeOption(/./);
                $("#makeOfferMotorcycle").removeOption(/./);
                $.each(data.marques, function(i,item){
                    if ( is_van == 0 ) {
                        $("#auto_marque_detail_id").addOption(item.id, item.marqueName);
                    } else {
                        $("#van_auto_marque_detail_id").addOption(item.id, item.marqueName);
                    }
                    $("#motorcycle_auto_marque_detail_id").addOption(item.id, item.marqueName);
                    $("#makeOfferMotorcycle").addOption(item.id, item.marqueName);
                });
            }

            $("#auto_marque_detail_id").attr( "selectedIndex", 0);
            $("#van_auto_marque_detail_id").attr( "selectedIndex", 0);
            $("#motorcycle_auto_marque_detail_id").attr( "selectedIndex", 0);

            if ( searchParams.makeId ) {
                if ( is_van == 0 ) {
                    $('#auto_marque_detail_id').removeAttr('disabled').selectOptions(searchParams.makeId);
                } else {
                    $('#van_auto_marque_detail_id').removeAttr('disabled').selectOptions(searchParams.makeId);
                }
                $('#motorcycle_auto_marque_detail_id').removeAttr('disabled').selectOptions(searchParams.makeId);
                $('#makeOfferMotorcycle').removeAttr('disabled').selectOptions(searchParams.makeId);
            } else {
                if ( is_van == 0 ) {
                    $('#auto_marque_detail_id').removeAttr('disabled').attr( "selectedIndex", 0);
                } else {
                    $('#van_auto_marque_detail_id').removeAttr('disabled').attr( "selectedIndex", 0);
                }
                $('#motorcycle_auto_marque_detail_id').removeAttr('disabled').attr( "selectedIndex", 0);
                $('#makeOfferMotorcycle').removeAttr('disabled').attr( "selectedIndex", 0);
            }

            collectAvailableModelsBike(0);
        },
        error: function(objRequest){

            if ( is_van == 0 ) {
                $('#auto_marque_detail_id').removeAttr('disabled').attr( "selectedIndex", 0);
            } else {
                $('#van_auto_marque_detail_id').removeAttr('disabled').attr( "selectedIndex", 0);
            }
            $('#motorcycle_auto_marque_detail_id').removeAttr('disabled').attr( "selectedIndex", 0);
            $('#makeOfferMotorcycle').removeAttr('disabled').attr( "selectedIndex", 0);
        }
    });
}


function updateNearlyNewMarques ( ) {
    $('#auto_marque_detail_id').attr('disabled', 'disabled');
    $('#van_auto_marque_detail_id').attr('disabled', 'disabled');

    var is_van = 0;

    if ( isVanSearch() ) {
        is_van = 1;
    }

    $.ajax({
        url: '/frontend-operations/nearly-new-vehicle-marques-custom/',
        dataType: 'json',
        data: 'is_van=' +  is_van,
        success: function(data){
            // Add Options
            if( data.marques != null ){
                $("#auto_marque_detail_id").removeOption(/./);
                $("#van_auto_marque_detail_id").removeOption(/./);

                $.each(data.marques, function(i,item){
                    $("#auto_marque_detail_id").addOption(item.id, item.marque_name);
                    $("#van_auto_marque_detail_id").addOption(item.id, item.marque_name);

                });
            }

            if ( searchParams.makeId ) {
                $('#auto_marque_detail_id').removeAttr('disabled').selectOptions(searchParams.makeId);
                $('#van_auto_marque_detail_id').removeAttr('disabled').selectOptions(searchParams.makeId);
            } else {
                $('#auto_marque_detail_id').removeAttr('disabled').attr( "selectedIndex", 0);
                $('#van_auto_marque_detail_id').removeAttr('disabled').attr( "selectedIndex", 0);
            }
        },
        error: function(objRequest){

            $('#auto_marque_detail_id').removeAttr('disabled').attr( "selectedIndex", 0);
            $('#van_auto_marque_detail_id').removeAttr('disabled').attr( "selectedIndex", 0);
        }
    });
}


/**
* @ desc This will attempt to open a dialog form via passed in ids
*/
function openDialogForm( dialogName, formName, alertBoxName ){

    if( dialogName != '' && formName != '' ){

        // Clear the form values
        clearFormElements('#' + formName);

        // Removes validation messages
        var validator = $('#' + formName).validate();
        validator.resetForm();

        if( alertBoxName != '' ){

            // Clear Alert Box Text
            resetTips( alertBoxName );
        }

        // Open the dialog box
        $('#' + dialogName ).dialog('open');

        // highlight first input
        $('#' + dialogName + ' :input:text:first').focus();
    }
}


/**
* @ desc This will attempt to reset any options selected in the search
*/
function rememberSearchSettings(){

    // Remember Search Params
    if( parseInt( searchParams.makeId ) > 0 ){
        if ( searchParams.is_motorcycle || netdirector.franchiseUrl.indexOf('bmw') > -1 || netdirector.franchiseUrl.indexOf('yamaha') > -1 ) {
            $("#motorcycle_auto_marque_detail_id").selectOptions( searchParams.makeId );
            $("#makeOfferMotorcycle").selectOptions( searchParams.makeId );
            collectAvailableOfferModels( searchParams.modelId, 2);
            collectAvailableModelsBike(searchParams.makeId);
        } else {
            $("#auto_marque_detail_id").selectOptions( searchParams.makeId );
            $("#makeOfferCar").selectOptions( searchParams.makeId );
            collectAvailableModels( searchParams.makeId, 0);
            //collectAvailableOfferModels( searchParams.modelId, 0);
            collectAvailableModelsBike(searchParams.makeId);
        }

    }else{

        $("#auto_marque_detail_id").selectOptions( netdirector.defaultAutoMarqueDetailId );
        collectAvailableModels( searchParams.makeId, 0);
    //collectAvailableOfferModels( searchParams.modelId, 0);
    }

    if( parseInt( searchParams.offerType ) > 0 ){
        $("#offerTypeCar").selectOptions( searchParams.offerType );
        $("#offerTypeVan").selectOptions( searchParams.offerType );
    }

    if( parseInt( searchParams.vanMakeId ) > 0 ){
        $("#van_auto_marque_detail_id").selectOptions( searchParams.vanMakeId );
        $("#makeOfferVan").selectOptions( searchParams.makeId );
        collectAvailableModels( searchParams.vanModelId, 1);
    //collectAvailableOfferModels( searchParams.vanModelId, 1);
    }

    if ( parseInt( searchParams.price ) > 0 ) {
        $("#price").selectOptions( searchParams.price );
    }

    if ( searchParams.postcode != '' ) {
        $("#postcode").val( searchParams.postcode );
    }

    if ( searchParams.advancedSearchDoors != '' ) {
        $("#advancedSearchDoors").val( searchParams.advancedSearchDoors );
    }

    if ( searchParams.advancedSearchPreviousOwners != '' ) {
        $("#advancedSearchPreviousOwners").val( searchParams.advancedSearchPreviousOwners );
    }

    if ( searchParams.advancedSearchEngineSize != '' ) {
        $("#advancedSearchEngineSize").val( searchParams.advancedSearchEngineSize );
    }

    if ( searchParams.advancedSearchTaxBand != '' ) {
        $("#advancedSearchTaxBand").val( searchParams.advancedSearchTaxBand );
    }

    if ( searchParams.advancedSearchMPG != '' ) {
        $("#advancedSearchMPG").val( searchParams.advancedSearchMPG );
    }

    if ( searchParams.advancedSearchMileage != '' ) {
        $("#advancedSearchMileage").val( searchParams.advancedSearchMileage );
    }

    if ( searchParams.advancedRegistrationDate != '' ) {
        $("#advancedRegistrationDate").val( searchParams.advancedRegistrationDate );
    }

    if ( searchParams.advancedInsuranceGroup != '' ) {
        $("#advancedInsuranceGroup").val( searchParams.advancedInsuranceGroup );
    }

    if ( searchParams.advancedNCap != '' ) {
        $("#advancedNCap").val( searchParams.advancedNCap );
    }

    if ( searchParams.category != '' ) {
        if ( searchParams.category == 'small' ) {
            selectCategory('box1', searchParams.category);
        }
        if ( searchParams.category == 'eco' ) {
            selectCategory('box2', searchParams.category);
        }

        if ( searchParams.category == 'family' ) {
            selectCategory('box3', searchParams.category);
        }

        if ( searchParams.category == 'cabriolet' ) {
            selectCategory('box4', searchParams.category);
        }

        if ( searchParams.category == 'automatic' ) {
            selectCategory('box5', searchParams.category);
        }
        if ( searchParams.category == '4x4' ) {
            selectCategory('box6', searchParams.category);
        }
        if ( searchParams.category == 'mpv' ) {
            selectCategory('box7', searchParams.category);
        }
        if ( searchParams.category == 'prestige' ) {
            selectCategory('box8', searchParams.category);
        }
    }
}


/**
* @ desc This will show/hide advanced search options
*/
function toggleCarAdvancedSearch( el ){

    $( el ).animate({
        opacity: 'toggle',
        height: 'toggle'
    }, function() {
        updateAdvancedCarFlag()
    });
}

function toggleNearlyNewCarAdvancedSearch( el ){

    $( el ).animate({
        opacity: 'toggle',
        height: 'toggle'
    }, function() {
        updateNearlyNewAdvancedCarFlag()
    });
}
function updateNearlyNewAdvancedCarFlag ()  {
    if ( $('#moreNearlyNewCarSearchOptions').is(':hidden') ) {
        $('#nearly_new_car_is_advanced_search').val(0);
    } else {
        $('#nearly_new_car_is_advanced_search').val(1);
    }
}



function toggleNearlyNewBikeAdvancedSearch( el ){

    $( el ).animate({
        opacity: 'toggle',
        height: 'toggle'
    }, function() {
        updateNearlyNewAdvancedBikeFlag()
    });
}
function updateNearlyNewAdvancedBikeFlag ()  {
    if ( $('#moreNearlyNewBikeSearchOptions').is(':hidden') ) {
        $('#nearly_new_bike_is_advanced_search').val(0);
    } else {
        $('#nearly_new_bike_is_advanced_search').val(1);
    }
}

function toggleNearlyNewVanAdvancedSearch( el ){

    $( el ).animate({
        opacity: 'toggle',
        height: 'toggle'
    }, function() {
        updateNearlyNewAdvancedVanFlag()
    });
}
function updateNearlyNewAdvancedVanFlag ()  {
    if ( $('#moreNearlyNewVanSearchOptions').is(':hidden') ) {
        $('#nearly_new_van_is_advanced_search').val(0);
    } else {
        $('#nearly_new_van_is_advanced_search').val(1);
    }
}


function toggleVanAdvancedSearch( el ){

    $( el ).animate({
        opacity: 'toggle',
        height: 'toggle'
    }, function() {
        updateAdvancedVanFlag()
    });
}

function updateAdvancedVanFlag ()  {
    if ( $('#moreVanSearchOptions').is(':hidden') ) {
        $('#van_is_advanced_search').val(0);
    } else {
        $('#van_is_advanced_search').val(1);
    }
}

function toggleBikeAdvancedSearch( el ){

    $( el ).animate({
        opacity: 'toggle',
        height: 'toggle'
    }, function() {
        updateAdvancedBikeFlag()
    });
}

function updateAdvancedBikeFlag ()  {
    if ( $('#moreBikeSearchOptions').is(':hidden') ) {
        $('#bike_is_advanced_search').val(0);
    } else {
        $('#bike_is_advanced_search').val(1);
    }
}


function updateAdvancedCarFlag ()  {
    if ( $('#moreCarSearchOptions').is(':hidden') ) {
        $('#car_is_advanced_search').val(0);
    } else {
        $('#car_is_advanced_search').val(1);
    }
}


function showCarSearchOptions ( ) {

    $('#new_car_is_van').val(0);
    $('#van_auto_marque_detail_id').hide();
    $('#van_auto_model_detail_id').hide();
    $('#motorcycle_auto_marque_detail_id').hide();
    $('#motorcycle_auto_model_detail_id').hide();
    $('#auto_marque_detail_id').show();
    $('#auto_model_detail_id').show();

    collectNewVehicleMarqueLists(searchParams.newMarque, searchParams.newModel);
    if ( $('input[name=vehicleCondition][checked]:radio').val() == 'nearlyNew' ) {
        updateNearlyNewMarques();
    } else {
        updateUsedMarques();
    }

    if ( $('#carType').length  == 1 ) {
        $('#carType').show();
    }
}


function showVanSearchOptions ( ) {
    $('#new_car_is_van').val(1);

    $('#van_auto_marque_detail_id').show();
    $('#van_auto_model_detail_id').show();
    $('#auto_marque_detail_id').hide();
    $('#auto_model_detail_id').hide();
    $('#motorcycle_auto_marque_detail_id').hide();
    $('#motorcycle_auto_model_detail_id').hide();
    collectNewVehicleMarqueLists(searchParams.newMarque, searchParams.newModel);
    if ( $('input[name=vehicleCondition][checked]:radio').val() == 'nearlyNew' ) {
        updateNearlyNewMarques();
    } else {
        updateUsedMarques();
    }

    if ( $('#carType').length  == 1 ) {
        $('#carType').hide();
        $('#category_search').val('');
    }

}


function showMotorcycleSearchOptions ( ) {
    $('#van_auto_marque_detail_id').hide();
    $('#van_auto_model_detail_id').hide();
    $('#motorcycle_auto_marque_detail_id').show();
    $('#motorcycle_auto_model_detail_id').show();
    $('#auto_marque_detail_id').hide();
    $('#auto_model_detail_id').hide();
    collectNewVehicleMetaBikeMarqueList();
    collectAvailableModelsBike(0);
    updateUsedMarques();
}


function showVanOfferSearchOptions ( ) {
    $('#offerCarsDetails').hide();
    $('#offerMotorcycleDetails').hide();
    $('#offerVansDetails').show();
}


function showCarOfferSearchOptions ( ) {
    $('#offerCarsDetails').show();
    $('#offerVansDetails').hide();
    $('#offerMotorcycleDetails').hide();
}


function showMotorcycleOfferSearchOptions ( ) {
    $('#offerCarsDetails').hide();
    $('#offerVansDetails').hide();
    $('#offerMotorcycleDetails').show();
}


/**
* @ desc This updates the dialog alert box, passes in a header, text, type of msg, and optional input to highlight
*/
function updateTips(header,text,msgType,highlightInput,alertBoxId) {

    // Clear Alert Box Text
    resetTips(alertBoxId);
    var alertBox = ( alertBoxId != null && alertBoxId != '' ) ? $('#'+alertBoxId) : $('#dialogAlertBox');

    txt = '<strong>'+header+':</strong> '+ text;
    switch( msgType ){
        case 'error':
            msg = "<p><span class=\"ui-icon ui-icon-alert\" style=\"float: left; margin: 0px 5px;\"></span>"+txt+"</p>";
            alertBox.addClass('ui-state-error').html(msg);
            break;

        case 'highlight':
            msg = "<p><span class=\"ui-icon ui-icon-info\" style=\"float: left; margin: 0px 5px;\"></span>"+txt+"</p>";
            alertBox.addClass('ui-state-highlight').html(msg);
            break;

        default:
            break;
    }

    if( highlightInput != '' ){
        $('#'+highlightInput).addClass('ui-state-error');
    }
}


/**
* @ desc This Resets the dialog alert box
*/
function resetTips(alertBoxId){

    alertBox = ( alertBoxId != null && alertBoxId != '' ) ? $('#'+alertBoxId) : $('#dialogAlertBox');
    alertBox.removeClass('ui-state-error ui-state-highlight').html('');
}


/**
* @ desc This will close the dialog box
*/
function autoCloseDialog(dialogFormType){
    $( "#" + dialogFormType ).dialog('close');
}


/**
* @ desc This will empty all form elements
*/
function clearFormElements(el) {

    $(el).find(':input').each(function() {
        switch(this.type) {
            case 'password':
            case 'select-multiple':
            case 'select-one':
            case 'text':
            case 'textarea':
                $(this).val('');
                break;
            case 'checkbox':
            case 'radio':
                this.checked = false;
        }
        $(this).removeClass('ui-state-error');
    });
}


/**
* @ desc This is a generic ajax request function
*/
function ndCollector( target, params, successFunction, errorFunction ){

    $.ajax({
        url: target,
        dataType: 'json',
        data: params,
        success: successFunction,
        error: errorFunction
    });
}


function collectOfferTypes(){

    // Only load lists once
    if( offerTypesSearchLoaded != true ){

        // Remove all options and disable
        $('#offerTypeVan').attr('disabled', 'disabled');
        $('#offerTypeCar').attr('disabled', 'disabled');

        $.ajax({
            url: '/frontend-operations/used-vehicle-offers-custom/',
            dataType: 'json',
            data: '',
            success: function(data){

                offerTypesSearchLoaded = true;

                // Remove loading and show default select option
                $('#offerTypeVan').removeOption(/./).addOption('', 'Offer Type');
                $('#offerTypeCar').removeOption(/./).addOption('', 'Offer Type');

                // Add Options
                if( data.offerTypes != null ){
                    $.each(data.offerTypes, function(i,item){
                        $("#offerTypeVan").addOption(item.id, item.marqueName);
                        $( '#offerTypeVan option:last' ).data('url',item.franchiseUrl);

                        $("#offerTypeCar").addOption(item.id, item.id);
                        $( '#offerTypeCar option:last' ).data('url',item.name);

                    });
                }

                $('#offerTypeVan').removeAttr('disabled').attr( "selectedIndex", 0);
                $('#offerTypeCar').removeAttr('disabled').attr( "selectedIndex", 0);
            },
            error: function(objRequest){

                $('#offerTypeVan').removeAttr('disabled').removeOption(/./).addOption('', 'Offer Type');
                $('#offerTypeCar').removeAttr('disabled').removeOption(/./).addOption('', 'Offer Type');
            }
        });
    }
}



/**
* @ desc This will collect Available Models
*/
function collectAvailableOfferModels(selectedId, isVan){
    var isBike = 0;

    if( isVan == 1 ){
        var marqueId = $("#offervans_auto_marque_detail_id");
        var modelId = $("#offervans_auto_model_detail_id");
    }else{
        if ( isVan == 2 ) {
            isVan = 0;
            isBike = 1;
            var marqueId = $("#offerbikes_auto_marque_detail_id");
            var modelId = $("#offerbikes_auto_model_detail_id");
        } else {
            var marqueId = $("#offercars_auto_marque_detail_id");
            var modelId = $("#offercars_auto_model_detail_id");
        }
    }
    
    if ( marqueId.val() == 0 || marqueId.val() == '' ) {
        modelId.attr('disabled', 'disabled');
        modelId.removeOption(/./);
        return 0;
    }
    modelId.attr('disabled', 'disabled');

    $.ajax({
        url: '/frontend-operations/available-model-list-custom/',
        dataType: 'json',
        data: 'marque_id=' + marqueId.val() + '&is_van=' + isVan + '&is_bike=' + isBike,
        success: function(data){

            // Remove all options
            modelId.removeOption(/./);

            // Add Options
            $.each(data, function(i,item){

                modelId.addOption(item.id, item.modelName.toUpperCase());
            });

            // If previously selected..
            if( selectedId > 0){
                modelId.selectOptions(selectedId);
            }else{
                // select 1st one if only one available
                var preSelect = 0;//( data.length == 1 ) ? 1: 0;
                modelId.attr( "selectedIndex", preSelect);
            }
            modelId.removeAttr('disabled');
        },
        error: function(objRequest){

            modelId.removeAttr('disabled');
        }
    });
}


/**
* @ desc This will collect Available Models
*/
function collectAvailableModels(selectedId, isVan, isNearlyNew){
    var isBike = 0;

    if ( typeof isNearlyNew == 'undefined' || isNearlyNew == 0  ) {
        
        if( isVan == 1 ){
            var marqueId = $("#van_auto_marque_detail_id");
            var modelId = $("#van_auto_model_detail_id");
        }else{
            if ( isVan == 2 ) {
                isVan = 0;
                isBike = 1;
                var marqueId = $("#bike_auto_marque_detail_id");
                var modelId = $("#bike_auto_model_detail_id");
            } else {
                var marqueId = $("#car_auto_marque_detail_id");
                var modelId = $("#car_auto_model_detail_id");
            }
        }
        
    } else if ( isNearlyNew == 1 ) {
        if( isVan == 1 ){
            var marqueId = $("#nearly_new_van_auto_marque_detail_id");
            var modelId = $("#nearly_new_van_auto_model_detail_id");
        }else{
            if ( isVan == 2 ) {
                isVan = 0;
                isBike = 1;
                var marqueId = $("#nearly_new_bike_auto_marque_detail_id");
                var modelId = $("#nearly_new_bike_auto_model_detail_id");
            } else {
                var marqueId = $("#nearly_new_car_auto_marque_detail_id");
                var modelId = $("#nearly_new_car_auto_model_detail_id");
            }
        }        
    }

    if ( marqueId.val() == 0 || marqueId.val() == '' ) {
        modelId.attr('disabled', 'disabled');
        modelId.removeOption(/./);
        if( isVan == 1 ) {
            collectAdvancedSearchCountVan(isNearlyNew);
        } else {
            if ( isVan == 0 ) {
                if ( isBike == 1 ) {
                    collectAdvancedSearchCountBike(isNearlyNew);
                } else {
                    collectAdvancedSearchCount(isNearlyNew);
                }
            }
        }
        return 0;
    }
    modelId.attr('disabled', 'disabled');

    $.ajax({
        url: '/frontend-operations/available-model-list-custom/',
        dataType: 'json',
        data: 'marque_id=' + marqueId.val() + '&is_van=' + isVan + '&is_bike=' + isBike + '&nearly_new=' + isNearlyNew,
        success: function(data){

            // Remove all options
            modelId.removeOption(/./);

            // Add Options
            $.each(data, function(i,item){

                modelId.addOption(item.id, item.modelName.toUpperCase());
            });

            // If previously selected..
            if( selectedId > 0){
                modelId.selectOptions(selectedId);
            }else{
                // select 1st one if only one available
                var preSelect = 0;//( data.length == 1 ) ? 1: 0;
                modelId.attr( "selectedIndex", preSelect);
            }
            modelId.removeAttr('disabled');
            // calculate vehicle count
            if( isVan == 1 ) {
                collectAdvancedSearchCountVan(isNearlyNew);
            } else {
                if ( isBike == 1 ) {
                    collectAdvancedSearchCountBike(isNearlyNew);
                } else {
                    collectAdvancedSearchCount(isNearlyNew);
                }
            }
        },
        error: function(objRequest){

            modelId.removeAttr('disabled');
        }
    });
}

function collectAvailableModelsBike(selectedId){

    var marqueId = $("#motorcycle_auto_marque_detail_id");
    var modelId = $("#motorcycle_auto_model_detail_id");

    modelId.attr('disabled', 'disabled');

    if(!marqueId.val()) return; //Not ready for this yet


    $.ajax({
        url: '/frontend-operations/available-model-list/',
        dataType: 'json',
        data: 'marque_id=' + marqueId.val() + '&is_bike=1',
        success: function(data){

            // Remove all options
            modelId.removeOption(/./);

            // Add Options
            $.each(data, function(i,item){

                modelId.addOption(item.id, item.modelName);
            });

            // If previously selected..
            if( selectedId > 0){
                modelId.selectOptions(selectedId);
            }else{
                // select 1st one if only one available
                var preSelect = ( data.length == 1 ) ? 1: 0;
                modelId.attr( "selectedIndex", preSelect);
            }
            modelId.removeAttr('disabled');

            collectAdvancedSearchCount();
        },
        error: function(objRequest){

            modelId.removeAttr('disabled');
        }
    });


}




/**
* @ desc This will collect New Vehicle Marque Lists
*/
function collectNewVehicleMarqueLists(marqueId, selectedId){

    // Hidden in new bike view.
    $('#new_car_variant').show();

    // Only load lists once

    //if( newVehicleSearchLoaded != true )
    {

        // Remove all options and disable
        $('#new_car_franchise_detail_id').attr('disabled', 'disabled');
        $('#new_van_franchise_detail_id').attr('disabled', 'disabled');

        $.ajax({
            url: '/frontend-operations/new-vehicle-marque-list/',
            dataType: 'json',
            data: '',
            success: function(data){

                newVehicleSearchLoaded = true;

                // Remove model list
                $('#new_car_model_name').removeOption(/./).addOption('', '- Select Model -');

                // Remove loading and show default select option
                if ( isGroup ) {
                    $('#new_car_franchise_detail_id').removeOption(/./).addOption('', '-  Select Make  -');
                    $('#new_van_franchise_detail_id').removeOption(/./).addOption('', '-  Select Make  -');
                } else {
                    $('#new_car_franchise_detail_id').removeOption(/./);
                    $('#new_van_franchise_detail_id').removeOption(/./);
                }

                // Add Options
                if( data.newMarque != null ){
                    $.each(data.newMarque, function(i,item){
                        $("#new_car_franchise_detail_id").addOption(item.id, item.marqueName);
                        $( '#new_car_franchise_detail_id option:last' ).data('url',item.franchiseUrl);
                    });
                }

                if( data.newVanMarque != null ){
                    $.each(data.newVanMarque, function(i,item){
                        $("#new_van_franchise_detail_id").addOption(item.id, item.marqueName);
                        $( '#new_van_franchise_detail_id option:last' ).data('url',item.franchiseUrl);
                    });
                }

                $('#new_car_franchise_detail_id').removeAttr('disabled').attr( "selectedIndex", 0);
                $('#new_van_franchise_detail_id').removeAttr('disabled').attr( "selectedIndex", 0);

                if ( !isGroup ) {
                    $('#new_car_franchise_detail_id').selectOptions(marqueId);
                    $('#new_van_franchise_detail_id').selectOptions(marqueId);
                    collectNewModels(selectedId);
                }
            },
            error: function(objRequest){

                $('#new_car_franchise_detail_id').removeAttr('disabled').removeOption(/./).addOption('', '-  Select Make  -');
                $('#new_van_franchise_detail_id').removeAttr('disabled').removeOption(/./).addOption('', '-  Select Make  -');
            }
        });
    }
}


/**
* @ desc This will collect Available Models
*/
function collectNewModels(selectedId, van, bike){

    if ( typeof selectedId == 'undefined' ) {
        selectedId = '';
    }

    // Select which Marque Selector to choose dependant on car/van
    if( van == 1 ){

        var marqueId = $("#new_van_franchise_detail_id");
        var modelId   = $("#new_van_model_name");
        var variantId = $("#new_van_variant");
    } else if ( bike == 1 ) {
        var marqueId = $("#new_bike_franchise_detail_id");
        var modelId   = $("#new_bike_model_name");
        var variantId = $("#new_bike_variant");
    } else {
        var marqueId = $("#new_car_franchise_detail_id");
        var modelId   = $("#new_car_model_name");
        var variantId = $("#new_car_variant");
    }

    modelId.attr('disabled', 'disabled');

    var detailparts = marqueId.val();
    var detailids = detailparts.split('||');
    var franchiseid = detailids[0];
    var urlpath = '/frontend-operations/new-model-list/';
    if ( bike == 1 ) {
        urlpath = '/frontend-operations/new-model-list-custom/';
    }
    
    $.ajax({
        url: urlpath,
        dataType: 'json',
        data: 'franchise_detail_id=' + franchiseid + '&is_van=' + van + '&is_bike=' + bike,
        success: function(data){

            // Remove all options
            modelId.removeOption(/./);
            variantId.removeOption(/./);

            // Add Options
            $.each(data, function(i,item){
                modelId.addOption(item.id + "||" + item.url, item.references.heading);
            });

            // If previously selected..
            if( selectedId != '' && selectedId != 'index' ){
                $.each($("#new_car_model_name option"), function(i,item){
                    if ( $(this).data('url') == selectedId ) {
                        $(this).attr('selected', 'selected')
                    }
                });
            }else{
                // select 1st one if only one available
                var preSelect = ( data.length == 1 ) ? 1: 0;
                modelId.attr( "selectedIndex", preSelect);
            }
            modelId.removeAttr('disabled');
            if( modelId.attr( "selectedIndex") > 0 ){
                collectNewVariants(0,van,bike);
            }
        },
        error: function(objRequest){

            modelId.removeAttr('disabled');
        }
    });
}


/**
* @ desc This will collect Available Variants
*/
function collectNewVariants(selectedId, vans){

    if ( typeof selectedId == 'undefined' ) {
        selectedId = 0;
    }

    // Select which Marque Selector to choose dependant on car/van
    if( vans == 1 ){

        var marqueId = $("#new_van_franchise_detail_id");
        var modelId   = $("#new_van_model_name");
        var variantId = $("#new_van_variant");
    }else{

        var marqueId = $("#new_car_franchise_detail_id");
        var modelId   = $("#new_car_model_name");
        var variantId = $("#new_car_variant");
    }

    variantId.attr('disabled', 'disabled');

    var detailparts = marqueId.val();
    var detailids = detailparts.split('||');
    var itemid = detailids[0];
    
    var modelparts = modelId.val();
    var modelids = modelparts.split('||');
    var modelid = modelids[0];
    $.ajax({
        url: '/frontend-operations/new-variant-list/',
        dataType: 'json',
        data: 'franchise_detail_id=' + itemid + '&cms_page_area_link_id=' + modelid,
        success: function(data){

            // Remove all options
            variantId.removeOption(/./);

            // Add Options
            $.each(data, function(i,item){

                variantId.addOption(item.id, item.variant);
            });

            // If previously selected..
            if( selectedId > 0){
                variantId.selectOptions(selectedId);
            }else{
                // select 1st one if only one available
                var preSelect = ( data.length == 1 ) ? 1: 0;
                variantId.attr( "selectedIndex", preSelect);
            }
            variantId.removeAttr('disabled');
        },
        error: function(objRequest){

            variantId.removeAttr('disabled');
        }
    });
}


function addPrice ( value, text ) {

    $("#lower_price").addOption(value, text);
    $("#price").addOption(value, text);

}




/**
* @ desc This will collect Count of stock available
*/
function collectAdvancedSearchCount(nearlynew){
    var formitem = '#frmSearchUsedCars';
        
    if ( nearlynew == 1 ) {
      formitem = '#frmSearchNearlyNewCars';
    }
        
    $.ajax({
        url : '/frontend-operations/advanced-search-count-custom/',
        dataType : 'json',
        data : $(formitem).serialize(),
        success : function (data){
        
            if ( typeof data != 'undefined' ) {

                advancedSearchCarCount = data;
                if ( nearlynew == 1 ) {
                    $('#carNearlyNewVehicleCountDisplay').html(data + (data === 1 ? ' Car' : ' Cars') + ' Available');
                } else {
                     $('#carVehicleCountDisplay').html(data + (data === 1 ? ' Car' : ' Cars') + ' Available');
                }
            
            }
        }
    });
};

/**
* @ desc This will collect Count of stock available
*/
function collectAdvancedSearchCountVan(nearlynew){

    var formitem = '#frmSearchUsedVans';
        
    if ( nearlynew == 1 ) {
      formitem = '#frmSearchNearlyNewVans';
    }
    $.ajax({

        url : '/frontend-operations/advanced-search-count-custom/',
        dataType : 'json',
        data : $(formitem).serialize(),
        success : function (data){
        
            if ( typeof data != 'undefined' ) {

                if ( nearlynew == 1 ) {
                    $('#vanNearlyNewVehicleCountDisplay').html(data + (data === 1 ? ' Van' : ' Vans') + ' Available');
                } else {
                     $('#vanVehicleCountDisplay').html(data + (data === 1 ? ' Van' : ' Vans') + ' Available');
                }
                
            }
        }
    });
};


/**
* @ desc This will collect Count of stock available
*/
function collectAdvancedSearchCountBike(nearlynew){
    var formitem = '#frmSearchUsedBikes';
        
    if ( nearlynew == 1 ) {
      formitem = '#frmSearchNearlyNewBikes';
    }
    $.ajax({

        url : '/frontend-operations/advanced-search-count-custom/',
        dataType : 'json',
        data : $(formitem).serialize(),
        success : function (data){
        
            if ( typeof data != 'undefined' ) {
            
            
                if ( nearlynew == 1 ) {
                    $('#bikeNearlyNewVehicleCountDisplay').html(data + (data === 1 ? ' Bike' : ' Bikes') + ' Available');
                } else {
                     $('#bikeVehicleCountDisplay').html(data + (data === 1 ? ' Bike' : ' Bikes') + ' Available');
                }
            }
        }
    });
};

/*
* @ desc Used cars selector between cars and vans
*/
function showCarSearch ( showCars ){

    if( showCars == true ){
        // Show car tab
        $('#vehicleType').show();
        $('#tabContentVanSearch').hide();
        $('#tabVansSearch').removeClass('active');
        $('#tabContentCarSearch').show();
        $('#tabCarsSearch').addClass('active');
        $('#advancedSearchDoors').show();
        $('#advancedSearchTaxBand').show();
        $('#search_url').val('used-cars');
        $('#is_van').val(0);
        $('#is_van2').val(0);
        $('#vehicleCountDisplay').html(advancedSearchCarCount + (advancedSearchCarCount === 1 ? ' Car' : ' Cars') + ' Available');

    }else{
        // Show van tab
        $('#vehicleType').hide();
        $('#tabContentCarSearch').hide();
        $('#tabCarsSearch').removeClass('active');
        $('#tabContentVanSearch').show();
        $('#tabVansSearch').addClass('active');
        $('#advancedSearchDoors').hide();
        $('#advancedSearchTaxBand').hide();
        $('#search_url').val('vans');
        $('#is_van').val(1);
        $('#is_van2').val(1);
        $('#vehicleCountDisplay').html(advancedSearchVanCount + (advancedSearchVanCount === 1 ? ' Van' : 'Vans') + ' Available');
    }
}


/*
* @ desc New cars selector between cars and vans
*/
function showNewCarSearch ( showCars ){

    if( showCars == true ){
        // Show car tab
        $('#new_van_franchise_detail_id').hide(); //hide the select object
        $('#tabContentNewVanSearch').hide(); // hide the tab
        $('#tabNewVansSearch').removeClass('active'); // deactivate the tab

        $('#new_car_franchise_detail_id').show();
        $('#tabContentNewCarSearch').show();
        $('#tabNewCarsSearch').addClass('active');

        $('#new_car_search_url').val('new-cars');
        $('#new_car_is_van').val(0);

    }else{
        // Show van tab
        $('#new_car_franchise_detail_id').hide(); //hide the select object
        $('#tabContentNewCarSearch').hide();  // hide the tab
        $('#tabNewCarsSearch').removeClass('active'); // deactivate the tab

        $('#new_van_franchise_detail_id').show();
        $('#tabContentNewVanSearch').show();
        $('#tabNewVansSearch').addClass('active');

        $('#new_car_search_url').val('new-cars');
        $('#new_car_is_van').val(1);
    }
}


/**
* @ desc sets and submits New Vehicles Search form
*/
function intelliQuickSearch(){

    if( currentISearch != $('#quick_search_value').val() ){

        rememberQuickVehicleSearchValue = $('#quick_search_value').val();

        if ( $('#quick_search_value').val() != '' && $('#quick_search_value').val() != 'Quick Vehicle Search' && $('#quick_search_value').val().length > 1 ) {

            var searchArray = $('#quick_search_value').val().toLowerCase().split(' ');

            $.ajax({
                url: '/frontend-operations/intelli-quick-search/',
                dataType: 'json',
                data: 'quick_search_value=' + $('#quick_search_value').val(),
                success: function(data){

                    var text = ''; // per row
                    var displayText = ''; // whole html for search results

                    var names = ''; // per row collect
                    var textNames = ''; // to stop similar results showing twice

                    var searchItemArray = new Array();

                    if (data != null) {

                        displayText = '<table border="0" style="width: 100%;" cellpadding="0" cellspacing="0"><tr><th style="width: 100%; text-transform:uppercase;" colspan="2">Used Stock Search</th></tr>';

                        $.each(data, function(i,item){

                            text  = '';
                            names = '';
                            text += '<tr id="result_row_' + ++i + '" onmouseover="this.className = \'trOver\';" onmouseout="this.className=\'\';"><td style="width:60px;">';
                            text += '<img src="' + netdirector.baseUrl + (( item.image_src != null && item.image_src != '' ) ? '/upload/images/stock/small/' + item.image_src : '/local/images/noImage72x54.gif' ) + '" alt="" class="float_left" style="width:60px;" /></td><td>';
                            text += '<a href="javascript: submitQuickSearch(' + item.id + ');" title="' + item.marque_name + '" style="text-decoration:none; color:#666;" id="result_row_link_' + i + '">';

                            searchItemArray[item.id] = item;

                            //if( wordExists(searchArray,item.marque_name.toLowerCase()) == true  ){

                            text += ' '  + item.marque_name;
                            names += ' '  + item.marque_name;
                            //}

                            //if( wordExists(searchArray,item.model_name.toLowerCase()) == true  ){

                            text += ' '  + item.model_name;
                            names += ' '  + item.model_name;
                            //}

                            if( wordExists(searchArray,item.variant.toLowerCase()) == true  ){

                                text += ' '  + item.variant;
                                names += ' '  + item.variant;
                            }

                            //if( wordExists(searchArray,item.body_style_name.toLowerCase()) == true  ){

                            text += ' '  + item.body_style_name;
                            names += ' '  + item.body_style_name;
                            //}

                            if( wordExists(searchArray,item.fuel_type_name.toLowerCase()) == true  ){

                                text += ' '  + item.fuel_type_name;
                                names += ' '  + item.fuel_type_name;
                            }

                            if( wordExists(searchArray,item.transmission_type_name.toLowerCase()) == true  ){

                                text += ' '  + item.transmission_type_name;
                                names += ' '  + item.transmission_type_name;
                            }

                            if( wordExists(searchArray,item.registration_year.toLowerCase()) == true  ){

                                text += ' '  + item.registration_year;
                                names += ' '  + item.registration_year;
                            }

                            if( wordExists(searchArray,item.engine_size.toLowerCase()) == true  ){

                                text += ' '  + item.engine_size + 'cc';
                                names += ' '  + item.engine_size + 'cc';
                            }

                            if( wordExists(searchArray,item.full_registration.toLowerCase()) == true  ){

                                text += ' '  + item.full_registration;
                                names += ' '  + item.full_registration;
                            }
                            text += '</a></td>';

                            //alert( displayTextNames.search(text) );
                            if( textNames.search(names) < 0 ){
                                textNames += names;
                                displayText += text;
                            }
                        });
                        displayText += '</table>';
                        quickSearchResults = searchItemArray;
                        totalResults = data.length;
                        resultDisplayKeyboardHighlight = 0;
                    }
                    $('#searchResults').html(displayText);
                    $('#searchResults').addClass('results');

                    currentISearch = $('#quick_search_value').val(); // set the current value for remembrance
                },
                error: function(objRequest){

                }
            });
        } else {

            $('#searchResults').html('');
            $('#searchResults').removeClass('results');
            $('#searchResults').addClass('noResults');
        }
    }
}


/**
* @ desc sets and submits New Vehicles Search form
*/
function submitNewVehicleSearch(){

    if (isVanSearch()) {

        var franchiseUrl = $('#new_car_franchise_detail_id option:selected').data('url');
        var modelUrl = $('#new_car_model_name option:selected').data('url');
        var variantId = $("#new_car_variant").val();
        var areaUrl = 'new-vans';

    } else if (isBikeSearch()) {

        var option = $('#new_car_model_name option:selected');
        var franchiseUrl = '/' + (option.val().length > 0 ? $('#new_car_model_name option:selected').data('url') : $('#new_car_franchise_detail_id option:selected').html().toLowerCase());

        if (franchiseUrl === '/-  select make  -'){
            franchiseUrl = '';
        }

        $('#frmSearchNewCars').attr('action', franchiseUrl + '/motorcycles').attr('type', 'post').unbind().submit();
        return false;

    } else {

        var franchiseUrl  = $( '#new_car_franchise_detail_id option:selected').data('url');
        var modelUrl   = $( '#new_car_model_name option:selected').data('url');
        var variantId = $("#new_car_variant").val();
        var areaUrl = 'new-cars';

    }

    locationurl = netdirector.baseUrl + '/' + ( ( franchiseUrl != '' && franchiseUrl != 'group' && franchiseUrl != null ) ? franchiseUrl + '/' : '' );

    if ( areaUrl != null ) {
        locationurl += areaUrl + '/';

    }

    if ( variantId != null && modelUrl != null ) {
        locationurl += modelUrl + '/' + variantId;
    } else if ( modelUrl != null ) {
        locationurl += modelUrl;
    }

    var postcode = $('#postcode').val();
    if ( postcode != null && postcode != 'Enter Your Postcode' && postcode != '' ) {
        locationurl += '?postcode=' + postcode;
    }

    window.location = locationurl;
}


/**
* @ desc sets category and submits form
*/
function submitCategorySearch( category ){

    $('#category_search').val( category );
    $('#frmSearchUsedCars').submit();
}


/**
* @ desc submits quick search form
*/
function submitQuickSearch(id){


    var searchArray = $('#quick_search_value').val().toLowerCase().split(' ');
    var item = quickSearchResults[id];

    //if( wordExists(searchArray,item.marque_name.toLowerCase()) == true  ){

    $('#quick_search_marque_id').val( item.auto_marque_detail_id );
    //}

    //if( wordExists(searchArray,item.model_name.toLowerCase()) == true  ){

    $('#quick_search_model_id').val( item.auto_model_detail_id );
    //}

    if( wordExists(searchArray,item.variant.toLowerCase()) == true  ){

        $('#quick_variant').val( item.variant );
    }

    //if( wordExists(searchArray,item.body_style_name.toLowerCase()) == true  ){

    $('#quick_auto_body_style_detail_id').val( item.auto_body_style_detail_id );
    //}

    if( wordExists(searchArray,item.fuel_type_name.toLowerCase()) == true  ){

        $('#quick_auto_fuel_type_detail_id').val( item.auto_fuel_type_detail_id );
    }

    if( wordExists(searchArray,item.transmission_type_name.toLowerCase()) == true  ){

        $('#quick_auto_transmission_detail_id').val( item.auto_transmission_detail_id );
    }

    if( wordExists(searchArray,item.registration_year.toLowerCase()) == true  ){

        $('#quick_registration_year').val( item.registration_year );
    }

    if( wordExists(searchArray,item.engine_size.toLowerCase()) == true  ){

        $('#quick_engine_size').val( item.engine_size );
    }

    if( wordExists(searchArray,item.full_registration.toLowerCase()) == true  ){

        $('#quick_full_registration').val( item.full_registration );
    }
    $('#frmQuickSearchUsedCars').submit();
}


function quickSearchFocus(){

    if( $('#quick_search_value').val() == 'Quick Vehicle Search' ){

        if( rememberQuickVehicleSearchValue != '' ){
            $('#quick_search_value').val(rememberQuickVehicleSearchValue)
            $('#searchResults').html(rememberedDisplayText);
            $('#searchResults').addClass('results');
        }else{
            $('#quick_search_value').val('')
        }
    }
}


function quickSearchBlur(){

    $('#quick_search_value').val('Quick Vehicle Search');
    rememberedDisplayText = $('#searchResults').html();
    setTimeout( "hideQuickSearchResults()",300);
}


function hideQuickSearchResults(){

    if( rememberedDisplayText != '' ){
        $('#searchResults').animate({
            height: "toggle"
        }, 200, function(){

            $('#searchResults').html('');
            $('#searchResults').removeClass('results');
            $('#searchResults').addClass('noResults');
        });
    }
}


// determines if van radio button is selected
function isVanSearch() {

    return ( $('input[name=vehicleType][checked]:radio').val() == 'vans' );

}


function isVanSearch2() {

    return ( $('input[name=vehicleTypeOffer][checked]:radio').val() == 'vans' );

}


function isBikeSearch() {

    return ( $('input[name=vehicleType][checked]:radio').val() == 'bikes' );

}


function isBikeSearch2() {

    return ( $('input[name=vehicleTypeOffer][checked]:radio').val() == 'bikes' );

}

function hideSearchEverything () {
    $('#frmSearchNewCars').hide();
    $('#frmSearchNewVans').hide();
    $('#frmSearchNewBikes').hide();
    $('#frmSearchUsedCars').hide();
    $('#frmSearchUsedVans').hide();
    $('#frmSearchUsedBikes').hide();
    $('#frmSearchNearlyNewCars').hide();
    $('#frmSearchNearlyNewVans').hide();
    $('#frmSearchNearlyNewBikes').hide();
}

function hideSearchEverythingOffers () {
    $('#frmSearchCarOffers').hide();
    $('#frmSearchVanOffers').hide();
    $('#frmSearchBikeOffers').hide();
}

function selectCars () {
    hideSearchEverything();
    $('#vehicleType div a').removeClass('active');
    $('#vehicleType .typeCar a').addClass('active');
    $('#carSelectionRadio').click();
    $('#frmSearchUsedCars').show();
}


function selectVans () {
    hideSearchEverything();
    $('#vehicleType div a').removeClass('active');
    $('#vehicleType .typeVan a').addClass('active');
    $('#vanSelectionRadio').click();
    $('#frmSearchUsedVans').show();
}


function selectAgri () {
    hideSearchEverything();
    $('#vehicleType div a').removeClass('active');
    $('#vehicleType .typeAgricultural a').addClass('active');
    $('#bikeSelectionRadio').click();
    $('#frmSearchUsedBikes').show();
}

function initialiseAdvancedSearch() {


    $('#frmSearchOffers').submit(function(event) {

        submitAdvancedSearchOffer();

    });

    $('#vehicleTypeSelectionForm,#vehicleTypeSelectionForm').change(function(event) {
        hideSearchEverything();

        switch ( $('input[name=vehicleCondition][checked]:radio').val() ) {

            case 'new':
                switch( $('input[name=vehicleType][checked]:radio').val() ) {
                        case 'cars':
                            $('#frmSearchNewCars').show();
                        break;
                        
                        case 'vans':
                            $('#frmSearchNewVans').show();
                        break;
                        
                        case 'bikes':
                            $('#frmSearchNewBikes').show();
                        break;
                    }
                break;

            case 'nearlyNew':
                switch( $('input[name=vehicleType][checked]:radio').val() ) {
                        case 'cars':
                            $('#frmSearchNearlyNewCars').show();
                        break;
                        
                        case 'vans':
                            $('#frmSearchNearlyNewVans').show();
                        break;
                        
                        case 'bikes':
                            $('#frmSearchNearlyNewBikes').show();
                        break;
                    }
                break;
                
            case 'used':
            
                switch( $('input[name=vehicleType][checked]:radio').val() ) {
                        case 'cars':
                            $('#frmSearchUsedCars').show();
                        break;
                        
                        case 'vans':
                            $('#frmSearchUsedVans').show();
                        break;
                        
                        case 'bikes':
                            $('#frmSearchUsedBikes').show();
                        break;
                    }
                break;

            default:
                break;

        }

    });
    
    
    
    $('#offerVehicleTypeSelectionForm').change(function(event) {
        hideSearchEverythingOffers();

        switch ( $('input[name=vehicleTypeOffer][checked]:radio').val() ) {
                case 'cars':
                    $('#frmSearchCarOffers').show();
                break;
                
                case 'vans':
                    $('#frmSearchVanOffers').show();
                break;
                
                case 'bikes':
                    $('#frmSearchBikeOffers').show();
                break;

        }

    });
    
    
    $('#car_auto_marque_detail_id').change(function(event) {
        collectAvailableModels(0, 0);
    });
    
    $('#van_auto_marque_detail_id').change(function(event) {
        collectAvailableModels(0, 1);
    });
    
    $('#bike_auto_marque_detail_id').change(function(event) {
        collectAvailableModels(0, 2);
    });
    
    
    
    $('#nearly_new_car_auto_marque_detail_id').change(function(event) {
        collectAvailableModels(0, 0, 1);
    });
    
    $('#nearly_new_van_auto_marque_detail_id').change(function(event) {
        collectAvailableModels(0, 1, 1);
    });
    
    $('#nearly_new_bike_auto_marque_detail_id').change(function(event) {
        collectAvailableModels(0, 2, 1);
    });
    
    
    $('#offercars_auto_marque_detail_id').change(function(event) {
        collectAvailableOfferModels(0, 0);
    });
    
    $('#offervans_auto_marque_detail_id').change(function(event) {
        collectAvailableOfferModels(0, 1);
    });
    
    $('#offerbikes_auto_marque_detail_id').change(function(event) {
        collectAvailableOfferModels(0, 2);
    });
    
    
    
    $('#car_auto_model_detail_id,#car_price,#car_advancedSearchDoors,#car_advancedSearchPreviousOwners,#car_advancedSearchPreviousOwners,#car_auto_body_style_detail_id,#car_auto_fuel_type_detail_id,#car_auto_transmission_detail_id,#car_advancedSearchEngineSize,#car_advancedSearchTaxBand,#car_advancedSearchMPG,#car_advancedSearchMileage,#car_advancedRegistrationDate,#car_advancedInsuranceGroup').change(function(event) {
        collectAdvancedSearchCount();
    });
    
    $('#van_auto_model_detail_id,#van_price,#van_advancedSearchDoors,#van_advancedSearchPreviousOwners,#van_advancedSearchPreviousOwners,#van_auto_body_style_detail_id,#van_auto_fuel_type_detail_id,#van_auto_transmission_detail_id,#van_advancedSearchEngineSize,#van_advancedSearchTaxBand,#van_advancedSearchMPG,#van_advancedSearchMileage,#van_advancedRegistrationDate,#van_advancedInsuranceGroup').change(function(event) {
        collectAdvancedSearchCountVan();
    });
    
    $('#bike_auto_model_detail_id,#bike_price,#bike_advancedSearchDoors,#bike_advancedSearchPreviousOwners,#bike_advancedSearchPreviousOwners,#bike_auto_body_style_detail_id,#bike_auto_fuel_type_detail_id,#bike_auto_transmission_detail_id,#bike_advancedSearchEngineSize,#bike_advancedSearchTaxBand,#bike_advancedSearchMPG,#bike_advancedSearchMileage,#bike_advancedRegistrationDate,#bike_advancedInsuranceGroup').change(function(event) {
        collectAdvancedSearchCountBike();
    });
    
    
    $('#nearly_new_car_auto_model_detail_id,#nearly_new_car_price,#nearly_new_car_advancedSearchDoors,#nearly_new_car_advancedSearchPreviousOwners,#nearly_new_car_advancedSearchPreviousOwners,#nearly_new_car_auto_body_style_detail_id,#nearly_new_car_auto_fuel_type_detail_id,#nearly_new_car_auto_transmission_detail_id,#nearly_new_car_advancedSearchEngineSize,#nearly_new_car_advancedSearchTaxBand,#nearly_new_car_advancedSearchMPG,#nearly_new_car_advancedSearchMileage,#nearly_new_car_advancedRegistrationDate,#nearly_new_car_advancedInsuranceGroup').change(function(event) {
        collectAdvancedSearchCount(1);
    });
    
    $('#nearly_new_van_auto_model_detail_id,#nearly_new_van_price,#nearly_new_van_advancedSearchDoors,#nearly_new_van_advancedSearchPreviousOwners,#nearly_new_van_advancedSearchPreviousOwners,#nearly_new_van_auto_body_style_detail_id,#nearly_new_van_auto_fuel_type_detail_id,#nearly_new_van_auto_transmission_detail_id,#nearly_new_van_advancedSearchEngineSize,#nearly_new_van_advancedSearchTaxBand,#nearly_new_van_advancedSearchMPG,#nearly_new_van_advancedSearchMileage,#nearly_new_van_advancedRegistrationDate,#nearly_new_van_advancedInsuranceGroup').change(function(event) {
        collectAdvancedSearchCountVan(1);
    });
    
    $('#nearly_new_bike_auto_model_detail_id,#nearly_new_bike_price,#nearly_new_bike_advancedSearchDoors,#nearly_new_bike_advancedSearchPreviousOwners,#nearly_new_bike_advancedSearchPreviousOwners,#nearly_new_bike_auto_body_style_detail_id,#nearly_new_bike_auto_fuel_type_detail_id,#nearly_new_bike_auto_transmission_detail_id,#nearly_new_bike_advancedSearchEngineSize,#nearly_new_bike_advancedSearchTaxBand,#nearly_new_bike_advancedSearchMPG,#nearly_new_bike_advancedSearchMileage,#nearly_new_bike_advancedRegistrationDate,#nearly_new_bike_advancedInsuranceGroup').change(function(event) {
        collectAdvancedSearchCountBike(1);
    });
}

function submitNewCars() {

    var detailparts = $('#new_car_franchise_detail_id').val();
    var detailids = detailparts.split('||');
    var franchisename = detailids[1];
    
    

    detailparts = $('#new_car_model_name').val();
    detailids = detailparts.split('||');
    var model = detailids[1];
    
    if ( typeof model == 'undefined' ) {
        model = "";
    }
    
    var item = netdirector.baseUrl + "/" + franchisename + '/new-cars/' + model + '/' + $('#new_car_variant').val();
    window.location.href = item;
    return false;
}


function submitNewVans() {

    var detailparts = $('#new_van_franchise_detail_id').val();
    var detailids = detailparts.split('||');
    var franchisename = detailids[1];
    
    detailparts = $('#new_van_model_name').val();
    detailids = detailparts.split('||');
    var model = detailids[1];
    
    if ( typeof model == 'undefined' ) {
        model = "";
    }
    
    var item = netdirector.baseUrl + "/" + franchisename + '/new-vans/' + model + '/' + $('#new_van_variant').val();
    window.location.href = item;
    return false;
}


function submitNewBikes() {

    var detailparts = $('#new_bike_franchise_detail_id').val();
    var detailids = detailparts.split('||');
    var franchisename = detailids[1];
    
    detailparts = $('#new_bike_model_name').val();
    detailids = detailparts.split('||');
    var model = detailids[1];
    
    if ( typeof model == 'undefined' ) {
        model = "";
    }
    
    var item = netdirector.baseUrl + "/" + franchisename + '/motorcycles/' + model;
    window.location.href = item;
    return false;
}

/**
* @ desc sets category and submits form
*/
function submitAdvancedSearch(){

    if( isVanSearch() ){

        $('#search_marque_id').val( $('#van_auto_marque_detail_id').val() );
        $('#search_model_id').val( $('#van_auto_model_detail_id').val() );
        $('#is_van').val( 1 );
        $('#is_van2').val( 1 );
        $('#is_motorcycle').val( 0 );
        $('#is_motorcycle2').val( 0 );
    }else{
        if ( isBikeSearch() ) {
            $('#search_marque_id').val( $('#motorcycle_auto_marque_detail_id').val() );
            $('#search_model_id').val( $('#motorcycle_auto_model_detail_id').val() );
            $('#is_van').val( 0 );
            $('#is_van2').val( 0 );
            $('#is_motorcycle').val( 1 );
            $('#is_motorcycle2').val( 1 );
        } else {
            $('#search_marque_id').val( $('#auto_marque_detail_id').val() );
            $('#search_model_id').val( $('#auto_model_detail_id').val() );
            $('#is_van').val( 0 );
            $('#is_van2').val( 0 );
            $('#is_motorcycle').val( 0 );
            $('#is_motorcycle2').val( 0 );
        }
    }
//$('#frmSearchUsedCars').submit();
}


function submitAdvancedSearchOffer(){

    if( isVanSearch2() ){

        $('#search_marque_id_offer').val( $('#makeOfferVan').val() );
        $('#search_model_id_offer').val( $('#modelOfferVan').val() );
        $('#search_offer_id').val( $('#offerTypeVan').val() );
        $('#is_van').val( 1 );
        $('#is_van2').val( 1 );
        $('#is_motorcycle').val( 0 );
        $('#is_motorcycle2').val( 0 );
    }else{
        if ( isBikeSearch2() ) {
            $('#search_marque_id_offer').val( $('#makeOfferMotorcycle').val() );
            $('#search_model_id_offer').val( $('#modelOfferMotorcycle').val() );
            $('#search_offer_id').val( $('#offerTypeMotorcycle').val() );
            $('#is_van').val( 0 );
            $('#is_van2').val( 0 );
            $('#is_motorcycle').val( 1 );
            $('#is_motorcycle2').val( 1 );
        } else {
            $('#search_marque_id_offer').val( $('#makeOfferCar').val() );
            $('#search_model_id_offer').val( $('#modelOfferCar').val() );
            $('#search_offer_id').val( $('#offerTypeCar').val() );
            $('#is_van').val( 0 );
            $('#is_van2').val( 0 );
            $('#is_motorcycle').val( 0 );
            $('#is_motorcycle2').val( 0 );
        }
    }
//$('#frmSearchUsedCars').submit();
}

/**
* @ desc Adds commas in the right places to make long prices presentable
*/
function addCommas(nStr){

    nStr += '';
    var x = nStr.split('.');
    var x1 = x[0];
    var x2 = ( x.length > 1 ) ? '.' + ( ( x[1].length == 1 )? x[1] + '0' : x[1] ) : '';
    var rgx = /(\d+)(\d{3})/;

    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}


function wordExists(arr, obj) {
    for(var i=0; i<arr.length; i++) {
        if( arr[i] != '' ){
            if (obj.search(arr[i]) >= 0) return true;
        }
    }
}


function detectkeyPress(e){

    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;

    if( keycode == 40 ){
        keyboardDown();
    }else if( keycode == 38 ){
        keyboardUp();
    }else if( keycode == 13 ){
        keyboardReturn();
    }
}


function keyboardDown(){

    if( resultDisplayKeyboardHighlight < totalResults ){
        if( resultDisplayKeyboardHighlight > 0 ){
            $( '#result_row_' + resultDisplayKeyboardHighlight ).removeClass('trOver');
        }
        resultDisplayKeyboardHighlight += 1;
        $( '#result_row_' + resultDisplayKeyboardHighlight ).addClass('trOver');
    }
}


function keyboardUp(){

    if( resultDisplayKeyboardHighlight > 1 ){
        $( '#result_row_' + resultDisplayKeyboardHighlight ).removeClass('trOver');
        resultDisplayKeyboardHighlight -= 1;
        $( '#result_row_' + resultDisplayKeyboardHighlight ).addClass('trOver');
    }
}


function keyboardReturn(){

    if( resultDisplayKeyboardHighlight > 0 ){
        $( '#result_row_link_' + resultDisplayKeyboardHighlight ).focus();
        window.location = $( '#result_row_link_' + resultDisplayKeyboardHighlight ).attr( 'href' );
        return false;
    }
}

/**
* @ desc This will post the (custom cms) form via Ajax
*/
function submitCustomForm( formType ){

    if( formType == '' ){
        return;
    }

    // Check if form is valid before proceeding
    if( $( "#form" + formType ).valid() ){

        $('body').css('cursor', 'progress');

        $.ajax({
            url: '/frontend-operations/submit-form/',
            dataType: 'json',
            data: $( '#form' + formType ).serialize(),
            success: function(data){

                if( data != 0 ){

                    // Submitted ok.
                    setupCustomForm( formType );
                    updateTips('Thank You','Your details have been submitted successfully','highlight','','alertBox' + formType);
                }else{

                    // Show generic message
                    updateTips('Request Failed','The request to submit failed, please try again.','error','','alertBox' + formType);
                }
                $('body').css('cursor', 'default');
            },
            error: function( objRequest ){
                updateTips('Request Failed','The request failed to submit, please try again.','error','','alertBox' + formType);
                $('body').css('cursor', 'default');
            }
        });
    }
}

/**
* @ desc This will setup form
*/
function setupCustomForm(formType){

    // Clear the form values
    clearFormElements('#form' + formType);

    // Removes validation messages
    var validator = $('#form' + formType).validate();
    validator.resetForm();

    // Clear Alert Box Text
    $('#alertBox' + formType).html('');

    // highlight first input
    //$('#form' + formType + ' :input:text:first').focus();
}


/**
* @ desc This save a vehicle to favourites via Ajax
*/
function addToMyFavourites( vehicleId ){

    $('body').css('cursor', 'progress');

    $.ajax({
        url: '/frontend-operations/save-vehicle-to-favourites-custom/',
        dataType: 'json',
        data: 'auto_car_detail_id=' + vehicleId,
        success: function(data){

            if( data == true ){
				
				itEvent('addToMyfavourites', { guid: itGuid } );
				itGenerateGuid();
				
                // Favourite has been added successfully
                alert( 'Vehicle has been saved' );
                showMyFavourites();
            }else{

                // Favourite failed to save
                alert( 'This vehicle has already been saved previously' );
            }
            $('body').css('cursor', 'default');
        },
        error: function( objRequest ){
            // Could not save favourite
            $('body').css('cursor', 'default');
        }
    });
}


/**
* @ desc remove this vehicle to favourites via Ajax
*/
function removeFavourite( vehicleId, noRedirect ){

    $('body').css('cursor', 'progress');

    $.ajax({
        url: '/frontend-operations/remove-vehicle-from-favourites/',
        dataType: 'json',
        data: 'auto_car_detail_id=' + vehicleId,
        success: function(data){

            if( data == true ){
                if ( noRedirect == 1 )  {
                    alert( 'This vehicle has been removed' );
                    showMyFavourites();
                } else {
                    // Favourite has been removed successfully
                    window.location = netdirector.baseUrl + '/' + netdirector.franchiseUrl + 'used-cars/favourites';
                }
            }else{

            // Favourite failed to remove
            }
            $('body').css('cursor', 'default');
        },
        error: function( objRequest ){
            // Could not save favourite
            $('body').css('cursor', 'default');
        }
    });
}


function showMyFavourites(){
    if ( $('.box.favourites.saveCompare').length == 0 ) {
        return 0;
    }


    $('body').css('cursor', 'progress');

    $.ajax({
        url: '/frontend-operations/view-my-favourites/',
        dataType: 'json',
        data: 'limit=' + favouritesLimit,
        success: function(data){

            // reset all cars on page to compare button
            $("a[class^=compareLink]").each(  function (item){
                var classname = $(this).attr('class');
                var id = classname.replace('compareLink', '');
                $(this).html('<img src="/local/images/btnCompare.jpg" alt="Compare">');
                $(this).attr('href', 'javascript: addToMyFavourites(' + id + ');');
            } );


            $('div[id^=favouriteItem]').each(function(i,item) {
                $(this).html('');
            });

            if( data != 0 ){

                var vehicleTitle, text;


                // Add Options
                $.each(data, function(i,item){

                    vehicleTitle = item.references.marque_name + ' ' + item.references.model_name + ' ' + item.variant;
                    text = '<a href="' + netdirector.baseUrl + '/' + netdirector.franchiseUrl + 'used-cars/' + item.id + '/' + vehicleTitle.toLowerCase().replace( ' ', '-' ) + '" title="' + vehicleTitle + '">'
					text+='<span class="frame"><img src="' + netdirector.baseUrl + '/local/images/ford/frameThumb.png" alt="Frame" /></span>'

					if (item.capimage){
						text+='<img src="' + item.capimage+ '" alt="' + vehicleTitle + '" style="width:79px;height:58px" /></a>';
					}else{
						text+='<img src="' + netdirector.baseUrl + '/upload/images/stock/small/' + item.imageSrc + '" alt="' + vehicleTitle + '" style="width:79px;height:58px" /></a>';
					}
                    // add remove button
                    $('#list .listItem .itemPrice .compareLink' + item.id).html('<img src="/local/images/btnRemove.jpg" alt="Remove">');
                    $('#list .listItem .itemPrice .compareLink' + item.id).attr('href', 'javascript: removeFavourite(' + item.id + ', 1);');

                    $('#favouriteItem_' + ( i + 1 ) ).css( 'display', '' );
                    $('#favouriteItem_' + ( i + 1 ) ).html( text );
                });


                $('#favouritesSave').show();
                $('#favouritesCompare').show();
                $('#favouritesRetrieve').hide();
            }else{

                // Could not retrieve favourites
                $('#favouritesSave').hide();
                $('#favouritesCompare').hide();
                $('#favouritesRetrieve').show();
            }
            $('body').css('cursor', 'default');
        },
        error: function( objRequest ){
            // Could not retrieve favourites
            $('#favouritesSave').hide();
            $('#favouritesCompare').hide();
            $('#favouritesRetrieve').show();
            $('body').css('cursor', 'default');
        }
    });
}



/**
* @ desc This will save the temporary stored favourites to the database
*/
function saveFavourites(){

    // Check if form is valid before proceeding
    if( $( "#formSaveFavourites" ).valid() ){

        $('body').css('cursor', 'progress');

        $.ajax({
            url: '/frontend-operations/save-favourites/',
            dataType: 'json',
            data: $( '#formSaveFavourites' ).serialize(),
            success: function(data){

                if( data != 0 ){

                    // Submitted ok.

                    updateTips('Saved','You can now come back and view your saved vehicles anytime.','highlight','','alertBoxSaveFavourites');

                    clearFormElements("#formSaveFavourites");
                    setTimeout( "autoCloseDialog('dialogSaveFavourites');",4000);

                }else{

                    // Show generic message
                    updateTips('Request Failed','The form submit request failed, please try again.','error','','alertBoxSaveFavourites');
                }
                $('body').css('cursor', 'default');
            },
            error: function( objRequest ){
                updateTips('Request Failed','The request to submit failed, please try again.','error','','alertBoxSaveFavourites');
                $('body').css('cursor', 'default');
            }
        });
    }
}



/**
* @ desc This will retrieve previously stored favourites
*/
function retrieveFavourites(){

    // Check if form is valid before proceeding
    if( $( "#formRetrieveFavourites" ).valid() ){

        $('body').css('cursor', 'progress');

        $.ajax({
            url: '/frontend-operations/retrieve-favourites/',
            dataType: 'json',
            data: $( '#formRetrieveFavourites' ).serialize(),
            success: function(data){

                if( data == true ){

                    // Submitted ok.
                    updateTips('Retrieved','Redirecting..','highlight','','alertBoxRetrieveFavourites' );

                    setTimeout( "window.location = netdirector.baseUrl + '/' + netdirector.franchiseUrl + 'used-cars/favourites';", 500);

                }else{

                    // Show generic message
                    updateTips('Request Failed','The email you have provided was not found in our system','error','','alertBoxRetrieveFavourites' );
                }
                $('body').css('cursor', 'default');
            },
            error: function( objRequest ){
                updateTips('Request Failed','The request to submit failed, please try again.','error','','alertBoxRetrieveFavourites' );
                $('body').css('cursor', 'default');
            }
        });
    }
}


/**
* @ desc This adds a vehicle to compare via Ajax
*/
function addToCompare( vehicleId ){

    var href = 'javascript: removeFromCompare(' + vehicleId + ');';
    var removeid = 'myComparisonYes' + vehicleId;
    var removeLinkid = 'myComparisonYesLink' + vehicleId;

    $("#myComparison" + vehicleId).attr("src", "/local/images/btnCompareYes.gif");
    $("#myComparisonLink" + vehicleId).attr("href", href);

    $("#myComparison" + vehicleId).attr("id", removeid);
    $("#myComparisonLink" + vehicleId).attr("id", removeLinkid);

    //change id's
    $("#myComparison" + vehicleId).attr("id", "myComparisonYes");

    $('body').css('cursor', 'progress');

    $.ajax({
      url: '/frontend-operations/add-vehicle-to-compare/',
      dataType: 'json',
      data: 'auto_car_detail_id=' + vehicleId,
      success: function(data){

            if( data['error'] != null && data['error'] != '' ){

                $('input[value='+vehicleId+']').attr('checked', false);
                alert( data['error'] );

            }
            $('body').css('cursor', 'default');
        },
    error: function( objRequest ){

            $('body').css('cursor', 'default');
        }
    });
}


/**
* @ desc This removes vehicle from compare via Ajax
*/
function removeFromCompare( vehicleId ){
    var href = 'javascript: addToCompare(' + vehicleId + ');';
    var removeid = 'myComparison' + vehicleId;
    var removeLinkid = 'myComparisonLink' + vehicleId;

    $("#myComparisonYes" + vehicleId).attr("src", "/local/images/btnCompare.jpg");
    $("#myComparisonYesLink" + vehicleId).attr("href", href);

    $("#myComparisonYes" + vehicleId).attr("id", removeid);
    $("#myComparisonYesLink" + vehicleId).attr("id", removeLinkid);

    $('body').css('cursor', 'progress');

    $.ajax({
      url: '/frontend-operations/remove-vehicle-from-compare/',
      dataType: 'json',
      data: 'auto_car_detail_id=' + vehicleId,
      success: function(data){

            $('body').css('cursor', 'default');

            if ( $('#CompareTbl tbody tr:first td:visible').length <= 2 ) {
                $('#CompareTbl').html("");
                $('#compareNoVehiclesSelected').show();
            } else {
                $('.compare_'+vehicleId).fadeOut();
            }

        },
    error: function( objRequest ){

            $('body').css('cursor', 'default');
        }
    });
}


/**
* @desc Removes all vehicles stored for compare via Ajax
*/
function removeAllFromCompare() {

    $('body').css('cursor', 'progress');

    $.ajax({
        url: '/frontend-operations/remove-all-from-compare/',
        dataType: 'json',
        data: '',
        success: function(data){

            $('body').css('cursor', 'default');
            $('#CompareTbl').html("");
            $('#compareNoVehiclesSelected').show();
        },
        error: function( objRequest ){

            $('body').css('cursor', 'default');
        }
    });
}

function selectCategory( item, value ) {

    $("#box1").parent().removeClass("active");
    $("#box2").parent().removeClass("active");
    $("#box3").parent().removeClass("active");
    $("#box4").parent().removeClass("active");
    $("#box5").parent().removeClass("active");
    $("#box6").parent().removeClass("active");
    $("#box7").parent().removeClass("active");
    $("#box8").parent().removeClass("active");


    $('#category_search').val(value);
    $("#" + item).parent().addClass("active");
}


var featuredCars = {

    imageView: 0,
    imageViewWidth: 219,
    imageViewMax: 2,
    currentSelectedImageId: 0,


    /**
    * @ desc This will set the max number of views
    */
    setMaxImageViews: function( max ){

        if( max > 0 ){

            this.imageViewMax = max;
        }
    },


    /**
    * @ desc This will set the current Selected Image Id
    */
    setCurrentSelectedImageId: function( id ){

        if( id > 0 ){

            this.currentSelectedImageId = id;
        }
    },


    /**
    * @ desc This will slide along the images right
    */
    slideImagesAlong : function( direction ){

        if( direction == 'left' ){

            // Don't scroll beyond 0
            this.imageView = ( this.imageView > 0 ) ? this.imageView-1 : 0;
        }else{

            // Don't scroll beyond max number of views ( a view being 1 x imageViewWidth )
            this.imageView = ( this.imageView < this.imageViewMax ) ? this.imageView + 1 : this.imageView;
        }
        // Slide the view along
        var divWidth = this.imageViewWidth * this.imageView;
        $("#featuredCarsScroller").animate({
            left: "-" + divWidth
        },500,"swing");
    }
}



var featuredVans = {

    imageView: 0,
    imageViewWidth: 221,
    imageViewMax: 1,
    currentSelectedImageId: 0,


    /**
     * @ desc This will set the max number of views
     */
    setMaxImageViews: function( max ){
        if( max > 0 ){
            this.imageViewMax = max;
        }
    },


    /**
     * @ desc This will set the current Selected Image Id
     */
    setCurrentSelectedImageId: function( id ){
        if( id > 0 ){
            this.currentSelectedImageId = id;
        }
    },


    /**
     * @ desc This will slide along the images right
     */
    slideImagesAlong : function( direction ){
        if( direction == 'left' ){
            // Don't scroll beyond 0
            this.imageView = ( this.imageView > 0 ) ? this.imageView-1 : 0;
        }else{
            // Don't scroll beyond max number of views ( a view being 1 x imageViewWidth )
            this.imageView = ( this.imageView < this.imageViewMax ) ? this.imageView + 1 : this.imageView;
        }
        // Slide the view along
        var divWidth = this.imageViewWidth * this.imageView;
        $("#approvedVansScroller").animate({
            left: "-" + divWidth
        },500,"swing");
    }
}

/**
* @ desc This will open the dialog and show the correct form
*/
function showGlobalForm( formType ){

    var dialogName = '';
    var formName   = '';

    // Using switch will stop JS errors from passing incorrect dialog names
    switch( formType ){

        case 'globalvaluemyvehicle':
            dialogName  = 'dialogGlobalValueMyVehicle';
            formName    = 'formGlobalValueMyVehicle';
            alertBoxName = 'alertBoxGlobalValueMyVehicle';


            if(!netdirector.isBikesFranchise){
                setupMarqueData("globalvaluemyvehicle_my_make_id", "car")
            }

            break;
    }

    if( dialogName != '' ){

        // Clear the form values
        clearFormElements('#' + formName);

        // Removes validation messages
        var validator = $('#' + formName).validate();
        validator.resetForm();

        // Clear Alert Box Text
        resetTips( alertBoxName );

        // Open the dialog box
        $('#' + dialogName ).dialog('open');

        // highlight first input
        $('#' + dialogName + ' :input:text:first').focus();
    }
}

function displayFormCaptchaImage( formElementId ){

	var form = $(formElementId)

	if( form.length && $('div.captcha', form).length ){

		var target = '/frontend-operations/get-form-captcha-image/';

		$.getJSON(target,
		function(data){
			//If data is null, then captcha is turned off.
			if(data){
				if( data.id && $( 'input[name=sc[id]]', form ).length  ){

					$('input[name=sc[id]]', form ).val( data.id );

				}

				if( data.image && $('div.captcha div.captchaImage', form).length ){

					$('div.captcha div.captchaImage', form).html( data.image );

					if( $('div.captcha:hidden', form).length ){

						$('div.captcha', form).animate({
							opacity: 'toggle',
							height: 'toggle'
						},500);
					}
				}
			}

		});

	}
}

/**
* @ desc This will save the selected areas for this franchise via Ajax
*/
function submitGlobalForm( formType ){

    if( formType != '' ){

        // Check if form is valid before proceeding
        if( $( "#form" + formType ).valid() ){

            $('body').css('cursor', 'progress');

            var formData = '';

            if( formType == 'GlobalValueMyVehicle' ){

                var formData = 'customers_vehicle_make=' + $('#globalvaluemyvehicle_my_make_id > option:selected').text() + '&customers_vehicle_model=' + $('#globalvaluemyvehicle_my_model_id > option:selected').text() + '&';
            }

            $.ajax({
                url: '/frontend-operations/submit-form/',
                dataType: 'json',
                data: formData + $( '#form' + formType ).serialize(),
                success: function(data){

                    if( data.status == true ){
                        itForm(data.intellitracker);
                        // Submitted ok.
                        updateTips('Enquiry sent','Thank you for your enquiry. We will respond as soon as possible','highlight','','alertBox' + formType);
                        clearFormElements("#form" + formType);
                        setTimeout( "autoCloseDialog('dialog" + formType + "');",4000);

                    }else{

                        displayFormCaptchaImage( '#form' + formType );

                        if( data.error != null ){

                            updateTips('Request Failed',data.error,'error','','alertBox' + formType);

                        }else{
                            // Show generic message
                            updateTips('Request Failed','The request to submit failed, please try again.','error','','alertBox' + formType);
                        }
                    }
                },
                error: function( objRequest ){
                    updateTips('Request Failed','The submission request failed, please try again.','error','','alertBox' + formType);
                }
            });
            $('body').css('cursor', 'default');
        }
    }
}

/**
* @ desc This will populate the Marque List select box
*/
function setupMarqueData( elementId, vehicleType ){

    var $element = $( '#' + elementId );

    // Remove all options
    $element.attr('disabled', 'disabled').removeOption(/./).addOption('', '- Select Marque -');

    // Add Options
    if( $.inArray(vehicleType, possibleVehicleTypes) > -1 ){
        $.each(selectMarqueList[vehicleType], function(i,item){

            if( parseInt( item.count ) > 0 ){
                $element.addOption(item.id, item.marqueName.toUpperCase());
            }
        });
    }
    $element.removeAttr('disabled').attr( "selectedIndex", 0);

    // Remember Search Params
/*    if( searchParams.makeId > 0 ){

        $element.selectOptions( searchParams.makeId );

        collectAvailableModels( searchParams.modelId, true);

    }else{

        // If no previous search data, use defaults
        $element.selectOptions( netdirector.defaultAutoMarqueDetailId );
        collectAvailableModels( searchParams.modelId, true);
    }*/
}

