/*--------------------------------------------------------------------------
	大航海時代Online - 船舶一覧
	Original script by Blade @ 倫敦第三造船所
--------------------------------------------------------------------------*/

var Array_ShipData;
var Array_MaterialData;

// 船データ取得
function getShipData()
{
	// 船データ
	Array_ShipData = textShipData.split("\r\n");
	// 材質データ
	Array_MaterialData = textMaterialData.split("\r\n");

	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;
			}
		}
		total_rank = Math.ceil( eval(Adventure_LV) + eval(Trade_LV) + eval(Combat_LV) );
		Necessary_Rank = Math.floor( ( total_rank - 10 ) / 5 )+1;
		if( Necessary_Rank <= 0 )	Necessary_Rank = 1;

		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_Rank, Necessary_Days, Material, Memo, ImgNumber
							);
	}
	Array_ShipData = Array_ShipData_Tmp;

	getMaterialData();

	PrintShipData( Array_ShipData );

	return true;
}
// 船データ用クラス
// 名称,名称2,金額,縦帆,横帆,漕力,旋回,対波,装甲,耐久力,船室,砲室,倉庫,必要,冒険,交易,戦闘,補助帆,船首像,紋章,兵装,装甲,側砲,船首砲,船尾砲,日数,材質,メモ
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_Rank, Necessary_Days, Material, Memo, ImgNumber
	)
{
	this.ID					= ID;
	this.Name				= Name;
	this.Name2				= Name2;
	this.Price				= Price;
	this.Tateho				= Tateho;
	this.Yokoho				= Yokoho;
	this.Souryoku			= Souryoku;
	this.Senkai				= Senkai;
	this.Taiha				= Taiha;
	this.Soukou				= Soukou;
	this.Taikyu				= Taikyu;
	this.Room_Crew			= Room_Crew;
	this.Room_Cannon		= Room_Cannon;
	this.Room_Souko			= Room_Souko;
	this.Min_Crew			= Min_Crew;
	this.Adventure_LV		= Adventure_LV;
	this.Trade_LV			= Trade_LV;
	this.Combat_LV			= Combat_LV;
	this.Jigger				= Jigger;
	this.Figure_Head		= Figure_Head;
	this.Crest				= Crest;
	this.Special_Wepon		= Special_Wepon;
	this.Addition_Armor		= Addition_Armor;
	this.Side_Cannon		= Side_Cannon;
	this.Prow_Cannon		= Prow_Cannon;
	this.Stern_Cannon		= Stern_Cannon;
	this.Necessary_Rank		= Necessary_Rank;
	this.Necessary_Days		= Necessary_Days;
	this.Material			= Material;
	this.Memo				= Memo;
	this.ImgNumber			= ImgNumber;
	this.MaterialList		= "//";

	this.toString = function () {
		return (this.ID);
    }
}
// 材質改造データ取得
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;
			}
		}
	}

	return true;
}

// 船舶一覧表示
function PrintShipData()
{
	Array_ShipSearch = Array_ShipData;
	var ImgLink = "";
	var server = document.ship_search.server_sel.value;

	if( document.ship_search.list_type[0].checked )	var ListType = 1;
	if( document.ship_search.list_type[1].checked )	var ListType = 2;

	Array_ShipSearch = ShipData_Filter( Array_ShipSearch );
	Array_ShipSearch = ShipData_Search( Array_ShipSearch );
	Array_ShipSearch = ShipData_Search_Lv( Array_ShipSearch );
	Array_ShipSearch = ShipData_Sort( Array_ShipSearch );

	if( ListType == "1" )
	{
		var str = '<table id="ship-search">'
				+ '<tr>'
				+ '<th rowspan="2">画<br />像</th>'
				+ '<th rowspan="2">船種名</th>'
				+ '<th rowspan="2">価格</th>'
				+ '<th rowspan="2">耐<br />久<br />力</th>'
				+ '<th colspan="6">基本性能</th>'
				+ '<th colspan="4">船倉情報</th>'
				+ '<th colspan="3">操船条件</th>'
				+ '<th colspan="8">船部品</th>'
				+ '<th colspan="3">造船</th>'
				+ '</tr>'
				+ '<tr>'
				+ '<th>縦<br />帆</th>'
				+ '<th>横<br />帆</th>'
				+ '<th>漕<br />力</th>'
				+ '<th>旋<br />回</th>'
				+ '<th>対<br />波</th>'
				+ '<th>装<br />甲</th>'
				+ '<th>船<br />室</th>'
				+ '<th>砲<br />室</th>'
				+ '<th>倉<br />庫</th>'
				+ '<th>必<br />要</th>'
				+ '<th>冒<br />険</th>'
				+ '<th>交<br />易</th>'
				+ '<th>戦<br />闘</th>'
				+ '<th>補<br />助<br />帆</th>'
				+ '<th>船<br />首<br />像</th>'
				+ '<th>紋<br />章</th>'
				+ '<th>特<br />殊<br />兵<br />装</th>'
				+ '<th>追<br />加<br />装<br />甲</th>'
				+ '<th>船<br />側<br />砲</th>'
				+ '<th>船<br />首<br />砲</th>'
				+ '<th>船<br />尾<br />砲</th>'
				+ '<th>ラ<br />ン<br />ク</th>'
				+ '<th>日<br />数</th>'
				+ '<th>材<br />質</th>'
				+ '</tr>';

		for( var i=0; i < Array_ShipSearch.length; i++ )
		{
			if( Array_ShipSearch[i].ImgNumber != "" )
				ImgLink = '<a href="#" onClick="ImgView(\'' + Array_ShipSearch[i].ID + '\',\'' + Array_ShipSearch[i].Name + '\');return false;">■</a>';
			else
				ImgLink = "";

			str += '<tr>'
				+ '<td>' + ImgLink + '</td>';
			if( server != "" )
				str += '<td><a href="shipyard_search.php?search=' + Array_ShipSearch[i].Name2 + '&server=' + server + '">'
						+ Array_ShipSearch[i].Name + '</a></td>'
			else
				str += '<td><a href="ship_build.html?id=' + Array_ShipSearch[i].ID + '">' + Array_ShipSearch[i].Name + '</a></td>'
	//			str += '<td>' + Array_ShipSearch[i].Name + '</td>'
			str += '<td>' + FormatNumber( Array_ShipSearch[i].Price ) + '</td>'
				+ '<td>' + Array_ShipSearch[i].Taikyu + '</td>'

				+ '<td class="line">' + Array_ShipSearch[i].Tateho + '</td>'
				+ '<td>' + Array_ShipSearch[i].Yokoho + '</td>'
				+ '<td>' + Array_ShipSearch[i].Souryoku + '</td>'
				+ '<td>' + Array_ShipSearch[i].Senkai + '</td>'
				+ '<td>' + Array_ShipSearch[i].Taiha + '</td>'
				+ '<td>' + Array_ShipSearch[i].Soukou + '</td>'

				+ '<td class="line">' + Array_ShipSearch[i].Room_Crew + '</td>'
				+ '<td>' + Array_ShipSearch[i].Room_Cannon + '</td>'
				+ '<td>' + Array_ShipSearch[i].Room_Souko + '</td>'
				+ '<td class="line2">' + Array_ShipSearch[i].Min_Crew + '</td>'

				+ '<td class="lv">' + Array_ShipSearch[i].Adventure_LV + '</td>'
				+ '<td class="lv">' + Array_ShipSearch[i].Trade_LV + '</td>'
				+ '<td class="lv">' + Array_ShipSearch[i].Combat_LV + '</td>'

				+ '<td class="line">' + Array_ShipSearch[i].Jigger + '</td>'
				+ '<td>' + Array_ShipSearch[i].Figure_Head + '</td>'
				+ '<td>' + Array_ShipSearch[i].Crest + '</td>'
				+ '<td>' + Array_ShipSearch[i].Special_Wepon + '</td>'
				+ '<td>' + Array_ShipSearch[i].Addition_Armor + '</td>'

				+ '<td class="line">' + Array_ShipSearch[i].Side_Cannon + '</td>'
				+ '<td>' + Array_ShipSearch[i].Prow_Cannon + '</td>'
				+ '<td>' + Array_ShipSearch[i].Stern_Cannon + '</td>'

				+ '<td class="line">' + Array_ShipSearch[i].Necessary_Rank + '</td>'
				+ '<td>' + Array_ShipSearch[i].Necessary_Days + '</td>'
				+ '<td title="' + material[Array_ShipSearch[i].Material][1] + '">' + material[Array_ShipSearch[i].Material][0] + '</td>'
				+ '</tr>';

			if( i%15 == 14 )
			{
				str += '<tr>'
					+ '<th title="画像">画</th>'
					+ '<th title="船種名">船種名</th>'
					+ '<th title="価格">価格</th>'
					+ '<th title="耐久力">耐</th>'
					+ '<th title="縦帆">縦</th>'
					+ '<th title="横帆">横</th>'
					+ '<th title="漕力">漕</th>'
					+ '<th title="旋回">旋</th>'
					+ '<th title="対波">対</th>'
					+ '<th title="装甲">装</th>'
					+ '<th title="船室">室</th>'
					+ '<th title="砲室">砲</th>'
					+ '<th title="倉庫">倉</th>'
					+ '<th title="必要">必</th>'
					+ '<th title="冒険">冒</th>'
					+ '<th title="交易">交</th>'
					+ '<th title="戦闘">戦</th>'
					+ '<th title="補助帆">補</th>'
					+ '<th title="船首像">像</th>'
					+ '<th title="紋章">紋</th>'
					+ '<th title="特殊兵装">特</th>'
					+ '<th title="追加装甲">追</th>'
					+ '<th title="船側砲">側</th>'
					+ '<th title="船首砲">首</th>'
					+ '<th title="船尾砲">尾</th>'
					+ '<th title="ランク">Ｒ</th>'
					+ '<th title="日数">日</th>'
					+ '<th title="材質">材</th>'
					+ '</tr>';
			}
		}
		if( Array_ShipSearch.length <= 0 )
		{
			str += '<tr>'
				+ '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>'
				+ '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>'
				+ '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>'
				+ '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>'
				+ '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>'
				+ '</tr>';
		}

		str += '</table>';
	}
	else
	{
		var str = '<table id="ship-search">'
				+ '<tr>'
				+ '<th rowspan="2">船種名</th>';
		for( var i=0; i < material.length; i++ )
		{
			str += '<th colspan="3">' + material[i][1] + '</th>';
		}
		str += '</tr>'
			+ '<tr>';
		for( var i=0; i < material.length; i++ )
		{
			str += '<th>縦<br />帆</th>'
				+ '<th>横<br />帆</th>'
				+ '<th>耐<br />久</th>';
		}
		str += '</tr>';

		for( var i=0; i < Array_ShipSearch.length; i++ )
		{
			str += '<tr>'
				+ '<td>' + Array_ShipSearch[i].Name + '</td>';

			for( var j=0; j < material.length; j++ )
			{
				str += '<td class="line">' + Array_ShipSearch[i].MaterialList[j][0] + '</td>'
					+ '<td>' + Array_ShipSearch[i].MaterialList[j][1] + '</td>'
					+ '<td>' + Array_ShipSearch[i].MaterialList[j][2] + '</td>';
			}
			str += '</tr>';

			if( i%15 == 14 )
			{
				str += '<tr>'
					+ '<th rowspan="2" title="船種名">船種名</th>';
				for( var k=0; k < material.length; k++ )
				{
					str += '<th colspan="3">' + material[k][1] + '</th>';
				}
				str += '</tr>'
					+ '<tr>';
				for( var k=0; k < material.length; k++ )
				{
					str += '<th title="縦帆">縦</th>'
						+ '<th title="横帆">横'
						+ '<th title="耐久">耐</th>';
				}
				str += '</tr>';
			}
		}
		if( Array_ShipSearch.length <= 0 )
		{
			str += '<tr>'
				+ '<td>&nbsp;</td>';
			for( var i=0; i < material.length; i++ )
			{
				str += '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>';
			}
			str += '</tr>';
		}

		str += '</table>';
	}

	Print_innerHTML( "List_HTML", str );
	return true;
}
// フィルター
function ShipData_Filter( Array_ShipData )
{
	var filter_adv		= document.ship_search.adventure.checked;
	var filter_tra		= document.ship_search.trade.checked;
	var filter_com		= document.ship_search.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 ShipData_Search( Array_ShipData )
{
	var Array_Search = new Array();
	var j=0;
	var str = document.ship_search.search_txt.value;

	if( str != "" )
	{
		for( var i=0; i < Array_ShipData.length; i++ )
		{
			if( Array_ShipData[i].Name.indexOf( str ) != -1)
			{
				Array_Search[j] = Array_ShipData[i];
				j++;
			}
		}
		return Array_Search;
	}
	return Array_ShipData;
}
// 絞込み検索：操船条件
function Input_Lv_Chk( Form, Num )
{
	if( Num.match("[^0-9]") )
	{
		alert( "半角数字以外の文字が含まれています。" );
		Form.focus();
		Form.select();
		return false;
	}
	else
		PrintShipData();
}
function ShipData_Search_Lv( Array_ShipData )
{
	var Array_Search = new Array();
	var Lv1a = document.ship_search.search_lv1a.value;
	var Lv1b = document.ship_search.search_lv1b.value;
	var Lv2a = document.ship_search.search_lv2a.value;
	var Lv2b = document.ship_search.search_lv2b.value;
	var Lv3a = document.ship_search.search_lv3a.value;
	var Lv3b = document.ship_search.search_lv3b.value;
	var Lv4a = document.ship_search.search_lv4a.value;
	var Lv4b = document.ship_search.search_lv4b.value;

	var j=0;
	for( var i=0; i < Array_ShipData.length; i++ )
	{
		if(
			Filter_Lv( Array_ShipData[i].Adventure_LV, Lv1a, Lv1b )
			&& Filter_Lv( Array_ShipData[i].Trade_LV, Lv2a, Lv2b )
			&& Filter_Lv( Array_ShipData[i].Combat_LV, Lv3a, Lv3b )
			&& Filter_Lv( Array_ShipData[i].Necessary_Rank, Lv4a, Lv4b )
		)
		{
			Array_Search[j] = Array_ShipData[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 )
{
	var sort_query1 = document.ship_search.sort_query1.value;
	var sort_query2 = document.ship_search.sort_query2.value;

	if( sort_query2 == "asc" )
	{
		switch( sort_query1 )
		{
			case "Name":
				return a.Name - b.Name;
			case "Price":
				return a.Price - b.Price;
			case "Tateho":
				return a.Tateho - b.Tateho;
			case "Yokoho":
				return a.Yokoho - b.Yokoho;
			case "Souryoku":
				return a.Souryoku - b.Souryoku;
			case "Senkai":
				return a.Senkai - b.Senkai;
			case "Taiha":
				return a.Taiha - b.Taiha;
			case "Soukou":
				return a.Soukou - b.Soukou;
			case "Taikyu":
				return a.Taikyu - b.Taikyu;
			case "Room_Crew":
				return a.Room_Crew - b.Room_Crew;
			case "Room_Cannon":
				return a.Room_Cannon - b.Room_Cannon;
			case "Room_Souko":
				return a.Room_Souko - b.Room_Souko;
			case "Min_Crew":
				return a.Min_Crew - b.Min_Crew;
			case "Adventure_LV":
				return a.Adventure_LV - b.Adventure_LV;
			case "Trade_LV":
				return a.Trade_LV - b.Trade_LV;
			case "Combat_LV":
				return a.Combat_LV - b.Combat_LV;
			case "Jigger":
				return a.Jigger - b.Jigger;
			case "Figure_Head":
				return a.Figure_Head - b.Figure_Head;
			case "Crest":
				return a.Crest - b.Crest;
			case "Special_Wepon":
				return a.Special_Wepon - b.Special_Wepon;
			case "Addition_Armor":
				return a.Addition_Armor - b.Addition_Armor;
			case "Side_Cannon":
				return a.Side_Cannon - b.Side_Cannon;
			case "Prow_Cannon":
				return a.Prow_Cannon - b.Prow_Cannon;
			case "Stern_Cannon":
				return a.Stern_Cannon - b.Stern_Cannon;
			case "Necessary_Rank":
				return ( eval(a.Adventure_LV) + eval(a.Trade_LV) + eval(a.Combat_LV) )
				 - ( eval(b.Adventure_LV) + eval(b.Trade_LV) + eval(b.Combat_LV) );
//				return a.Necessary_Rank - b.Necessary_Rank;
			case "Necessary_Days":
				return a.Necessary_Days - b.Necessary_Days;
			case "Material":
				return a.Material - b.Material;
			default:
				return a.ID - b.ID;
		}
	}
	else if( sort_query2 == "desc" )
	{
		switch( sort_query1 )
		{
			case "Name":
				return b.Name - a.Name;
			case "Price":
				return b.Price - a.Price;
			case "Tateho":
				return b.Tateho - a.Tateho;
			case "Yokoho":
				return b.Yokoho - a.Yokoho;
			case "Souryoku":
				return b.Souryoku - a.Souryoku;
			case "Senkai":
				return b.Senkai - a.Senkai;
			case "Taiha":
				return b.Taiha - a.Taiha;
			case "Soukou":
				return b.Soukou - a.Soukou;
			case "Taikyu":
				return b.Taikyu - a.Taikyu;
			case "Room_Crew":
				return b.Room_Crew - a.Room_Crew;
			case "Room_Cannon":
				return b.Room_Cannon - a.Room_Cannon;
			case "Room_Souko":
				return b.Room_Souko - a.Room_Souko;
			case "Min_Crew":
				return b.Min_Crew - a.Min_Crew;
			case "Adventure_LV":
				return b.Adventure_LV - a.Adventure_LV;
			case "Trade_LV":
				return b.Trade_LV - a.Trade_LV;
			case "Combat_LV":
				return b.Combat_LV - a.Combat_LV;
			case "Jigger":
				return b.Jigger - a.Jigger;
			case "Figure_Head":
				return b.Figure_Head - a.Figure_Head;
			case "Crest":
				return b.Crest - a.Crest;
			case "Special_Wepon":
				return b.Special_Wepon - a.Special_Wepon;
			case "Addition_Armor":
				return b.Addition_Armor - a.Addition_Armor;
			case "Side_Cannon":
				return b.Side_Cannon - a.Side_Cannon;
			case "Prow_Cannon":
				return b.Prow_Cannon - a.Prow_Cannon;
			case "Stern_Cannon":
				return b.Stern_Cannon - a.Stern_Cannon;
			case "Necessary_Rank":
				return ( eval(b.Adventure_LV) + eval(b.Trade_LV) + eval(b.Combat_LV) )
				 - ( eval(a.Adventure_LV) + eval(a.Trade_LV) + eval(a.Combat_LV) );
//				return b.Necessary_Rank - a.Necessary_Rank;
			case "Necessary_Days":
				return b.Necessary_Days - a.Necessary_Days;
			case "Material":
				return b.Material - a.Material;
			default:
				return b.ID - a.ID;
		}
	}
	else
		return b.ID - a.ID;
}
// 船タイプ判定
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;
}
// 船画像用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 Replace_Null( str )
{
	if( typeof str == 'undefined' || str == "" || str == null )
		return "-";
	else
		return str;
}
// innerHTML
function Print_innerHTML( id, value )
{
	document.getElementById( id ).innerHTML = value;
//	document.all( id ).innerHTML = value;
	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;
}