var bp_server    = "http://www.blogdeco.jp/eclipse2009/";
//var bp_server    = "./";
var shokubp_server = bp_server;
var shokubp = function(){
	// config
	var bpName          = "shokubp";
	var names           = ["Shoku","Sidebar"];
	var srcSwfs         = ["swf/Shoku.swf","swf/Nishoku.swf"];
	var swfSizes        = [["100%","100%"],["160px","145px"]];
	var idDivs          = [];
	var idSwfs          = [];
	var idEmbs          = [];
	var elDivs          = [];
	var elSwfs          = [];

	var lib             = "js/bp_common.js";

	// vars
	var b;	// bp_common
	var els = [];
	var targettime;
	var wsize;
	var interval = null;
	var maxtime  = 300;
	var timeleft = maxtime;

	for( var i=0; i<names.length; i++ ){
		idDivs[i] = "externalInterface_"+names[i]+"_div";
		idSwfs[i] = "externalInterface_"+names[i]+"_swf";
		idEmbs[i] = "externalInterface_"+names[i]+"_emb";
	}

	// sidebar
	document.write("<script type='text/javascript' charset='utf-8' src='"+shokubp_server+lib+"'></script>");
	document.write("<img src='http://log.kayac.com/cl/?rs=i&cm=bm1100016&ln=1' width='1' height='1' />");
	document.write("<object"+
				" classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'"+
				" codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0'"+
				" id='"+idSwfs[1]+"'"+
				" width= '"+swfSizes[1][0]+"' height='"+swfSizes[1][1]+"'>"+
				"<param name='movie' value='"+shokubp_server+srcSwfs[1]+"'>"+
				"<param name='quality' value='high'>"+
				"<param name='wmode' value='transparent'>"+
				"<param name='allowScriptAccess' value='always'>"+
				"<embed"+
				" name='"+idSwfs[1]+"'"+
				" src='"+shokubp_server+srcSwfs[1]+"'"+
				" quality='high' bgcolor='#000000'"+
				" width='"+swfSizes[1][0]+"' height='"+swfSizes[1][1]+"'"+
				" type='application/x-shockwave-flash'"+
				" align='middle'"+
				" wmode='transparent'"+
				" pluginspage='http://www.macromedia.com/go/getflashplayer'"+
				" allowScriptAccess='always' /></object>");

	var calcR = function(){
		wsize = bp_common.getWindowSize();
		return Math.floor(Math.sqrt(wsize[0]*wsize[0]+wsize[1]*wsize[1])*0.7);
	}

	var animation = function(){
		wsize = bp_common.getWindowSize();
		var scpos = bp_common.getScrollPosition();
		var s = elSwfs[0].style;
		var targetx = scpos[0] + wsize[0];
		var targety = scpos[1] + wsize[1];
		var diffx   = targetx - parseInt(s.left);
		var diffy   = targety - parseInt(s.top);

		s.left = Math.floor(parseInt(s.left)+diffx/timeleft)+"px";
		s.top  = Math.floor(parseInt(s.top )+diffy/timeleft)+"px";
		timeleft--;
		if( timeleft==0 ){
			shokubp.close();
		}
	}

	var startShoku = function(){
		timeleft = maxtime;
		wsize = bp_common.getWindowSize();
		var scpos = bp_common.getScrollPosition();
		var wh    = calcR()*2;
		elSwfs[0] = new bp_elementFactory(
			document.getElementsByTagName("body")[0],
			[ {"tag" : "div",
				"attr":{"id": idDivs[0] },
				"style":{
					"width"  :wh+"px",
					"height" :wh+"px",
					"left"   :(-wh+scpos[0])+"px",
					"top"    :(-wh+scpos[1])+"px",
					"display":"block"
				},
				"innerHTML":"<object"+
				" classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'"+
				" codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0'"+
				" id='"+idSwfs[0]+"'"+
				" width= '"+swfSizes[0][0]+"' height='"+swfSizes[0][1]+"'>"+
				"<param name='movie' value='"+shokubp_server+srcSwfs[0]+"'>"+
				"<param name='quality' value='high'>"+
				"<param name='wmode' value='transparent'>"+
				"<param name='allowScriptAccess' value='always'>"+
				"<embed"+
				" name='"+idSwfs[0]+"'"+
				" src='"+shokubp_server+srcSwfs[0]+"'"+
				" quality='high' bgcolor='#FFFFFF'"+
				" width='"+swfSizes[0][0]+"' height='"+swfSizes[0][1]+"'"+
				" type='application/x-shockwave-flash'"+
				" align='middle'"+
				" wmode='transparent'"+
				" pluginspage='http://www.macromedia.com/go/getflashplayer'"+
				" allowScriptAccess='always' /></object>"
		} ]);
		interval = setInterval( animation, 30 );
	}

	var addListener = function(element, name, observer, useCapture){
		if (element.addEventListener) {
			element.addEventListener(name, observer, useCapture);
		} else if (element.attachEvent) {
			element.attachEvent('on' + name, observer);
		}
	}
	var load = function(){
		if( typeof(bp_common)=="undefined" ){ return; }
		if( bp_common.getCookie('shokubp_shown') ){ return; }
		bp_common.setCookie('shokubp_shown',1,360);

		startShoku();
	}
	addListener( window, 'load', load, false );

	return {
		forceStart : function(){
			startShoku();
		},
		close : function(){
			setTimeout( function(){
				document.body.removeChild( elSwfs[0] );
			},0);
			if( interval!=null ){
				clearInterval(interval);
				interval = null;
			}
		}
	};
}();
