//****************************设备管理和机器管理共用*****************************************/
function getDevicePairingLogsByDevice() {
    $('#div_attlarge').empty();
    if (deviceid) {
        var cid = $('#sel_contractor').val();
        devicerequest('GetDevicePairingLogsByDevice', JSON.stringify([cid, deviceid, ""]), function (data) {
            if (data && typeof data != "string") {
                showDevicePairingLogs(data, 0);
            }
        });
    }
}

function getDevicePairingLogsByAsset() {
    $('#div_attlarge').empty();
    if (machineid) {
        devicerequest('GetDevicePairingLogsByAsset', JSON.stringify([contractorid, machineid, ""]), function (data) {
            if (data && typeof data != "string") {
                showDevicePairingLogs(data, 1);
            }
        });
    }
}

function OnExpendParingInfo(e) {
    var t = $(e);
    var tid = t.attr("target");
    if (t.hasClass("iconchevrondown")) {
        t.removeClass("iconchevrondown").addClass("iconchevronright");
        $("#" + tid).hide();
    }
    else {
        t.removeClass("iconchevronright").addClass("iconchevrondown");
        $("#" + tid).show();
        if (!t.data("loaded")) {
            getPairingAttachments(t);
        }
    }
}

function showDevicePairingLogs(logs, type) {//0.device,1.asset
    $('#div_attlarge').empty();
    if (logs && logs.length > 0) {
        for (var i = 0; i < logs.length; i++) {
            var log = logs[i];
            var trid = "paringinfo_tr" + log.Id;
            var tab = $('<table  class="main_table maintenance"></table>');
            $('#div_attlarge').append(tab);
            var tr = $('<tr style="line-height: 35px;"></tr>');
            tab.append(tr);
            var td = $('<td class="subtitle"></td>');
            tr.append(td);
            var spanexpend = $('<span class="sbutton iconchevronright woattafoldicon" target="' + trid + '" onclick="OnExpendParingInfo(this)" style="margin-left: 0; padding-right: 5px;"></span>').data('log', log).data('type', type);
            td.append(spanexpend);
            var spantitle = $('<span></span>').text(("Paired to {0} on {1} by {2}").replace('{0}', type === 0 ? log.AssetName : (log.SourceName + " " + log.SerialNumber)).replace('{1}', log.InstallTime_LocalStr).replace('{2}', log.InstallerName));
            td.append(spantitle);

            tr = $('<tr id="' + trid + '" class="tr_intervals woattafoldtr"></tr>').hide();
            tab.append(tr);
            td = $('<td id="paringinfo_td' + log.Id + '"></td>');
            tr.append(td);
        }
    }

}

function getPairingAttachments(t) {
    var cid = $('#sel_contractor').val();
    var pairinglog = $(t).data('log');
    var type = $(t).data('type');
    devicerequest('GetPairingAttachments', JSON.stringify([cid, pairinglog.Id]), function (data) {
        if (data && typeof data != "string") {
            $(t).data('loaded', true);
            showPairingAttachments(pairinglog, data, type);
        }
    });
}

function arrayBufferToBase64(buffer) {
    var binary = '';
    var bytes = new Uint8Array(buffer);
    var len = bytes.byteLength;
    for (var i = 0; i < len; i++) {
        binary += String.fromCharCode(bytes[i]);
    }
    return window.btoa(binary);
}

function getPairingSignature(pairinglogid, logtab) {
    devicerequest('GetPairingSignature', JSON.stringify(pairinglogid), function (data) {
        if (data && data != null && data.length > 0) {
            var logtr = $('<tr></tr>');
            logtab.append(logtr);
            var logtd = $('<td class="label"></td>').text(GetTextByKey('P_MD_SIGNATURE_COLON', 'Signature: '));
            logtr.append(logtd);
            logtd = $('<td colspan="3"></td>');
            logtr.append(logtd);

            var jpeg = data;
            if (typeof (data) !== "string") {
                jpeg = arrayBufferToBase64(data);
            }
            var imgsig = $('<img style="height: 110px;" />').attr('src', 'data:image/png;base64,' + jpeg);
            $(logtd).append(imgsig);
        }
    });
}

function getPairingAttachmentCategory(key) {
    switch (key) {
        case "Odometer":
            return GetTextByKey("P_MD_ODOMETER", "Odometer");
        case "Engine Hours":
            return GetTextByKey("P_MD_ENGINEHOURS", "Engine Hours");
        case "Mounting Location":
            return GetTextByKey("P_MD_MOUNTINGLOCATION", "Mounting Location");
        case "Power Connection":
            return GetTextByKey("P_MD_POWERCONNECTION", "Power Connection");
        case "Ground Connection":
            return GetTextByKey("P_MD_GROUNDCONNECTION", "Ground Connection");
        case "Ignition Connection":
            return GetTextByKey("P_MD_IGNITIONCONNECTION", "Ignition Connection");
        case "Asset Number":
            return GetTextByKey("P_MD_ASSETNUMBER", "Asset Number");
        case "Left Front of Asset":
            return GetTextByKey("P_MD_LEFTFRONTOFASSET", "Left Front of Asset");
        case "Right Rear of Asset":
            return GetTextByKey("P_MD_RIGHTFRONTOFASSET", "Right Rear of Asset");
        case "VIN":
            return GetTextByKey("P_MD_VIN", "VIN");
        case "ESN of GPS Device":
            return GetTextByKey("P_MD_ESNOFGPSDEVICE", "ESN of GPS Device");
        default:
            break;
    }
    return key;
}

var imgTypes = [".jfif", ".jpg", ".jpeg", ".bmp", ".png", ".tiff", ".gif"];
var printTypes = ['.pdf', ".jfif", ".jpg", ".jpeg", ".bmp", ".png", ".tiff", ".gif"];//types to be loaded to print
function showPairingAttachments(pairinglog, attas, type) {//0.device,1.asset
    var ptd = $('#paringinfo_td' + pairinglog.Id);
    ptd.empty();
    var log = pairinglog;
    //Mountion Location,EngineHours,Odometer
    var divinfo = $('<div class="edit-content"></div>');
    var logtab = $('<table class="tab_deviceparing"></table>');
    divinfo.append(logtab);
    var logtr = $('<tr></tr>');
    logtab.append(logtr);
    var logtd = $('<td class="label" style="width:130px;"></td>').text(GetTextByKey('P_MD_DATETIME_COLON', 'Date Time:'));
    logtr.append(logtd);
    logtd = $('<td style="width:300px;"></td>').text(log.InstallTime_LocalStr);
    logtr.append(logtd);
    logtd = $('<td class="label" style="width:130px;"></td>').text(GetTextByKey('P_MD_INSTALLER_COLON', 'Installer:'));
    logtr.append(logtd);
    logtd = $('<td></td>').text(log.InstallerName);
    logtr.append(logtd);

    logtr = $('<tr></tr>');
    logtab.append(logtr);
    if (type == 0) {
        logtd = $('<td class="label" style="width:130px;"></td>').text(GetTextByKey('P_MD_VIN_COLON', 'VIN:'));
        logtr.append(logtd);
        logtd = $('<td></td>').text(log.AssetVIN);
        logtr.append(logtd);
        logtd = $('<td class="label" style="width:130px;"></td>').text(GetTextByKey('P_MD_ASSETNAME_COLON', 'Asset Name:'));
        logtr.append(logtd);
        logtd = $('<td></td>').text(log.AssetName);
        logtr.append(logtd);
    }
    else {
        logtd = $('<td class="label" style="width:130px;"></td>').text(GetTextByKey('P_MA_DEVICESN_COLON', 'Device SN:'));
        logtr.append(logtd);
        logtd = $('<td></td>').text(log.SerialNumber);
        logtr.append(logtd);
        logtd = $('<td class="label" style="width:130px;"></td>').text(GetTextByKey('P_MD_SOURCE_COLON', 'Source:'));
        logtr.append(logtd);
        logtd = $('<td></td>').text(log.SourceName);
        logtr.append(logtd);
    }

    logtr = $('<tr></tr>');
    logtab.append(logtr);
    logtd = $('<td class="label"></td>').text(GetTextByKey('P_MD_ENGINEHOURS_COLON', 'Engine Hours: '));
    logtr.append(logtd);
    logtd = $('<td></td>').text(log.EngineHours < 0 ? '' : log.EngineHours.toLocaleString());
    logtr.append(logtd);
    logtd = $('<td class="label"></td>').text(GetTextByKey('P_MD_ODOMETER_COLON', 'Odometer: '));
    logtr.append(logtd);
    logtd = $('<td></td>').text(log.Odometer < 0 ? '' : (log.Odometer.toLocaleString() + " " + log.OdometerUnit));
    logtr.append(logtd);

    logtr = $('<tr></tr>');
    logtab.append(logtr);
    logtd = $('<td class="label"></td>').text(GetTextByKey('P_MD_MOUNTINGLOCATION_COLON', 'Mounting Location:'));
    logtr.append(logtd);
    logtd = $('<td colspan="3"></td>').text(log.MountionLocation);
    logtr.append(logtd);

    logtr = $('<tr></tr>');
    logtab.append(logtr);
    logtd = $('<td class="label"></td>').text(GetTextByKey('P_MD_NOTES_COLON', 'Notes: '));
    logtr.append(logtd);
    logtd = $('<td colspan="3"></td>').text(log.Notes);
    logtr.append(logtd);

    getPairingSignature(log.Id, logtab);

    ptd.append(divinfo);
    if (attas && attas.length > 0) {
        for (var i = 0; i < attas.length; i++) {
            var att = attas[i];
            var category_str = att.Category.replace(/\s+/g, '').toLowerCase();
            var div_atts = $('#divatt_' + pairinglog.Id + "_" + category_str);
            if (div_atts.length == 0) {
                div_atts = $('<div id="divatt_' + pairinglog.Id + "_" + category_str + '" style="min-height: 80px; overflow: auto; padding-left: 20px;"></div>');
                ptd.append(div_atts);
                var div1 = $('<div style=" margin-top: 15px;margin-bottom:5px;"></div>');
                var ext_span = $('<span style="font-weight:500;font-size:16px;"></span>').text(getPairingAttachmentCategory(att.Category));
                div1.append(ext_span);
                div_atts.append(div1);
            }
        }

        for (var i = 0; i < attas.length; i++) {
            var att = attas[i];
            var category_str = att.Category.replace(/\s+/g, '').toLowerCase();
            var div_atts = $('#divatt_' + pairinglog.Id + "_" + category_str);
            var pdiv = $('<div class="divattp"></div>');
            var div = createAttaDiv(att, true);
            var div1 = $('<div style=" margin-top: 15px;"></div>');

            var sdownload = $('<span class="attadownload"></span>').attr('title', GetTextByKey("P_WO_DOWNLOAD", 'Download')).click(att, function (e) {
                openDownloadFrame(e.data.FullSizeUrl + "&d=1");
            });
            div.append(sdownload);
            pdiv.append(div);

            var caption = att.FileName;
            var div3 = $('<div style="text-align:center;clear:both;"></div>');
            var iptcaption = $('<input type="text" style="width: 196px;height:24px;border:1px solid #fff;" class="inp_name" maxlength="200"/>').attr('data-ori', caption).val(caption);
            iptcaption.data('attdata', att);
            div3.append(iptcaption);
            pdiv.append(div3);
            div_atts.append(pdiv);
        }
    }
}

function createAttaDiv(att) {
    var div = $('<div class="divatt"></div>').attr('title', att.FileName).attr('title', att.Notes === "" ? att.FileName : att.Notes)
    if (!att.FileType || att.FileType == "") att.FileType = ".jpg";
    if (imgTypes.indexOf(att.FileType.toLowerCase()) >= 0) {
        var pic = $('<img class="picture"></img>').attr('src', att.ThumbnailUrl);
        pic.click(att, function (e) {
            window.open(e.data.FullSizeUrl, "_blank")
        });
        div.append(pic);
    }
    else {
        var sdown = $('<img class="picture" />').click(att, function (e) {
            window.open(e.data.FullSizeUrl);
        });
        setAttachemntIcon(att.FileType, sdown);
        div.append(sdown);
    }
    return div
}

function openPrintFrame(attatype, id) {
    var frame = $("<iframe style='display:none;'></iframe>");
    $(document.body).after(frame);
    //frame.attr("src", url);
    frame.attr("src", _network.root + "Print.aspx?pt=3&at=" + attatype + "&id=" + id);

    frame.on('load', function () {
        setTimeout(function () {
            frame.contents().find("body").css("text-align", "center");
            //frame.contents().find("img").css("max-height", window.screen.availHeight).css("max-width", window.screen.availWidth);
            frame.contents().find("img").css("max-height", "98%").css("max-width", "98%");
            frame[0].contentWindow.print();
        });
        setTimeout(function () {
            frame.remove();
        }, 60000);
    });
}

function openDownloadFrame(url) {
    var frame = $("<iframe style='display:none;'></iframe>");
    $(document.body).after(frame);
    frame.attr("src", url);

    var timer = setInterval(function () {
        if (frame[0].contentDocument && (frame[0].contentDocument.readyState == "complete" || frame[0].contentDocument.readyState == 4)) {
            frame.remove();
            clearInterval(timer);
        }
    }, 5000);
}