/* addEventFunc 関数
#
#　イベントの追加用
#
--------------------------------------------------------------------*/
var addEventFunc = function(func){
	try {
		window.addEventListener('load', func, false);
	} catch (e) {
		window.attachEvent('onload', func);
	}
}

/* IE6用 背景キャッシュ
#
#　CSSスプライトなどを使用した背景の切り替え時、
#　IE6以下のブラウザで砂時計が出る現象を回避する
#
--------------------------------------------------------------------*/
try { 
	document.execCommand('BackgroundImageCache', false, true); 
} catch(e) {}


/* objCheck 関数
#
#　オブジェクトチェック用関数
#
#　戻り値
#　　true: 有効なオブジェクト
#　　false: 無効なオブジェクト（undefined,null,''）
#
--------------------------------------------------------------------*/
function objCheck(obj) {
	return (typeof obj == 'undefined' || obj == null || obj == '') ? false : true;
}


/* myCookie 関数
#
#　クッキーの書き込み
#　myCookie.set(クッキーネーム,値,有効期限（日）)
#
#　クッキーの読み込み
#　myCookie.get(クッキーネーム)
#
--------------------------------------------------------------------*/
var sDays = 30;
var myCookie = {
	set: function(cookie, val, day) {
		var date = new Date();
		date.setTime(date.getTime() + (day * 24 * 60 * 60 *1000));
		var item = ([ '@', cookie, '=', escape(val), ';' ]).join('');
		var exp = ([ 'expires=', date.toGMTString() ]).join('');
		document.cookie = ([ item, exp, '; path=/' ]).join('');
	},
	get: function(cookie) {
		cookie = ([ '@', cookie, '=' ]).join('');
		var val = null;
		var str = ([ document.cookie, ';' ]).join('');
		var ofst = str.indexOf(cookie);
		if (ofst != -1){
			var start = ofst + cookie.length;
			var end = str.indexOf(';', start);
			val = unescape(str.substring(start, end));
		}
		return val;
	}
};


/* smartRollover 関数
#
#　画像のロールオーバーをファイル名で判断して行なう
#
#　使用例
#　　<img src="〜_off.gif"  />
#　　<input type="image" src="〜_off.gif" class="rollover" />
#
--------------------------------------------------------------------*/
var smartRollover = {
	config: function(){
		smartRollover.init('img');
		smartRollover.init('input');
	},

	init: function(tag) {
		var normal = '_off.';
		var hover = '_on.';

		var obj = document.getElementsByTagName(tag);
		if(typeof obj == 'undefined' || obj == null) return false;

		var preload = [];
		for(var i=0; i<obj.length; i++) {
			if(obj[i].src.indexOf(normal) != -1){
				var src = obj[i].src;
				obj[i].ext = src.slice(src.lastIndexOf('.')+1, src.length);
				obj[i].nimg = src;
				obj[i].oimg = src.replace(normal + obj[i].ext, hover + obj[i].ext);

				preload[i] = new Image();
				preload[i].src = obj[i].oimg;

				obj[i].onmouseover = function() {
					this.setAttribute('src', this.oimg);
				};
				obj[i].onmouseout = function() {
					this.setAttribute('src', this.nimg);
				};
			}
		}

		return true;
	}
}


/* FontChange 関数
#
#　文字サイズの切り替え
#
--------------------------------------------------------------------*/
var fontChanger = function(btns, size, ch_arr){
	this.btns = btns;
	this.size = size;
	this.ch_arr = ch_arr;
	this.setup();
}
fontChanger.prototype = {
	setup: function(){
		var self = this;
		for(var i=0; i<this.btns.length; i++){
			this.btns[i].size = this.ch_arr[i];
			this.btns[i].onclick = function(){
				self.size = this.size;
				self.active();
				self.change();
				myCookie.set('fontsize', this.size, sDays);
				return false;
			}
		}
		var cookie = myCookie.get('fontsize');
		if(objCheck(cookie)){
			this.size = cookie;
		} else {
			this.change();
		}
		this.active();
	},
	active: function(){
		for(var i=0; i<this.btns.length; i++){
			this.btns[i].className = (this.btns[i].size == this.size) ? 'hidden' : 'active'; 
		}
	},
	change: function(){
		var files = document.getElementsByTagName('link');
		for(var i=0; i<files.length; i++){
			if(files[i].getAttribute('rel') == 'alternate stylesheet'){
				files[i].disabled = (files[i].getAttribute('title') == this.size) ? false : true ;
			}
		}
	}
}


/* input value
#
#　デフォルト値のクリア
#
--------------------------------------------------------------------*/
var inputValue = {
	init: function(){
		var kw = document.getElementsByTagName('input');
		for(var i=0; i<kw.length; i++){
			if(kw[i].className.indexOf('defValClear') != -1){
				kw[i].onfocus = function(){
					inputValue.clearVal(this);
				};
				kw[i].onblur = function(){
					inputValue.setVal(this);
				}
			}
		}
	},
	clearVal: function(obj){
		if(obj.value == obj.defaultValue){
			obj.value = '';
			obj.style.color = '#333';
		}
	},
	setVal: function(obj){
		if (obj.value == ''){
			obj.value = obj.defaultValue;
			obj.style.color = '#666';
		}
	}
}


/* PopWin 関数
#
#　ポップアップウィンドウをたちあげる
#
--------------------------------------------------------------------*/
var PopWin = function(winname, cssname, size, other){
	this.winname = winname;
	this.cssname = cssname;
	this.size = size.join(',');
	this.other = other.join(',');
}
PopWin.prototype = {
	setup: function(){
		var self = this;
		var ele = document.getElementsByTagName('a');
		for(var i=0; i<ele.length; i++){
			if((ele[i].className) && (ele[i].className.indexOf(this.cssname) != -1)){
				ele[i].onclick = function(){
					self.openWin(this.href);
					return false;
				}
			}
		}
	},

	openWin: function(url){
		var status = [ this.size, this.other ].join(',');
		var win = window.open(url, this.winname, status);
		win.focus();
		return false;
	}
}


/* 実行関数
#
#　全ページ対象のものを指定
#
--------------------------------------------------------------------*/

//ロールオーバー
addEventFunc(smartRollover.config);

//デフォルト値のクリア
addEventFunc(inputValue.init);

//フォントの切り替え
(function(){
	var cookie = myCookie.get('fontsize');
	if(objCheck(cookie)){
		var files = document.getElementsByTagName('link');
		for(var i=0; i<files.length; i++){
			if(files[i].getAttribute('rel') == 'alternate stylesheet'){
				files[i].disabled = 'disabled';
				files[i].disabled = (files[i].getAttribute('title') == cookie) ? false : true ;
			}
		}
	}
})();
function fontChangeInit(){
	var btns = document.getElementById('fontChanger');
	if(!objCheck(btns)) return false;

	btns = btns.getElementsByTagName('li');

	new fontChanger(btns, 'fm', ['fl','fm']);

	return true;
}
addEventFunc(fontChangeInit);

//ポップアップ
function popupInit(){
	//用語集
	var popTerm = new PopWin(
		'winTerm',
		'popTerm',
		[ 'width=670', 'height=600' ],
		[ 'toolbar=1', 'resizable=0', 'scrollbars=1', 'menubar=0', 'location=1' ]
	);
	//FAQ
	var popFaq = new PopWin(
		'winFaq',
		'popFaq',
		[ 'width=670', 'height=600' ],
		[ 'toolbar=1', 'resizable=0', 'scrollbars=1', 'menubar=0', 'location=1' ]
	);
	//詳細
	var popDetail = new PopWin(
		'winDetail',
		'popDetail',
		[ 'width=670', 'height=600' ],
		[ 'toolbar=1', 'resizable=0', 'scrollbars=1', 'menubar=0', 'location=1' ]
	);
	//Main領域のみ
	var popMain = new PopWin(
		'winMain',
		'popMain',
		[ 'width=770', 'height=600' ],
		[ 'toolbar=1', 'resizable=0', 'scrollbars=1', 'menubar=0', 'location=1' ]
	);
	//通常
	var popChild = new PopWin(
		'winChild',
		'popChild',
		[ 'width=770', 'height=600' ],
		[ 'toolbar=1', 'resizable=0', 'scrollbars=1', 'menubar=0', 'location=1' ]
	);
	//損害サポート
	var sw = (objCheck(window.innerWidth) == false) ? document.body.clientWidth : window.innerWidth;
	var sh = (objCheck(window.innerHeight) == false) ? document.body.clientHeight : window.innerHeight;

	var popSonsa = new PopWin(
		'winSonsa',
		'popSonsa',
		[ 'width=' + sw, 'height=' + sh ],
		[ 'toolbar=1', 'resizable=1', 'scrollbars=1', 'menubar=1', 'location=1' ]
	);

	//ポップアップ設定の実行関数
	popTerm.setup();
	popFaq.setup();
	popDetail.setup();
	popMain.setup();
	popChild.setup();
	popSonsa.setup();

	//子窓から親窓への遷移＆フォーカス
	var link = document.getElementsByTagName('a');
	if(window.name != 'main'){
		for(var i=0; i<link.length; i++){
			if(link[i].target == 'main'){
				link[i].onclick = function(){
					if(navigator.userAgent.indexOf('AppleWebKit/') > -1){// Safari & Chrome
						window.blur();
					}
					if(window.opener) window.opener.focus();
					return true;
				}
			}
		}
	}
}
addEventFunc(popupInit);

if(!window.name){
	window.name = 'main';
}
