/* 
[Create Name Space]　BASIC
*/

var AP = function(){};

/*===================================
 * 
 * ☆ CLS_COMMON
 * 
 ===================================*/

AP.CLS_COMMON = function(){};

AP.CLS_COMMON.prototype ={
	//UA取得
	getUA : function(){
		if(navigator.userAgent.indexOf("MSIE") !== -1){
			return "MSIE";
		}
		else if(navigator.userAgent.indexOf("Firefox") !== -1){
			return "Firefox";
		}
		else if(navigator.userAgent.indexOf("Safari") !== -1){
			return "Safari";
		}
		else if(navigator.userAgent.indexOf("Opera") !== -1){
			return "Opera";
		}
		else if(navigator.userAgent.indexOf("Netscape") !== -1){ 
			return "Netscape";
		}
	},
	//全要素取得
	getAllElms : function(){
		var allElms = document.body.getElementsByTagName("*");
		return allElms;
	},
	//全子要素取得
	getElms : function(obj){
		var allElms = obj.getElementsByTagName("*");
		return allElms;
	},
	//イベント実行
	addEvents : function(elm,listener,fn){
		try{
			elm.addEventListener(listener,fn,false);
		}catch(e){
			elm.attachEvent("on"+listener,fn);
		}
	},
	//イベント削除
	removeEvents : function(elm,listener,fn){

		try{
			elm.removeEventListener(listener,fn,false);
		}catch(e){
			elm.detachEvent("on"+listener,fn);
		}
	},
	//イベント発生元取得
	getSource : function(e){
		if(e.target){
			return e.target;
		}else if(window.event){
			return window.event.srcElement;
		}

	},
	//イベントの行き先
	getTo : function(e){
		if(e.relatedTarget){
			return e.relatedTarget;
		}else if(window.event){
			return window.event.toElement;
		}

	},
	//イベントの移動元
	getFrom : function(e){
		if(e.relatedTarget){
			return e.relatedTarget;
		}else if(window.event){
			return window.event.fromElement;
		}

	},
	//デフォルトイベントをキャンセル
	preventDefault : function(e){
	  if(e.preventDefault){
	    e.preventDefault();
	  }
	  else if(window.event){
	    window.event.returnValue = false;
	  }
	},
	//マウスアウトをチェック
	mouseoutChk : function(obj,elms,event){
		var chk = false;
		if(this.getTo(event) === null){
			chk = true;
		}else{
			for (var i = 0; i < elms.length; i++) {
				if (this.getTo(event) === elms[i] || this.getTo(event) === obj) {
					chk = true;
				}
			}
		}

		return chk;
	},
	//マウスオーバーをチェック
	mouseoverChk : function(obj,elms,event){
		var chk = false;
		for (var i=0; i<elms.length; i++) {
			if(this.getFrom(event) === elms[i] || this.getFrom(event) === obj){
				chk = true;
			}
		}
		return chk;
	},
	//完全一致をチェック
	checkString : function(string,match){
		var myReg = new RegExp("^" + match + "$");
		if(string.match(myReg) !== null){
			return true;
		}
	},
	//全要素中からクラスを取得
	getSelectClass : function(classname){
		var objects = [];
		var allTags = this.getAllElms();

		for (var i = 0; i < allTags.length; i ++) {
			var names = allTags[i].className;
			if ((names !== undefined) && (names !== "")) {
				var nameSplits = names.split(" ");
				for (var j in nameSplits) {
					if(this.checkString(nameSplits[j],classname)){
						objects.push(allTags[i]);
					}
				}
			}
		}

		if(objects.length === 0){
			return false;
		}else{
			return objects;
		}
	},
	//子要素の中からクラスを取得
	getChildClass : function(obj,classname){
		var objects = [];
		var objts = this.getElms(obj);

		for  (var i = 0; i < objts.length; i ++) {
			var names = objts[i].className;
			if ((names !== undefined) && (names !== "")) {
				var nameSplits = names.split(" ");
				for (var j in nameSplits) {
					if(this.checkString(nameSplits[j],classname)){
						objects.push(objts[i]);
					}
				}
			}
		}
		
		if(objects.length === 0){
			return false;
		}else{
			return objects;
		}

	},
	//classNameから指定のクラスを取得
	getClassName : function(obj,classname){
		var check = false;

		var names = obj.className.split(" ");

		for (var i in names) {
			if(this.checkString(names[i],classname)){
				 check = true;
			}
		}
		return check;
	},
	//子要素を取得
	getChildNodes: function(obj){

		var objects = [];
		for (var i = 0; i < obj.childNodes.length; i++) {
			if (obj.childNodes[i].nodeType === 1) {
					objects.push(obj.childNodes[i]);
				}
		}

		if(objects.length === 0){
			return false;
		}else{
			return objects;
		}

	},
	//クラスを追加
	setClass : function (element,value){
		var items = element.getAttribute("class");

		if(!element.className){
			element.className = value;
		}else{
			newClassName = element.className;
			newClassName += " ";
			newClassName += value;
			element.className = newClassName;
		}
	},
	//追加したクラスを削除
	removeClass : function(obj,classname){
		
		var check = false;

		var names = obj.className.split(" ");
		var new_classname = '';
		
		for (var i=0; i<names.length; i++) {
			if(!this.checkString(names[i],classname)){
				if(i !== 0){
					new_classname += ' '+names[i];
				}else{
					new_classname += names[i];
				}
			}
		}
		
		obj.className = new_classname;

	},
	//要素に指定されたスタイルを取得
	getStyle : function(element){
		if(element.currentStyle){
			style = element.currentStyle;
		}else if(document.defaultView.getComputedStyle(element, '')){
			style = document.defaultView.getComputedStyle(element, '');
		}
		return style;
	},
	//透明度を変更
	changeAlpha : function(obj,pts){
		if(obj.style.MozOpacity){
			obj.style.MozOpacity = pts / 10;
		}else if(window.detachEvent){
			obj.style.filter = 'alpha(opacity=' + (pts * 10) + ')';

		}else{
			obj.style.opacity = pts / 10;
		}
	},
	//要素の高さを取得
	getStyleHeight : function(element){
		if(element.currentStyle){
			style = element.currentStyle;
		}else if(document.defaultView.getComputedStyle(element, '')){
			style = document.defaultView.getComputedStyle(element, '');
		}
		var elmStyles = [style.paddingTop,style.paddingBottom,style.borderTopWidth,style.borderBottomWidth];
		var elementHeight = element.offsetHeight;
		for (var styleName in elmStyles) {
			if(elmStyles[styleName].match('px')!== null && elmStyles[styleName].toString().replace(/px/,"") !== 0){
				elmStyles[styleName] = elmStyles[styleName].toString().replace(/px/,"");
				elementHeight -=  Number(elmStyles[styleName]);
			}
		}
		return elementHeight;
	},
	//要素の横幅を取得
	getStyleWidth : function(element){
		if(element.currentStyle){
			style = element.currentStyle;
		}else if(document.defaultView.getComputedStyle(element, '')){
			style = document.defaultView.getComputedStyle(element, '');
		}
		var elmStyles = [style.paddingLeft,style.paddingRight,style.borderLeftWidth,style.borderRightWidth];
		var elementWidth = element.offsetWidth;
		for (var styleName in elmStyles) {
			if(elmStyles[styleName].match('px')!== null && elmStyles[styleName].toString().replace(/px/,"") !== 0){
				elmStyles[styleName] = elmStyles[styleName].toString().replace(/px/,"");
				elementWidth -=  Number(elmStyles[styleName]);
			}
		}
		return elementWidth;
	},
	//rel属性値の値を取得
	getRelation : function(obj){
		var objects = [];

		var rels = obj.getAttribute("rel");
		
		if(rels !== null){
			var relsDetail = rels.split(" ");
			for (var i=0; i<relsDetail.length; i++) {
				objects.push(relsDetail[i]);
			}
		}

		return objects;
	},
	//指定したオプションの値を取得
	getOptions : function(obj,options){
		for (var i = 0; i < obj.length; i++) {
			var matchObj1 = obj[i].replace(/:(.)+/,"");
			var matchObj2 = obj[i].replace(/(.)+:/,"");
			if( matchObj1 == options){
			return matchObj2;	
			}
		}
	},
	//配列をシャッフル
	arrayShuffle : function(list){
	  var i = list.length;
	  while (--i) {
	    var j = Math.floor(Math.random() * (i + 1));
	    if (i == j) {continue;}
	    var k = list[i];
	    list[i] = list[j];
	    list[j] = k;
	  }
	  return list;
	},
	//基底クラスを派生クラスにコピー
	initializeBase : function (derive, base, baseArgs){
		base.apply(derive, baseArgs);
		for(var prop in base.prototype){
			if(prop){
				var proto = derive.constructor.prototype;
				if(!proto[prop]){
					proto[prop] = base.prototype[prop];
				}
			}
		}
	}
};

/*=======================================================

	☆汎用機能一覧

	getAllElms()
	getElms(obj)
	addEvents(elm,listener,fn)
	removeEvents(elm,listener,fn)
	getSource(e)
	getTo(e)
	getFrom(e)
	preventDefault(e)
	mouseOutChk(obj,elms,e)
	mouseOverChk(obj,elms,e)
	checkString(string,match)
	getSelectClass(classname)
	getChildClass(obj,classname)
	getClassName(obj,classname)
	getChildNodes(obj)
	setClass(element,value)
	removeClass(obj,classname)
	getStyle(element)
	changeAlpha(obj,pts)
	getStyleHeight(element)
	getStyleWidth(element)
	getRelation(obj)
	getOptions(obj,options)
	arrayShuffle(list)
	initializeBase()

=======================================================*/

/*===================================
 * 
 * ☆ CLS_ANIMATION_ALPHA
 * 
 ===================================*/

AP.CLS_ANIMATION_ALPHA = function(){
	AP.BASE_Ins = new AP.CLS_COMMON();
};

AP.CLS_ANIMATION_ALPHA.prototype = {
	/*=================================

	[alphaPlus_1 options]
	obj : elements,
	start : num,
	last : num,
	per : num,
	speed : num,
	settime : num,
	func : function()

	=================================*/
	
	alphaPlus_1: function(options){

		setTimeout(function(){
			var alphaTimer = setInterval(function(){
				AP.BASE_Ins.changeAlpha(options.obj, options.start);
				options.start = options.start+options.per;
				if (options.start > options.last) {
					clearInterval(alphaTimer);
					if(options.func){
						options.func();
					}
				}
			}, options.speed);
		}, options.settime);
	},
	
	/*=================================

	[alphaMinus_1 options]
	obj : elements,
	start : num,
	last : num,
	per : num,
	speed : num,
	settime : num,
	func : function()
	
	=================================*/
	
	alphaMinus_1: function(options){

		setTimeout(function(){
			var alphaTimer = setInterval(function(){
				AP.BASE_Ins.changeAlpha(options.obj, options.start);

				options.start = options.start - options.per;
				if (options.start < options.last) {
					clearInterval(alphaTimer);
					if(options.func){
						options.func();
					}
				}
			}, options.speed);
		}, options.settime);	
	}
};

/*===================================
 * 
 * ☆ CLS_ANIMATION_POSITION
 * 
 ===================================*/

AP.CLS_ANIMATION_POSITION = function(){
	AP.BASE_Ins = new AP.CLS_COMMON();
};

AP.CLS_ANIMATION_POSITION.prototype = {
	
	/*=================================
	
	[minus margin-left]
	[positionMinus_1 options]
	obj : elements,
	start : num,
	last : num,
	childs : elm_array,
	per_width : num,
	per_view : num,
	per : num,
	speed : num,
	func : function()
	
	=================================*/
		
	positionMinus_1: function(options){
		
		if (Number(options.obj.style.marginLeft.replace("px","")) - options.per_width !== options.last) {
			clearInterval(options.obj.positionTimer);
		}

		options.obj.positionTimer = setInterval(function(){
			
			var now_position = Number(options.obj.style.marginLeft.replace("px",""));
			
			var amount = Math.ceil((now_position - options.last) * options.per);
			
			if (now_position > options.last) {
				options.obj.style.marginLeft = (now_position - amount).toString() + 'px';
			}else if (now_position < options.last) {
				options.obj.style.marginLeft = (now_position + amount).toString() + 'px';
			}
					
			now_position = Number(options.obj.style.marginLeft.replace("px",""));
			
			if(now_position % options.per_width === 0){
				var index_num = Number(now_position.toString().replace("-","")) / options.per_width;
				for (var i=0; i<index_num; i++) {
					if(!AP.BASE_Ins.getClassName(options.childs[i],'off')){
						AP.BASE_Ins.setClass(options.childs[i],'off');
					}
				}
			}

			if (now_position === options.last) {
				clearInterval(options.obj.positionTimer);
				if(options.func){
					options.func();
				}
			}
		}, options.speed);
	},
	
	/*=================================
	
	[minus margin-top]
	[positionMinus_2 options]
	obj : elements,
	start : num,
	last : num,
	childs : elm_array,
	per_width : num,
	per_view : num,
	per : num,
	speed : num,
	func : function()
	
	=================================*/
		
	positionMinus_2: function(options){
	
		if (Number(options.obj.style.marginTop.replace("px", "")) - options.per_width !== options.last) {
			clearInterval(options.obj.positionTimer);
		}

		options.obj.positionTimer = setInterval(function(){
		
			var now_position = Number(options.obj.style.marginTop.replace("px", ""));
			
			var amount = Math.ceil((now_position - options.last) * options.per);
			
			if (now_position > options.last) {
				options.obj.style.marginTop = (now_position - amount).toString() + 'px';
			}
			else 
				if (now_position < options.last) {
					options.obj.style.marginTop = (now_position + amount).toString() + 'px';
				}
			
			now_position = Number(options.obj.style.marginTop.replace("px", ""));
			
			if (now_position % options.per_width === 0) {
				var index_num = Number(now_position.toString().replace("-", "")) / options.per_width;
				for (var i = 0; i < index_num; i++) {
					if (!AP.BASE_Ins.getClassName(options.childs[i], 'off')) {
						AP.BASE_Ins.setClass(options.childs[i], 'off');
					}
				}
			}
			
			if (now_position === options.last) {
				clearInterval(options.obj.positionTimer);
				if (options.func) {
					options.func();
				}
			}
		}, options.speed);
	},
	
	/*=================================
	
	[plus margin-left]
	[positionPlus_1 options]
	obj : elements,
	start : num,
	last : num,
	childs : elm_array,
	per_width : num,
	per_view : num,
	per : num,
	speed : num,
	func : function()
	
	=================================*/
		
	positionPlus_1: function(options){
		
		if (Number(options.obj.style.marginLeft.replace("px","")) + options.per_width !== options.last) {
			clearInterval(options.obj.positionTimer);
		}
		
		options.obj.positionTimer = setInterval(function(){
			
			var now_position = Number(options.obj.style.marginLeft.replace("px",""));

			var amount = Math.ceil((options.last - now_position) * options.per);
		
			if (now_position < options.last) {			
				options.obj.style.marginLeft = (now_position + amount).toString() + 'px';
			}else if (now_position > options.last) {
				options.obj.style.marginLeft = (now_position - amount).toString() + 'px';
			}

			now_position = Number(options.obj.style.marginLeft.replace("px",""));
			
			if(now_position % options.per_width === 0){
				var index_num = Number(now_position.toString().replace("-","")) / options.per_width;

				for (var i=index_num+options.per_view; i<options.childs.length; i++) {
					if(!AP.BASE_Ins.getClassName(options.childs[i],'off')){
						AP.BASE_Ins.setClass(options.childs[i],'off');
					}
				}
			}
			
			if (now_position === options.last) {
				clearInterval(options.obj.positionTimer);
				if(options.func){
					options.func();
				}
			}
		}, options.speed);
	},
	
	/*=================================
	
	[plus margin-top]
	[positionPlus_2 options]
	obj : elements,
	start : num,
	last : num,
	childs : elm_array,
	per_width : num,
	per_view : num,
	per : num,
	speed : num,
	func : function()
	
	=================================*/
		
	positionPlus_2: function(options){

		if (Number(options.obj.style.marginTop.replace("px", "")) + options.per_width !== options.last) {
			clearInterval(options.obj.positionTimer);
		}

		options.obj.positionTimer = setInterval(function(){
		
			var now_position = Number(options.obj.style.marginTop.replace("px", ""));
			
			var amount = Math.ceil((options.last - now_position) * options.per);
			
			if (now_position < options.last) {
				options.obj.style.marginTop = (now_position + amount).toString() + 'px';
			}
			else 
				if (now_position > options.last) {
					options.obj.style.marginTop = (now_position - amount).toString() + 'px';
				}
			
			now_position = Number(options.obj.style.marginTop.replace("px", ""));
			
			if (now_position % options.per_width === 0) {
				var index_num = Number(now_position.toString().replace("-", "")) / options.per_width;
				
				for (var i = index_num + options.per_view; i < options.childs.length; i++) {
					if (!AP.BASE_Ins.getClassName(options.childs[i], 'off')) {
						AP.BASE_Ins.setClass(options.childs[i], 'off');
					}
				}
			}
			
			if (now_position === options.last) {
				clearInterval(options.obj.positionTimer);
				if (options.func) {
					options.func();
				}
			}
		}, options.speed);
	}
};

/*===================================
 * 
 * ☆ CLS_DROP_DOWN
 * 
 ===================================*/

/*=================================
 * [constructor option]
 * 
 * {classname : str}
 * 
=================================*/

AP.CLS_DROP_DOWN = function(options){
	AP.BASE_Ins = new AP.CLS_COMMON();
	AP.ANIME_Ins = new AP.CLS_ANIMATION_ALPHA();
	
	this.pd_list = AP.BASE_Ins.getSelectClass(options.parentname);
	
	this.childname = options.childname;
};

AP.CLS_DROP_DOWN.prototype = {
	effect_normal : function(){
		var pd_list = this.pd_list;
		var childname = this.childname;
		
		var pd_list_length = pd_list.length;
		
		function mouse_over_action(parent,chd_list,inners){			
			AP.BASE_Ins.addEvents(parent, 'mouseover', function(e){
				if(!AP.BASE_Ins.mouseoverChk(parent,inners,e)){
					AP.BASE_Ins.setClass(chd_list, 'on');
				}
			});
		}
		
		function mouse_out_action(parent,chd_list,inners){			
			AP.BASE_Ins.addEvents(parent, 'mouseout', function(e){
				if(!AP.BASE_Ins.mouseoutChk(parent,inners,e)){
					AP.BASE_Ins.removeClass(chd_list, 'on');
				}
			});
		}
		
		for (var i=0; i<pd_list_length; i++) {
			var childs = AP.BASE_Ins.getChildNodes(pd_list[i]);
			var child_length = childs.length;
			
			for (var j = 0; j < child_length; j++) {
				var inner_elm = childs[j].getElementsByTagName('*');
				var child_list = AP.BASE_Ins.getChildClass(childs[j],childname)[0];
				mouse_over_action(childs[j],child_list,inner_elm);
				mouse_out_action(childs[j],child_list,inner_elm);
			}
		}
		
	},
	effect_fade : function(options){
		var pd_list = this.pd_list;
		var childname = this.childname;
		
		var pd_list_length = pd_list.length;
		
		var now_onmouse = null;
		
		function mouse_over_action(parent,chd_list,inners,parent_lists){
			
			if (AP.BASE_Ins.getClassName(parent, 'on')) {
				AP.BASE_Ins.removeClass(parent, 'on');
			}
			
			function mouse_action_on(event){

				if (!AP.BASE_Ins.mouseoverChk(parent, inners, event)) {
					var parent_lists_length = parent_lists.length;
					
					for (var i = 0; i < parent_lists_length; i++) {
					
						var dd_child = AP.BASE_Ins.getChildClass(parent_lists[i], childname)[0];
						
						if (AP.BASE_Ins.getClassName(dd_child, 'on')) {
							AP.BASE_Ins.removeClass(dd_child, 'on');
						}
					}
				}

				if(parent !== now_onmouse){
				parent.style.zIndex = '9999';
					if(!AP.BASE_Ins.mouseoverChk(parent,inners,event)){
						
						if(chd_list.out_timer){
							clearInterval(chd_list.out_timer);
						}
						if (chd_list.run === false || chd_list.run === undefined) {
							
							clearInterval(chd_list.alphaTimer);
	
							clearInterval(chd_list.out_timer);
							AP.BASE_Ins.changeAlpha(chd_list, 0);
							AP.BASE_Ins.setClass(chd_list, 'on');
							
							AP.ANIME_Ins.alphaPlus_1({
								obj: chd_list,
								start: options.start,
								last: options.last,
								per: options.per,
								speed: options.speed,
								settime: 0,
								func: function(){
									now_onmouse = parent;
								}
							});
						}
					}
				}
			}
			
			AP.BASE_Ins.addEvents(parent.getElementsByTagName("a")[0], 'focus', function(e){			
				mouse_action_on(e);
			});
			AP.BASE_Ins.addEvents(parent.getElementsByTagName("a")[0], 'click', function(e){
				now_onmouse = parent;
			});
			AP.BASE_Ins.addEvents(parent, 'mouseover', function(e){
				mouse_action_on(e);
			});
		}
		
		function mouse_out_action(parent,chd_list,inners){
			
			function mouse_action_out(event){
				parent.style.zIndex = '9998';
				if(!AP.BASE_Ins.mouseoutChk(parent,inners,event)){
					if(chd_list.out_timer){
						clearInterval(chd_list.out_timer);
					}
					
					chd_list.run = true;
					
					chd_list.out_timer = setInterval(function(){
						
						if(!AP.BASE_Ins.mouseoverChk(parent,inners,event)) {
							
						var start_alpha = options.last;
						
						chd_list.alphaTimer = setInterval(function(){
							AP.BASE_Ins.changeAlpha(chd_list, start_alpha);
			
							start_alpha = start_alpha - options.per;
							if (start_alpha < options.start) {
								clearInterval(chd_list.alphaTimer);
								parent.removeAttribute('style');
								AP.BASE_Ins.removeClass(chd_list, 'on');
							}
						}, options.speed);
							chd_list.run = false;
							clearInterval(chd_list.out_timer);
						}
					}, options.delay);
				}
			}
			AP.BASE_Ins.addEvents(parent, 'mouseout', function(e){	
				mouse_action_out(e);
				now_onmouse = null;
			});

			AP.BASE_Ins.addEvents(parent.getElementsByTagName("a")[parent.getElementsByTagName("a").length-1], 'blur', function(e){
				AP.BASE_Ins.removeClass(chd_list, 'on');
			});
		}
		
		for (var i=0; i<pd_list_length; i++) {
			var childs = AP.BASE_Ins.getChildNodes(pd_list[i]);
			var child_length = childs.length;
			
			for (var j = 0; j < child_length; j++) {
				var inner_elm = childs[j].getElementsByTagName('*');
				var child_list = AP.BASE_Ins.getChildClass(childs[j],childname)[0];
				mouse_over_action(childs[j],child_list,inner_elm,childs);
				mouse_out_action(childs[j],child_list,inner_elm);
			}
		}
		
	}
};

/*===================================
 * 
 * ☆ CLS_ACCORDION
 * 
 ===================================*/

AP.CLS_ACCORDION = function(options){
	AP.BASE_Ins = new AP.CLS_COMMON();
	AP.ANIME_Ins = new AP.CLS_ANIMATION_ALPHA();
	
	this.listname = options.listname;
	this.childname = options.childname;
	this.buttonname = options.buttonname;
};

AP.CLS_ACCORDION.prototype = {
	fadein : function(){
		var listname = this.listname;
		var childname = this.childname;
		var buttonname = this.buttonname;
		
		var lists = AP.BASE_Ins.getSelectClass(listname);
		var lists_length = lists.length;
		
		var btn_pulse_path = '/shared/images/btn-plus.gif';
		var btn_minus_path = '/shared/images/btn-minus.gif';
		
		var parent_list = [];
		
		for (var i=0; i<lists_length; i++) {
			var child_items = AP.BASE_Ins.getChildNodes(lists[i]);
			var child_items_length = child_items.length;
			
			for (var j=0; j<child_items_length; j++) {
				if(AP.BASE_Ins.getChildClass(child_items[j],childname)){
					parent_list.push(child_items[j]);
				}	
			}
		}
		
		var parent_list_length = parent_list.length;
		
		function click_action(btn,image,child){	
			
			AP.BASE.addEvents(btn, 'click', function(e){
				AP.BASE_Ins.preventDefault(e);
				
				if (AP.BASE_Ins.getClassName(child, 'off')) {
					
					image.src = btn_minus_path;
					//AP.BASE_Ins.setClass(wrapper, 'on');
					
					
					AP.BASE_Ins.removeClass(child, 'off');
					AP.BASE_Ins.changeAlpha(child,0);

					AP.ANIME_Ins.alphaPlus_1({
						obj : child,
						start : 0,
						last : 10,
						per : 1,
						speed : 30,
						settime : 0,
						func : function(){
							child.removeAttribute('style');
						}
					});

				}else{
					image.src = btn_pulse_path;
					AP.BASE_Ins.setClass(child, 'off');
				}
			});
		}
		
		for (var k = 0; k < parent_list_length; k++) {
			var cat_name = AP.BASE_Ins.getChildClass(parent_list[k],buttonname)[0];
			var parent_btn = cat_name.getElementsByTagName('a')[0];
			if(!parent_btn){
				parent_btn = cat_name;
			}
			var child_list = AP.BASE_Ins.getChildClass(parent_list[k],childname)[0];
			
			var btn_a = document.createElement('a');
			var btn_img = document.createElement('img');
			
			btn_a.setAttribute('href','#');
			btn_a.className = 'acdn-btn';
			btn_img.setAttribute('src',btn_pulse_path);
			
			btn_a.appendChild(btn_img);
			
			var wrapper = AP.BASE_Ins.getChildClass(parent_list[k],'cat-name')[0];
			
			wrapper.appendChild(btn_a);
			
			var click_btn_1 =  AP.BASE_Ins.getChildClass(parent_list[k],'acdn-btn')[0];
			var click_btn_img = click_btn_1.getElementsByTagName('img')[0];
			
			if(AP.BASE_Ins.getChildClass(parent_list[k],'null-link')[0]){
				var click_btn_2_parent =  AP.BASE_Ins.getChildClass(parent_list[k],'null-link')[0];
				var click_btn_2 = AP.BASE_Ins.getChildClass(click_btn_2_parent,'name')[0];
				click_action(click_btn_2,click_btn_img,child_list);		
			}
			
					
			AP.BASE_Ins.setClass(cat_name,'has-child');
			click_action(click_btn_1,click_btn_img,child_list);			
		}
	}
};

/*===================================
 * 
 * ☆ CLS_PAGE_SCROLL
 * 
 ===================================*/

AP.CLS_PAGE_SCROLL = function(){
	AP.BASE_Ins = new AP.CLS_COMMON();
};

AP.CLS_PAGE_SCROLL.prototype = {
	pagetop : function(options){
		function pageScroll(){
			
			scrolling = setInterval(function(){
				
				var now_position = (document.body.scrollTop  || document.documentElement.scrollTop);

				if(now_position !== 0){
					document.documentElement.scrollTop = now_position - now_position * options.offset;
					document.body.scrollTop = now_position - now_position * options.offset;
				}else if(now_position > 0){
					now_position = now_position + 1;
				}
	
				if(now_position === 0){
					clearInterval(scrolling);
				}
	
			},options.speed);
		}
	
		function click_action(obj){
			AP.BASE_Ins.addEvents(obj, 'click', function(e){
				AP.BASE_Ins.preventDefault(e);
				pageScroll();
			});
		}
	
		var pagetop_btn = AP.BASE_Ins.getSelectClass(options.classname);
		if(!pagetop_btn){return false;}
		
		var pagetop_btn_length = pagetop_btn.length;
	
		for (var i=0; i<pagetop_btn_length; i++) {
			click_action(pagetop_btn[i].getElementsByTagName('a')[0]);
		}	
	},
	anchor : function(options){
		var anchor_btn = AP.BASE_Ins.getSelectClass(options.classname);
		if(!anchor_btn){return false;}
		
		function click_action(obj){
			AP.BASE_Ins.addEvents(obj, 'click', function(e){
				AP.BASE_Ins.preventDefault(e);

				var btn_position = (document.body.scrollTop  || document.documentElement.scrollTop);

				var target_elm = document.getElementById(obj.getAttribute('href',2).replace('#',''));
				
			    var amount = 0;
			    while(target_elm){
			        amount += target_elm.offsetTop;
			        target_elm = target_elm.offsetParent;
			    }
				
				var target_position = amount - (document.body.scrollTop  || document.documentElement.scrollTop);
				
				var goal_position;
				
				var check_wheel;
				
				clearInterval(document.scrolling);
				
				function wheel(event){
				        var delta = 0;
				        if (!event) { /* For IE. */
							event = window.event;
						}
				        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){
							if (window.addEventListener) {
								AP.BASE.removeEvents(window, 'DOMMouseScroll', check_wheel);
							}
							clearInterval(document.scrolling);
							window.onmousewheel = '';
							document.onmousewheel ='';
						}
				        if (event.preventDefault){
							 event.preventDefault();
						}      
					event.returnValue = false;
				}
				
				if (0 < target_position) {
					
					var screen_value_height = document.documentElement.clientHeight || document.body.clientHeight;
					var scroll_value_height = document.body.scrollHeight;			
					
					var last_position = scroll_value_height - amount;
										
					goal_position = target_position + btn_position;
					
					if (last_position < screen_value_height) {
						goal_position = scroll_value_height - screen_value_height;
					}
					
					document.scrolling = setInterval(function(){
						
						var now_position = (document.body.scrollTop || document.documentElement.scrollTop);

						if (window.addEventListener) {
							AP.BASE.removeEvents(window, 'DOMMouseScroll', check_wheel);
						}
						
						if (window.addEventListener){
							AP.BASE.addEvents(window, 'DOMMouseScroll', check_wheel = function(e){
								wheel(e);
								AP.BASE.removeEvents(window,'DOMMouseScroll',check_wheel);
							});
						}else{
							window.onmousewheel = document.onmousewheel = wheel;
						}						
						
						if (now_position < goal_position) {
							document.documentElement.scrollTop = Math.ceil(now_position + (goal_position - now_position) * options.offset);
							document.body.scrollTop = Math.ceil(now_position + (goal_position - now_position) * options.offset);
						}
						else if (now_position > goal_position) {
							document.documentElement.scrollTop = Math.ceil(now_position - goal_position * options.offset);
						}
						if (now_position === goal_position) {
							clearInterval(document.scrolling);
							if (window.addEventListener) {
								AP.BASE.removeEvents(window, 'DOMMouseScroll', check_wheel);
							}

						}					
					}, options.speed);
				}
				else if (0 > target_position) {
					
					goal_position = btn_position + target_position;
					
					document.scrolling = setInterval(function(){

						var now_position = (document.body.scrollTop || document.documentElement.scrollTop);
						
						if (window.addEventListener) {
							AP.BASE.removeEvents(window, 'DOMMouseScroll', check_wheel);
						}
						
						if (window.addEventListener) {
							AP.BASE.addEvents(window, 'DOMMouseScroll', check_wheel = function(e){
								wheel(e);
								AP.BASE.removeEvents(window,'DOMMouseScroll',check_wheel);
							});
						}else{
							window.onmousewheel = document.onmousewheel = wheel;
						}						
						
						if (now_position > goal_position) {
							
							document.documentElement.scrollTop = now_position - Math.ceil((now_position - goal_position) * options.offset);
							document.body.scrollTop = now_position - Math.ceil((now_position - goal_position) * options.offset);
						}
						else if (now_position < goal_position) {
								document.documentElement.scrollTop = Math.ceil(goal_position - now_position * options.offset);
							}
						if (now_position === goal_position) {
							clearInterval(document.scrolling);
							if (window.addEventListener) {
								AP.BASE.removeEvents(window, 'DOMMouseScroll', check_wheel);
							}
						}
					}, options.speed);
				}
			});
		}
		
		var anchor_btn_length = anchor_btn.length;
	
		for (var i=0; i<anchor_btn_length; i++) {
			click_action(anchor_btn[i]);
		}
	}
};

/*===================================
 * 
 * ☆ CLS_POPUP_WINDOW
 * 
 ===================================*/

AP.CLS_POPUP_WINDOW = function(classname){
	AP.BASE_Ins = new AP.CLS_COMMON();
};

AP.CLS_POPUP_WINDOW.prototype = {
	size_select : function(classname){
		var popup_obj = AP.BASE_Ins.getSelectClass(classname);
		var popup_obj_length = popup_obj.length;
		
		function setpopup(obj, rels){
			
			AP.BASE.addEvents(obj, 'click', function(e){
				AP.BASE_Ins.preventDefault(e);
				
				var widthSet;
				var heightSet;
				var scrollSet;
							
				var chkWidth = AP.BASE_Ins.getOptions(rels, "width");
				if (chkWidth !== undefined) {
					widthSet = 'width=' + chkWidth.toString() + ',';
				}
				else 
					if (chkWidth === undefined) {
						widthSet = "";
					}
				var chkHeight = AP.BASE_Ins.getOptions(rels, "height");
				if (chkHeight !== undefined) {
					heightSet = 'height=' + chkHeight.toString() + ',';
				}
				else 
					if (chkHeight === undefined) {
						heightSet = "";
					}
				var chkScroll = AP.BASE_Ins.getOptions(rels, "scroll");
				if (chkScroll !== undefined) {
					scrollSet = 'scrollbars=' + chkScroll.toString() + ',';
				}
				else if (chkScroll === undefined) {
						scrollSet = 'scrollbars=yes,';
				}
				newWin = window.open(obj.getAttribute('href',2), 'newWindow', widthSet + heightSet + scrollSet + 'menubar=no,toolbar=0,location=no,directories=no,status=no,resizable=yes');
			});
		}
		
		for (var i=0; i<popup_obj_length; i++) {
			var getRels = AP.BASE_Ins.getRelation(popup_obj[i]);
			setpopup(popup_obj[i],getRels);
		}
	}
};

/////////////////////////////////////////////////////////////////////////////////////////////

AP.BASE = new AP.CLS_COMMON();

/*
 * 
 * アコーディオンメニューの子メニューを非表示に
 * ページ読み込みを待たずに実行
 * 
 */
AP.hidden_child = function(parent,child){
	
	var acdn_list = AP.BASE.getSelectClass(parent);
	var acdn_list_length = acdn_list.length;

	for (var i=0; i<acdn_list_length; i++) {
		var child_list = AP.BASE.getChildClass(acdn_list[i],child);
		if(!child_list){return false;}
		var child_list_length = child_list.length;
		
		for (var j = 0; j < child_list_length; j++) {
			AP.BASE.setClass(child_list[j],'off');			
		}	
	}
};

AP.local_current = function(options){
	
	if(document.getElementById('top')){return false;}
	
	var pathname;
	
	if(location.pathname.match(/[^\/]+\.[^\.]+$/) === null){
		pathname = location.pathname + 'index.html';
	}else{
		pathname = location.pathname;
	}
	
	var directories = pathname.replace(/[^\/]+.[^\.]+$/,"").split('/');

	var directories_length = directories.length;
	
	var btn_minus_path = '/shared/images/btn-minus.gif';
	
	var lists =  AP.BASE.getSelectClass(options.listname);
	var lists_length = lists.length;
	
	function match_current(obj){
		AP.BASE.setClass(obj, 'current');
		var button = AP.BASE.getChildClass(obj, options.buttonname)[0];
		var child_list = AP.BASE.getChildClass(obj, options.childname)[0];
		
		if(child_list){
			AP.BASE.removeClass(child_list, 'off');
			AP.BASE.getChildClass(obj, 'acdn-btn')[0].getElementsByTagName("img")[0].src = btn_minus_path;
			
			var child_child = AP.BASE.getChildNodes(child_list);
			var child_child_length = child_child.length;
			
			for (var l = 0; l < child_child_length; l++) {
				var child_href = child_child[l].getElementsByTagName('a')[0].getAttribute('href', 2);
				if (pathname === child_href) {
					AP.BASE.setClass(child_child[l], 'current');
				}
			}
		}
		
		

	}

	for (var i = 0; i < lists_length; i++) {
		var child_items = AP.BASE.getChildNodes(lists[i]);
		var child_items_length = child_items.length;

		
		if (directories[2] === '' && child_items_length === 1) {
			match_current(child_items[0]);
		}else{
			for (var j = 0; j < child_items_length; j++) {
			
				var child_items_hrefs;
				
				if (!AP.BASE.getClassName(AP.BASE.getChildClass(child_items[j], 'link-btns')[0], 'null-link')) {
					child_items_hrefs = child_items[j].getElementsByTagName("a")[0].getAttribute('href', 2).replace(/\/[^\/]+.[^\.]+$/, "").split('/');
				}
				else {
					child_items_hrefs = AP.BASE.getChildClass(child_items[j], 'child')[0].getElementsByTagName("a")[0].getAttribute('href', 2).replace(/\/[^\/]+.[^\.]+$/, "").split('/');
				}
				
				var check_directory;
				
				if(AP.BASE.getClassName(document.body,'collections-lower')){
					check_directory = child_items_hrefs[child_items_hrefs.length-1];
				}else{
					check_directory = child_items_hrefs[2];
				}

				for (var k = 0; k < directories_length; k++) {
					if (AP.BASE.checkString(directories[k], check_directory)) {
						match_current(child_items[j]);
					}
				}
			}
		}
	}
};



AP.BASE.addEvents(window, 'load', function(e){
	
	//ドロップダウンリスト
	var global_dd = new AP.CLS_DROP_DOWN({parentname : 'drop-down',childname : 'dd-child'});
	global_dd.effect_fade({
		start : 0,
		last : 10,
		per : 2,
		speed : 10,
		delay : 200
	});
	
	//アコーディオンメニュー
	var local_acdn = new AP.CLS_ACCORDION({listname : 'acdn-list', childname : 'child', buttonname : 'cat-name'});
	local_acdn.fadein();
	
	//アンカースクロール
	var page_scroll = new AP.CLS_PAGE_SCROLL();
	page_scroll.anchor({offset: 0.3, classname : "anc-scroll", speed : 20});
	
	//ポップアップウインドウ
	var popup_window = new AP.CLS_POPUP_WINDOW();
	popup_window.size_select("popup");	

	//ローカルナビカレント表示
	AP.local_current({listname : 'acdn-list', buttonname : 'cat-name', childname : 'child'});

});


