	var players;
var playerboxes = new Array();
var nickname;

var domain = "http://scuba.campingcardisc.com/scuba365/";
function checkPlayers(){
	new Ajax.Request(domain, {
	        method: "post",
	        onSuccess: buildPlayers,
		onFailure: alertPlayers,
		requestHeaders: ['If-Modified-Since','Wed, 15 Nov 1995 00:00:00 GMT']
	});
}

function buildPlayers(XMLHttpRequest){
try{
	if(XMLHttpRequest.responseText != null && XMLHttpRequest.responseText.strip() != ""){
		try{
			eval("var obj =" + XMLHttpRequest.responseText);
		}catch(e){
			alert(e);
		}
	}else{
		noPlayers();
		return;
	}
	players = obj;

	var keys = Object.keys(players);
	if(keys.length == 0){
		noPlayers();
	}

	for(var i = 0;i<keys.length;i++){
		var key = keys[i];
		if($("pp" + key) == undefined ){	
			var div = document.createElement("div");
			div.id="pp" + key;
			div.className="deck";
			div.innerHTML = players[key] + "<div>"+key +"</div>";
			$("players").appendChild(div);
			playerboxes.push(div);
		}
	}
	checkDelete();
}catch(e){
	alert(e);
}

}

function checkDelete(){
	//もし現在のサーバーにデータが無くて、ボックスが残っている場合は強制的に削除
	var keys = Object.keys(players);
	var restboxes = playerboxes.without(keys);
	for(var i = 0;i<restboxes.length;i++){
		var rest = restboxes[i];
		if($("pp" + rest) != undefined && $("pp" +rest) != null){
			Element.remove($("pp" + rest));
		}
	}
	//もしnicknameが同じ場合、もしくはscubaでログインしている場合、boxにdeleteボタンを追加
//一旦保留
/*
	var keys = Object.keys(players);
	for(var i = 0;i<keys.length;i++){
		var key = keys[i];
		if(nickname == key || nickname == "scuba"){
			//もう追加されている場合は無視
			if($("pp" + key).lastChild.tagName!="input"){
				$("pp" + key).innerHTML = $("pp" + key).innerHTML + "<input type='button' onclick='deletePlayer(this)' id='delete" + key + "' value='delete' >";
			}

		}
	}
*/
}

function alertPlayers(){
	alert("サーバーに接続できません");
	noPlayers();
}

function noPlayers(){
	$("players").innerHTML = "no players";
}

function startPlay(){
	Effect.BlindDown("playform",{duration:1.0});
	$("nick").innerHTML = nickname;
}

function cancelPlay(){
	Effect.BlindUp("playform",{duration:1.0});


}


function startsubmit(){
	var embed = $("embed").value;
	if(embed.search(/\<embed/) == -1){
		alert("正しいembedコードを入力してください")
	}

	new Ajax.Request(domain + "add", {
	        method: "post",
		postBody: $H({nick:nickname,embed:$("embed").value}).toQueryString(),
	        onSuccess: checkPlayers,
		onFailure: alertPlayers,
		requestHeaders: ['If-Modified-Since','Wed, 15 Nov 1995 00:00:00 GMT']
	});
	alert("画面に表示されるまで少し時間がかかります・・・ごゆるりと");
}

function deletePlayer(key){
	//deleteの文字を取り除く
	var delkey = key.id.slice(6);
	new Ajax.Request(domain + "delete", {
	        method: "post",
		postBody:$H({nick:delkey}).toQueryString(),
	        onSuccess: checkPlayers,
		onFailure: alertPlayers,
		requestHeaders: ['If-Modified-Since','Wed, 15 Nov 1995 00:00:00 GMT']
	});
}




function usernameset(){
	
	var name = $("usernametext").value;
	nickname = name;
	if(name == ""){
		alert("名前を入力してください");
		return;
	}
	Effect.DropOut("nameform",{duration:1.0});
	$("usernamelabel").innerHTML = name;
//	$("startlabel").show();
	Effect.Appear("saybox",{duration:3.0});
	lingr.setNickname(name);
//	checkDelete();

}

function clearvalue(input){
	var text = input.value;
	if(text == "名前を入力してください"){
		input.value="";
	}
}

function marquee(id,name,text){
	if(!$("messageScroll").checked) return;

	if(text.search(/\<embed/i) != -1 || text.search(/\<object/i) != -1){
		var win = new Window({
			id: "window" + id,
			className: "alphacube", 
			title: "by " + name, 
                      top:150, //left:100, 
		      width:500, height:350,
		       destroyOnClose:true,
                      showEffect:Effect.Appear, hideEffect: Effect.Fade, draggable:true, wiredDrag: true});
		win.getContent().innerHTML = text;
		win.setZIndex(100);
		win.show();   
		return;                                         

	}
	var height = (Math.random()*300) + 150;
	var html = "<div style='position:absolute;top:" +height+ "px;left:0px;width:100%;z-index:500;'><div id='marquee"+ id + "'   width='100%' style='z-index:500;'>" +text + "   by "+ name +"</div></div>";
	$('marqueecanvas').innerHTML= $('marqueecanvas').innerHTML + html;
	
	new Marquee('marquee' + id,{amount:10,delay:50});
}

var premarquee;

var Marquee = function ( id, opt ){
    if( ! document.getElementById(id) ) throw 'invalid id. [' + id + ']';
    var option = opt || {};
    this.id     = id;
    this.amount = option.amount || 6;
    this.delay  = option.delay  || 70;
    this.time=0;
    this.position = Number.POSITIVE_INFINITY; // means out of range.
    this._wrap();
    this.start();
}
Marquee.prototype = {
    /* wrap child nodes */
    _wrap : function() {
        var t = document.getElementById( this.id );
        with ( t.style ){
            position = 'relative'; // for ie6.
            overflow = 'hidden';
        }
        var w = document.createElement( 'div' );
        with ( w.style ){
            margin     = '0';
            padding    = '0';
            background = 'transparent';
            border     = 'none';
        }
        t.normalize();
        while( t.firstChild ){
            w.appendChild( t.removeChild( t.firstChild ) );
        }
        t.appendChild(w);
        /* get minimum width. */
        w.style.position = 'absolute';
        this.minWidth = w.offsetWidth;
        /* put back */
        w.style.position = 'relative';
        w.style.width = '100%'; // for ie6.
    },
    start : function() {
        this.stop();
        this._next();
    },
    _next : function() {
        var t = document.getElementById( this.id );
        this.curWidth = Math.min(t.offsetWidth,t.parentNode.offsetWidth); // dirty. (for "overflow:hidden" parent)
        this.position = this.position - this.amount;
        if ( this._isOutOfRange() ){
		if(this.time == 0){
		//１回目のみ再生
	            	this.position = this._startPosition();
			this.time++;
		}else{
		//再生が終了したら取り除く
			Element.remove(t);
			return;
		}
	   	
	
        }
        var w = t.firstChild;
        w.style.left = this.position + 'px';
        var self = this;
        this.tid = window.setTimeout(
            function(){ 
			self._next(); 	
		},
            this.delay
        );
    },
    _startPosition : function() {
        return ( this.amount > 0 ) ?  this.curWidth
                                   : -this.minWidth;
    },
    _isOutOfRange : function() {
        return this.position < -this.minWidth || this.curWidth < this.position;
    },
    stop : function() {
        if ( this.tid ) window.clearTimeout( this.tid );
        this.tid = null;
    },
    isMarqueeing : function() {
        return ( this.tid ) ? true : false;
    }
}
