/* IE6用 背景キャッシュ
#
#　CSSスプライトなどを使用した背景の切り替え時、
#　IE6以下で砂時計が出る現象を回避する
#
--------------------------------------------------------------------*/
try { 
	document.execCommand('BackgroundImageCache', false, true); 
} catch(e) {}


/* smartRollover 関数
#
#　画像のロールオーバーをクラス名で判断して行なう
#
#　使用例
#　　<img src="～" class="rollover" />
#　　<input type="image" src="～" class="rollover" />
#
--------------------------------------------------------------------*/
var smartRollover = {
	config: function(){
		smartRollover.init('img');
		smartRollover.init('input');
	},

	init: function(tag) {
		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].className.indexOf('rollover') != -1){
				var src = obj[i].src;
				obj[i].ext = src.slice(src.length-4, src.length);
				obj[i].nimg = src;
				obj[i].oimg = src.replace(obj[i].ext, '_on'+obj[i].ext);

				preload[i] = new Image();
				preload[i].src = obj[i].himg;

				obj[i].onmouseover = function() {
					this.setAttribute('src', this.oimg);
				};
				obj[i].onmouseout = function() {
					this.setAttribute('src', this.nimg);
				};
			}
		}
	},

	addEvent: function(){
		try {
			window.addEventListener('load', smartRollover.config, false);
		} catch (e) {
			window.attachEvent('onload', smartRollover.config);
		}
	}
}
smartRollover.addEvent();


/* otherCheck 関数
#
#　テキスト入力ありの、「その他」の処理
#　onkeyup イベントに指定して使用する
#
--------------------------------------------------------------------*/
function otherCheck(obj){
	var ipt = obj.parentNode.getElementsByTagName('input')[0];
	if(objCheck(ipt) == false) return false;
	if(ipt.type == 'checkbox' || ipt.type == 'radio'){
		ipt.checked = (obj.value != '') ? true : false;
	}
	return false;
}


/* orderIE 変数
#
#　IEブラウザのVersionチェック用
#
#　値
#　　true: 指定したIEのバージョン未満（デフォルトは６）
#　　false: 指定したIEのバージョン以上、またはIE以外
#
--------------------------------------------------------------------*/
var olderIE = false;
if(/*@cc_on !@*/false){
	var ua = navigator.userAgent;
	var ver = ua.indexOf('MSIE');
	olderIE = (ua.substr(ver+5, 1) < 6) ? true : false;
}


/* objCheck 関数
#
#　オブジェクトチェック用関数
#
#　戻り値
#　　true: 有効なオブジェクト
#　　false: 無効なオブジェクト
#
--------------------------------------------------------------------*/
function objCheck(obj) {
	return (typeof obj == 'undefined' || obj == null) ? false : true;
}


/* addStyle 関数
#
#　スタイルシート追記
#
#　引数
#　　1: セレクタ名
#　　2: プロパティ（値）
#
#　使用例
#　　addStyle('div.categoryToggle', 'height: 0;');
#
--------------------------------------------------------------------*/
function addStyle(selector, property) {
	var css = document.styleSheets[0];
	if(css.addRule){
		css.addRule(selector, property);
	} else if(css.insertRule) {
		css.insertRule(selector + '{' + property + '}', css.cssRules.length);
	}
	return false;
}


/* Anime 関数（090526：ラジオボックスの処理は汎用性なし）
#
#　アニメーション付きのオブジェクト開閉（縦）
#
#　対象ブラウザ
#　　Internet Explorer 6以上
#　　Firefox2.0以上
#
#　引数
#　　1：ターゲット（ID指定）
#　　2：トリガー（ID指定）
#
#　オブジェクト
#　　speed: 速度（default：4）
#　　accept: 最低速度（default：3）
#　　hidden: true : 非表示／false：非表示（default：false）
#　　setup: 初期設定（function）
#　　hide: 閉じるアニメーション（function）
#　　show: 開くアニメーション（function）
#
#　使用例
#　　var anime01 = new Anime('TARGET01', 'TORIGGER01', 5, 4, true);
#
--------------------------------------------------------------------*/
var Anime = function(target, trigger){
	this.target = document.getElementById(target);
	this.trigger = document.getElementById(trigger);
	this.speed = 5;
	this.accept = 4;
	this.hidden = false;
}
Anime.prototype = {
	setup: function(){
		var self = this;
		this.trigger.onclick = function(){
			self.target.maxH = self.target.getElementsByTagName('div')[0].offsetHeight;
			//チェックボックスの処理
			if(this.type == 'checkbox'){
				(this.checked) ? self.show() : self.hide();
			}
			//ラジオボックスの処理
			else if(this.type == 'radio'){
				if(!self.hidden) return;
				for(var i=0; i<category.length; i++){
					category[i].trigger.disabled = true;
					if(category[i].hidden == false){
						category[i].hide(function(){
							self.show(function(){
								for(var j=0; j<category.length; j++){
									category[j].trigger.disabled = false;
								}
							});
						});
					}
				}
			}
			//その他
			else {
				(self.hidden) ? self.show() : self.hide();
			}
		}
		this.target.style.overflow = 'hidden';
		this.target.style.height = (this.hidden) ? 0 + 'px' : 'auto';
	},
	show: function(func){
		var target = this.target;
		var self = this;
		if(objCheck(target.timer)) clearTimeout(target.timer);
		target.timer = setTimeout(function() {
			if(target.offsetHeight >= target.maxH || olderIE){
				target.style.height = 'auto';
				self.hidden = false;
				if(objCheck(func)) return func();
				return false;
			}
			var add = Math.round((target.maxH - target.offsetHeight)/self.speed);
			if(add <= self.accept){
				add = self.accept;
				if(target.maxH - target.offsetHeight < add) add = target.maxH - target.offsetHeight;
			}
			target.style.height = target.offsetHeight + add + 'px';
			self.show(func);
		},10);
		return false;
	},
	hide: function(func){
		var target = this.target;
		var self = this;
		if(objCheck(target.timer)) clearTimeout(target.timer);
		target.timer = setTimeout(function() {
			if(target.offsetHeight <= 0 || olderIE){
				target.style.height = 0 + 'px';
				self.hidden = true;
				if(objCheck(func)) return func();
				return false;
			}
			var add = Math.round(target.offsetHeight/self.speed);
			if(add <= self.accept){
				add = self.accept;
				if(target.offsetHeight < add) add = target.offsetHeight;
			}
			target.style.height = target.offsetHeight - add + 'px';
			self.hide(func);
		},10);
		return false;
	}
}


/* Mac Css */

if (navigator.appVersion.indexOf("Mac") !=-1){
document.write("<link rel='stylesheet' type='text/css' media='all' href='/css/mac.css'>");
}

