﻿/* for Debug */
var dbg="";

/* 1ページの最大表示記事数 */
var feedDispLength=1;

/* 1回につき表示するページ数 */
var pageSkips=10;
var currStep=1;
var pageArray=[];

/*********************************************************************
 XMLHttpRequestオブジェクト作成
 @param  なし
 @return XMLHttpRequest Object
**********************************************************************/

function createXmlHttp(){
	// Mozilla, Firefox, Safari, IE7
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	// IE5, IE6
	} else if (window.ActiveXObject) {
		try {
			// MSXML3
			return new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			// MSXML2まで
			return new ActiveXObject("Microsoft.XMLHTTP");
		}
	} else {
		return null;
	}
}

/*********************************************************************
 XMLHttpRequestオブジェクト作成->HTTPリクエスト発行・送信
 @param  xmlへのパス
**********************************************************************/

function getContent(URL) {
	if(URL==""){
		return false;
	}
	/* 送信データ格納用変数 */
	var postdata ="";
	/* XMLHttpRequestオブジェクト作成 */
	var xmlhttp=createXmlHttp();
	if (xmlhttp == null) {
		alert("\nAjaxに対応したWebブラウザをご利用ください。");
	}
	
	/* レスポンスデータ処理方法の設定 */
	xmlhttp.onreadystatechange=handleHttpEvent;
	
	/* レスポンスデータ処理用のコールバック関数を定義 */
	function handleHttpEvent() {
		switch(xmlhttp.readyState) {
			case 2:
				//activateChild('contentArea','mode2');
				break;
			case 4:
				/* 着信時の処理 */
				if (xmlhttp.status == 200) {
					document['RSSFEED']=new Object();
					document.RSSFEED['ajaxText']=xmlhttp.responseText;
					document.RSSFEED['ajaxXml']=xmlhttp.responseXML;
					// if rendering needed call renderer.
					if(document.RSSFEED['ajaxText'].indexOf("<gallery>") > -1) {
						duplicateBody();//配列に格納(NLO-TOP)
					}else{
					}
				} else {
					window.alert("通信エラーが発生しました。\nCode >> "+xmlhttp.status);
				}
			break;
		}
	}
	// HTTPリクエスト発行（xmlを読込）
	// *.open(メソッドpost/get, 要求URL[, 同期true/false(デフォルト)])
	xmlhttp.open("GET",URL,true);
	// HTTPリクエスト送信
	// データを送らない場合は""
	xmlhttp.send(postdata);
	return true;
}

/*********************************************************************
 Get Param
**********************************************************************/
function getPram() {
	var page="";
	/* ?以降 */
	var pram=location.search;
	if (!pram) return page;
	/* 先頭の?カット */
	pram=pram.substring(1);
	/* &で分割 */
	var pair=pram.split("&");
	var i=temp="";
	var key=new Array();
	for (i=0; i < pair.length; i++) {
		/* 配列の値を「=」で分割 */
		temp=pair[i].split("=");
		if(temp[1]>=1){
			page=temp[1];
		}
	}
	return page;
}

/*********************************************************************
 Validate userAgent
**********************************************************************/

function validUA() {
	var nua=navigator.userAgent;
	if(nua.indexOf('MSIE 5')>-1){
		document.UA="IE5";
	}else if(nua.indexOf('MSIE 6')>-1){
		document.UA="IE6";
	}else if(nua.indexOf('MSIE 7')>-1){
		document.UA="IE7";
	}else if(nua.indexOf('KHTML')>-1){
		document.UA="Safari";
	}else if(nua.indexOf('Firefox')>-1){
		document.UA="Gecko";
	}else{
		document.UA="Other";
	}
	return true;
}

/*********************************************************************
 XML Document -> DOM
**********************************************************************/

//:::::::::::::::::::: XML -> DOM Object
function xmlDocToObject(){
	// UserAgent
	validUA();
	//*---------------------- rss/
	var ax=document.RSSFEED['ajaxXml'];
	var obj=new Object();
	for(var i=0; ax.childNodes[i]!=null; i++){
//		dbg+="ax.childNodes["+i+"].nodeName="+ax.childNodes[i].nodeName+"\n";
		if(ax.childNodes[i].nodeName=="gallery"){
			obj=ax.childNodes[i];
			break;
		}
	}
	// 全体
	document.RSSFEED['feeds']=new Object();
	document.RSSFEED['pages']=new Object();
	document.RSSFEED['menu']=new Object();
	var infoLength=0;
	for(var i=0; obj.childNodes[i]!=null; i++){
		//*---------------------- rss / feeds
		var x=obj.childNodes[i];
//		dbg+="x.nodeName="+x.nodeName+"\n";
		switch (x.nodeName){
			case "photo":
				if(x.firstChild!=null){
					document.RSSFEED['feeds'][infoLength]=new Object();
					for(var k=0; x.childNodes[k]!=null; k++){
						var y=x.childNodes[k];
//						dbg+="y.nodeName="+y.nodeName+"\n";
						if(y.firstChild!=null){
							if(y.nodeName=="img" || y.nodeName=="title"){
								document.RSSFEED['feeds'][infoLength][y.nodeName]=new Object();
								document.RSSFEED['feeds'][infoLength][y.nodeName]=y.firstChild.nodeValue;
								document.RSSFEED['pages'][infoLength] = infoLength;
//								dbg+="document.RSSFEED['feeds']["+infoLength+"]["+y.nodeName+"]="+y.firstChild.nodeValue+"\n";
							}
						}
					}
					infoLength=infoLength+1;
				}
				break;
			case "date":
			case "category":
			case "title":
			case "description":
			case "thumbnail":
				document.RSSFEED['menu'][x.nodeName]=new Object();
				document.RSSFEED['menu'][x.nodeName]=x.firstChild.nodeValue;
			default:
				break;
		}
	}
	document.RSSFEED['infoLength']=new Object();
	document.RSSFEED['infoLength']=infoLength;
}

/*********************************************************************
 Show RSS Feed
 @param	n		integer		頁番号
 @return	htm		string		生成されたHTMLタグ
**********************************************************************/

function showRssFeed(page) {
	var lastPage=document.RSSFEED['pages'][0];
	if(page=="") page=lastPage;
	// 最終ページ

	// reverse
	var pageX=lastPage-page+1;
	var xxx=Math.ceil(pageX/feedDispLength);

	// 開始記事 - 終了記事
	var feedSt=((xxx-1)*feedDispLength)+1;
	var feedEd=feedSt+feedDispLength-1;
	window.status=xxx+"/"+feedSt+"/"+feedEd;
	
	// HTML生成 -> 出力
	//-- rss feeds
	var htm="";
	var obj=document.RSSFEED['feeds'];
	var cnt=0;
	for(k1 in obj){
		/* 配列0始まりのための補正 */
		cnt++;
		if(cnt>=feedSt && cnt<=feedEd){
			var _img=(obj[k1]['img']!=undefined) ? obj[k1]['img'] : "";
			var _title=(obj[k1]['title']!=undefined) ? obj[k1]['title'] : "";
			// title + date
			htm+="<img src='"+_img+"'></img>\n<p>"+_title+"</p>\n";
		}
	}
	
	//-- pagination
	var pagination="";
	var opt=""; /* this page */
	var pageLength=Math.ceil(document.RSSFEED['infoLength']/feedDispLength);
	var totalPages=0;
	if(pageLength>1){
		for(i=1,j=lastPage; i<=pageLength; i++,j-=feedDispLength){
			if(i%pageSkips==1){
				totalPages++;
			}
			opt=(i==xxx) ? " class='cur'" : "";
			pagination+="<a href='javascript:showRssFeed("+j+");'"+opt+">&nbsp;"+i+"　|</a>　\n";
			
			if(i%pageSkips==0){
				if(i!=lastPage && i!=pageLength){
					pagination+="  <a href='javascript:showNextPage("+(Math.ceil(i/pageSkips)+1)+")'> &gt;&gt; 次へ</a>";
					
				}
				pageArray[totalPages]=pagination;
				pagination="<a href='javascript:showNextPage("+(Math.ceil(i/pageSkips))+")'> &lt;&lt; 戻る </a>  ";
				if(i==pageLength){
					break;
				}
			}
			if(i==pageLength){
				pageArray[totalPages]=pagination;
				
			}
		}
		pagination+="</div>　\n";
		//document.getElementById('pagination_top').innerHTML=pagination;
		//document.getElementById('pagination_btm').innerHTML=pagination;
	}
	document.getElementById('feeds').innerHTML="<div id='feeds'>"+htm+"</div>";
	
	// menu
	var obj2=document.RSSFEED['menu'];
	var _t=(document.RSSFEED['menu']['title']!=undefined) ? document.RSSFEED['menu']['title'] : "";
	var _cat=(document.RSSFEED['menu']['category']!="なし") ? "["+document.RSSFEED['menu']['category']+"]" : "";
	var _d=(document.RSSFEED['menu']['date']!=undefined) ? document.RSSFEED['menu']['date'] : "";
	document.getElementById('menu').innerHTML="<p>"+_d+"　"+_cat+"\n<h3>"+_t+"</h3>";
	
	showNextPage(currStep);
}

function showNextPage(pageid){
	currStep=pageid;
	var pages = document['totalpages'];
	document.getElementById('pagination_top').innerHTML=pageArray[pageid];
	document.getElementById('pagination_btm').innerHTML=pageArray[pageid];
}

/*********************************************************************
 Output
**********************************************************************/

function duplicateBody(){
	xmlDocToObject();	/* XML -> DOM */
	var page=getPram();
	showRssFeed(page);	/* DOM -> HTML */
}

function init(fpass){
	var xmlurl="http://"+document.domain+fpass;
	document['RSSFEED']=new Object();
	getContent(fpass+"?t="+new Date());
}



