//グローバル変数の定義
var httpObj;
var timerId;
var timeout_sec = 10; //タイムアウトの秒数

var thumb_area = "";
var thumb_links = "";
var thumb_imgs = "";

//スタイルシート追加__サムネール読み込み中はサムネールを隠す
var headTag = document.getElementsByTagName("head");
var linkTag = document.createElement("link");
linkTag.rel = "stylesheet";
linkTag.type = "text/css";
linkTag.href = "../css/thumb-hide.css";
headTag[0].appendChild(linkTag);
//

function MakeLinkArray(){
	thumb_area = document.getElementById("thumbnails");
	thumb_links = thumb_area.getElementsByTagName("a");
	thumb_imgs = thumb_area.getElementsByTagName("img");

	for(i=0;i<thumb_links.length;i++){	
		thumb_links[i].setAttribute("rel",i);
		thumb_imgs[i].setAttribute("name",i);
	}
	
	var loading = document.getElementById('loading');
	loading.style.display = "none";
	thumb_area.style.display = "block";
}


function linkset(e){
	
		var target_node;
   		if(e.target) {
      		target_node = e.target;
    	} else if(e.srcElement) {
      		target_node = e.srcElement;
    	}
		 // Safari対策
    	if (target_node.nodeType == 3) {
        	target_node = target_node.parentNode;
    	}
		
		if(target_node.tagName=="A"){
		var array_num = target_node.rel;
		}
		else if(target_node.tagName=="IMG"){
		var array_num = target_node.name;
		}
		
		preventAction(e);//タグのアクションを止める
		
		pagemove(array_num);
}

function pagemove(array_num){
		parent.scrollTo(0,0);
		var thumb_area = document.getElementById("thumbnails");
		var thumb_links = thumb_area.getElementsByTagName("a");
		
		var loading = document.getElementById('loading');
		loading.style.display = "block";
		thumb_area.style.display = "none";
		
//非同期処理ここから		
		var target_url = thumb_links[array_num].href;
		var content_area = document.getElementById('ex_content');
		// 処理を実行するための関数リファレンスを定義
		var funcRef = function(text_data) {
			content_area.innerHTML = text_data;
			
			//imgのsrc属性を置換
			var eximg_area = document.getElementById("ex_body");
			var eximg = eximg_area.getElementsByTagName("img")[0];
			var eximg_src = eximg.src;
			var searchtxt = /http.*\/image/i;//正規表現検索txt_httpからimageまでの文字列
			var replacetxt = "../ex/image";
			eximg_src = eximg_src.replace(searchtxt,replacetxt);
			eximg.setAttribute("src",eximg_src);
			
			content_area.getElementsByTagName("a")[0].setAttribute("name","childtop");//topアンカーのname重複回避
			content_area.getElementsByTagName("a")[0].setAttribute("id","childtop");//topアンカーのid重複回避
			
			loading.style.display = "none";
			content_area.style.display = "block";
			}
		// HTTP通信を開始し、完了したら上記関数を実行させる
		httpRequest(target_url, funcRef);
//非同期処理ここまで

		var move_nav_top = document.getElementById("move_nav_top");
		var prev_link_top = move_nav_top.getElementsByTagName("a")[0];
		var next_link_top = move_nav_top.getElementsByTagName("a")[1];
		var prev_last_top = move_nav_top.getElementsByTagName("span")[0];
		var next_last_top = move_nav_top.getElementsByTagName("span")[1];
		
		var move_nav_bottom = document.getElementById("move_nav_bottom");
		var prev_link_bottom = move_nav_bottom.getElementsByTagName("a")[0];
		var next_link_bottom = move_nav_bottom.getElementsByTagName("a")[1];
		var prev_last_bottom = move_nav_bottom.getElementsByTagName("span")[0];
		var next_last_bottom = move_nav_bottom.getElementsByTagName("span")[1];
		
		if(array_num>0){
		var prev_num = eval(array_num)-1;
		var prev_href = thumb_links[prev_num].getAttribute("href");
		
		prev_link_top.setAttribute("href",prev_href);
		prev_link_top.setAttribute("rel",prev_num);
		prev_link_top.style.display = "block";
		prev_last_top.style.display = "none";
		
		prev_link_bottom.setAttribute("href",prev_href);
		prev_link_bottom.setAttribute("rel",prev_num);
		prev_link_bottom.style.display = "block";
		prev_last_bottom.style.display = "none";
		
		}
		else{
		prev_link_top.style.display = "none";
		prev_last_top.style.display = "block";
		prev_link_bottom.style.display = "none";
		prev_last_bottom.style.display = "block";
		
		}	

		if(array_num<thumb_links.length-1){
		var next_num = eval(array_num)+1;
		var next_href = thumb_links[next_num].getAttribute("href");
		
		next_link_top.setAttribute("href",next_href);
		next_link_top.setAttribute("rel",next_num);
		next_link_top.style.display = "block";
		next_last_top.style.display = "none";
		
		next_link_bottom.setAttribute("href",next_href);
		next_link_bottom.setAttribute("rel",next_num);
		next_link_bottom.style.display = "block";
		next_last_bottom.style.display = "none";
		
		}
		
		else{
		next_link_top.style.display = "none";
		next_last_top.style.display = "block";
		next_link_bottom.style.display = "none";
		next_last_bottom.style.display = "block";
		
		}
		
		move_nav_top.style.display = "block";
		move_nav_bottom.style.display = "block";
		
		var page_pos=document.getElementById("page_pos");
		var page_num_txt=eval(array_num)+1+' / '+eval(thumb_links.length)+' ページ';
		page_pos.innerHTML = page_num_txt;
		page_pos.style.display = "block";
		
		dhtmlHistory.add(array_num);//履歴追加_RSH
}


function show_index(e){
		var move_nav_top = document.getElementById("move_nav_top");
		move_nav_top.style.display = "none";
		var move_nav_bottom = document.getElementById("move_nav_bottom");
		move_nav_bottom.style.display = "none";
		
		thumb_area = document.getElementById("thumbnails");		
		thumb_area.style.display = "block";
		var content_area = document.getElementById('ex_content');
		content_area.style.display = "none";
		
		if(e!=null){
		preventAction(e);
		}
		
		var page_pos=document.getElementById("page_pos");
		page_pos.style.display = "none";
		
		if(e!=null){
		dhtmlHistory.add('index');//履歴追加_RSH
		}
		
		parent.scrollTo(0,0);
	}

function preventAction(e) {	//タグのアクションを止める関数
		if(e.preventDefault){e.preventDefault();}
		else{event.returnValue = false;}
}

// イベントリスナーをセットする
function setListeners(e) {
		thumb_area = document.getElementById("thumbnails");
		thumb_links = thumb_area.getElementsByTagName("a");
		thumb_imgs = thumb_area.getElementsByTagName("img");
		for(i=0;i<thumb_links.length;i++){	
			addListener(thumb_links[i], 'click', linkset, false);
			addListener(thumb_imgs[i], 'click', linkset, false);
		}
		
		var move_nav_top = document.getElementById("move_nav_top");
		var prev_link_top = move_nav_top.getElementsByTagName("a")[0];
		var next_link_top = move_nav_top.getElementsByTagName("a")[1];
		var indx_link_top = move_nav_top.getElementsByTagName("a")[2];
		addListener(prev_link_top, 'click', linkset, false);
		addListener(next_link_top, 'click', linkset, false);
		addListener(indx_link_top, 'click', show_index, false);
		
		var move_nav_bottom = document.getElementById("move_nav_bottom");
		var prev_link_bottom = move_nav_bottom.getElementsByTagName("a")[0];
		var next_link_bottom = move_nav_bottom.getElementsByTagName("a")[1];
		var indx_link_bottom = move_nav_bottom.getElementsByTagName("a")[2];
		addListener(prev_link_bottom, 'click', linkset, false);
		addListener(next_link_bottom, 'click', linkset, false);
		addListener(indx_link_bottom, 'click', show_index, false);
}


// 引数に与えられたURLにHTTPリクエストを行ない、指定された関数を実行
function httpRequest(target_url, funcitonReference) {
    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("GET", target_url, true);
    httpObj.onreadystatechange = function() {
        if (httpObj.readyState == 4) {
            clearInterval(timerId);
            if (httpObj.status == 200) {
                funcitonReference(httpObj.responseText);
            } else {
                alert(httpObj.status + ' : ' + httpObj.statusText);
                return false;
            }
        }
    }
    httpObj.send('');
}

// XMLHttpRequestオブジェクト生成に失敗した場合の処理
function httpObjGenerateFail() {
    alert('ご利用のブラウザーでは、当サイトをご利用頂けません。');
    return false;
}
// HTTPタイムアウト処理
function timeoutCheck() {
    timeout_sec --;
    if(timeout_sec <= 0) {
        // タイマーをストップする
        clearInterval(timerId);
        // HTTPリクエストを中断する
        httpObj.abort();
        // エラーダイアログを表示
        alert('エラーが起きました。ページを再読み込みします。');
		return false;
		location.reload();
    }
}


//イベントリスナー関連

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;
    }
}


//戻るボタン対策ここから
window.dhtmlHistory.create();

var historyListener = function(newLocation, historyData) {

if(navigator.userAgent.indexOf("Safari") > -1) {}//Safariはあきらめる
else{
	if(newLocation=='index'){show_index();}
	else if(newLocation==''){show_index();}
	else if(newLocation=='top'){}
	else{pagemove(newLocation);}
	}
}


/*addLoadEvent(rsh_init);*/

function rsh_init() {
	dhtmlHistory.initialize();
//	dhtmlHistory.add("index");
	dhtmlHistory.addListener(historyListener);
}

//イベントリスナー登録
addListener(window, 'load', MakeLinkArray, false);
addListener(window, 'load', setListeners, false);
addListener(window, 'load', rsh_init, false);