
/*------------------------------------------------------------

	全サイト(外部サイト含む)共通のJavaScript

------------------------------------------------------------*/





/*------------------------------------------------------------
	IEのhover時ちらつき防止
------------------------------------------------------------*/
try {
document.execCommand('BackgroundImageCache', false, true);
} catch(e) {}


/*------------------------------------------------------------
	リスナー登録をする処理
------------------------------------------------------------*/
function addListener (elem, eventType, func, cap) {
	if(elem.addEventListener) {
		elem.addEventListener(eventType, func, cap);
	} else if(elem.attachEvent) {
		elem.attachEvent("on" + eventType, func);
	} else {
		return false;
	}
}


/*------------------------------------------------------------
	change_swich
	build 2008
	targetID の class名を変更します
	使用法：CSSと連動してタブ切替などに使用できます
------------------------------------------------------------*/
function change_swich(targetID,changeClass) {
	if (! document.getElementById) return;
	document.getElementById(targetID).className = changeClass;
}



/*------------------------------------------------------------
	fade_change
	build   2008.11.18.
	rebuild 2009. 4.22. / 複数設置に対応
	使用法：フェードさせたいタグの親のID名に"change_division"
------------------------------------------------------------*/
fade_start_opacity = new Array;
fade_display_time = new Array;
fade_change_time = new Array;
fade_change_elements = new Array;
fade_targetID = new Array;
var target_counts = 0;

var fade_change_fps = 20;
fade_value_opacity = new Array;
fade_target_element = new Array;
fade_change_division = new Array;

function setupFadeChangeVar(targetID,start_opacity,display_time,change_time) {
	fade_targetID.push(targetID);
	fade_start_opacity.push(start_opacity);//透明度初期値 0〜100(整数)
	fade_display_time.push(display_time);//表示時間
	fade_change_time.push(change_time);//フェード時間
	fade_change_elements.push(target_counts);
	target_counts += 1;
}
function startFadeChange() {
	for(k=0; k < fade_change_elements.length; k++){
		setupFadeChange(k);
	}
}
function setupFadeChange(target_count) {
	fade_change_division[target_count] = new Array;

	fade_value_opacity[target_count] = fade_start_opacity[target_count];
	if (document.getElementById(fade_targetID[target_count]) != null) {
		for (i=0;i<document.getElementById(fade_targetID[target_count]).childNodes.length;i++){
			if (document.getElementById(fade_targetID[target_count]).childNodes.item(i).nodeType == 1){
				fade_change_division[target_count].push(document.getElementById(fade_targetID[target_count]).childNodes.item(i));

				// Flashの場合、最初に停止させる（IEのみ動作）
				if (window.attachEvent){
					if (document.getElementById(fade_targetID[target_count]).childNodes.item(i).getElementsByTagName("object")[0]){
						document.getElementById(fade_targetID[target_count]).childNodes.item(i).getElementsByTagName("object")[0].StopPlay();
					}
				}

			}
		}
		fade_change_division[target_count][0].parentNode.style.position = "relative";
		var rand = Math.floor((Math.random() * fade_change_division[target_count].length));
		for(i=0; i < fade_change_division[target_count].length; i++){
			fade_change_division[target_count][i].style.display = "none";
			fade_change_division[target_count][i].style.position = "absolute";
			fade_change_division[target_count][i].style.top = "0";
			fade_change_division[target_count][i].style.left = "0";
		}
		fadeChange(rand,target_count);
	}
}
function fadeChange(count,target_count) {
	fade_target_element[target_count] = fade_change_division[target_count][count];
	fade_target_element[target_count].style.display = "block";
	if (count == fade_change_division[target_count].length - 1) {
		count = 0;
	} else {
		count += 1;
	}

	// Flashの場合、1フレーム目に戻って再生させる（IEのみ動作）
	if (window.attachEvent){
		if (fade_target_element[target_count].getElementsByTagName("object")[0]){
			fade_target_element[target_count].getElementsByTagName("object")[0].GotoFrame(1);
			fade_target_element[target_count].getElementsByTagName("object")[0].Play();
		}
	}

	setFadeIn(target_count);
	setTimeout("setFadeOut("+target_count+")", fade_change_time[target_count] + fade_display_time[target_count]);
	setTimeout("setDisplayNone("+target_count+")", (fade_change_time[target_count] * 2) + fade_display_time[target_count] + (fade_change_time[target_count] * 0.1));
	setTimeout("fadeChange("+count+","+target_count+")", (fade_change_time[target_count] * 2) + fade_display_time[target_count] + (fade_change_time[target_count] * 0.3));
}
//非表示に
function setDisplayNone(target_count) {
	fade_target_element[target_count].style.display = "none";
}
// フェードイン
function setFadeIn(target_count) {
	if(fade_value_opacity[target_count] < 100){
		fade_value_opacity[target_count] += 100 / (fade_change_time[target_count]*1.2 / (1000 / fade_change_fps));
		setOpacity(target_count);
		setTimeout("setFadeIn("+target_count+")", 1000 / fade_change_fps);
	}
}
// フェードアウト
function setFadeOut(target_count) {
	if(fade_value_opacity[target_count] > 0){
		fade_value_opacity[target_count] -= 100 / (fade_change_time[target_count] / (1000 / fade_change_fps));
		setOpacity(target_count);
		setTimeout("setFadeOut("+target_count+")", 1000 / fade_change_fps);
	}
}
// 透明度をセットする処理
function setOpacity (target_count) {
	fade_target_element[target_count].style.filter = "alpha(opacity=" + fade_value_opacity[target_count] + ")";//IE
	fade_target_element[target_count].style.MozOpacity = fade_value_opacity[target_count] / 100;//Firefox2
	fade_target_element[target_count].style.opacity = fade_value_opacity [target_count]/ 100;//Firefox3,Safari,Opera
}
addListener(window, "load", startFadeChange, false);
/*-------------------- fade_change end ---------------------*/






/*------------------------------------------------------------
	random_display
	build 2009.04.21.
	使用法
	ランダムで表示させたいタグの親要素のidを"random-box数字"
	ランダムで表示させたいタグのclass名を"random-element"
------------------------------------------------------------*/

function random_display() {
	var all_tags= new Array;
	all_tags = document.getElementsByTagName("*");
	for (i=0;i<all_tags.length;i++){
		if(all_tags[i].id.match("random-box")) {
			var random_elements= new Array;
			// 子エレメントを抽出
			var random_boxes = document.getElementById(all_tags[i].id);
			if (random_boxes != null) {
				for (j=0;j<random_boxes.childNodes.length;j++){
					if (random_boxes.childNodes.item(j).nodeType == 1){
						if (random_boxes.childNodes.item(j).className.match("random-element")){
							random_elements.push(random_boxes.childNodes.item(j));
						}
					}
				}
			}
			if (random_elements[0]) {
				// ランダム数生成
				var rnd = Math.floor(Math.random( ) * random_elements.length);
				for (j=0;j<random_elements.length;j++){
					random_elements[j].style.display = "none";
				}
				random_elements[rnd].style.display = "block";
			}
		}
	}
}
addListener(window, "load", random_display, false);
/*-------------------- random_display end ---------------------*/




/*------------------------------------------------------------
	Randomize
	乱数生成

	rnd=new Randomize();
	x=rnd.random();
	i=rnd.randomi(6);

------------------------------------------------------------*/
function Randomize( seed ) {
	this.seedrand = function( seed ) {
		dt = new Date();
		this.seed = this.seedrand.arguments.length ? seed : dt.getSeconds() * 1000 + dt.getMilliseconds();
	}

	this.random = function() {
		this.seed = ( this.seed * 2061 + 7 ) % 65536;
		return this.seed / 65536;
	}
	this.randomi=function( range ) {
		return Math.floor( this.random() * range * 10 ) % range;
	}

	Randomize.arguments.length ? this.seedrand( seed ) : this.seedrand();
}





