// common.js

// Copyright 2005-2007 Adobe Systems Incorporated. All rights reserved.
// Copyright 2007-2008 Lines inc,. Some rights reserved.

// Adobe社提供のディテクションキットを含めたSWF埋め込みの書き出しを行います。

var express_swfDir = "/common/js/";

var requiredMajorVersion = 8;
var requiredMinorVersion = 0;
var requiredRevision = 0;

var hasProductInstall = DetectFlashVer(6, 0, 65);

function requiredPlayerVersion(mj,mi,rv) {
	if(mj != "" || mj != null || mj != 'undefined') requiredMajorVersion = mj;
	if(mi != "" || mi != null || mi != 'undefined') requiredMinorVersion = mi;
	if(rv != "" || rv != null || rv != 'undefined') requiredRevision = rv;
}

var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
	var version;
	var axo;
	var e;
	try {
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}
	if (!version)
	{
		try {
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			version = "WIN 6,0,21,0";
			axo.AllowScriptAccess = "always";
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	return version;
}

function GetSwfVer(){
	var flashVer = -1;
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision){
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			tempArray         = versionStr.split(" ");
			tempString        = tempArray[1];
			versionArray      = tempString.split(",");
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_Generateobj(objAttrs, params){ 
  var str = '';
  str += '<object ';
  for (var i in objAttrs){
    str += i + '="' + objAttrs[i] + '" ';
  }
  str += '>\n';
  for (var i in params){
    str += '<param name="' + i + '" value="' + params[i] + '" />\n';
  }
  str += '</object>';
  document.write(str);
}

function AC_FL_RunContent(){
  var ret = AC_GetArgs(arguments);
  AC_Generateobj(ret.objAttrs, ret.params);
}

function AC_GetArgs(args){
  var ret = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();
    switch (currArg){
      case "type":
      	ret.objAttrs[args[i]] = "application/x-shockwave-flash";
        break;
      case "data":
      	ret.objAttrs[args[i]] = args[i+1];
        ret.params["movie"] = args[i+1];
        break;
      case "movie":
     		break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.params[args[i]] = args[i+1];
    }
  }
  return ret;
}

function embed_swf(swf,name,sizeX,sizeY,bgColor,img,cache,vars,scriptAccess,scale,salign,fullScreen,wmode) {
	var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
	if(img == "" || img == null || img == 'undefined') img = "";
	if(cache == "" || cache == null || cache == 'undefined') cache = 0;
	if(vars == "" || vars == null || vars == 'undefined') vars = "";
	if(bgColor == "" || bgColor == null || bgColor == 'undefined') bgColor = "#ffffff";
	if(scriptAccess == "" || scriptAccess == null || scriptAccess == 'undefined' || scriptAccess == 3){
		scriptAccess = "sameDomain";
	} else if(scriptAccess == 1){
		scriptAccess = "always";
	} else if(scriptAccess == 2){
		scriptAccess = "never";
	}
	if(scale == "" || scale == null || scale == 'undefined' || scale == 1){
		scale = "showall";
	} else if(scale == 2){
		scale = "noborder";
	} else if(scale == 3){
		scale = "exactfit";
	}
	if(salign == "" || salign == null || salign == 'undefined') salign = "";
	if(fullScreen == "" || fullScreen == null || fullScreen == 'undefined' || fullScreen == 0){
		fullScreen = "false";
	} else {
		fullScreen = "true";
	}
	if(wmode == "" || wmode == null || wmode == 'undefined' || wmode == 1){
		wmode = "window";
	} else if(wmode == 2){
		wmode = "opaque";
	} else if(wmode == 3){
		wmode = "transparent";
	}
	if(hasProductInstall && !hasReqestedVersion){
		var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
		var MMredirectURL = window.location;
		document.title = document.title.slice(0, 47) + " - Flash Player Installation";
		var MMdoctitle = document.title;
		AC_FL_RunContent(
			'data', express_swfDir + 'express_install.swf',
			'type', 'application/x-shockwave-flash',
			'width', sizeX,
			'height', sizeY,
			'movie', express_swfDir + 'express_install.swf',
			'id', name,
			'bgcolor', bgColor,
			'quality', 'high',
			'allowScriptAccess', 'sameDomain',
			'allowFullScreen', 'false',
			'scale', scale,
			'salign', salign,
			'wmode', 'window',
			'flashvars', 'MMredirectURL=' + MMredirectURL + '&MMplayerType=' + MMPlayerType + '&MMdoctitle=' + MMdoctitle + ''
			);
	} else if(hasReqestedVersion) {
		if(cache){
			var loadTime = new Date();
			swf += "?" + loadTime.getTime();
		}
		AC_FL_RunContent(
			'data', swf,
			'type', 'application/x-shockwave-flash',
			'width', sizeX,
			'height', sizeY,
			'movie', swf,
			'id', name,
			'bgcolor', bgColor,
			'quality', 'high',
			'allowScriptAccess', scriptAccess,
			'allowFullScreen', fullScreen,
			'scale', scale,
			'salign', salign,
			'wmode', wmode,
			'flashvars', vars
			);
	} else {
		if(img){
			var alternateContent = '<img src="' + img + '" width="' + sizeX + '" height="' + sizeY +  '" alt="" />';
		} else {
			var alternateContent = '<p>このコンテンツには Adobe Flash Player が必要です。<br /><a href="http://www.macromedia.com/go/getflash/" title="Flash Player を入手する" target="_blank">Flash Player を入手する</a></p>';
		}
		document.write(alternateContent);
	}
}