code: function openExecute(puzzle, data, variety, callback){
  	if(typeof variety!=='string' && !callback){
  		callback = variety;
  		variety = void 0;
  	}
  
  	puzzle.ready = false;
  
  	var classes = puzzle.klass;
  	var Board = ((!!classes && !!classes.Board) ? classes.Board : null);
  	var pzl = pzpr.parser(data, (variety || puzzle.pid));
  
  	pzpr.classmgr.setPuzzleClass(puzzle, pzl.pid, function(){
  		/* パズルの種類が変わっていればオブジェクトを設定しなおす */
  		if(Board!==puzzle.klass.Board){ initObjects(puzzle);}
  		else{ puzzle.painter.suspendAll();}
  		
  		try{
  			puzzle.metadata.reset();
  			if     (pzl.isurl) { new puzzle.klass.Encode().decodeURL(pzl);}
  			else if(pzl.isfile){ new puzzle.klass.FileIO().filedecode(pzl);}
  			
  			puzzle.ready = true;
  			puzzle.emit('ready');
  			puzzle.emit('mode');
  			
  			if(!!puzzle.canvas){ postCanvasReady(puzzle);}
  			
  			puzzle.resetTime();
  			
  			if(!!callback){ callback(puzzle);}
  		}
  		catch(e){
  			puzzle.emit('fail-open');
  			throw e;
  		}
  	});
  }
docs: --------------------------------------------------------------------------- openExecute()      各オブジェクトの生成などの処理 ---------------------------------------------------------------------------