/*--------------------------------------------------------------------------
	大航海時代Online - 造船シミュレータ
	Original script by Blade @ 倫敦第三造船所
--------------------------------------------------------------------------*/

var Array_ShipData;
var Array_MaterialData;

function load(){
	if(window.location.hash!=""){
		var Info=window.location.hash;
		var test = new String();
		var i,j;
		i=Info.indexOf("id");
		x=Info.substring(i).match(/[0-9]+/);
		if(x != ""){
			setShipData(x);
			document.ship_select.id.value=x;
			}
	}
}

// 船データ取得
function getShipData()
{
	// 船データ
	Array_ShipData = textShipData.split("BR");
	// 材質データ
	Array_MaterialData = textMaterialData.split("BR");

	var ID, Name, Name2, Price,
		Tateho, Yokoho, Souryoku, Senkai, Taiha, Soukou,
		Taikyu, Room_Crew, Room_Cannon, Room_Souko, Min_Crew,
		Adventure_LV, Trade_LV, Combat_LV,
		Jigger, Figure_Head, Crest, Special_Wepon, Addition_Armor,
		Side_Cannon, Prow_Cannon, Stern_Cannon,
		Necessary_Rank, Necessary_Days, Material, Memo, ImgNumber;
	var total_rank;
	var Array_ShipData_Tmp = new Array();

	// 行
//	var Array_ShipData = textShipData.split("\r\n");

	// 列
	for( var i=0; i < Array_ShipData.length; i++ )
	{
		Array_ShipData[i] = Array_ShipData[i].split(",");
	}

	for( var i=1; i < Array_ShipData.length; i++ )
	{
		for( var j=0; j < Array_ShipData[i].length; j++ )
		{
			ID = i;
			switch( Array_ShipData[0][j] )
			{
				case "船種名":
					Name = Array_ShipData[i][j]; break;
				case "船種名2":
					Name2 = Array_ShipData[i][j]; break;
				case "価格":
					Price = Array_ShipData[i][j]; break;
				case "縦帆":
					Tateho = Array_ShipData[i][j]; break;
				case "横帆":
					Yokoho = Array_ShipData[i][j]; break;
				case "漕力":
					Souryoku = Array_ShipData[i][j]; break;
				case "旋回":
					Senkai = Array_ShipData[i][j]; break;
				case "対波":
					Taiha = Array_ShipData[i][j]; break;
				case "装甲":
					Soukou = Array_ShipData[i][j]; break;
				case "耐久力":
					Taikyu = Array_ShipData[i][j]; break;
				case "船室":
					Room_Crew = Array_ShipData[i][j]; break;
				case "砲室":
					Room_Cannon = Array_ShipData[i][j]; break;
				case "倉庫":
					Room_Souko = Array_ShipData[i][j]; break;
				case "必要":
					Min_Crew = Array_ShipData[i][j]; break;
				case "冒険":
					Adventure_LV = Array_ShipData[i][j]; break;
				case "交易":
					Trade_LV = Array_ShipData[i][j]; break;
				case "戦闘":
					Combat_LV = Array_ShipData[i][j]; break;
				case "補助帆":
					Jigger = Array_ShipData[i][j]; break;
				case "船首像":
					Figure_Head = Array_ShipData[i][j]; break;
				case "紋章":
					Crest = Array_ShipData[i][j]; break;
				case "特殊兵装":
					Special_Wepon = Array_ShipData[i][j]; break;
				case "追加装甲":
					Addition_Armor = Array_ShipData[i][j]; break;
				case "船側砲":
					Side_Cannon = Array_ShipData[i][j]; break;
				case "船首砲":
					Prow_Cannon = Array_ShipData[i][j]; break;
				case "船尾砲":
					Stern_Cannon = Array_ShipData[i][j]; break;
				case "日数":
					Necessary_Days = Array_ShipData[i][j]; break;
				case "材質":
					Material = Array_ShipData[i][j]; break;
				case "メモ":
					Memo = Array_ShipData[i][j]; break;
				case "画像":
					ImgNumber = Array_ShipData[i][j]; break;
				case "店頭販売":
					ShopFlag = Array_ShipData[i][j]; break;
			}
		}

		Array_ShipData_Tmp[i-1] = new Class_ShipData(
								ID, Name, Name2, Price,
								Tateho, Yokoho, Souryoku, Senkai, Taiha, Soukou,
								Taikyu, Room_Crew, Room_Cannon, Room_Souko, Min_Crew,
								Adventure_LV, Trade_LV, Combat_LV,
								Jigger, Figure_Head, Crest, Special_Wepon, Addition_Armor,
								Side_Cannon, Prow_Cannon, Stern_Cannon,
								Necessary_Days, Material, Memo, ImgNumber, ShopFlag
							);
	}
	Array_ShipData = Array_ShipData_Tmp;

	getMaterialData();

	createShipSelect();

	setShipData( Defalt_ShipID );

	return true;
}
// 船データ用クラス
// 名称,名称2,金額,縦帆,横帆,漕力,旋回,対波,装甲,耐久力,船室,砲室,倉庫,必要,冒険,交易,戦闘,補助帆,船首像,紋章,兵装,装甲,側砲,船首砲,船尾砲,日数,材質,メモ,画像ID,店頭販売フラグ
function Class_ShipData(
		ID, Name, Name2, Price,
		Tateho, Yokoho, Souryoku, Senkai, Taiha, Soukou,
		Taikyu, Room_Crew, Room_Cannon, Room_Souko, Min_Crew,
		Adventure_LV, Trade_LV, Combat_LV,
		Jigger, Figure_Head, Crest, Special_Wepon, Addition_Armor,
		Side_Cannon, Prow_Cannon, Stern_Cannon,
		Necessary_Days, Material, Memo, ImgNumber, ShopFlag
	)
{
	this.ID					= eval(ID);
	this.Name				= Name;
	this.Name2				= Name2;
	this.Price				= eval(Price);
	this.Tateho				= eval(Tateho);
	this.Yokoho				= eval(Yokoho);
	this.Souryoku			= eval(Souryoku);
	this.Senkai				= eval(Senkai);
	this.Taiha				= eval(Taiha);
	this.Soukou				= eval(Soukou);
	this.Taikyu				= eval(Taikyu);
	this.Room_Crew			= eval(Room_Crew);
	this.Room_Cannon		= eval(Room_Cannon);
	this.Room_Souko			= eval(Room_Souko);
	this.Min_Crew			= eval(Min_Crew);
	this.Adventure_LV		= eval(Adventure_LV);
	this.Trade_LV			= eval(Trade_LV);
	this.Combat_LV			= eval(Combat_LV);
	this.Jigger				= eval(Jigger);
	this.Figure_Head		= eval(Figure_Head);
	this.Crest				= eval(Crest);
	this.Special_Wepon		= eval(Special_Wepon);
	this.Addition_Armor		= eval(Addition_Armor);
	this.Side_Cannon		= eval(Side_Cannon);
	this.Prow_Cannon		= eval(Prow_Cannon);
	this.Stern_Cannon		= eval(Stern_Cannon);
	if( NullCheck( Necessary_Days ) )
		this.Necessary_Days		= eval(Necessary_Days);
	else
		this.Necessary_Days		= "-";
	this.Material			= Material;
	this.Memo				= Memo;
	this.ImgNumber			= ImgNumber;
	this.ShopFlag			= ShopFlag;

	this.MaterialList		= "//";

	this.Total_Rank			= eval(Adventure_LV) + eval(Trade_LV) + eval(Combat_LV);
	this.Necessary_Rank		= Math.floor( ( this.Total_Rank - 10 ) / 5 )+1;
		if( this.Necessary_Rank <= 0 )	this.Necessary_Rank = 1;

	this.NormalPrice		= "-";
	this.BuildPrice			= "-";

	this.Room_Crew_Now		= eval(Room_Crew);
	this.Room_Cannon_Now	= eval(Room_Cannon);
	this.Room_Souko_Now		= eval(Room_Souko);

	this.Normal_Capacity		= eval(Room_Crew) + eval(Room_Cannon) + eval(Room_Souko);
	this.Normal_Capacity_Now	= this.Normal_Capacity;
	this.Min_Capacity			= this.Normal_Capacity;
	this.Max_Capacity			= this.Normal_Capacity;
	this.Room_Crew_Min			= this.Room_Crew;
	this.Room_Crew_Max			= this.Room_Crew;
	this.Room_Cannon_Min		= this.Room_Cannon;
	this.Room_Cannon_Max		= this.Room_Cannon;

	this.toString = function () {
		return (this.ID + ":" + this.Name);
    }
}
// 材質改造データ取得
function getMaterialData()
{
	var Mname = Array_MaterialData[0].split(",");
	for( i=1; i < Array_MaterialData.length; i++ )
	{
		var Tmp = Array_MaterialData[i].split(",");

		for( j=0; j < Array_ShipData.length; j++ )
		{
			if( Tmp[0] == Array_ShipData[j].Name )
			{
				var Tmp2 = new Array();
				for( k=0; k < material.length; k++ )
				{
					for( l=2; l < Tmp.length; l++ )
					{
						if( material[k][1] == Mname[l] )
						{
							if( Tmp[l] == "" )	Tmp[l] = "//";
							Tmp2.push( Tmp[l].split("/") );
							break;
						}
					}
				}
				Array_ShipData[j].MaterialList = Tmp2;
				break;
			}
		}
	}
//	alert( print_r(Array_ShipData[0].MaterialList) );

	return true;
}

// 船select作成
function createShipSelect()
{
	var Array_Select = Array_ShipData;
	Array_Select = ShipData_Filter( Array_Select );
	Array_Select = ShipData_Search( Array_Select );
	Array_Select = ShipData_Search_Lv( Array_Select );
	Array_Select = ShipData_Sort( Array_Select );

	var str = "<select name=\"id\" onChange=\"setShipData( this.value )\">";
	var Tmp, flg;

	for( var i=0; i < Array_Select.length; i++ )
	{
		flg = 1;
		if( Array_Select[i].ID == Defalt_ShipID )
			Tmp = " selected";
		else
			Tmp = "";
		str += '<option value="' + Array_Select[i].ID + '"' + Tmp + '>' + Array_Select[i].Name + '</option>';
	}
	if(!flg)
		str += '<option value="1">該当する船がありません</option>';

	str += "</select>";

	Print_innerHTML( "ShipSelect", str );
	return true;
}
// 船選択
function setShipData( id )
{
	var flg;
	for( var i=0; i < Array_ShipData.length; i++ )
	{
		if( Array_ShipData[i].ID == id )
		{
			Sel = clearShipData( Array_ShipData[i] );
			Defalt_ShipID = id;
			flg = 1;
			break;
		}
	}
	if( !flg )	Sel	= Array_ShipData[1];

	if( NullCheck( Sel.Price ) )
	{
		if( Sel.Material != "" )
			var rate = material[ Sel.Material ][3];
		else
			var rate = material[0][3];
		Sel.Normal_Price	= Math.floor( Sel.Price / rate );
	}
	else
		Sel.Normal_Price	= "-";

	if( NullCheck( Sel.MaterialList[2][2] ) )
	{
		for( var i=0; i < Sel.MaterialList.length; i++ )
		{
			if( !NullCheck( Sel.MaterialList[i][2] ) )
			{
				var rate = parseFloat( material[i][4] );
				var Tmp = Math.floor( ( Sel.MaterialList[2][2] * ( rate * 100 ) ) /100 );
//				var Tmp = Math.floor( Sel.MaterialList[2][2] * rate + 0.00001 );
				Sel.MaterialList[i][2] = Tmp.toString();
			}
		}
	}
	else
	{
		var Defalt_Taikyu = Math.floor( Sel.MaterialList[ Sel.Material ][2] / material[Sel.Material][4] );

		for( var i=0; i < Sel.MaterialList.length; i++ )
		{
			if( !NullCheck( Sel.MaterialList[i][2] ) )
			{
				var rate = material[i][4] * 100;
				var Tmp = Math.floor( Defalt_Taikyu * rate / 100 );
				Sel.MaterialList[i][2] = Tmp.toString();
			}
		}
	}

	Sel.Build_Price		= Math.floor( Sel.Normal_Price * 0.6 );

	if( NullCheck( Sel.ImgNumber ) )
		ImgLink = '&nbsp;<a href="#" onClick="ImgView(\'' + Sel.ID + '\',\'' + Sel.Name + '\');return false;"><img src="img2/icon_img.gif" /></a>';
	else
		ImgLink = "";

	ShipyardLink = "";
	if( NullCheck( Sel.Name2 ) )
	{
		ShipyardLink = "造船所：";
		for( var i=0; i < ServerList.length; i++ )
		{
			var LinkTmp = "shipyard_search.php?search=" + Sel.Name2 + "&server=" + ServerList[i];
			ShipyardLink += '&nbsp;&nbsp;<a href="' + LinkTmp + '">' + ServerList[i] + '</a>';
		}
	}

	DataRefresh();
	return true;
}
// 船データ（変更データ保持領域）の初期化
function clearShipData( Array_ShipData )
{
	Array_ShipData.NormalPrice			= "-";
	Array_ShipData.BuildPrice			= "-";
	Array_ShipData.Room_Crew_Now		= Array_ShipData.Room_Crew;
	Array_ShipData.Room_Cannon_Now		= Array_ShipData.Room_Cannon;
	Array_ShipData.Room_Souko_Now		= Array_ShipData.Room_Souko;
	Array_ShipData.Normal_Capacity_Now	= Array_ShipData.Normal_Capacity;
	Array_ShipData.Min_Capacity			= Array_ShipData.Normal_Capacity;
	Array_ShipData.Max_Capacity			= Array_ShipData.Normal_Capacity;

	return Array_ShipData;
}

// フィルター
function ShipData_Filter( Array_ShipData )
{
	var filter_adv		= document.ship_select.adventure.checked;
	var filter_tra		= document.ship_select.trade.checked;
	var filter_com		= document.ship_select.combat.checked;
	var Array_Filter = new Array();
	var j=0;
	var ship_type, ship1, ship2, ship3, flag;

	for( var i=0; i < Array_ShipData.length; i++ )
	{
		ship1 = Array_ShipData[i].Adventure_LV;
		ship2 = Array_ShipData[i].Trade_LV;
		ship3 = Array_ShipData[i].Combat_LV;
		ship_type = ShipType( ship1, ship2, ship3 );
		flag = 0;

		if( filter_adv && ship_type == 1 )	flag=1;
		if( filter_tra && ship_type == 2 )	flag=1;
		if( filter_com && ship_type == 3 )	flag=1;
		if( !ship_type )	flag=1;

		if( flag == 1 )
		{
			Array_Filter[j] = Array_ShipData[i];
			j++;
		}
	}
	return Array_Filter;
}
// 船タイプ判定
function ShipType( ship1, ship2, ship3 )
{
	if( eval(ship1) > eval(ship2) && eval(ship1) > eval(ship3) )
	{
		return 1;
	}
	else if( eval(ship2) > eval(ship1) && eval(ship2) > eval(ship3) )
	{
		return 2;
	}
	else if( eval(ship3) > eval(ship1) && eval(ship3) > eval(ship2) )
	{
		return 3;
	}
	return false;
}
// 絞込み検索：船種名（部分一致）
function ShipData_Search( Array_Select )
{
	var Array_Search = new Array();
	var j=0;
	var str = document.ship_select.search_txt.value;

	if( str != "" )
	{
		for( var i=0; i < Array_Select.length; i++ )
		{
			if( Array_Select[i].Name.indexOf( str ) != -1)
			{
				Array_Search[j] = Array_Select[i];
				j++;
			}
		}
		return Array_Search;
	}
	return Array_Select;
}
// 絞込み検索：操船条件
function Input_Lv_Chk( Form, Num )
{
	if( Num.match("[^0-9]") )
	{
		alert( "半角数字以外の文字が含まれています。" );
		Form.focus();
		Form.select();
		return false;
	}
	else
		createShipSelect();
}
function ShipData_Search_Lv( Array_Select )
{
	var Array_Search = new Array();
	var Lv1a = document.ship_select.search_lv1a.value;
	var Lv1b = document.ship_select.search_lv1b.value;
	var Lv2a = document.ship_select.search_lv2a.value;
	var Lv2b = document.ship_select.search_lv2b.value;
	var Lv3a = document.ship_select.search_lv3a.value;
	var Lv3b = document.ship_select.search_lv3b.value;
	var Lv4a = document.ship_select.search_lv4a.value;
	var Lv4b = document.ship_select.search_lv4b.value;

	var j=0;
	for( var i=0; i < Array_Select.length; i++ )
	{
		if(
			Filter_Lv( Array_Select[i].Adventure_LV, Lv1a, Lv1b )
			&& Filter_Lv( Array_Select[i].Trade_LV, Lv2a, Lv2b )
			&& Filter_Lv( Array_Select[i].Combat_LV, Lv3a, Lv3b )
			&& Filter_Lv( Array_Select[i].Necessary_Rank, Lv4a, Lv4b )
		)
		{
			Array_Search[j] = Array_Select[i];
			j++;
		}
	}
	return Array_Search;
}
function Filter_Lv( Lv, Lv1, Lv2 )
{
	if( Lv1 != "" )
	{
		if( Lv2 != "" )
		{
			if( eval(Lv1) <= eval(Lv) && eval(Lv) <= eval(Lv2) )	return true;
		}
		else
		{
			if( eval(Lv1) <= eval(Lv) )	return true;
		}
	}
	else
	{
		if( Lv2 != "" )
		{
			if( eval(Lv) <= eval(Lv2) )	return true;
		}
		else
		{
			return true;
		}
	}
	return false;
}
// ソート
function ShipData_Sort( Array_ShipData )
{
	Array_ShipData.sort( SortQuery );

	return Array_ShipData;
}
// ソート条件
function SortQuery( a, b )
{
	return a.Price - b.Price;
}

// データの更新処理
function DataRefresh()
{
	ShipData_Refresh();
	ShipBuild_Refresh();
	BuildSimu_Refresh();
	FreightCalculation_Refresh();

	MaxCapacity();
	MaxCannon();
	MaxCrew();

	document.ship_customize.capacity.value = Sel.Normal_Capacity;
	document.ship_customize.capacity.style.color = "#336";
	document.ship_customize.cannon.value = Sel.Room_Cannon;
	document.ship_customize.cannon.style.color = "#336";
	document.ship_customize.crew.value = Sel.Room_Crew;
	document.ship_customize.crew.style.color = "#336";

	return true;
}

// 船体情報更新(0:初期化, 1:更新)
function ShipData_Refresh( Flag )
{
	if(typeof Flag == 'undefined')	Flag = 0;
	if( Flag==0 )
	{
		Print_innerHTML( "Ship_Name_HTML", Sel.Name );
		Print_innerHTML( "Ship_Price_HTML", FormatNumber(Sel.Price) );
		Print_innerHTML( "Ship_Tateho_HTML", Sel.Tateho );
		Print_innerHTML( "Ship_Yokoho_HTML", Sel.Yokoho );
		Print_innerHTML( "Ship_Souryoku_HTML", Sel.Souryoku );
		Print_innerHTML( "Ship_Senkai_HTML", Sel.Senkai );
		Print_innerHTML( "Ship_Taiha_HTML", Sel.Taiha );
		Print_innerHTML( "Ship_Soukou_HTML", Sel.Soukou );
		Print_innerHTML( "Ship_Taikyu_HTML", Sel.Taikyu );
		Print_innerHTML( "Ship_Room_Crew_HTML", Sel.Room_Crew );
		Print_innerHTML( "Ship_Room_Cannon_HTML", Sel.Room_Cannon );
		Print_innerHTML( "Ship_Room_Souko_HTML", Sel.Room_Souko );
		Print_innerHTML( "Ship_Min_Crew_HTML", Sel.Min_Crew );
		Print_innerHTML( "Ship_Adventure_LV_HTML", Sel.Adventure_LV );
		Print_innerHTML( "Ship_Trade_LV_HTML", Sel.Trade_LV );
		Print_innerHTML( "Ship_Combat_LV_HTML", Sel.Combat_LV );
		Print_innerHTML( "Ship_Jigger_HTML", Sel.Jigger );
		Print_innerHTML( "Ship_Figure_Head_HTML", Sel.Figure_Head );
		Print_innerHTML( "Ship_Crest_HTML", Sel.Crest );
		Print_innerHTML( "Ship_Special_Wepon_HTML", Sel.Special_Wepon );
		Print_innerHTML( "Ship_Addition_Armor_HTML", Sel.Addition_Armor );
		Print_innerHTML( "Ship_Side_Cannon_HTML", Sel.Side_Cannon );
		Print_innerHTML( "Ship_Prow_Cannon_HTML", Sel.Prow_Cannon );
		Print_innerHTML( "Ship_Stern_Cannon_HTML", Sel.Stern_Cannon );
		Print_innerHTML( "Ship_Memo_HTML", Sel.Memo );
		Print_innerHTML( "Ship_Shipyard_HTML", ShipyardLink );
		Print_innerHTML( "Ship_Img_HTML", ImgLink );
		if( Sel.ShopFlag == 1 )
		{
			Print_innerHTML( "Ship_ShopFlag_HTML", "" );
		}
		else
		{
			Print_innerHTML( "Ship_ShopFlag_HTML", "　<small><strong>※造船専用</strong></small>" );
		}
	}
	else
	{
		Print_innerHTML( "Ship_Name_HTML", Sel.Name );
		Print_innerHTML( "Ship_Price_HTML", FormatNumber(Sel.Price) );
		Print_innerHTML( "Ship_Tateho_HTML", Sel.Tateho );
		Print_innerHTML( "Ship_Yokoho_HTML", Sel.Yokoho );
		Print_innerHTML( "Ship_Souryoku_HTML", Sel.Souryoku );
		Print_innerHTML( "Ship_Senkai_HTML", Sel.Senkai );
		Print_innerHTML( "Ship_Taiha_HTML", Sel.Taiha );
		Print_innerHTML( "Ship_Soukou_HTML", Sel.Soukou );
		Print_innerHTML( "Ship_Taikyu_HTML", Sel.Taikyu );
		Print_innerHTML( "Ship_Room_Crew_HTML", Sel.Room_Crew_Now );
		Print_innerHTML( "Ship_Room_Cannon_HTML", Sel.Room_Cannon_Now );
		Print_innerHTML( "Ship_Room_Souko_HTML", Sel.Room_Souko_Now );
		Print_innerHTML( "Ship_Min_Crew_HTML", Sel.Min_Crew );
		Print_innerHTML( "Ship_Adventure_LV_HTML", Sel.Adventure_LV );
		Print_innerHTML( "Ship_Trade_LV_HTML", Sel.Trade_LV );
		Print_innerHTML( "Ship_Combat_LV_HTML", Sel.Combat_LV );
		Print_innerHTML( "Ship_Jigger_HTML", Sel.Jigger );
		Print_innerHTML( "Ship_Figure_Head_HTML", Sel.Figure_Head );
		Print_innerHTML( "Ship_Crest_HTML", Sel.Crest );
		Print_innerHTML( "Ship_Special_Wepon_HTML", Sel.Special_Wepon );
		Print_innerHTML( "Ship_Addition_Armor_HTML", Sel.Addition_Armor );
		Print_innerHTML( "Ship_Side_Cannon_HTML", Sel.Side_Cannon );
		Print_innerHTML( "Ship_Prow_Cannon_HTML", Sel.Prow_Cannon );
		Print_innerHTML( "Ship_Stern_Cannon_HTML", Sel.Stern_Cannon );
		Print_innerHTML( "Ship_Memo_HTML", Sel.Memo );
		Print_innerHTML( "Ship_Shipyard_HTML", ShipyardLink );
		Print_innerHTML( "Ship_Img_HTML", ImgLink );
	}

	return true;
}

// 造船情報更新
function ShipBuild_Refresh()
{
	Print_innerHTML( "ShipBuild_Price_HTML", FormatNumber( Sel.Build_Price ) );
	Print_innerHTML( "ShipBuild_Cost_HTML", FormatNumber( Math.floor( Sel.Build_Price - Sel.Normal_Price /2 )));

	Print_innerHTML( "ShipBuild_Rank_HTML", Sel.Necessary_Rank );
	Print_innerHTML( "ShipBuild_Necessary_Days_HTML", Sel.Necessary_Days );
	ShipBuild_Cost();

	return true;
}

// 造船コスト表更新
function ShipBuild_Cost( flg )
{
	if( typeof flg == 'undefined' )
	{
		if( document.ship_build.BaseExp[0].checked )	flg = 0;
		if( document.ship_build.BaseExp[1].checked )	flg = 1;
	}
	var i;
	var exp;
	var next;
	var num;
	var cost;
	var need_day;
	var per_cost;
	var BaseExp;
	var str;

	if( flg == 1 )
		BaseExp = 100;
	else
		BaseExp = 200;

	str = "			<table>\n";
	str += "				<tr>\n";
	str += "					<th title=\"造船スキルランク。\">R</th>\n";
	str += "					<th title=\"造船スキル熟練度（一隻あたりの取得熟練度 / 次ランクまでの要熟練度）。\">熟練度</th>\n";
	str += "					<th title=\"造船スキルを1ランク上げる為に必要な造船隻数。要熟練度 / 取得熟練度。\">要船隻数</th>\n";
	str += "					<th title=\"造船スキルを1ランク上げる為にかかるコスト。店売り損失額 * 要船隻数。食費・装備劣化等のコストを含めない。\">コスト</th>\n";
	str += "					<th title=\"造船スキルを1ランク上げる為にかかる洋上経過日数。必要建造日数 * 要船隻数。1日＝1分。船の発注・受取等のロスタイムを含めない。\">要日数</th>\n";
	str += "					<th title=\"造船スキル熟練度を1上げるのにかかるコスト。店売り損失額 / 取得熟練度。日数は考慮しない。\">コスト/熟練</th>\n";
	str += "				</tr>\n";


	for( i=1; i <= 14; i++ )
	{
		exp = Math.floor( Sel.Total_Rank * 10 / ( i + 1 ) );
		next = Math.pow( i, 2 ) * BaseExp;
		if( exp > 0 && ( ( flg == 0 && i < 10 ) || flg == 1 ) )
		{
			num = Math.ceil( next / exp );
			cost = num * ( Sel.Build_Price - Math.ceil( Sel.Normal_Price / 2 ) );
			if( Sel.Necessary_Days == "-" )
				need_day = Sel.Necessary_Days;
			else
				need_day = Sel.Necessary_Days * num;
			per_cost = Math.ceil( Math.floor( Sel.Build_Price - Sel.Normal_Price / 2 ) / exp );
		}
		else
		{
			exp = "-";
			next = "-";
			num = "-";
			cost = "-";
			need_day = "-";
			per_cost = "-";
		}

		str += "				<tr>\n";
		str += "					<th title=\"造船スキルランク。\">" + i + "</th>\n";
		str += "					<td>" + exp + " / " + next + "</td>\n";
		str += "					<td>" + num + " 隻</td>\n";
		str += "					<td>" + FormatNumber( cost ) + "</td>\n";
		str += "					<td>" + FormatNumber( need_day ) + "</td>\n";
		str += "					<td>" + FormatNumber( per_cost ) + "</td>\n";
		str += "				</tr>\n";
	}
	str += "			</table>\n";

	Print_innerHTML( "ShipBuild_CostList_HTML", str );

	return true;
}

// 改造シミュレータ更新
function BuildSimu_Refresh()
{
	if( Sel.Necessary_Rank > 5 )
		document.ship_customize.skill_lv.selectedIndex = Sel.Necessary_Rank - 5;
	else
		document.ship_customize.skill_lv.selectedIndex = 0;

	MaterialList_Refresh();
	Estimate();

	return true;
}

// 造船Lv変更
function SkillRefresh()
{
	MaxCapacity();
	MaterialList_Refresh();
	return true;
}

// 材質一覧更新
function MaterialList_Refresh()
{
	var i;
	var val1, val2, val3, val4;
	var skill_lv = document.ship_customize.skill_lv.value;
	var disabled = "";

	var str = '<table class="table-2-material"><caption>材質</caption>';

	for( i=0; i < material.length; i++ )
	{
		if( i % 2 == 0 )	str += '<tr>';
		if( eval( skill_lv ) < eval( material[i][2] ) )
			disabled = " disabled";
		else
			disabled = "";
		str += '<td title="(縦帆/横帆/耐久)"><input type="radio" name="material" id="' + material[i][0] + '" value="' + i + '" onClick="editMaterial()"' + disabled + ' />'
			+ '<img src="img2/icon_' + material[i][0] + '.gif" class="icon18" /> ' + material[i][1];

		if( !Sel.MaterialList )
		{
			val1 = "?";
			val2 = "?";
			val3 = "?";
		}
		else
		{
			if( Sel.MaterialList[i][0] == "" )	val1 = "?";
				else	val1 = Sel.MaterialList[i][0];
			if( Sel.MaterialList[i][1] == "" )	val2 = "?";
				else	val2 = Sel.MaterialList[i][1];
			if( Sel.MaterialList[i][2] == "" )	val3 = "?";
				else	val3 = Sel.MaterialList[i][2];
		}

		if( Sel.Tateho < val1 && val1 != "?" )	val1 = val1.fontcolor("red");
		if( Sel.Tateho > val1 && val1 != "?" )	val1 = val1.fontcolor("blue");
		if( Sel.Yokoho < val2 && val2 != "?" )	val2 = val2.fontcolor("red");
		if( Sel.Yokoho > val2 && val2 != "?" )	val2 = val2.fontcolor("blue");
		if( Sel.Taikyu < val3 && val3 != "?" )	val3 = val3.fontcolor("red");
		if( Sel.Taikyu > val3 && val3 != "?" )	val3 = val3.fontcolor("blue");

		val4 = ' (' + val1 + '/' + val2 + '/' + val3 + ')';
		str += val4.small() + '</td>';

		if( i % 2 > 0 )	str += '</tr>';
	}
	if( material.length % 2 > 0 )	str += '<td></td></tr>';
	str += '</table>';

	Print_innerHTML( "MaterialList_HTML", str );

	if( Sel.Material != "-" )
		document.getElementById(material[Sel.Material][0]).click();
	else
		document.getElementById(material[2][0]).click();
}
// 材質の変更
function editMaterial()
{
	var val1, val2, val3;
	if ( material.length && material.length > 1 )
	{
		for ( i = 0; i < material.length; i++ )
		{
			if ( document.getElementById(material[i][0]).checked )
				selectMaterial = document.getElementById(material[i][0]).value;
		}
	}
	else
	{
		if ( document.ship_customize.material.checked )
			selectMaterial = document.ship_customize.material.value;
	}

	if( typeof Sel.MaterialList[0] == 'undefined' )
	{
		Print_innerHTML( "Ship_Tateho_HTML", Sel.Tateho );
		Print_innerHTML( "Ship_Yokoho_HTML", Sel.Yokoho );
		Print_innerHTML( "Ship_Taikyu_HTML", Sel.Taikyu );
	}
	else
	{
		val1 = Sel.MaterialList[ selectMaterial ][0];
		val2 = Sel.MaterialList[ selectMaterial ][1];
		val3 = Sel.MaterialList[ selectMaterial ][2];
		if( val1 == "" )	val1 = Sel.Tateho;
		if( val2 == "" )	val2 = Sel.Yokoho;
		if( val3 == "" )	val3 = Sel.Taikyu;
		if( Sel.Tateho < val1 && val1 != "" )	val1 = val1.bold().fontcolor("red");
		if( Sel.Tateho > val1 && val1 != "" )	val1 = val1.bold().fontcolor("blue");
		if( Sel.Yokoho < val2 && val2 != "" )	val2 = val2.bold().fontcolor("red");
		if( Sel.Yokoho > val2 && val2 != "" )	val2 = val2.bold().fontcolor("blue");
		if( Sel.Taikyu < val3 && val3 != "" )	val3 = val3.bold().fontcolor("red");
		if( Sel.Taikyu > val3 && val3 != "" )	val3 = val3.bold().fontcolor("blue");

		Print_innerHTML( "Ship_Tateho_HTML", val1 );
		Print_innerHTML( "Ship_Yokoho_HTML", val2 );
		Print_innerHTML( "Ship_Taikyu_HTML", val3 );
	}

	Estimate();
}

// 容量アップ
function CapacityUP( num )
{
	if( typeof num == 'undefined' || num == "" || num == null )
		num = 1;

	if( Sel.Normal_Capacity_Now >= Sel.Max_Capacity )
	{
		alert("最大値です。");
		return false;
	}

	if( num == "max" && Sel.Normal_Capacity_Now >= Sel.Normal_Capacity )
		num = Sel.Max_Capacity - Sel.Normal_Capacity_Now;
	if( num == "max" && Sel.Normal_Capacity_Now < Sel.Normal_Capacity )
		num = Sel.Normal_Capacity - Sel.Normal_Capacity_Now;

	for( var i=0; i < num && Sel.Normal_Capacity_Now < Sel.Max_Capacity; i++ )
	{
		Sel.Normal_Capacity_Now++;
		SoukoUP();
	}

	if( Sel.Normal_Capacity_Now > Sel.Normal_Capacity )
	{
		document.ship_customize.capacity.style.color = "red";
	}
	else if( Sel.Normal_Capacity_Now < Sel.Normal_Capacity )
	{
		document.ship_customize.capacity.style.color = "blue";
	}
	else
	{
		document.ship_customize.capacity.style.color = "#336";
	}

	document.ship_customize.capacity.value = Sel.Normal_Capacity_Now;
	SenkaiAdjustment();
	Estimate();
	FreightCalculation();

	return true;
}
// 容量ダウン
function CapacityDOWN( num )
{
	if( typeof num == 'undefined' || num == "" || num == null )
		num = 1;

	if( Sel.Normal_Capacity_Now <= Sel.Min_Capacity )
	{
		alert("最小値です。");
		return false;
	}

	if( num == "min" && Sel.Normal_Capacity_Now <= Sel.Normal_Capacity )
		num = Sel.Normal_Capacity_Now - Sel.Min_Capacity;
	if( num == "min" && Sel.Normal_Capacity_Now > Sel.Normal_Capacity )
		num = Sel.Normal_Capacity_Now - Sel.Normal_Capacity;

	for( var i=0; i < num && Sel.Normal_Capacity_Now > Sel.Min_Capacity; i++ )
	{
		Sel.Normal_Capacity_Now--;
		SoukoDOWN();
	}

	if( Sel.Normal_Capacity_Now > Sel.Normal_Capacity )
	{
		document.ship_customize.capacity.style.color = "red";
	}
	else if( Sel.Normal_Capacity_Now < Sel.Normal_Capacity )
	{
		document.ship_customize.capacity.style.color = "blue";
	}
	else
	{
		document.ship_customize.capacity.style.color = "#336";
	}

	document.ship_customize.capacity.value = Sel.Normal_Capacity_Now;
	SenkaiAdjustment();
	Estimate();
	FreightCalculation();

	return true;
}
// 旋回性能調整
function SenkaiAdjustment()
{
	var point = Math.ceil( Sel.Normal_Capacity * 1.02 );

	if( Sel.Normal_Capacity_Now >= point )
	{
		var str = "<span class=\"blue\">" + ( Sel.Senkai - 1 ) + "</span>";
	}
	else
	{
		var str = Sel.Senkai;
	}
	Print_innerHTML( "Ship_Senkai_HTML", str );

	return true;
}

// 砲室アップ
function CannonUP( num )
{
	if( typeof num == 'undefined' || num == "" || num == null )
		num = 1;

	if( Sel.Room_Cannon_Now >= Sel.Room_Cannon_Max )
	{
		alert("最大値です。");
		return false;
	}

	if( num == "max" && Sel.Room_Cannon_Now >= Sel.Room_Cannon )
		num = Sel.Room_Cannon_Max - Sel.Room_Cannon_Now;
	if( num == "max" && Sel.Room_Cannon_Now < Sel.Room_Cannon )
		num = Sel.Room_Cannon - Sel.Room_Cannon_Now;

	for( var i=0; i < num && Sel.Room_Cannon_Now < Sel.Room_Cannon_Max; i++ )
	{
		Sel.Room_Cannon_Now++;
		SoukoDOWN();
	}

	if( Sel.Room_Cannon_Now > Sel.Room_Cannon )
	{
		var str = "<span class=\"red\">" + Sel.Room_Cannon_Now + "</span>";
		document.ship_customize.cannon.style.color = "red";
	}
	else if( Sel.Room_Cannon_Now < Sel.Room_Cannon )
	{
		var str = "<span class=\"blue\">" + Sel.Room_Cannon_Now + "</span>";
		document.ship_customize.cannon.style.color = "blue";
	}
	else
	{
		var str = Sel.Room_Cannon_Now;
		document.ship_customize.cannon.style.color = "#336";
	}

	Print_innerHTML( "Ship_Room_Cannon_HTML", str );
	document.ship_customize.cannon.value = Sel.Room_Cannon_Now;
	Estimate();
	FreightCalculation();

	return true;
}
// 砲室ダウン
function CannonDOWN( num )
{
	if( typeof num == 'undefined' || num == "" || num == null )
		num = 1;

	if( Sel.Room_Cannon_Now <= Sel.Room_Cannon_Min )
	{
		alert("最小値です。");
		return false;
	}

	if( num == "min" && Sel.Room_Cannon_Now <= Sel.Room_Cannon )
		num = Sel.Room_Cannon_Max - Sel.Room_Cannon_Now;
	if( num == "min" && Sel.Room_Cannon_Now > Sel.Room_Cannon )
		num = Sel.Room_Cannon_Now - Sel.Room_Cannon;

	for( var i=0; i < num && Sel.Room_Cannon_Now > Sel.Room_Cannon_Min; i++ )
	{
		Sel.Room_Cannon_Now--;
		SoukoUP();
	}

	if( Sel.Room_Cannon_Now > Sel.Room_Cannon )
	{
		var str = "<span class=\"red\">" + Sel.Room_Cannon_Now + "</span>";
		document.ship_customize.cannon.style.color = "red";
	}
	else if( Sel.Room_Cannon_Now < Sel.Room_Cannon )
	{
		var str = "<span class=\"blue\">" + Sel.Room_Cannon_Now + "</span>";
		document.ship_customize.cannon.style.color = "blue";
	}
	else
	{
		var str = Sel.Room_Cannon_Now;
		document.ship_customize.cannon.style.color = "#336";
	}

	Print_innerHTML( "Ship_Room_Cannon_HTML", str );
	document.ship_customize.cannon.value = Sel.Room_Cannon_Now;
	Estimate();
	FreightCalculation();

	return true;
}

// 船室アップ
function CrewUP( num )
{
	if( Sel.Room_Crew_Now >= Sel.Room_Crew_Max )
	{
		alert("最大値です。");
		return false;
	}

	if( num == "max" && Sel.Room_Crew_Now >= Sel.Room_Crew )
		num = Sel.Room_Crew_Max - Sel.Room_Crew_Now;
	if( num == "max" && Sel.Room_Crew_Now < Sel.Room_Crew )
		num = Sel.Room_Crew - Sel.Room_Crew_Now;

	for( var i=0; i < num && Sel.Room_Crew_Now < Sel.Room_Crew_Max; i++ )
	{
		Sel.Room_Crew_Now++;
		SoukoDOWN();
	}

	if( Sel.Room_Crew_Now > Sel.Room_Crew )
	{
		var str = "<span class=\"red\">" + Sel.Room_Crew_Now + "</span>";
		document.ship_customize.crew.style.color = "red";
	}
	else if( Sel.Room_Crew_Now < Sel.Room_Crew )
	{
		var str = "<span class=\"blue\">" + Sel.Room_Crew_Now + "</span>";
		document.ship_customize.crew.style.color = "blue";
	}
	else
	{
		var str = Sel.Room_Crew_Now;
		document.ship_customize.crew.style.color = "#336";
	}

	Print_innerHTML( "Ship_Room_Crew_HTML", str );
	document.ship_customize.crew.value = Sel.Room_Crew_Now;
	Estimate();
	FreightCalculation();

	return true;
}
// 船室ダウン
function CrewDOWN( num )
{
	if( Sel.Room_Crew_Now <= Sel.Room_Crew_Min )
	{
		alert("最小値です。");
		return false;
	}

	if( num == "min" && Sel.Room_Crew_Now <= Sel.Room_Crew )
		num = Sel.Room_Crew_Max - Sel.Room_Crew_Now;
	if( num == "min" && Sel.Room_Crew_Now > Sel.Room_Crew )
		num = Sel.Room_Crew_Now - Sel.Room_Crew;

	if( num == "min" )	num = Sel.Room_Crew_Now - Sel.Min_Crew;
	for( var i=0; i < num && Sel.Room_Crew_Now > Sel.Room_Crew_Min; i++ )
	{
		Sel.Room_Crew_Now--;
		SoukoUP();
	}

	if( Sel.Room_Crew_Now > Sel.Room_Crew )
	{
		var str = "<span class=\"red\">" + Sel.Room_Crew_Now + "</span>";
		document.ship_customize.crew.style.color = "red";
	}
	else if( Sel.Room_Crew_Now < Sel.Room_Crew )
	{
		var str = "<span class=\"blue\">" + Sel.Room_Crew_Now + "</span>";
		document.ship_customize.crew.style.color = "blue";
	}
	else
	{
		var str = Sel.Room_Crew_Now;
		document.ship_customize.crew.style.color = "#336";
	}

	Print_innerHTML( "Ship_Room_Crew_HTML", str );
	document.ship_customize.crew.value = Sel.Room_Crew_Now;
	Estimate();
	FreightCalculation();

	return true;
}
// 倉庫アップ
function SoukoUP()
{
	Sel.Room_Souko_Now++;

	if( Sel.Room_Souko_Now > Sel.Room_Souko )
		var str = "<span class=\"red\">" + Sel.Room_Souko_Now + "</span>";
	else if( Sel.Room_Souko_Now < Sel.Room_Souko )
		var str = "<span class=\"blue\">" + Sel.Room_Souko_Now + "</span>";
	else
		var str = Sel.Room_Souko_Now;

	Print_innerHTML( "Ship_Room_Souko_HTML", str );

	return true;
}
// 倉庫ダウン
function SoukoDOWN()
{
	Sel.Room_Souko_Now--;

	if( Sel.Room_Souko_Now > Sel.Room_Souko )
		var str = "<span class=\"red\">" + Sel.Room_Souko_Now + "</span>";
	else if( Sel.Room_Souko_Now < Sel.Room_Souko )
		var str = "<span class=\"blue\">" + Sel.Room_Souko_Now + "</span>";
	else
		var str = Sel.Room_Souko_Now;

	Print_innerHTML( "Ship_Room_Souko_HTML", str );

	return true;
}

// 容量計算
function MaxCapacity()
{
	var skill_lv = document.ship_customize.skill_lv.value;
	Sel.Min_Capacity = Math.floor( eval( Sel.Normal_Capacity ) - Sel.Normal_Capacity * skill_lv / 100 );
	Sel.Max_Capacity = Math.floor( eval( Sel.Normal_Capacity ) + Sel.Normal_Capacity * skill_lv / 100 );

	if( Sel.Normal_Capacity_Now > Sel.Max_Capacity )
	{
		while( Sel.Normal_Capacity_Now > Sel.Max_Capacity )
			CapacityDOWN();
	}
	else if( Sel.Normal_Capacity_Now < Sel.Min_Capacity )
	{
		while( Sel.Normal_Capacity_Now < Sel.Min_Capacity )
			CapacityUP();
	}

	Print_innerHTML( "BuildSimu_Max_Capacity_HTML",
		Sel.Min_Capacity + " - " + Sel.Normal_Capacity + " - " +  Sel.Max_Capacity );

	return true;
}

// 砲室計算
function MaxCannon()
{
	Sel.Room_Cannon_Min = Math.floor( eval(Sel.Room_Cannon) - Sel.Room_Cannon / 2 );
	Sel.Room_Cannon_Max = Math.floor( eval(Sel.Room_Cannon) + Sel.Room_Cannon / 2 );

	Print_innerHTML( "BuildSimu_Max_Cannon_HTML",
		Sel.Room_Cannon_Min + " - " + Sel.Room_Cannon + " - " +  Sel.Room_Cannon_Max );

	return true;
}

// 船室計算
function MaxCrew()
{
	Sel.Room_Crew_Min = Math.floor( eval(Sel.Room_Crew) - Sel.Room_Crew / 2 );
	Sel.Room_Crew_Max = Math.floor( eval(Sel.Room_Crew) + Sel.Room_Crew / 2 );
	if ( Sel.Min_Crew * 1.2 > Sel.Room_Crew_Min ){
		Sel.Room_Crew_Min = Math.floor( Sel.Min_Crew * 1.2 );
	}

	Print_innerHTML( "BuildSimu_Max_Crew_HTML",
		Sel.Room_Crew_Min + " - " + Sel.Room_Crew + " - " +  Sel.Room_Crew_Max );

	return true;
}
// 材質の変更による価格計算
function MaterialPrice( normal_price )
{
	var selectMaterial;
	var i;
	if ( material.length && material.length > 1 )
	{
		for ( i = 0; i < material.length; i++ )
		{
			if ( document.getElementById(material[i][0]).checked )
				selectMaterial = document.getElementById(material[i][0]).value;
		}
	}
	else
	{
		if ( document.ship_customize.material.checked )
			selectMaterial = document.ship_customize.material.value;
	}

	var rate = material[selectMaterial][3];

	var price = Math.ceil( normal_price * rate );
	price = price - normal_price;

//	alert( normal_price +" + "+ price +"["+rate+"]" );
	return price;
}
// 容量の増減による価格計算
function CapacityPrice( normal_price )
{
	var percent = 0;
	var price = 0;

	percent = ( Sel.Normal_Capacity_Now - Sel.Normal_Capacity ) / Sel.Normal_Capacity * 100;

	if( Sel.Normal_Capacity_Now > Sel.Normal_Capacity )
	{
		percent = Math.floor( percent );
	}
	else if( Sel.Normal_Capacity_Now < Sel.Normal_Capacity )
	{
		percent = Math.ceil( percent * -1 );
	}

	price = Math.floor( normal_price * percent / 100 );

	return price;
}
// 砲室の増減による価格計算
function CannonPrice()
{
	var price = 0;
/*
	if( Sel.Room_Cannon_Now != Sel.Room_Cannon )
	{
		price = 2500;
	}
*/
	return price;
}
// 船室の増減による価格計算
function CrewPrice()
{
	var price = 0;
/*
	if( Sel.Room_Crew_Now != Sel.Room_Crew )
	{
		price = 2500;
	}
*/
	return price;
}

// 価格の修正
function editPrice( formNum, price )
{
	var editForm = document.ship_customize["editPrice" + formNum];
	var editPrice = editForm.value;

	if( editPrice == "" )
	{
		editForm.value = 0;
		return price;
	}
	var firstByte = editPrice.substr( 0, 1 );
	if( firstByte == "+" || firstByte == "-" )
	{
		editPrice = editPrice.substr( 1 );
		if( editPrice.match("[^0-9]") )
		{
			alert( "半角数字以外の文字が含まれています。" );
			editForm.focus();
			editForm.select();
		}
		else
		{
			if( firstByte == "+" )
				price = eval( price ) + eval(editPrice);
			else
				price = eval( price ) - eval(editPrice);
			return price;
		}
	}
	else
	{
		if( editPrice.match("[^0-9]") )
		{
			alert( "半角数字以外の文字が含まれています。" );
			editForm.focus();
			editForm.select();
		}
		else
		{
			price = eval( price ) + eval(editPrice);
			return price;
		}
	}

	return price;
}
// 見積り計算
function Estimate()
{
	var normal_price = Sel.Build_Price;

	price = eval( normal_price ) + MaterialPrice( normal_price );
	price = eval( price ) + CapacityPrice( price );
	price = eval( price ) + CannonPrice();
	price = eval( price ) + CrewPrice();
	price = editPrice( 1, price );
	price = editPrice( 2, price );
	price = editPrice( 3, price );

	if( Sel.Room_Souko_Now > Sel.Room_Souko )
		var str = "<span class=\"red\">" + Sel.Room_Souko_Now + "</span>";
	else if( Sel.Room_Souko_Now < Sel.Room_Souko )
		var str = "<span class=\"blue\">" + Sel.Room_Souko_Now + "</span>";
	else
		var str = Sel.Room_Souko_Now;

	var percent = Math.ceil( price / normal_price * 100);
	var percent2 = Math.ceil( price / Sel.Price * 100);

//	if( price > Math.floor( Sel.Price * 0.6 ) )
	if( price > normal_price )
		price_str = "<span class=\"red\">" + FormatNumber( price ) + "</span>";
	else if( price < normal_price )
		price_str = "<span class=\"blue\">" + FormatNumber( price ) + "</span>";
	else
		price_str = FormatNumber( price );

	if( price > normal_price )
		price_str2 = "(+" + FormatNumber( price - normal_price ) + ") [" + percent + " %]";
	else if( price < normal_price )
		price_str2 = "(-" + FormatNumber( normal_price - price ) + ") [" + percent + " %]";
	else
		price_str2 = "(±0) [" + percent + " %]";

	if( price > Sel.Price )
		price_str3 = "(+" + FormatNumber( price - Sel.Price ) + ") [" + percent2 + " %]";
	else if( price < Sel.Price )
		price_str3 = "(-" + FormatNumber( Sel.Price - price ) + ") [" + percent2 + " %]";
	else
		price_str3 = "(±0) [" + percent2 + " %]";

	price = FormatNumber( price );
	Print_innerHTML( "BuildSimu_Estimate_HTML", price_str );
	Print_innerHTML( "BuildSimu_Estimate2_HTML", "<small>新造価格 : " + price_str2 + "</small>" );
	Print_innerHTML( "BuildSimu_Estimate3_HTML", "<small>基本価格 : " + price_str3 + "</small>" );

//	alert(price);
	return false;
}

// innerHTML
function Print_innerHTML( id, value )
{
	document.getElementById( id ).innerHTML = value;

	return true;
}
// 船画像用OpenWin
function ImgView( no, name )
{
	var url = 'img_view.html?' + no;
	window.open(url, 'Img'+no,'width=380,height=350,status=no,scrollbars=no,directories=no,menubar=no,resizable=no,toolbar=no');
}
// undefined, null値チェック
function NullCheck( str )
{
	if( typeof str == 'undefined' || str == "" || str == null )
		return false;
	else
		return true;
}
// カンマ区切り
function FormatNumber(x)
{
	var s = "" + x;
	var p = s.indexOf(".");
	if (p < 0) {
		p = s.length;
	}
	var r = s.substring(p, s.length);
	var i;
	for (var i = 0; i < p; i++) {
		var c = s.substring(p - 1 - i, p - 1 - i + 1);
		if (c < "0" || c > "9") {
			r = s.substring(0, p - i) + r;
			break;
		}
		if (i > 0 && i % 3 == 0) {
			r = "," + r;
		}
		r = c + r;
	}
	return r;
}
// デバッグ用配列全表示関数(document.writeなりalertなりする必要アリ)
function print_r( val, parent, depth )
{
	if(typeof parent == 'undefined')	parent = "";
	if(typeof depth == 'undefined')		depth = -1;
	var str = "";
	var tabstr = "\t";
	if ( val instanceof Array )
	{
		if( parent != "" || parent == "0" ){
			for( var j=0; j < depth; j++ )	str += tabstr;
			str += "[" + parent + "] => {\n";
		}
		for( var i=0; i < val.length; i++ )
		{
			str += print_r( val[i], i, depth+1 );
		}
		if( parent != "" || parent == "0" ){
			for( var j=0; j < depth; j++ )	str += tabstr;
			str += "}\n";
		}
	}
	else
	{
		for( var i=0; i < depth; i++ )	str += tabstr;
		str += "[" + parent + "] => \"" + val + "\"\n";
	}
	return str;
}
// 積荷・航行日数更新
function FreightCalculation_Refresh()
{
	document.ship_customize.FreightCrew.value = Sel.Min_Crew;
	document.ship_customize.FreightFood.value = 0;
	document.ship_customize.FreightWater.value = 0;

	FreightCalculation();
}
// 積荷・航行日数計算
function FreightCalculation()
{
	var FreightCrew  = document.ship_customize.FreightCrew.value;
	var FreightFood  = document.ship_customize.FreightFood.value;
	var FreightWater = document.ship_customize.FreightWater.value;

	if( FreightCrew.match("[^0-9]") )
	{
		alert( "半角数字以外の文字が含まれています。" );
		document.ship_customize.FreightCrew.value = Sel.Min_Crew;
		FreightCalculation();
		document.ship_customize.FreightCrew.focus();
		document.ship_customize.FreightCrew.select();
		return false;
	}
	else if( FreightCrew <= 0 )
	{
		alert( "船員は1人以上必要です。" );
		document.ship_customize.FreightCrew.value = 1;
		FreightCalculation();
		document.ship_customize.FreightCrew.focus();
		document.ship_customize.FreightCrew.select();
		return false;
	}
	else if( eval(FreightCrew) > Sel.Room_Crew_Now )
	{
		alert( "定員オーバーです。\n船員の人数を調整します。" );
		document.ship_customize.FreightCrew.value = Sel.Room_Crew_Now;
		FreightCalculation();
		document.ship_customize.FreightCrew.focus();
		document.ship_customize.FreightCrew.select();
		return false;
	}

	if( FreightFood.match("[^0-9]") )
	{
		alert( "半角数字以外の文字が含まれています。" );
		document.ship_customize.FreightFood.value = 0;
		FreightCalculation();
		document.ship_customize.FreightFood.focus();
		document.ship_customize.FreightFood.select();
		return false;
	}

	if( FreightWater.match("[^0-9]") )
	{
		alert( "半角数字以外の文字が含まれています。" );
		document.ship_customize.FreightWater.value = 0;
		FreightCalculation();
		document.ship_customize.FreightWater.focus();
		document.ship_customize.FreightWater.select();
		return false;
	}

	if( (eval( FreightFood ) + eval( FreightWater )) > Sel.Room_Souko_Now )
	{
		alert( "倉庫が一杯です。\n積荷の量を調整します。" );
		document.ship_customize.FreightFood.value  = Math.floor( Sel.Room_Souko_Now / 2 );
		document.ship_customize.FreightWater.value = Math.floor( Sel.Room_Souko_Now / 2 );
		FreightCalculation();
		return false;
	}

	var FoodDays  = Math.floor( 10 / FreightCrew * FreightFood );
	var WaterDays = Math.floor( 10 / FreightCrew * FreightWater );

	if( FoodDays < WaterDays )
	{
		var DaysValue = FoodDays;
	}
	else
	{
		var DaysValue = WaterDays;
	}

	var CrewEmpty  = Sel.Room_Crew_Now - eval( FreightCrew );
	var SoukoEmpty = Sel.Room_Souko_Now - ( eval( FreightFood ) + eval( FreightWater ) );

	Print_innerHTML( "CrewEmpty_HTML", CrewEmpty );
	Print_innerHTML( "SoukoEmpty_HTML", SoukoEmpty );
	Print_innerHTML( "SailingDays_HTML", DaysValue );
}
// 船員最大
function MaxCrewSet(x){
	if( NullCheck(x) )
	{
		if( x == 1 )
			document.ship_customize.FreightCrew.value = Sel.Min_Crew;
		else if( x == 2 )
			document.ship_customize.FreightCrew.value = Sel.Room_Crew_Now;
		FreightCalculation();
	}
}
// 積荷最大
function MaxFreightSet(){
	document.ship_customize.FreightFood.value  = Math.floor( Sel.Room_Souko_Now / 2 );
	document.ship_customize.FreightWater.value = Math.floor( Sel.Room_Souko_Now / 2 );
	FreightCalculation();
}
// 5日分の積荷計算
function NecessaryFreightSet(x){

	if( !NullCheck(x) )
	{
		var x = document.ship_customize.SailingDays.value;
		if( x.match("[^0-9]") )
		{
			alert( "半角数字以外の文字が含まれています。" );
			document.ship_customize.SailingDays.value = 5;
			return false;
		}
	}
	var NecessaryFood = Math.ceil( x / 10 * document.ship_customize.FreightCrew.value );

	if( NecessaryFood < 1 )
	{
		NecessaryFood(x+1);
		return false;
	}

	document.ship_customize.FreightFood.value  = NecessaryFood;
	document.ship_customize.FreightWater.value = NecessaryFood;
	FreightCalculation();
}