/**
 * accordion.js
 * @author uniteair.co.jp
 */


var displayStr = '<style type="text/css">';
displayStr += '<!--';
displayStr += '.listmod001 dd { height:0; visibility:hidden; }';
displayStr += '.listmod004 dd { height:0; visibility:hidden; }';
displayStr += '-->';
displayStr += '</style>';

document.write(displayStr);

function Accordion() {
}

Accordion.prototype = {

	initialize:function(id,openNumber,openClass){
		this.elems01 = [];
		this.elems02 = [];
		this.inners = [];
		this.timer = 16;
		this.speed = 7;
		this.openClass= openClass;
		this.flag = "0";
		var This = window.slider = this;
		var parent = document.getElementById(id);
		var DTs    = this.getElements(parent,'dt');
		var DDs    = this.getElements(parent,'dd');
		var openNumber = (openNumber)?openNumber:null;

		var len = DDs.length;
		for(var i = 0; i < len; i++){
			var target = DDs[i];
			this.elems02[i] = target;
			this.inners[i] = (target.firstChild.offsetHeight)?target.firstChild:target.firstChild.nextSibling;
			if(openNumber == i){
				target.style.height='auto';
				target.style.visibility='visible';
			}else{
				target.style.height='0';
				target.style.visibility='hidden';
			}
		}

		len = DTs.length;
		for(var i=0; i < len; i++){
			var trriger = DTs[i];
			this.elems01[i] = trriger;
			this.elems01[i].defaultClass = this.elems01[i].className;
			trriger.onclick= function(evt){
				This.doAccordion(this);
				return false;
			}
			trriger.onmouseover= function(evt){
				if(this.className.indexOf(openClass) < 0 && id !='serviceArea'){
					this.style.backgroundColor = '#707fcf';
				}
			}
			trriger.onmouseout= function(evt){
				if(this.className.indexOf(openClass) < 0 && id !='serviceArea'){
					this.style.backgroundColor = '#bebfc7';
				}
			}
			if(openNumber == i){this.openClass = trriger.className = openClass }
		}

		this.oneTrriger = this.getElements(parent,'a',this.openClass)[0];
		if(this.oneTrriger){
			this.oneTrriger.onclick = function(){This.flag++;This.doAccordion(this,This.flag);return false; }
		}
	},
	doAccordion:function(thisTrriger,flag){

		var len = this.elems01.length;
		for(var i = 0; i < len; i++){
			var trriger = this.elems01[i];
			var target =  this.elems02[i];
			target.maxHeight = this.inners[i].offsetHeight;
			if(target.style.height.match(/^0/)){
				target.style.visibility = 'hidden';
			}
			if(this.flag % 2 == 0) {
				trriger.className = trriger.defaultClass;
			}
			var maxH = target.maxHeight;
			clearInterval(target.timer);
			if(flag){
				if(flag % 2 == 1){
					target.style.visibility='visible';
					this.doSlide(target,maxH);
					trriger.className = trriger.defaultClass + ' ' + this.openClass;
					trriger.style.backgroundColor = "";
				}else if(flag % 2 == 0){
					this.doSlide(target,0,trriger);
					trriger.style.backgroundColor = "";
					trriger.className = trriger.defaultClass;
				}
			}else{
				if((this.flag % 2 == 0) && trriger == thisTrriger && target.style.visibility =='hidden'){
					target.style.visibility='visible';
					this.doSlide(target,maxH);
					trriger.className = trriger.defaultClass + ' ' + this.openClass;
				}else if((this.flag % 2 == 0) && target.style.visibility=='visible'){
					this.doSlide(target,0,trriger);
					trriger.style.backgroundColor = "";
					trriger.className = trriger.defaultClass;
				}else if(this.flag % 2 == 0){
					trriger.className = trriger.defaultClass;
					trriger.style.backgroundColor = "";
					target.style.visibility='hidden';
				}
			}
		}
	},
	doSlide:function(target,endH,trriger){
		target.timer = setInterval(function(){window.slider.slide(target,endH,trriger)},this.timer)
	},
	slide:function(target,endH,trriger){
		var type = (endH == 0)?-1:1;
		var strH  = target.offsetHeight;
		var nextH = Math.ceil(Math.abs(endH - strH) / this.speed);
		target.style.height= (strH + nextH * type) +'px';
		if(endH !=0 && endH - strH == 1){
			clearInterval(target.timer);
			target.style.height = "auto";
			target.style.visibility = 'visible';
		}
		else if(endH == 0 && strH == 1){
			clearInterval(target.timer)
			target.style.visibility = 'hidden';
			target.style.height = "0";
		}
	},
	getElements:function(parent,tag,cls){
		var elements = parent.getElementsByTagName(tag);
		var res = [];
		var len = elements.length;
		for(var i = 0; i < len; i++){
			var obj = elements[i];
			if((cls && obj.className == cls) || !cls) {
				if(obj.tagName == 'DT') {
					var nextObj = (obj.nextSibling.nodeType != 1)?obj.nextSibling.nextSibling:obj.nextSibling;
					if(nextObj.tagName != 'DD') {
						break;
					}else{
						res[res.length] = obj;
					}
				}else{
					res[res.length] = obj;
				}
			}
		}
		return res;
	}
}


function CreateBtn() {
}

CreateBtn.prototype = {
	initialize:function(id,cls,openttl,closettl,onimg,offimg){
		new Image().src = offimg;
		var parent = document.getElementById(id);
		var target = this.getElementsByClassName(parent,'DIV',cls)[0];
		var elem1 = document.createElement("p");
		target.appendChild(elem1);
		var elem2 = document.createElement("a");
		elem2.setAttribute("href", "#");
		elem2.setAttribute("title", openttl);
		elem2.className = "open";
		elem1.appendChild(elem2);
		var elem3 = document.createElement("img");
		elem3.setAttribute("src", onimg);
		elem3.setAttribute("width","75");
		elem3.setAttribute("height","9");
		elem2.appendChild(elem3);
		elem3.flag = 1;
		elem3.onclick = function(){
			this.flag++;
			if(this.flag % 2 == 0){
				elem2.setAttribute("title", closettl);
				elem3.setAttribute("src",offimg);
				elem3.setAttribute("alt",closettl);
			}else{
				elem2.setAttribute("title", openttl);
				elem3.setAttribute("src",onimg);
				elem3.setAttribute("alt",openttl);
			}
		}
	},
	getElementsByClassName:function(parent,tag,cls){
		var elements = parent.getElementsByTagName(tag);
		var res = [];
		var len = elements.length;
		for(var i = 0; i < len; i++){
			if(elements[i].className == cls) {
				res[res.length] = elements[i];
			}
		}
		return res;
	}
}