//** IE高速化用
/*@cc_on _d=document;eval('var document=_d')@*/


//** Utility Func ********************************************************************************//
//* getElementById
function $(obj_id) {
	var element = document.getElementById(obj_id);
	return (element!=false)? element:false;
}

//* オブジェクトの拡張
function extendObj(destination, source) {
  for (var property in source) {
    destination[property] = source[property];
  }
  return destination;
}

//* XMLHttpRequestオブジェクトの生成
function createHttpRequest(){
	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 Debug(msg, area) {
	($(area))? $(area).innerHTML += msg+"<br>" : alert(msg);
}

var $A = Array.from = function(iterable) {
  if (!iterable) return [];
  if (iterable.toArray) {
    return iterable.toArray();
  } else {
    var results = [];
    for (var i = 0, length = iterable.length; i < length; i++)
      results.push(iterable[i]);
    return results;
  }
}

Function.prototype.bind = function() {
  var __method = this, args = $A(arguments), object = args.shift();
  return function() {
    return __method.apply(object, args.concat($A(arguments)));
  }
}

Function.prototype.bindAsEventListener = function(object) {
  var __method = this, args = $A(arguments), object = args.shift();
  return function(event) {
    return __method.apply(object, [event || window.event].concat(args));
  }
}