﻿function SearchResultControl()
{
}

SearchResultControl.prototype.sortTypeSelect = null;
SearchResultControl.prototype.pageSizeSelect = null;
SearchResultControl.prototype.firstPageButton = null;
SearchResultControl.prototype.prevPageButton = null;
SearchResultControl.prototype.nextPageButton = null;
SearchResultControl.prototype.lastPageButton = null;
SearchResultControl.prototype.compareButton = null;
SearchResultControl.prototype.backToResultsButton = null;

SearchResultsControl.getClassInstance = function(controlId)
{
    var control = document.getElementById(controlId);
    
    if (control != null && control.classInstance == null)
    {
        var inst = new SearchResultControl();
        
        inst.sortTypeSelect =
            document.getElementById(control.getAttribute("sortTypeControlId"));
        inst.pageSizeSelect =
            document.getElementById(control.getAttribute("pageSizeControlId"));
        inst.firstPageButton =
            document.getElementById(control.getAttribute("firstPageButtonControlId"));
        inst.prevPageButton =
            document.getElementById(control.getAttribute("prevPageButtonControlId"));
        inst.nextPageButton =
            document.getElementById(control.getAttribute("nextPageButtonControlId"));
        inst.lastPageButton =
            document.getElementById(control.getAttribute("lastPageButtonControlId"));
        inst.compareButton =
            document.getElementById(control.getAttribute("compareButtonControlId"));
        inst.backToResultsButton =
            document.getElementById(control.getAttribute("backToResultsButtonControlId"));
        inst.selectedPageNumber = 
            document.getElementById(control.getAttribute("selectedPageNumberControlId"));
        inst.selectedCompareVehicle = 
            document.getElementById(control.getAttribute("selectedCompareVehicleControlId"));            
        
        control.classInstance = inst;
    }
    
    return control == null ? null : control.classInstance;
}

SearchResultsControl.OpenInPopUp = function(url, title, width, height, sizable)
{
	xOffset = (window.screenLeft + (document.body.clientWidth/2)) - width/2;
	yOffset = (window.screenTop + (document.body.clientHeight/2)) - height/2;
	
	var hwin = window.open(
		url,
		title,
		'width=' + width + ',height=' + height + ',top=' + yOffset + ',left=' + xOffset + ',status=yes, toolbar=no, menubar=no, scrollbars=yes, resizable=' + sizable + '',
		false);
	
	hwin.focus();
}

SearchResultsControl.sortTypeChange = function(controlId, controlName, sortTypeValue)
{
    var inst = SearchResultsControl.getClassInstance(controlId);

    if (inst != null && inst.sortTypeSelect != null)
    {
        inst.sortTypeSelect.value = sortTypeValue;
        
        Utils.createSubmitHidden(Utils.getForm(), controlName, inst.sortTypeSelect.name + ",true");
        Utils.getForm().submit();
    }
}

SearchResultsControl.compareButtonClick = function(controlId, eventSource)
{
    var inst = SearchResultsControl.getClassInstance(controlId);
    var removeVehicleId = eventSource.getAttribute("removeVehicleId");  
    var controlName = eventSource.getAttribute("controlName");
    
    if (inst != null && inst.compareButton != null)
    {
        Utils.createSubmitHidden(Utils.getForm(), controlName, inst.compareButton.name + "," + removeVehicleId);
    }
}

SearchResultsControl.pageSizeChange = function(controlId, controlName)
{
    var inst = SearchResultsControl.getClassInstance(controlId);
    
    if (inst != null && inst.pageSizeSelect != null)
    {
        Utils.createSubmitHidden(Utils.getForm(), controlName, inst.pageSizeSelect.name + ",true");
        Utils.getForm().submit();
    }
}

SearchResultsControl.pageNumberSelected = function(controlId, controlName, pageNumber)
{
    var inst = SearchResultsControl.getClassInstance(controlId);
    
    if (inst != null && inst.selectedPageNumber != null)
    {
        inst.selectedPageNumber.value = pageNumber;
        Utils.createSubmitHidden(Utils.getForm(), controlName, inst.selectedPageNumber.name);
        Utils.getForm().submit();
    }
}

SearchResultsControl.backToResultsButtonClick = function(controlId, controlName)
{   
    var inst = SearchResultsControl.getClassInstance(controlId);     
    
    if (inst != null && inst.backToResultsButton != null)
    {
        Utils.createSubmitHidden(Utils.getForm(), controlName, inst.backToResultsButton.name);
    }
}

SearchResultsControl.SelectVehicleForCompare = function(controlId, eventSource)
{
    var inst = SearchResultsControl.getClassInstance(controlId);
    
    var vehicleCheckboxes = document.getElementsByName(eventSource.name);
    
    var checkedCount = 0;
    
    for (var i = 0; i < vehicleCheckboxes.length; i++)
    {
        var checkbox = vehicleCheckboxes[i];
        
        if (checkbox.checked)
        {
            checkedCount++;
        }
    }
    
    if (checkedCount > 4)
    {
        alert("A maximum of 4 vehicles can be selected for comparison.");
        eventSource.checked = false;
    }
    
    inst.compareButton.disabled = checkedCount < 2;
}

SearchResultsControl.showVehicleDetails = function(controlId, eventSource)
{
    var url = eventSource.getAttribute("friendlyName");
    
	var width = 600;
	var height = 770;
	
	xOffset = (window.screenLeft + (document.body.clientWidth / 2)) - width / 2;
	yOffset = (window.screenTop + (document.body.clientHeight / 2)) - height / 2 - 30;
	
	var winOpts = 'toolbar=no, menubar=no, scrollbars=yes, location=no, resizable=no, status=no, width=' + width + ', height=' + height;
	var win = window.open( url, 'popup', winOpts);
	    
	win.focus();
}

SearchResultsControl.showVehiclePDF = function(controlId, eventSource, params)
{
    var url = eventSource.getAttribute("friendlyName");
    url = url + params;
    
	var width = 600;
	var height = 770;
	
	var winOpts = 'left=0, top=0, toolbar=no, menubar=no, scrollbars=yes, location=no, resizable=yes, status=no, width=' + width + ', height=' + height;
	var win = window.open( url, 'popup', winOpts);
	    
	win.focus();
}

function GetCodeweaverVehicleFinanceCallBack(results)
{   
    
    var hasCodeweaverFeatureLicence = document.getElementById("HasCodeweaverFeatureLicence").value;
    var noDataVehicles = document.getElementById("VehicleIds").value;
   
    if( hasCodeweaverFeatureLicence == "True")
    {
        if( results.value != null)
        {
            for( var i = 0; i < results.value.Tables[0].Rows.length; i++)
            {
                var row = results.value.Tables[0].Rows[i];
                
                if( row.UserError != null)
                {
                    if(document.getElementById(row.UsedVehicleID + "_NoDataAvailable") != null)
                    {
                        document.getElementById(row.UsedVehicleID + "_NoDataAvailable").innerHTML = "<p>" + row.UserError + "</p>";
                    }
                }
                else
                {                   
                    var VehicleFinanceTypesRow = results.value.Tables[1].Rows[0];
                    var wasData = false;
                    
                    if(row.VehicleFinanceTypeID == 1)
                    {
                        document.getElementById(row.UsedVehicleID + "_StandardHP").style.display = "block";
                        document.getElementById(row.UsedVehicleID + "_Elect3").style.display = "none";
                        document.getElementById(row.UsedVehicleID + "_Elect4").style.display = "none";
                        document.getElementById(row.UsedVehicleID + "_VehicleLookupWait").style.display = "none";
                        wasData = true;
                       
                       if (row.Representative == true)
                       {
                         Representative1(row);
                       }
                  
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_Term").innerHTML = row.Term;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_APR").innerHTML = row.APRString + "% APR";
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_Deposit").innerHTML = row.DepositString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_VehiclePrice").innerHTML = row.VehiclePriceString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_AmountFinanced").innerHTML = row.AmountFinancedString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_TotalAmountPayable").innerHTML = row.TotalAmountPayableString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_CreditFacilityFee").innerHTML = row.CreditFacilityFeeString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_AdministrationFee").innerHTML = row.AdministrationFeeString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_XXMonthlyPayments").innerHTML = row.XXMonthlyPaymentsString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_VehiclePriceTextString").innerHTML = row.VehiclePriceTextString;
                                                
                        document.getElementById(row.UsedVehicleID + "_PersonalizeFinance").style.display = "block";
                        
                        document.getElementById(row.UsedVehicleID + "_PersonalizeFinanceUrl").href = 
                        document.getElementById(row.UsedVehicleID + "_PersonalizeFinanceUrl").href.substring(0, document.getElementById(row.UsedVehicleID + "_PersonalizeFinanceUrl").href.indexOf("Finance=") + 8) + row.VehicleFinanceTypeID;
                        
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_ResultMoreInfoList").innerHTML = VehicleFinanceTypesRow.StandardHPDescription;
                    }
                    
                    if(row.VehicleFinanceTypeID == 2)
                    {
                        document.getElementById(row.UsedVehicleID + "_StandardHP").style.display = "none";
                        document.getElementById(row.UsedVehicleID + "_Elect3").style.display = "block";
                        document.getElementById(row.UsedVehicleID + "_Elect4").style.display = "none";
                        document.getElementById(row.UsedVehicleID + "_VehicleLookupWait").style.display = "none";
                        wasData = true;
                        
                        if (row.Representative == true)
                        {
                           Representative2(row)
                        }
                        
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_Term").innerHTML = row.Term - 1;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_APR").innerHTML = row.APRString + "% APR";
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_Deposit").innerHTML = row.DepositString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_VehiclePrice").innerHTML = row.VehiclePriceString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_AmountFinanced").innerHTML = row.AmountFinancedString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_TotalAmountPayable").innerHTML = row.TotalAmountPayableString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_CreditFacilityFee").innerHTML = row.CreditFacilityFeeString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_OptionToPurchaseFee").innerHTML = row.AdministrationFeeString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_XXMonthlyPayments").innerHTML = row.XXMonthlyPaymentsString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_OptionalFinalPayment").innerHTML = row.OptionalFinalPaymentString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_MilesPerAnnum").innerHTML = row.MilesPerAnnumString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_ExcessMileageCharged").innerHTML = row.ExcessMileageChargedString + " Per Mile";
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_VehiclePriceTextString").innerHTML = row.VehiclePriceTextString;
                        
                        document.getElementById(row.UsedVehicleID + "_PersonalizeFinance").style.display = "block";
                        
                        document.getElementById(row.UsedVehicleID + "_PersonalizeFinanceUrl").href = 
                        document.getElementById(row.UsedVehicleID + "_PersonalizeFinanceUrl").href.substring(0, document.getElementById(row.UsedVehicleID + "_PersonalizeFinanceUrl").href.indexOf("Finance=") + 8) + row.VehicleFinanceTypeID;
                        
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_ResultMoreInfoList").innerHTML = VehicleFinanceTypesRow.Elect3Description;
                    }
                    
                    if(row.VehicleFinanceTypeID == 3)
                    {
                        document.getElementById(row.UsedVehicleID + "_StandardHP").style.display = "none";
                        document.getElementById(row.UsedVehicleID + "_Elect3").style.display = "none";
                        document.getElementById(row.UsedVehicleID + "_Elect4").style.display = "block";
                        document.getElementById(row.UsedVehicleID + "_VehicleLookupWait").style.display = "none";
                        wasData = true;
                                                 
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_Term").innerHTML = row.Term - 2;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_VehiclePrice").innerHTML = row.VehiclePriceString;                                                 
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_InitialRentals").innerHTML = row.DepositString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_MilesPerAnnum").innerHTML = row.MilesPerAnnumString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_OptionalFinalRental").innerHTML = row.OptionalFinalRentalString;
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_XXMonthlyRentals").innerHTML = row.XXMonthlyRentalsString;
                        
                        document.getElementById(row.UsedVehicleID + "_PersonalizeFinance").style.display = "block";
                        
                        document.getElementById(row.UsedVehicleID + "_PersonalizeFinanceUrl").href = 
                        document.getElementById(row.UsedVehicleID + "_PersonalizeFinanceUrl").href.substring(0, document.getElementById(row.UsedVehicleID + "_PersonalizeFinanceUrl").href.indexOf("Finance=") + 8) + row.VehicleFinanceTypeID;
                        
                        document.getElementById(row.UsedVehicleID + "_" + row.VehicleFinanceTypeID + "_ResultMoreInfoList").innerHTML = VehicleFinanceTypesRow.Elect4Description;
                    }
                    
                    if(wasData)
                    {
                        document.getElementById(row.UsedVehicleID + "_MainNoDataAvailable").style.display = "none";
                        document.getElementById(row.UsedVehicleID + "_VehicleLookupWait").style.display = "none";
                        
                        noDataVehicles = noDataVehicles.replace(row.UsedVehicleID + ",", "");
                        noDataVehicles = noDataVehicles.replace("," + row.UsedVehicleID, "");
                        noDataVehicles = noDataVehicles.replace(row.UsedVehicleID, "");
                    }
                }
            }
        }
    
        if (noDataVehicles != "")
		{
            var arrNoDataVehicles = noDataVehicles.split(",");
            
            for(i = 0; i < arrNoDataVehicles.length; i++)
            {
                if(document.getElementById(arrNoDataVehicles[i] + "_NoDataAvailable") != null)
                {
                    document.getElementById(arrNoDataVehicles[i] + "_NoDataAvailable").style.display = "block";
                }
                
                if(document.getElementById(arrNoDataVehicles[i] + "_VehicleLookupWait") != null)
                {
                    document.getElementById(arrNoDataVehicles[i] + "_VehicleLookupWait").style.display = "none";
                }
            }
		}
    }
    
    return;
}

function DoCitroenGetCodeweaverVehicleFinance(vehicleIDs)
{
    SearchResultsControl.CitroenGetCodeweaverVehicleFinance(document.getElementById("DealerID").value, document.getElementById("DealerGroupID").value, document.getElementById("OEMMarketID").value, document.getElementById("OEMSalesRegionID").value, vehicleIDs, GetCodeweaverVehicleFinanceCallBack);
}

function Representative1(row)
{
                        
                        document.getElementById("Representative_StandardHP").style.display = "block";
                        document.getElementById("Representative_Elect3").style.display = "none";
                       
                        document.getElementById("Repre_1_Deposit").innerHTML = row.DepositString;
                        document.getElementById("Repre_1_VehiclePrice").innerHTML = row.VehiclePriceString;
                        document.getElementById("Repre_1_AmountFinanced").innerHTML = row.AmountFinancedString;
                        document.getElementById("Repre_1_TotalAmountPayable").innerHTML = row.TotalAmountPayableString;
                        document.getElementById("Repre_1_CreditFacilityFee").innerHTML = row.CreditFacilityFeeString;
                        document.getElementById("Repre_1_AdministrationFee").innerHTML = row.AdministrationFeeString;
                        document.getElementById("Repre_1_XXMonthlyPayments").innerHTML = row.XXMonthlyPaymentsString;
                        document.getElementById("Repre_1_VehiclePriceTextString").innerHTML = row.VehiclePriceTextString;
                        document.getElementById("Repre_1_RateOfInterest").innerHTML = row.RateOfInterest + ' %';
                        document.getElementById("Repre_1_Term").innerHTML = row.Term; 
                        document.getElementById("Repre_1_APR1").innerHTML = row.APRString + "% APR";                    
}

function Representative2(row)
{

                        document.getElementById("Representative_StandardHP").style.display = "none";
                        document.getElementById("Representative_Elect3").style.display = "block";
                        document.getElementById("Repre_2_Deposit").innerHTML = row.DepositString;
                        document.getElementById("Repre_2_VehiclePrice").innerHTML = row.VehiclePriceString;
                        document.getElementById("Repre_2_AmountFinanced").innerHTML = row.AmountFinancedString;
                        document.getElementById("Repre_2_TotalAmountPayable").innerHTML = row.TotalAmountPayableString;
                        document.getElementById("Repre_2_CreditFacilityFee").innerHTML = row.CreditFacilityFeeString;
                        document.getElementById("Repre_2_AdministrationFee").innerHTML = row.AdministrationFeeString;
                        document.getElementById("Repre_2_XXMonthlyPayments").innerHTML = row.XXMonthlyPaymentsString;
                        document.getElementById("Repre_2_VehiclePriceTextString").innerHTML = row.VehiclePriceTextString;
                        document.getElementById("Repre_2_OptionalFinalPayment").innerHTML = row.OptionalFinalPaymentString;
                        document.getElementById("Repre_2_RateOfInterest").innerHTML = row.RateOfInterest + ' %';
                        document.getElementById("Repre_2_AnualMileage").innerHTML = row.MilesPerAnnumString;
                        document.getElementById("Repre_2_ExcessMileageCharge").innerHTML = row.ExcessMileageChargedString;
                        document.getElementById("Repre_2_Term").innerHTML = row.Term - 1; 
                        document.getElementById("Repre_2_Term1").innerHTML = '<nobr>' + (row.Term) + ' Months</nobr>';
                        document.getElementById("Repre_2_APR").innerHTML = row.APRString + "% APR";                   
}



