//test_id_bindingSwitcher by（z-）  ver_b

function layerCond(vis, loc){
	this.vis=vis; //非表示はmoveの邪魔にならないらしいけどいちおう
	this.loc=loc;
	}


var doc=app.activeDocument;
var histObj=doc.undoHistory.length; //エラー時の復元用
var defPB=doc.pasteboardPreferences.minimumSpaceAboveAndBelow; //ペーストボード 上下オフセット値
doc.pasteboardPreferences.minimumSpaceAboveAndBelow=3000; //とりゃえずミリのみ対応


var layAry=[];
//var masAry=[];
for(var i=0; i<doc.layers.length; i++){ //全レイヤーの非表示、ロックを記録して解除
	var layObj=new layerCond(doc.layers[i].visible, doc.layers[i].locked); //////////////テストが済んだらvisibleは割愛したい
	layAry.push(layObj);
	}
doc.layers.everyItem().visible=true; //全部非表示にしたら速いといいなあ（再描画オフにすればいいのだが）
doc.layers.everyItem().locked=false;

doc.spreads.everyItem().allowPageShuffle=false; //スプレッドの移動を不許可（いちおうなんとなく）

/*
for(i=0; i<doc.spreads.length; i++){
	masAry.push([]);
	var masObj=doc.spreads[i].pages.everyItem().masterPageItems;
	for(j=0; j<masObj.length; j++){
		masAry[i].push(masObj[j][0].id);
		}
	}
*/

for(i=0; i<doc.pages.length; i++){ //マスターページアイテムをオーバーライド、適用マスターを[なし]に
	while(doc.pages[i].masterPageItems.length){
		doc.pages[i].masterPageItems[0].override (doc.pages[i]);
		}
	doc.pages[i].appliedMaster=NothingEnum.NOTHING;
	}


if(doc.spreads.length==1){ //スプレッドが複数あれば個別に移動
	doc.pageItems.everyItem().move(undefined, [0, defPB-3000]); 
	}
else{
	for(i=0; i<doc.spreads.length; i++){
		doc.spreads[i].pageItems.everyItem().move(undefined, [0, defPB-3000]);
		}
	doc.masterSpreads.everyItem().pageItems.everyItem().move(undefined, [0, defPB-3000]);
	}

//各ページにpageItemが残っていないか確認
if(doc.pages.everyItem().pageItems.length || doc.masterSpreads.everyItem().pages.everyItem().pageItems.length){
	alert("Error : \nドキュメント上に、ものすごく大きなオブジェクトがあるため続行不能\n　このあとドキュメントを実行前まで復元して終了します");
	while(doc.undoHistory.length>histObj){
		doc.undo();
		}
	exit();
	}

//閉じ方向を変更
doc.documentPreferences.pageBinding=(doc.documentPreferences.pageBinding==PageBindingOptions.LEFT_TO_RIGHT)? PageBindingOptions.RIGHT_TO_LEFT : PageBindingOptions.LEFT_TO_RIGHT; 

//移動ぶん戻す
if(doc.spreads.length==1){
	doc.pageItems.everyItem().move(undefined, [0, 3000-defPB]); 
	}
else{
	for(i=0; i<doc.spreads.length; i++){
		doc.spreads[i].pageItems.everyItem().move(undefined, [0, 3000-defPB]);
		}
	for(var i=0; i<doc.masterSpreads.length; i++){
		doc.masterSpreads[i].pageItems.everyItem().move(undefined, [0, 3000-defPB]);
		}
	}

doc.pasteboardPreferences.minimumSpaceAboveAndBelow=defPB; //ペーストボード 上下オフセット値の復元

/*
for(i=0; i<doc.spreads.length; i++){
	masObj=masAry[i];
	var newMas=doc.spreads[i].pages.everyItem().masterPageItems;
	for(j=newMas.length-1; j>=0; j--){
		for(m=newMas[j].length-1; m>=0; m--){
			var flag=false;
			for(k=0; k<masObj.length; k++){
				if(newMas[j][m].id==masObj[k]){
					flag=true;
					}
				}
			if(flag==false){
				try{
					var remObj=newMas[j][m].override(doc.spreads[i].pages[0]);
					}
				catch(e){
					var remObj=newMas[j][m].override(doc.spreads[i].pages[1]);
					}
				remObj.remove();
				}
			}
		}
	}
*/

for(var i=0; i<doc.layers.length; i++){ //レイヤーのロックを復元
	doc.layers[i].locked=layAry[i].loc;
	doc.layers[i].visible=layAry[i].vis;
	}


exit();

