/* (C)Shinkousoku Printing Inc. http://www.sksp.co.jp/ */
/*@cc_on _d=document;eval('var document=_d')@*/
/*for Dreamweaver: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />*/

function SKSP() {
	var userAgent = navigator.userAgent.toLowerCase();
	this.isMac    = userAgent.match(/Mac|mac/);
	this.isWin    = userAgent.match(/Win|win/);
	this.isIE     = userAgent.match(/MSIE|msie/);
	this.isOldIE  = (userAgent.match(/(MSIE|msie) (5|6)\./) != null);

	this.naviInterval     = null;
	this.scrollInterval   = null;
	this.scrollTargetID   = '';
	this.preloadImages    = [];
	this.rollOverElements = [];
	
	this.bodyBlockID      = 'body';
	this.mainBlockID      = 'content';
	this.naviBlockID      = 'sidebar';
	this.waitDuration     = 500;
	this.updateDuration   = 10;
	this.easingSpeed      = 10;
	this.mainSlideHeight  = 0;
	this.naviSlideHeight  = 0;
	this.naviSlideTop     = 0;
		
	this.fontSizeLv       = 0;
	this.fontSizeMinLv    = -1;
	this.fontSizeMaxLv    = 1;
	this.fontSizeUpID     = 'fsize-large';
	this.fontSizeDownID   = 'fsize-small';
	this.fontSizeResetID  = 'fsize-normal';

	this.cookieName = 'niigata-airport';

	var protocol = (document.location.protocol == 'file:') ? 'http:' : document.location.protocol;
	this.usingMouseDown  = false;
	this.mouseOverSuffix = '_o';
	this.mouseDownSuffix = '_d';
	this.domain  = 'www.niigata-airport.gr.jp';
	this.pngPath = protocol + '//' + this.domain + 'share/img/png.gif';
}

SKSP.prototype = {
		
	addEventListener : function (o, e, f, c) {
		if (e == 'DOMMouseScroll') {
			if (window.addEventListener) window.addEventListener('DOMMouseScroll', f, false);
			window.onmousewheel = document.onmousewheel = f;
		}
		else {
			(o.addEventListener) ? o.addEventListener(e, f, c) : o.attachEvent('on' + e, f);
		}
	},

	removeEventListener : function (o, e, f, c) {
		if (e == 'DOMMouseScroll') {
			if (window.removeEventListener) window.removeEventListener('DOMMouseScroll', f, false);
			window.onmousewheel = document.onmousewheel = null;
		}
		else {
			(o.removeEventListener) ? o.removeEventListener(e, f, c) : o.detachEvent('on' + e, f);
		}
	},

	getElementsByClassName : function(tagName, className) {
		var results  = new Array();
		var elements = document.getElementsByTagName(tagName);
		for (var i = 0, count = elements.length; i < count; i++) {
			if (!elements[i].className) continue;
			var classes = elements[i].className.split(' ');
			for (var j = 0, n = classes.length; j < n; j++) {
				if (classes[j] == className) {
					results[results.length] = elements[i];
					break;
				}
			}
		}
		return results;
	},

	/*--------------------------------------------------*/

	getOffsetTop : function(o) {
		return o.offsetTop + ((o.offsetParent) ? K.getOffsetTop(o.offsetParent) : 0);
	},

	getOffsetLeft : function(o) {
		return o.offsetLeft + ((o.offsetParent) ? K.getOffsetLeft(o.offsetParent) : 0);
	},

	getScrollTop : function() {
		return document.body.scrollTop || document.documentElement.scrollTop;
	},

	/*--------------------------------------------------*/

	getStyle : function (elememt, property, pseudo) {
		var camelize = function(str) {
			return str.replace(/-([a-z])/g, function($0, $1) { return $1.toUpperCase(); });
		};
		var deCamelize = function(str) {
			return str.replace(/[A-Z]/g, function($0) { return '-' + $0.toLowerCase(); });
		};
		if (elememt.currentStyle) {
			if (property.indexOf('-') != -1) property = camelize(property);
			return elememt.currentStyle[property];
		}
		else if (getComputedStyle) {
			if (property.indexOf('-') == -1) property = deCamelize(property);
			return document.defaultView.getComputedStyle(elememt, pseudo).getPropertyValue(property);
		}
		return '';
	},

	getFloatStyle : function(element) {
		var userAgent = navigator.userAgent.toLowerCase();
		var float = K.getStyle(element, 'float');
		if (!float) {
			var styleFloat = (userAgent.match(/msie/) && !userAgent.match(/opera/)) ? 'styleFloat' : 'cssFloat';
			float = K.getStyle(element, styleFloat);
		}
		return float;
	},

	/*--------------------------------------------------*/
	
	createCookie : function(value, days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime() + (24 * 60 * 60 * 1000 * days));
			var expires = '; expires=' + date.toGMTString();
		}
		else {
			expires = '';
		}
		document.cookie = K.cookieName + '=' + value + expires + '; path=/';
	},
	
	readCookie : function() {
		var cookies = document.cookie.split(';');
		for (var i = 0, cookieLength = cookies.length; i < cookieLength; i++) {
			if (cookies[i].indexOf(K.cookieName + '=') > -1) {
				var cookie = cookies[i].split('=');
				return cookie[1];
			}
		}
		return null;
	},

	/*--------------------------------------------------*/

	getFlashPlayerMajorVersion : function() {
		var tmp;
		if (navigator.plugins && navigator.mimeTypes.length) {
			tmp = navigator.plugins['Shockwave Flash'].description.match(/([0-9]+)/);
		}
		else {
			tmp = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').match(/([0-9]+)/);
		}
		return parseInt(tmp[0]);
	},

	createSWFObject : function(src, attr, param, tabCount) {
		var tab = '\t';
		for (var i = 1; i < tabCount; i++) tab += '\t';
		document.write('\n' + tab + '<object');
		if (K.isIE) document.write(' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0"');
		if (attr) {
			for (var key in attr) document.write(' ' + key + '="' + attr[key] + '"');
		}
		document.write(' data="' + src + '" type="application/x-shockwave-flash">\n');
		document.write(tab + '\t<param name="movie" value="' + src + '" />\n');
		if (param) {
			for (var key in param) {
				if (key != 'wmode') {
					document.write(tab + '\t<param name="' + key + '" value="' + param[key] + '" />\n');
				}
				else if (param[key] == 'transparent' || K.getFlashPlayerMajorVersion() < 10) {
					document.write(tab + '\t<param name="wmode" value="' + param[key] + '" />\n');
				}
			}
		}
		else 	if (K.getFlashPlayerMajorVersion() < 10) {
			document.write(tab + '\t<param name="wmode" value="opaque" />\n');
		}
		document.write(tab + '</object>');
	},
	
	/*--------------------------------------------------*/

	moveNavi : function() {
		clearInterval(K.naviInterval);
		var naviBlock = document.getElementById(K.naviBlockID);
		if (!naviBlock) naviBlock = K.getElementsByClassName('div', K.naviBlockID)[0];
		var scrollTop = K.getScrollTop();
		var targetTop = (scrollTop - K.bodyStartTop) + K.naviSlideTop;
		if (targetTop <= K.naviStartTop) {
			targetTop = K.naviStartTop;
		}
		else if (targetTop >= K.movableTop) {
			targetTop = K.movableTop;
		}
		var naviTop = parseInt(K.getStyle(naviBlock, 'top'));
		var distance = targetTop - naviTop;
		distance += (distance > 0) ? K.easingSpeed : -K.easingSpeed;
		if (Math.abs(distance) > K.easingSpeed) {
			var moving = distance / K.easingSpeed;
			if (Math.abs(moving) < 1) moving = (moving > 0) ? 1 : -1;
			naviBlock.style.top = (naviTop + moving) + 'px';
			K.naviInterval = setInterval(K.moveNavi, K.updateDuration);
		}
		else {
			naviBlock.style.top = targetTop + 'px';
		}
	},

	naviHandler : function() {
		clearInterval(K.naviInterval);
		K.naviInterval = setInterval(K.moveNavi, K.waitDuration);
	},

	setupNavi : function() {
		var bodyBlock = document.getElementById(K.bodyBlockID);
		var mainBlock = document.getElementById(K.mainBlockID);
		var naviBlock = document.getElementById(K.naviBlockID);
		if (!bodyBlock && K.getElementsByClassName('div', K.bodyBlockID).length == 1) bodyBlock = K.getElementsByClassName('div', K.bodyBlockID)[0];
		if (!mainBlock && K.getElementsByClassName('div', K.mainBlockID).length == 1) mainBlock = K.getElementsByClassName('div', K.mainBlockID)[0];
		if (!naviBlock && K.getElementsByClassName('div', K.naviBlockID).length == 1) naviBlock = K.getElementsByClassName('div', K.naviBlockID)[0];
		if (!bodyBlock || !mainBlock || !naviBlock) return;
		var mainHeight = mainBlock.scrollHeight + K.mainSlideHeight;
		var naviHeight = naviBlock.scrollHeight + K.naviSlideHeight;
		if (naviHeight >= mainHeight) return;
		if (!K.getStyle(bodyBlock, 'position').match(/absolute|relative/)) {
			bodyBlock.style.position = 'relative';
		}		
		K.bodyStartTop = K.getOffsetTop(bodyBlock);
		K.naviStartTop = K.getOffsetTop(naviBlock) - K.bodyStartTop;
		K.movableTop = K.naviStartTop + (mainHeight - naviHeight);		
		if (K.getStyle(naviBlock, 'position') != 'absolute') {
			var naviLeft = K.getOffsetLeft(naviBlock) - K.getOffsetLeft(bodyBlock);
			naviBlock.style.position = 'absolute';
			naviBlock.style.float = 'none';
			naviBlock.style.margin = '0px';
			naviBlock.style.top = K.naviStartTop + 'px';
			naviBlock.style.left = naviLeft + 'px';
		}
		K.addEventListener(window, 'scroll', K.naviHandler, false);
		K.addEventListener(window, 'resize', K.naviHandler, false);
		K.moveNavi();
	},

	/*--------------------------------------------------*/

	smoothScroll : function() {
		clearInterval(K.scrollInterval);
		var targetTop = K.getOffsetTop(document.getElementById(K.scrollTargetID));
		var pageHeight = (document.body.scrollHeight) ? document.body.scrollHeight : document.height;
		var windowHeight = (window.innerHeight) ? window.innerHeight : document.documentElement.offsetHeight;
		var scrollMax = pageHeight - windowHeight;
		if (targetTop > scrollMax) targetTop = scrollMax;
		var scrollTop = K.getScrollTop();
		var distance = targetTop - scrollTop;
		distance += (distance > 0) ? K.easingSpeed : -K.easingSpeed;
		if (Math.abs(distance) > K.easingSpeed) {
			var moving = distance / K.easingSpeed;
			if (Math.abs(moving) < 1) moving = (moving > 0) ? 1 : -1;
			window.scrollTo(0, scrollTop + moving);
			K.scrollInterval = setInterval(K.smoothScroll, K.updateDuration);
		}
		else {
			window.scrollTo(0, targetTop);
		}
	},

	setupAnchor : function() {
		var anchors = document.getElementsByTagName('a');
		for (var i = 0, length = anchors.length; i < length; i++) {
			var id = anchors[i].getAttribute('href', 2).replace(/#/g, '');
			if (!id || !document.getElementById(id) || document.getElementById(id).className.indexOf('tab') > -1) continue;
			var clickHandler = function(e) {
				(e.preventDefault) ? e.preventDefault() : e.returnValue = false;
				var anchor = (e.srcElement) ? e.srcElement : this;
				while (anchor.tagName.toLowerCase() != 'a') anchor = anchor.parentNode;
				K.scrollTargetID = anchor.getAttribute('href', 2).replace(/#/g, '');
				K.scrollInterval = setInterval(K.smoothScroll, K.updateDuration);
			};
			K.addEventListener(anchors[i], 'click', clickHandler, false);
		}
	},

	/*--------------------------------------------------*/
	
	addStopScrollEvent : function() {
		var stopScroll = function(e) {
			if (K.scrollInterval != null) {
				clearInterval(K.scrollInterval);
				K.scrollInterval = null;
			}
		};
		K.addEventListener(document, 'mousedown', stopScroll, false);
		K.addEventListener(window, 'DOMMouseScroll', stopScroll, false);
	},
	
	/*--------------------------------------------------*/

	replaceAlphaImage : function(element, type) {
		var original = element.src;
		var imageWidth = element.width;
		var imageHeight = element.height;
		element.src = K.pngPath;
		element.width = imageWidth;
		element.height = imageHeight;
		var src = (type) ? element[type] : (element.original) ? element.original : original;
		element.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + src + '", sizingMethod="scale")';
	},

	setupIEpng : function() {
		if (K.isOldIE && K.isWin) {
			var imgs = document.getElementsByTagName('img');
			for (var i = 0, count = imgs.length; i < count; i++) {
				var img = imgs[i];
				if (img.src.match(/\.png/) && img.original == null) K.replaceAlphaImage(img);
			}
			try {
				document.execCommand('BackgroundImageCache', false, true);
			}
			catch(err) {}
		}
	},

	getRollOverElements : function(container, withAnchor) {
		if (!container) return;
		if (container.length == undefined) container = [container];
		for (var j = 0, n = container.length; j < n; j++) {
			if (container[j] == undefined) continue;
			var imgs = container[j].getElementsByTagName('img');
			var inputs = container[j].getElementsByTagName('input');
			for (var i = 0, count = imgs.length; i < count; i++) {
				if (withAnchor && imgs[i].parentNode.tagName.toLowerCase() != 'a') continue;
				var regexp = new RegExp(K.mouseDownSuffix + '(\.gif|\.jpg|\.png)');
				if (imgs[i].src.match(regexp)) continue;
				K.rollOverElements.push(imgs[i]);
			}
			for (i = 0, count = inputs.length; i < count; i++) {
				K.rollOverElements.push(inputs[i]);
			}
		}
	},

	getRollOverButtons : function() {
		var imgs = K.getElementsByClassName('img', 'button');
		var inputs = K.getElementsByClassName('input', 'button');
		var elements = imgs.concat(inputs);
		for (var i = 0, count = elements.length; i < count; i++) {
			K.rollOverElements.push(elements[i]);
		}
	},

	setupRollOverImage : function() {
		if (K.mouseOverSuffix == '') return;
		var elements = K.rollOverElements;
		for (var i = 0, count = elements.length; i < count; i++) {
			var element = elements[i];
			if (K.mouseDownSuffix != '') {
				var regexp = new RegExp(K.mouseDownSuffix + '(\.gif|\.jpg|\.png)');
				if (element.src.match(regexp)) continue;
			}
			element.original  = element.src;
			element.mouseover = element.original.replace(/(\.gif|\.jpg|\.png)/, K.mouseOverSuffix + '$1');
			element.useAlphaImageLoader = false;
			if (K.isOldIE && element.src.match(/\.png/)) {
				element.useAlphaImageLoader = true;
				K.replaceAlphaImage(element);
			}
			var preOverImg = new Image();
			K.preloadImages.push(preOverImg);
			preOverImg.onload = function() {
				K.addEventListener(this.target, 'mouseover', function(o) {
					var o = (o.srcElement) ? o.srcElement : this;
					(o.useAlphaImageLoader) ? K.replaceAlphaImage(o, 'mouseover') : o.src = o.mouseover;
					if (o.tagName.toLowerCase() == 'img' && o.parentNode.tagName.toLowerCase() != 'a') o.style.cursor = 'pointer';
				});
				K.addEventListener(this.target, 'mouseout', function(o) {
					var o = (o.srcElement) ? o.srcElement : this;
					(o.useAlphaImageLoader) ? K.replaceAlphaImage(o) : o.src = o.original;
				});
			}
			preOverImg.target = element;
			preOverImg.src = element.mouseover;
			if (K.usingMouseDown) {
				element.mousedown = element.original.replace(/(\.gif|\.jpg|\.png)/, K.mouseDownSuffix + '$1');				
				var preDownImg = new Image();
				K.preloadImages.push(preDownImg);
				preDownImg.onload = function() {
					K.addEventListener(this.target, 'mousedown', function(o) {
						var o = (o.srcElement) ? o.srcElement : this;
						(o.useAlphaImageLoader) ? K.replaceAlphaImage(o, 'mousedown') : o.src = o.mousedown;
					});
				};
				preDownImg.target = element;
				preDownImg.src = element.mousedown;
			}
		}
	},
	
	/*--------------------------------------------------*/
	
	setupFontSize : function() {
		var upButton    = document.getElementById(K.fontSizeUpID).getElementsByTagName('img')[0];	
		var downButton  = document.getElementById(K.fontSizeDownID).getElementsByTagName('img')[0];	
		var resetButton = document.getElementById(K.fontSizeResetID).getElementsByTagName('img')[0];	
		if (!upButton || !downButton || !resetButton) return;
		K.rollOverElements = new Array(upButton, downButton, resetButton);
		K.usingMouseDown = false;
		K.setupRollOverImage();
		var setSize = function(e) {
			var btn = (e.srcElement) ? e.srcElement : this;
			switch (btn.parentNode.id) {
				case K.fontSizeUpID :
					K.fontSizeLv = 1;
					break;
				case K.fontSizeDownID :
					K.fontSizeLv = -1;
					break;
				case K.fontSizeResetID :
					K.fontSizeLv = 0;
					break;
			}
			K.setFontSizeController();
		};
		K.addEventListener(upButton, 'click', setSize, false);	
		K.addEventListener(downButton, 'click', setSize, false);	
		K.addEventListener(resetButton, 'click', setSize, false);	
		var sizeLv = K.readCookie(K.cookieName);
		K.fontSizeLv = (sizeLv != null && !isNaN(sizeLv) && sizeLv >= -1 && sizeLv <= 1) ? parseInt(sizeLv) : 0;
		K.setFontSizeController();
	},

	setFontSizeController : function() {
		switch (K.fontSizeLv) {
			case 1 :
				document.body.style.fontSize = '16px';
				break;
			case -1 :
				document.body.style.fontSize = '10px';
				break;
			case 0 :
				document.body.style.fontSize = '13px';
				break;
		}
		var upButton    = document.getElementById(K.fontSizeUpID).getElementsByTagName('img')[0];	
		var downButton  = document.getElementById(K.fontSizeDownID).getElementsByTagName('img')[0];	
		var resetButton = document.getElementById(K.fontSizeResetID).getElementsByTagName('img')[0];	
		upButton.style.display = (K.fontSizeLv < 1) ? 'block' : 'none';
		downButton.style.display = (K.fontSizeLv > -1) ? 'block' : 'none';
		resetButton.style.display = (K.fontSizeLv != 0) ? 'block' : 'none';
		K.createCookie(K.fontSizeLv, 30);
	}

}

/*--------------------------------------------------*/

function getSearchForm() {
	document.write('\n\t\t\t<form action="http://www.niigata-airport.gr.jp/search/" id="cse-search-box">');
	document.write('\n\t\t\t\t<input type="hidden" name="cx" value="002543008594315049272:mlvyaw2psi4" />');
	document.write('\n\t\t\t\t<input type="hidden" name="cof" value="FORID:11" />');
	document.write('\n\t\t\t\t<input type="hidden" name="ie" value="UTF-8" />');
	document.write('\n\t\t\t\t<input type="text" name="q" id="search-text" />');
	document.write('\n\t\t\t\t<input type="image" name="sa" src="/share/img/header/btn_search.jpg" alt="検索" id="search-button" class="button" />');
	document.write('\n\t\t\t</form>');
}

function setCSEStyle() {
	var textbox = document.getElementById('search-text');
	textbox.style.width = '130px';
	textbox.style.height = '16px';
	textbox.style.border = 'none';
	textbox.style.margin = '0';	
	textbox.style.padding = '0';	
	textbox.style.fontSize = '13px';	
}

function getFontSizeController() {
	document.write('\n\t\t\t<dl>');
	document.write('\n\t\t\t\t<dt><img src="/share/img/header/label_fsize.gif" alt="文字サイズ" /></dt>');
	document.write('\n\t\t\t\t<dd id="fsize-small"><img src="/share/img/header/btn_fsize_small.jpg" alt="小" /></dd>');
	document.write('\n\t\t\t\t<dd id="fsize-normal"><img src="/share/img/header/btn_fsize_normal.jpg" alt="標準" /></dd>');
	document.write('\n\t\t\t\t<dd id="fsize-large"><img src="/share/img/header/btn_fsize_large.jpg" alt="大" /></dd>');
	document.write('\n\t\t\t</dl>');
}

/*--------------------------------------------------*/

function setupPage() {
	K.setupAnchor();
	//K.setupNavi();
	K.addStopScrollEvent();
	K.getRollOverButtons();
	K.setupRollOverImage();
	//K.setupIEpng();
	K.setupFontSize();
}

var K = new SKSP();
K.addEventListener(window, 'load', setupPage, false);
