/* Copyright(c) http://www.noma-soft.com/ */
SlideFactory={
	pluginName:"_slide",pluginLabel:"プレゼン",
	hasDialog:false,
	targets:[],
	setupCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		ctx.slideCtrl=new PluginListCtrl("slideCtrl","data-fields","",true);
		ctx.slideCtrl.serializer=new NmGroupSetSerializer();
		ctx.subCtrl=new SlideSubCtrl(ctrl);
		ctx.slideCtrl.bindSubCtrl(ctx.subCtrl);
		ctx.subCtrlCommand=new PluginSelCtrl("subCtrlCommand","subCtrlCommand","");
		ctx.subCtrlAction=new PluginSelCtrl("subCtrlAction","subCtrlAction","auto");
		ctx.subCtrlType=new PluginSelCtrl("subCtrlType","subCtrlType","base");
		ctx.subCtrlSlideNum=new PluginSelCtrl("subCtrlSlideNum","subCtrlSlideNum","base");
		ctrl.bindItem(this.pluginName,ctx.slideCtrl);
		ctrl.bindItem(this.pluginName,ctx.subCtrlCommand);
		ctrl.bindItem(this.pluginName,ctx.subCtrlAction);
		ctrl.bindItem(this.pluginName,ctx.subCtrlType);
		ctrl.bindItem(this.pluginName,ctx.subCtrlSlideNum);
		ctx.isSetup=true;},
	writeCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		var str="Slides:";str+=ctx.slideCtrl.write();
		return str;},
	createCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		return new Slide(ctrl);}
}
SlideFactory.serializer=new PaperGroupSetSerializer;

Slide=function(ctrl){
	this.ctrl=ctrl;this.initValue=ctrl.value;this.params=new Array;
	this.ctx=ctrl.getContext();
	this.subPlugin=new PaperPluginCtrl(ctrl.id+"_sub","","");
	this.subPlugin.isMainCtrl=false;
	this.ctx.subPlugin=this.subPlugin;
	this.subPlugin.listenEditor(ctrl);
	this.cid=0;this.slide=["","","",""];
}
Slide.prototype={
	init:function(){this.subPlugin.view=this.ctrl.view;this.subPlugin.init();
		if(this.initValue){this.deserialize(this.initValue);}
		else{this.deserialize("{:auto:base:}");}},
	importParam:function(params){
		this.params.splice(0,this.params.length);
		for(var idx=0;idx<params.length;idx++){this.params.push(params[idx]);}},
	exportParam:function(params){params.splice(0,params.length);
		for(var idx=0;idx<this.params.length;idx++){params.push(this.params[idx]);}},
	serialize:function(){var params=new Array;var str="";
		this.exportParam(params);str=SlideFactory.serializer.serialize(params);delete params;return str;},
	deserialize:function(str){var params=new Array;
		if(PaperPluginMgr.mode==PaperPluginMgr.editMode){this.ctx.slideCtrl.set(str);}
		SlideFactory.serializer.deserialize(params,str);this.importParam(params);delete params;},
	draw:function(){
		if(this.slide[2]!="hidden"){
			if(this.slide[2]=="base"){this.subPlugin.sendReleased();}
			this.subPlugin.selectPluginObject(this.slide[0],this.slide[3]);
			this.subPlugin.sendCaptured();}},
	loadSlide_:function(cid){
		if(this.params.length<=cid){return;}
		var param=this.params[cid];
		var pos1=param.indexOf(":",0); this.slide[0]=param.substring(0,pos1);
		var pos2=param.indexOf(":",pos1+1); this.slide[1]=param.substring(pos1+1,pos2);
		var pos3=param.indexOf(":",pos2+1); this.slide[2]=param.substring(pos2+1,pos3);
		this.slide[3]=param.substring(pos3+1);
		if(this.slide[0]=="_ref"){
			var cid2=parseInt(this.slide[3]);
			pos1=this.params[cid2].indexOf(":",0); this.slide[0]=this.params[cid2].substring(0,pos1);
			pos2=this.params[cid2].indexOf(":",pos1+1);
			pos3=this.params[cid2].indexOf(":",pos2+1);
			this.slide[3]=this.params[cid2].substring(pos3+1);}},
	pluginHandler:function(ev){
		if(PaperPluginMgr.mode==PaperPluginMgr.showMode){
			if(ev.type=="released"){
				this.ctrl.clearView();
				this.ctrl.showCanvas(false);
			}else if(ev.type=="captured"){
				this.cid=0;
				this.loadSlide_(this.cid);
				if(this.slide[1]=="auto"){this.draw();}
				this.ctrl.showCanvas(true);
			}
		}else{
			if(ev.type=="modify"){
				if(ev.pluginName==SlideFactory.pluginName){
					if(ev.target=="slideCtrl"){
						/*TODO:assign this.params slideCtrl */
					}else if((ev.target=="subCtrlAction")||(ev.target=="subCtrlType")){
						this.params[this.ctx.slideCtrl.getSubIndex()]=this.ctx.subCtrl.get();
						this.ctx.slideCtrl.saveSub();
					}else if(ev.target=="subCtrlCommand"){
						this.ctx.subCtrl.changePlugin();
						this.ctx.slideCtrl.saveSub();
						this.params[this.ctx.slideCtrl.getSubIndex()]=this.ctx.subCtrl.get();}
				}else{
					this.ctx.subPlugin.sendModify(this.ctx.subPlugin.pluginName,ev.target);
					this.ctx.slideCtrl.saveSub();
					this.params[this.ctx.slideCtrl.getSubIndex()]=this.ctx.subCtrl.get();
				}}}},
	viewerHandler:function(ev){
		if(PaperPluginMgr.mode==PaperPluginMgr.showMode){
			if(ev.type=="mouseout"){}
			if(ev.type=="mouseover"){}
			if(ev.type=="mousedown"){}
			if(ev.type=="mouseup"){}
			if(ev.type=="click"){
				if(this.slide[1]=="click"){
					if(this.slide[0]=="_loop"||this.slide[0]=="_jump"){
						if(this.slide[0]=="_loop"){this.cid=0;}
						else{this.cid=parseInt(this.slide[3]);}
						this.loadSlide_(this.cid);
						if(this.slide[1]=="auto"){this.draw();}}
					else{this.slide[1]="";this.draw();}}
			}else if(ev.type=="animationEnd"){
				if(this.cid<this.params.length-1){
					this.cid++;
					this.loadSlide_(this.cid);
					if(this.slide[1]=="auto"){
						if(this.slide[0]=="_loop"||this.slide[0]=="_jump"){
							if(this.slide[0]=="_loop"){this.cid=0;}
							else{this.cid=parseInt(this.slide[3]);}
							this.loadSlide_(this.cid);
							if(this.slide[1]=="auto"){this.draw();}}
						else{this.draw();}}}}}}
}

new NmArrSelCtrlClass("subCtrlAction",false,["auto","click"]);
new NmArrSelCtrlClass("subCtrlType",false,["base","layer","hidden"]);
new NmMapSelCtrlClass("subCtrlCommand",false,{"":"[command]",_ref:"参照",_loop:"繰り返し",_jump:"移動"});
new NmRangeSelCtrlClass("subCtrlSlideNum",false,0,20,1,"");


SlideSubCtrl=function(ctrl){
	this.ctrl=ctrl;
	this.lastPluginName="";//ctrl.pluginName;
	this.ctx=ctrl.getContextByName(SlideFactory.pluginName);}
SlideSubCtrl.setupSubCtrlCommandClass=function(){
	if(!this.isSetup){
		var cls=NmSelCtrl.classes["subCtrlCommand"];
		for(var pluginName in PaperPluginMgr.plugins){
			if(pluginName.charAt(0)!='_'){
				cls.patterns[pluginName]=PaperPluginMgr.plugins[pluginName].pluginLabel;}}
		this.isSetup=true;}
}
SlideSubCtrl.prototype={
	init:function(){},
	write:function(){
		SlideSubCtrl.setupSubCtrlCommandClass();
		var str="<br/>";
		str+=this.ctx.subCtrlCommand.write();
		str+=this.ctx.subCtrlAction.write();
		str+=this.ctx.subCtrlType.write();
		str+=this.ctx.subCtrlSlideNum.write();
		str+='<input type="text" style="display:none;" />';
		return str;},
	get:function(){
		var str=this.ctx.subCtrlCommand.get()+':';
		str+=this.ctx.subCtrlAction.get()+':';
		str+=this.ctx.subCtrlType.get()+':';
		str+=this.ctx.subPlugin.serialize();
		return str;},
	set:function(value){
		var cmd="";var act="auto";var type="base";var data="";
		if(value!=""){
			var pos1=value.indexOf(":",0); 
			cmd=value.substring(0,pos1);
			var pos2=value.indexOf(":",pos1+1);
			act=value.substring(pos1+1,pos2);
			var pos3=value.indexOf(":",pos2+1);
			type=value.substring(pos2+1,pos3);
			data=value.substring(pos3+1);
		}
		this.ctx.subCtrlCommand.set(cmd);
		this.ctx.subCtrlAction.set(act);
		this.ctx.subCtrlType.set(type);
		var subPlugin=this.ctrl.getContext().subPlugin;
		if(this.lastPluginName){subPlugin.showPluginEditor(this.lastPluginName,false);subPlugin.sendReleased();}
		if(cmd.charAt(0)!="_"){
			subPlugin.selectPluginObject(cmd,data);
			subPlugin.sendCaptured();
			subPlugin.showPluginEditor(cmd,true);
		}else{subPlugin.selectPluginObject("",null);}
		this.lastPluginName=cmd;
	},
	changePlugin:function(){
		var cmd=this.ctx.subCtrlCommand.get();
		var subPlugin=this.ctrl.getContext().subPlugin;
		if(this.lastPluginName){subPlugin.showPluginEditor(this.lastPluginName,false);subPlugin.sendReleased();}
		if(cmd.charAt(0)!="_"){
			subPlugin.selectPluginObject(cmd,"");
			subPlugin.sendCaptured();
			subPlugin.showPluginEditor(cmd,true);
		}else{subPlugin.selectPluginObject("",null);}
		this.lastPluginName=cmd;}
}

PaperPluginMgr.registerPlugin(SlideFactory.pluginName, SlideFactory);

/*http://www.noma-soft.com/*/
BarGraphFactory={
	pluginName:"bgraph",pluginLabel:"棒グラフ",
	hasDialog:true,dialogWidth:"640px",dialogHeight:"480px",
	targets:["items","x","y"],
	setupCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		ctx.items=new PluginListCtrl("items","data-fields","",false);
		ctx.x=new PluginTextCtrl("x","data-field","");
		ctx.y=new PluginTextCtrl("y","data-field","");
		ctx.dlg=new PluginDlgCtrl("",null);
		ctrl.bindItem(this.pluginName,ctx.items);
		ctrl.bindItem(this.pluginName,ctx.x);
		ctrl.bindItem(this.pluginName,ctx.y);
		ctrl.bindItem(this.pluginName,ctx.dlg);
		ctx.isSetup=true;},
	writeCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		var str="";str+=ctx.items.write();str+="<br />";
		str+="xラベル";str+=ctx.x.write();str+="yラベル";str+=ctx.y.write();
		str+=ctx.dlg.write();return str;},
	createCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		return new BarGraph(ctrl);}
}

BarGraph=function(ctrl){
	this.ctrl=ctrl;
	this.ctx=ctrl.getContext();
	this.graph=null;
	this.params=new Object;
	this.initValue=ctrl.value;
}
BarGraph.prototype={
	init:function(){
		if(this.initValue){this.ctrl.deserialize(this.initValue);}
		else{
			this.ctrl.importParam({
				items:"sample01,20,58,40,14,38,20,40#sample02,10,20,40,80,60,90,30#sample03,10,20,40,80,60,90,30#sample04,10,20,40,80,60,90,30#sample05,10,20,40,80,60,90,30",
				x:"曜日,日,月,火,水,木,金,土",
				y:"アクセス数"});}},
	draw:function(){
		var items=new Array;
		var params=new Object;
		this.ctrl.exportParam(this.params);
		for (var key in this.params){
			if(key=='items'){
				var dataList=this.params[key].split("#");
				for (var index=0;index<dataList.length;index++){
					var data=dataList[index].split(",");
					var itemElm=new Array;
					for(var index2=0;index2<data.length;index2++){
						if(index2==0){itemElm.push(data[index2]);}
						else{itemElm.push(parseInt(data[index2]));}}
					items.push(itemElm);}}
			else if((key=='x')||(key=='y')){params[key]=this.params[key].split(",");}
			else{params[key]=this.params[key];}}
		this.graph.draw(items,params);},
	pluginHandler:function(ev){
		if(ev.type=="reset"){
			this.init();
		}else if(ev.type=="released"){
			if(this.graph){
				this.ctrl.clearView();
				delete this.graph;
				this.graph=null;
				this.ctrl.showCanvas(false);}
		}else if(ev.type=="captured"){
			this.ctx.items.update();
			this.ctrl.showCanvas(true);
			this.graph=new html5jp.graph.vbar(this.ctrl.getCanvasId());
			this.draw();
			this.ctrl.view.sendAnimationEnd();
		}else if(ev.type=="modify"){
			this.ctrl.clearView();
			this.draw();}},
	viewerHandler:function(ev){
		if(ev.type=="mouseout"){;}
		if(ev.type=="mouseover"){;}
		if(ev.type=="mousedown"){;}
		if(ev.type=="mouseup"){;}
		if(ev.type=="click"){;}}
}

PaperPluginMgr.registerPlugin(BarGraphFactory.pluginName,BarGraphFactory);

CircleGraphFactory={
	pluginName:"cgraph",pluginLabel:"円グラフ",
	hasDialog:true,dialogWidth:"640px",dialogHeight:"480px",
	targets:["items"],
	setupCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		ctx.items=new PluginListCtrl("items","data-fields","",false);
		ctx.dlg=new PluginDlgCtrl("",null);
		ctrl.bindItem(this.pluginName,ctx.items);
		ctrl.bindItem(this.pluginName,ctx.dlg);
		ctx.isSetup=true;},
	writeCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		var str="";str+=ctx.items.write();str+=ctx.dlg.write();return str;},
	createCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		return new CircleGraph(ctrl);}
}

CircleGraph=function(ctrl){
	this.ctrl=ctrl;
	this.ctx=ctrl.getContext();
	this.graph=null;
	this.params=new Object;
	this.initValue=ctrl.value;
}
CircleGraph.prototype={
	init:function(){
		if(this.initValue){this.ctrl.deserialize(this.initValue);}
		else{
			this.ctrl.importParam({
				items:"sample01,150#sample02,100#sample03,80#sample04,60#sample05,30",
				backgroundColor:"#eeffee",shadow:false,captionNum:false,startAngle:-45,otherCaption:"その他"});}},
	draw:function(){
		var items=new Array;
		var params=new Object;
		this.ctrl.exportParam(this.params);
		for(var key in this.params){
			if(key=='items'){
				var dataList=this.params[key].split("#");
				for(var index=0;index<dataList.length;index++){
					var data=dataList[index].split(",");
					var itemElm=new Array;
					for(var index2=0;index2<data.length;index2++){
						if(index2==0){itemElm.push(data[index2]);}
						else{itemElm.push(parseInt(data[index2]));}}
					items.push(itemElm);}
			}else{params[key]=this.params[key];}}
		this.graph.draw(items, params);},
	pluginHandler:function(ev){
		if(ev.type=="reset"){
			this.init();
		}else if(ev.type=="released"){
			if (this.graph) {
				this.ctrl.clearView();
				delete this.graph;
				this.graph = null;
				this.ctrl.showCanvas(false);}
		}else if(ev.type=="captured"){
			this.ctx.items.update();
			this.ctrl.showCanvas(true);
			this.graph = new html5jp.graph.circle(this.ctrl.getCanvasId());
			this.draw();
			this.ctrl.view.sendAnimationEnd();
		}else if(ev.type=="modify"){
			this.ctrl.clearView();
			this.draw();}},
	viewerHandler:function(ev){
		if(ev.type=="mouseout"){}
		if(ev.type=="mouseover"){}
		if(ev.type=="mousedown"){}
		if(ev.type=="mouseup"){}
		if(ev.type=="click"){}}
}

PaperPluginMgr.registerPlugin(CircleGraphFactory.pluginName, CircleGraphFactory);

DrawerFactory={
	pluginName:"drawer",pluginLabel:"お絵かき",
	hasDialog:true,dialogWidth:"700px",dialogHeight:"500px",
	targets:[],
	setupCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		ctx.dlg=new PluginDlgCtrl("",null);
		ctrl.bindItem(this.pluginName,ctx.dlg);
		ctx.isSetup=true;},
	writeCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		var str="";str+=ctx.dlg.write();return str;},
	createCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		return new Drawer(ctrl);}
}

Drawer=function (ctrl){
	this.ctrl=ctrl;
	this.ctx=ctrl.getContext();
	this.params=new Object;
	this.initValue=ctrl.value;
}
Drawer.prototype.init=function(){
	if(this.initValue){this.ctrl.deserialize(this.initValue);}
	else{this.ctrl.importParam({});}
}
Drawer.prototype.draw=function(){
	this.ctrl.exportParam(this.params);
	var canvasTag=this.ctrl.getCanvasTag();
	var view=this.ctrl.view;
	var gctx=canvasTag.getContext("2d");
	view.setAnimation(20);
	if(!this.params.object){return false;}
	var staticText=new StaticTest("",0,0,0);
	var cmdArr=this.params.object.split(";");
	var cmd;
	var object=null;
	var grds=new Object;
	for(var index=0;index<cmdArr.length;index++){
		cmd=cmdArr[index].split("+");
		switch(cmd[0]){
		case "L":break;
		case "lgrd":
			if(cmd.length>9){
				var grd=gctx.createLinearGradient(parseInt(cmd[2]),parseInt(cmd[3]),parseInt(cmd[4]),parseInt(cmd[5]));
				for(var idx=6;(idx+1)<cmd.length;idx+=2){grd.addColorStop(parseFloat(cmd[idx]),cmd[idx+1]);}
				grds["&"+cmd[1]]=grd;}break;
		case "cgrd":
			if(cmd.length>11){
				var grd=gctx.createRadialGradient(parseInt(cmd[2]),parseInt(cmd[3]),parseInt(cmd[4]),
					parseInt(cmd[5]),parseInt(cmd[6]),parseInt(cmd[7]));
				for(var idx=8;(idx+1)<cmd.length;idx+=2){grd.addColorStop(parseFloat(cmd[idx]),cmd[idx+1]);}
				grds["&"+cmd[1]]=grd;}break;
		case "l":
			if(cmd.length==7){
				gctx.lineWidth=parseInt(cmd[1]);gctx.strokeStyle=cmd[2];
				gctx.beginPath();
				gctx.moveTo(parseInt(cmd[3]),parseInt(cmd[4]));
				gctx.lineTo(parseInt(cmd[5]),parseInt(cmd[6]));
				gctx.closePath();
				gctx.stroke();}break;
		case "s":case "s_c":
			if(cmd.length>=7){
				gctx.lineWidth=parseInt(cmd[1]);gctx.strokeStyle=cmd[2];
				gctx.beginPath();
				gctx.moveTo(parseInt(cmd[3]),parseInt(cmd[4]));
				var count=(cmd.length-5)>>1;
				for(var subIndex=1;subIndex<count;subIndex++){
					gctx.lineTo(parseInt(cmd[subIndex*2+5]),parseInt(cmd[subIndex*2+6]));}
				if(cmd[0]=="s_c"){gctx.closePath();}
				gctx.stroke();}break;
		case "f_c":
			if(cmd.length>=6){
				gctx.fillStyle=cmd[1];
				gctx.beginPath();
				gctx.moveTo(parseInt(cmd[2]),parseInt(cmd[3]));
				var count=(cmd.length-4)>>1;
				for(var subIndex=1;subIndex<count;subIndex++){
					gctx.lineTo(parseInt(cmd[subIndex*2+4]),parseInt(cmd[subIndex*2+5]));}
				gctx.closePath();
				gctx.fill();}break;
		case "fs_c":
			if(cmd.length>=8){
				gctx.lineWidth=parseInt(cmd[1]);gctx.strokeStyle=cmd[2];
				gctx.fillStyle=cmd[3];
				gctx.beginPath();
				gctx.moveTo(parseInt(cmd[4]),parseInt(cmd[5]));
				var count=(cmd.length-6)>>1;
				for(var subIndex=1;subIndex<count;subIndex++){
					gctx.lineTo(parseInt(cmd[subIndex*2+6]),parseInt(cmd[subIndex*2+7]));}
				gctx.closePath();
				gctx.stroke();gctx.fill();}break;
		case "sr":
			if(cmd.length==7){
				gctx.lineWidth=parseInt(cmd[1]);gctx.strokeStyle=cmd[2];
				gctx.strokeRect(parseInt(cmd[3]),parseInt(cmd[4]),
					parseInt(cmd[5]-cmd[3]),parseInt(cmd[6]-cmd[4]));
			}break;
		case "fr":
			if (cmd.length==6){
				if(cmd[1].charAt(0)!='&'){gctx.fillStyle=cmd[1];}
				else{gctx.fillStyle=grds[cmd[1]];}
				gctx.fillRect(parseInt(cmd[2]),parseInt(cmd[3]),
					parseInt(cmd[4]-cmd[2]),parseInt(cmd[5]-cmd[3]));
			}break;
		case "fsr":
			if(cmd.length==8){
				gctx.lineWidth=parseInt(cmd[1]);gctx.strokeStyle=cmd[2];
				if(cmd[3].charAt(0)!='&'){gctx.fillStyle=cmd[3];}
				else{gctx.fillStyle=grds[cmd[3]];}
				gctx.fillRect(parseInt(cmd[4]),parseInt(cmd[5]),
					parseInt(cmd[6]-cmd[4]),parseInt(cmd[7]-cmd[5]));
				gctx.strokeRect(parseInt(cmd[4]),parseInt(cmd[5]),
					parseInt(cmd[6]-cmd[4]),parseInt(cmd[7]-cmd[5]));
			}break;
		case "sc":
			if(cmd.length==6){
				gctx.lineWidth=parseInt(cmd[1]);
				gctx.strokeStyle=cmd[2];
				gctx.beginPath();
				gctx.arc(parseInt(cmd[3]),parseInt(cmd[4]),parseInt(cmd[5]),0,Math.PI*2.0,0);
				gctx.stroke();
			}break;
		case "fc":
			if(cmd.length==5){
				if(cmd[1].charAt(0)!='&'){gctx.fillStyle=cmd[1];}
				else{gctx.fillStyle=grds[cmd[1]];}
				gctx.beginPath();
				gctx.arc(parseInt(cmd[2]),parseInt(cmd[3]),parseInt(cmd[4]),0,Math.PI*2.0,0);
				gctx.fill();
			}break;
		case "fsc":
			if(cmd.length==7){
				gctx.lineWidth=parseInt(cmd[1]);
				gctx.strokeStyle=cmd[2];
				if(cmd[1].charAt(0)!='&'){gctx.fillStyle=cmd[1];}
				else{gctx.fillStyle=grds[cmd[1]];}
				gctx.beginPath();
				gctx.arc(parseInt(cmd[4]),parseInt(cmd[5]),parseInt(cmd[6]),0,Math.PI*2.0,0);
				gctx.stroke();gctx.fill();
			}break;
		case "stt":
			if(cmd.length>=5){
				staticText.text=cmd[1];staticText.fontSize=cmd[2];staticText.x=cmd[3];staticText.y=cmd[4];
				if(cmd.length>5){staticText.width=cmd[5];}
				view.appendText(staticText);
			}break;
		case "sit":
			if(cmd.length>=9){
				var slideinText=new SlideinText(cmd[1],parseInt(cmd[2]),parseInt(cmd[3]),parseInt(cmd[4]));
				slideinText.setMove(parseInt(cmd[5]),parseInt(cmd[6]),parseInt(cmd[7]),parseInt(cmd[8]));
				if(cmd.length>9){slideinText.width=cmd[9];}
				view.appendText(slideinText);
			}break;
		case "fit":
			if(cmd.length>=9){
				var fadeinText=new FadeinText(cmd[1],parseInt(cmd[2]),parseInt(cmd[3]),parseInt(cmd[4]));
				fadeinText.setFadein(cmd[5],cmd[6],parseInt(cmd[7]),parseInt(cmd[8]));
				if(cmd.length>9){fadeinText.width=cmd[9];}
				view.appendText(fadeinText);
			}break;
		case "adt":
			if(cmd.length>=7){
				var additionalText=new AdditionalText(cmd[1],parseInt(cmd[2]),parseInt(cmd[3]),parseInt(cmd[4]));
				additionalText.setShow(parseInt(cmd[5]),parseInt(cmd[6]));
				if(cmd.length>7){additionalText.width=cmd[7];}
				view.appendText(additionalText);
			}break;
		default:object=null;break;}
	}
	delete staticText;
	return true;
}

Drawer.prototype.pluginHandler=function(ev){
	if(ev.type=="reset"){
		this.init();
	}else if(ev.type=="released"){
		this.ctrl.clearView();
		this.ctrl.showCanvas(false);
	}else if(ev.type=="captured"){
		this.ctrl.showCanvas(true);
		this.draw(); 
		this.ctrl.view.play();
	}else if(ev.type=="modify"){
		this.ctrl.clearView();
		this.draw();
	}
}
Drawer.prototype.viewerHandler=function(ev){
	if(ev.type=="mouseout"){;}
	if(ev.type=="mouseover"){;}
	if(ev.type=="mousedown"){;}
	if(ev.type=="mouseup"){;}
	if(ev.type=="click"){}
}


PaperPluginMgr.registerPlugin(DrawerFactory.pluginName, DrawerFactory);

ImageLinkFactory={
	pluginName:"imagelink",pluginLabel:"画像",
	hasDialog:true,dialogWidth:"640px",dialogHeight:"480px",
	targets:["link","width","height","isFit"],
	setupCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		ctx.link=new PluginTextCtrl("link","data-field","");
		ctx.width=new PluginTextCtrl("width","data-field","");
		ctx.height=new PluginTextCtrl("height","data-field","");
		ctx.isFit=new PluginSelCtrl("isFit","check","off");
		ctx.dlg=new PluginDlgCtrl("",null);
		ctrl.bindItem(this.pluginName,ctx.link);
		ctrl.bindItem(this.pluginName,ctx.width);
		ctrl.bindItem(this.pluginName,ctx.height);
		ctrl.bindItem(this.pluginName,ctx.isFit);
		ctrl.bindItem(this.pluginName,ctx.dlg);
		ctx.isSetup=true;},
	writeCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		var str="";str+="リンク";str+=ctx.link.write();
		str+="幅";str+=ctx.width.write();str+="高さ";str+=ctx.height.write();str+="<br/>";
		str+="プラグインサイズ調整";str+=ctx.isFit.write();str+=ctx.dlg.write();return str;},
	createCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		return new ImageLink(ctrl);}
}

ImageLink=function(ctrl){
	this.ctrl=ctrl;
	this.ctx=ctrl.getContext();
	this.viewTag=null;
	this.imgTag=null;
	this.params=new Object;
	this.initValue=ctrl.value;
}
ImageLink.prototype={
	init:function(){
		this.viewTag=this.ctrl.getViewTag();
		if(this.initValue){this.ctrl.deserialize(this.initValue);}
		else{this.ctrl.importParam({});}},
	update:function(){
		this.ctrl.exportParam(this.params);
		if(this.params.isFit=="on"){
			if(this.params.width){this.ctrl.view.width=this.params.width;}
			if(this.params.height){this.ctrl.view.height=this.params.height;}
			this.ctrl.view.modify();}
		this.imgTag.src=this.params["link"];
		if((this.params["width"])&&(this.params["width"]!="")){this.imgTag.width=parseInt(this.params["width"]);}
		if((this.params["height"])&&(this.params["height"]!="")){this.imgTag.height=parseInt(this.params["height"]);}},
	pluginHandler:function(ev){
		if(ev.type=="reset"){
			this.init();
		}else if(ev.type=="released"){
			this.ctrl.show(false);
			if(this.viewTag.firstChild){var e;
				try{this.viewTag.removeChild(this.imgTag);}
				catch(e){}}
		}else if(ev.type=="captured"){
			this.ctrl.show(true);
			this.imgTag=document.createElement("img");
			this.update();
			this.viewTag.appendChild(this.imgTag);
			this.ctrl.view.sendAnimationEnd();
		}else if(ev.type=="modify"){
			this.ctrl.exportParam(this.params);this.update();}},
	viewerHandler:function(ev){
		if(ev.type=="mouseout"){}
		if(ev.type=="mouseover"){}
		if(ev.type=="mousedown"){}
		if(ev.type=="mouseup"){}
		if(ev.type=="click"){}}
}

PaperPluginMgr.registerPlugin(ImageLinkFactory.pluginName, ImageLinkFactory);

LineGraphFactory={
	pluginName:"lgraph",pluginLabel:"線グラフ",
	hasDialog:true,dialogWidth:"640px",dialogHeight:"480px",
	targets:["items","x","y"],
	setupCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		ctx.items=new PluginListCtrl("items","data-fields","",false);
		ctx.xLabel=new PluginTextCtrl("x","data-field","");
		ctx.yLabel=new PluginTextCtrl("y","data-field","");
		ctx.dlg=new PluginDlgCtrl("",null);
		ctrl.bindItem(this.pluginName,ctx.items);
		ctrl.bindItem(this.pluginName,ctx.xLabel);
		ctrl.bindItem(this.pluginName,ctx.yLabel);
		ctrl.bindItem(this.pluginName,ctx.dlg);
		ctx.isSetup=true;},
	writeCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		var str="";str+=ctx.items.write();str+="<br />";
		str+="xラベル";str+=ctx.xLabel.write();str+="yラベル";str+=ctx.yLabel.write();
		str+=ctx.dlg.write();return str;},
	createCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		return new LineGraph(ctrl);}
}

LineGraph=function(ctrl){
	this.ctrl=ctrl;
	this.ctx=ctrl.getContext();
	this.graph=null;
	this.params=new Object;
	this.initValue=ctrl.value;
}
LineGraph.prototype.init=function(){
	if(this.initValue){this.ctrl.deserialize(this.initValue);}
	else{
		this.ctrl.importParam({
			items:"勇者,20,58,40,14,38,20,40#商人,10,14,58,80,70,90,20",
			x:"曜日,日,月,火,水,木,金,土",y:"稼いだ額,0,20,40,60,80,100",
			yMax:100,yMin:0,
			/*dotRadius:"3,4",*/
			dotType:"disc,square"
		});
	}}
LineGraph.prototype.draw=function(){
	var items=new Array;
	var params=new Object;
	this.ctrl.exportParam(this.params);
	for(var key in this.params){
		if(key=='items'){
			var dataList=this.params[key].split("#");
			for(var index=0;index<dataList.length;index++){
				var data=dataList[index].split(",");
				var itemElm=new Array;
				for(var index2=0;index2<data.length;index2++){
					if(index2==0){itemElm.push(data[index2]);}
					else{itemElm.push(parseInt(data[index2]));}
				}
				items.push(itemElm);
			}
		}else if((key=='x')||(key=='y')||(key=='lineWidth')||(key=='dotRadius')||(key=='dotType'))
		{params[key]=this.params[key].split(",");}
		else{params[key]=this.params[key];}
	}
	this.graph.draw(items,params);
}
LineGraph.prototype.pluginHandler=function(ev){
	if(ev.type=="reset"){
			this.init();
	}else if(ev.type=="released"){
		if(this.graph){
			this.ctrl.clearView();
			delete this.graph;
			this.graph=null;
			this.ctrl.showCanvas(false);
		}
	}else if(ev.type=="captured"){
		this.ctx.items.update();
		this.ctrl.showCanvas(true);
		this.graph=new html5jp.graph.line(this.ctrl.getCanvasId());
		this.draw();
		this.ctrl.view.sendAnimationEnd();
	}else if(ev.type=="modify"){
		this.ctrl.clearView();
		this.draw();
	}
}
LineGraph.prototype.viewerHandler=function(ev){
	if(ev.type=="mouseout"){ ; }
	if(ev.type=="mouseover"){ ; }
	if(ev.type=="mousedown"){ ; }
	if(ev.type=="mouseup"){ ; }
	if(ev.type=="click"){ 
	}
}

PaperPluginMgr.registerPlugin(LineGraphFactory.pluginName, LineGraphFactory);

RadarGraphFactory={
	pluginName:"rgraph",pluginLabel:"レーダー",
	hasDialog:true,dialogWidth:"640px",dialogHeight:"480px",
	targets:["items","aCap"],
	setupCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		ctx.items=new PluginListCtrl("items","data-fields","",false);
		ctx.aCap=new PluginTextCtrl("aCap","data-field","");
		ctx.dlg=new PluginDlgCtrl("",null);
		ctrl.bindItem(this.pluginName,ctx.items);
		ctrl.bindItem(this.pluginName,ctx.aCap);
		ctrl.bindItem(this.pluginName,ctx.dlg);
		ctx.isSetup=true;},
	writeCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		var str="";str+=ctx.items.write();str+="<br/>";
		str+="名前";str+=ctx.aCap.write();str+=ctx.dlg.write();return str;},
	createCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		return new RadarGraph(ctrl);}
}

RadarGraph=function(ctrl){
	this.ctrl=ctrl;
	this.ctx=ctrl.getContext();
	this.graph=null;
	this.params=new Object;
	this.initValue=ctrl.value;
}
RadarGraph.prototype={
	init:function(){
		if(this.initValue){this.ctrl.deserialize(this.initValue);}
		else{
			this.ctrl.importParam({
//				items:"sample01,150#sample02,100#sample03,80#sample04,60#sample05,30",
				items:"勇者,5,2,4,5,3#商人,3,4,3,4,5",
				aCap:"体力,攻撃力,防御力,精神,知性"});}},
	draw:function(){
		var items=new Array;
		var params=new Object;
		this.ctrl.exportParam(this.params);
		for(var key in this.params){
			if(key=='items'){
				var dataList=this.params[key].split("#");
				for(var index=0;index<dataList.length;index++){
					var data=dataList[index].split(",");
					var itemElm=new Array;
					for(var index2=0;index2<data.length;index2++){
						if(index2==0){itemElm.push(data[index2]);}
						else{itemElm.push(parseInt(data[index2]));}}
					items.push(itemElm);}
			}else if((key=='aCap'))
			{params[key]=this.params[key].split(",");}
			else{params[key]=this.params[key];}}
		this.graph.draw(items, params);},
	pluginHandler:function(ev){
		if(ev.type=="reset"){
			this.init();
		}else if(ev.type=="released"){
			if (this.graph) {
				this.ctrl.clearView();
				delete this.graph;
				this.graph = null;
				this.ctrl.showCanvas(false);}
		}else if(ev.type=="captured"){
			this.ctx.items.update();
			this.ctrl.showCanvas(true);
			this.graph = new html5jp.graph.radar(this.ctrl.getCanvasId());
			this.draw();
			this.ctrl.view.sendAnimationEnd();
		}else if(ev.type=="modify"){
			this.ctrl.clearView();
			this.draw();}},
	viewerHandler:function(ev){
		if(ev.type=="mouseout"){}
		if(ev.type=="mouseover"){}
		if(ev.type=="mousedown"){}
		if(ev.type=="mouseup"){}
		if(ev.type=="click"){}}
}

PaperPluginMgr.registerPlugin(RadarGraphFactory.pluginName,RadarGraphFactory);

TableFactory={
	pluginName:"table",pluginLabel:"表",
	hasDialog:true,dialogWidth:"640px",dialogHeight:"480px",
	targets:["items","x","y"],
	setupCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		ctx.items=new PluginListCtrl("items","data-fields","",false);
		ctx.xLabel=new PluginTextCtrl("x","data-field","");
		ctx.yLabel=new PluginTextCtrl("y","data-field","");
		ctx.dlg=new PluginDlgCtrl("",null);
		ctrl.bindItem(this.pluginName,ctx.items);
		ctrl.bindItem(this.pluginName,ctx.xLabel);
		ctrl.bindItem(this.pluginName,ctx.yLabel);
		ctrl.bindItem(this.pluginName,ctx.dlg);
		ctx.isSetup=true;},
	writeCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		var str="";str+=ctx.items.write();str+="<br />";
		str+="xラベル";str+=ctx.xLabel.write();str+="yラベル";str+=ctx.yLabel.write();
		str+=ctx.dlg.write();return str;},
	createCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		return new Table(ctrl);}
}
Table=function(ctrl){
	this.ctrl=ctrl;
	this.ctx=ctrl.getContext();
	//this.graph=null;
	this.params=new Object;
	this.initValue=ctrl.value;
}
Table.prototype={
	init:function(){
		if(this.initValue){this.ctrl.deserialize(this.initValue);}
		else{
			this.ctrl.importParam({
				items:"勇者,20,58,40,14,38,20,40#商人,10,14,58,80,70,90,20",
				x:"曜日,日,月,火,水,木,金,土",y:"稼いだ額",
				bdrWidth:"1px",bdrColor:"black",
				chBdrWidth:"1px",chBdrColor:"gray",
				rhBdrWidth:"1px",rhBdrColor:"gray"
			});
		}},
	draw:function(){
		var items=new Array;
		var params=new Object;
		this.ctrl.exportParam(this.params);
		for(var key in this.params){
			if(key=='items'){
				var dataList=this.params[key].split("#");
				for(var index=0;index<dataList.length;index++){
					var data=dataList[index].split(",");
					var itemElm=new Array;
					for(var index2=0;index2<data.length;index2++){
						if(index2==0){itemElm.push(data[index2]);}
						else{itemElm.push(parseInt(data[index2]));}
					}
					items.push(itemElm);
				}
			}else if((key=='x')||(key=='y'))
			{params[key]=this.params[key].split(",");}
			else{params[key]=this.params[key];}
		}
		this.write(items,params);
	},
	write:function(items,params){
		var tStyle="position:absolute;";
		var chStyle="";
		var rhStyle="";
		var dStyle="";
		if(params.xPos){tStyle+=("left:"+params.xPos+"px;");}
		if(params.yPos){tStyle+=("top:"+params.yPos+"px;");}
		if(params.bdrWidth){
			tStyle+=("border:solid "+params.bdrWidth);
			if(params.bdrColor){tStyle+=" "+params.bdrColor;}
			tStyle+=";";}
		if(params.chBdrWidth){
			chStyle+=("border:solid "+params.chBdrWidth);
			if(params.chBdrColor){chStyle+=" "+params.chBdrColor;}
			chStyle+=";";}
		if(params.rhBdrWidth){
			rhStyle+=("border:solid "+params.rhBdrWidth);
			if(params.rhBdrColor){rhStyle+=" "+params.rhBdrColor;}
			rhStyle+=";";}
		if(params.dBdrWidth){
			dStyle+=("border:solid "+params.dBdrWidth);
			if(params.dBdrColor){dStyle+=" "+params.dBdrColor;}
			dStyle+=";";}

		var divTag=document.createElement("div");
		var str='<table style="'+tStyle+'">';
		var idx;
		str+="<tr>";
		for(idx=0;idx<params.x.length;idx++){str+='<th style="'+chStyle+'">'+params.x[idx]+"</th>";}
		str+="</tr>";
		for(idx=0;idx<items.length;idx++){sitems=items[idx];
			str+="<tr>";str+='<th style="'+rhStyle+'">'+sitems[0]+"</th>";
			for(var sidx=1;sidx<sitems.length;sidx++){str+='<td style="'+dStyle+'">'+sitems[sidx]+"</td>";}
			str+="</tr>";}
		str+="</table>";
		divTag.innerHTML=str;
		this.ctrl.getViewTag().appendChild(divTag);
	},
	pluginHandler:function(ev){
		if(ev.type=="reset"){
				this.init();
		}else if(ev.type=="released"){
			if(this.graph){
				this.ctrl.clearView();
				delete this.graph;
				this.graph=null;
				this.ctrl.showCanvas(false);
			}
		}else if(ev.type=="captured"){
			this.ctx.items.update();
			this.ctrl.showCanvas(true);
			this.graph=new html5jp.graph.line(this.ctrl.getCanvasId());
			this.draw();
			this.ctrl.view.sendAnimationEnd();
		}else if(ev.type=="modify"){
			this.ctrl.clearView();
			this.draw();
		}},
	viewerHandler:function(ev){
		if(ev.type=="mouseout"){}
		if(ev.type=="mouseover"){}
		if(ev.type=="mousedown"){}
		if(ev.type=="mouseup"){}
		if(ev.type=="click"){}}
}

PaperPluginMgr.registerPlugin(TableFactory.pluginName,TableFactory);

FlashLinkFactory={
	pluginName:"flashlink",pluginLabel:"Flash",
	hasDialog:true,dialogWidth:"640px",dialogHeight:"480px",
	targets:["link","width","height","isFit"],
	setupCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		ctx.link=new PluginTextCtrl("link","data-field","");
		ctx.width=new PluginTextCtrl("width","data-field","");
		ctx.height=new PluginTextCtrl("height","data-field","");
		ctx.isFit=new PluginSelCtrl("isFit","check","off");
		ctx.dlg=new PluginDlgCtrl("",null);
		ctrl.bindItem(this.pluginName,ctx.link);
		ctrl.bindItem(this.pluginName,ctx.width);
		ctrl.bindItem(this.pluginName,ctx.height);
		ctrl.bindItem(this.pluginName,ctx.isFit);
		ctrl.bindItem(this.pluginName,ctx.dlg);
		ctx.isSetup=true;},
	writeCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		var str="";str+="リンク";str+=ctx.link.write();
		str+="幅";str+=ctx.width.write();str+="高さ";str+=ctx.height.write();str+="<br/>";
		str+="プラグインサイズ調整";str+=ctx.isFit.write();str+=ctx.dlg.write();return str;},
	createCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		return new FlashLink(ctrl);}
}

FlashLink=function(ctrl){
	this.ctrl=ctrl;
	this.ctx=ctrl.getContext();
	this.viewTag=null;
	this.divTag=null;
	this.params=new Object;
	this.initValue=ctrl.value;
}
FlashLink.prototype={
	init:function(){
		this.viewTag=this.ctrl.getViewTag();
		if(this.initValue){this.ctrl.deserialize(this.initValue);}
		else{this.ctrl.importParam({});}},
	getTag:function(){
		var str='';
		str+='<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="'+this.params.width+'" height="'+this.params.height+'" id="flashmovie1" align="middle">';
		str+='<param name="allowScriptAccess" value="sameDomain" />';
		str+='<param name="movie" value="'+this.params.link+'" />';
		str+='<param name="quality" value="high" />';
		str+='<param name="bgcolor" value="#ffffff" />';
		str+='<embed src="'+this.params.link+'" quality="high" bgcolor="#ffffff" width="'+this.params.width+'" height="'+this.params.height+'" name="flashmovie1" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
		str+='</object>';return str;},
	update:function(){
		this.ctrl.exportParam(this.params);
		if(this.params.isFit=="on"){
			if(this.params.width){this.ctrl.view.width=this.params.width;}
			if(this.params.height){this.ctrl.view.height=this.params.height;}
			this.ctrl.view.modify();}
		this.divTag.innerHTML=this.getTag();
		if((this.params["width"])&&(this.params["width"]!="")){this.divTag.style.width=parseInt(this.params["width"]);}
		if((this.params["height"])&&(this.params["height"]!="")){this.divTag.style.height=parseInt(this.params["height"]);}},
	pluginHandler:function(ev){
		if(ev.type=="reset"){
			this.init();
		}else if(ev.type=="released"){
			this.ctrl.show(false);
			if(this.viewTag.firstChild){
				this.viewTag.removeChild(this.divTag);}
		}else if(ev.type=="captured"){
			this.ctrl.show(true);
			this.divTag=document.createElement("div");
			this.update();
			this.viewTag.appendChild(this.divTag);
			this.ctrl.view.sendAnimationEnd();
		}else if(ev.type=="modify"){
			this.ctrl.exportParam(this.params);this.update();}},
	viewerHandler:function(ev){
		if(ev.type=="mouseout"){}
		if(ev.type=="mouseover"){}
		if(ev.type=="mousedown"){}
		if(ev.type=="mouseup"){}
		if(ev.type=="click"){}}
}

PaperPluginMgr.registerPlugin(FlashLinkFactory.pluginName, FlashLinkFactory);

YoutubeLinkFactory={
	pluginName:"youtubelink",pluginLabel:"Youtube",
	hasDialog:true,dialogWidth:"640px",dialogHeight:"480px",
	targets:["link","width","height","isFit"],
	setupCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		ctx.link=new PluginTextCtrl("link","data-field","");
		ctx.width=new PluginTextCtrl("width","data-field","");
		ctx.height=new PluginTextCtrl("height","data-field","");
		ctx.isFit=new PluginSelCtrl("isFit","check","off");
		ctx.dlg=new PluginDlgCtrl("",null);
		ctrl.bindItem(this.pluginName,ctx.link);
		ctrl.bindItem(this.pluginName,ctx.width);
		ctrl.bindItem(this.pluginName,ctx.height);
		ctrl.bindItem(this.pluginName,ctx.isFit);
		ctrl.bindItem(this.pluginName,ctx.dlg);
		ctx.isSetup=true;},
	writeCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		var str="";str+="リンク";str+=ctx.link.write();
		str+="幅";str+=ctx.width.write();str+="高さ";str+=ctx.height.write();str+="<br/>";
		str+="プラグインサイズ調整";str+=ctx.isFit.write();str+=ctx.dlg.write();return str;},
	createCtrl:function(ctrl){
		var ctx=ctrl.getContextByName(this.pluginName);
		if(!ctx.isSetup){this.setupCtrl(ctrl);}
		return new YoutubeLink(ctrl);}
}

YoutubeLink=function(ctrl){
	this.ctrl=ctrl;
	this.ctx=ctrl.getContext();
	this.viewTag=null;
	this.divTag=null;
	this.params=new Object;
	this.initValue=ctrl.value;
}
YoutubeLink.prototype={
	init:function(){
		this.viewTag=this.ctrl.getViewTag();
		if(this.initValue){this.ctrl.deserialize(this.initValue);}
		else{this.ctrl.importParam({});}},
	getTag:function(){
		var str='';
		str+='<object width="'+this.params.width+'" height="'+this.params.height+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">';
		str+='<param name="movie" value="'+this.params.link+'"></param>';
		str+='<param name="allowFullScreen" value="true"></param>';
		str+='<embed src="'+this.params.link+'" type="application/x-shockwave-flash" allowfullscreen="true" width="'+this.params.width+'" height="'+this.params.height+'">';
		str+='</embed>';
		str+='</object>';
		return str;},
	update:function(){
		this.ctrl.exportParam(this.params);
		if(this.params.isFit=="on"){
			if(this.params.width){this.ctrl.view.width=this.params.width;}
			if(this.params.height){this.ctrl.view.height=this.params.height;}
			this.ctrl.view.modify();}
		this.divTag.innerHTML=this.getTag();
		if((this.params["width"])&&(this.params["width"]!="")){this.divTag.style.width=parseInt(this.params["width"]);}
		if((this.params["height"])&&(this.params["height"]!="")){this.divTag.style.height=parseInt(this.params["height"]);}},
	pluginHandler:function(ev){
		if(ev.type=="reset"){
			this.init();
		}else if(ev.type=="released"){
			this.ctrl.show(false);
			if(this.viewTag.firstChild){
				this.viewTag.removeChild(this.divTag);}
		}else if(ev.type=="captured"){
			this.ctrl.show(true);
			this.divTag=document.createElement("div");
			this.update();
			this.viewTag.appendChild(this.divTag);
			this.ctrl.view.sendAnimationEnd();
		}else if(ev.type=="modify"){
			this.ctrl.exportParam(this.params);this.update();}},
	viewerHandler:function(ev){
		if(ev.type=="mouseout"){}
		if(ev.type=="mouseover"){}
		if(ev.type=="mousedown"){}
		if(ev.type=="mouseup"){}
		if(ev.type=="click"){}}
}

PaperPluginMgr.registerPlugin(YoutubeLinkFactory.pluginName, YoutubeLinkFactory);
