function init(){
	if((document.referrer!="")&&(document.referrer != "http://daigouji.fc2web.com/skill_red/index.html")){
		output2();
		return 0;
	}
	document.oncontextmenu = dammy;
	output();
	update();
}

function dammy(){
	return(false);
}

function save()
{
var s = "";
var i, j, temp="";
for(i = 0; i < ClassLvMax; i++){
	for(j = 0; j < SkillMax[i]; j++){
		temp = "" + Lv[i][j];
		if(temp.length != 2) temp = "0" + temp;
		s += temp;
	}
}
document.cookie = "";
}

function load()
{
var temp;
var i,j;
temp = document.cookie;
alert(temp);

for(i = 0; i < ClassLvMax; i++){
	for(j = 0; j < SkillMax[i]; j++){
		Lv[i][j] = eval(temp.substring(0,2));
		temp = temp.substring(2, temp.length);
	}
}
update();
}

function all_point_sum()
{
var i,j;
temp = 0;
for(i = 0; i < ClassLvMax; i++){
	for(j = 0; j < SkillMax[i]; j++){
		temp += point_sum(SkillLv[i][j],Lv[i][j]);
	}
}
return temp;
}

function point_sum(dif, lv)
{
	var pre=[0,0,1,5,20,45];
	if(lv != 0)
		return dif*(lv*(lv+1))/2 + pre[dif];
	else	return 0;
}

function update()
{
var i,j;
var n = 0;
var LV;
var pri;
var temp=0;
for(i = 0; i < ClassLvMax; i++){
	for(j = 0; j < SkillMax[i]; j++){
		document.forms[n].all['slv'].innerHTML = Lv[i][j];
		document.forms[n].all['next'].innerHTML = next(SkillLv[i][j],Lv[i][j]);
		temp += point_sum(SkillLv[i][j],Lv[i][j]);

		if( Lv[i][j] == 0 ){
			document.forms[n].all['down'].style.filter = 'Gray()';
			document.forms[n].all['ico'].style.filter = 'Gray()';
			document.forms[n].all[0].style.backgroundColor= '#eeeeee';
		}
		else{
			document.forms[n].all['down'].style.filter = '';
			document.forms[n].all['ico'].style.filter = '';
			document.forms[n].all[0].style.backgroundColor= '#CCCCFF';
		}

		if( Lv[i][j] == LvMax[i][j] )
			document.forms[n].all['up'].style.filter = 'Gray()';
		else
			document.forms[n].all['up'].style.filter = '';
		n++;
	}
}
	document.all["psum"].innerHTML = temp;
	lv = Math.floor((Math.sqrt(8*temp+1) - 1)/2);
	if( lv < 100 ){
		lv = "<font size=+2>" + lv + "</font>:" + (temp - lv*(lv+1)/2) + "/" + (lv+1);
	}
	else{
		temp -= 100*(100+1)/2;
		lv = Math.floor(temp/100)+100;
		lv = "<font size=+2>" + lv + "</font>:" + (temp%100) + "/" + (100);
	}
	document.all["LV"].innerHTML = lv;

}

function ck( lv, num, updown, upornoup)
{
var i,j;
var n,k,m,tlv;

if( updown < 0 ){
	for(n = 0; n < RePre[lv][num][0]; n++){
		if( RePre[lv][num][3*n +3] > Lv[lv][num]+updown)
			ck( RePre[lv][num][3*n+1], RePre[lv][num][3*n+2], -Lv[RePre[lv][num][3*n+1]][RePre[lv][num][3*n+2] ], 0);
	}
	Lv[lv][num] += updown;
	if(Lv[lv][num]<0) Lv[lv][num] = 0;
}///下げる場合，ここまで

else if( updown > 0){
	if( Lv[lv][num] == 0){ //前提をチェックするか否か
		if( PreCon[lv][num] != 0){ //前提ありなら，前提をあげる
//前提をあげる
k = 0;
n = PreCon[lv][num][k++];
for(m = 0; m < n; m++){
	if( PreCon[lv][num][k] < 0 ){
		k++;
		tlv = 1 - lv;
	}
	else	tlv = lv;

	if( Lv[tlv][ PreCon[lv][num][k] ] < PreCon[lv][num][k+1]) //前提をあげる必要があれば
		ck( tlv, PreCon[lv][num][k], PreCon[lv][num][k+1] - Lv[tlv][ PreCon[lv][num][k] ] ,0 );
	k += 2;
}
//前提をあげる，ここまで．

		}
	}
	Lv[lv][num] += updown;
	if(Lv[lv][num] > LvMax[lv][num]) Lv[lv][num] = LvMax[lv][num];
}
if(upornoup)
	update();
}

function next(dif, lv)
{
	var pre=[0,1,5,20,45];
	if(lv != 0)
		return dif*(lv+1);
	else	return pre[dif-1] + dif;
}
function exposition(lv, num)
{
var i, j, n, m, k, tlv,flag=0;
var os = "<br>　";
var atpoint = 0;
var tempLv = new Array(ClassLvMax);
tempLv[0] = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
tempLv[1] = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];


os += Name[lv][num] + "<hr>";
if( PreCon[lv][num] == 0){
	os += "　前提スキル<br>　　無し<br>";
}
else{
	k = 0;
	n = PreCon[lv][num][k++];
	os += "　前提スキル<br>";

	for(m = 0; m < n; m++){
		os += "　　";
		if( PreCon[lv][num][k] < 0){
			k++;
			tlv = 1 - lv;
			flag = 1;
			os += "#";
		}
		else	tlv = lv;

		if( Lv[tlv][PreCon[lv][num][k]] < PreCon[lv][num][k+1])
			os += "<font color='#550000'>*";
		else
			os += "<font>";

		os += Name[tlv][PreCon[lv][num][k]] + "：" + PreCon[lv][num][k+1] + "　now:" +　Lv[tlv][PreCon[lv][num][k]];

		if( Lv[tlv][PreCon[lv][num][k]] < PreCon[lv][num][k+1]){
			os += "　@" + (point_sum(SkillLv[tlv][PreCon[lv][num][k]],PreCon[lv][num][k+1])-point_sum(SkillLv[tlv][PreCon[lv][num][k]],Lv[tlv][PreCon[lv][num][k]])) +"p<br>";
			atpoint += (point_sum(SkillLv[tlv][PreCon[lv][num][k]],PreCon[lv][num][k+1])-point_sum(SkillLv[tlv][PreCon[lv][num][k]],Lv[tlv][PreCon[lv][num][k]]));
		}
		else
			os += "<br>";

		k += 2;

		os += "</font>";
	}	
}


for(i = 0; i < ClassLvMax; i++){ //オブジェクトの代入が要素ごとに行われていないための処置．見苦しい．
	for(j = 0; j < SkillMax[i]; j++){
		tempLv[i][j] = Lv[i][j];
	}
}

	var p1, p2;
	p1 = all_point_sum();
	ck(lv,num,1,0);
	p2 = all_point_sum();
	atpoint = p2 - p1;

for(i = 0; i < ClassLvMax; i++){
	for(j = 0; j < SkillMax[i]; j++){
		Lv[i][j] = tempLv[i][j];
	}
}


os += "<br>@" + atpoint + "point<br>";
os += "<br>";
return os;
}

function offexpo()
{
	var target = document.all["expo"];

	target.innerHTML ="";
	target.style.backgroundColor = "transparent";
	target.style.border = "0";
}

function expo(lv, num)
{
	var Y;
	var target = document.all["expo"];

	if(eval(event.y + 300) > document.body.clientHeight)
		Y = event.y + document.body.scrollTop - 150;
	else
		Y =event.y + document.body.scrollTop + 20;

	target.innerHTML = exposition(lv,num);
	target.style.left = event.x + document.body.scrollLeft + 20;
	target.style.top  = Y;
	target.style.backgroundColor = "#AAAAAA";
	target.style.border = "1 solid";

}

function output2()
{
	window.location.href="http://daigouji.fc2web.com/";
}

function output(){
var i,j;
var os ="";
for(i = 0; i < ClassLvMax; i++){

	for(j = 0; j < SkillMax[i]; j++){

		os += "<form>";
		os += "<div class='job" + i + "' " + "id='j" + i + "n" + j + "' style='position:absolute; top:" + (60*(j+2)) + "px; left:" + (350*i+100) + "px; width:250px; background-color: #CCCCFF; layer-background-color: #CCCCFF; height: 32px'>" +"\n";
		os += "<img name='ico' src='img/" + JobName + i + "_" + j + ".gif' onClick='ck(" + i + "," + j + "," + LvMax[i][j]+ ",1)' oncontextmenu='ck(" + i + "," + j + "," + -LvMax[i][j]+ ",1)' align=left> <span class='help' onMouseOver='expo(" + i + "," + j + ")' onMouseOut='offexpo()'>" + Name[i][j] + "</span><img name='up' align='right' src='img/up.gif' onClick='ck(" + i + "," + j + "," + "1,1)' oncontextmenu='ck(" + i + "," + j + "," + "10,1)'>" + "<img name='down' align='right' src='img/down.gif' onClick='ck(" + i + "," + j + "," + "-1,1)' oncontextmenu='ck(" + i + "," + j + "," + "-10,1)'><br>" + "\n";
		os += "<font id='slv'></font><font size='-2'>/" + LvMax[i][j] + "</font>"+ "　dif:" + SkillLv[i][j] + "　next:<font id='next'></font>" +"\n";

		os += "</div></form>" +"\n" +"\n";

		//document.write(os);
	}
}

os += "<form name='Lv'><div style='position:absolute; top:250px; left:800px;  width:150px; background-color: #CCCCFF; layer-background-color: #CCCCFF; height: 32px'>" + "\n";
os += "Ｌｖだよん:<font id='LV' >0</font><br>" + "\n";
os += "SkillPoint合計:<font id='psum' >0</font><br>" + "\n";
os += "<a href='JavaScript:save()'>save</a>　<a href='JavaScript:load()'>load</a><br>";
os += "";
os += "</div></form>";

os += "<div style='position:absolute;  top:400px; left:800px; width:300px; background-color:FFCCFF; border:1 solid;'><br>　スキル名にカーソルを合わせると前提スキルがわかります<br>注意：@pointに修正を加え，１あげるのに必要なポイントを計算するようにしました．前提，前々提，...，すべて計算されます．前提の合計に，さらに１上げるために必要なポイントも加算されていることに注意してください．</div>";
os += "<div id = 'expo' style='position:absolute;  top:400px; left:800px; width:300px; background-color:transparent;'></div>";


document.all['main'].innerHTML = os;
}// end of output


function getdd()
{
var i, j, ii, jj, sum, k, m, n, tlv, jjj;
var Pre;
var os = "";
var temp;
for(i = 0; i < ClassLvMax; i++){
os += "RePre[" + i + "] = [";
	for(j = 0; j < SkillMax[i]; j++){


sum = 0;
temp = "";
for(ii = 0; ii < ClassLvMax; ii++){
	for(jj = 0; jj < SkillMax[ii]; jj++){


k = 0;
Pre = PreCon[ii][jj];
if( Pre != 0){
	n = Pre[k++];
	for(m = 0; m < n; m++){
		if( Pre[k] < 0){
			k++;
			tlv = 1 - ii;
		}
		else
			tlv = ii;

		if(( Pre[k] == j ) && (tlv == i)){//前提です
			temp += ii + "," + jj + "," +  Pre[k+1]  + ",";
			sum++;
		}
		k += 2;
	}
}

	}
}
temp = "[" + sum + "," + temp + "],";
os += temp;

	}
	os += "];<br>";
}
document.write(os);
}