//popupWin.js
var popupWin = $Class({
	$init : function(){
		var options = this.opt = this._getOptionSet( arguments[0] );
		this._base = $( options.id );

		if ( !this._base ) return;

		this.openArr = $$("#"+this.opt.id+" ."+this.opt.openClass, this._base);
		this.closeArr = $$("#"+this.opt.id+" ."+this.opt.closeClass, this._base);
		this._addEvent();
	},
	_getOptionSet : function(argu) {
		var option = {
			openClass : 'popup',
			closeClass : 'close',
			position : null
		};
		if (typeof argu == "undefined") argu = new Object;
		for(var x in argu) option[x] = argu[x];
		return option;
	},
	_addEvent : function() {
		$Fn(this.open, this).attach(this.openArr, "click");
		$Fn(this.close, this).attach(this.closeArr, "click");
	},
	open : function(e){
		var el = e.currentElement;

		var winLink = el.href;
		var option = this.option = el.rel;
		var winName =  el.name;
		if(!winName) winName = "";
		if(!option) option = "";
		if(this.opt.position && option != "") {
			option = this.winPos() + "," + option;
		}

		window.open(winLink, winName, option);
		e.stop();
	},
	winPos : function(){
		var p = this.opt.position;
		var l, t, w, h;
		var el = this.option;
		var reg1 = /^.*width=([0-9]+)\,.*$/;
		var reg2 = /^.*height=([0-9]+)\,.*$/;

		if(reg1.test(el)) w = RegExp.$1;
		if(reg2.test(el)) h = RegExp.$1;

		switch(p){
			case "center" :
				l = (window.screen.width - w) / 2;
				t = (window.screen.height - h) / 2;
				break;
			case "right" :
				l = window.screen.width - w - 10;
				t = 0;
				break;
			case "left" :
				l = 0;
				t = 0;
				break;
		}
		var pos = "top="+ t +",left="+ l;
		return pos;
	},
	close : function(){
		window.close();
	}
});

//Tabs.js
var Tabs = $Class({
	$init : function(){
		var options = this.opt = this._getOptionSet( arguments[0] );
		this._base = $( options.id );

		if ( !this._base ) return;

		this.display();
		this._addEvent();
	},
	_getOptionSet : function(argu) {
		var option = {
			categoryObj : "category",
			contentsObj : "contents",
			tabObj : "tab",
			tabType   : "img", // class || img
			tabObjOver : "_on", // className || false
			tabObjOn : "_on",
			change : "click", // click || over
			height : false,
			start : function(){ return 0 }
		};
		if (typeof argu == "undefined") argu = new Object;
		for(var x in argu) {
			option[x] = argu[x];
		}
		return option;
	},
	display : function(){


		this.tabArr = $$("#"+this.opt.id + " ."+this.opt.tabObj);
		this.infoArr = $$("#"+this.opt.id + " ."+this.opt.contentsObj);
		if(this.opt.categoryObj){
			this.conArr = $$("#"+this.opt.id + " ."+this.opt.categoryObj);

			$Element(this._base).css("position","relative");

			$A(this.conArr).forEach(function(v){
				$Element(v).css("position", "absolute");
			});

			var w = 0;
			$A(this.tabArr).forEach(function(v){
				var eV = $Element(v);
				eV.css({
					"top" : "0px",
					"left" : w + "px",
					"position" : "relative",
					"zIndex" : "999"
				});
				w += eV.width();
			});
		}
		var v = this.opt.start();

		this.change(v);
	},
	change : function(v){
		this.toggle(v);
		this.now = v;
		this.tabOn(v);
	},
	tabOn : function(index){
		var on = this.opt.tabObjOn;
		var over = this.opt.tabObjOver;
		var off = this.opt.tabObj;
		if(this.opt.tabType == "class") this.classChange(index);
		if(this.opt.tabType == "img") this.imgChange(index);
	},
	classChange : function(index){
		var on = this.opt.tabObjOn;
		var off = this.opt.tabObj;

		$A(this.tabArr).forEach(function(v,i){
			var eV = $Element(v);
			if(i == index) {
				v.className = on;
				eV.css("cursor","default");
			}else{
				v.className = off;
				eV.css("cursor", "pointer");
			}
		});
	},
	imgChange : function(index){
		var on = this.opt.tabObjOn;
		var off = this.opt.tabObj;

		$A(this.tabArr).forEach(function(v,i){
			var obj = $$("img", v)[0];
			var src = obj.src;
			var ex = src.match('^.*'+on+'\..{3}$');

			if(ex) src = src.replace(new RegExp('(^.*)'+on+'(\..{3}$)'), "$1$2");
			if(i == index) {
				src = src.replace(new RegExp('(^.+)(\..{3}$)'), "$1"+on+"$2");
				obj.src = src;
				obj.style.cursor = "default";
			}else{
				src = src.replace(new RegExp('(^.*)'+on+'(\..{3}$)'), "$1$2");
				obj.src = src;
				obj.style.cursor = "pointer";
			}
		});
	},
	toggle : function(index){
		var conA = this.conArr;
		var opt = this.opt;
		var obj = $Element(this._base);

		$A(this.infoArr).forEach(function(v,i){
			var eV = $Element(v);
			if(i == index) {
				eV.css("display","block");
				if(opt.height) {
					var h = $Element(conA[i]).height() + "px";
					obj.css("height", h);
				}
			}else{
				eV.css("display","none");
			}
		});
	},
	_addEvent : function() {
		var arr = this.tabArr;

		if(this.opt.change == "over") {
			$Fn(this._onclick, this).attach(arr, "mouseover");
		}else{
			if(this.opt.tabObjOver) {
				$Fn(this._onmouseover, this).attach(arr, "mouseover");
				$Fn(this._onmouseout, this).attach(arr, "mouseout");
			}
			$Fn(this._onclick, this).attach(arr, "click");
		}
	},
	_onclick : function(e) {
		var elem =e.currentElement;
		var i = $A(this.tabArr).indexOf(elem);
		if(i == this.now) return;

		this.toggle(i);
		this.tabOn(i);
		this.now = i;
		e.stop();
	},
	_onmouseover : function(e)  {
		var elem = e.currentElement;
		var i = $A(this.tabArr).indexOf(elem);

		if(i == this.now) return;
		var over = this.opt.tabObjOver;

		if(this.opt.tabType == "class") elem.className = over;
		if(this.opt.tabType == "img") {
			var obj = $$("img", elem)[0];
			var src = obj.src;

			src = src.replace(new RegExp('(^.+)(\..{3}$)'), "$1"+over+"$2");
			obj.src = src;
		}
	},
	_onmouseout : function(e)  {
		var elem = e.currentElement;
		var i = $A(this.tabArr).indexOf(elem);

		if(i == this.now) return;
		var over = this.opt.tabObjOver;
		var off = this.opt.tabObj;

		if(this.opt.tabType == "class") elem.className = off;
		if(this.opt.tabType == "img") {
			var obj = $$("img", elem)[0];
			var src = obj.src;

			var ex = src.match('^.*'+over+'\..{3}$');
			if(ex){
				src = src.replace(new RegExp('(^.*)'+over+'(\..{3}$)'), "$1$2");
				obj.src = src;
			}
		}
	}
});

//rollOverImage.js
var rollOverImage = $Class({
	$init : function(){
		var options = this.opt = this._getOptionSet( arguments[0] );
		this._base = $( options.id );

		if ( !this._base ) return;

		this.imgArr = $$("#"+this.opt.id+" ."+this.opt.imgCss);
		this._addEvent();
	},
	_getOptionSet : function(argu) {
		var option = {
			imgCss : "_rollOver",
			imgOn : "on"
		};
		if (typeof argu == "undefined") argu = new Object;
		for(var x in argu) option[x] = argu[x];
		return option;
	},
	_addEvent : function() {
		var len = $A(this.imgArr).length();
		var arr = $A(this.imgArr).$value();
		$Fn(this.over, this).attach(arr, "mouseover");
		$Fn(this.out, this).attach(arr, "mouseout");
	},
	over : function(e){
		e = e.currentElement;
		var src = e.src;
		var on = this.opt.imgOn;
		src = src.replace(new RegExp('(^.+)(\..{3}$)'), "$1"+on+"$2");
		e.src = src;
	},
	out : function(e){
		e = e.currentElement;
		var src = e.src;
		var on = this.opt.imgOn;
		src = src.replace(new RegExp('(^.*)'+on+'(\..{3}$)'), "$1$2");
		e.src = src;
	}
});


//MyData.js
var MyData = $Class({
	$init : function(){

		//var options = this.opt = this._getOptionSet( arguments[0] );
		this.myDataObj = $('myData');
		this.myDataJsElm = $Element('myDataJs');

		this.myDataObjElm = $Element(this.myDataObj);
		this.minLeft = 0;
		this.maxLeft = 420;

		this.s = 5;

		//this.onMove = false;

		//console.log(this.myDataObj);
		//console.log(this.myDataObjElm.css('left'));

	},
	_getOptionSet : function(argu) {
		var option = {
			pauseMSec : 2000
		};
		if (typeof argu == "undefined") argu = new Object;
		for(var x in argu) option[x] = argu[x];
		return option;
	},
	chgDisp : function(e,state){
		$Event(e).stop();

		clearInterval(this.intID);

		//if(this.onMove) return;

		//this.onMove = true;

		if(state == 'show')	this.myDataJsElm.show();


		var moveFn = $Fn(function(){this._move(state)},this).bind();
		this.intID = setInterval(moveFn,10);
	},

	_move : function(state){



		var t;
		if(state == 'show'){t = this.minLeft}else{t = this.maxLeft};


		var currentLeft = parseInt(this.myDataObjElm.css('left'));

		var tmpnn = (t-currentLeft)/this.s;

		if(tmpnn < 0){
			var nn = -(Math.ceil(-tmpnn));
		}else{
			var nn = Math.ceil(tmpnn);
		}

		var nextLeft = nn+currentLeft;


		this.myDataObjElm.css('left',nextLeft+'px');

		if(Math.abs(t-nextLeft) < 1){
			clearInterval(this.intID);
			this.myDataObjElm.css('left',t+'px');

			//this.onMove = false;

			if(state == 'hide')	this.myDataJsElm.hide();

		}



	}

});



//Marquee
var HorizontalMarquee = $Class({
	$init : function(){

		var options = this.opt = this._getOptionSet( arguments[0] );
		this._baseArea = $( options.areaID );

		if ( !this._baseArea ) return;

		this.baseAreaElm = $Element(this._baseArea);

		this.listObj = $(this.opt.listID);
		this.listElm = $Element(this.listObj);
		this.vmLines;
		this.intvID;
		this.pauseIntvID;
		this.vmIndex = 0;
		this.scrollPx = this.opt.scrollPx;

		this.moveState = 1;

		this._getVMContent();

	},
	_getOptionSet : function(argu) {
		var option = {
			pauseMSec : 2000,
			scrollPx : 10
		};
		if (typeof argu == "undefined") argu = new Object;
		for(var x in argu) option[x] = argu[x];
		return option;
	},
	_getVMContent : function(){
		var lineElmAry = $$('li',this.listObj);
		var vmLines = new Array();
		vmLines = lineElmAry;

		this.vmLines = vmLines;
		this._clearContent();

		this.startVm();
	},
	_addEvent : function(){
		$Fn(this._onMouseover, this).attach(this.currentElm, "mouseover");
		$Fn(this._onMouseout, this).attach(this.currentElm, "mouseout");
	},
	_onMouseover : function(e){
		if(!this._paused) this.pause(1);
	},
	_onMouseout : function(e){
		if(this._paused) this.resume();
	},
	pause : function(type){
			window.clearTimeout(this.intvID);
			this.intvID = null;
		if(type == 1){
			this._paused = true;
			window.clearTimeout(this.pauseIntvID);
			this.pauseIntvID = null;
		}else if(type == 2){
			var resumeFn = $Fn(function(){this.resume()}, this).bind();
			this.pauseIntvID = setInterval(resumeFn, this.opt.pauseMSec);
		}
	},
	resume : function(){
		this.moveState = 2;
		window.clearTimeout(this.pauseIntvID);
		this.pauseIntvID = null;
		this._paused = false;
		this.restartVm();
	},

	startVm : function(){
		this.moveState = 1;
		var telopText = this.vmLines[this.vmIndex];
		this.currentElemObj = telopText;
		this.currentElm = $Element(telopText);

		//this._addEvent();

		this.currentElm.css("position","relative");
		this.currentElm.css("left",this.baseAreaElm.width()+"px");
this.currentElm.css("width","auto");

		this.listElm.append(this.currentElm);
		this._setMove();
	},
	restartVm : function(){
		this._setMove();
	},
	_setMove : function(){
		var moveFn = $Fn(function(){this._move()}, this).bind();
		this.intvID = setInterval(moveFn, 30);
	},
	_move : function(){
		var currentTop = parseInt(this.currentElm.css('left'));
		var newTop = currentTop - this.scrollPx;

		if(newTop < 0 && this.moveState == 1)newTop = 0;

		if(newTop == 0 && !this.pauseIntvID) {
			this.currentElm.css('left',newTop+'px')
			this.pause(2);
		}else if(newTop > -$Element($$('span',this.currentElemObj)[0]).width()){

			this.currentElm.css('left',newTop+'px')
		}else{
			clearInterval(this.intvID);
			this.vmIndex ++;
			if(this.vmIndex >= this.vmLines.length) {
      			this.vmIndex = 0;
   			}
			this._clearContent();
			this.startVm();
		}
	},
	_clearContent : function(){

		this.removeAllChild(this.listObj);
	},
	removeAllChild : function(node){
		while(node.hasChildNodes() ) {
			node.removeChild(node.lastChild);
		}
 	}

});



var Telop = $Class({
	_paused : false,
	$init : function(){

		var options = this.opt = this._getOptionSet( arguments[0] );
		this._base = $( options.id );

		if ( !this._base ) return;

		this.scrollAreaObj = $(this.opt.area);
		this.scrollAreaElm = $Element(this.scrollAreaObj);
		this.scrollAreaElm.css("position","relative");
		this.scrollAreaElm.css("overflow","hidden");

		this.telopLines;
		this.intvID;
		this.telopIndex = 0;
		this.scrollPx = this.opt.scrollPx;

		var telopTextDiv = $("<div>");
		this.telopTextDivObj = telopTextDiv;
		this.telopTextDivElm = $Element(telopTextDiv);
		this.telopTextDivElm.css("position","relative");
		this.telopTextDivElm.css("whiteSpace","nowrap");
		//this.telopTextDivElm.css("width","auto");
		this._addEvent();

		this._getTelopContent();
	},
	_getOptionSet : function(argu) {
		var option = {
			scrollPx : 1
		};
		if (typeof argu == "undefined") argu = new Object;
		for(var x in argu) option[x] = argu[x];
		return option;
	},
	_addEvent : function(){
		$Fn(this._onMouseover, this).attach(this.telopTextDivElm, "mouseover");
		$Fn(this._onMouseout, this).attach(this.telopTextDivElm, "mouseout");
	},
	_onMouseover : function(e){
		// console.log(e);
		if(!this._paused) this.pause();
	},
	_onMouseout : function(e){
		if(this._paused) this.resume();
	},
	pause : function(){
		this._paused = true;
		window.clearTimeout(this.intvID);
	},
	resume : function(){
		this._paused = false;
		this.restartTelop();
	},
	_getTelopContent : function(){
		 var lines = this.scrollAreaObj.getElementsByTagName('span');
		 var telopLines = new Array();
		for( var i=0; i<lines.length; i++ ) {
			var line = lines.item(i).innerHTML;
			telopLines.push(line);
		}
		this.telopLines = telopLines;
		this._clearContent();
		this.scrollAreaElm.append(this.telopTextDivObj);
		this.scrollAreaElm.show();
		this.startTelop();
	},
	startTelop : function(){
		var telopText = this.telopLines[this.telopIndex];
		//this._clearContent();

		this.telopTextDivObj.innerHTML=telopText;
		//console.log(this.telopTextDivObj.offsetWidth);
		this.telopTextDivElm.css("left",this.scrollAreaElm.width()+"px");
		var moveFn = $Fn(function(){this._move()}, this).bind();
		this.intvID = setInterval(moveFn, 30);
	},
	restartTelop : function(){
		var moveFn = $Fn(function(){this._move()}, this).bind();
		this.intvID = setInterval(moveFn, 30);

	},
	_move : function(){
		var currentLeft = parseInt(this.telopTextDivObj.style.left);
		var newLeft = currentLeft - this.scrollPx;

		if(newLeft + this.telopTextDivObj.offsetWidth > 0) {
			this.telopTextDivObj.style.left = newLeft + 'px';
		}else{
			clearInterval(this.intvID);
			this.telopIndex ++;
			if(this.telopIndex >= this.telopLines.length) {
      			this.telopIndex = 0;
   			}
			this.startTelop();
		}
	},
	_clearContent : function(){
		this.removeAllChild(this.scrollAreaObj);
		/*while(this.scrollAreaObj.hasChildNodes()) {
			console.log("-----");
			console.log(this.scrollAreaObj.lastChild);
			console.log("-----");
			this.scrollAreaObj.removeChild(this.scrollAreaObj.lastChild);
		}*/
	},
	removeAllChild : function(node){
		while(node.hasChildNodes() ) {
			node.removeChild(node.lastChild);
		}
 	}
/*	_excWhiteChild : function(node) {
 		var array = new Array();
		if( !node ) { return array; }
		if( !node.hasChildNodes() ) { return array; };
		var children = node.childNodes;

		for( var i=0; i<children.length; i++ ) {
			var c = children.item(i);
			if(c.nodeType == 3) {
				var text = c.nodeValue;
				if( ! text.match("/[^\s\t\n\r]/") ) {
					continue;
				}
			}
		}
    array.push(c);
  }*/
});

//SpotDeck.js
var FsolSpotDeck=$Class({
	$init : function(){
		var options = this.opt = this._getOptionSet( arguments[0] );
		this._base = $( options.id );

		if ( !this._base ) return;

		//default type
		this.type = 'image';
		this.loadingImgPath = '../img-top/close.gif';
		this.elGetCollectionItemIframe = $( 'getCollectionItemIframe' );



		this.aClass = this.opt.aClass;
		this.bodyElm = $Element(document.body);
		this.loadFnAry = new Array();
		this._addEvent();
	},
	_getOptionSet : function(argu) {
		var option = {};
		if (typeof argu == "undefined") argu = new Object;
		for(var x in argu) {
				option[x] = argu[x];
		}
		return option;
	},
	_addEvent : function(){
		switch( this.opt.layerType ){
			case 'playerbook':
				$Fn(this.dispPlayerbook,this).attach($$('.playersSct .btn a'),"click");
				break;
			default:
				$Fn(this.disp,this).attach($$('#' + this.opt.id + ' a'),"click");
				break;
		}
		$Fn(this.close,this).attach($$('#' + this.opt.layerId + ' .sdjs_close'),"click");
	},
	disp : function(e){
		e.stop();
		var rel = e.currentElement.rel;
		if(!rel) return;
		var json = $Json(rel).$value().data[0];
		this._makeLayerHTML(json);
	},
	dispPlayerbook : function(e){
		e.stop();
		if(!getLoginStatus()){
			alert('ログインしてください。');
			return;
		}
		var rel = e.currentElement.rel;
		if(!rel) return;
		var json = $Json(rel).$value();
		this._makeLayerHTML(json);
	},
	_getLayerHTML : function(){
		var layer = $(this.opt.layerId);
		document.body.removeChild(layer);
		return layer;
	},
	_makeLayerHTML : function(json){
		if(!json) return;

		if(json.type)this.type = json.type;

		var layer = $(this.opt.layerId);

		switch( this.opt.layerType ){
			case 'playerbook':
				layer.innerHTML = '';
				var sTeamLogoPath = this.sImageServerPath + this.htMissionFilenameMap[json.team];
				var aMissions     = json.mission;
				$A( aMissions ).forEach(function( mission, i ){
					var elLI = $( '<li>' );
					var htmlcode = '';
					htmlcode += '<p class="emblem"><img src="' + sTeamLogoPath + '" alt="" width="89" height="89" /></p>';
					htmlcode += '<p class="mission"><strong>ミッションNo.00'+ (i+1) +'</strong>'+ mission.mission_title +'</p>';
					htmlcode += '<p class="item"><img src="'+ mission.prize_imgpath +'" alt="" width="50" height="50" />'+ mission.prize_title +'</p>';
					htmlcode += mission.is_cleared	? ('<p class="btn"><a href="#" onclick="oFsolSpotDeck.getCollectionItem(' + "'" + mission.prize_url + "'" + '); return false;"><img class="_rollOver" src="" alt="アイテムGET" /></a></p>')
													: ('<p class="btn"><img src="" alt="アイテムGET" /></p>');
					$Element( elLI ).html( htmlcode );
					$Element( layer ).append( elLI );
					elLI = null;
				});
				new rollOverImage({ id : this.opt.layerId, imgOn : "_on" });
			break;

			default:
				if(json.title)$Element($$('#'+this.opt.layerId + ' .sdjs_title')[0]).html(json.title);
				if(json.no)$Element($$('#'+this.opt.layerId + ' .sdjs_no')[0]).html(json.no);
				if(json.caption) $Element($$('#'+this.opt.layerId + ' .sdjs_caption')[0]).html(json.caption);

				if (this.type == 'image') {
					this.imgTagAry = $$('#' + this.opt.layerId + ' .sdjs_image');
					var loadingTagAry = $$('#' + this.opt.layerId + ' .sdjs_loading');
					var image = json.image;

					if (typeof image != 'object')image = [image];

					for (var i = 1; i <= image.length; i++) {
						this.loadFnAry[i - 1] = $Fn(function(e){
							this._imgLoaded(e);
						}, this).attach(this.imgTagAry[i - 1], "load");
						this.imgTagAry[i - 1].src = image[i - 1];
					}
				}

				if(this.type == 'flash'){
					var sp = new SwfPutter({src:json.swf, w:json.w, h:json.h, fp:"8.0.22"});
					if(json.addVars) sp.addVars(json.addVars);
					sp.put('sdjs_movie');
				}
			break;
		}

		this._disp();
 	},
	getCollectionItem : function( sURL ){
		$Element( this.elGetCollectionItemIframe ).attr( 'src', sURL );
	},
 	_imgLoaded : function(e){
		var num = (e.currentElement.parentNode.className).replace('sdjs_image','');
		this.loadFnAry[num-1].detach(this.imgTagAry[num - 1], "load");
 		$Element(e.currentElement.nextSibling).hide();
 	},
 	_disp : function(){
		var layerElem = $Element(this.opt.layerId);
 		layerElem.css({"zIndex":"99999","position":"absolute"});
 		this._setElmCenter($(this.opt.layerId));

		layerElem.show();

 		this._mask();
 		this._closeBtn();

		$A($$('select')).forEach(function(v,i){
			$Element(v).hide();
		})
 	},
 	_closeBtn : function(){
 		var btn = $('<div>');
 		btn.id='sdjs_layClose';

 		var btnElem = $Element(btn);

 		var btnImage = $('<img>');
 		btnImage.src = this.loadingImgPath;
 		$Element(btnImage).css('cursor','pointer');
 		btnElem.append(btnImage);

 		btnElem.css('position','absolute');

 		this._setLayerCloseBtnPos(btnElem);

 		this.bodyElm.append(btn);

 		$Fn(this.close, this).attach(btnElem, "click");
 	},
	_setLayerCloseBtnPos : function(elem){
		var st = document.documentElement.scrollTop || document.body.scrollTop;
 		var sl = document.documentElement.scrollLeft || document.body.scrollLeft;

		elem.css("top",(st + 17)+"px");

 		var pSize = this._getPageSize();
 		elem.css("left",$Element('sdjs_mask').width() - 57+"px");
 		elem.css("zIndex","99998");
	},
 	_mask : function(){
		var mask = $("<div>");
		mask.id = 'sdjs_mask';

		var maskElem = $Element(mask);
		maskElem.css({"position":"absolute","left":"0px","top":"0px","width":"100%","height":(this._getPageSize()[1]+0)+"px","zIndex":"99997"})
		$Element(document.body).append(mask);

		var maskResize = function(){
			$Element(mask).css("width","100%");
			$Element(mask).css("height",(this._getPageSize()[1]+0)+"px");
			this._setElmCenter($(this.opt.layerId));
			this._setLayerCloseBtnPos($Element('sdjs_layClose'));
		};

		this.resizeFn = $Fn(maskResize, this).attach(window, "resize");
		$Fn(this._maskClick, this).attach(maskElem, "click");
	},
	_maskClick : function(){
		this.close();
	},
	close : function(){
		var maskObj = $('sdjs_mask');
		var layerCloseObj = $('sdjs_layClose');

		if(maskObj) maskObj.parentNode.removeChild(maskObj);
		if(layerCloseObj) layerCloseObj.parentNode.removeChild(layerCloseObj);

		$Element(this.opt.layerId).hide();
		this._clearLayer();

		if(this.resizeFn)this.resizeFn.detach(window, "resize");

		$A($$('select')).forEach(function(v,i){
			$Element(v).show();
		})
	},
	_clearLayer : function(){

		if($$('#'+this.opt.layerId + ' .sdjs_title')[0])$Element($$('#'+this.opt.layerId + ' .sdjs_title')[0]).html('');
 		if($$('#'+this.opt.layerId + ' .sdjs_no')[0]) $Element($$('#'+this.opt.layerId + ' .sdjs_no')[0]).html('');
 		if($$('#'+this.opt.layerId + ' .sdjs_caption')[0]) $Element($$('#'+this.opt.layerId + ' .sdjs_caption')[0]).html('');

		$A($$('#'+this.opt.layerId + ' .sdjs_image')).forEach(function(v,i){
			v.src = '';
			//$Element(v).css('zIndex',100000+i);
		})

		$A($$('#'+this.opt.layerId + ' .sdjs_loading')).forEach(function(v,i){
			$Element(v).show();
			//$Element(v).css('zIndex',10000+i);
		})

		if(this.type == 'flash') $Element('sdjs_movie').html('');

	},
 	_setElmCenter : function(elm){
		elm = $Element(elm);

		var wSize = this._getWindowSize();
		var pSize = this._getPageSize();
		var cSizeObj = this._getContentSize(elm);

		var st = document.documentElement.scrollTop || document.body.scrollTop;
		var sl = document.documentElement.scrollLeft || document.body.scrollLeft;
		elm.css({left:'0px',top:'0px'});
		elm.css({left:parseInt(pSize["2"]/2-cSizeObj["w"]/2 + sl)+"px",top:parseInt(pSize["3"]/2-cSizeObj["h"]/2 + st) + "px"});
	},
	_getPageSize : function(){

		var xScroll,yScroll;

		if(document.compatMode && document.compatMode != "BackCompat"){
			//Standard
			xScroll = document.documentElement.scrollWidth;
			yScroll = document.documentElement.scrollHeight;
		}else{
			//Quirks
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		}

		var windowWidth, windowHeight;
		if (self.innerHeight) {
			windowWidth = self.innerWidth;
			windowHeight = self.innerHeight;
		} else if (document.compatMode && document.compatMode != "BackCompat") {
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else{
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}

		var pageHeight = Math.max(windowHeight,yScroll);
		var pageWidth = Math.max(windowWidth,xScroll);

		arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
		return arrayPageSize;
	},
	_getContentSize : function(elm){

		elm = $Element(elm);

		if(elm.css('display') == 'none'){
			elm.css('visibility','hidden');
			elm.show();
			var hideFlg = true;
		}

		var w = elm.width();
		var h = elm.height();
		if(hideFlg){
			elm.hide();
			elm.css('visibility','visible');
		}

		return {w:w, h:h};
	},
	_getWindowSize : function(){
		var wSize = new Object();
		if($Agent().navigator().ie) {
			wSize.w = document.documentElement.clientWidth;
			wSize.h = document.documentElement.clientHeight;
		} else {
			wSize.w = window.innerWidth;
			wSize.h = window.innerHeight;
		}

		return wSize;
	}

});



// SpotDeck ss.js
var SpotDeck = $Class({

	$init : function(){
		var options = this.opt = this._getOptions(arguments[0]);

		this.active = null;
		this.thumbHrefAry = new Array();
		this.thumbSrcAry = new Array();
		this.thumbObjAry = new Array();
		this.ssObjAry = new Array();
		this.navThumbObjAry = new Array();

		this.animID = 'ssuianimated';

		this.ssImgObj = null;
		this.easeItvID = null;
		this.currentIndex = null;
		this.moving = false;
		this.thumbObj = $(this.opt.thumbID);
		this._setThumbEvent();
		this._easeS = 3;
		this._animated = this.opt.animated;
		this.bodyElm = $Element(document.body);
	},

	_getOptions : function(param){
		var option = {
				animated : false,
				close : true
			};
		if (typeof param == "undefined") param = new Object;
		for(var x in param) option[x] = param[x];
		return option;
	},

	_setThumbEvent : function(){
		this.thumbObjAry = $$("li a", this.thumbObj);
		var onThumbClickFn = $Fn(this.onThumbClick, this).bind();
		var _this = this;

		$A(this.thumbObjAry).forEach(
			function(v, i){
				_this.thumbSrcAry.push($$("img", v)[0].src);
				_this.thumbHrefAry.push(v.href);
				$Fn(onThumbClickFn, _this).attach(v, "click");
			}
		);
		this._preLoad(this.thumbHrefAry);
	},

	_preLoad : function(hrefAry){
		var _this = this;
		$A(hrefAry).forEach(
			function(v, i){
				 var imgObj = new Image();
				 imgObj.src = v;
				 _this.ssObjAry.push(imgObj);
			}
		);
	},

	onThumbClick : function(e){
		e.stop();

		if(this.moving) return;

		if($(this.opt.layerID)){
			//2回目以降
			if($Element($(this.opt.layerID)).css('display') != 'block'){
				//非表示中
				this._chgLayerVis(false);
				this._chgImg($A(this.thumbHrefAry).indexOf(e.currentElement.href));
				this._setLayer();
				if(this.opt.animated)this._openAnimation(e); else this._fadeinLayer();
				return;
			}else{
				//表示中
				this._chgImg($A(this.thumbHrefAry).indexOf(e.currentElement.href));
				return;
			}
		}
		//初回
		this._makeLayerTag($A(this.thumbHrefAry).indexOf(e.currentElement.href));
		if(this.opt.animated) this._openAnimation(e); else this._fadeinLayer();
	},

	_openAnimation : function(e){
		clearInterval(this.easeItvID);
		var targetPosObj = this._getPosition($(this.opt.layerID));
		var targetSizeObj = this._getContentSize($(this.opt.layerID));

		var posObj = this._getPosition(e.element);
		var sizeObj = this._getContentSize(e.element);

		var frameDiv = $('<div>');
		$Element(frameDiv).css('zIndex',99998);
		frameDiv.id = this.animID;

		this.bodyElm.append(frameDiv);

		frameDivElm = $Element(frameDiv);

		frameDivElm.css('top',posObj.y+"px");
		frameDivElm.css('left',posObj.x+"px");

		frameDivElm.css('width',sizeObj.w+"px");
		frameDivElm.css('height',sizeObj.h+"px");

		this.easeItvID = setInterval($Fn(function(){this._ease(targetPosObj,targetSizeObj,'open')}, this).bind(),10);
		this._chgMovingFlg(true);
	},

	_closeAnimation : function(){
		var thumbImgObj = $$('img',this.thumbObjAry[this.currentIndex])[0];
		var posObj = this._getPosition(thumbImgObj);
		var sizeObj = this._getContentSize(thumbImgObj);

		this.easeItvID = setInterval($Fn(function(){this._ease(posObj,sizeObj,'close')}, this).bind(),10);
		this._chgMovingFlg(true);
	},

	_closeEnd : function(){
		this.ssImgObj.src = '';
		this._chgMovingFlg(false);
	},

	_ease : function(tp,ts,type){

		var animObj = $(this.animID);
		var animElm = $Element(this.animID);

		var newPosY = Math.ceil(parseInt(animElm.css('top'))+(tp.y-(parseInt(animElm.css('top'))))/this._easeS);
		var newPosX = Math.ceil(parseInt(animElm.css('left'))+(tp.x-(parseInt(animElm.css('left'))))/this._easeS);

		var w = (ts.w-this._getContentSize(animObj).w)/this._easeS;
		var h = (ts.h-this._getContentSize(animObj).h)/this._easeS;

		if(w < 0) w = Math.ceil(Math.abs(w))*-1;
		if(h < 0) h = Math.ceil(Math.abs(h))*-1;

		var newSizeW = Math.ceil(this._getContentSize(animObj).w+w);
		var newSizeH = Math.ceil(this._getContentSize(animObj).h+h);

		animElm.css("top", newPosY + "px");
		animElm.css("left", newPosX + "px");

		animElm.css("width", newSizeW + "px");
		animElm.css("height", newSizeH + "px");

		var cSizeObj = this._getContentSize(animObj);

		if(Math.abs(cSizeObj.w-ts.w) <= 2 && Math.abs(cSizeObj.h-ts.h) <= 2){
			clearInterval(this.easeItvID);
			animElm.css("top", tp.y + "px");
			animElm.css("left", tp.x + "px");
			animElm.css("width", ts.w + "px");
			animElm.css("height", ts.h + "px");
			if(type == 'close'){
				this._removeAnim();
				this._chgMovingFlg(false);
			}else if(type == 'open'){
				this._fadeinLayer();
			}
		}
	},

	_removeAnim : function(){
		document.body.removeChild($('ssuianimated'));
	},

	_hideAnim : function(){
		this._chgMovingFlg(false);
		$Element('ssuianimated').hide();
	},

	_getPosition : function(el)	{
		var p = { x: el.offsetLeft, y: el.offsetTop };
		while (el.offsetParent)	{
			el = el.offsetParent;
			p.x += el.offsetLeft;
			p.y += el.offsetTop;
			if (el != document.body && el != document.documentElement) {
				p.x -= el.scrollLeft;
				p.y -= el.scrollTop;
			}
		}
		return p;
	},

	_setActiveThumb : function(num){
		$A(this.navThumbObjAry).forEach(
			function(v, i){
				$Element(v).removeClass('active');
			}
		);
		$Element(this.navThumbObjAry[num]).addClass('active');
	},

	_setLayerPos : function(elm){
		this._setElmCenter(elm);
	},

	_setElmCenter : function(elm){
		elm = $Element(elm);

		var wSize = this._getWindowSize();
		var pSize = this._getPageSize();
		var cSizeObj = this._getContentSize(elm);

		var st = document.documentElement.scrollTop || document.body.scrollTop;
		var sl = document.documentElement.scrollLeft || document.body.scrollLeft;
		elm.css({left:'0px',top:'0px'});
		elm.css({left:parseInt(pSize["2"]/2-cSizeObj["w"]/2 + sl)+"px",top:parseInt(pSize["3"]/2-cSizeObj["h"]/2 + st) + "px"});
	},
	_getPageSize : function(){

		var xScroll,yScroll;

		if(document.compatMode && document.compatMode != "BackCompat"){
			//Standard
			xScroll = document.documentElement.scrollWidth;
			yScroll = document.documentElement.scrollHeight;
		}else{
			//Quirks
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		}

		var windowWidth, windowHeight;
		if (self.innerHeight) {
			windowWidth = self.innerWidth;
			windowHeight = self.innerHeight;
		} else if (document.compatMode && document.compatMode != "BackCompat") {
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else{
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}

		var pageHeight = Math.max(windowHeight,yScroll);
		var pageWidth = Math.max(windowWidth,xScroll);

		arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
		return arrayPageSize;
	},
	_getContentSize : function(elm){
		elm = $Element(elm);
		var w = elm.width();
		var h = elm.height();
		return {w:w, h:h};
	},

	_getWindowSize : function(){
		var wSize = new Object();
		if($Agent().navigator().ie) {
			wSize.w = document.documentElement.clientWidth;
			wSize.h = document.documentElement.clientHeight;
		} else {
			wSize.w = window.innerWidth;
			wSize.h = window.innerHeight;
		}

		return wSize;
	},

	_chgImg : function(e){
		if(typeof(e) == 'object'){
			e.stop();
			//blur();
			$(this.opt.layerID).focus();
			var ssIndex = $A(this.thumbHrefAry).indexOf(e.currentElement.href);
		}else{
			var ssIndex = e
		}

		this.ssImgObj.src = this.ssObjAry[ssIndex].src;
		this._setActiveThumb(ssIndex);
		this.currentIndex = ssIndex;
	},

	_makeLayerTag : function(num){
		var rootDiv = $('<div>');
		rootDiv.id = this.opt.layerID;
		var rootDivElm = $Element(rootDiv);

		var ssImgDiv = $('<div>');
		ssImgDiv.className = 'ssImgDiv';

		var ssImg = $('<img>');

		ssImg.className = 'ssImg';
		ssImg.border = 0;
		ssImg.alt = '';
		ssImg.width = this.opt.width;
		ssImg.height = this.opt.height;


		this.ssImgObj = ssImg;

		$Element(ssImgDiv).append($Element(ssImg));

		rootDivElm.append($Element(ssImgDiv));

		var navDiv = $('<div>');
		navDiv.className = 'ssNav';
		var navDivElm = $Element(navDiv);

		var navUl = $('<ul>');
		navUl.className = 'ssThumbList';
		var navUlElm = $Element(navUl);

		var _this = this;
		$A(this.thumbHrefAry).forEach(
			function(v, i){
				var navLi = $('<li>');
				var navLiElm = $Element(navLi);

				var navA = $('<a>');
				var navAElm = $Element(navA);
				navA.className = 'ssthumb';
				navA.href = v;

				$Fn(_this._chgImg, _this).attach(navA, 'click');

				var navImg = $('<img>');
				navImg.src =_this.thumbSrcAry[i];
				navImg.border = 0;
				navImg.alt = '';

				_this.navThumbObjAry.push(navA);

				navAElm.append($Element(navImg));
				navLiElm.append(navAElm);
				navUlElm.append(navLiElm);
			}
		);

		$Element(navDiv).append(navUlElm);
		rootDivElm.append(navDivElm);

		var closeDiv = $('<div>');
		var closeDivElm = $Element(closeDiv);
		closeDiv.className = 'ssClose';
		closeDivElm.css('cursor','pointer');
		closeDiv.href = '#';
		closeDivElm.text('close');
		$Fn(this.closeLayer, this).attach(closeDiv, 'click');
		rootDivElm.append($Element(closeDiv));

		this._chgImg(num);

		this.bodyElm.append(rootDiv);
		$Element($(this.opt.layerID)).css('zIndex',99999);

		this._chgLayerVis(false);
		this._setLayer();
	},

	closeLayer : function(e){
		e.stop();
		if(this.moving) return;

		if(this._animated){
			$Element('ssuianimated').show();
			$Element(this.opt.layerID).disappear(0.05,$Fn(function(){this._closeAnimation()}, this).bind());

		}else{
			//$Element(this.opt.layerID).disappear(0.05,$Fn(function(){this._closeEnd()}, this).bind());

			$Element(this.opt.layerID).hide();
			this._closeEnd();
		}

		if(this.clFn){
			this.clFn.detach(document, "click");
			this.clFn = null
		}

		this.resizeFn.detach(window,'resize');
	},

	_setLayer : function(e){
		if($(this.opt.layerID)){
			$Element(this.opt.layerID).show();
			this._setLayerPos($(this.opt.layerID));
			if(this.opt.close){
				this.clFn = $Fn(this.closeLayer, this).attach(document, 'click');
				$Fn(this._layerClick, this).attach($Element(this.opt.layerID), "click");
			}
			this.resizeFn = $Fn(this._resize, this).attach(window, 'resize');
		}
	},

	_resize : function(){
		this._setLayerPos($(this.opt.layerID));
	},

	_chgMovingFlg : function(flg){
		this.moving = flg;
	},

	_fadeinLayer : function(){
		this._chgLayerVis(true)
	//	$Element(this.opt.layerID).opacity(0);
	//	var fnc = $Fn(this._hideAnim,this).bind();
	//	var cmp = $Fn(this._animComplete,this).bind();
	//	if(this._animated) $Element(this.opt.layerID).appear(0.05,fnc); else $Element(this.opt.layerID).appear(0.1,cmp);

		$Element(this.opt.layerID).show();
		this._animComplete();
	},

	_animComplete : function(){
		this._chgMovingFlg(false);
	},

	_chgLayerVis : function(flg){
		var state;
		(flg)? state = 'visible': state = 'hidden';
		$Element(this.opt.layerID).css('visibility',state);
	},

	_getthumbSize : function(elm){
		return {w:elm.width(),h:elm.height()};
	},

	_layerClick : function(e){
		e.stop();
	}
});

// PlayerBox.js
var PlayerBox = $Class({
	$init: function(){
		this.opt = this._getOptions(arguments[0]);

		this.url = this.opt.url;
		this.slElem = $Element('playerBoxSL');
		this.plElem = $Element('playerBoxPL');
	},
	_getOptions : function(param){
		var option = {};
		if (typeof param == "undefined") param = new Object;
		for(var x in param) option[x] = param[x];
		return option;
	},
	_addEvent : function(){

	},
	setCard : function(e,teamID){
		$Event(e).stop();
		var league;
		(teamID <= 6)?league = 'sl' : league = 'pl';
		this._reqData(league,teamID);
	},
	_reqData : function(league,teamID){

		var _this = this;
		var handleResponse = function(league,res){
			_this._setHTML(league,res);
		}

		var ajax = new $Ajax(this.url,{
			type:'post',
			onload:function(res){
				handleResponse(league,res);
			}
		});

		ajax.request({teamID:teamID});

	},
	_setHTML : function(league,res){
		eval('this.'+league+'Elem').html(res.text());
		setFsolSpotDeck(league);
	}
});


// maintenance page random
var RandomClass = $Class({
	$init : function(){
		var options = this.opt = this._getOptionSet( arguments[0] );
		this._base = $( options.id );

		if ( !this._base ) return;
		this.change();
	},
	_getOptionSet : function(argu) {
		var option = {
			id: null,
			cssName: []
		};
		if (typeof argu == "undefined") argu = new Object;
		for(var x in argu) option[x] = argu[x];
		return option;
	},
	change : function(){
		var cssArr = this.opt.cssName;
		var len = cssArr.length;
		var i = Math.floor(Math.random()*len);
		this._base.className = cssArr[i];
	}
});

