﻿//グローバル変数の定義
var httpObj;
var timerId;
var timeout_sec = 10; //タイムアウトの秒数

var url_list = new Array();  // ボタンごとのXMLファイルURLの定義
url_list['hokkaido'] = '/cgi-bin/search/dsp.cgi?ar=1';
url_list['m_hokkaido'] = '/cgi-bin/search/dsp.cgi?ar=1';
url_list['kanto'] = '/cgi-bin/search/dsp.cgi?ar=2';
url_list['m_kanto'] = '/cgi-bin/search/dsp.cgi?ar=2';
url_list['joshin'] = '/cgi-bin/search/dsp.cgi?ar=3';
url_list['m_joshin'] = '/cgi-bin/search/dsp.cgi?ar=3';
url_list['chubu'] = '/cgi-bin/search/dsp.cgi?ar=4';
url_list['m_chubu'] = '/cgi-bin/search/dsp.cgi?ar=4';
url_list['kinki'] = '/cgi-bin/search/dsp.cgi?ar=5';
url_list['m_kinki'] = '/cgi-bin/search/dsp.cgi?ar=5';
url_list['chugoku'] = '/cgi-bin/search/dsp.cgi?ar=6';
url_list['m_chugoku'] = '/cgi-bin/search/dsp.cgi?ar=6';
url_list['shikoku'] = '/cgi-bin/search/dsp.cgi?ar=7';
url_list['m_shikoku'] = '/cgi-bin/search/dsp.cgi?ar=7';
url_list['kyushu'] = '/cgi-bin/search/dsp.cgi?ar=8';
url_list['m_kyushu'] = '/cgi-bin/search/dsp.cgi?ar=8';
url_list['m2_kyushu'] = '/cgi-bin/search/dsp.cgi?ar=8';

// 20100218 S追加
url_list['sseries'] = '/cgi-bin/search/dsp.cgi?cg=7';

// 20070426 GとH追加
url_list['gseries'] = '/cgi-bin/search/dsp.cgi?cg=6';
url_list['hseries'] = '/cgi-bin/search/dsp.cgi?cg=5';
url_list['rseries'] = '/cgi-bin/search/dsp.cgi?cg=2';
url_list['kseries'] = '/cgi-bin/search/dsp.cgi?cg=3';
url_list['fseries'] = '/cgi-bin/search/dsp.cgi?cg=4';

//function dispXmlElement(xml,displayframe_trgt) { 
function dispXmlElementModel(xml,displayframe_trgt) {
//model用 

    // ルート要素を特定する
    var base_node;
    var i;
    for(i=0; i<xml.childNodes.length; i++) {
        if(xml.childNodes[i].tagName) {
            base_tagname = xml.childNodes[i].tagName;
            base_node = xml.childNodes[i];
            break;
        }
    }

    base_node = xml.getElementsByTagName('lists')[0];
    
    // 記事要素のリストを抽出する
    var items = base_node.getElementsByTagName('items');
    // 記事要素の内容を解析する
 //   var displayframe = document.getElementById('displayframe');
    var displayframe = document.getElementById(displayframe_trgt);//add

    var content = document.getElementById('content');
    for (i=0; i<items.length; i++) {
        var item_name;
        var item_count;
        var item_url;
        var j;
        for(j=0; j<items[i].childNodes.length; j++) {
            var child = items[i].childNodes[j];
            var child_tag = items[i].childNodes[j].tagName;
            // ディーラー名
            if(child_tag == 'text') {
                item_name = child.firstChild.nodeValue;
            // 件数
            } else if(child_tag == 'modelcount') {
                item_count = child.firstChild.nodeValue;
            // URL
            } else if(child_tag == 'value') {
                item_url = child.firstChild.nodeValue;
            }
        }
        // テンプレートとなるタグ要素を複製
        var new_content = content.cloneNode(true);
        new_content.removeAttribute('id');
        new_content.id = 'item' + i;
        // 取り出した記事情報をタグに格納する
        var divs = new_content.getElementsByTagName('div');
        if ( i% 2 == 1 ){
        	div_style = 'odd'
        }else{
        	div_style = 'even'
        }
        if (item_count == 0){
		divs[0].innerHTML = '<div class="' + div_style + '"><span class="th">' + item_name + '</span><span class="td">(' + item_count + ')</span></div>';
			}else{
		divs[0].innerHTML = '<div class="' + div_style + '"><a href="/cgi-bin/search/dsp.cgi?md='+item_url+'"><span class="th">' + item_name + '</span><span class="td">(' + item_count + ')</span></a></div>';
      	}
        // 生成したタグ要素をドキュメントに追加し表示する
        displayframe.appendChild(new_content);
        //new_content.style.display = 'block';

    }
	
    // 読込ボタンを有効にする
    document.getElementById('sseries').disabled = false;
    document.getElementById('gseries').disabled = false;
    document.getElementById('hseries').disabled = false;
    document.getElementById('rseries').disabled = false;
    document.getElementById('kseries').disabled = false;
    document.getElementById('fseries').disabled = false;
    
}

//function loadXml(e) {
function loadXmlModel(e) {
//model用
    // 読込ボタンを無効にする
//d   document.getElementById('rseries').disabled = true;
//d	document.getElementById('kseries').disabled = true;
 //   document.getElementById('joshin').disabled = true;
    // 押されたボタンを特定し、ボタンの参照を取得する
    var target_button = getTargetNode(e);

// alert(target_button.id);
if(target_button.id=='sseries'){var displayframe_trgt = 's_displayframe';};
if(target_button.id=='gseries'){var displayframe_trgt = 'g_displayframe';};
if(target_button.id=='hseries'){var displayframe_trgt = 'h_displayframe';};
if(target_button.id=='rseries'){var displayframe_trgt = 'r_displayframe';};
if(target_button.id=='kseries'){var displayframe_trgt = 'k_displayframe';};
if(target_button.id=='fseries'){var displayframe_trgt = 'f_displayframe';};


    // 現在表示されているRSS情報を削除する
  var displayframe_del = document.getElementById(displayframe_trgt);
 //    while(displayframe.lastChild) {
   while(displayframe_del.lastChild) {
//        displayframe.removeChild(displayframe.lastChild);
        displayframe_del.removeChild(displayframe_del.lastChild);
    }
	//全てのdisplayframeを隠す
	var cName = 's_displayframe';
	cMenu = document.all[cName].style;
	cMenu.display = "none";
	var cName = 'g_displayframe';
	cMenu = document.all[cName].style;
	cMenu.display = "none";
	var cName = 'h_displayframe';
	cMenu = document.all[cName].style;
	cMenu.display = "none";
	var cName = 'r_displayframe';
	cMenu = document.all[cName].style;
	cMenu.display = "none";
	var cName = 'k_displayframe';
	cMenu = document.all[cName].style;
	cMenu.display = "none";
	var cName = 'f_displayframe';
	cMenu = document.all[cName].style;
	cMenu.display = "none";
   //displayframe_trgtを表示
	var cName = displayframe_trgt;
	cMenu = document.all[cName].style;
	cMenu.display = "block";
	


    // XMLをHTTP通信で取得
//    httpXmlRequest(url_list[target_button.id], 'GET', '', dispXmlElement, httpError);

//    httpXmlRequest(url_list[target_button.id], 'GET', '', dispXmlElement, httpError,displayframe_trgt);
			httpXmlRequestModel(url_list[target_button.id], 'GET', '', dispXmlElementModel, httpError,displayframe_trgt);
    // バブリングとデフォルトイベントアクションの停止
    stopDefaultAndPropagation(e);
    return false;
}

function dispXmlElement(xml) {
    // ルート要素を特定する
    var base_node;
    var i;
    for(i=0; i<xml.childNodes.length; i++) {
        if(xml.childNodes[i].tagName) {
            base_tagname = xml.childNodes[i].tagName;
            base_node = xml.childNodes[i];
            break;
        }
    }

    base_node = xml.getElementsByTagName('area')[0];
    
    // 記事要素のリストを抽出する
    var items = base_node.getElementsByTagName('item');
    // 記事要素の内容を解析する
//    var displayframe = document.getElementById('displayframe');
    var content = document.getElementById('m_content');
    for (i=0; i<items.length; i++) {
        var item_name;
        var item_count;
        var item_url;
        var j;
        for(j=0; j<items[i].childNodes.length; j++) {
            var child = items[i].childNodes[j];
            var child_tag = items[i].childNodes[j].tagName;
            // 都道府県
            if(child_tag == 'name') {
                item_name = child.firstChild.nodeValue;
            // 件数
            } else if(child_tag == 'count') {
                item_count = child.firstChild.nodeValue;
            // URL
            } else if(child_tag == 'url') {
                item_url = child.firstChild.nodeValue;
            }
        }
        // テンプレートとなるタグ要素を複製
        var new_content = content.cloneNode(true);
        new_content.removeAttribute('id');
        new_content.id = 'item' + i;
        // 取り出した記事情報をタグに格納する
        var divs = new_content.getElementsByTagName('div');
        if (item_count == '0'){
        	divs[0].innerHTML = '<div class="item_area">' + item_name + '　' + item_count + '件</div>';
        }else{
        	divs[0].innerHTML = '<div class="item_area"><a href="/cgi-bin/search/' + item_url + '">' + item_name + '　' + item_count + '件</a></div>';
        }
        // 生成したタグ要素をドキュメントに追加し表示する
        displayframe.appendChild(new_content);
        new_content.style.display = 'block';

// dealer
		var item_d_name;
        var item_d_url;
		var j;
        for(j=0; j<items[i].childNodes.length; j++) {
            var child = items[i].childNodes[j];
            var child_tag = items[i].childNodes[j].tagName;
            // ディーラー名
            if(child_tag == 'd_name') {
            	if(child.firstChild) {
                	item_d_name = child.firstChild.nodeValue;
                }
            // URL
            } else if(child_tag == 'd_url') {
            	if(child.firstChild) {
                	item_d_url = child.firstChild.nodeValue;
                }
            }

        // テンプレートとなるタグ要素を複製
        var new2_content = content.cloneNode(true);
        new2_content.removeAttribute('id');
        new2_content.id = 'item' + i;
        // 取り出した記事情報をタグに格納する
        var divs = new2_content.getElementsByTagName('div');
        divs[1].innerHTML = '<a href="/cgi-bin/search/' + item_d_url + '">' + item_d_name + '</a>';
        // 生成したタグ要素をドキュメントに追加し表示する
        if(child_tag == 'd_url') {
        displayframe.appendChild(new2_content);
        }
        new2_content.style.display = 'block';
		}
// dealer_end

    }
	
    // 読込ボタンを有効にする
    document.getElementById('hokkaido').disabled = false;
    document.getElementById('kanto').disabled = false;
    document.getElementById('joshin').disabled = false;
    document.getElementById('chubu').disabled = false;
    document.getElementById('kinki').disabled = false;
    document.getElementById('chugoku').disabled = false;
    document.getElementById('shikoku').disabled = false;
    document.getElementById('kyushu').disabled = false;
    document.getElementById('m_hokkaido').disabled = false;
    document.getElementById('m_kanto').disabled = false;
    document.getElementById('m_joshin').disabled = false;
    document.getElementById('m_chubu').disabled = false;
    document.getElementById('m_kinki').disabled = false;
    document.getElementById('m_chugoku').disabled = false;
    document.getElementById('m_shikoku').disabled = false;
    document.getElementById('m_kyushu').disabled = false;
    document.getElementById('m2_kyushu').disabled = false;
    
    // arealist　を見えるように
	var cName ="arealist1";
	cMenu = document.getElementById(cName).style;
	//cMenu = document.all[cName].style;
	cMenu.display = "block";
	
}

function loadXml(e) {
    // 読込ボタンを無効にする
    document.getElementById('hokkaido').disabled = true;
    document.getElementById('kanto').disabled = true;
    document.getElementById('joshin').disabled = true;
    document.getElementById('chubu').disabled = true;
    document.getElementById('kinki').disabled = true;
    document.getElementById('chugoku').disabled = true;
    document.getElementById('shikoku').disabled = true;
    document.getElementById('kyushu').disabled = true;
    document.getElementById('m_hokkaido').disabled = true;
    document.getElementById('m_kanto').disabled = true;
    document.getElementById('m_joshin').disabled = true;
    document.getElementById('m_chubu').disabled = true;
    document.getElementById('m_kinki').disabled = true;
    document.getElementById('m_chugoku').disabled = true;
    document.getElementById('m_shikoku').disabled = true;
    document.getElementById('m_kyushu').disabled = true;
    document.getElementById('m2_kyushu').disabled = true;
    // arealist　を隠す
	var cName ="arealist1";
	cMenu = document.getElementById(cName).style;
	//cMenu = document.all[cName].style;
	cMenu.display = "none";
    // 押されたボタンを特定し、ボタンの参照を取得する
    var target_button = getTargetNode(e);
    // 現在表示されているRSS情報を削除する
    var displayframe = document.getElementById('displayframe');
    while(displayframe.lastChild) {
        displayframe.removeChild(displayframe.lastChild);
    }
    // XMLをHTTP通信で取得
    httpXmlRequest(url_list[target_button.id], 'GET', '', dispXmlElement, httpError);
    // バブリングとデフォルトイベントアクションの停止
    stopDefaultAndPropagation(e);
    return false;
}

function httpError(error) {
    alert(error);
}

// 引数に与えられたURLにHTTPリクエストを行ない、指定された関数を実行
//function httpXmlRequest(target_url, method, data, success_func, error_func) {
function httpXmlRequestModel(target_url, method, data, success_func, error_func,displayframe_trgt) {

    try {
        if(window.XMLHttpRequest) {
            httpObj = new XMLHttpRequest();
        } else if(window.ActiveXObject) {
            httpObj = new ActiveXObject("Microsoft.XMLHTTP");
        } else {
            httpObj = false;
        }
    } catch(e) {
        httpObj = false;
    }
    if(! httpObj) {
        httpObjGenerateFail();
    }
    timerId = setInterval('timeoutCheck()', 1000);
    httpObj.open(method, target_url, true);
    httpObj.onreadystatechange = function() {
        if (httpObj.readyState == 4) {
            clearInterval(timerId);
            if (httpObj.status == 200) {
 //               success_func(httpObj.responseXML);
                success_func(httpObj.responseXML,displayframe_trgt);
            } else {
                error_func(httpObj.status + ' : ' + httpObj.statusText);
                return false;
            }
        }
    }
    httpObj.send(data);
}

// 引数に与えられたURLにHTTPリクエストを行ない、指定された関数を実行
function httpXmlRequest(target_url, method, data, success_func, error_func) {
    try {
        if(window.XMLHttpRequest) {
            httpObj = new XMLHttpRequest();
        } else if(window.ActiveXObject) {
            httpObj = new ActiveXObject("Microsoft.XMLHTTP");
        } else {
            httpObj = false;
        }
    } catch(e) {
        httpObj = false;
    }
    if(! httpObj) {
        httpObjGenerateFail();
    }
    timerId = setInterval('timeoutCheck()', 1000);
    httpObj.open(method, target_url, true);
    httpObj.onreadystatechange = function() {
        if (httpObj.readyState == 4) {
            clearInterval(timerId);
            if (httpObj.status == 200) {
                success_func(httpObj.responseXML);
            } else {
                error_func(httpObj.status + ' : ' + httpObj.statusText);
                return false;
            }
        }
    }
    httpObj.send(data);
}

// HTTPタイムアウト処理
function timeoutCheck() {
    timeout_sec --;
    if(timeout_sec <= 0) {
        // タイマーをストップする
        clearInterval(timerId);
        // HTTPリクエストを中断する
        httpObj.abort();
        // エラーダイアログを表示
        alert('タイムアウトです。');
        return false;
    }
}

// バブリングとデフォルトイベントアクションの停止
function stopDefaultAndPropagation(e) {
    // バブリング停止
    if(e.stopPropagation) {
        e.stopPropagation();
    }
    if(window.event) {
        window.event.cancelBubble = true;
    }
    // デフォルトイベントアクションを停止する
    if(e.preventDefault) {
        e.preventDefault();
    }
    if(window.event) {
        window.event.returnValue = false;
    }
}

function getTargetNode(e) {
    // 対象要素の参照を取得
    var target_node;
    if(e.target) {
      target_node = e.target;
    } else {
      target_node = e.srcElement;
    }
    // Safari対策
    if (target_node.nodeType == 3) {
        target_node = target_node.parentNode;
    }
    return target_node;
}

// load時の処理
function setListeners(e) {
    // ボタン要素にclickイベントリスナーをセット
    var hokkaido = document.getElementById('hokkaido');
    var kanto = document.getElementById('kanto');
    var joshin = document.getElementById('joshin');
    var chubu = document.getElementById('chubu');
    var kinki = document.getElementById('kinki');
    var chugoku = document.getElementById('chugoku');
    var shikoku = document.getElementById('shikoku');
    var kyushu = document.getElementById('kyushu');
    var m_hokkaido = document.getElementById('m_hokkaido');
    var m_kanto = document.getElementById('m_kanto');
    var m_joshin = document.getElementById('m_joshin');
    var m_chubu = document.getElementById('m_chubu');
    var m_kinki = document.getElementById('m_kinki');
    var m_chugoku = document.getElementById('m_chugoku');
    var m_shikoku = document.getElementById('m_shikoku');
    var m_kyushu = document.getElementById('m_kyushu');
    var m2_kyushu = document.getElementById('m2_kyushu');
    addListener(hokkaido, 'click', loadXml, false);
    addListener(kanto, 'click', loadXml, false);
    addListener(joshin, 'click', loadXml, false);
    addListener(chubu, 'click', loadXml, false);
    addListener(kinki, 'click', loadXml, false);
    addListener(chugoku, 'click', loadXml, false);
    addListener(shikoku, 'click', loadXml, false);
    addListener(kyushu, 'click', loadXml, false);
    addListener(m_hokkaido, 'click', loadXml, false);
    addListener(m_kanto, 'click', loadXml, false);
    addListener(m_joshin, 'click', loadXml, false);
    addListener(m_chubu, 'click', loadXml, false);
    addListener(m_kinki, 'click', loadXml, false);
    addListener(m_chugoku, 'click', loadXml, false);
    addListener(m_shikoku, 'click', loadXml, false);
    addListener(m_kyushu, 'click', loadXml, false);
    addListener(m2_kyushu, 'click', loadXml, false);

    var sseries = document.getElementById('sseries');
    var rseries = document.getElementById('gseries');
    var kseries = document.getElementById('hseries');
    var rseries = document.getElementById('rseries');
    var kseries = document.getElementById('kseries');
    var fseries = document.getElementById('fseries');
    addListener(sseries, 'click', loadXmlModel, false);
    addListener(gseries, 'click', loadXmlModel, false);
    addListener(hseries, 'click', loadXmlModel, false);
    addListener(rseries, 'click', loadXmlModel, false);
    addListener(kseries, 'click', loadXmlModel, false);
    addListener(fseries, 'click', loadXmlModel, false);
}

// イベントリスナー登録
function addListener(elem, eventType, func, cap) {
    if(elem.addEventListener) {
        elem.addEventListener(eventType, func, cap);
    } else if(elem.attachEvent) {
        elem.attachEvent('on' + eventType, func);
    } else {
        alert('ご利用のブラウザーはサポートされていません。');
        return false;
    }
}

// load時のイベントリスナーをセットする
addListener(window, 'load', setListeners, false);

