// Skill Simulator Functions By yC at http://ratemyserver.net

function add_skpt(object){

	// sk_type should be 1 for 1st job, 2 for 2nd job, 3 for 3rd job

	// first job skill pt into first job skill
	if(object.sk_type <= 1 && object.max_lvl > object.cur_lvl && skill_pt_left > 0){
		skill_pt_used++;
		used_1st.innerHTML = skill_pt_used;
		
		skill_pt_left--;
		unuse_1st.innerHTML = skill_pt_left;
		
		return 1;	// success
	
	// 2nd job skill pt into 1st or 2nd job skill
	}else if(object.sk_type <= 2 && object.max_lvl > object.cur_lvl && sec_skill_pt_left > 0){
		sec_skill_pt_used++;
		used_2nd.innerHTML = sec_skill_pt_used;
		
		sec_skill_pt_left--;
		unuse_2nd.innerHTML = sec_skill_pt_left;
		
		// counter for 2nd job skill pt into 1st job skill
		if(object.sk_type == 1){
			sec_backward_skpt++;
			if(sec_backward_skpt == 1){
				alert('Putting secondary job skill point into first job skill.');
			}
		}

		return 1;	// success
	
	// 3rd/Ren skill pt into 1st/2nd/3rd job skill
	}else if(object.sk_type <= 3 && object.max_lvl > object.cur_lvl && ren_skill_pt_left > 0){
		ren_skill_pt_used++;
		used_ren.innerHTML = ren_skill_pt_used;

		ren_skill_pt_left--;
		unuse_ren.innerHTML = ren_skill_pt_left;

		// counter for 3rd job skill pt put into 1st or 2nd job skill
		if(object.sk_type == 1){
			ren_backward_skpt_to_1st++;
			if(ren_backward_skpt_to_1st == 1){
				alert('Putting third job skill point into first job skill.');
			}
		}else if(object.sk_type == 2){
			ren_backward_skpt_to_2nd++;
			if(ren_backward_skpt_to_2nd == 1){
				alert('Putting third job skill point into second/trans job skill.');
			}
		}
		
		return 1;	// success
		
	// add over skill pts to first job skill over counter
	}else if (object.sk_type <= 1 && object.max_lvl > object.cur_lvl && skill_pt_left <= 0){
		 skpt_over++;
		 document.getElementById("skpt_over").innerHTML = "<span style='color:red'> Over: " + skpt_over + "</span>";
		 
		 return 1;	
	
	// add over skill pts to 2nd over skill counter
	}else if (object.sk_type <= 2 && object.max_lvl > object.cur_lvl && sec_skill_pt_left <= 0){
		sec_skpt_over++;
		document.getElementById("sec_skpt_over").innerHTML = "<span style='color:red'> Over: " + sec_skpt_over + "</span>";
	
		return 1;

	// add over skill pts to 3rd/Ren over skill counter
	}else if (object.sk_type <= 3 && object.max_lvl > object.cur_lvl && ren_skill_pt_left <= 0){
		ren_skpt_over++;
		document.getElementById("ren_skpt_over").innerHTML = "<span style='color:red'> Over: " + ren_skpt_over + "</span>";
	
		return 1;
	}

	return 0;	// failed

}


function take_skpt(object, skpt){

	if(object.special)	// no need to take skill point from quest/wedding/soul linked skills
		return 0;	

	// remove first job skill
	if(object.cur_lvl > 0 && object.sk_type <= 1 && object.cur_lvl - skpt >= 0){		
	
		// change skill lvl
		object.cur_lvl-=skpt;
		
		td = document.getElementById(pref_curlvl + object.s_id);
		if(td && object.cur_lvl > 0){
			td.innerHTML = object.cur_lvl + ' / ' + object.max_lvl ;
		}else if (td){
			td.innerHTML = 'Na / ' + object.max_lvl ;
		}
		
		var skpt_minus = skpt;
		
		// take care of over the limit skill pts
		while(skpt_over > 0 && skpt_minus > 0){
			skpt_over--;
			skpt_minus--;
		}
		if(skpt_over <= 0){
			 document.getElementById("skpt_over").innerHTML = "";
		}else{
			 document.getElementById("skpt_over").innerHTML = "<span style='color:red'> Over: " + skpt_over + "</span>";
		}
		
		// take 3rd job pt out first if any, then 2nd job's
		if(ren_backward_skpt_to_1st > 0){	// there are third job skill pt into first job skill
			// has to do it 1 by 1 to know when thid job backward_skpt is used up		
			while(ren_backward_skpt_to_1st > 0 && skpt_minus > 0){
				
				// either take from over or from skill pt left and refresh "Over:" indicator
				if(ren_skpt_over > 0){
					ren_skpt_over--;
					document.getElementById("ren_skpt_over").innerHTML = "<span style='color:red'> Over: " + ren_skpt_over + "</span>";
				}else{
					ren_skill_pt_used--;
					used_ren.innerHTML = ren_skill_pt_used;
			
					ren_skill_pt_left++;
					unuse_ren.innerHTML = ren_skill_pt_left;
				}

				ren_backward_skpt_to_1st--;
				skpt_minus--;
			}

		}else if(sec_backward_skpt > 0){	// there are second job skill pt into first job skill
			
			while(sec_backward_skpt > 0 && skpt_minus > 0){
				// either take from over or from skill pt left
				if(sec_skpt_over > 0){
					sec_skpt_over--;
					document.getElementById("sec_skpt_over").innerHTML = "<span style='color:red'> Over: " + sec_skpt_over + "</span>";
				}else{
					sec_skill_pt_used--;
					used_2nd.innerHTML = sec_skill_pt_used;
			
					sec_skill_pt_left++;
					unuse_2nd.innerHTML = sec_skill_pt_left;
				}
			
				sec_backward_skpt--;
				skpt_minus--;
			}
		}
		
		if(skpt_minus > 0){	// taken out 2nd job skill pt if first job skill still have left over, add to first job skil pt
		
			// skill pt from first job skill pt			
			skill_pt_used-=skpt_minus;
			used_1st.innerHTML = skill_pt_used;
			
			skill_pt_left+=skpt_minus;
			unuse_1st.innerHTML = skill_pt_left;	
		}
	
		return 1;	// success
	
	// remove second job skill
	}else if(object.cur_lvl > 0 && object.sk_type <= 2){
		
		// change skill lvl
		object.cur_lvl-=skpt;
		
		td = document.getElementById(pref_curlvl + object.s_id);
		if(td && object.cur_lvl > 0){
			td.innerHTML = object.cur_lvl + ' / ' + object.max_lvl ;
		}else if (td){
			td.innerHTML = 'Na / ' + object.max_lvl ;
		}
		
		var skpt_minus = skpt;
		
		// take care of 2nd job skill pt over the limit skill pts
		while(sec_skpt_over > 0 && skpt_minus > 0){
			sec_skpt_over--;
			skpt_minus--;
		}
		// update msg
		if(sec_skpt_over <= 0){
			 document.getElementById("sec_skpt_over").innerHTML = "";
		}else{
			 document.getElementById("sec_skpt_over").innerHTML = "<span style='color:red'> Over: " + sec_skpt_over + "</span>";
		}
		
		if(ren_backward_skpt_to_2nd > 0){	// there are ren/third job skill pt into 2nd job skill
			
			// has to do it 1 by 1 to know when ren/third job backward_skpt is used up		
			while(ren_backward_skpt_to_2nd > 0 && skpt_minus > 0){
				
				if(ren_skpt_over > 0){	// reduce "over" indicator
					ren_skpt_over--;
					document.getElementById("ren_skpt_over").innerHTML = "<span style='color:red'> Over: " + ren_skpt_over + "</span>";
				}else{
					ren_skill_pt_used--;
					used_ren.innerHTML = ren_skill_pt_used;
			
					ren_skill_pt_left++;
					unuse_ren.innerHTML = ren_skill_pt_left;
				}
			
				ren_backward_skpt_to_2nd--;
				skpt_minus--;
			}
		}
		
		if(skpt_minus > 0){	// left over skpt or nothing happen 
			sec_skill_pt_used-=skpt_minus;
			used_2nd.innerHTML = sec_skill_pt_used;
			
			sec_skill_pt_left+=skpt_minus;
			unuse_2nd.innerHTML = sec_skill_pt_left;
		}

		return 1;	// success

	// remove renewal/third job skill
	}else if(object.cur_lvl > 0 && object.sk_type <= 3){
		
		// change skill lvl
		object.cur_lvl-=skpt;
		
		td = document.getElementById(pref_curlvl + object.s_id);
		if(td && object.cur_lvl > 0){
			td.innerHTML = object.cur_lvl + ' / ' + object.max_lvl ;
		}else if (td){
			td.innerHTML = 'Na / ' + object.max_lvl ;
		}
		
		var skpt_minus = skpt;
		
		// take care of 2nd job skill pt over the limit skill pts
		while(ren_skpt_over > 0 && skpt_minus > 0){
			ren_skpt_over--;
			skpt_minus--;
		}

		// update msg
		if(ren_skpt_over <= 0){
			 document.getElementById("ren_skpt_over").innerHTML = "";
		}else{
			 document.getElementById("ren_skpt_over").innerHTML = "<span style='color:red'> Over: " + ren_skpt_over + "</span>";
		}
		
		
		if(skpt_minus > 0){	// left over skpt or nothing happen 
			ren_skill_pt_used-=skpt_minus;
			used_ren.innerHTML = ren_skill_pt_used;
			
			ren_skill_pt_left+=skpt_minus;
			unuse_ren.innerHTML = ren_skill_pt_left;
		}
		
		return 1;	// success
	}
	
	return 0;	// fails

}

// detect broswer 
function check_broswer(string)
{
	place = navigator.userAgent.toLowerCase().indexOf(string) + 1;
	thestring = string;
	return place;
}

// handles first job level change event
function change_job_lvl(job_lvl_form){
	
	job_lvl_changed = job_lvl_form.job_lvl_select.options[job_lvl_form.job_lvl_select.selectedIndex].value;	
	
	skill_pt_left = job_lvl_changed - 1 - skill_pt_used;
	
	unuse = document.getElementById('sk_unused');
	unuse.innerHTML = skill_pt_left;
}


// handles sec/high job lvl change event
function sec_change_job_lvl(sec_job_lvl_form){

	if(!sec_job_lvl_form)	// if it's undefined due to only first job
		return;
	
	sec_job_lvl = sec_job_lvl_form.sec_job_lvl_select.options[sec_job_lvl_form.sec_job_lvl_select.selectedIndex].value;	
	
	sec_skill_pt_left = sec_job_lvl - 1 - sec_skill_pt_used;
	
	unuse = document.getElementById('sec_sk_unused');
	unuse.innerHTML = sec_skill_pt_left;
}

// handles renewal/third job lvl change event
function ren_change_job_lvl(ren_job_lvl_form){

	if(!ren_job_lvl_form)	// if it's undefined due to only first and sec/high job
		return;
	
	ren_job_lvl = ren_job_lvl_form.ren_job_lvl_select.options[ren_job_lvl_form.ren_job_lvl_select.selectedIndex].value;	
	
	ren_skill_pt_left = ren_job_lvl - 1 - ren_skill_pt_used;
	
	unuse = document.getElementById('ren_sk_unused');
	unuse.innerHTML = ren_skill_pt_left;
}

// handles DOM mouse event switch image 
function switch_img(img_id, new_pic){

	img_ele = document.getElementById(img_id);
	if(img_ele)
		img_ele.src = new_pic;

}


// throw in skills in addable/usable skill table
function show_skill(object, lvlup_bu_td_inner, cur_lvl_col_inner, max_lvl_col_inner){
	
	// remove skill from locked list
	if(document.getElementById(pref_sklock + object.s_id)){
		if(check_broswer('msie')){
			// the IE method
			document.getElementById(pref_sklock + object.s_id).deleteCell();	// get
			document.getElementById(pref_sklock + object.s_id).deleteCell(); 	// icon
			document.getElementById(pref_sklock + object.s_id).deleteCell(); 	// desc
			document.getElementById(pref_sklock + object.s_id).deleteCell(); 	// max lvl
			document.getElementById(pref_sklock + object.s_id).deleteCell();	// req
		}else{ // other method
			document.getElementById(pref_sklock + object.s_id).innerHTML = '';
		} 
	}
		
	icon = document.createElement('td');
	icon.innerHTML = pref_icon + object.icon + suf_icon;
	
	link = document.createElement('td');
	
	link_a = document.createElement('a');
	link_a.href = 'index.php?page=skill_db&skid=' + object.s_id;
	link_a.className = 'gen_small';
	
	var linkText = document.createTextNode(object.name);	// display link text
	link_a.appendChild(linkText);	
	
	var skill_db_link = pref_link + object.s_id + suf_link;
	link_a.onclick = function () { return popSkill(object.s_id,1,1); };
	
	link.appendChild(link_a);	// add <a> to <td>
	
	lvlup_button_td = document.createElement('td');
	lvlup_button_td.id = pref_lvlup_bu + object.s_id;
	lvlup_button_td.align = 'center';
	
	lvldown_button_td = document.createElement('td');
	lvldown_button_td.id = pref_lvldown_bu + object.s_id;
	lvldown_button_td.align = 'center';
	
	delsk_button_td = document.createElement('td');
	delsk_button_td.id = pref_delsk_bu + object.s_id;
	delsk_button_td.align = 'center';
	
	
	if(lvlup_bu_td_inner != '' || object.special){	// quest or?
	
		cur_lvl_col = document.createElement('td');
		cur_lvl_col.innerHTML = cur_lvl_col_inner;
		cur_lvl_col.align = 'center';
		cur_lvl_col.id = pref_curlvl + object.s_id;
		
		if(lvlup_bu_td_inner != '') // no button img needed 
			lvlup_button_td.innerHTML = lvlup_bu_td_inner;	 
		else
			lvlup_button_td.innerHTML = object.spec_status;	// soul linked or quest etc
				
		lvldown_button_td.innerHTML = 'Na';	// no button img needed 
		delsk_button_td.innerHTML = 'Na';

	}else{
	
		cur_lvl_col = document.createElement('td');
		cur_lvl_col.innerHTML = cur_lvl_col_inner + " / " + max_lvl_col_inner;
		cur_lvl_col.align = 'center';
		cur_lvl_col.id = pref_curlvl + object.s_id;
	
		// add skill button
		lvlup_button_td.appendChild(add_button(object));
	
	}
	
	sk_table = document.getElementById(pref_sk_block + object.s_id);
	sk_table.appendChild(icon);
	sk_table.appendChild(link);
	sk_table.appendChild(cur_lvl_col);
	sk_table.appendChild(lvlup_button_td);
	sk_table.appendChild(lvldown_button_td);
	sk_table.appendChild(delsk_button_td);
	
	object.visible = 1;
}


// throw in skills in locked skill table
function lock_skill(object, max_lvl_col_inner, req_inner){ 
	
	// remove skill from locked list
	if(document.getElementById(pref_sk_block + object.s_id)){
		if(check_broswer('msie') && document.getElementById(pref_sk_block + object.s_id).cells(0)){
			// the IE method
			document.getElementById(pref_sk_block + object.s_id).deleteCell();	// icon
			document.getElementById(pref_sk_block + object.s_id).deleteCell(); 	// desc
			document.getElementById(pref_sk_block + object.s_id).deleteCell(); 	// lvl
			document.getElementById(pref_sk_block + object.s_id).deleteCell(); 	// add
			document.getElementById(pref_sk_block + object.s_id).deleteCell();	// minus
			document.getElementById(pref_sk_block + object.s_id).deleteCell();	// remove
		}else if (!check_broswer('msie')) { // other method
			document.getElementById(pref_sk_block + object.s_id).innerHTML = '';
		}
	}	 
	
	
	getsk_button_td = document.createElement('td');
	
	
	// add in a get skill button	
	getsk_button_td.appendChild(get_button(object));
	
	icon = document.createElement('td');
	icon.innerHTML = pref_icon + object.icon + suf_icon;
	
	link = document.createElement('td');
	
	link_a = document.createElement('a');
	link_a.href = 'index.php?page=skill_db&skid=' + object.s_id;
	link_a.className = 'gen_small';
	
	var linkText = document.createTextNode(object.name);	// display link text
	link_a.appendChild(linkText);	
	
	var skill_db_link = pref_link + object.s_id + suf_link;
	link_a.onclick = function () { return popSkill(object.s_id,1,1) };
	
	link.appendChild(link_a);	// add <a> to <td>
	
	max_lvl_col = document.createElement('td');
	max_lvl_col.innerHTML = max_lvl_col_inner;
	max_lvl_col.align = 'center';
	
	req = document.createElement('td');
	req.innerHTML = req_inner;
	
	sk_locked = document.getElementById(pref_sklock + object.s_id);
	sk_locked.appendChild(getsk_button_td);
	sk_locked.appendChild(icon);
	sk_locked.appendChild(link);
	sk_locked.appendChild(max_lvl_col);
	sk_locked.appendChild(req);
	
	object.visible = 0;
	//object.cur_lvl = 0;
}


// add this skill and all it's parent skills & levels required
function get_skill(object, level){

	// make skill available
	show_skill(object, '', level, object.max_lvl);

	if(object.parent_arr){
		
		var arr = object.parent_arr;
		
		for(var i = 0; i < arr.length; i+=2){
			
			if(arr[i].visible == 0){
				// make skill available
				get_skill(arr[i], arr[i].cur_lvl);				
			}
			
			var flag = 0;
			// add the required level to the parent skill 
			for(var j = arr[i].cur_lvl; j < arr[i+1]; j++){
				
				add_level(arr[i]);
				
				if(flag == 0){
					alert_msg+= "Adding Skill: [" + arr[i].name + "] to level [" + arr[i+1] + "], required for [" + object.name + "].\n";			
					flag = 1;
				}			
			}
			
		}
	} 
}


// remove a skill and it's children skills
function del_skill(object){
	minus_skill(object, object.cur_lvl);
	return;
}

// build and return an add button for the object skill in the skill's column
function add_button(object){
	
	var up_img_id = pref_lvlup_bu_img + object.s_id;
	lvlup_button_img = document.createElement('img');	// add skill button
	lvlup_button_img.id = up_img_id;
	lvlup_button_img.src = icon_file_path + 'skill_out.gif';
	lvlup_button_img.border = 0;
	lvlup_button_img.onclick = function () { add_level(object); switch_img(up_img_id, icon_file_path + 'skill_click.gif');};
	lvlup_button_img.onmouseout = function ()  { switch_img(up_img_id, icon_file_path + 'skill_out.gif'); }
	lvlup_button_img.onmouseover = function () { switch_img(up_img_id, icon_file_path + 'skill_over.gif'); };
	lvlup_button_img.onmousedown = function () { switch_img(up_img_id, icon_file_path + 'skill_down.gif');}
	//lvlup_button_td.appendChild(lvlup_button_img);
	return lvlup_button_img;
}


// build and return a minus button for the object skill 
function minus_button(object){
	
	var down_img_id = pref_lvldown_bu_img + object.s_id;
	lvldown_button_img = document.createElement('img');	// add skill button
	lvldown_button_img.id = down_img_id;
	lvldown_button_img.src = icon_file_path + 'skilld_out.gif';
	lvldown_button_img.border = 0;
	lvldown_button_img.onclick = function () { minus_skill(object, 1); switch_img(down_img_id, icon_file_path + 'skilld_click.gif'); show_alert(); };
	lvldown_button_img.onmouseout = function ()  { switch_img(down_img_id, icon_file_path + 'skilld_out.gif'); }
	lvldown_button_img.onmouseover = function () { switch_img(down_img_id, icon_file_path + 'skilld_over.gif'); };
	lvldown_button_img.onmousedown = function () { switch_img(down_img_id, icon_file_path + 'skilld_down.gif');}
	return lvldown_button_img;
}


// build and return a get skill button for the object skill
function get_button(object){

	var getsk_bu_img = pref_getsk_bu_img + object.s_id;
	getsk_button_img = document.createElement('img');	// add skill button
	getsk_button_img.id = getsk_bu_img;
	getsk_button_img.src = icon_file_path + 'getsk_out.gif';
	getsk_button_img.border = 0;
	getsk_button_img.onclick = function () { if(object.special) get_skill(object, 1); else get_skill(object, 'Na'); show_alert(); };
	getsk_button_img.onmouseout = function ()  { switch_img(getsk_bu_img, icon_file_path + 'getsk_out.gif'); }
	getsk_button_img.onmouseover = function () { switch_img(getsk_bu_img, icon_file_path + 'getsk_over.gif'); };
	return getsk_button_img;

}


// build and return an del button for the object skill
function del_button(object){

	var del_img_id = pref_delsk_bu_img + object.s_id;
	delsk_button_img = document.createElement('img');	// add skill button
	delsk_button_img.id = del_img_id;
	delsk_button_img.src = icon_file_path + 'delsk_out.gif';
	delsk_button_img.border = 0;
	delsk_button_img.onclick = function () { del_skill(object); show_alert(); };
	delsk_button_img.onmouseout = function ()  { switch_img(del_img_id, icon_file_path + 'delsk_out.gif'); }
	delsk_button_img.onmouseover = function () { switch_img(del_img_id, icon_file_path + 'delsk_over.gif'); };
	delsk_button_td.appendChild(delsk_button_img);	
	return delsk_button_img;	

}


function show_alert(){
	if(alert_msg != "" && !document.getElementById('alert_mode').checked){
		alert(alert_msg);
	} 
	alert_msg = ""; // reset
}


function reset(){	// reset the whole skill sim to as loaded
	for(i = 0; i < obj_arr.length; i++){
		var skill = obj_arr[i];
		if(skill.visible == 1 && skill.req_list){	// visible and has requirements
			lock_skill(skill, skill.max_lvl, skill.req_list);
		}
		minus_skill(skill, skill.cur_lvl);
	}
	
	document.getElementById('report').innerHTML = '';
	document.getElementById('report_sum1').innerHTML = '';
	document.getElementById('report_sum2').innerHTML = '';	
	document.getElementById('report_sum3').innerHTML = '';
	document.getElementById('report_textarea').innerHTML = '';

}


function gen_report(){
	
	var report = "<br><table class = 'btext' align = 'center'>";
	var max_skname_length = 40;
	var empty_str = "                                        ";
	var report_copy = "";
	
	for(i = 0; i < obj_arr.length; i++){
		
		var skill = obj_arr[i];
		if(skill.cur_lvl > 0 && skill.visible == 1 && skill.special){
			report += "<tr height='20'><td width = '250' align = 'left'>" + skill.name + "</td><td> Level </td><td align = 'right'>" + skill.cur_lvl + "</td><td>" + skill.spec_status + "</td></tr>";
			report_copy += skill.name + empty_str.substring(0, max_skname_length - (skill.name).length) + "Lv " +  skill.cur_lvl + 
				" (" + (skill.spec_status).substring( (skill.spec_status).indexOf("<b>") + 3, (skill.spec_status).indexOf("</b>")) + ")\n";
		}else if(skill.cur_lvl > 0 && skill.visible == 1){
			report += "<tr height='20'><td width = '250' align = 'left'>" + skill.name + "</td><td> Level </td><td align = 'right'>" + skill.cur_lvl + "</td><td></td></tr>";
			report_copy += skill.name + empty_str.substring(0, max_skname_length - (skill.name).length) + "Lv " +  skill.cur_lvl + "\n";
		}
	}	
	
	report += "</table>";
	var report_sum1 = "<table class = 'btext' align = 'center'><tr><td width = '240px' align = 'right'>Total first job skill point used:</td><th align = 'left'>" + skill_pt_used + "/" + (job_lvl_changed - 1) + "</th><td width = '50px' align = 'right'>Left: </td><th align = 'left'>" + skill_pt_left + "</th><td width = '50px' align = 'right'>Over: </td><th align = 'left'>" + skpt_over + "</th></tr></table>";
	var report_sum2 = "<table class = 'btext' align = 'center'><tr><td width = '240px' align = 'right'>Total second job skill point used:</td><th align = 'left'>" + sec_skill_pt_used + "/" + (sec_job_lvl- 1) + "</th><td width = '50px' align = 'right'>Left: </td><th align = 'left'>" + sec_skill_pt_left + "</th><td width = '50px' align = 'right'>Over: </td><th align = 'left'>" + sec_skpt_over + "</th></tr></table>";
	var report_sum3 = "<table class = 'btext' align = 'center'><tr><td width = '240px' align = 'right'>Total third job skill point used:</td><th align = 'left'>" + ren_skill_pt_used + "/" + (ren_job_lvl- 1) + "</th><td width = '50px' align = 'right'>Left: </td><th align = 'left'>" + ren_skill_pt_left + "</th><td width = '50px' align = 'right'>Over: </td><th align = 'left'>" + ren_skpt_over + "</th></tr></table>";
	
	document.getElementById('report').innerHTML = report;
	document.getElementById('report_sum1').innerHTML = report_sum1;
	document.getElementById('report_sum2').innerHTML = report_sum2;
	document.getElementById('report_sum3').innerHTML = report_sum3;
	document.getElementById('report_textarea').innerHTML = "<textarea rows=3 cols=60 onClick='this.select()' style='font-family: \"Courier New\", monospace;'>" + report_copy + "\n" + 
		"\nTotal 1st job skill point used: " + skill_pt_used + "/" + (job_lvl_changed - 1) + " Left: " + skill_pt_left + " Over: " + skpt_over +
		"\nTotal 2nd job skill point used: " + sec_skill_pt_used + "/" + (sec_job_lvl- 1) + " Left: " + sec_skill_pt_left + " Over: " + sec_skpt_over + 
		"\nTotal 3rd job skill point used: " + ren_skill_pt_used + "/" + (ren_job_lvl- 1) + " Left: "  + ren_skill_pt_left + " Over: " + ren_skpt_over 
		+ "</textarea> <br><span class='ttext'>For best result on space alignment, save text using monospace fonts such <br> as 'Courier New' or place/share your build on pastebin.com.</span>";
	
}


