#target indesign

function createInDesignCover() {
    var win = new Window("dialog", "יצירת פריסת כריכה - בליד משתנה");
    win.orientation = "column";
    win.alignChildren = ["right", "top"];

    function addInput(label, defaultValue) {
        var grp = win.add("group");
        grp.add("edittext", undefined, defaultValue).characters = 6;
        grp.add("statictext", undefined, label);
        return grp.children[0];
    }

    var typeGrp = win.add("group");
    var radioSoft = typeGrp.add("radiobutton", undefined, "כריכה רכה (3 דפים)");
    var radioHard = typeGrp.add("radiobutton", undefined, "כריכה קשה עם ביג (5 דפים)");
    radioHard.value = true;

    var inputW = addInput('רוחב עמוד (מ"מ):', "170");
    var inputH = addInput('גובה עמוד (מ"מ):', "240");
    var inputS = addInput('עובי שדרה (מ"מ):', "20");
    var inputC = addInput('רוחב ביג (מ"מ):', "8");
    var inputM = addInput('שוליים / Margins (מ"מ):', "20");
   
    // הגדרת הבליד כמשתנה שניתן לעדכן
    var inputB = addInput('בליד / גלישה חיצונית (מ"מ):', "20");

    // פונקציה לעדכון אוטומטי של הבליד לפי סוג הכריכה
    radioSoft.onClick = function() {
        inputB.text = "5";
    }
    radioHard.onClick = function() {
        inputB.text = "20";
    }

    var btnGroup = win.add("group");
    btnGroup.alignment = "center";
    var btnOK = btnGroup.add("button", undefined, "צור מסמך", {name: "ok"});

    if (win.show() == 1) {
        var w = parseFloat(inputW.text), h = parseFloat(inputH.text), s = parseFloat(inputS.text);
        var c = parseFloat(inputC.text), m = parseFloat(inputM.text), b = parseFloat(inputB.text);
        var isHard = radioHard.value;

        if (isNaN(w) || isNaN(h) || isNaN(s) || isNaN(c) || isNaN(m) || isNaN(b)) {
            alert("שגיאה: נא להזין מספרים תקינים בלבד.");
            return;
        }

        app.scriptPreferences.measurementUnit = MeasurementUnits.MILLIMETERS;
        var mm2pt = 2.834645669;

        var doc = app.documents.add();
        doc.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS;
        doc.viewPreferences.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS;
        doc.viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN;
        doc.documentPreferences.facingPages = false;
        doc.documentPreferences.allowPageShuffle = false;
       
        var isRTL = (doc.documentPreferences.pageBinding == PageBindingOptions.RIGHT_TO_LEFT);
        var spread = doc.spreads[0];
        spread.allowPageShuffle = false;

        var numPages = isHard ? 5 : 3;
        var widths = isHard ? [w, c, s, c, w] : [w, s, w];
        var centerPages = isHard ? [0, 2, 4] : [0, 1, 2];

        while(spread.pages.length > 1) {
            spread.pages[-1].remove();
        }

        var p0 = spread.pages[0];
        p0.marginPreferences.properties = {top: 0, bottom: 0, left: 0, right: 0, columnCount: 1, columnGutter: 0};
        p0.resize(CoordinateSpaces.INNER_COORDINATES, AnchorPoint.CENTER_ANCHOR, ResizeMethods.REPLACING_CURRENT_DIMENSIONS_WITH, [widths[0] * mm2pt, h * mm2pt]);

        for (var i = 1; i < numPages; i++) {
            var p = spread.pages.add();
            p.marginPreferences.properties = {top: 0, bottom: 0, left: 0, right: 0, columnCount: 1, columnGutter: 0};
            var anchor = isRTL ? AnchorPoint.RIGHT_CENTER_ANCHOR : AnchorPoint.LEFT_CENTER_ANCHOR;
            p.resize(CoordinateSpaces.INNER_COORDINATES, anchor, ResizeMethods.REPLACING_CURRENT_DIMENSIONS_WITH, [widths[i] * mm2pt, h * mm2pt]);
        }

        doc.documentPreferences.documentBleedTopOffset = b;
        doc.documentPreferences.documentBleedBottomOffset = b;
        doc.documentPreferences.documentBleedInsideOrLeftOffset = b;
        doc.documentPreferences.documentBleedOutsideOrRightOffset = b;

        var firstPageBounds = spread.pages[0].bounds;
        var midY = (firstPageBounds[0] + firstPageBounds[2]) / 2;
        spread.guides.add({orientation: HorizontalOrVertical.HORIZONTAL, location: midY});

        for (var i = 0; i < spread.pages.length; i++) {
            var page = spread.pages[i];
           
            if (widths[i] >= (m * 2)) {
                page.marginPreferences.properties = {top: m, bottom: m, left: m, right: m};
            } else {
                page.marginPreferences.properties = {top: m, bottom: m, left: 0, right: 0};
            }

            if (isIdxInArray(i, centerPages)) {
                var bounds = page.bounds;
                var midX = (bounds[1] + bounds[3]) / 2;
                spread.guides.add({orientation: HorizontalOrVertical.VERTICAL, location: midX});
            }
        }
    }
}

function isIdxInArray(idx, arr) {
    for (var j = 0; j < arr.length; j++) { if (arr[j] == idx) return true; }
    return false;
}

createInDesignCover();