// JavaScript Document


/* 環境変数の設定
--------------------------------------------------------------------------	*/
var agent = navigator.userAgent.toLowerCase();
var dname = new String(document.domain);
var path = new String(location.pathname);
var win = (agent.indexOf("windows") != -1);
var mac = (agent.indexOf("mac") != -1);
var w3c = document.getElementById;
var gecko = agent.indexOf("gecko") != -1;
var opera = agent.indexOf("opera",0) != -1;
var safari = agent.indexOf("safari") != -1;
var ie = agent.indexOf("msie") != -1 && !opera;
var ie5win = (agent.indexOf("msie 5.0") != -1) && win;
var ie55win = (agent.indexOf("msie 5.5") != -1) && win;
var ie6win = (agent.indexOf("msie 6.") != -1) && win;
var ie5mac = (agent.indexOf("msie") != -1) && mac;
var ns = agent.indexOf("netscape") != -1 && !opera;
var ns6 = (agent.indexOf("netscape6/6.") != -1) && ns;




/* ブラウザ別スタイルシートを設定する関数
--------------------------------------------------------------------------	*/
function setCss(){
	//htmls = document.getElementsByTagName("html");
	//xmlns = htmls[0].getAttribute("xmlns");
	//var cssName = (ns6)? "ns" : ((safari) ? "safari" : ((opera)? "opera" : (((ie5mac || ie6win) && !xmlns)? "backcompat" : false)));
	//cssName = (safari) ? "safari" : ((opera)? "opera" : (((ie5mac || ie6win) && !xmlns)? "backcompat" : false));
	var cssName = (ns6)? "ns" : ((safari) ? "safari" : ((opera)? "opera" : false));

	if(cssName=="safari"){
		document.open();
		document.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/style.css\" title=\"default\">\n");
		document.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/style_s.css\"  title=\"f_s\">\n");
		document.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/style_l.css\"  title=\"f_l\">\n");
		document.close();
	}else if(cssName=="opera"){	
		document.open();
		document.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/style.css\" title=\"default\">\n");
		document.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/style_s.css\"  title=\"f_s\">\n");
		document.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/style_l.css\"  title=\"f_l\">\n");
		document.close();
	}else if(cssName=="ns"){
		document.open();
		document.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/style.css\">\n");
		document.close();
	}

	document.open();
	document.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/style.css\" title=\"default\">\n");
	document.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/style_s.css\"  title=\"f_s\">\n");
	document.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/style_l.css\"  title=\"f_l\">\n");
	document.close();
}
var setupCss = new setCss;





/* イベント追加
--------------------------------------------------------------------------	*/
function addEvent(obj, type, listener) {
	if(window.addEventListener) window.addEventListener('load',listener,false);
	else {
		var prev  = obj[type];
		obj[type] = (prev) ? function() { prev(); listener(); } : listener;
	}
}
window.addOnload = function(listener){
	addEvent(window, 'onload', listener);
}





/* スワップイメージ
--------------------------------------------------------------------------	*/
function roll(imageName, imageState) {
	if (loaded == 1 && imageState != '') {
		tabOn = eval(imageName+"_"+imageState+".src");
		document [imageName].src = tabOn;
	}
}



/* 文字可変
--------------------------------------------------------------------------	*/

function setStyle(f_type) {
	setActiveStyleSheet(f_type);
}

function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title)
        a.disabled = false;
    }
  }
  createCookie("style", title, 365);
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled)
      return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);


/* ナビゲーション周りの調整
--------------------------------------------------------------------------	*/
function setNavStyle(){
	this.w3c = document.getElementById; if (!this.w3c) return false;
	return this;
}

setNavStyle.prototype = {
	init : function(){
		NS.setCls("localnav");
	},
	
	setCls : function(id){
		NS.id = document.getElementById(id); if(!NS.id) return false;
		NS.uls = NS.id.getElementsByTagName("ul"); if(!NS.uls) return false;
		for(var i=0; i< NS.uls.length ; i++){	NS.uls[i].firstChild.setAttribute(NS.getClsAtr(),"first");	}
		NS.fixW(id);
	},
	
	fixW : function(id){
		NS.id = document.getElementById(id); if(!NS.id) return false;
		NS.lis = NS.id.getElementsByTagName("li"); if(!NS.lis) return false;
		if(ie && win && ie5win){
				for(var i=0; i< NS.lis.length ; i++){	NS.lis[i].style.width = "auto";}
		}
		if(ie55win){
			uls = NS.id.getElementsByTagName("ul");clis = uls[1].getElementsByTagName("li");
			for(var i=0; i< clis.length ; i++){clis[i].style.paddingTop = "4px";}
		}
	},
		
	getClsAtr : function(){
		cls = ie? "className" : "class";
		return cls;
	}
}


var NS = new setNavStyle();
window.addOnload(NS.init);



/* スクロール処理
--------------------------------------------------------------------------	*/


var eventTimer;    // タイマー変数
var restScroll=0;    // スクロール残量
function Scroll(base,move){
    // 移動元(base)要素＆オブジェクトを取得
    var obj_base = getElemPosition(base);
    var obj_baseP = getElemPositionP(base);
    // 移動先(move)要素＆オブジェクトを取得
    var elem_move = document.getElementById(move);
    var obj_move = getElemPosition(elem_move);
    //restScroll = obj_move.y-obj_base.y; 
	switch (move){
	case "top":
	  //alert(obj_move.y+":"+obj_base.y+":"+window.innerHeight+":"+obj_baseP.y);
	  //restScroll = obj_move.y-obj_base.y+window.innerHeight-obj_baseP.y;  
	    restScroll = obj_move.y-obj_base.y; 
		break;
	default:
	    restScroll = obj_move.y-0;
	}
    eventTimer = setInterval(setScrollPosition,1);
}
// スクロール処理をする
function setScrollPosition() {
    var moveValue=0;
    // スクロール残量が20以上の場合、スクロール量を変える
    // Math.abs()では値の絶対値を取得
    if(Math.abs(restScroll)>200){
        moveValue = (restScroll>0)?200:-200;
    }else{
        moveValue = Math.round(restScroll*0.1);
    }
    // スクロールを処理
    parent.scrollBy(0,moveValue);
    // スクロール残量を計算して、残りが無ければタイマー解除
    restScroll = (restScroll>0)?restScroll-moveValue:restScroll-moveValue;
    if(moveValue==0){
        clearInterval(eventTimer);
        restScroll=0;
    }
}
// 要素の位置を取得し、オブジェクトとして返す
function getElemPosition(elem) {
    var obj = new Object();
    obj.x = elem.offsetLeft;
    obj.y = elem.offsetTop;
    // 親要素を取得して位置情報を修正する
    while(elem.offsetParent) {
        elem = elem.offsetParent;
        obj.x += elem.offsetLeft;
        obj.y += elem.offsetTop;
    }
    return obj;
}
function getElemPositionP(elem) {
    var obj = new Object();
    obj.x = elem.offsetLeft;
    obj.y = elem.offsetHeight;
    // 親要素を取得して位置情報を修正する
    while(elem.offsetParent) {
        elem = elem.offsetParent;
        obj.x += elem.offsetLeft;
        obj.y += elem.offsetHeight;
    }
    return obj;
}


