﻿//========================================
// HTTPクエリパラメータ
//========================================
var param_search="";
var param_genre_id="";
var param_error=false;

//========================================
// ページ制御変数
//========================================
var page_break_count = 10;
var page_count = 6;
var page_number = 1;

//========================================
// 検索ツールパラメータ
//========================================
var filter_genre_id = 0;
var filter_genre_step = 1;
var filter_genre_name = "";
var filter_option_index = 0;
var disp_style_index = 0;
var filter_sort_index = 0; //価格
var filter_sort_order = 0; //昇順

//========================================
// リンク
//========================================
var linkText = new Array();
var linkUrl = new Array();
var page_title = "";

//========================================
// 検索結果出力
//========================================
function itemList(){

    //ページの初期化
    document.getElementById('search_text').value = decodeURI(this.param_search);

    //パラメータエラーの場合は処理を中断
    if(this.param_error){
        document.getElementById('program_results').innerHTML = "パラメータ エラー";
        return false;
    }

    //検索結果タイトル出力
    document.getElementById('result_title').innerHTML = "検索結果（一覧）<span>キーワード&nbsp;&nbsp;[&nbsp;"+decodeURI(this.param_search)+"&nbsp;]</span>";


    //検索条件設定
    var query_token = decodeURI(this.param_search);
    var sort_order = "";
    var fields = "";
    var params = "";

    //----------------------------------------
    // 商品検索
    //----------------------------------------

    document.getElementById('product_results').innerHTML = "<div style=\"margin-top: 10px; margin-bottom: 10px;\">しばらくお待ちください</div>";
    document.getElementById('product_results_link').innerHTML = "";

    sort_order = "price:a";//価格
    fields = "int-1,int-2,text-3,text-4,text-5,text-6,text-7,float-8,text-10,text-12,text-14,text-27,text-29,text-34,text-24,text-25,text-31,text-39,text-40,text-41";
    params = "service=product&search="+encodeURI(query_token)+"&result-fields="+fields+"&sort-order="+sort_order+"&result-count="+this.page_count+"&show-results&result-info=all&result-format=xml";

    SearchIssueRequest(params, handleProduct);

    //----------------------------------------
    // 番組検索
    //----------------------------------------

    document.getElementById('program_results').innerHTML = "<div style=\"margin-top: 10px; margin-bottom: 10px;\">しばらくお待ちください</div>";
    document.getElementById('program_results_link').innerHTML = "";

    sort_order = "date-4:z,text-12:z,text-13:z";//放送日時
    fields = "int-1,text-3,date-4,int-6,text-8,text-12,text-13,int-18";   //番組カテゴリ,放送日,テレビ局名,放送時刻（時）,放送時刻（分）,主番組ID
    params = "service=program&search="+encodeURI(query_token)+"&result-fields="+fields+"&sort-order="+sort_order+"&result-count="+this.page_count+"&show-results&result-info=all&result-format=xml";

    SearchIssueRequest(params, handleProgram);

    //----------------------------------------
    // 有名人検索
    //----------------------------------------

    document.getElementById('talent_results').innerHTML = "<div style=\"margin-top: 10px; margin-bottom: 10px;\">しばらくお待ちください</div>";
    document.getElementById('talent_results_link').innerHTML = "";

    sort_order = "text-1:z";//名前
    fields = "text-1,int-2,text-3,text-10,text-17,text-19,text-22"; 
    params = "service=talent&search="+encodeURI(query_token)+"&result-fields="+fields+"&sort-order="+sort_order+"&result-count="+this.page_count+"&show-results&result-info=all&result-format=xml";

    SearchIssueRequest(params, handleTalent);
}

//========================================
// ヘッダー HTML 取得
//========================================
function getHeaderHtml(totalhits){

    var html = "";
    var count = 0;

    html += "<span style=\"margin: 0 0 0 20px;\">";
    html += "<strong>";
    html += formatNumber(totalhits);
    html += "</strong>件";
    
    if(totalhits < this.page_count){
        count = totalhits
    }
    else{
        count = this.page_count
    }

    html += "</span>";
    
    if(count > 0){
        html += "<span style=\"margin: 0 0 0 5px;\">";
        html += "（<strong>1</strong>～<strong>";
        html += formatNumber(count);
        html += "件目）";
        html += "</span>";
    }

    return html;
}

//========================================
// 番組検索結果出力
//========================================
function handleProgram(totalhits, data, status_ok, responseMessage){

    if(!status_ok){
        document.getElementById('program_results').innerHTML = "<div>只今、検索が行えません</div><br /><div>"+responseMessage+"</div>";
	    return false;
    }

	var contents = "";
	var contents_header = "";
	var contents_footer = "";

    //放送日書式変換
    this.formatProgramDate = function(datetime, hh, mi)
    {
        var format = datetime;
        var dateObj = new Date(datetime);
        
        if(dateObj != "NaN"){
            var dayList = new Array("日", "月", "火", "水", "木", "金", "土");    
            var y = dateObj.getFullYear();
            var mm = dateObj.getMonth() + 1;
            var dd = dateObj.getDate();
            if(mm<10){mm="0"+mm;}
            if(dd<10){dd="0"+dd;}
            var format = y+"/"+mm+"/"+dd+"("+dayList[dateObj.getDay()]+") "+hh+":"+mi;
        }
        
        return format;
    }

    //----------------------------------------
    // 結果リスト出力
    //----------------------------------------

	// データ行読み込み
	for (var i = 0; i < data.length; i++) {
	    
	    var title = getXmlNodeValue(data[i], "title");
		var genreName = getXmlNodeValue(data[i], "text-3");
		var station = getXmlNodeValue(data[i], "text-8");
		var programDate = getXmlNodeDate(data[i], "date-4");
		var hh = getXmlNodeValue(data[i], "text-12");
		var mi = getXmlNodeValue(data[i], "text-13");
		var programID = getXmlNodeInt(data[i], "int-18");
		var href = getProgramListPath(programID, programDate);

        var d = formatProgramDate(programDate, hh, mi).split(" ");

        //テーブルボディー設定
        contents += "<tr>";
        contents += "<td>"+d[0]+"</td>";
        contents += "<td>"+d[1]+"</td>";
        contents += "<td><a href=\""+href+"\">"+title+"</a></td>";
        contents += "<td>"+station+"</td>";
        contents += "<td>"+genreName+"</td>";
        contents += "</tr>";

	}

    var anchor = "";

	if(data.length == 0){
        contents += "<div style=\"margin-top: 10px; margin-bottom: 10px;\">";
        contents += "検索結果がありません";
        contents += "</div>";
	}
	else
	{

        //テーブルヘッダー設定
        contents_header = "<table width=\"100%\" cellpadding=\"4\" cellspacing=\"1\">";
        contents_header += "<tr>";
        contents_header += "<th>放送日</th>";
        contents_header += "<th>時間</th>";
        contents_header += "<th>番組名</th>";
        contents_header += "<th>放送局</th>";
        contents_header += "<th>カテゴリ</th>";
        contents_header += "</tr>";

        //テーブルフッター設定
        contents_footer = "</table>";

        //リンク設定
        var anc = document.getElementById('program_results_link');
        anc.href = "/program/result.html?i="+this.param_search;
        anc.innerHTML = "全"+formatNumber(totalhits)+"件の検索結果一覧へ";
        anc.title = anc.innerHTML;
	}

	data = null;

    //絞り込みリンク出力
    var anc = document.getElementById('filter_program');
    anc.href = "/program/result.html?i="+this.param_search;
    anc.innerHTML = "番組（"+formatNumber(totalhits)+"件）";
    anc.title = anc.innerHTML;

    //検索結果ヘッダー出力
    document.getElementById('program_header').innerHTML = getHeaderHtml(totalhits);

    //検索結果出力
    document.getElementById('program_results').innerHTML = contents_header + contents + contents_footer;
}

//========================================
// 有名人検索結果出力
//========================================
function handleTalent(totalhits, data, status_ok, responseMessage){

    if(!status_ok){
        document.getElementById('talent_results').innerHTML = "<div>只今、検索が行えません</div><br /><div>"+responseMessage+"</div>";
	    return false;
    }

	var contents = "";
	var contents_header = "";
	var contents_footer = "";

    //----------------------------------------
    // 結果リスト出力
    //----------------------------------------

	// データ行読み込み
	for (var i = 0; i < data.length; i++) {
  
		var talentid = getXmlNodeValue(data[i], "url");
        var fullName = getXmlNodeValue(data[i], "title");
		var url = getTalentListPath(talentid);
        var fullNameKana = getXmlNodeValue(data[i], "text-1");
		var genreName = getXmlNodeValue(data[i], "text-3");
		var hometown = getXmlNodeValue(data[i], "text-17");
		var genderid = getXmlNodeValue(data[i], "int-9");
		var gender = getXmlNodeValue(data[i], "text-10");
        var thumbnail = getXmlNodeValue(data[i], "text-22");

        //テーブルボディー設定
        contents += "<tr>";
        contents += "<td><a href=\""+url+"\">"+fullName+"</a></td>";
        contents += "<td>"+genreName+"</td>";
        contents += "<td>"+hometown+"</td>";
        contents += "<td>"+gender+"</td>";
        contents += "</tr>";
	}

	if(data.length == 0){
        contents += "<div style=\"margin-top: 10px; margin-bottom: 10px;\">";
        contents += "検索結果がありません";
        contents += "</div>";
	}
	else
	{

        //テーブルヘッダー設定
        contents_header = "<table width=\"100%\" cellpadding=\"4\" cellspacing=\"1\">";
        contents_header += "<th>名前</th>";
        contents_header += "<th>有名人カテゴリ</th>";
        contents_header += "<th>出身地</th>";
        contents_header += "<th>性別</th>";

        //テーブルフッター設定
        contents_footer = "</table>";

        //リンク設定
        var anc = document.getElementById('talent_results_link');
        anc.href = "../talent/result.html?i="+this.param_search;
        anc.innerHTML = "全"+formatNumber(totalhits)+"件の検索結果一覧へ";
        anc.title = anc.innerHTML;
	}

    //絞り込みリンク出力
    var anc = document.getElementById('filter_talent');
    anc.href = "../talent/result.html?i="+this.param_search;
    anc.innerHTML = "有名人（"+formatNumber(totalhits)+"件）";
    anc.title = anc.innerHTML;

    //検索結果ヘッダー出力
    document.getElementById('talent_header').innerHTML = getHeaderHtml(totalhits);

    //検索結果出力
    document.getElementById('talent_results').innerHTML = contents_header + contents + contents_footer;
}

//========================================
// 商品検索結果出力
//========================================
function handleProduct(totalhits, data, status_ok, responseMessage){

    if(!status_ok){
        document.getElementById('product_results').innerHTML = "<div>只今、検索が行えません</div><br /><div>"+responseMessage+"</div>";
	    return false;
    }

	var recordCount = data.length;
	var startId = 0;
	var endId = 0;
	var contents = "";
	var contents_header = "";
	var contents_footer = "";
	var station = new Stations();

	var columnCount = 0;
    var rowCount = 1;

	// データ行読み込み
	for (var i = 0; i < recordCount; i++) {
	    var productID = getXmlNodeValue(data[i], "url");
	    var title = getXmlNodeValue(data[i], "title");
		var category = getXmlNodeValue(data[i], "category");
	    var price = getXmlNodeValue(data[i], "price");
		var url = getXmlNodeValue(data[i], "text-4");
		var thumbnail = getXmlNodeValue(data[i], "text-5");
		var programFlag = getXmlNodeValue(data[i], "text-14");
		var talentFlag = getXmlNodeValue(data[i], "text-39");

        //関連番組情報の編集
		var tvLink = "";

		if(programFlag=="1"){

		    var programNames = getXmlNodeValue(data[i], "text-27").split("~~");
		    var programIDs = getXmlNodeValue(data[i], "text-31").split("~~");
		    var tvCodes = getXmlNodeValue(data[i], "text-29").split("~~");
		    var programDates = getXmlNodeValue(data[i], "text-34").split("~~");
		    var programCount = programNames.length;

            if(programCount>3){programCount=3;}
		    
   		    tvLink += "<img src=\"/common/misc/img/television.gif\" alt=\"テレビに登場したことのある商品\" style=\"width: 16px; height: 16px; margin: 0 5px 0 0\" />";

		    for(var tvIndex=0; tvIndex<programCount; tvIndex++){
		        var href = getTalentListPath(talentIds[talentIndex]);
		        var text = formatDate(programDates[tvIndex], 1)+" "+programNames[tvIndex]+" ("+station.shortTextOf(tvCodes[tvIndex])+")";

		        tvLink += "<a href=\""+href+"\" title=\""+linkText+"\" style=\"margin-right:10px;\">";
    		    tvLink += text;
		        tvLink += "</a>";
   		        tvLink += "&nbsp;";

		    }
		}

        //有名人関連情報の編集
        var talentLink = "";

		if(talentFlag=="1"){
		    var talentIds = getXmlNodeValue(data[i], "text-40").split("~~");
		    var talentNames = getXmlNodeValue(data[i], "text-41").split("~~");

   		    talentLink += "<img src=\"/common/misc/img/talent.gif\" alt=\"有名人に関連する商品\" style=\"width: 16px; height: 16px; margin: 0 5px 0 0\" />";

		    for(var talentIndex=0; talentIndex<talentIds.length; talentIndex++){
		        var href = getTalentListPath(talentIds[talentIndex]);
		        var text = talentNames[talentIndex];

		        talentLink += "<a href=\""+href+"\" title=\""+text+"\">";
    		    talentLink += text;
		        talentLink += "</a>";
   		        talentLink += "&nbsp;";
		    }

		}

        //画像編集
        if(thumbnail.length == 0){thumbnail = NO_IMAGE_PATH;}

        //trタグ設定
        columnCount += 1;

        if(columnCount > 3){
            contents += "</tr><tr>";
            columnCount = 1;
            rowCount += 1;
        }

        var onclick = "javascript:w=window.open('"+url+"', '_blank');w.focus();return false;";

        //テーブルボディー設定
        contents += "<td>";

        if(rowCount==1){
            contents += "   <div class=\"item\" style=\"border-top: medium none;\">";
        }
        else{
            contents += "   <div class=\"item\">";
        }

        contents += "        <a href=\""+url+"\" onclick=\""+onclick+"\">";
        contents += "        <img src=\""+thumbnail+"\" alt=\""+title+"\" style=\"width: 110px\" />";
        contents += "        </a>";

        contents += "<img src=\"/common/misc/img/spacer.gif\" style=\"width: 0px; height: 150px; margin: 0 0 0 0\" alt=\"\"/>";

        contents += "        <div class=\"name\">";

        if(url.length>0){
            contents += "<a href=\""+url+"\" onclick=\""+onclick+"\">"+title+"<br />"+""+"</a>";
        }
        else{
            contents += "<strong>"+title+"</strong><br />"+"";
        }

        if (price.length>0 && price!="0"){
            contents += "<div class=\"price\">"+formatNumber(price)+"円</div>";
        }

        if(tvLink.length > 0){
            contents += "<div class=\"icon\">"+tvLink+"</div>";
        }

        if(talentLink.length > 0){
            contents += "<div class=\"icon\">"+talentLink+"</div>";
        }

        contents += "    </div>";
        contents += "</td>";

	}

	if(data.length == 0){
        contents += "<div style=\"margin-top: 10px; margin-bottom: 10px;\">";
        contents += "検索結果がありません";
        contents += "</div>";
	}
	else{
	    //テーブルヘッダー設定
        contents_header = "<table width=\"100%\" cellpadding=\"4\" cellspacing=\"4\"><tr>";

	    //テーブルフッター設定
        contents_footer = "</tr></table>";

        //リンク設定
        var anc = document.getElementById('product_results_link');
        anc.href = "../shop/result.html?i="+this.param_search;
        anc.innerHTML = "全"+formatNumber(totalhits)+"件の検索結果一覧へ";
        anc.title = anc.innerHTML;
    }


    //絞り込みリンク出力
    var anc = document.getElementById('filter_product');
    anc.href = "../shop/result.html?i="+this.param_search;
    anc.innerHTML = "商品（"+formatNumber(totalhits)+"件）";
    anc.title = anc.innerHTML;

    //検索結果ヘッダー出力
    document.getElementById('product_header').innerHTML = getHeaderHtml(totalhits);

    //検索結果出力
    document.getElementById('product_results').innerHTML = contents_header + contents + contents_footer;

}

//========================================
// ページロード処理
//========================================
function pageLoad(){

    //HTTPクエリパラメータ取得
    query = new Response.QueryString();
    this.param_search = query.valueOf("i"); //検索文字列
    query = null;

    //パラメータチェック
    this.param_error = (this.param_search.length == 0);

    //一覧出力
    itemList();

}

