
function now_key(){
	myD       = new Date();
	myYear    = myD.getYear();
	myYear4   = (myYear < 2000) ? myYear+1900 : myYear;
	myMonth   = keta(myD.getMonth() + 1);
	myDate    = keta(myD.getDate());
	myHours   = keta(myD.getHours());
	myMinutes = keta(myD.getMinutes());
	mySeconds = keta(myD.getSeconds());
	date_time = myYear4+myMonth+myDate+"_"+myHours+myMinutes+mySeconds;
	return(date_time);
}
function keta(num){
	ret = (num<10) ? "0"+num : num+"";
	return(ret);
}

function setPosition() {
	var now_rate=0;
	var pageHeight;
	//pageHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
	pageHeight = document.documentElement.scrollHeight;
	if(pageHeight<document.body.scrollHeight)	pageHeight = document.body.scrollHeight;
	if(pageHeight==0)	return;
	if(getScreenSize().y==0)	return;

	now_rate = (getScrollPosition().y + getScreenSize().y) / pageHeight;
//alert("now_rate:"+now_rate+" Position.y:"+getScrollPosition().y+" Size.y:"+getScreenSize().y+" pageHeight:"+pageHeight);
	if(max_rate==0 && now_rate===1)	return;	// 初回で100%は計測しない
		// 前画面表示時はスクロール最大＋スクリーンサイズ＝ページサイズ
//	w_rate = Math.floor(now_rate*10)/10;
	w_rate = Math.floor(now_rate*100);
	if( w_rate > max_rate ) {
		max_rate = w_rate;
		sendSeidoku(max_rate, page_key);
		//alert("max_rate:"+max_rate+"\nscrill.y:"+getScrollPosition().y+"\nscreenY:"+getScreenSize().y+"\npageHeight:"+pageHeight);
	}

//	setTimeout( function(){setPosition()},500 );
	setTimeout( function(){setPosition()},3000 );	// msec
}

// スクロール量 ---------------------------------

function getScrollPosition() {
	var obj = new Object();

	obj.x = document.documentElement.scrollLeft || document.body.scrollLeft;	obj.y = document.documentElement.scrollTop  || document.body.scrollTop;

	if(isSafari){
//	      obj.x = document.body.scrollLeft;
//	      obj.y = document.body.scrollTop;
	}

	return obj;
}

// 表示領域サイズ -------------------------------

function getScreenSize() {
	var obj = new Object();

	if (!isSafari && !isOpera) {
		obj.x = document.documentElement.clientWidth  || document.body.clientWidth  || document.body.scrollWidth;
		//obj.y = document.documentElement.clientHeight || document.body.clientHeight || document.body.scrollHeight;
		// ブラウザ毎の動作が違うので最小の値を利用
		obj.y = document.documentElement.clientHeight;
		if(obj.y==0 || obj.y > document.body.clientHeight)	obj.y = document.body.clientHeight;
		if(obj.y==0 || obj.y > document.body.scrollHeight)	obj.y = document.body.scrollHeight;
	}
	else {
		obj.x = window.innerWidth;
		obj.y = window.innerHeight;
	}
//alert("ScreenSize Height document:"+document.documentElement.clientHeight+" body:"+document.body.clientHeight+" scroll:"+document.body.scrollHeight+" inner:"+window.innerHeight+" obj.y:"+obj.y);

	obj.mx = parseInt((obj.x)/2);
	obj.my = parseInt((obj.y)/2);

	return obj;
}

function sendSeidoku(rate, page_key) {
//	alert("rate:"+rate);
	var t = document.getElementById('seidoku_tuusin');
	if(t){
		encode_url = encodeURIComponent(document.referrer);
		var element = document.createElement('script');
//		if (window.base_url === undefined){	// 修正前モジュール対応のため
//			element.setAttribute("src","http://mobilelog.13ka8.jp/accesslog/seidoku.php?rate="+rate+"&page_key="+page_key+"&site_id"+site_id);
//		}else
//			element.setAttribute("src",base_url+"?rate="+rate+"&page_key="+page_key+"&site_id="+site_id);

		//var	para_site_id;	
		if (window.site_id === undefined)	para_site_id = "";
		else			para_site_id = "&site_id="+site_id;
//alert("para_site_id["+para_site_id+"]");
		element.setAttribute("src",base_url+"?rate="+rate+"&page_key="+page_key+para_site_id);

		var objBody = document.getElementsByTagName("body").item(0);
		objBody.appendChild(element);
	}
}


addLoadEvent(setPosition);


// UA判別 --------------------------------------------

var isWin9X = (navigator.appVersion.toLowerCase().indexOf('windows 98')+1);
var isIE = (navigator.appName.toLowerCase().indexOf('internet explorer')+1?1:0);var isOpera = (navigator.userAgent.toLowerCase().indexOf('opera')+1?1:0);
if (isOpera) isIE = false;
var isSafari = (navigator.appVersion.toLowerCase().indexOf('safari')+1?1:0);

var max_rate=0;

/*

 scroll.js

*/



/* ------------------------------------------ *
 * $()
 *  - return a Element from id-name
/* ------------------------------------------ */


var $ = function(obj){
	return document.getElementById(obj);
};


/* ------------------------------------------ *
 * scroll
 *  - .leap   <- preset
 *  - .land   <- scroll
 *  - .cancel <- cancel
 *  - .getElementPos  <- Function for preset
 *  - .getScreemSize  <- Function for preset
/* ------------------------------------------ */

// scrollBy だと、終了条件の設定が難しい。また、現在のスクロール位置の影響を受ける
// 正の移動で、スクロール限界に引っかかると無限ループ
// onClick等でキャンセル


var scroll = {
	leap: function(idname){
		var start = this.getScrollPos();
		var obj = $(idname);
		var goal = this.getElementPos(obj);
		
		var moveY = goal.y - start.y;
		var moveX = goal.x - start.x;

		var direction = new Object;
		direction.x = moveX > 0 ? 'plus' : 'minus'
		direction.y = moveY > 0 ? 'plus' : 'minus'

		var maxScroll = this.getMaxScroll();
		goal.x = goal.x > maxScroll.x ? maxScroll.x : goal.x;
		goal.y = goal.y > maxScroll.y ? maxScroll.y : goal.y;

		this.land(goal,direction);
		this.cancel();
	},

	land: function(goal,direction){
		var pos = this.getScrollPos();
		var arrive = new Object;
		arrive.x = direction.x == 'plus'
			? Math.floor(pos.x + ((goal.x - pos.x) / 5)) + 1
			: arrive.x = Math.max(Math.floor(pos.x - (pos.x / 6)),goal.x);
		arrive.y = direction.y == 'plus'
			? Math.floor(pos.y + ((goal.y - pos.y) / 5)) + 1
			: arrive.y = Math.max(Math.floor(pos.y - (pos.y / 6)),goal.y)

		scrollTo(arrive.x,arrive.y);

		if(direction.y == 'plus' && direction.x == 'plus') {
			if(arrive.y < goal.y || arrive.x < goal.x){
				this.timerID = setTimeout( function(){ scroll.land(goal,direction) },10);
			}
		}
		else if(direction.y == 'plus' && direction.x == 'minus') {
			if(arrive.y < goal.y || arrive.x != goal.x){
				this.timerID = setTimeout( function(){ scroll.land(goal,direction) },10);
			}
		}
		else if(direction.y == 'minus' && direction.x == 'plus') {
			if(arrive.y != goal.y || arrive.x < goal.x){
				this.timerID = setTimeout( function(){ scroll.land(goal,direction) },10);
			}
		}
		else if(direction.y == 'minus' && direction.x == 'minus') {
			if(arrive.y != goal.y || arrive.x != goal.x){
				this.timerID = setTimeout( function(){ scroll.land(goal,direction) },10);
			}
		}
		else {
			console.log('error!');
		}

	},

	cancel: function(){
		addEvent(document,'mousedown',function(){clearTimeout(scroll.timerID)},false);
		addEvent(document,'keydown',function(){clearTimeout(scroll.timerID)},false);
		addEvent(document,'mousewheel',function(){clearTimeout(scroll.timerID)},false);
		addEvent(document,'DOMMouseScroll',function(){clearTimeout(scroll.timerID)},false);
	},

	getMaxScroll: function(){
		var scrSize = this.getScreenSize();
		var docSize = this.getDocSize();

		var maxScroll = new Object;
		maxScroll.x = docSize.x - scrSize.x;
		maxScroll.y = docSize.y - scrSize.y;
		
		return maxScroll;
	},

	getElementPos: function(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;
	},

	getScrollPos: function(){
		var pos = new Object();
		pos.x = document.documentElement.scrollLeft || document.body.scrollLeft;
		pos.y = document.documentElement.scrollTop || document.body.scrollTop;
		return pos;
	},

	getDocSize: function(){
		var doc = new Object;
		doc.x = document.documentElement.scrollWidth || document.body.scrollWidth;
		doc.y = document.documentElement.scrollHeight || document.body.scrollHeight;
		return doc;
	},

	getScreenSize: function() {
		var isOpera = (navigator.userAgent.toLowerCase().indexOf('opera')+1?1:0);
		var isSafari = (navigator.appVersion.toLowerCase().indexOf('safari')+1?1:0);
		var obj = new Object();
		if (!isSafari && !isOpera) {
			obj.x = document.documentElement.clientWidth || document.body.clientWidth || document.body.scrollWidth;
			obj.y = document.documentElement.clientHeight || document.body.clientHeight || document.body.scrollHeight;
		} else {
			obj.x = window.innerWidth;
			obj.y = window.innerHeight;
		}
		obj.mx = parseInt((obj.x)/2);
		obj.my = parseInt((obj.y)/2);
		return obj;
	},

	hop: function(d){
		var direction = d == 'up' ? 'minus' : 'plus';
		var pos = this.getScrollPos();
		var scr = this.getScreenSize();
		
		var goal = new Object;
		goal.x = pos.x;
		goal.y = direction == 'plus' ? pos.y + scr.y : pos.y - scr.y;

		var maxScroll = this.getMaxScroll();
		goal.x = pos.x;
		goal.y = goal.y > maxScroll.y ? maxScroll.y : goal.y;

		this.land(goal,direction);
		this.cancel();
	}
}

/* ------------------------------------------
 *
 * Index
 *  - addEvent()
 *  - addLoadEvent()
 *  - getElementsByClass()
 *  - getElementSize()
 *  - toggle()
 *  - getCookie(), setCookie(), deleteCookie()
 *  - doublePostingBlocker()
 *  - tab
 *
/* ------------------------------------------ */


/* ------------------------------------------
 * addEvent()
 *  - addEvent(window,'load',func1,false);
 *  - addEvent(window,'load',func2,false);
 *  - addEvent(window,'load',func3,false);
/* ------------------------------------------ */

function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}


/* ------------------------------------------
 * addLoadEvent()
 *  - addLoadEvent(createOBJ);
/* ------------------------------------------ */

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}


/* ------------------------------------------
 * DOMContentLoaded
 *  - readyList: the list of functions
 *  - domLoaded: wait & execute
 *  - bindReady: register a function
/* ------------------------------------------ */

var util = {};

util.browser = {
	isIE: !!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1),
	isOpera:  navigator.userAgent.indexOf('Opera') > -1,
	isWebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
	isGecko:  navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') === -1,
	isMobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/),
	XPath: !!document.evaluate
}

util.event = {
	domLoaded: function(){
		if(util.event.readyList.done) return;

		// opera,mozilla,safari
		if(util.browser.isOpera || util.browser.isGecko || util.browser.isWebKit){
			document.addEventListener("DOMContentLoaded", util.event.readyList, false);
		}
		// msie
		else if(util.browser.isIE){
			(function(){
				try {
					// If IE is used, use the trick by Diego Perini
					// http://javascript.nwbox.com/IEContentLoaded/
					document.documentElement.doScroll('left');
				}
				catch (e) {
					setTimeout(arguments.callee, 50);
					return;
				}
				// no errors, execute functions
				util.event.readyList();
			})();
		}
		// other
		else{
			util.event.load(util.event.readyList);
		}
	},

	bindReady: function(fn){
		var oldlist = util.event.readyList;
		util.event.readyList = function() {
			oldlist();
			fn();
		}
	},

	readyList: function(){
		//excuted-flag
		if (arguments.callee.done) return;
		arguments.callee.done = true;
	}
}


/* ------------------------------------------ *
 * getElementsByClass()
 *  - getElementsByClass(cname,document,'div',false);
 *  - getElementsByClass(cname,node,tag);
/* ------------------------------------------ */

getElementsByClass = function(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}


/* ------------------------------------------ *
 * getElementSize()
 *  - require target objects
 *  - return objects of width/height
/* ------------------------------------------ */

getElementSize = function(elm) {
	var oSize = new Object();
	var elm2 = elm.cloneNode(true);

	if(-1 == navigator.userAgent.indexOf('MSIE 5')){
		elm2.style.padding = '0';
		elm2.style.border = '0';
	}
	elm2.style.display = 'block';
	elm2.style.position = 'absolute';

	elm.parentNode.appendChild(elm2);
	oSize.oh = elm2.clientHeight;
	oSize.ow = elm2.clientWidth;
	elm.parentNode.removeChild(elm2);
	
	return oSize;
}


/* ------------------------------------------
 * toggle()
/* ------------------------------------------ */

function toggle(obj) {
	var el = document.getElementById(obj);
	if ( el.style.display != 'none' ) {
		el.style.display = 'none';
	}
	else {
		el.style.display = '';
	}
}


/* ------------------------------------------
 * getCookie(), setCookie(), deleteCookie()
/* ------------------------------------------ */

function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ';', len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+'='+escape( value ) +
		( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
		( ( path ) ? ';path=' + path : '' ) +
		( ( domain ) ? ';domain=' + domain : '' ) +
		( ( secure ) ? ';secure' : '' );
}

function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + '=' +
			( ( path ) ? ';path=' + path : '') +
			( ( domain ) ? ';domain=' + domain : '' ) +
			';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}


/* ------------------------------------------
 * doublePostingBlocker()
/* ------------------------------------------ */

function createOBJ() {
	if (!document.getElementsByTagName('form')){ return };
	
	// Add events
	x = document.getElementsByTagName('input');
	for(i=0;i<x.length;i++)
	{
		if(x[i].getAttribute('className') == 'cancel' || x[i].getAttribute('class') == 'cancel') continue;
		if(x[i].type == 'submit' || x[i].type == 'image')
		{
			x[i].onclick = function(){ doublePostingBlocker(this)};
			x[i].onkeypress = function(){ doublePostingBlocker(this)};
		}
	}
}

function doublePostingBlocker(obj) {
	window.setTimeout( function() { obj.disabled = true;}, 1)
	window.setTimeout( function() { obj.disabled = false;}, 5000)
}



/* ------------------------------------------
 * tab
/* ------------------------------------------ */

var tab = {
	init: function(){
		var tabs = this.setup.tabs;
		var pages = this.setup.pages;
 
		for(i=0; i<pages.length; i++) {
			pages[i].style.display = 'none';
			pages[i].style.position = 'absolute';
			tabs[i].onclick = function(){ tab.showpage(this); return false; };
		}
	},
 
	showpage: function(obj){
		var tabs = this.setup.tabs;
		var pages = this.setup.pages;
		var num;
 
		for(num=0; num<tabs.length; num++) {
			if(tabs[num] === obj) break;
		}
 
		for(var i=0; i<pages.length; i++) {
			if(i == num) {
				if( pages[num].offsetHeight != 0 ){
					pages[num].style.display = 'none';
					tabs[num].className = null;
				}
				else{
					pages[num].style.display = 'block';
					tabs[num].className = null;
				}
			}
			else{
				pages[i].style.display = 'none';
				tabs[i].className = null;
			}
		}
	}
}


/* ------------------------------------------
 * showcase
/* ------------------------------------------ */

var showcase = {
	init: function(cname,pos){
		var node = document.getElementById('contents');
		var tag = 'div';
		var wrap = getElementsByClass(cname,node,tag);
		for(var i=0; i<wrap.length; i++){
			this.setup(wrap[i],pos);
		}
	},

	setup: function(wrap,pos){
		var links = wrap.getElementsByTagName('a');
		var bigWrap = document.createElement('p');
		var bigImg = new Image();
		var text =  document.createTextNode(links[0].title);
		
		if(pos == 'before'){
			var thumb = wrap.getElementsByTagName('p')[0];
			wrap.removeChild(thumb);
			wrap.appendChild(bigWrap);
			wrap.appendChild(thumb);
		} else { 
			wrap.appendChild(bigWrap);
		};

		bigWrap.className = "bigImg";
		bigImg.src = links[0].href;
		bigWrap.appendChild(bigImg);
		bigWrap.appendChild(text);

		for(var i=0; i<links.length; i++) {
			var thumb = new Image();
			thumb.src = links[i].href;
			links[i].onclick = function(){
				showcase.showImg(this,bigImg,text);
				return false;
			};
		}
	},
	
	showImg: function(elm,bigImg,text){
		bigImg.src = elm.href;
		text.nodeValue = elm.title;
	}
}


/* ------------------------------------------
 * set Event
/* ------------------------------------------ */

addLoadEvent(createOBJ);

util.event.bindReady( function(){ 

	tab.setup = {
		tabs: [
//			document.getElementById('navi').getElementsByTagName('a')[2],
//			document.getElementById('navi').getElementsByTagName('a')[3]
		],
 
		pages: [
//			document.getElementById('navigation'),
//			document.getElementById('search')
		]
	}

	tab.init();

} );

util.event.domLoaded();

