// ==UserScript==
// @name ixacardext
// @version 0.0
// @description 戦国IXA カード情報抽出スクリプト
// @include http://*.sengokuixa.jp/card/deck.php
// ==/UserScript
function getListElement()
{
var list = document.getElementById("sol_list");
if (!list) {
list = document.createElement('table');
list.id = "sol_list";
var attrname = ["カードNo","名前","レアリティ","コスト","LV","HP","指揮兵士数","兵種","攻撃力","防御力","兵法","統率(槍)","統率(馬)","統率(弓)","統率(器)","技1","技2","技3"];
var attr = ["no","name","rare","cost","lv","hp","sol_num","sol_type","stt_atk","stt_def","stt_int","leads_yari","leads_uma","leads_yumi","leads_utuwa","skill1","skill2","skill3"];
var sortable = [0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0];
row = document.createElement('tr');
row.id = "sol_list_header"
for (j=0;j<attrname.length;j++) {
e = document.createElement('th');
e.id="sol_list_" + attr[j];
e.innerHTML = attrname[j];
row.appendChild(e);
}
list.appendChild(row);
var file = document.getElementById("ig_decksection3");
file.insertBefore(list,file.firstChild);
sortableTable(list);
for (j=0;j<attrname.length;j++) {
if (sortable[j]==1) list.setSortable(j);
}
}
return list;
}
function sortableTable(tbl)
{
tbl.setSortable = function (col,mode)
{
var e = tbl.childNodes[0].childNodes[col];
e.style.cursor = "pointer";
e.orgClassName = e.className;
e.addEventListener('click',function(s){return function(){tbl.sortTable(s);};}(col),false);
e.addEventListener('mouseover',function(){this.className+=" hover";},false);
e.addEventListener('mouseout' ,function(){this.className=this.orgClassName;},false);
};
tbl.sortTable = function sortTable(col)
{
rows= new Array();
for (i=1;i<tbl.childNodes.length;i++) {rows[i-1]=tbl.childNodes[i];}
rows.sort(function(a,b){
ea=a.childNodes[col];
eb=b.childNodes[col];
if (!ea) return -1;
if (!eb) return 1;
return parseFloat(eb.firstChild.nodeValue)-parseFloat(ea.firstChild.nodeValue);
});
for (i=0;i<rows.length;i++) {tbl.appendChild(rows[i]);}
}
return tbl;
}
function addcards(d){
var list = getListElement();
var cards = d.getElementsByClassName("ig_deck_smallcardarea clearfix");
//var attr = ["ig_card_cost","ig_card_cardno","ig_card_name","ig_card_level","ig_card_status_hp","ig_card_status_att","ig_card_status_def","ig_card_status_int","commandsol_no"];
var attr1 = ["ig_deck_smallcard_cardnumber","ig_deck_smallcard_cardname","ig_deck_smallcard_cardrarety"];
var attr2 = ["cost","lv","hp","sol_num","sol_type"];
var attr3 = ["stt_atk","stt_def","stt_int","dummy","leads_yari","leads_uma","leads_yumi","leads_utuwa"];
var attr4 = ["skill1","skill2","skill3"];
for (i=0;i<cards.length;i++) {
var carddata1 = cards[i].getElementsByClassName("ig_deck_smallcarddata");
row = document.createElement("tr");
row.className="infile";
//カードNo,名前,レアリティ
for (j=0;j<attr1.length;j++) {
t = cards[i].getElementsByClassName(attr1[j]);
e = document.createElement("td");
e.className="cell_" + attr1[j];
e.innerHTML = t[0].innerHTML;
row.appendChild(e);
}
//コスト、LV、HP、指揮兵士数、兵種
t = carddata1[0].getElementsByTagName("td");
for (j=0;j<attr2.length;j++) {
e = document.createElement("td");
e.className="cell_" + attr2[j];
e.innerHTML = t[j].innerHTML;
row.appendChild(e);
}
//攻撃力、防御力、兵法、統率
t = carddata1[1].getElementsByTagName("td");
for (j=0;j<attr3.length;j++) {
if(j == 3) continue;
e = document.createElement("td");
e.className="cell_" + attr3[j];
e.innerHTML = t[j].innerHTML;
row.appendChild(e);
}
//スキル
t = carddata1[2].getElementsByTagName("td");
for (j=0;j<attr4.length;j++) {
e = document.createElement("td");
e.className="cell_" + attr4[j];
e.innerHTML = t[j].innerHTML;
row.appendChild(e);
}
list.appendChild(row);
}
}
function createlist(){
addcards(document);
//return;
var dummy = document.getElementsByClassName("pager cardstock");
if(dummy.length == 0){
t = 0;
}
else{
t = 12;
}
for(i=0;i<t;i++) {
var url_deck = "/card/deck.php?ano=0&dmo=nomal&p="
url_deck += i+2
httpRequest = new XMLHttpRequest();
httpRequest.open('GET', url_deck, true);
httpRequest.onreadystatechange = function (){
var req = arguments[0];
return function(){
if(req.readyState == 4 && req.status == 200) {
var d = document.createElement('html');
d.innerHTML=req.responseText;
addcards(d);
}
};
}(httpRequest);
httpRequest.send(null);
}
}
( function(){
GM_addStyle(""
+ "#sol_list{border-style:solid;border-spacing: 2px;border-collapse: separate;width:100%;}"
+ "#sol_list tr{height:22px;}"
+ "#sol_list tr td{height:1.2em;padding-left:4px;}"
+ "#sol_list tr th{background-color:#ccc;text-align:center;}"
+ "#sol_list tr th.hover{background-color:#ddd;}"
+ "#sol_list tr td{background-color:#ddf;}"
);
var link = document.createElement("a");
link.addEventListener('click',createlist,false);
link.href="javascript:void(0)";
link.innerHTML = "カードリスト"
var menu = document.getElementsByClassName("ig_decksection_top");
menu[0].appendChild(document.createTextNode(" | "));
menu[0].appendChild(link);
}) ();