// 各ショップアイテム数上限
var Limit;

// 入力値保持用
var Keywords;
var Sort;

var Amazon;
var Rakuten;
var Bidders;
var Storemix;

var SearchIndex;
var Genre;
var Categ;

// ショップ名保持用
var ShopName;

// インタラクティヴ表示用divエレメント保持用
var InfoDiv;
var ResultsDiv;
var BookmarksDiv;
var ErrorDiv;

// 初期処理
function init() {
    Limit        = 5;

    Keywords     = "";
    Sort         = "";

    Amazon       = false;
    Rakuten      = false;
    Bidders      = false;
    Storemix     = false;

    SearchIndex  = "";
    Genre        = "";
    Categ        = "";

    ShopName               = new Array();
    ShopName["amazon"]     = "アマゾン";
    ShopName["rakuten"]    = "楽天";
    ShopName["bidders"]    = "ビッダーズ";
    ShopName["storemix"]   = "ストアミックス";

    InfoDiv                = new Array();
    ResultsDiv             = new Array();
    BookmarksDiv           = new Array();
    ErrorDiv               = new Array();

    for(shop in ShopName) {
        InfoDiv[shop]      = document.getElementById(shop + 'info');
        ResultsDiv[shop]   = document.getElementById(shop + 'results');
        BookmarksDiv[shop] = document.getElementById(shop + 'bookmarks');
        ErrorDiv[shop]     = document.getElementById(shop + 'error');
    }
}

// 終了時処理
function conclude(e) {
    for(objname in httpObj) {
        abortXMLHttpRequest(objname);
    }
}

// 検索結果表示・共通処理
function displayresults(shop,xml) {
    ResultsDiv[shop].innerHTML = "";
    items = xml.getElementsByTagName('Item');
    buf = "";
    if(items.length>=0) {
        KeywordNode    = xml.getElementsByTagName('Keyword');
        Keyword        = KeywordNode[0].childNodes[0].nodeValue;
        WebURLNode     = xml.getElementsByTagName('WebURL');
        WebURL         = WebURLNode[0].childNodes[0].nodeValue;
        TotalCountNode = xml.getElementsByTagName('TotalCount');
        TotalCount     = TotalCountNode[0].childNodes[0].nodeValue;
        CountNode      = xml.getElementsByTagName('Count');
        Count          = CountNode[0].childNodes[0].nodeValue;
        if(Count>Limit) {
            Count      = Limit;
        }

        InfoDiv[shop].innerHTML = '<hr /><p><strong><span style="color : #0000FF;">' + ShopName[shop] + '「' + Keyword + '」の 検索結果</span> ' + TotalCount + ' 件中 ' + Count + ' 件表示</p><p>(全件表示されていない場合は、<a href="' + WebURL + '">こちら</a>からご覧いただけます)</strong></p><hr />\n';

        for(i=0;i<items.length && i<Limit;i++) {
            RowNumNode            = items[i].getElementsByTagName('RowNum');
            URLNode               = items[i].getElementsByTagName('URL');
            TitleNode             = items[i].getElementsByTagName('Title');
            ImageURLNode          = items[i].getElementsByTagName('ImageURL');
            FormattedPriceNode    = items[i].getElementsByTagName('FormattedPrice');
            RowNum                = RowNumNode[0].childNodes[0].nodeValue;
            URL                   = URLNode[0].childNodes[0].nodeValue;
            Title                 = TitleNode[0].childNodes[0].nodeValue;
            ImageURL              = ImageURLNode[0].childNodes[0].nodeValue;
            TypeImageURL          = "";
            Type                  = "";
            FormattedPrice        = "";
            NewFormattedPrice     = "";

            if(FormattedPriceNode[0].childNodes.length>0) {
                FormattedPrice    = FormattedPriceNode[0].childNodes[0].nodeValue;
            }

            if(shop=="amazon") {
                NewFormattedPriceNode = items[i].getElementsByTagName('NewFormattedPrice');
                if(NewFormattedPriceNode[0].childNodes.length>0) {
                    NewFormattedPrice = NewFormattedPriceNode[0].childNodes[0].nodeValue;
                }
            }
            else
            if(shop=="bidders") {
                TypeImageURLNode      = items[i].getElementsByTagName('TypeImageURL');
                TypeNode              = items[i].getElementsByTagName('Type');
                TypeImageURL          = TypeImageURLNode[0].childNodes[0].nodeValue;
                Type                  = TypeNode[0].childNodes[0].nodeValue;
            }

            if(NewFormattedPrice==""
            && Type             ==""
            && shop             !="storemix") {
                buf += '<p><a href="' + URL + '"><img src="' + ImageURL + '" alt="' + Title + '" /></a></p><p><a href="' + URL + '">' + Title + '</a></p><p>' + FormattedPrice + '</p>\n';
            }
            else
            if(shop             =="storemix") {
                buf += '<p><a href="' + URL + '"><img src="' + ImageURL + '" width="64" alt="' + Title + '" /></a></p><p><a href="' + URL + '">' + Title + '</a></p><p>' + FormattedPrice + '</p>\n';
            }
            else
            if(NewFormattedPrice=="") {
                buf += '<p><a href="' + URL + '"><img src="' + ImageURL + '" width="64" alt="' + Title + '" /></a></p><p><a href="' + URL + '">' + Title + '</a></p><p><img src="' + TypeImageURL + '" alt="' + Type + '" /><br/>' + FormattedPrice + '</p>\n';
            }
            else
            if(Type             =="") {
                buf += '<p><a href="' + URL + '"><img src="' + ImageURL + '" alt="' + Title + '" /></a></p><p><a href="' + URL + '">' + Title + '</a></p><p>' + FormattedPrice + '<br/> =&gt; <strong>' + NewFormattedPrice + '</strong></p>\n';
            }
        }
    }
    ResultsDiv[shop].innerHTML   = buf;

    BookmarksDiv[shop].innerHTML = '<p><a href="#' + shop + 'info"><strong>' + ShopName[shop] + ' の検索結果へ</strong></a></p>';

    ErrMsgNode = xml.getElementsByTagName('ErrMsg');
    if(ErrMsgNode[0].childNodes.length>0) {
        ErrorDiv[shop].innerHTML = '<p><strong style="color : #FF0000;">' + ErrMsgNode[0].childNodes[0].nodeValue + '</strong></p>';
    }
    else {
        ErrorDiv[shop].innerHTML = '';
    }
}

// 検索処理
function Search() {
    // HTTP通信を開始し、完了したら結果表示関数を実行させる
    // Amazon
    if(Amazon) {

        // キスぷれ特殊処理
        amzKeywords = Keywords;
        httpRequest("http://www.sirmiles.com/plaza/xml_tool_amazon.php","Keywords=" + encodeURIComponent(amzKeywords) + "&SearchIndex=" + encodeURIComponent(SearchIndex) + "&Sort=" + encodeURIComponent(Sort),function(xml){displayresults("amazon",xml);});
    }
    else {
        InfoDiv['amazon'].innerHTML      = "";
        ResultsDiv['amazon'].innerHTML   = "";
        BookmarksDiv['amazon'].innerHTML = "";
        ErrorDiv['amazon'].innerHTML     = "";
    }

    // Rakuten
    if(Rakuten) {
        httpRequest("http://www.sirmiles.com/plaza/xml_tool_rakuten.php","Keywords=" + encodeURIComponent(Keywords) + "&Genre=" + encodeURIComponent(Genre) + "&Sort=" + encodeURIComponent(Sort),function(xml){displayresults("rakuten",xml);});
    }
    else {
        InfoDiv['rakuten'].innerHTML      = "";
        ResultsDiv['rakuten'].innerHTML   = "";
        BookmarksDiv['rakuten'].innerHTML = "";
        ErrorDiv['rakuten'].innerHTML     = "";
    }

    // Bidders
    if(Bidders) {
        httpRequest("http://www.sirmiles.com/plaza/xml_tool_bidders.php","Keywords=" + encodeURIComponent(Keywords) + "&Categ=" + encodeURIComponent(Categ) + "&Sort=" + encodeURIComponent(Sort),function(xml){displayresults("bidders",xml);});
    }
    else {
        InfoDiv['bidders'].innerHTML      = "";
        ResultsDiv['bidders'].innerHTML   = "";
        BookmarksDiv['bidders'].innerHTML = "";
        ErrorDiv['bidders'].innerHTML     = "";
    }

    // Storemix
    if(Storemix) {
        httpRequest("http://www.sirmiles.com/plaza/xml_tool_storemix.php","Keywords=" + encodeURIComponent(Keywords),function(xml){displayresults("storemix",xml);});
    }
    else {
        InfoDiv['storemix'].innerHTML      = "";
        ResultsDiv['storemix'].innerHTML   = "";
        BookmarksDiv['storemix'].innerHTML = "";
        ErrorDiv['storemix'].innerHTML     = "";
    }
}

// アンロードされた際に、conclude()関数を実行させる
addListener(window, 'unload', conclude, false);
