
NtjCommon = function(){};

var MM_contentVersion = 8;
var MM_FlashCanPlay;
var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
if (plugin) {
	var words = navigator.plugins["Shockwave Flash"].description.split(" ");
	for (var i = 0; i < words.length; ++i){
		if (isNaN(parseInt(words[i])))
			continue;
		var MM_PluginVersion = words[i]; 
	}
	MM_FlashCanPlay = MM_PluginVersion >= MM_contentVersion;
}
else if (navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0 && (navigator.appVersion.indexOf("Win") != -1)) {
	document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n'); //FS hide this from IE4.5 Mac by splitting the tag
	document.write('on error resume next \n');
	document.write('MM_FlashCanPlay = ( IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & MM_contentVersion)))\n');
	document.write('</SCR' + 'IPT\> \n');
}

var _timeoutCounter=0;
function $TimeOutHandler$(a){
	a.prototype.setTimeout=function(timeoutHandler,elapseTime){
		var Ie="tempVar"+_timeoutCounter;
		_timeoutCounter++;
		eval(Ie+" = this;");
		var oi=timeoutHandler.replace(/\\/g,"\\\\").replace(/\"/g,'\\"');
		return window.setTimeout(Ie+'._setTimeoutDispatcher("'+oi+'");'+Ie+" = null;",elapseTime);
	};

	a.prototype._setTimeoutDispatcher=function(He){
		eval(He);
	};
}

function s(a,b,c){
	var r = $(a).style[b];
	if(r != "" && r.indexOf("px")!= -1 && r.indexOf("px") == r.length-2){
		r=r.substr(0,r.indexOf("px"));
	}
	if(r != "" && r.indexOf("pt") != -1 && r.indexOf("pt") == r.length-2){
		r=r.substr(0,r.indexOf("pt"));
	}
	return isNaN(r)?r:new Number(r);
}

NtjCommon.prototype.loadSWF=function(id,src,width,height,ver){
	if(MM_FlashCanPlay){
		var html = '<OBJ'+'ECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="'+id+'" WIDTH="'+width+'" HEIGHT="'+height+'">'+
				'<PA'+'RAM NAME="movie" VALUE="'+src+'" />'+
				'<PA'+'RAM NAME="loop" VALUE="true" />'+
				'<PA'+'RAM NAME="quality" VALUE="high" />'+
				'<PA'+'RAM NAME="wmode" VALUE="transparent" />'+
				'<EM'+'BED name="'+id+'" src="'+src+'" loop="true" quality="high" swLiveConnect="FALSE" WIDTH="'+width+'" HEIGHT="'+height+'" TYPE="application/x-shockwave-flash" wmode="transparent">'+
				'</EM'+'BED></OB'+'JECT>';
		document.write(html);
	}else{
		document.write('<div class="impossible-load-flash">');
		document.write('<div class="flash-link">');
		document.write('<a href="http://www.adobe.com/shockwave/download/index.cgi?Lang=Japanese&P5_Language=Japanese&P1_Prod_Version=ShockwaveFlash&Lang=Japanese&" target="_blank"><span>Download Flash Player</span></a>');
		document.write('</div>');
		document.write('<div class="flash-exp">');
		document.write('当サイトはFlashコンテンツを使用しております。<br>');
		document.write('快適にページをご覧頂く為、お手数ですが最新のFlash Player(バージョン8以上)をダウンロードして下さい。<br>');
		document.write('</div>');
		document.write('</div>');
	}
};

var $break    = new Object();

Object.extend = function(destination, source) {
	for (property in source) {
		destination[property] = source[property];
	}
	return destination;
}
var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
}

function $() {
	var elements = new Array();

	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);

		if (arguments.length == 1)
			return element;

		elements.push(element);
	}

	return elements;
}

var $A = Array.from = function(iterable) {
	if (!iterable) return [];
	if (iterable.toArray) {
		return iterable.toArray();
	} else {
		var results = [];
		for (var i = 0; i < iterable.length; i++)
			results.push(iterable[i]);
		return results;
	}
}

Object.extend(Array.prototype, {
	_each: function(iterator) {
		for (var i = 0; i < this.length; i++)
			iterator(this[i]);
	}
});
var Enumerable = {
	each: function(iterator) {
		var index = 0;
		try {
			this._each(function(value) {
				try {
					iterator(value, index++);
				} catch (e) {
					if (e != $continue) throw e;
				}
			});
		} catch (e) {
			if (e != $break) throw e;
		}
	},
  
	inject: function(memo, iterator) {
		this.each(function(value, index) {
			memo = iterator(memo, value, index);
		});
		return memo;
	}
}

/*--------------------------------------------------------------------------*/

var Form = {
  serialize: function(form) {
    var elements = Form.getElements($(form));
    var queryComponents = new Array();

    for (var i = 0; i < elements.length; i++) {
      var queryComponent = Form.Element.serialize(elements[i]);
      if (queryComponent)
        queryComponents.push(queryComponent);
    }

    return queryComponents.join('&');
  },

  getElements: function(form) {
    form = $(form);
    var elements = new Array();

    for (tagName in Form.Element.Serializers) {
      var tagElements = form.getElementsByTagName(tagName);
      for (var j = 0; j < tagElements.length; j++)
        elements.push(tagElements[j]);
    }
    return elements;
  },

  getInputs: function(form, typeName, name) {
    form = $(form);
    var inputs = form.getElementsByTagName('input');

    if (!typeName && !name)
      return inputs;

    var matchingInputs = new Array();
    for (var i = 0; i < inputs.length; i++) {
      var input = inputs[i];
      if ((typeName && input.type != typeName) ||
          (name && input.name != name))
        continue;
      matchingInputs.push(input);
    }

    return matchingInputs;
  },

  disable: function(form) {
    var elements = Form.getElements(form);
    for (var i = 0; i < elements.length; i++) {
      var element = elements[i];
      element.blur();
      element.disabled = 'true';
    }
  },

  enable: function(form) {
    var elements = Form.getElements(form);
    for (var i = 0; i < elements.length; i++) {
      var element = elements[i];
      element.disabled = '';
    }
  },

  findFirstElement: function(form) {
    return Form.getElements(form).find(function(element) {
      return element.type != 'hidden' && !element.disabled &&
        ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
    });
  },

  focusFirstElement: function(form) {
    Field.activate(Form.findFirstElement(form));
  },

  reset: function(form) {
    $(form).reset();
  }
}

Form.Element = {
  serialize: function(element) {
    element = $(element);
    var method = element.tagName.toLowerCase();
    var parameter = Form.Element.Serializers[method](element);

    if (parameter) {
      var key = encodeURIComponent(parameter[0]);
      if (key.length == 0) return;

      if (parameter[1].constructor != Array)
        parameter[1] = [parameter[1]];

      return parameter[1].map(function(value) {
        return key + '=' + encodeURIComponent(value);
      }).join('&');
    }
  },

  getValue: function(element) {
    element = $(element);
    var method = element.tagName.toLowerCase();
    var parameter = Form.Element.Serializers[method](element);

    if (parameter)
      return parameter[1];
  }
}

Form.Element.Serializers = {
  input: function(element) {
    switch (element.type.toLowerCase()) {
      case 'submit':
      case 'hidden':
      case 'password':
      case 'text':
        return Form.Element.Serializers.textarea(element);
      case 'checkbox':
      case 'radio':
        return Form.Element.Serializers.inputSelector(element);
    }
    return false;
  },

  inputSelector: function(element) {
    if (element.checked)
      return [element.name, element.value];
  },

  textarea: function(element) {
    return [element.name, element.value];
  },

  select: function(element) {
    return Form.Element.Serializers[element.type == 'select-one' ?
      'selectOne' : 'selectMany'](element);
  },

  selectOne: function(element) {
    var value = '', opt, index = element.selectedIndex;
    if (index >= 0) {
      opt = element.options[index];
      value = opt.value;
      if (!value && !('value' in opt))
        value = opt.text;
    }
    return [element.name, value];
  },

  selectMany: function(element) {
    var value = new Array();
    for (var i = 0; i < element.length; i++) {
      var opt = element.options[i];
      if (opt.selected) {
        var optValue = opt.value;
        if (!optValue && !('value' in opt))
          optValue = opt.text;
        value.push(optValue);
      }
    }
    return [element.name, value];
  }
}

/*--------------------------------------------------------------------------*/

var $F = Form.Element.getValue;

/*--------------------------------------------------------------------------*/

Object.extend(Array.prototype, Enumerable);

document.getElementsByClassName = function(className, parentElement) {
	var children = ($(parentElement) || document.body).getElementsByTagName('*');
	return $A(children).inject([], function(elements, child) {
		if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
			elements.push(child);
		return elements;
	});
}

// 任意のFORMにある複数のオブジェクトにチェックを入れる
// @param	formオブジェクト
// @param	名称(前方一致)
// @param	チェック可否(true:チェックON,false:チェックOFF)
NtjCommon.checkAll = function(form,name,check){
	var l=form.elements.length;
	for(var i=0; i<l; i++){
		var obj = form.elements[i];
		if(obj.name.indexOf(name) == 0){
			obj.checked = check;
		}
	}
};


NtjCommon.Resizer = Class.create();
NtjCommon.Resizer.prototype = Object.extend(NtjCommon, {
	initialize: function(a){
		this.src = a;
		this.reachW = 0;
		this.reachH = 0;
		this.timeoutId = "";
		this.endFunction;
	},

	autoResizeTo:function(initw,inith,endw,endh,func){
		var stl = this.src.style;
		if(initw) stl.width = initw + "px";
		if(inith) stl.height = inith + "px";
	
		if(endw) this.reachW = Math.round(endw);
		if(endw) this.reachH = Math.round(endh);
		if(func!=null){
			this.endFunction = func;
		}
		var x1 = new Number(s(this.src,"width"));
		var x2 = new Number(this.reachW)-x1;
		var x3 = Math.abs(x2/5)<1? (x2>0)?1:-1 : x2/5;
	
		var y1 = new Number(s(this.src,"height"));
		var y2 = new Number(this.reachH)-y1;
		var y3 = Math.abs(y2/5)<1? (y2>0)?1:-1 : y2/5;
	
		if(Math.abs(x2) <= 1){
			stl.width = this.reachW + "px";
		}else{
			stl.width = Math.round(x1 + x3)+ "px";
		}
	
		if(Math.abs(y2) <= 1){
			stl.height = this.reachH + "px";
		}else{
			stl.height = Math.ceil(y1 + y3) + "px";
		}
	
		if(s(this.src,"width")==this.reachW && s(this.src,"height")==this.reachH){
			clearTimeout(this.timeoutId);
			if(this.endFunction) this.endFunction();
			return false;
		}
		this.timeoutId = this.setTimeout("this.autoResizeTo()",10);
	}
});

NtjCommon.Popup = Class.create();
NtjCommon.Popup.prototype = Object.extend(NtjCommon, {
	initialize: function(a,x,y){
		this.src = a;
		if(x!=null) this.src.style.left = x;
		if(y!=null) this.src.style.top = y;
		this.timeoutId = "";
	},
	open: function(){
		this.src.style.visibility = "visible";
	},
	
	close: function(time){
		if(time==0){
			this.src.style.visibility = "hidden";
		}else{
			this.timeoutId = this.setTimeout("this.timerclose()",500);
		}
	},
	
	timerclose: function(){
		if(this.timeoutId != "") this.src.style.visibility = "hidden";
	},
	
	stopclose: function(){
		clearTimeout(this.timeoutId);
		this.timeoutId = "";
	}
});

$TimeOutHandler$(NtjCommon.Resizer);
$TimeOutHandler$(NtjCommon.Popup);
