/* Copyright (c) 2008 by Fabio aka faboski Gullo.
 * 
 * nostale.sp.js is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 * 
 * nostale.sp.js is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with nostale.sp.js; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/

var abilita = {
	"Precisione":0,
	"Colpo mortale":0,
	"Danno del colpo mortale":0, //"Critici":0,
	"Diminuzione critici":0,
	"Diminuzione danno magico":0,
	"Diminuzione colpo mortale":0,
	"Resistenza Acqua/Fuoco/Luce/Oscurita'":0, //"Resistenza Acqua/Fuoco/Luce/Oscurita'":0,
	"MP":0,
	"HP/MP":0,
	"Elemento":0,
	"Aumento potenza d'attacco":0,
	"Elusione":0,
	"HP":0,
	"Aumento difesa":0
};

function point(eid, action, tipologia) {
	var e = $(eid);
	var ea = $(eid + 'a');
	var ef = $(eid + 'f');
	var punti = $('#punti');
	var abilita = $('#abilita');


	var avalue = parseInt(e.html());
	var eavalue = parseInt(ea.html());
	if(action == 'u' && avalue < 100) {
		e.html(avalue + 1);
		ea.html(punti_aumento(avalue + 1, tipologia));
		ef.html(parseInt(ef.html()) + valore_aumento(avalue + 1, tipologia));
		punti.html(punti.html() - punti_aumento(avalue + 1, tipologia));
		abilita_aumento(avalue + 1, tipologia, 1);
	} else if(action == 'd' && avalue > 0) {
		e.html(avalue - 1);
		//ea.html(punti_aumento(avalue, tipologia));
		ea.html(punti_aumento(avalue - 1, tipologia));
		ef.html(parseInt(ef.html()) - valore_aumento(avalue, tipologia));
		punti.html(parseInt(punti.html()) + punti_aumento(avalue, tipologia));
		abilita_aumento(avalue, tipologia, -1);
	}
	//abilita_aumento(avalue + 1, tipologia);
	stampa_abilita();
	make_link();
}

//Calcolo punti con gli up
function calcolo_punti_sp(up, job) {
	livellosp = Array(5,5,5,5,8,8,10,10,12,12,15,15,18,20,25);

	var punti = 0;
	if(job < 20) { return 0; }
	for(i=0; i < up; i++) {
		punti += livellosp[i];
	}
	punti = punti + ((job - 20) * 3);

	return punti;
}

//Calcola e ritorna i punti necessari per effettuare l'aumento
function aggiungi_aumento(aumento_attuale, aumento_richiesto, tipologia, funzione) {
	var punti = 0;

	if(aumento_attuale > 0) {
		punti = aggiungi_aumento(0, aumento_attuale, tipologia);
	}

	for(i = aumento_attuale; i < aumento_richiesto; i++) {
		punti += funzione(i + 1, tipologia, 1);
		//abilita_aumento(avalue + 1,tipologia);
	}
	return punti;
}

function aggiornamento_punti(){
	var up = document.getElementById('up');
	var job = document.getElementById('job');
	var punti = document.getElementById('punti');
	var punti_tot = document.getElementById('punti_tot');
	punti.innerHTML = punti_tot.innerHTML = calcolo_punti_sp(up.value,job.value);

	var count = 0;
	count += aggiungi_aumento(0, $('#a').html(), 'attacco', punti_aumento);
	count += aggiungi_aumento(0, $('#d').html(), 'difesa', punti_aumento);
	count += aggiungi_aumento(0, $('#e').html(), 'elemento', punti_aumento);
	count += aggiungi_aumento(0, $('#h').html(), 'hpmp', punti_aumento);

	$('#af').html(aggiungi_aumento(0, $('#a').html(), 'attacco', valore_aumento));
	$('#df').html(aggiungi_aumento(0, $('#d').html(), 'difesa', valore_aumento));
	$('#ef').html(aggiungi_aumento(0, $('#e').html(), 'elemento', valore_aumento));
	$('#hf').html(aggiungi_aumento(0, $('#h').html(), 'hpmp', valore_aumento));

	$('#aa').html(punti_aumento($('#a').html(), 'attacco'));
	$('#da').html(punti_aumento($('#d').html(), 'difesa'));
	$('#ea').html(punti_aumento($('#e').html(), 'elemento'));
	$('#ha').html(punti_aumento($('#h').html(), 'hpmp'));

	reset_abilita()
		aggiungi_aumento(0, $('#a').html(), 'attacco', abilita_aumento)
		aggiungi_aumento(0, $('#d').html(), 'difesa', abilita_aumento)
		aggiungi_aumento(0, $('#e').html(), 'elemento', abilita_aumento)
		aggiungi_aumento(0, $('#h').html(), 'hpmp', abilita_aumento)

		punti.innerHTML = punti.innerHTML - count;
	make_link();
	stampa_abilita();
	aggiornamento_costi($('#up').val());
}

/*In base all'aumento gia' ottenuto calcola quanti punti usare*/
punti_aumento = function(aumento, tipologia) {
	switch (tipologia) {
		case 'attacco':
			if (aumento >= 1 && aumento <= 10) { return 1; }
			else if(aumento >= 11 && aumento <= 19) { return 2; }
			else if(aumento >= 20 && aumento <= 39) { return 3; }
			else if(aumento >= 40 && aumento <= 59) { return 4; }
			else if(aumento >= 60 && aumento <= 79) { return 5; }
			else if(aumento >= 80 && aumento <= 90) { return 6; }
			else if(aumento >= 91 && aumento <= 97) { return 7; }
			else if(aumento >= 98 && aumento <= 98) { return 8; }
			else if(aumento >= 98 && aumento <= 98) { return 8; }
			else if(aumento >= 99 && aumento <= 99) { return 9; }
			else if(aumento >= 100 && aumento <= 100) { return 10; }
			break;
		case 'difesa':
			if (aumento >= 1 && aumento <= 10) { return 1; }
			else if(aumento >= 11 && aumento <= 29) { return 2; }
			else if(aumento >= 30 && aumento <= 40) { return 3; }
			else if(aumento >= 41 && aumento <= 60) { return 4; }
			else if(aumento >= 61 && aumento <= 75) { return 5; }
			else if(aumento >= 76 && aumento <= 84) { return 6; }
			else if(aumento >= 85 && aumento <= 94) { return 7; }
			else if(aumento >= 95 && aumento <= 99) { return 8; }
			else if(aumento >= 100 && aumento <= 100) { return 9; }
			break;
		case 'elemento':
			if (aumento >= 1 && aumento <= 20) { return 1; }
			else if(aumento >= 21 && aumento <= 30) { return 2; }
			else if(aumento >= 30 && aumento <= 40) { return 3; }
			else if(aumento >= 41 && aumento <= 50) { return 4; }
			else if(aumento >= 51 && aumento <= 70) { return 5; }
			else if(aumento >= 71 && aumento <= 80) { return 6; }
			else if(aumento >= 81 && aumento <= 100) { return 8; }
			break;
		case 'hpmp':
			if (aumento >= 1 && aumento <= 10) { return 1; }
			else if(aumento >= 11 && aumento <= 30) { return 2; }
			else if(aumento >= 31 && aumento <= 50) { return 3; }
			else if(aumento >= 51 && aumento <= 60) { return 4; }
			else if(aumento >= 61 && aumento <= 70) { return 5; }
			else if(aumento >= 71 && aumento <= 80) { return 6; }
			else if(aumento >= 81 && aumento <= 90) { return 8; }
			else if(aumento >= 91 && aumento <= 100) { return 7; }
			break;
		default:
			break;
	}
}

/*In base all'aumento gia' ottenuto calcola quanti valori aggiunti dare*/
valore_aumento = function(aumento, tipologia) {
	switch (tipologia) {
		case 'attacco':
			if (aumento >= 1 && aumento <= 10) { return 5; }
			else if(aumento >= 11 && aumento <= 20) { return 6; }
			else if(aumento >= 21 && aumento <= 30) { return 8; }
			else if(aumento >= 31 && aumento <= 40) { return 7; }
			else if(aumento >= 41 && aumento <= 50) { return 9; }
			else if(aumento >= 51 && aumento <= 60) { return 10; }
			else if(aumento >= 61 && aumento <= 70) { return 11; }
			else if(aumento >= 71 && aumento <= 80) { return 13; }
			else if(aumento >= 81 && aumento <= 90) { return 14; }
			else if(aumento >= 91 && aumento <= 94) { return 15; }
			else if(aumento >= 95 && aumento <= 95) { return 16; }
			else if(aumento >= 96 && aumento <= 97) { return 17; }
			else if(aumento >= 98 && aumento <= 100) { return 20; }
			break;
		case 'difesa':
			if (aumento >= 1 && aumento <= 10) { return 1; }
			else if(aumento >= 11 && aumento <= 20) { return 2; }
			else if(aumento >= 21 && aumento <= 30) { return 3; }
			else if(aumento >= 31 && aumento <= 40) { return 4; }
			else if(aumento >= 41 && aumento <= 50) { return 5; }
			else if(aumento >= 51 && aumento <= 60) { return 6; }
			else if(aumento >= 61 && aumento <= 70) { return 8; }
			else if(aumento >= 71 && aumento <= 80) { return 8; }
			else if(aumento >= 81 && aumento <= 90) { return 9; }
			else if(aumento >= 91 && aumento <= 100) { return 10; }
			break;
		case 'elemento':
			if (aumento >= 1 && aumento <= 50) { return 1; }
			else if(aumento >= 51 && aumento <= 100) { return 2; }
			break;
		case 'hpmp':
			if (aumento >= 1 && aumento <= 50) { return 1; }
			else if(aumento >= 51 && aumento <= 100) { return 2; }
			break;
		default:
			break;
	}
}

function scroll(q) {
	var a = $('#abilita');
	var aw = $('#abilita-wrapper');
	//$('#debug').html(a.height());
	if(q > 0) {
		if(parseInt(a.css('margin-top')) >= (parseInt(aw.height()) - parseInt(a.height())) ) {
			a.css('margin-top', parseInt(a.css('margin-top')) - q );
		}
	} else {
		if(parseInt(a.css('margin-top')) < 0) {
			a.css('margin-top', parseInt(a.css('margin-top')) - q );
		}
	}
}

function stampa_abilita() {
	$('#abilita').html('');
	$('#abilita-icone-wrapper').html('');
	for(var nome in abilita) {
		if(abilita[nome] > 0) {
			$('#abilita').append(t[nome] + ' +'); //Colpo mortale"
			$('#abilita').append(abilita[nome] + '<br />'); //12
			$('#abilita-icone-wrapper').append('<div class="icone" title="' + t[nome] + '"><img class="abilita" alt="' + t[nome] + '" src="images/abilita-' + nome.replace(/\//g,'-').replace(/ /g,'.').toLowerCase() + '.png" /><div class="icone-text">' + abilita[nome] + '</div></div>');
		}
	}
}

/*In base all'aumento gia' ottenuto calcola che abilita' dare*/
function abilita_aumento(aumento, tipologia, ud) {
	switch (tipologia) {
		case 'attacco':
			if (aumento == 1) { abilita["Aumento potenza d'attacco"] += (5 * ud); }
			else if (aumento == 10) { abilita["Precisione"] += (10 * ud); }
			else if (aumento == 20) { abilita["Colpo mortale"] += (2 * ud); }
			else if (aumento == 30) { abilita["Aumento potenza d'attacco"] += (5 * ud); abilita["Precisione"] += (10 * ud); }
			else if (aumento == 40) { abilita["Danno del colpo mortale"] += (10 * ud); }
			else if (aumento == 50) { abilita["HP/MP"] += (200 * ud); }
			else if (aumento == 60) { abilita["Precisione"] += (15 * ud); }
			else if (aumento == 70) { abilita["Aumento potenza d'attacco"] += (5 * ud); abilita["Precisione"] += (15 * ud); }
			else if (aumento == 80) { abilita["Colpo mortale"] += (3 * ud); }
			else if (aumento == 90) { abilita["Danno del colpo mortale"] += (20 * ud); }
			else if (aumento == 100) { abilita["Aumento potenza d'attacco"] += (5 * ud); abilita["Precisione"] += (20 * ud); abilita["Colpo mortale"] += (3 * ud); abilita["Danno del colpo mortale"] += (20 * ud); abilita["HP/MP"] += (200 * ud); }
			break;
		case 'difesa':
			if(aumento == 10) { abilita["Elusione"] += (5 * ud); }
			else if(aumento == 20) { abilita["Diminuzione critici"] += (2 * ud); }
			else if(aumento == 30) { abilita["HP"] += (100 * ud); }
			else if(aumento == 40) { abilita["Diminuzione critici"] += (2 * ud); }
			else if(aumento == 50) { abilita["Elusione"] += (5 * ud); }
			else if(aumento == 60) { abilita["HP"] += (200 * ud); }
			else if(aumento == 70) { abilita["Diminuzione critici"] += (3 * ud); }
			else if(aumento == 75) { abilita["Resistenza Acqua/Fuoco/Luce/Oscurita'"] += (2 * ud); }
			else if(aumento == 80) { abilita["Elusione"] += (10 * ud); abilita["Diminuzione critici"] += (3 * ud); }
			else if(aumento == 90) { abilita["Resistenza Acqua/Fuoco/Luce/Oscurita'"] += (3 * ud); }
			else if(aumento == 95) { abilita["HP"] += (300 * ud); }
			else if(aumento == 100) { abilita["Elusione"] += (20 * ud); abilita["Resistenza Acqua/Fuoco/Luce/Oscurita'"] += (5 * ud); }
			break;
		case 'elemento':
			if (aumento == 1) { abilita["Elemento"] += (2 * ud); }
			else if(aumento == 10) { abilita["MP"] += (100 * ud); }
			else if(aumento == 20) { abilita["Diminuzione danno magico"] += (5 * ud); }
			else if(aumento == 30) { abilita["Elemento"] += (2 * ud); abilita["Resistenza Acqua/Fuoco/Luce/Oscurita'"] += (2 * ud); }
			else if(aumento == 40) { abilita["MP"] += (100 * ud); }
			else if(aumento == 50) { abilita["Diminuzione danno magico"] += (5 * ud); }
			else if(aumento == 60) { abilita["Elemento"] += (2 * ud); abilita["Resistenza Acqua/Fuoco/Luce/Oscurita'"] += (3 * ud); }
			else if(aumento == 70) { abilita["MP"] += (100 * ud); }
			else if(aumento == 80) { abilita["Diminuzione danno magico"] += (5 * ud); }
			else if(aumento == 90) { abilita["Elemento"] += (2 * ud); abilita["Resistenza Acqua/Fuoco/Luce/Oscurita'"] += (4 * ud);}
			else if(aumento == 100) { abilita["Elemento"] += (2 * ud); abilita["MP"] += (200 * ud); abilita["Diminuzione danno magico"] += (5 * ud); abilita["Resistenza Acqua/Fuoco/Luce/Oscurita'"] += (6 * ud); }
			break;
		case 'hpmp':
			if (aumento == 5) { abilita["Aumento potenza d'attacco"] += (5 * ud); }
			else if(aumento == 10) { abilita["Aumento potenza d'attacco"] += (5 * ud); }
			else if(aumento == 15) { abilita["Aumento potenza d'attacco"] += (5 * ud); }
			else if(aumento == 20) { abilita["Aumento potenza d'attacco"] += (5 * ud); abilita["Aumento difesa"] += (10 * ud); }
			else if(aumento == 25) { abilita["Aumento potenza d'attacco"] += (5 * ud); }
			else if(aumento == 30) { abilita["Aumento potenza d'attacco"] += (5 * ud); }
			else if(aumento == 35) { abilita["Aumento potenza d'attacco"] += (5 * ud); }
			else if(aumento == 40) { abilita["Aumento potenza d'attacco"] += (5 * ud); abilita["Aumento difesa"] += (15 * ud); }
			else if(aumento == 45) { abilita["Aumento potenza d'attacco"] += (10 * ud); }
			else if(aumento == 50) { abilita["Aumento potenza d'attacco"] += (10 * ud); abilita["Resistenza Acqua/Fuoco/Luce/Oscurita'"] += (2 * ud); }
			else if(aumento == 55) { abilita["Aumento potenza d'attacco"] += (10 * ud); }
			else if(aumento == 60) { abilita["Aumento potenza d'attacco"] += (10 * ud); }
			else if(aumento == 65) { abilita["Aumento potenza d'attacco"] += (10 * ud); }
			else if(aumento == 70) { abilita["Aumento potenza d'attacco"] += (10 * ud); abilita["Aumento difesa"] += (20 * ud); }
			else if(aumento == 75) { abilita["Aumento potenza d'attacco"] += (15 * ud); }
			else if(aumento == 80) { abilita["Aumento potenza d'attacco"] += (15 * ud); }
			else if(aumento == 85) { abilita["Aumento potenza d'attacco"] += (15 * ud); abilita["Diminuzione colpo mortale"] += (1 * ud); }
			else if(aumento == 86) { abilita["Diminuzione colpo mortale"] += (1 * ud); }
			else if(aumento == 87) { abilita["Diminuzione colpo mortale"] += (1 * ud); }
			else if(aumento == 88) { abilita["Diminuzione colpo mortale"] += (1 * ud); }
			else if(aumento == 90) { abilita["Aumento potenza d'attacco"] += (15 * ud); abilita["Aumento difesa"] += (25 * ud); }
			else if(aumento == 91) { abilita["Elusione"] += (2 * ud); }
			else if(aumento == 92) { abilita["Elusione"] += (2 * ud); }
			else if(aumento == 93) { abilita["Elusione"] += (2 * ud); }
			else if(aumento == 94) { abilita["Elusione"] += (2 * ud); }
			else if(aumento == 95) { abilita["Aumento potenza d'attacco"] += (20 * ud); abilita["Elusione"] += (2 * ud); }
			else if(aumento == 96) { abilita["Elusione"] += (2 * ud); }
			else if(aumento == 97) { abilita["Elusione"] += (2 * ud); }
			else if(aumento == 98) { abilita["Elusione"] += (2 * ud); }
			else if(aumento == 99) { abilita["Elusione"] += (2 * ud); }
			else if(aumento == 100) { abilita["Aumento potenza d'attacco"] += (20 * ud); abilita["Aumento difesa"] += (30 * ud); abilita["Resistenza Acqua/Fuoco/Luce/Oscurita'"] += (3 * ud); abilita["Elusione"] += (2 * ud); abilita["Diminuzione colpo mortale"] += (1 * ud); }
			break;
		default:
			break;
	}
}

function make_link() {
	var link = $('#link');
	if($('#nome').val() != '') { var nome = $('#nome').val().replace(/ /g,'.'); } else { var nome = '0'; }
	var job = (parseInt($('#job').val()) > 0) ? '-' + $('#job').val() : '-0';
	var jobn = $('#job').val();
	var up = (parseInt($('#up').val()) > 0) ? '-' + $('#up').val() : '-0';
	var upn = $('#up').val();
	var a = (parseInt($('#a').html()) > 0) ? '-' + $('#a').html() : '-0';
	var d = (parseInt($('#d').html()) > 0) ? '-' + $('#d').html() : '-0';
	var e = (parseInt($('#e').html()) > 0) ? '-' + $('#e').html() : '-0';
	var h = (parseInt($('#h').html()) > 0) ? '-' + $('#h').html() : '-0';
	var an = $('#a').html();
	var dn = $('#d').html();
	var en = $('#e').html();
	var hn = $('#h').html();

	var lang = $('#lang').html() + '/';
	var basepath = 'http://nostale.800a.org/';
	var url = basepath+lang+nome+job+up+a+d+e+h;
	var text = '<p><a id="url" href="'+url+'">'+url+'</a></p>';
	var antipixel = '';
	var antipixelp = '';
	if(nome != '0') {
		var urlap = nome+job+up+a+d+e+h;
		antipixel = '<p><img src="ap-'+urlap+'.png" /><br />[img]'+basepath+'ap-'+urlap+'.png[/img]</p>';
		antipixelp = '<p><img src="app-'+urlap+'.png" /><br />[img]'+basepath+'app-'+urlap+'.png[/img]</p>';
	}
	/*link.html(text+antipixel+antipixelp);*/
	link.html(text);
	if(nome == '0') { nome = 'La tua carta!'; }
	$('#nome-carta').html(t[$('#nome').val()]);
}

function aggiornamento_costi(up){
	$.get('nostale.sp.upgrade.php', { u: up }, function(data) {
		$('#costi').html('');
		$.each(data, function(chiave, valore){
			$('#costi').append('<i>' + t[chiave] + '</i>: <b>' + valore + '</b><br />');
		});
	});
}

function calcola(){
	var a = $('#a').html(); var d = $('#d').html(); var e = $('#e').html(); var h = $('#h').html();
	$.get('calcolo-automatico.php', { 'a': a, 'd': d, 'e': e, 'h': h }, function(data) {
		$('#calcoli').html('');
		$('#calcoli').html('<h2>Valori Possibili?</h2>');
		$.each(data, function(chiave, valore){
			$('#calcoli').append('<i>' + chiave + '</i>: <b>' + valore + '</b><br />');
		});
	});
	$('#up-img').attr('src', 'up.png');
}

function reset() {
	$('#a').html('0'); $('#d').html('0'); $('#e').html('0'); $('#h').html('0');
	$('#aa').html('0'); $('#da').html('0'); $('#ea').html('0'); $('#ha').html('0');
	$('#af').html('0'); $('#df').html('0'); $('#ef').html('0'); $('#hf').html('0');
	$('#punti').html('0'); $('#punti_tot').html('0');
	$('#job').val('20'); $('#up').val('0');
	$('#abilita').html('');
	$('#abilita-icone-wrapper').html('');
	$('#link').html('');
	$('#nome-carta').html('La tua carta!');
	$("#nome").val('-').attr("selected", "selected");
	reset_abilita()
}

function reset_abilita() {
	/* FIXME */
	abilita = {
		"Precisione":0,
		"Colpo mortale":0,
		"Danno del colpo mortale":0, //"Critici":0,
		"Diminuzione critici":0,
		"Diminuzione danno magico":0,
		"Diminuzione colpo mortale":0,
		"Resistenza Acqua/Fuoco/Luce/Oscurita'":0, //"Resistenza Acqua/Fuoco/Luce/Oscurita'":0,
		"MP":0,
		"HP/MP":0,
		"Elemento":0,
		"Aumento potenza d'attacco":0,
		"Elusione":0,
		"HP":0,
		"Aumento difesa":0
	};
}
function save(user_id) {
		var url = $('#url').html();
		var nome = $('#nome-carta').html();
		var job = $('#job').val();
		var up = $('#up').val();
		var a = $('#a').html();
		var d = $('#d').html();
		var e = $('#e').html();
		var h = $('#h').html();

		$.post('salva.php', {
						'user_id': user_id,
						'url': url,
						'nome': nome,
						'job': job,
						'up': up,
						'a': a,
						'd': d,
						'e': e,
						'h': h
				}
		);
}

$(document).ready(function() {
		$("#nome").val($('#currentn').val()).attr("selected", "selected");
		aggiornamento_punti();
		$('#info_b').click(function(){
			$('#info').show();
			$('#info_b').hide();
		});
		$('#info').click(function(){
			$('#info_b').show();
			$('#info').hide();
		});
});
