﻿var make;
var sLastPrefix = '';
// add the postcode value to the sort order control - #SortOrder #Postcode
function addPostCode() {
    if (!document.getElementById('Postcode'))
        return false;
    if (document.getElementById('Postcode').value.length == 0) {
        if (document.getElementById('SortOrder').options[document.getElementById('SortOrder').length - 1].text == 'Distance') {
            document.getElementById('SortOrder').remove(document.getElementById('SortOrder').length - 1);

        }
    }
    else if ((document.getElementById('Postcode').value.length > 0) && (document.getElementById('SortOrder').options[document.getElementById('SortOrder').length - 1].text != 'Distance')) {
        document.getElementById('SortOrder').options[document.getElementById('SortOrder').length] = new Option('Distance', '3');
    }
}

//Javascript library to control vehicle data callbacks and functionality
function addMakes(sPrefix, sType) {
    if (document.getElementById(sPrefix + 'MakeID').options[0].className != 'noreload') {
        var iSelectedMakeID = $('#' + sPrefix + 'MakeID').val();
        if (iSelectedMakeID > 0) {
            document.getElementById(sPrefix + 'MakeID').options[0] = new Option('-- All Makes --', '0');
            clearCombo(sPrefix + 'MakeID');
            addLoadingMessage(sPrefix + 'MakeID');
            $.post('/webservices/cvd-makemodel.asmx/GetMakes', 'section=' + sType, function(data) { loadMakes(data, iSelectedMakeID, sPrefix, sType); }, 'xml');
        }
        else {
            $('#' + sPrefix + 'ModelArrow').attr('src', '/library/images/bullet2.gif')
            $('#' + sPrefix + 'ModelID').attr('disabled', 'disabled');
            $('#' + sPrefix + 'ModelLabel').addClass('disabled');
            $('#' + sPrefix + 'CapModelArrow').attr('src', '/library/images/bullet2.gif')
            $('#' + sPrefix + 'CapModelID').attr('disabled', 'disabled');
            $('#' + sPrefix + 'CapModelLabel').addClass('disabled');
            $('#' + sPrefix + 'CapDerivativeArrow').attr('src', '/library/images/bullet2.gif')
            $('#' + sPrefix + 'CapDerivativeID').attr('disabled', 'disabled');
            $('#' + sPrefix + 'CapDerivativeLabel').addClass('disabled');
            document.getElementById(sPrefix + 'MakeID').selectedIndex = 0;
            if (document.getElementById(sPrefix + 'ModelID')) {
                addModels(sPrefix, sType);
            }
        }
    }
    else {
        addModels(sPrefix, sType);
    }
}

//Loads the makes from the database
function loadMakes(oReturnedXml, iSelectedMakeID, sPrefix, sType) {
    var iOptionCount = 2;
    var makes;
    if (sType == 'leasevan') {
        makes = $("ListMake[DisplayInVans='true']", oReturnedXml);
    }
    else if (sType == 'new' || sType == 'leasecar') {
        makes = $("ListMake[DisplayInNewCars='true']", oReturnedXml);
    }
    else if (sType == 'used') {
        makes = $("ListMake[DisplayInUsedDropDown='true']", oReturnedXml);
    }
    makes.each
    (
        function()
        {
			document.getElementById(sPrefix + 'MakeID').options[iOptionCount] = new Option($(this).attr('Name'), $(this).attr('ID'));
            iOptionCount++;
        }
    );
    if (iSelectedMakeID > 0) document.getElementById(sPrefix + 'MakeID').value = iSelectedMakeID;
    $('#' + sPrefix + 'ModelID').removeAttr('disabled');
    $('#' + sPrefix + 'ModelArrow').attr('src', '/library/images/bullet1.gif')
    $('#' + sPrefix + 'ModelLabel').removeClass('disabled');
    clearLoadingMessage(sPrefix + 'MakeID');
    if (document.getElementById(sPrefix + 'ModelID')) {
        addModels(sPrefix, sType);
    }
}

//Adds the models from the database
function addModels(sPrefix, sType) {
    if (document.getElementById(sPrefix + 'ModelID').options[0].className != 'noreload') {
        var iSelectedModelID = document.getElementById(sPrefix + 'ModelID').value;
        clearCombo(sPrefix + 'ModelID');
        make = null;
        if (document.getElementById(sPrefix + 'MakeID').value > 0) {
            addLoadingMessage(sPrefix + 'ModelID');
            if (make && sLastPrefix == sPrefix) {
                loadModels(make, iSelectedModelID, sPrefix, sType);
            }
            else {
                $.post('/webservices/cvd-makemodel.asmx/GetMake', 'makeID=' + document.getElementById(sPrefix + 'MakeID').value + '&returnType=' + sType, function(data) { make = data; loadModels(make, iSelectedModelID, sPrefix, sType); }, 'xml');
            }
            $('#' + sPrefix + 'ModelID').removeAttr('disabled');
            $('#' + sPrefix + 'ModelArrow').attr('src', '/library/images/bullet1.gif')
            $('#' + sPrefix + 'ModelLabel').removeClass('disabled');
        }
        else {
            document.getElementById(sPrefix + 'ModelID').selectedIndex = 0;
            $('#' + sPrefix + 'ModelArrow').attr('src', '/library/images/bullet2.gif')
            $('#' + sPrefix + 'ModelID').attr('disabled', 'disabled');
            $('#' + sPrefix + 'ModelLabel').addClass('disabled');
            $('#' + sPrefix + 'CapModelArrow').attr('src', '/library/images/bullet2.gif')
            $('#' + sPrefix + 'CapModelID').attr('disabled', 'disabled');
            $('#' + sPrefix + 'CapModelLabel').addClass('disabled');
            $('#' + sPrefix + 'CapDerivativeArrow').attr('src', '/library/images/bullet2.gif')
            $('#' + sPrefix + 'CapDerivativeID').attr('disabled', 'disabled');
            $('#' + sPrefix + 'CapDerivativeLabel').addClass('disabled');
            if (document.getElementById(sPrefix + 'CapModelID')) {
                addCapModels(sPrefix, sType);
            }
        }
        sLastPrefix = sPrefix;
    }
    else {
        addCapModels(sPrefix, sType);
    }
}

//loads the models into the drop down
function loadModels(oReturnedXml, iSelectedModelID, sPrefix, sType) {
	var iOptionCount = 2;
	var vehicleType = 'Car';
	if (sType == 'leasevan') vehicleType = 'Van';
    var model;
    var modelAdded;
    $("Model", oReturnedXml).each
	(
		function() {
			model = this;
			modelAdded = false;
			if (sType == 'new') {
				var capModels = $("CapModel[IsCurrent='true']", model);
				capModels.each
				(
					function() {
						if (!modelAdded) {
							first = false;
							document.getElementById(sPrefix + 'ModelID').options[iOptionCount] = new Option($(model).attr('Name'), $(model).attr('ID'));
							iOptionCount++;
							modelAdded = true;
						}
					}
				);
				capModels = null;
			}
			else{
				document.getElementById(sPrefix + 'ModelID').options[iOptionCount] = new Option($(model).attr('Name'), $(model).attr('ID'));
				iOptionCount++;
				modelAdded = true;
			}
		}
	);

    $('#' + sPrefix + 'ModelID').removeClass('disabled');
    if (iSelectedModelID > 0) document.getElementById(sPrefix + 'ModelID').value = iSelectedModelID;
    if (document.getElementById(sPrefix + 'ModelID').selectedIndex == -1) document.getElementById(sPrefix + 'ModelID').selectedIndex = 0;
    clearLoadingMessage(sPrefix + 'ModelID');
    if (document.getElementById(sPrefix + 'CapModelID')) {
    	addCapModels(sPrefix, sType);
    }
    models = null;
}

//Adds the cap models from the database
function addCapModels(sPrefix, sType) {
    if (document.getElementById(sPrefix + 'CapModelID').options[0].className != 'noreload') {
        var iSelectedCapModelID = document.getElementById(sPrefix + 'CapModelID').value;
        clearCombo(sPrefix + 'CapModelID');
        if (document.getElementById(sPrefix + 'ModelID').value > 0) {
            addLoadingMessage(sPrefix + 'CapModelID');
            if (make && sLastPrefix == sPrefix) {
                loadCapModels(make, iSelectedCapModelID, sPrefix, sType);
            }
            else {
                $.post('/webservices/cvd-makemodel.asmx/GetMake', 'makeID=' + document.getElementById(sPrefix + 'MakeID').value + '&returnType=' + sType, function(data) { make = data; loadCapModels(make, iSelectedCapModelID, sPrefix, sType); }, 'xml');
            }
            $('#' + sPrefix + 'CapModelID').removeAttr('disabled');
            $('#' + sPrefix + 'CapModelArrow').attr('src', '/library/images/bullet1.gif')
            $('#' + sPrefix + 'CapModelLabel').removeClass('disabled');
        }
        else {
            document.getElementById(sPrefix + 'CapModelID').selectedIndex = 0;
            $('#' + sPrefix + 'CapModelArrow').attr('src', '/library/images/bullet2.gif')
            $('#' + sPrefix + 'CapModelID').attr('disabled', 'disabled');
            $('#' + sPrefix + 'CapModelLabel').addClass('disabled');
            $('#' + sPrefix + 'CapDerivativeArrow').attr('src', '/library/images/bullet2.gif')
            $('#' + sPrefix + 'CapDerivativeID').attr('disabled', 'disabled');
            $('#' + sPrefix + 'CapDerivativeLabel').addClass('disabled');
            if (document.getElementById(sPrefix + 'CapDerivativeID')) {
                addCapDerivatives(sPrefix, sType);
            }
        }
        sLastPrefix = sPrefix;
    }
    else {
        addCapDerivatives(sPrefix, sType);
    }
}

//loads the models into the drop down
function loadCapModels(oReturnedXml, iSelectedCapModelID, sPrefix, sType) {
	var iOptionCount = 2;
    var model = $('Model[ID=' + document.getElementById(sPrefix + 'ModelID').value + ']', oReturnedXml);
    var capModels;
    if(sType == 'new'){
		capModels = $("CapModel[IsCurrent='true']", model)
    }
    else{
		capModels = $("CapModel", model)
    } 
    capModels.each
    (
        function() {
            document.getElementById(sPrefix + 'CapModelID').options[iOptionCount] = new Option($(this).attr('Name'), $(this).attr('ID'));
            iOptionCount++;
        }
    );
    $('#' + sPrefix + 'CapModelID').removeClass('disabled');
    if (iSelectedCapModelID > 0) document.getElementById(sPrefix + 'CapModelID').value = iSelectedCapModelID;
    if (document.getElementById(sPrefix + 'CapModelID').selectedIndex == -1) document.getElementById(sPrefix + 'CapModelID').selectedIndex = 0;
    clearLoadingMessage(sPrefix + 'CapModelID');
    if (document.getElementById(sPrefix + 'CapDerivativeID')) {
    	addCapDerivatives(sPrefix, sType);
    }
    capModels = null;
}

//Adds the cap models from the database
function addCapDerivatives(sPrefix, sType) {
    if (document.getElementById(sPrefix + 'CapDerivativeID').options[0].className != 'noreload') {
        var iSelectedCapDerivativeID = document.getElementById(sPrefix + 'CapDerivativeID').value;
        clearCombo(sPrefix + 'CapDerivativeID');
        if (document.getElementById(sPrefix + 'CapModelID').value > 0) {
            addLoadingMessage(sPrefix + 'CapDerivativeID');
            if (make && sLastPrefix == sPrefix) {
                loadCapDerivatives(make, iSelectedCapDerivativeID, sPrefix, sType);
            }
            else {
                $.post('/webservices/cvd-makemodel.asmx/GetMake', 'makeID=' + document.getElementById(sPrefix + 'MakeID').value + '&returnType=' + sType, function(data) { make = data; loadCapDerivatives(make, iSelectedCapDerivativeID, sPrefix, sType); }, 'xml');
            }
            $('#' + sPrefix + 'CapDerivativeID').removeAttr('disabled');
            $('#' + sPrefix + 'CapDerivativeArrow').attr('src', '/library/images/bullet1.gif')
            $('#' + sPrefix + 'CapDerivativeLabel').removeClass('disabled');
        }
        else {
            document.getElementById(sPrefix + 'CapDerivativeID').selectedIndex = 0;
            $('#' + sPrefix + 'CapDerivativeArrow').attr('src', '/library/images/bullet2.gif')
            $('#' + sPrefix + 'CapDerivativeID').attr('disabled', 'disabled');
            $('#' + sPrefix + 'CapDerivativeLabel').addClass('disabled');
        }
        sLastPrefix = sPrefix;
    }
}

//loads the models into the drop down
function loadCapDerivatives(oReturnedXml, iSelectedCapDerivativeID, sPrefix, sType) {
    var iOptionCount = 2;
    var CVDCapModel = $('CapModel[ID=' + document.getElementById(sPrefix + 'CapModelID').value + ']', oReturnedXml);
    var capDerivatives;
    if(sType == 'new'){
		capDerivatives = $("CapDerivative[IsCurrent='true']", CVDCapModel)
    }
    else{
		capDerivatives = $("CapDerivative", CVDCapModel)
    } 
    capDerivatives.each
    (
        function() {
            document.getElementById(sPrefix + 'CapDerivativeID').options[iOptionCount] = new Option($(this).attr('Name'), $(this).attr('ID'));
            iOptionCount++;
        }
    );
    $('#' + sPrefix + 'CapModelID').removeClass('disabled');
    if (iSelectedCapDerivativeID > 0) document.getElementById(sPrefix + 'CapDerivativeID').value = iSelectedCapDerivativeID;
    if (document.getElementById(sPrefix + 'CapDerivativeID').selectedIndex == -1) document.getElementById(sPrefix + 'CapDerivativeID').selectedIndex = 0;
    clearLoadingMessage(sPrefix + 'CapDerivativeID');
    capDerivatives = null;
}

//Adds the regions from the database
function addRegions(iSelectedRegionID, iSelectedCountyID, iSelectedTownID) {
    clearCombo('Region');
    addLoadingMessage('Region');
    $.post('/webservices/cvd-general.asmx/GetRegions', '', function(data) { loadRegions(data, iSelectedRegionID, iSelectedCountyID, iSelectedTownID); }, 'xml');
}

//loads the models into the drop down
function loadRegions(oReturnedXml, iSelectedRegionID, iSelectedCountyID, iSelectedTownID) {
    var iOptionCount = 2;
    $('BasicRegion', oReturnedXml).each
    (
        function() {
            document.getElementById('Region').options[iOptionCount] = new Option($(this).attr('Name'), $(this).attr('ID'));
            iOptionCount++;
        }
    );
    if (iSelectedRegionID > 0) document.getElementById('Region').value = iSelectedRegionID;
    addCounties(iSelectedCountyID, iSelectedTownID);
    clearLoadingMessage('Region');
}

//Adds the counties from the database
function addCounties(iSelectedCountyID, iSelectedTownID) {
    if (document.getElementById('Region').options.length == 1) return;
    clearCombo('County');
    if (document.getElementById('Region').value > 0) {
        addLoadingMessage('County');
        $.post('/webservices/cvd-general.asmx/GetCounties', 'regionID=' + document.getElementById('Region').value, function(data) { loadCounties(data, iSelectedCountyID, iSelectedTownID); }, 'xml');
        $('#County').removeAttr('disabled');
    }
    else {
    	document.getElementById('County').selectedIndex = 0;
    	document.getElementById('Town').selectedIndex = 0;
        $('#County').attr('disabled', 'disabled');
        $('#Town').attr('disabled', 'disabled');
    }
}

//loads the models into the drop down
function loadCounties(oReturnedXml, iSelectedCountyID, iSelectedTownID) {
    var iOptionCount = 2;
    $('BasicCounty', oReturnedXml).each
    (
        function() {
            document.getElementById('County').options[iOptionCount] = new Option($(this).attr('Name'), $(this).attr('ID'));
            iOptionCount++;
        }
    );
    $('#County').removeClass('disabled');
    if (iSelectedCountyID) document.getElementById('County').value = iSelectedCountyID;
    if (document.getElementById('County').selectedIndex == -1) document.getElementById('County').selectedIndex = 0;
    addTowns(iSelectedTownID);
    clearLoadingMessage('County');
}

//Adds the counties from the database
function addTowns(iSelectedTownID) {
    if (document.getElementById('County').options.length == 1) return;
    clearCombo('Town');
    if (document.getElementById('County').value > 0) {
        addLoadingMessage('Town');
        $.post('/webservices/cvd-general.asmx/GetTowns', 'countyID=' + document.getElementById('County').value, function(data) { loadTowns(data, iSelectedTownID); }, 'xml');
        $('#Town').removeAttr('disabled');
    }
    else {
        document.getElementById('Town').selectedIndex = 0;
        $('#Town').attr('disabled', 'disabled');
    }
}

//loads the towns into the drop down
function loadTowns(oReturnedXml, iSelectedTownID) {
    var iOptionCount = 2;
    $('BasicTown', oReturnedXml).each
    (
        function() {
            document.getElementById('Town').options[iOptionCount] = new Option($(this).attr('Name'), $(this).attr('ID'));
            iOptionCount++;
        }
    );
    if (iSelectedTownID > 0) document.getElementById('Town').value = iSelectedTownID;
    if (document.getElementById('Town').selectedIndex == -1) document.getElementById('Town').selectedIndex = 0;
    $('#Town').removeClass('disabled');
    clearLoadingMessage('Town');
}

//Clears the defined combo box
function clearCombo(sComboToClear) {
    for (var i = document.getElementById(sComboToClear).options.length; i > 1; i--) {
        document.getElementById(sComboToClear).options[i - 1] = null;
    }
}

//Adds the loading message
function addLoadingMessage(sCombo) {
    document.getElementById(sCombo).options[1] = new Option(document.getElementById(sCombo).options[0].text, document.getElementById(sCombo).options[0].value);
    document.getElementById(sCombo).options[0] = new Option('Loading...', '0');
    document.getElementById(sCombo).selectedIndex = 0;
}

function clearLoadingMessage(sCombo) {
    document.getElementById(sCombo).options[0] = null;
}

//Changes the large image to match the hovered image
function changeLargeImage() {
    var newImageSrc = this.href.replace('large', 'med-large');
    $('#BigImage').attr('src', newImageSrc);
    $('#BigImageLink').click(function() { $('#BigImageLink').extend({ start: true, events: false }); return false; });
}

//Adds greyed out functions that disappear when the user clicks them
function addClickBasedInstruction(controlID, value) {
    //if the control has a value
    if ($('#' + controlID).val() == '') {
        $('#' + controlID).val(value);
        $('#' + controlID).addClass("greyText");
        $('#' + controlID).focus(
            function() {
                $('#' + controlID).removeClass("greyText");
                $('#' + controlID).val("");
            }
        )
        $('#' + controlID).blur(
            function() {
                if ($('#' + controlID).val() == '') {
                    $('#' + controlID).addClass("greyText");
                    $('#' + controlID).val(value);
                }
            }
        )
    }
    else {
        $('#' + controlID).removeClass("greyText");
    }
}


function clearClickBasedValues() {
    $('input.greyText').val('');
}


//set the document ready states to add
$(document).ready
(
    function() {

        $('.rtHide').hide('fast');

        //Setup the events for the make checkbox
        $('select.usedmakecombo').each(
    		function() {
    		    var sPrefix = this.id.substring(0, this.id.length - 6);
    		    addMakes(sPrefix, 'used');
    		    $('#' + sPrefix + 'MakeID').change(function() { addModels(sPrefix, 'used'); });
    		}
    	);

        //Setup the events for the make checkbox
        $('select.newmakecombo').each(
    		function() {
    		    var sPrefix = this.id.substring(0, this.id.length - 6);
    		    addMakes(sPrefix, 'new');
    		    $('#' + sPrefix + 'MakeID').change(function() { addModels(sPrefix, 'new'); });
    		    $('#' + sPrefix + 'ModelID').change(function() { addCapModels(sPrefix, 'new'); });
    		    $('#' + sPrefix + 'CapModelID').change(function() { addCapDerivatives(sPrefix, 'new'); });
    		}
    	);

        //Setup the events for the make checkbox
        $('select.leasemakecombo').each(
    		function() {
    		    var sType = 'leasecar';
    		    if (document.getElementById('inner-container').className == 'vanleasing') sType = 'leasevan';
    		    var sPrefix = this.id.substring(0, this.id.length - 6);
    		    addMakes(sPrefix, sType);
    		    $('#' + sPrefix + 'MakeID').change(function() { addModels(sPrefix, sType); });
    		    $('#' + sPrefix + 'ModelID').change(function() { addCapModels(sPrefix, sType); });
    		    $('#' + sPrefix + 'CapModelID').change(function() { addCapDerivatives(sPrefix, sType); });
    		}
    	);

        $('#Region').change(addCounties);
        $('#Region').keyup(addCounties);
        $('#County').change(addTowns);
        $('#County').keyup(addTowns);
        //add the models to the drop down
        if (document.getElementById('Region')) {
            var iSelectedRegionID = document.getElementById('Region').value;
            var iSelectedCountyID = document.getElementById('County').value;
            var iSelectedTownID = document.getElementById('Town').value;
            //Add the regions to the regions drop down
            addRegions(iSelectedRegionID, iSelectedCountyID, iSelectedTownID);

        }
        //show the hidden items
        $('.rtShow').show();
        $('div.caradvert').hover
        (
            function() { $(this).addClass('adverthover'); },
            function() { $(this).removeClass('adverthover'); $(this).removeClass('hover'); }
        );
        $('div.insuranceLinks').click
        (
            function() {
                window.open(this.getElementsByTagName('a')[0].href);
            }
        );
        $('div.insuranceLinks').click(function() { return false; })
        $('div.insuranceLinks').hover
        (
            function() { $(this).addClass('adverthover'); $(this).addClass('hover'); },
            function() { $(this).removeClass('adverthover'); $(this).removeClass('hover'); }
        );
        $('div.imagepicker a').hover(changeLargeImage, function() { return false; });

        // submit the form for the two controls at the top of the content page
        $('#NumberPerPage').change(
            function() {
                $('#dropdownsForm').submit();
                document.forms['dropdownsForm'].submit();
            }
        )
        $('#SortOrder').change(
            function() {
                $('#dropdownsForm').submit();
                document.forms['dropdownsForm'].submit();
            }
        )

        $('#Postcode').keyup(addPostCode);

        $('#Postcode').change(addPostCode);

        $('form').submit(
    		function() {
    		    clearClickBasedValues();
    		    copyFormValuesToHiddenForm();
    		}
    	);

        $('a.vehicleinfo').click(
    		function() {
    		    $('#' + this.href.split('#')[1] + 'Content').toggle('fast');
    		    return false;
    		}
    	);
        //Sort out the lease dealer page links
        $('#dealercarlink').click(function() { document.location.href = '/lease-dealers/' + document.getElementById('currentdealer').innerHTML; })
        $('div.hoverable').hover(
    		function() { $(this).addClass('hover'); },
    		function() { $(this).removeClass('hover'); }
    	);
        $('#dealervanlink').click(function() { document.location.href = '/lease-dealers/' + document.getElementById('currentdealer').innerHTML + '/vans'; })
        if ($('a.lightbox-thumbs').length > 0) {
            $('a.lightbox-thumbs').lightBox();
        }
        
        $('a.largeimage').click(
			function(){
				$('#firstimage').trigger('click');
				return false;
			}
		);

    }
);


function copyFormValuesToHiddenForm() {
    //Copy the make id
    if (document.getElementById('hiddenMakeID')) {
        document.getElementById("hiddenModelID").value = "0";
        document.getElementById('hiddenMakeID').value = document.getElementById(MakeID).value;
    }
    //Copy the model id
    if (document.getElementById("hiddenModelID")) {
        document.getElementById("hiddenModelID").value = document.getElementById(ModelID).value;
    }
    //Copy the region id
    if (document.getElementById("hiddenRegion")) {
        document.getElementById("hiddenCounty").value = "";
        document.getElementById("hiddenRegion").value = document.getElementById('Region').value;
    }
    //Copy the county
    if (document.getElementById("hiddenCounty")) {
        document.getElementById("hiddenTown").value = "";
        document.getElementById("hiddenCounty").value = document.getElementById('County').value;
    }
    //Copy the town
    if (document.getElementById("hiddenCounty")) {
        document.getElementById("hiddenTown").value = document.getElementById('Town').value;
    }
    //Copy the postcode
    if (document.getElementById("hPostCodeBox")) {
        document.getElementById("hPostCodeBox").value = document.getElementById('Postcode').value;
    }
}
