﻿
function GetServicesUrl() { return BuildJSUrl() + "ajax/"; }

function GetLifeStyleContenders(parameterNames, parameterValues, postcode, distance, onGetContendersSuceeded, onGetContendersFailed) {
    var ajaxurl = GetServicesUrl() + "getlifestylecount";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + EncodeList(parameterNames) + "&p2=" + EncodeList(parameterValues)
        + "&p3=" + postcode + "&p4=" + distance,
        dataType: "json",
        success: function(data) { onGetContendersSuceeded(data); },
        error: onGetContendersFailed,
        beforeSend: AppendAjaxHeaders
    });
}
function GetAutoCompleteListEx(prefixText, count, contextKey, filterValue, onSuccessFunc, onErrorFunc) {
    var ajaxurl = GetServicesUrl() + "getautocompletelistex";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + prefixText + "&p2=" + count + "&p3=" + contextKey + "&p4=" + filterValue,
        dataType: "json",
        success: function(data) { onSuccessFunc(data); },
        error: onErrorFunc,
        beforeSend: AppendAjaxHeaders
    });
}
function SaveUserFeedback(easeOfUse, design, range, dealerInfo, recommend, improvements, sender, senderEmail, postcode, inform, onSaveUserFeedbackSucceeded, onSaveUserFeedbackFailed) {
    var ajaxurl = GetServicesUrl() + "saveuserfeedback";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + easeOfUse + "&p2=" + design + "&p3=" + range + "&p4=" + dealerInfo + "&p5=" + recommend + "&p6=" + improvements + "&p7=" + sender + "&p8=" + senderEmail + "&p9=" + postcode + "&p10=" + inform,
        dataType: "json",
        success: function(data) { onSaveUserFeedbackSucceeded(data); },
        error: onSaveUserFeedbackFailed,
        beforeSend: AppendAjaxHeaders
    });
}
function AjaxMultiDealerLeadSend(dealerids,title,fname,sname,email,telephone,comments,currenturl,ctasrc, cbSucceed, cbFail) {
    var ajaxurl = GetServicesUrl() + "senddealeremail";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + dealerids +
        "&p2=" + CleanUrlForPost(title) +
        "&p3=" + CleanUrlForPost(fname) +
        "&p4=" + CleanUrlForPost(sname) +
        "&p5=" + CleanUrlForPost(email) +
        "&p6=" + CleanUrlForPost(telephone) +
        "&p7=" + CleanUrlForPost(comments) +
        "&p8=" + CleanUrlForPost(currenturl) +
        "&p9=" + CleanUrlForPost(ctasrc),
        dataType: "json",
        success: function(data) { cbSucceed(data); },
        error: cbFail,
        beforeSend: AppendAjaxHeaders
    });
}

function AjaxMultiDealerLeadDlg(postcode,qs, cbSucceed, cbFail) {
    var ajaxurl = GetServicesUrl() + "getmultileaddlg";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + postcode + "&p2=" + CleanUrlForPost(qs),
        dataType: "json",
        success: function(data) { cbSucceed(data); },
        error: cbFail,
        beforeSend: AppendAjaxHeaders
    });
}
    

function AjaxDeleteMyVehicle(id, cbSucceed, cbFail) {
    var ajaxurl = GetServicesUrl() + "deletemyvehicle";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + id,
        dataType: "json",
        success: function(data) { cbSucceed(data); },
        error: cbFail,
        beforeSend: AppendAjaxHeaders
    });
}
function AjaxDeleteMySearch(id, cbSucceed, cbFail) {
    var ajaxurl = GetServicesUrl() + "deletemysearch";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + id,
        dataType: "json",
        success: function(data) { cbSucceed(data); },
        error: cbFail,
        beforeSend: AppendAjaxHeaders
    });
}
function AjaxDeleteMyCompare(id, cbSucceed, cbFail) {
    var ajaxurl = GetServicesUrl() + "deletemycompare";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + id,
        dataType: "json",
        success: function(data) { cbSucceed(data); },
        error: cbFail,
        beforeSend: AppendAjaxHeaders
    });
}

function AjaxDeleteMyAllVehicles( cbSucceed, cbFail) {
    var ajaxurl = GetServicesUrl() + "deleteallmyvehicles";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "",
        dataType: "json",
        success: function(data) { cbSucceed(data); },
        error: cbFail,
        beforeSend: AppendAjaxHeaders
    });
}


function GetApprovedStatusRolloverContent(ManufacturerID, onGetApprovedSucceeded, onGetApprovedFailed) {
    var ajaxurl = GetServicesUrl() + "getapprovedstatusrollovercontent";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + ManufacturerID,
        dataType: "json",
        success: function(data) { onGetApprovedSucceeded(data); },
        error: onGetApprovedFailed,
        beforeSend: AppendAjaxHeaders
    });
}
function AjaxSaveComparison(comparisonDesc, car1Id, car2Id, car3Id, car4Id, cbsuccess, cbfail) {
    var ajaxurl = GetServicesUrl() + "savemycompare";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + comparisonDesc + "&p2=" + car1Id + "&p3=" + car2Id + "&p4=" + car3Id + "&p5=" + car4Id,
        dataType: "json",
        success: function(data) { cbsuccess(data, comparisonType); },
        error: cbfail,
        beforeSend: AppendAjaxHeaders
    });
}



function GetComparisonDetails(car1, car2, car3, car4, onGetComparisonDetailsSuccess) {
    var ajaxurl = GetServicesUrl() + "getcomparisondetails?p1=" + car1 + "&p2=" + car2 + "&p3=" + car3 + "&p4=" + car4;
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + car1 + "&p2=" + car2 + "&p3=" + car3 + "&p4=" + car4,
        dataType: "json",
        success: function(data) { onGetComparisonDetailsSuccess(data); },
        beforeSend: AppendAjaxHeaders
    });
}

function GetQuickSearchParameters(parameterDealerName, parameterDealerValue, onGetQuickSearchParametersSuceeded, onGetQuickSearchParametersFailed) {
    var ajaxurl = GetServicesUrl() + "getquicksearchparameters";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + parameterDealerName + "&p2=" + parameterDealerValue,
        dataType: "json",
        success: function(data) { onGetQuickSearchParametersSuceeded(data); },
        error: onGetQuickSearchParametersFailed,
        beforeSend: AppendAjaxHeaders
    });
}

function AjaxRefreshSecCode(onSuccess, onFailure) {
    var ajaxurl = GetServicesUrl() + "refreshseccode";
    $.ajax({
        url: ajaxurl,
        type: "POST",
        data: '',
        dataType: "json",
        success: function(data) { onSuccess(data); },
        error: onFailure,
        beforeSend: AppendAjaxHeaders
    });
}

function CleanUrlForPost(url) {
    if (url == "" || url == null) return "";
    url = url.replace(/\&/g, "|");
    url = url.replace(/=/g, "|>");
    return url
}


function SaveMyVehicle(vid, returnURL, cbsuccess, cbfail) {
    var ajaxurl = GetServicesUrl() + "savemyvehicle?vid=" + vid;
    returnURL = CleanUrlForPost(returnURL);
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + vid + "&p2=" + returnURL,
        dataType: "json",
        success: function(data) { cbsuccess(data); },
        error: cbfail,
        beforeSend: AppendAjaxHeaders
    });
}

function AjaxProcessFriendCarMessage(subject, fromEmailAddress, toEmailAddress, fromName, content, vehicleId, onSendEmailSucceeded, onSendEmailFailed) {
    var ajaxurl = GetServicesUrl() + "sendvehiclemessage";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + subject + "&p2=" + fromEmailAddress + "&p3=" + toEmailAddress + "&p4=" + fromName + "&p5=" + content + "&p6=" + vehicleId,
        dataType: "json",
        success: function(data) { onSendEmailSucceeded(data); },
        error: onSendEmailFailed,
        beforeSend: AppendAjaxHeaders
    });
}



function AjaxProcessFriendMessage(subject, fromEmailAddress, toEmailAddress, fromName, content, onSendEmailSucceeded, onSendEmailFailed) {
    var ajaxurl = GetServicesUrl() + "sendmessage";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + subject + "&p2=" + fromEmailAddress + "&p3=" + toEmailAddress + "&p4=" + fromName + "&p5=" + content,
        dataType: "json",
        success: function(data) { onSendEmailSucceeded(data); },
        error: onSendEmailFailed,
        beforeSend: AppendAjaxHeaders
    });
}
function IsLoggedInRedirect(srcUrl, savetype, data, CB_Success, CB_Fail) {
    var ajaxurl = GetServicesUrl() + "isloggedinredirect";
    srcUrl = CleanUrlForPost(srcUrl);
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + srcUrl + "&p2=" + savetype + "&p3=" + data,
        dataType: "json",
        success: function(data) { CB_Success(data); },
        error: CB_Fail,
        beforeSend: AppendAjaxHeaders
    });
}


function Logout(onDoUserLogoutComplete) {
    var ajaxurl = GetServicesUrl() + "logout";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "",
        dataType: "json",
        success: function(data) { onDoUserLogoutComplete(); },
        beforeSend: AppendAjaxHeaders
    });
}

function AjaxSaveSearch(description, searchUrl, CB_Success, CB_Fail) {
    var ajaxurl = GetServicesUrl() + "savemysearch";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + description + "&p2=" + CleanUrlForPost(searchUrl),
        dataType: "json",
        success: CB_Success,
        error: CB_Fail,
        beforeSend: AppendAjaxHeaders
    });
}


function RemoveComparison(comparisonId, comparisonTypeDesc, onRemoveComparisonSuccess, onRemoveComparisonFailed) {
    var ajaxurl = GetServicesUrl() + "removecomparison";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + comparisonId,
        dataType: "json",
        success: function(data) { onRemoveComparisonSuccess(comparisonId, comparisonTypeDesc); },
        error: onRemoveComparisonFailed,
        beforeSend: AppendAjaxHeaders
    });
}

function SendVehicleEnquiry(vehicleId, vehicleTitle, title, firstName, surname, email, phone, enquiry, ctasrc, onEnquireSuccess) {
    if (ctasrc != "") ctasrc = "&p8=" + ctasrc;
    var ajaxurl = GetServicesUrl() + "vehicleenquiry";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + vehicleId + "&p2=" + title + "&p3=" + firstName + "&p4=" + surname +
         "&p5=" + email + "&p6=" + phone + "&p7=" + enquiry + ctasrc,
        dataType: "json",
        success: function(data) { onEnquireSuccess(data); },
        beforeSend: AppendAjaxHeaders
    });
}


function SendDealerEmail(dealerID, title, firstName, surname, email, phone, enquiry, ctasrc, onEmailSuccess) {
    if (ctasrc != "") ctasrc = "&p9=" + ctasrc;
    var ajaxurl = GetServicesUrl() + "senddealeremail";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + dealerID + "&p2=" + title + "&p3=" + firstName + "&p4=" + surname + "&p5=" + email + "&p6=" + phone + "&p7=" + enquiry + ctasrc,
        dataType: "json",
        success: function(data) { onEmailSuccess(data); },
        error: displayGenericError,
        beforeSend: AppendAjaxHeaders
    });
}

function CallMeBackEnquiry(vID, title, firstName, surname, phone, enquiry, ctasrc, onEmailSuccess) {
    if (ctasrc != "") ctasrc = "&p7=" + ctasrc;
    var ajaxurl = GetServicesUrl() + "callmeback";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + vID + "&p2=" + title + "&p3=" + firstName + "&p4=" + surname + "&p5=" + phone + "&p6=" + enquiry + ctasrc,
        dataType: "json",
        success: function(data) { onEmailSuccess(data); },
        error: displayGenericError,
        beforeSend: AppendAjaxHeaders
    });
}
function ArrangeTestDrive(vehicleId, title, firstName, surname, emailFrom, telephone, selectedDate, preferredTime, ctasrc, onSuccess, onFail) {
    if (ctasrc != "") ctasrc = "&p9=" + ctasrc;
    var ajaxurl = GetServicesUrl() + "arrangetestdrive";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + vehicleId + "&p2=" + title + "&p3=" + firstName + "&p4=" + surname + "&p5=" + emailFrom + "&p6=" + telephone + "&p7=" + selectedDate + "&p8=" + preferredTime + ctasrc,
        dataType: "json",
        success: function(data) { onSuccess(data); },
        error: onFail,
        beforeSend: AppendAjaxHeaders
    });
}
function VisitDealerHomePage(dealerID, onFinish) {
    var ajaxurl = GetServicesUrl() + "dealerhomepage";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + dealerID,
        dataType: "json",
        success: onFinish,
        error: onFinish,
        beforeSend: AppendAjaxHeaders
    });
}


function GetParkedCarsFromCookie(currentvid, cookieText, onSuccess, onError) {
    var ajaxurl = GetServicesUrl() + "getparkedcarsfromcookie";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + cookieText + "&p2=" + currentvid,
        dataType: "json",
        success: onSuccess,
        error: onError,
        beforeSend: AppendAjaxHeaders
    });
}


function GetManagedParkedCarsFromCookie(currentvid, cookieText, onSuccess, onError) {
    var ajaxurl = GetServicesUrl() + "getmanagedparkedcarsfromcookie";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + cookieText + "&p2=" + currentvid,
        dataType: "json",
        success: onSuccess,
        error: onError,
        beforeSend: AppendAjaxHeaders
    });
}


function SubmitBdayComp(firstname,surname,jobtitle,dealer,make,email,tel, onsucess, onfail) {
    var ajaxurl = GetServicesUrl() + "submitbdaycomp";
    $.ajax({ url: ajaxurl,
        type: "POST",
        data: "p1=" + firstname + "&p2=" + surname + "&p3=" + jobtitle + "&p4=" + dealer + "&p5=" + make + "&p6=" + email + "&p7=" + tel,
        dataType: "json",
        success: function(data) { onsucess(data); },
        error: onfail,
        beforeSend: AppendAjaxHeaders
    });
}

function EncodeList(list) {
    var url = list.join(",");
    url = encodeURI(url);
    url = url.replace(/\,/g, "%2C");
    return url;
}
function AppendAjaxHeaders(xhr) {
    xhr.setRequestHeader("Accept", "*/*");
    xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
}

