﻿/**
 * @author kitada
 */
function getElem(id){
	var node, nodes;
	if (node = document.getElementById(id)) {
		return node;
	} else if (nodes = document.getElementsByTagName(id)) {
		return nodes[0];
	}
	return false;
}

function addChild(parNode, tag){
	var node;
	if (!tag)
		tag = 'div';
	parNode.appendChild(node = document.createElement(tag));
	return node;
}


function collapse(obj, ms){
	var iniHeight = obj.offsetHeight;
	var startTime = (new Date).getTime();
	//	obj.style.overflow ='hidden';
	try {
		clearInterval(_collapseTimer);
	} catch (e) {
		};
	_collapseTimer = setInterval(function(){
		var now = (new Date).getTime();
		obj.style.height = Math.floor((startTime + ms - now) / ms * iniHeight) + 'px';
		if (startTime + ms < now) {
			clearInterval(_collapseTimer);
			obj.style.display = "none";
			obj.style.height = iniHeight + "px";
		}
	}, 30);
}

function expand(obj, ms){
	obj.style.display = "block";
	var iniHeight = obj.offsetHeight;
	obj.style.height = "0px";
	var startTime = (new Date).getTime();
	try {
		clearInterval(_expandTimer);
	} catch (e) {
		};
	_expandTimer = setInterval(function(){
		var now = (new Date).getTime();
		obj.style.height = Math.floor((now - startTime) / ms * iniHeight) + 'px';
		if (startTime + ms < now) {
			clearInterval(_expandTimer);
			obj.style.height = iniHeight + "px";
		}
	}, 30);

}

function fadeImage(obj, next, ms){
	var opc;
	ms = ms /2;
	var startTime = (new Date).getTime();
	try {
		clearInterval(_fadeoutTimer);
	} catch (e) {
		};

	_fadeoutTimer = setInterval(function(){
		var now = (new Date).getTime();
		opc = Math.floor((startTime + ms - now) / ms * 100) / 100;
		obj.style.opacity = opc;
		obj.style.filter = 'alpha( opacity= ' + (opc * 100) +' );';

		if (startTime + ms < now) {
			clearInterval(_fadeoutTimer);
			obj.style.opacity = 0;
			obj.style.filter = 'alpha( opacity= 0 );';
			obj.src = next;
			try {
				clearInterval(_fadeinTimer);
			} catch (e) {
			};

			startTime = (new Date).getTime();
			_fadeinTimer = setInterval(function(){
				var now = (new Date).getTime();

				opc = Math.floor((now - startTime) / ms * 100) / 100;
				obj.style.opacity = opc
				obj.style.filter = 'alpha( opacity= ' + (opc * 100) +' );';
				if (startTime + ms < now) {
					clearInterval(_fadeinTimer);
					obj.style.opacity = 1;
					obj.style.filter = 'alpha( opacity= 100 );';
				}
			}, 30);
		}
	}, 30);

}

function animScroll(obj, ms){
	var start = qa.scrollTop;
	var end = qa.scrollHeight - qa.offsetHeight;
	var h = end - start;
	var startTime = (new Date).getTime();
	try {
		clearInterval(_animTimer);
	} catch (e) {
		};
	_animTimer = setInterval(function(){
		var now = (new Date).getTime();
		obj.scrollTop = Math.floor((now - startTime) / ms * h + start);
		if (now > startTime + ms)
			clearInterval(_animTimer);
	}, 30);
}

function loadScript(filename){
	var obj = addChild(getElem('head'), 'script');
	obj.type = 'text/javascript';
	obj.src = 'res/' + filename;
}


//XMLHttpRequestオブジェクト生成
function createHttpRequest(){

	//Win ie用
	if (window.ActiveXObject) {
		try {
			return new ActiveXObject("Msxml2.XMLHTTP")
		} catch (e) {
			try {
				return new ActiveXObject("Microsoft.XMLHTTP")
			} catch (e2) {
				return null
			}
		}
	} else if (window.XMLHttpRequest) {
		return new XMLHttpRequest()
	} else {
		return null
	}
}

//ファイルにアクセスし受信内容を確認します
function requestFile(method, fileName, callback){
	var httpoj = createHttpRequest()
	httpoj.open(method, fileName, true)

	//受信時に起動するイベント
	httpoj.onreadystatechange = function(){
		//readyState値は4で受信完了
		if (httpoj.readyState == 4) {
			callback(httpoj)
		}
	}

	//send メソッド
	httpoj.send('');
}


