RatingR2 All Point

REREC, TrExMa, RatingR2 JP/EN/CHS + Season TI

// ==UserScript==
// @name           RatingR2 All Point
// @version        1.1 + VC'Modify
// @author         VF Tomato + VC 
// @description    REREC, TrExMa, RatingR2  JP/EN/CHS + Season TI
// @include	http://trophymanager.com/players/*
// @exclude	http://trophymanager.com/players/compare/*
// @exclude	http://trophymanager.com/players
// @namespace https://greasyfork.org/users/8015
// ==/UserScript==
var rou_factor = 0.00405;
var wage_rate = 27.55;
var wage_rate_new = 23.75;
//NOTE: if you want to do some translate , find the key word "translate" in this script  -- by vc
var lang = "ENG"; // default
lang = "CHS"; 

// Array to setup the weights of particular skills for each player's actual ability
// This is the direct weight to be given to each skill.
// Array maps to these skills:
//				   [Str,Sta,Pac,Mar,Tac,Wor,Pos,Pas,Cro,Tec,Hea,Fin,Lon,Set]
var positions = [[  1,  3,  1,  1,  1,  3,  3,  2,  2,  2,  1,  3,  3,  3], // D C
				 [  2,  3,  1,  1,  1,  3,  3,  2,  2,  2,  2,  3,  3,  3], // D L
				 [  2,  3,  1,  1,  1,  3,  3,  2,  2,  2,  2,  3,  3,  3], // D R
				 [  1,  2,  2,  1,  1,  1,  1,  1,  2,  2,  1,  3,  3,  3], // DM C
				 [  2,  3,  1,  1,  1,  3,  3,  2,  2,  2,  2,  3,  3,  3], // DM L
				 [  2,  3,  1,  1,  1,  3,  3,  2,  2,  2,  2,  3,  3,  3], // DM R
				 [  2,  2,  3,  1,  1,  1,  1,  1,  3,  1,  2,  3,  3,  3], // M C 
				 [  2,  2,  1,  1,  1,  1,  1,  1,  1,  1,  2,  3,  3,  3], // M L
				 [  2,  2,  1,  1,  1,  1,  1,  1,  1,  1,  2,  3,  3,  3], // M R
				 [  2,  3,  3,  2,  2,  1,  1,  1,  3,  1,  2,  1,  1,  3], // OM C
				 [  2,  2,  1,  3,  3,  2,  2,  3,  1,  1,  2,  2,  2,  3], // OM L
				 [  2,  2,  1,  3,  3,  2,  2,  3,  1,  1,  2,  2,  2,  3], // OM R
				 [  1,  2,  2,  3,  3,  2,  2,  3,  3,  2,  1,  1,  1,  3], // F
				 [  2,  3,  2,  1,  2,  1,  2,  2,  3,  3,  3]]; // GK

// Weights need to total 100
var weights = [ [85,12, 3],  // D C
				[70,25, 5],  // D L
				[70,25, 5],  // D R
				[90,10, 0],  // DM C
				[50,40,10],  // DM L
				[50,40,10],  // DM R
				[85,12, 3],  // M C			   
				[90, 7, 3],  // M L
				[90, 7, 3],  // M R
				[90,10, 0],  // OM C
				[60,35, 5],  // OM  L
				[60,35, 5],  // OMR
				[80,18, 2],  // F
				[50,42, 8]]; // GK

var weightR2 = [[	0.51872935	,	0.29081119	,	0.57222393	,	0.89735816	,	0.84487852	,	0.50887940	,	0.50887940	,	0.13637928	,	0.05248024	,	0.09388931	,	0.57549122	,	0.00000000	,	0.00000000	,	0.00000000	],	// DC
                [	0.46087883	,	0.31034824	,	0.65619359	,	0.73200504	,	0.70343948	,	0.49831122	,	0.46654859	,	0.16635132	,	0.22496087	,	0.19697949	,	0.48253326	,	0.07310254	,	0.02834753	,	0.00000000	],	// DL/R
                [	0.43732502	,	0.31888984	,	0.53618097	,	0.63897616	,	0.59319466	,	0.51330795	,	0.53166961	,	0.32536200	,	0.06340582	,	0.27886822	,	0.49996910	,	0.18940400	,	0.07344664	,	0.00000000	],	// DMC
                [	0.42233965	,	0.32373447	,	0.62437404	,	0.54169665	,	0.51669428	,	0.49853202	,	0.47851686	,	0.26551219	,	0.22685609	,	0.32146118	,	0.45396969	,	0.23513340	,	0.09117948	,	0.00000000	],	// DML/R
                [	0.34304950	,	0.35058989	,	0.49918296	,	0.34631352	,	0.30595388	,	0.52078076	,	0.56068322	,	0.52568923	,	0.08771222	,	0.47650463	,	0.41232903	,	0.41160135	,	0.15960981	,	0.00000000	],	// MC
                [	0.37404045	,	0.33153172	,	0.62642777	,	0.33260815	,	0.30559265	,	0.50117998	,	0.47502314	,	0.28759565	,	0.33838614	,	0.44322386	,	0.40347341	,	0.41859521	,	0.16232188	,	0.00000000	],	// ML/R
                [	0.31998474	,	0.35180968	,	0.49002842	,	0.23116817	,	0.19239312	,	0.52687030	,	0.57839880	,	0.53861416	,	0.07598706	,	0.56096162	,	0.39614367	,	0.53152625	,	0.20611401	,	0.00000000	],	// OMC
                [	0.36069138	,	0.33248748	,	0.62214126	,	0.20034326	,	0.17595073	,	0.50091992	,	0.47631079	,	0.29235505	,	0.35086625	,	0.52960856	,	0.39553712	,	0.54964726	,	0.21314094	,	0.00000000	],	// OML/R
                [	0.40324698	,	0.29906901	,	0.39676419	,	0.10106757	,	0.07620466	,	0.50471883	,	0.58512049	,	0.37506253	,	0.05291339	,	0.53882195	,	0.51604535	,	0.82935839	,	0.32160667	,	0.00000000	],	// F
                [	0.45462811	,	0.30278232	,	0.45462811	,	0.90925623	,	0.45462811	,	0.90925623	,	0.45462811	,	0.45462811	,	0.30278232	,	0.15139116	,	0.15139116	]];	// GK						

// REC weights Str				   Sta				  Pac				 Mar				 Tac				 Wor				Pos				   Pas				  Cro				 Tec				Hea				   Fin				  Lon				 Set
var weightR = [[0.653962303361921,  0.330014238020285, 0.562994547223387, 0.891800163983125,  0.871069095865164,  0.454514672470839, 0.555697278549252, 0.42777598627972,  0.338218821750765, 0.134348455965202, 0.796916786677566, 0.048831870932616, 0.116363443378865, 0.282347752982916],	//DC
			   [0.565605120229193,  0.430973382039533, 0.917125432457378, 0.815702528287723,  0.99022325015212,   0.547995876625372, 0.522203232914265, 0.309928898819518, 0.837365352274204, 0.483822472259513, 0.656901420858592, 0.137582588344562, 0.163658117596413, 0.303915447383549],	//DL/R
			   [0.55838825558912,   0.603683502357502, 0.563792314670998, 0.770425088563048,  0.641965853834719,  0.675495235675077, 0.683863478201805, 0.757342915150728, 0.473070797767482, 0.494107823556837, 0.397547163237438, 0.429660916538242, 0.56364174077388,  0.224791093448809],	//DMC
			   [0.582074038075056,  0.420032202680124, 0.7887541874616,   0.726221389774063,  0.722972329840151,  0.737617252827595, 0.62234458453736,  0.466946909655194, 0.814382915598981, 0.561877829393632, 0.367446981999576, 0.360623408340649, 0.390057769678583, 0.249517737311268],	//DML/R
			   [0.578431939417021,  0.778134685048085, 0.574726322388294, 0.71400292078636,   0.635403391007978,  0.822308254446722, 0.877857040588335, 0.864265671245476, 0.433450219618618, 0.697164252367046, 0.412568516841575, 0.586627586272733, 0.617905053049757, 0.308426814834866],	//MC
			   [0.497429376361348,  0.545347364699553, 0.788280917110089, 0.578724574327427,  0.663235306043286,  0.772537143243647, 0.638706135095199, 0.538453108494387, 0.887935381275257, 0.572515970409641, 0.290549550901104, 0.476180499897665, 0.526149424898544, 0.287001645266184],	//ML/R
			   [0.656437768926678,  0.617260722143117, 0.656569986958435, 0.63741054520629,   0.55148452726771,   0.922379789905246, 0.790553566121791, 0.999688557334153, 0.426203575603164, 0.778770912265944, 0.652374065121788, 0.662264393455567, 0.73120100926333,  0.274563618133769],	//OMC
			   [0.483341947292063,  0.494773052635464, 0.799434804259974, 0.628789194186491,  0.633847969631333,  0.681354437033551, 0.671233869875345, 0.536121458625519, 0.849389745477645, 0.684067723274814, 0.389732973354501, 0.499972692291964, 0.577231818355874, 0.272773352088982],	//OML/R
			   [0.493917051093473,  0.370423904816088, 0.532148929996192, 0.0629206658586336, 0.0904950078155216, 0.415494774080483, 0.54106107545574,  0.468181146095801, 0.158106484131194, 0.461125738338018, 0.83399612271067,  0.999828328674183, 0.827171977606305, 0.253225855459207],	//F
//			   For  Rez    Vit  Ind  One  Ref Aer  Sar  Com    Deg    Aru
			   [0.5, 0.333, 0.5, 1,   0.5, 1,  0.5, 0.5, 0.333, 0.333, 0.333]]; //GK

//				DC		   DL/R		  DMC		  DML/R		  MC		  ML/R		  OMC		  OML/R		  F			  GK
var recLast = [[14.866375, 15.980742, 15.8932675, 15.5835325, 17.6955092, 16.6189141, 18.1255351, 15.6304867, 13.2762119, 15],
			   [18.95664,  22.895539, 23.1801296, 23.2813871, 26.8420884, 23.9940623, 27.8974544, 24.54323,   19.5088591, 22.3]];


var positionNames = ["D C", "D L", "D R", "DM C", "DM L", "DM R", "M C", "M L", "M R", "OM C", "OM L", "OM R", "F", "GK"];

//to translate
var positionFullNames = ["Defender Center", "Defender Left", "Defender Right", "Defensive Midfielder Center", "Defensive Midfielder Left", "Defensive Midfielder Right", "Midfielder Center", "Midfielder Left", "Midfielder Right", "Offensive Midfielder Center", "Offensive Midfielder Left", "Offensive Midfielder Right", "Forward", "Goalkeeper"];
var positionFullNamesJ = ["ディフェンダー 中央", "ディフェンダー 左", "ディフェンダー 右", "守備的ミッドフィルダー 中央", "守備的ミッドフィルダー 左", "守備的ミッドフィルダー 右", "ミッドフィルダー 中央", "ミッドフィルダー 左", "ミッドフィルダー 右", "攻撃的ミッドフィルダー 中央", "攻撃的ミッドフィルダー 左", "攻撃的ミッドフィルダー 右", "フォワード", "ゴールキーパー"];





//STAR SCRIPT
if (location.href.indexOf("/players/") != -1){

	// positionIndex is the array of skill priority for this player.
	// skills is an array of skills for each user
    
    var isGK = false; //check if gk
    if(document.getElementsByClassName("favposition long")[0].innerHTML.indexOf("gk")>0)isGK=true;
       
	
	document.calculateSkill = function(positionIndex, skills) {
		
		var totSkill = 0;
		for (var i=0; i< positions[positionIndex].length; i++) {
			if (skills[i]>0) {
				totSkill += skills[i]*document.calculateSkillWeight(positions[positionIndex], weights[positionIndex], i);
			}
		}
		
		totSkill = totSkill / 200; 
		totSkill = Math.round(totSkill*1000)/1000;
		
		return totSkill;
	};
	
	document.calculateSkillWeight = function(positionWeightLevels, weights, index) {
		var weight = 0;
		weight = weights[positionWeightLevels[index]-1] / document.numberAtWeight(positionWeightLevels, positionWeightLevels[index]) * 10;
		return weight;
	};
	
	document.numberAtWeight = function(positionWeightLevels, value) {
		var count = 0;
		for (var i=0; i< positionWeightLevels.length; i++) {
			if (positionWeightLevels[i] == value) {
				count++;
			}
		}
		return count;
	};

	document.findPositionIndex = function(position) {
		var index = -1;
		for (var k=0; k< positionFullNames.length; k++) {
			if (position.indexOf(positionFullNames[k]) == 0) {
			return k;
			}
		}
		for (var k=0; k< positionFullNamesJ.length; k++) {
			if (position.indexOf(positionFullNamesJ[k]) == 0) {
			return k;
			}
		}
		return index;
	};
	
	document.getSkills = function(table) {
		var skillArray = [];
		var tableData = table.getElementsByTagName("td");
		if (tableData.length > 1) {
			for (var i = 0; i < 2; i++) {
				for (var j = i; j < tableData.length; j += 2) {
					if (tableData[j].innerHTML.indexOf("star.png") > 0) {
						skillArray.push(20);
					}
					else if (tableData[j].innerHTML.indexOf("star_silver.png") > 0) {
						skillArray.push(19);
					}
					else if (tableData[j].textContent.length != 0) {
						skillArray.push(tableData[j].textContent);
					}
				}
			}
		}
		return skillArray;
	}; // end of getSkills

	function funFix (i) {
		i = (Math.round(i*100)/100).toFixed(2);
		return i;
	}
	
	function funFix2 (i) {
		i = (Math.round(i*10)/10).toFixed(1);
		return i;
	}

/* 屏蔽此函数,减少翻译量

    //var trnum = siSearch(gettr);	
	function siSearch (gettr) {
		for (var i = 0; i < gettr.length; i++){
			if (gettr[i].innerHTML.indexOf("スキル指数") > 0) return i;
			if (gettr[i].innerHTML.indexOf("Skill Index") > 0) return i;
			if (gettr[i].innerHTML.indexOf("技能评值") > 0) return i;
		}
	}
	
*/
	document.createTR = function(table, SKarray) {
		var tr = document.createElement("tr");
		var th = document.createElement("th");
		th.innerHTML = "SK1";
		tr.appendChild(th);
		var td = document.createElement("td");
		td.setAttribute("class", "align_center");
		td.innerHTML = SKarray[0];
		tr.appendChild(td);
		var th = document.createElement("th");
		th.innerHTML = "SK2";
		tr.appendChild(th);
		var td = document.createElement("td");
		td.setAttribute("class", "align_center");
		if (SKarray[1] == 0){
			td.innerHTML = "N/A";
		} else {
			td.innerHTML = SKarray[1];
		}
		tr.appendChild(td);
		table.appendChild(tr);
	};// end of document.createTR
	
	function computeSK(table, skills){
	var SKs = [0, 0];
	var REREC = [[],[],[]];
	var FP = [];
	var positionCell = document.getElementsByClassName("favposition long")[0].childNodes;
	var positionArray = [];
	if (positionCell.length == 1){
			positionArray[0] = positionCell[0].textContent;
	} else if (positionCell.length == 2){
			positionArray[0] = positionCell[0].textContent + positionCell[1].textContent;
	} else if (positionCell[1].className == "split"){
			positionArray[0] = positionCell[0].textContent + positionCell[3].textContent;
			positionArray[1] = positionCell[2].textContent + positionCell[3].textContent;
	} else if (positionCell[3].className == "f"){
			positionArray[0] = positionCell[0].textContent + positionCell[1].textContent;
			positionArray[1] = positionCell[3].textContent;
	} else {
			positionArray[0] = positionCell[0].textContent + positionCell[1].textContent;
			positionArray[1] = positionCell[0].textContent + positionCell[3].textContent;
	}
	var gettr = document.getElementsByTagName("tr");
	var trnum = 6;
	var rou = gettr[trnum+2].getElementsByTagName("td")[0].innerHTML;
	rou = Math.pow(5/3, Math.LOG2E * Math.log(rou * 10)) * 0.4;
	for (var i = 0; i < positionArray.length; i++){
			var positionIndex = document.findPositionIndex(positionArray[i]);
			FP[i] = positionIndex;
			FP[i+1] = FP[i];
			if (positionIndex > -1) {
				SKs[i] = document.calculateSkill(positionIndex, skills);
			}
			if (i == 0) REREC = document.calculateREREC(positionIndex, skills, gettr, trnum, rou, rou_factor);
	}
	
	var SI = new String(gettr[trnum].getElementsByTagName("td")[0].innerHTML).replace(/,/g, "");
	
	if (positionIndex == 13){
		var phySum = skills[0]*1 + skills[1]*1 + skills[2]*1 + skills[7]*1;
		var tacSum = skills[4]*1 + skills[6]*1 + skills[8]*1;
		var tecSum = skills[3]*1 + skills[5]*1 + skills[9]*1 + skills[10]*1;
		var weight = 48717927500;
	}
	else {
		var phySum = skills[0]*1 + skills[1]*1 + skills[2]*1 + skills[10]*1;
		var tacSum = skills[3]*1 + skills[4]*1 + skills[5]*1 + skills[6]*1;
		var tecSum = skills[7]*1 + skills[8]*1 + skills[9]*1 + skills[11]*1 + skills[12]*1 + skills[13]*1;
		var weight = 263533760000;
	}
	var allSum = phySum + tacSum + tecSum;
	var remainder = funFix2(Math.pow(2,Math.log(weight*SI)/Math.log(Math.pow(2,7))) - allSum);
	
	var recth = document.createElement("div");
	var rectd = document.createElement("div");
	var ratth = document.createElement("div");
	var rattd = document.createElement("div");
	rectd.setAttribute("style", "color: gold;");
	rattd.setAttribute("style", "color: gold;");
	for (i = 0; i < FP.length; i++) {
		for (j = 0; 2+j <= FP[i]; j += 2) FP[i]--;
	}
	if (FP[0] != FP[1]) {
		rectd.innerHTML = REREC[0][FP[0]] + "/" + REREC[0][FP[1]];
		rattd.innerHTML = REREC[2][FP[0]] + "/" + REREC[2][FP[1]];
		var ratingR2 = rattd.innerHTML;
		var rouEffect = funFix(REREC[2][FP[0]]*1 - REREC[1][FP[0]]*1) + "/" + funFix(REREC[2][FP[1]]*1 - REREC[1][FP[1]]*1);
		var R2Pure = REREC[1][FP[0]] + "/" + REREC[1][FP[1]];
	}
	else {
		rectd.innerHTML = REREC[0][FP[0]];
		rattd.innerHTML = REREC[2][FP[0]];
		var ratingR2 = rattd.innerHTML;
		var rouEffect = funFix(REREC[2][FP[0]]*1 - REREC[1][FP[0]]*1);
		var R2Pure = REREC[1][FP[0]];
	}
	recth.innerHTML = "<b style=\"color: gold;\">REREC</b>";
	ratth.innerHTML = "<b style=\"color: gold;\">RatingR2</b>";
	gettr[trnum-1].getElementsByTagName("th")[0].appendChild(recth);
	gettr[trnum-1].getElementsByTagName("td")[0].appendChild(rectd);
	gettr[trnum+2].getElementsByTagName("th")[0].appendChild(ratth);
	gettr[trnum+2].getElementsByTagName("td")[0].appendChild(rattd);
	
	var div_area = document.createElement('div');
	
    if(lang=="ENG")   
	div_area.innerHTML="<div id=\"area\" style=\"position: absolute; z-index: 1000; width: 175px; margin-top: 25px; background: #5F8D2D; color: #ff9900; padding-left: 5px; -moz-opacity: .8; text-align: middle; color: gold; border: 2px #333333 outset; display:inline;\"><p style=\"text-decoration: underline;\"><b>PlayerData+:<\p><table style=\"margin-top: -1em; margin-bottom: 1em;\"><tr><td>PhySum: </td><td>" + phySum + " / " + Math.round(100 * phySum / 80) +"%  </td></tr><tr><td>TacSum: </td><td>" + tacSum +  " / " + Math.round(100 * tacSum / 80) +"%  </td></tr><tr><td>TecSum: </td><td>" + tecSum + " / " + Math.round(100 * tecSum / 120) +"%  </td></tr><tr><td>AllSum: </td><td>" + allSum + " + " + remainder + " </td></tr><tr><td>&nbsp;</td></tr><tr><td>RatingR2: </td><td>" + ratingR2 + " </td></tr><tr><td>RouEffect: </td><td>" + rouEffect + " </td></tr><tr><td>Rating-Pure: </td><td>" + R2Pure + "</td></tr></table></b></div>";
	// to translate
	if(lang=="CHS")
	div_area.innerHTML="<div id=\"area\" style=\"position: absolute; z-index: 1000; width: 175px; margin-top: 25px; background: #5F8D2D; color: #ff9900; padding-left: 5px; -moz-opacity: .8; text-align: middle; color: gold; border: 2px #333333 outset; display:inline;\"><p style=\"text-decoration: underline;\"><b>PlayerData+:<\p><table style=\"margin-top: -1em; margin-bottom: 1em;\"><tr><td>体能总数: </td><td>" + phySum + " / " + Math.round(100 * phySum / 80) +"% </td></tr><tr><td>战术总数: </td><td>" + tacSum + " / " + Math.round(100 * tacSum / 80) +"% </td></tr><tr><td>技术总数: </td><td>" + tecSum +  " / " + Math.round(100 * tecSum / 120) +"% </td></tr><tr><td>总技能数: </td><td>" + allSum + " + " + remainder + " </td></tr><tr><td>&nbsp;</td></tr><tr><td>评价R2: </td><td>" + ratingR2 + " </td></tr><tr><td>经验加成: </td><td>" + rouEffect + " </td></tr><tr><td>纯技能评价: </td><td>" + R2Pure + "</td></tr></table></b></div>";
     // 需要重新定位小窗口,适应大部分浏览器
    var getbox=document.getElementsByTagName("div")
    for (k = 0; k < getbox.length; k++){
			if (getbox[k].className=="box_body") break;
			
		}


    
	document.getElementsByTagName("div")[k].appendChild(div_area);
	
	document.createTR(table, SKs);
	
	if (positionIndex != 13) {
		var table2 = document.createElement("table");
		var div = document.createElement("div");
		var tbody = document.createElement("tbody");
		table2.setAttribute("border", "1");  
		table2.setAttribute("bordercolor", "#6C9922");  
		table2.innerHTML = "<thead><tr><th></th><th>DC</th><th>DLR</th><th>DMC</th><th>DMLR</th><th>MC</th><th>MLR</th><th>OMC</th><th>OMLR</th><th>F</th></tr></thead>";
		tbody.setAttribute("align", "center");  
		var tr = document.createElement("tr");
		
		for (var i = 0; i < 3; i+=2) {
			var th = document.createElement("th");
			if (i == 0) th.innerHTML = "REREC";
			else th.innerHTML = "RatingR2";
			tr.appendChild(th);
			
			for (var j = 0; j < 9; j++) {
				var td = document.createElement("td");
				if (REREC[i][j]*1 >= 100) {
					REREC[i][j] = funFix2(REREC[i][j]*1);
				}
				td.innerHTML = REREC[i][j];
				tr.appendChild(td);
			}
			tbody.appendChild(tr);
			table2.appendChild(tbody);
			
			var tr = document.createElement("tr");
			var th = document.createElement("th");
			th.setAttribute("colspan", "4");  
			th.setAttribute("align", "center");  
			th.appendChild(table2);
		}
		tr.appendChild(th);
		table.appendChild(tr);
	}
	
	return SKs;
	} // end fo computeSK
	
	document.calculateREREC = function (positionIndex, skills, gettr, num, rou, rou_factor){
		var rec = [];			// REREC
		var ratingR = [];		// RatingR2
		var ratingR2 = [];		// RatingR2 + routine
		var skillSum = 0;
		var SI = new String(gettr[num].getElementsByTagName("td")[0].innerHTML).replace(/,/g, "");
		if (positionIndex == 13) {
			var skillWeightSum = Math.pow(SI, 0.143) / 0.02979;			// GK Skillsum
			var weight = 48717927500;
		}
		else {
			var skillWeightSum = Math.pow(SI, 1/6.99194)/0.02336483;	// Other Skillsum
			var weight = 263533760000;
		}
		for (var i = 0; i < skills.length; i++) {
			skillSum += parseInt(skills[i]);
		}
		for (i = 0; 2+i <= positionIndex; i += 2) {		// TrExMaとRECのweight表のずれ修正
			positionIndex--;
		}
		skillWeightSum -= skillSum;			// REREC remainder
		var remainder = Math.round((Math.pow(2,Math.log(weight*SI)/Math.log(Math.pow(2,7))) - skillSum)*10)/10;		// RatingR2 remainder
		for (var i = 0; i < 10; i++) {
			rec[i] = 0;
			ratingR[i] = 0;
		}
		for (var j = 0; j < 9; j++) {		// All position
			var remainderWeight = 0;		// REREC remainder weight sum
			var remainderWeight2 = 0;		// RatingR2 remainder weight sum
			var not20 = 0;					// 20以外のスキル数
			if (positionIndex == 9) j = 9;	// GK
			
			for (var i = 0; i < weightR[positionIndex].length; i++) {
				rec[j] += skills[i] * weightR[j][i];
				ratingR[j] += skills[i] * weightR2[j][i];
				if (skills[i] != 20) {
					remainderWeight += weightR[j][i];
					remainderWeight2 += weightR2[j][i];
					not20 += 1;
				}
			}
			rec[j] += skillWeightSum * remainderWeight / not20;		//REREC Score
			if (positionIndex == 9) rec[j] *= 1.27					//GK
			rec[j] = funFix((rec[j] - recLast[0][j]) / recLast[1][j]);
			ratingR[j] += remainder * remainderWeight2 / not20;
			ratingR2[j] = funFix(ratingR[j] * (1 + rou * rou_factor));
			ratingR[j] = funFix(ratingR[j]);
			if (positionIndex == 9) j = 9;		// Loop end
		}
		
		var recAndRating = [rec, ratingR, ratingR2];
		return recAndRating;
	}; // end of document.calculateREREC
	
	function seasonSI () {
	var today = new Date();
	var s36t = new Date("01 28 2014 00:10:00 GMT");
	var daysbetween = (today.getTime()-s36t.getTime())/1000/3600/24;
	var weeks = Math.floor(daysbetween/7);
	weeks=weeks%12;
	weeks++;
    if(weeks==0)return;
     
		var sith = document.createElement("div");
		var sitd = document.createElement("div");
		var gettr = document.getElementsByTagName("tr");
		var trnum = 14;
		var SI = new String(gettr[trnum].getElementsByTagName("td")[0].innerHTML).replace(/,/g, "");
		var wage = new String(gettr[trnum-2].getElementsByTagName("span")[0].innerHTML).replace(/,/g, "");
		//alert(SI+"XX"+wage);
		var age = new String(gettr[trnum-4].getElementsByTagName("td")[0].innerHTML);
		var yearidx = age.search(/\d\d/);
		var year = age.substr(yearidx,2);
		age = age.slice(yearidx+2);
		age = age.replace(/\D+/g,"");
		var month = age;
		year = parseInt(year);
		month = parseInt(month);
                SI= parseInt(SI);
                wage=parseInt(wage);
    if(wage==30000||wage==31500)return;
		//alert(trnum+"XX"+age);
		//to do 
       
	var vcSeasonASI =  wage / wage_rate ;

	var vcSeasonSkill =-5.8448563*Math.pow(vcSeasonASI, -0.0425431)+ 41.33876*Math.pow(vcSeasonASI,0.1445571);
	var vcSkill =-5.8448563*Math.pow(SI, -0.0425431)+ 41.33876*Math.pow(SI,0.1445571);	
	var vcTI = (vcSkill - vcSeasonSkill)*10;

	if(isGK)
	vcTI=vcTI*11/14;
	var vcTI2= vcTI.toFixed(1);


	var vcTIevg = vcTI/weeks ; 
	vcTIevg = vcTIevg.toFixed(1);

	var isShowNew =  false;
	if(year<22&&weeks>month&&month>1)
    {   isShowNew = true;
	var NEWvcSeasonASI =  wage / wage_rate_new ;
	var NEWvcSeasonSkill =-5.8448563*Math.pow(NEWvcSeasonASI, -0.0425431)+ 41.33876*Math.pow(NEWvcSeasonASI,0.1445571);
	var NEWvcTI = (vcSkill - NEWvcSeasonSkill)*10;
	if(isGK)
	NEWvcTI=NEWvcTI*11/14;
	var NEWvcTI2= NEWvcTI.toFixed(1);
	var NEWvcTIevg = NEWvcTI/(month-1) ; 
	NEWvcTIevg = NEWvcTIevg.toFixed(1);

	if(NEWvcTIevg<0)isShowNew=false;
	

    }
        // to translate
        if(lang=="ENG")
	sith.innerHTML = "Season TI";
        if(lang=="CHS")
        sith.innerHTML = "赛季TI";
        sitd.innerHTML = vcTIevg+" X "+weeks+" = "+vcTI2;
		gettr[trnum].getElementsByTagName("th")[0].appendChild(sith);
		gettr[trnum].getElementsByTagName("td")[0].appendChild(sitd);
	

  if(isShowNew)
  {
        var sith2 = document.createElement("div");
	var sitd2 = document.createElement("div");
        if(lang=="ENG")
	sith2.innerHTML = "Season TI New";
        if(lang=="CHS")
        sith2.innerHTML = "新球员赛季TI";
        sitd2.innerHTML = NEWvcTIevg+" X "+(month-1)+" = "+NEWvcTI2;
                gettr[trnum].getElementsByTagName("th")[0].appendChild(sith2);
		gettr[trnum].getElementsByTagName("td")[0].appendChild(sitd2);
  }

	}//end of Season SI
	
    function addBt()
    {
        var title = document.getElementsByTagName("head")[0];
        var myscript = document.createElement("script");
        myscript.type="text/javascript";
        myscript.innerHTML = "function getDetail(){ \n";
       myscript.innerHTML+= "var isGK= false; \n";
        myscript.innerHTML+= "if(document.getElementsByClassName(\"favposition long\")[0].innerHTML.indexOf(\"gk\")>0)isGK=true; \n";
       myscript.innerHTML+="var gettr2 = $(\".float_left&.zebra\");\n";
       myscript.innerHTML+="var clubid = new String(gettr2[0].getElementsByTagName(\"a\")[0].getAttribute(\"club_link\")).replace(/,/g, \"\"); \n";  
		myscript.innerHTML+="var player_id_str = new String(player_id);\n";

        // start ajax
        myscript.innerHTML+="$.post(\"http://trophymanager.com/ajax/players_get_select.ajax.php\",{type:\"change\",club_id:clubid},function(data){\n";                        
   
		myscript.innerHTML+="if(data != null){	\n"; 
        myscript.innerHTML+="$.each(data.post,function(idx,item){ \n"; 
		myscript.innerHTML+="if(player_id_str==idx){ 	\n"; 
        myscript.innerHTML+="var skilltable = $(\".skill_table&.zebra\");\n"; 
        myscript.innerHTML+="var skilltbaletr =  skilltable[0].getElementsByTagName(\"tr\");\n"; 
       
  		myscript.innerHTML+="if(isGK)  {\n"; 
     
     				
                    myscript.innerHTML+="skilltbaletr[0].getElementsByTagName(\"td\")[0].innerHTML=item.strength;\n"; 
                    myscript.innerHTML+="skilltbaletr[0].getElementsByTagName(\"td\")[1].innerHTML=item.handling;\n"; 
                    myscript.innerHTML+="skilltbaletr[1].getElementsByTagName(\"td\")[0].innerHTML=item.stamina;\n"; 
                    myscript.innerHTML+="skilltbaletr[1].getElementsByTagName(\"td\")[1].innerHTML=item.oneonones; \n";  
                    myscript.innerHTML+="skilltbaletr[2].getElementsByTagName(\"td\")[0].innerHTML=item.pace;\n"; 
                    myscript.innerHTML+="skilltbaletr[2].getElementsByTagName(\"td\")[1].innerHTML=item.reflexes;\n"; 
                    myscript.innerHTML+="skilltbaletr[3].getElementsByTagName(\"td\")[1].innerHTML=item.arialability;\n"; 
                    myscript.innerHTML+="skilltbaletr[4].getElementsByTagName(\"td\")[1].innerHTML=item.jumping;\n"; 
                    myscript.innerHTML+="skilltbaletr[5].getElementsByTagName(\"td\")[1].innerHTML=item.communication;\n"; 
                    myscript.innerHTML+="skilltbaletr[6].getElementsByTagName(\"td\")[1].innerHTML=item.kicking;\n"; 
                    myscript.innerHTML+="skilltbaletr[7].getElementsByTagName(\"td\")[1].innerHTML=item.throwing;\n"; 
                    myscript.innerHTML+=" } else  {\n"; 
                
                   
                    myscript.innerHTML+="skilltbaletr[0].getElementsByTagName(\"td\")[0].innerHTML=item.strength;\n"; 
                    myscript.innerHTML+="skilltbaletr[0].getElementsByTagName(\"td\")[1].innerHTML=item.passing;\n"; 
                    myscript.innerHTML+="skilltbaletr[1].getElementsByTagName(\"td\")[0].innerHTML=item.stamina;\n"; 
                    myscript.innerHTML+="skilltbaletr[1].getElementsByTagName(\"td\")[1].innerHTML=item.crossing;\n"; 
                    myscript.innerHTML+="skilltbaletr[2].getElementsByTagName(\"td\")[0].innerHTML=item.pace;\n"; 
                    myscript.innerHTML+="skilltbaletr[2].getElementsByTagName(\"td\")[1].innerHTML=item.technique;\n"; 
                    myscript.innerHTML+="skilltbaletr[3].getElementsByTagName(\"td\")[0].innerHTML=item.marking;\n"; 
                    myscript.innerHTML+="skilltbaletr[3].getElementsByTagName(\"td\")[1].innerHTML=item.heading;\n"; 
                    myscript.innerHTML+="skilltbaletr[4].getElementsByTagName(\"td\")[0].innerHTML=item.tackling;\n"; 
                    myscript.innerHTML+="skilltbaletr[4].getElementsByTagName(\"td\")[1].innerHTML=item.finishing;\n"; 
                    myscript.innerHTML+="skilltbaletr[5].getElementsByTagName(\"td\")[0].innerHTML=item.workrate;\n"; 
                    myscript.innerHTML+="skilltbaletr[5].getElementsByTagName(\"td\")[1].innerHTML=item.longshots;\n"; 
                    myscript.innerHTML+="skilltbaletr[6].getElementsByTagName(\"td\")[0].innerHTML=item.positioning;\n"; 
                    myscript.innerHTML+="skilltbaletr[6].getElementsByTagName(\"td\")[1].innerHTML=item.setpieces;\n"; 
	  				 myscript.innerHTML+=" }}} )}},\"json\");\n"; 
        		//end ajax
               
        			myscript.innerHTML+="}\n"; 
        
        
        title.appendChild(myscript);                                                 
        
        var h =  document.getElementsByTagName("h3")[0];
        //"/pics/magnifying_glass_normal.png"
        h.innerHTML=h.innerHTML+"  &nbsp; &nbsp;<a href=\"javascript:getDetail()\" class=\"magnify\"><img src=\"/pics/magnifying_glass_normal.png\">显示小数</a>(请勿泄漏,泄漏就彻底废了)";
   
        
    }
    

    
	(function() {
        addBt();
		var playerTable = document.getElementsByClassName("skill_table zebra")[0];
		var skillArray = document.getSkills(playerTable);
		var SKs = computeSK(playerTable, skillArray);
		seasonSI();

	})();
}//end see "if" at Line 92