﻿// Create XML Request

var xmlHttp;
dataset = null;

function goSearch(){
    try{  // Firefox, Opera 8.0+, Safari  
            xmlHttp = new XMLHttpRequest();  }
    catch (e)
        {  // Internet Explorer  
            try{   
                xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");    }
            catch (e)
            {    
                try {      
                    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");      }
                catch (e)
                {      
                    alert("Your browser does not support AJAX!");      
                    return false;      
                }    
             } 
         }

    var poststr = "sid="+Math.random();
    var anychecked = false;
    var url = "cardsearch.php?";
    // For series
    if(document.getElementById("sbseries").checked){
        anychecked = true;
        var x = document.getElementById("series").selectedIndex;
        var value = document.getElementById("series").options[x].value;
        poststr += "&packID=" + value;
    } else poststr += "&packID=ALL";
    
    if(document.getElementById("sbtype").checked){
        anychecked = true;
        poststr += "&type=" + cardtypeval;
		poststr += "&ban=" + document.getElementById("ban").selectedIndex;
    } else poststr += "&type=99";
    
    if(document.getElementById("sbkeyword").checked){
        anychecked = true;
        var value = document.getElementById("effectkey").value;
        poststr += "&keyword=" + encodeURI(value);
    }

    if(anychecked){
        url = url + poststr;
        xmlHttp.onreadystatechange = displaylist;
        xmlHttp.open('POST',url,true);
        xmlHttp.send("");
    } else alert("您並未選擇任何搜尋選項");
    
}

function displaylist(){
    if(xmlHttp.readyState == 4){
        var xmlDoc=xmlHttp.responseXML.documentElement;
        var listHTML = "";
        var data = xmlDoc.getElementsByTagName("card");
        dataset = new Array();
        
        for(var i=0; i < data.length; i++){
            
            var cardcode = data[i].getAttribute("id");
            var cname = data[i].getElementsByTagName("name")[0].firstChild.nodeValue;
            var jpname = data[i].getElementsByTagName("jpname")[0].firstChild.nodeValue;
            
            var type = parseInt(data[i].getElementsByTagName("type")[0].firstChild.nodeValue);
            var ban = parseInt(data[i].getElementsByTagName("ban")[0].firstChild.nodeValue);
            try{
                var cno = data[i].getElementsByTagName("code")[0].firstChild.nodeValue;
            } catch (e) { var cno = ""; }
            try{
              var text = data[i].getElementsByTagName("text")[0].firstChild.nodeValue.replace(/newline/g,"<br/>");
            } catch (e) { var text = ""; }
            try{
                var jptext = data[i].getElementsByTagName("jptext")[0].firstChild.nodeValue.replace(/newline/g,"<br/>");
            } catch (e) { var jptext = ""; }
            try{
                var rare = data[i].getElementsByTagName("rare")[0].firstChild.nodeValue;
            } catch (e) { var rare = ""; }
            
            var disname = cname;
            
            dataset[i] = new Card(cardcode, cname, jpname, type, ban, text, jptext);
            
			var banhtml = "";
			switch(ban){
				case 1: banhtml = " <font color='#FFCCCC'>[ 準制限 ]</font>"; break;
				case 2: banhtml = " <font color='#FFCCCC'>[ 制限 ]</font>"; break;
				case 3: banhtml = " <font color='#FFCCCC'>[ 禁止 ]</font>"; break;
			}
			
            var cardheadbg;
            if(type < 29){
            
                switch(type%10){
                    case 1: cardheadbg = "fmon_bg"; break;
                    case 2: cardheadbg = "emon_bg"; break;
                    case 3: cardheadbg = "symon_bg"; break;
                    default: if(type < 20) { cardheadbg = "nmon_bg"; }
                             else { cardheadbg = "smon_bg"; }
                }
                
                var sp = parseInt(data[i].getElementsByTagName("sp")[0].firstChild.nodeValue);
                var monsp = "";
                switch(sp){
                    case 1: monsp = "‧卡通"; break;
                    case 2: monsp = "‧靈魂"; break;
                    case 3: monsp = "‧同盟"; break;
                    case 4: monsp = "‧二重"; break;
                    case 9: monsp = "‧協調"; break;
                }
                
				monsp += banhtml;
				
                var level = data[i].getElementsByTagName("level")[0].firstChild.nodeValue;
                var atk = data[i].getElementsByTagName("atk")[0].firstChild.nodeValue;
                var def = data[i].getElementsByTagName("def")[0].firstChild.nodeValue;
                var att = parseInt(data[i].getElementsByTagName("att")[0].firstChild.nodeValue);
                var cat = parseInt(data[i].getElementsByTagName("cat")[0].firstChild.nodeValue);
                if(atk < 0) atk = "?";
                if(def < 0) def = "?";
                disab = level + '☆  ' + getatt(att) + '/' + getcat(cat) + '族' + monsp + '<br/>ATK/ ' + atk + '&nbsp;&nbsp;DEF/ ' + def;
                
                dataset[i].setMonster(level, atk, def, att, cat, sp);
                
            } else if (type < 39){
                cardheadbg = "magic_bg";
                var magictype;
                switch(type%10){
                    case 0: magictype = "通常"; break;
                    case 1: magictype = "永續"; break;
                    case 2: magictype = "儀式"; break;
                    case 3: magictype = "速攻"; break;
                    case 4: magictype = "裝備"; break;
                    case 5: magictype = "場地"; break;
                }
                disab = magictype + "魔法" + banhtml;
            } else {
                cardheadbg = "trap_bg";
                var magictype;
                switch(type%10){
                    case 0: magictype = "通常"; break;
                    case 1: magictype = "永續"; break;
                    case 2: magictype = "反擊"; break;
                }
                disab = magictype + "陷阱" + banhtml;
            }
            
            if(rare != ""){
                crare = getrare(rare);
            } else crare = "";
            
            listHTML += '<table border="0" cellPadding="2" width="720" style="border-collapse: collapse" bordercolor="#FFFFFF" class="item" cardid="' + cardcode + '" dataid="'+ i +'" background="img/' + cardheadbg + '.jpg" onclick="updateInfoCard(dataset['+i+'])">' ;
            listHTML += '<tr class="cardhead">' ;
            listHTML += '<td height="56" width="100" align="center" style="font-family: Tahoma; font-size: 9pt; letter-spacing: 1px;">' + cno + '</td>' ;
            listHTML += '<td height="56" width="450"><a class="cardhead" href="http://wiki.hkdms.net/index.php/'+cname+'"">' ;
            listHTML += '&nbsp;' + disname + '<br>&nbsp;' + jpname + '</a></td>' ;
            listHTML += '<td align="center" width="250">' + disab + '</td>' ;
            listHTML += '<td align="center" width="150" style="font-family: Cardara, Tahoma; font-size: 9pt; letter-spacing: 1px;">' + crare +'</td></tr>' ;
            listHTML += '<tr class="cardinfo" style="background: #FFFFFF">' ;
            listHTML += '<td height="45" width="83" align="center" ></td>';
            listHTML += '<td height="45" width="642" colSpan="3">' + text + '</td></tr></table>';
       }
       document.getElementById("displayboard").innerHTML = listHTML;
       //refreshlist();
    }
}

function getcat(cat){
    switch(cat){
        case 1: return "龍";
        case 2: return "鳥獸";
        case 3: return "海龍";
        case 4: return "魚";
        case 5: return "水";
        case 6: return "戰士";
        case 7: return "獸戰士";
        case 8: return "獸";
        case 9: return "昆蟲";
        case 10: return "植物";
        case 11: return "恐龍";
        case 12: return "岩石";
        case 13: return "不死";
        case 14: return "惡魔";
        case 15: return "魔法使";
        case 16: return "天使";
        case 17: return "炎";
        case 18: return "機械";
        case 19: return "爬蟲類";
        case 20: return "雷";
        case 21: return "念動力";
    }
    return cat;
}

function getatt(att) {
    switch(att){
        case 1: return "光"; break;
        case 2: return "闇"; break;
        case 3: return "地"; break;
        case 4: return "水"; break;
        case 6: return "炎"; break;
        case 5: return "風"; break;
    }
    return att;
}

function getrare(calrare){
    var crare = "";
    var multi = false;
    var cbr = "";
    var para = " (Parallel)";
    switch(calrare % 4){
    case 3: crare = crare + "Normal<br>"; multi = true;
    case 2: crare = crare + "Normal" + para; multi = true; break;
    case 1: crare = crare + "Normal"; multi = true;
    }
    calrare = Math.floor(calrare / 4);
    if(multi) cbr = "<br>";
    switch(calrare % 4){
    case 3: crare = crare + cbr + "<font color=silver>Rare</font>"; multi = true; cbr = "<br>";
    case 2: crare = crare + cbr + "<font color=silver>Rare" + para + "</font>"; multi = true; break;
    case 1: crare = crare + cbr + "<font color=silver>Rare</font>"; multi = true;
    }
    calrare = Math.floor(calrare / 4);
    if(multi) cbr = "<br>";
    switch(calrare % 4){
    case 3: crare = crare + cbr + "<font color=cyan>Super Rare</font>"; multi = true; cbr = "<br>";
    case 2: crare = crare + cbr + "<font color=cyan>Super Rare" + para + "</font>"; multi = true; break;
    case 1: crare = crare + cbr + "<font color=cyan>Super Rare</font>"; multi = true;
    }  
    calrare = Math.floor(calrare / 4);
    if(multi) cbr = "<br>";
    switch(calrare % 4){
    case 3: crare = crare + cbr + "<font color=yellow>Ultra Rare</font>"; multi = true; cbr = "<br>";
    case 2: crare = crare + cbr + "<font color=yellow>Ultra Rare" + para + "</font>"; multi = true; break;
    case 1: crare = crare + cbr + "<font color=yellow>Ultra Rare</font>"; multi = true;
    }  
    calrare = Math.floor(calrare / 4);
    if(multi) cbr = "<br>";
    switch(calrare % 4){
    case 3: crare = crare + cbr + "<font color=lightgreen>Secret Rare</font>"; multi = true; cbr = "<br>";
    case 2: crare = crare + cbr + "<font color=lightgreen>Secret Rare" + para + "</font>"; multi = true; break;
    case 1: crare = crare + cbr + "<font color=lightgreen>Secret Rare</font>"; multi = true;
    }
    calrare = Math.floor(calrare / 4);
    if(multi) cbr = "<br>";
    switch(calrare % 4){
    case 3: crare = crare + cbr + "<font color=#3399FF>Ultimate Rare</font>"; multi = true; cbr = "<br>";
    case 2: crare = crare + cbr + "<font color=#3399FF>Ultimate Rare" + para + "</font>"; multi = true; break;
    case 1: crare = crare + cbr + "<font color=#3399FF>Ultimate Rare</font>"; multi = true;
    }
    calrare = Math.floor(calrare / 4);
    if(multi) cbr = "<br>";
    switch(calrare % 4){
    case 3: crare = crare + cbr + "<font color=pink>Holographic</font>"; multi = true; cbr = "<br>";
    case 2: crare = crare + cbr + "<font color=pink>Holographic" + para + "</font>"; multi = true; break;
    case 1: crare = crare + cbr + "<font color=pink>Holographic</font>"; multi = true;
    }
    calrare = Math.floor(calrare / 4);
    if(multi) cbr = "<br>";
    switch(calrare % 4){
    case 3: crare = crare + cbr + "Normal Rare"; multi = true; cbr = "<br>";
    case 2: crare = crare + cbr + "Normal Rare" + para + ""; multi = true; break;
    case 1: crare = crare + cbr + "Normal Rare"; multi = true;
    }
    return crare;
}