/*
    author: @fabiantheblind
    This script takes a peek into the layers
    It makes use of the printable option to make the layer invisible
    it is NOT the visible option ( the tiny eye on the lyer panel)
    have a deeper look into layers and their props here: http://jongware.mit.edu/idcs6js/pc_Layer.html
    */

main();
function main (){

var redrawState = app.scriptPreferences.enableRedraw; // save the initial state 
app.scriptPreferences.enableRedraw = true; // enable redraw // seems not to wirk well

	/*
	Lets create a nice document with lots of presets.
	To do that we define some variables for better handling
	*/

var pw = 200; // the PageHeight
var ph = 200; // the PageWidth
var gutter = 23; // the Gutter from the Margins to the page border
var columns_num = 3; // the columns in the layot
var columns_gutter = 5;

/* Create a doc with some properties */
var doc = app.documents.add({
	facingPages : false,
	documentPreferences:{
		pageWidth 	: pw,
		pageHeight 	: ph
		},
	viewPreferences:{
		horizontalMeasurementUnits 	: MeasurementUnits.MILLIMETERS,
		verticalMeasurementUnits 	: MeasurementUnits.MILLIMETERS
		}
	});
/* set some properties on the pages */
var page = doc.pages[0];
page.properties = {
		marginPreferences:{
		top 		 	: gutter,
		left 		 	: gutter,
		right 		 	: gutter,
		bottom 		 	: gutter,
		columnGutter 	: columns_gutter,
		columnCount  	: columns_num
		}
	};

var first_layer = doc.layers.item(0); // get the first layer
first_layer.name = "Printable Layer"; // rename it 

/*
Add a textframe wit hsome properties
The textframe will be on the first layer.
Whenever you multiple layers the textfrmae will be created on the last used / active Layer
Set or get the active Layer via:
app.documents.item(0).activeLayer = app.documents.item(0).layers.item(X);
*/
var first_textframe = page.textFrames.add({
				geometricBounds:[gutter,gutter,ph - gutter, pw - gutter],
				contents: "Now You see me!",
				textFramePreferences:{
            		verticalJustification: VerticalJustification.CENTER_ALIGN
            		}
				});


var firstPar = first_textframe.paragraphs[0]; // get the first paragraph
// set some properties
firstPar.properties = {
                pointSize: 23,
                justification : Justification.CENTER_ALIGN,
                hyphenation : false
                };


/*
Lets get to the gist.
you can duplicate layers like everything else.
When you do that all the objects from the duplicated layer are also duplicated

*/
var second_layer = first_layer.duplicate(false); // make a copy of the first layer

second_layer.name = "Non Printable Layer"; // give it a name

second_layer.printable = false; // now this layer wont show in the preview
second_layer.textFrames.item(0).remove();// a layer has also a collection of textFrames lets remove the duplicated tf
alert("I will move the textframe to the non printable layer in 2 seconds"); // Talk a bit
// set to preview  mode
// all content of the non printable layer wont show
app.activeWindow.screenMode = ScreenModeOptions.PREVIEW_TO_PAGE; 
/*
all the following actions cant be seen by the user because they happen on a
non displayed layer via the printable option NOT the visible option
*/
first_textframe.itemLayer = second_layer; // move the textframe
first_textframe.contents = "Now You don't"; // add some text just for fun
first_textframe.itemLayer = first_layer; // now move the tf back to the printable layer
first_textframe.contents = "Now You see me!"; // change the content

app.scriptPreferences.enableRedraw = redrawState; // !Achtung! reset this to the inital state!
};