/*******************************
 *         フッター定義
 *******************************/


var tkLib = {
	startY : 2009
	,nowDate:new Date()
	,copyRight:function(){
  	yearstr="";
		if(this.nowDate.getFullYear() == this.startY){
			yearstr += this.startY;
		}else{
			yearstr = "2008-" + this.nowDate.getFullYear();
		}
		document.write("Copyright&copy;　" + yearstr + " ***.");
  }
	
}

/*******************************
 *         ロールオーバー定義
 *******************************/

function initRollovers() {
	if (!document.getElementById) return
	
	var aPreLoad = new Array();
	var sTempSrc;
	var aImages = document.getElementsByTagName('img');

	for (var i = 0; i < aImages.length; i++) {		
		if (aImages[i].className == 'imgover') {
			var src = aImages[i].getAttribute('src');
			var ftype = src.substring(src.lastIndexOf('.'), src.length);
			var hsrc = src.replace(ftype, '_o'+ftype);

			aImages[i].setAttribute('hsrc', hsrc);
			
			aPreLoad[i] = new Image();
			aPreLoad[i].src = hsrc;
			
			aImages[i].onmouseover = function() {
				sTempSrc = this.getAttribute('src');
				this.setAttribute('src', this.getAttribute('hsrc'));
			}	
			
			aImages[i].onmouseout = function() {
				if (!sTempSrc) sTempSrc = this.getAttribute('src').replace('_o'+ftype, ftype);
				this.setAttribute('src', sTempSrc);
			}
		}
	}
}




/*******************************
 *     アンカー移動定義
 *******************************/


var pageScrolling = {
	speed : 20,      //set here the scroll speed: when this value increase, the speed decrease. 
	maxStep: 200,	 //set here the "uniform motion" step for long distances
	brakeK: 3,		 //set here the coefficient of slowing down
	hash:null,		
	currentBlock:null,
	requestedY:0,
	init: function() {
			var lnks = document.getElementsByTagName('a');   
			for(var i = 0, lnk; lnk = lnks[i]; i++) {   
				if ((lnk.href && lnk.href.indexOf('#') != -1) &&  ( (lnk.pathname == location.pathname) ||
				('/'+lnk.pathname == location.pathname) ) && (lnk.search == location.search)) {  
				lnk.onclick = pageScrolling.initScroll;   		
				}   
			}
			
	},
	getElementYpos: function(el){
			var y = 0;
			while(el.offsetParent){  
				y += el.offsetTop    
				el = el.offsetParent;
			}	return y;
	},		
	getScrollTop: function(){
			if(document.all) return (document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
			else return window.pageYOffset;   
	},	
	getWindowHeight: function(){
			if (window.innerHeight)	return window.innerHeight;
			if(document.documentElement && document.documentElement.clientHeight) return document.documentElement.clientHeight;
	},
	getDocumentHeight: function(){
			if (document.height) return document.height;
			if(document.body.offsetHeight) return document.body.offsetHeight;
	},
	initScroll: function(e){
			var targ;  
			if (!e) var e = window.event;
			if (e.target) targ = e.target;
			else if (e.srcElement) targ = e.srcElement;
			
			//alert("TG : " + e.target + " SRC : " + e.srcElement + " FROM : " + e.fromElement );
			var targlink;
			var str = "";
			if(targ.nodeName == "A" || targ.nodeName == "a"){ 
			
				targlink = new String(targ.href);
			
			}else{
				//alert("OBJECT !! LEN : " + targlink.length);
				for (var i in targ) {
					//alert(i);       // ループカウンタにメンバ名が入る。
					//alert(targ[i]);  // 括弧記法でメンバを参照できる。
					str += "KEY : " + i + " VALUE : " + targ[i] + "<br />\n";
				}
				//document.write(str);
				// String型にすることで文字列の長さを取得する
				if(targ.parentNode != null){
					targlink = new String(targ.parentNode);
				} else if(targ.parentElement !=null){
					targlink = new String(targ.parentElement);
				} else if(targ.baseURI !=null){
					targlink = new String(targ.baseURI);
				}
				//alert("TARGETLINK : " + targlink + " TARGET LEN : " + targ.parentNode.length);
			}
			// アンカー情報の取得
			pageScrolling.hash = targlink.substr(targlink.indexOf('#')+1,targlink.length);
			//pageScrolling.hash = targ.href.substr(targ.href.indexOf('#')+1,targ.href.length);
			//alert("HASH : " + pageScrolling.hash);
			pageScrolling.currentBlock = document.getElementById(pageScrolling.hash);   
			if(!pageScrolling.currentBlock) return;
			pageScrolling.requestedY = pageScrolling.getElementYpos(pageScrolling.currentBlock); 
			pageScrolling.scroll();  
			return false;
	},
	scroll: function(){
			var top  = pageScrolling.getScrollTop();
			if(pageScrolling.requestedY > top) {  
				var endDistance = Math.round((pageScrolling.getDocumentHeight() - (top + pageScrolling.getWindowHeight())) / pageScrolling.brakeK);
				endDistance = Math.min(Math.round((pageScrolling.requestedY-top)/ pageScrolling.brakeK), endDistance);
				var offset = Math.max(2, Math.min(endDistance, pageScrolling.maxStep));
			} else { var offset = - Math.min(Math.abs(Math.round((pageScrolling.requestedY-top)/ pageScrolling.brakeK)), pageScrolling.maxStep);
			} window.scrollTo(0, top + offset);  
			if(Math.abs(top-pageScrolling.requestedY) <= 1 || pageScrolling.getScrollTop() == top) {
				window.scrollTo(0, pageScrolling.requestedY);
				//if(!document.all || window.opera) location.hash = pageScrolling.hash;
				pageScrolling.hash = null;
				floatScrolling.flg = true;
			} else 	{
				floatScrolling.flg = false;
				setTimeout(pageScrolling.scroll,pageScrolling.speed);
			}
	}		
}




/*******************************
 *     フロート移動定義
 *******************************/


var floatScrolling = {
	flg: true,
	brName : "",
	
	flayer : "floater",		// <DIV>のID名
	baseY : 49,
	//dY=84;
	chN6 : document.getElementById,			// N6のチェック用
	chIE : document.all,								// IEのチェック用
	chN4 : document.layers,							// N4のチェック用
	
	currentX : 0,
	currentY : 0,  
         
	lastScrollX : 0,
	lastScrollY : 0,
	
	diffY : 0,
	diffX : 0,

	init: function(){
		setInterval("floatScrolling.scroll()",3);
		floatScrolling.brName =navigator.appName.charAt(0);
	},
	
	scroll: function(){
		if(floatScrolling.flg){
			if(floatScrolling.chIE) {
				fObj = document.all[floatScrolling.flayer].style;
				var CANVAS = document[ 'CSS1Compat' == document.compatMode ? 'documentElement' : 'body'];	// IE6用処理
				floatScrolling.diffY = CANVAS.scrollTop; 
				floatScrolling.diffX = CANVAS.scrollLeft;
				px_tani = "";
			}else if(floatScrolling.chN6){
				fObj = document.getElementById(floatScrolling.flayer).style;
				floatScrolling.diffY = pageYOffset;
				floatScrolling.diffX = pageXOffset;
				px_tani = "px";
			}else if(floatScrolling.chN4){
				fObj = document[flayer];
				floatScrolling.diffY = pageYOffset;
				floatScrolling.diffX = pageXOffset;
				px_tani = "";
			}
			if(floatScrolling.diffY != floatScrolling.lastScrollY) {
				percent = 0.1 * (floatScrolling.diffY - floatScrolling.lastScrollY);
				if(percent > 0){
					percent = Math.ceil(percent);
				}else {
					percent = Math.floor(percent);
				}
				
				floatScrolling.lastScrollY = floatScrolling.lastScrollY + percent;
				
				fObj.top = floatScrolling.lastScrollY+floatScrolling.baseY+px_tani;
				//fObj.top = lastScrollY+px_tani;
			}
		}
	}
}


/*******************************
 *     ページ遷移後移動定義
 *******************************/
　
var nextScrolling = {
	speed : 20, 
	hash:null,	
	requestedY:0,
	
	prep: function() {
		
		if(window.location.hash !=""){
		var query =window.location.hash;
		//alert("QUERY1: " + query + " QUERY LENGTH : " + query.length);
		if(query){
		nextScrolling.hash = query.substr(query.indexOf('#')+1,query.length);
		//alert("KEY : " + nextScrolling.hash);
		window.location.hash = "top";
		}else{
		nextScrolling.hash ="ss";
		}
		
		
		
		}
		
	},
	init: function(){
		nextScrolling.scroll();
	},
	scroll: function() {
			//alert("KEY : " + nextScrolling.hash);		// ← メンバー変数のhashの値が向かう取得できません･･･。
			pageScrolling.hash = nextScrolling.hash;
			pageScrolling.currentBlock = document.getElementById(nextScrolling.hash);   
			if(!pageScrolling.currentBlock) return;
			pageScrolling.requestedY = pageScrolling.getElementYpos(pageScrolling.currentBlock); 
			pageScrolling.scroll();
	}
}

nextScrolling.prep();





/*******************************
*ポップアップ
*******************************/

function openPage(pageLink,pageWidth,pageHeight)
{
	window.open( pageLink,"new","width=" + pageWidth + ",height=" + pageHeight + ",toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=no");
}

/*******************************
*ポップアップ
*******************************/
function externalLinks() {
	
	if (!document.getElementsByTagName) return;
	
	var anchors = document.getElementsByTagName("a");
	
	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
		
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
		anchor.target = "_blank";
		
	}
}

/*******************************
*フォーム画像表示
*******************************/
function ShowFormGuideImage(obj) {
   // 案内画像を消す
   if( obj.value == '' ) {
      obj.style.backgroundImage='';
   }
}
function HideFormGuideImage(obj) {
   // 案内画像を表示
   obj.style.backgroundImage = 'url(../images/searchbg.gif)';
}




window.onload = function(e) {
	pageScrolling.init();
	//floatScrolling.init();
	nextScrolling.init();
	initRollovers();
	externalLinks();
	
}






function SymError(){
  return true;
}

window.onerror = SymError;





