﻿//グローバル変数の定義====================================================
var httpObj;               // HTTP通信用オブジェクト
var timerId;               // HTTP通信用タイマーオブジェクト
var timeout_sec = 1800;      // HTTP通信タイムアウト秒数
r = Math.floor(Math.random()*10);
var xml_url = './rssblog/make_xml.php?ran='+r;
//var xml_url = './rssblog/rss.xml';
//var xml_url = './rssblog/rss.xml';
var UA =navigator.userAgent;
var VarUsrAgt = navigator.userAgent.toLowerCase();//小文字
var mac = (UA.indexOf("mac") > -1);
var safari = UA.indexOf("safari") > -1;
var safar2 = VarUsrAgt.indexOf("safari/4") != -1;
var safar3 = VarUsrAgt.indexOf("safari/5") != -1;
//=========================================================================
function dispXmlElement(xml){
	var rootNode = xml.getElementsByTagName("channel");
	var titleNode = xml.getElementsByTagName("title");
	var linkNode = xml.getElementsByTagName("link");
	var pubDateNode = xml.getElementsByTagName("pubDate");
	var rssContents = document.getElementById("rssContents");
	var i;
	var htmlNode;
	var viewNum = 3;
	var linkNum;
	htmlNode = "";
	htmlNode += "<table>";
	for( i = 1; i <= viewNum; i++ ){
		if( mac || safari || safar2 || safar3 ){
			linkNum = i+1;
		}
		else{
			linkNum = i;
		}
		if( titleNode[i].firstChild.nodeValue.indexOf('PR:') == -1){
			htmlNode += "<tr><th><span>" + pubDateNode[i-1].firstChild.nodeValue.substring(0,11) + "</span></th><td><a href=\"" + linkNode[linkNum].firstChild.nodeValue + "\" target=\"_blank\">"  + titleNode[i].firstChild.nodeValue + "</a></td></tr>";
		}
		else{
			viewNum += 1;
		}
	}
	htmlNode += "</table>";
	rssContents.innerHTML = htmlNode;
}

function loadXml(e) {
    httpXmlRequest(xml_url, 'GET', '', dispXmlElement, httpError);
    stopDefaultAndPropagation(e);
    return false;
}

function httpError(error) {
    alert(error + "httpError");
}

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;
    }
    
    try{
		httpObj = new XMLHttpRequest();
	}
	catch(e){
		try{
			httpObj = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e){
			try{
				httpObj = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
				return null;
			}
		}
	}
    
    
    
    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);
}

function timeoutCheck() {
    timeout_sec --;
    if(timeout_sec <= 0) {
        clearInterval(timerId);
        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;
}

// イベントリスナー登録
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', loadXml, false);



