// vscroll.js
// By Jyun. <Akanasu>
// URL: http://redone-on.blogspot.com/

function handle(delta) {
	if (delta < 0) {
		// 下方向にまわした場合の処理
	} else {
		// 上方向にまわした場合の処理
	}
	window.scrollBy(-delta*120, 0);
}

/** Event handler for mouse wheel event.
 */
function wheel(event){
	var delta = 0;
	if (!event) { /* For IE. */
		event = window.event;
	}
	//Shiftキー Cｔｒｌキー押下時
	var altK = typeof event.modifiers == 'undefined' ? event.altKey : event.modifiers & event.ALT_MASK;
	var ctrlK = typeof event.modifiers == 'undefined' ? event.ctrlKey : event.modifiers & event.CONTROL_MASK;
	var shiftK = typeof event.modifiers == 'undefined' ? event.shiftKey : event.modifiers & event.SHIFT_MASK;
	if (shiftK|ctrlK) { return true; }

	//テキストエリア上
	var isTextArea = false;
	var target = event.target||event.srcElement;
	if (target && target.nodeName.match (/input|textarea/i) && target.type.match (/textarea/i)) {
		isTextArea = true;
	}
	if (isTextArea) {
		return true;
	}

	if (event.wheelDelta) { /* IE/Opera. */
		delta = event.wheelDelta/120;
		if (window.opera) { delta = -delta; }
	} else if (event.detail) { /* Mozilla case. */
		delta = -event.detail/3;
	}
	/** If delta is nonzero, handle it.
	 * Basically, delta is now positive if wheel was scrolled up,
	 * and negative, if wheel was scrolled down.
	 */
	if (delta) {
		handle(delta);
	}
	if (event.preventDefault) { event.preventDefault(); }
	if (event.returnValue) { event.returnValue = false; }
	return false;
}
/** Initialization code. 
 * If you use your own event management code, change it as required.
 */
if (window.addEventListener) { window.addEventListener('DOMMouseScroll', wheel, false); }
//else if (window.attachEvent) { document.attachEvent('onmousewheel', wheel); }
window.onmousewheel = document.onmousewheel = wheel;

// Overwrite keyDown events - PageDown & PageUp
function KeyShirtcuts(event) {
	if (!event) { /* For IE. */
		event = window.event;
	}

	// Altキー　Ctrlキー押下時
	var altK = typeof event.modifiers == 'undefined' ? event.altKey : event.modifiers & event.ALT_MASK;
	var ctrlK = typeof event.modifiers == 'undefined' ? event.ctrlKey : event.modifiers & event.CONTROL_MASK;
	var shiftK = typeof event.modifiers == 'undefined' ? event.shiftKey : event.modifiers & event.SHIFT_MASK;
	if (altK|ctrlK) { return true; }

	// テキストエリア上
	var isTextArea = false;
	var target = event.target||event.srcElement;
	if (target && target.nodeName.match (/input|textarea/i) && target.type.match (/textarea/i)) {
		isTextArea = true;
	}
	if (isTextArea) {
		return true;
	}
	switch (event.keyCode) {
	case 33 : //PgUp
		window.scrollBy(-document.documentElement.clientWidth, 0); break;
	case 34 : //PgDw
		window.scrollBy(document.documentElement.clientWidth, 0); break;
	case 35 : //End
		window.scrollTo(window.scrollMaxX|document.body.scrollWidth, 0); break;
	case 36 : //Home
		window.scrollTo(0, 0); break;
	default: //alert(event.keyCode);
		return true;
	}
	if (event.preventDefault) { event.preventDefault(); }
	if (event.returnValue) { event.returnValue = false; }
	return false;
}
if (window.addEventListener) { window.addEventListener('keydown', KeyShirtcuts, false); }
else { document.attachEvent('onkeydown', KeyShirtcuts); }

