////////////////////////////////////////////////////////////
//
//ファイル名:   output.js
//機能		:	出力管理
//依存		:	main.js
//バージョン:　 2.0.0.1
//更新日時	:　 2006.08.01
//更新者	:	kawame
//
//////////////////////////////////////////////////////////////


function OutputManager(gis)
{
	var gisMain			= gis;
	
	// 印刷プレビュー
	this.printPreview = function()
	{
	}
	
	// 印刷
	this.print = function()
	{
	}
	
	// クリップボードコピー
	this.copy = function()
	{
	}
}

var win = null;
var print_map_title = "";//地図タイトル
var print_width = null;//デフォルトサイズ（幅）
var print_height = null;//デフォルトサイズ（高さ）
var pUrl="";//地図画像URL
var print_mode = 0;//印刷タイプ 【0:プリンタ 1:PDF】

var printList = null;
var pdfList = null;
var pdf_id = null;
var nowDate = null;
var date_format = null;

function getPrintList()
{
	win = window.opener?window.opener:this;
	this.printList = win.printArray;
	this.date_format = win.printDateFormat?win.printDateFormat:null;
}

function getPdfList()
{
	win = window.opener?window.opener:this;
	this.pdfList = win.pdfArray;
}



/* 印刷用紙設定画面作成 */
function setSizeTable()
{
	win = window.opener?window.opener:this;
	//win = setWindow();

	getPrintList();
	
	var node = document.getElementById("print_size_container");
	if(node)
	{
		var path = win.style_path;
		var tbl = "<table><tr>";
			
		for (var i = 0;i<printList.length;i++)
		{
			var td = "<td class='print_size'>";
			var arr = printList[i];
			td+="<img src="+path+"/images/control/print/"+arr.src+" alt='"+arr.alt+"'";
			td+="  onclick='radioClick(";
			td+='"'+arr.id+'")';
			td+="'>";
			td+="<input id='"+arr.id+"' type='radio' name='paperSize'" ;
			td+=" onclick='setPrintSize("+arr.w+","+arr.h+")'";
			
			if(arr.def == 1)
			{
				td += "checked";
				print_width =arr.w;
				print_height = arr.h;
			}
			
			td += ">";
			
			
			td += "<label for='"+arr.id+"'>"+arr.alt+"</label>";
			
			td +="</td>";
			
			tbl += td ;
		}
		
		tbl +="</tr></table>";
		node.innerHTML = tbl;
	}
	else
	{
		document.body.innerHTML = "error!";
	}
}

function checkPdfUse()
{
	win = window.opener?window.opener:this;
	
	if(win.usePdf==0)
	{
		document.getElementById("nopdf_1").style.display = "none";
		document.getElementById("nopdf_2").style.display = "none";
	}
	else if(win.usePdf==1)
	{
		document.getElementById("print_type_pdf").checked= true;
		setPrintType(1)
	}
}

/* PDF印刷用紙設定画面作成 */
function setPdfSizeTable()
{
	win = window.opener?window.opener:this;

	getPdfList();
	
	var node = document.getElementById("pdf_size_container");
	if(node)
	{
		var path = win.style_path;
		
		var tbl = "<table><tr>";
			
		for (var i = 0;i<pdfList.length;i++)
		{
			var td = "<td class='print_size'>";
			var arr = pdfList[i];
			td+="<img src="+path+"/images/control/print/"+arr.src+" alt='"+arr.alt+"'>";
			td+="<input id='"+arr.id+"' type='radio' name='pdfSize'" ;
			td+="onclick='setPdfSize("+arr.sendid+")'";
			
			if(arr.def == 1)
			{
				td += "checked";
				pdf_id = arr.sendid;
				win.pdf_id = arr.sendid;
			}
			
			td += ">";
		
			td += "<label for='"+arr.id+"'>"+arr.alt+"</label>";
			
			td +="</td>";
			
			tbl += td ;
		}
		tbl +="</tr></table>";
		
		node.innerHTML = tbl;
	}
	else
	{
		document.body.innerHTML = "error!";
	}
}



//印刷ボタンクリック時の処理
function initPrint()
{
	//レイヤツリーから現在表示している地図のカテゴリを取得

	var nodes = document.getElementById(Lvl0DDL).options;
	if(nodes)
	{
		var num = nodes.length;
		for (var i=0;i<num;i++)
		{
			if(nodes[i].selected)
			{
				print_mapTitle = nodes[i].text;
				break;
			}
		}
	}
	popup('reqPrintMap');
}

//用紙サイズ設定

function setPrintSize(w,h)
{
	print_width = w;
	print_height = h;
}


function setPdfSize(id)
{
	win = window.opener?window.opener:this;
	pdf_id = id;
	win.pdf_id = id;
}

//印刷タイプ設定

function setPrintType(value)
{
	print_mode = value;
	var printnode = document.getElementById("print_size_container");
	var pdfnode = document.getElementById("pdf_size_container");
	
	if(value==0 )
	{
		if(printnode)
		{
			printnode.style.display= "block";
		}
		if(pdfnode)
		{
			pdfnode.style.display = "none";
		}
	}
	else if(value = 1)
	{
		if(printnode)
		{
			printnode.style.display = "none";
		}
		if(pdfnode)
		{
			pdfnode.style.display = "block";
		}
	}
}

//印刷用画像の設定

function setPrintImage()
{
	win = window.opener?window.opener:this;
	setPrintView(print_width,print_height);
	
	//処理中画面へ遷移
	//document.forms[0].action = "SubWin/Processing.aspx?mode=print";
	document.forms[0].action ="SubWin/PrintPreview.aspx?"+win.print_url;
	document.forms[0].submit();
}

function setProcessingPDF()
{
	win = window.opener?window.opener:this;
	var lv1ID = getLv1IdForPrint();
}

function setPrintImagePDF()
{
	win = window.opener?window.opener:this;
	
	getLv1IdForPrint();

	//処理中画面へ遷移
	document.forms[0].action = "SubWin/Processing.aspx?mode=pdf";

	document.forms[0].submit();
}

function getLv1IdForPrint()
{
	win = window.opener?window.opener:this;
	var lv1ID='';
	var vTitleID='middle_title_0c';	
	for(i=0 ; win.document.getElementById(vTitleID)!=null ; ++i)
	{				
		vTitleID ='middle_title_' + i + 'c';			
		if(win.document.getElementById(vTitleID))
		{						
			if(win.document.getElementById(vTitleID).checked)
			{
				if(lv1ID=='')
				{
					lv1ID= lv1ID + win.document.getElementById(vTitleID).value;
				}
				else
				{
					lv1ID= lv1ID +  ',' + win.document.getElementById(vTitleID).value;
				}
			}		
		}
	}
	win.lv1ID = lv1ID;
}
function setPreview()
{
	win = window.opener?window.opener:this;
	var tnode = document.getElementById("print_title");
	if(tnode)
	{
		tnode.innerHTML = win.print_mapTitle;
	}
	else
	{
		tnode = document.getElementById("mapTitle");
		if(tnode)
		{
			tnode.innerHTML = win.print_mapTitle;
		}
	}
	
	var dnode = document.getElementById("print_date");
	if(dnode)
	{
		dnode.innerHTML = win.print_date;
	}
	else
	{
		dnode = document.getElementById("printDate");
		if(dnode)
		{
			dnode.innerHTML = win.print_date;
		}
	}	
	
	var pnode = document.getElementById("print_preview_img");
	if(pnode)
	{
		pnode.src = win.print_url;	
	}
	else
	{
		pnode = document.getElementById("printView");
		if(pnode)
		{
			pnode.src = win.print_url;	
		}
	}	
	
	var snode = document.getElementById("print_scale");
	if(snode)
	{
		snode.innerHTML = win.print_scale;
	}
}

//印刷画像読み込み完了時
function setDisplayPreview()
{
	document.getElementById("processing_container").style.display = "none";
	document.getElementById("print_preview_container").style.display = "block";
	var pnode = document.getElementById("print_preview_img");
	if(pnode)
	{
		document.getElementById("print_preview_contents").style.width =pnode.width;
	}
	else
	{
		pnode = document.getElementById("printView");
		if(pnode)
		{
			document.getElementById("print_preview_contents").style.width =pnode.width;
		}
	}	
	
}

function setPrint()
{
	if(print_mode == 0)
	{
		setPrintImage();
	}
	else if(print_mode == 1)
	{
		setPrintImagePDF();
	}
}

function setPrintView(width,height)
{
	win = window.opener?window.opener:this;
	var view = win.gis.viewManager.getCurrentView();
	
	if (view)
	{				
		var v = win.viewCopy();
		
		var bbox = v.boundingBox;
		var diffX = bbox.maxX - bbox.minX;
		var diffY = bbox.maxY - bbox.minY;
		var w = v.width;
		var h = v.height;
		var s = v.scale;
		var newDiffX = diffX*width/w;
		var newDiffY = diffY*height/h;
		
		var centerX = (bbox.minX + bbox.maxX) / 2;//今表示している中心座標X
		var centerY = (bbox.minY + bbox.maxY) / 2;//今表示している中心座標Y
		
		//画面サイズを変更したときに表示する範囲の計算						
		var minX = Math.round((centerX - (newDiffX / 2))*1000)/1000;
		var maxX = Math.round((centerX + (newDiffX / 2))*1000)/1000;
		var minY = Math.round((centerY - (newDiffY / 2))*1000)/1000;
		var maxY = Math.round((centerY + (newDiffY / 2))*1000)/1000;
		
		var boundingbox = minX +','+ minY +','+ maxX +','+ maxY;
		pUrl='FrontController/handler/MapImageBuilder.ashx?BBOX='+boundingbox;
		pUrl = pUrl + '&WIDTH=' + width + '&HEIGHT=' + height+'&FORMAT='+win.MAP_FORMAT;
		
		//画像生成には必要ないが、ログ出力のために追加
		getLv1IdForPrint();
		pUrl = pUrl + '&coords=' + centerX+','+centerY+  "&size=" +  width +"," + height+'&scale='+s+'&lv1ID='+ win.lv1ID;
		
		win.print_url = pUrl;
		
		if(date_format)
		{
			nowDate = getDateString(date_format);
		}
		win.print_date = nowDate?nowDate:"";	
		
		if(win.printScaleFormat)
		{
			var _scl = win.printScaleFormat.replace("%S", s);
			win.print_scale = _scl;
		}
	}			
}
