//////////////////////////////////////////////
// Program name : navicast.js
// $Rev: 88 $
// $Date: 2008-07-23 16:45:27 +0900 (水, 23 7 2008) $
// $Author: fujieda $
//////////////////////////////////////////////

//////////////////////////////////////////////
// This function is called by Users.
// Execute Navicast
function execNavicast(userId) {
	var navicast_result = execNavicast_main( userId, 0, 0 );
	if( !navicast_result )
		return;
	//if( getOSType()!="Mac" && getBrowserType()!="Safari" )
		//new Draggable( 'navicast' );
	window.onscroll = navicast_scroll_follow;
}
// From Stac URL Execute Navicast
function execNavicast_stac(userId) {
	execNavicast_main( userId, 1, 0 );
}

// for debug
function execNavicastDbg(userId, dbgMode) {
	execNavicast_main( userId, 0, dbgMode );
}


//////////////////////////////////////////////
// Main
function execNavicast_main(userId, stacFlg, dbgMode) {
	var acCnt = 0;
	var rotationStr = "";
	var key = "";
	var buf = "";
	var cookie_data = "";
	var ret = "";
	var cookieId1 = "";
	var cookieId2 = "";
	var cookieId3 = "";

	// Initialize
	navicast_follow_flg = 0;
	close_flg = 0;

	// main process
	var from_url = escape( document.referrer );
	var buf =  document.location + "";
	var aryAccessUrl = buf.split("?");
	var browser_info = getBrowserInfo();

	userId = parseInt(userId, 10);

	// get now scroll position
	navicast_get_scroll_position();

	// Get browser infomations.
	var browser_w;
	var browser_h;
	if( stacFlg==0 ) {
		if( document.all ) {
			var bIE = (browser_info.browser=="MSIE");
			var bVer6 = (browser_info.aryVer[0]=="6");
			var bVer7 = (browser_info.aryVer[0]=="7");
			var bVer8 = (browser_info.aryVer[0]=="8");
			if( bIE && (bVer6||bVer7||bVer8) && navicast_get_compatmode() ) {
				browser_w = document.documentElement.clientWidth;
				browser_h = document.documentElement.clientHeight;
			} else {
				browser_w = document.body.clientWidth;
				browser_h = document.body.clientHeight;
			}
		} else {
			browser_w = window.innerWidth;
			browser_h = window.innerHeight;
		}
	} else {
		browser_w = 0;
		browser_h = 0;
	}

	// get nowtime
	var nowtime = new Date();
	var nowtimestr = getDatetimeString( nowtime );

	// Get cookie data(old version)
	cookie_data = document.cookie + ";";
	key = "@NavicastInfo-" + userId + "-" + escape(aryAccessUrl[0]);
	aryAccessUrl = null;
	ret = getNavicastCookie( cookie_data, key );
	if( ret!="" ) {
		if( isNaN(escape(ret)) )
			return false;	// Illegal access
		acCnt = eval(acCnt) + 1;
		setNavicastCookie( key, acCnt, nowtime, 0, "");
		acCnt = parseInt( acCnt, 10 );
	} else {
		acCnt = 0;
	}

	// Get cookie id
	cookie_data = document.cookie + ";";
	key = "@NavicastAccessCountID-" + userId;
	cookieId1 = getNavicastCookie( cookie_data, key );
	key = "@NavicastRotationID-" + userId;
	cookieId2 = getNavicastCookie( cookie_data, key );
	key = "Navicast_SessID";
	cookieId3 = getNavicastCookie( cookie_data, key );

	// Get DB information for making uri
	var uri = getNavicastDomain() + "/access/getAccessInfo2.php"
		+ "?uid=" + escape(userId)
		+ "&frm=" + escape(from_url)
		+ "&uri=" + escape(document.location)
		+ "&br_w=" + escape(browser_w)
		+ "&br_h=" + escape(browser_h)
		+ "&scx=" + navicast_scr_x
		+ "&scy=" + navicast_scr_y
		+ "&stc=" + stacFlg
		+ "&dt=" + nowtimestr;
	if( cookieId1.length>0 )
		uri += "&c1=" + escape(cookieId1);
	if( cookieId2.length>0 )
		uri += "&c2=" + escape(cookieId2);
	if( cookieId3.length>0 )
		uri += "&c3=" + escape(cookieId3);
	if( acCnt>0 )
		uri += "&acc=" + acCnt;
	if( dbgMode>0 )
		uri += "&dbg=" + dbgMode;
	// memory reset
	from_url = null;
	browser_w = null;
	browser_h = null;
	cookieId1 = null;
	cookieId2 = null;
	cookieId3 = null;

	// check os, browser, version
	if( !DetectFlashVer( browser_info, 6, 0, 0 ) )
		return false;
	if( !isAvailableBrowser( browser_info, stacFlg ) )
		return false;

	navicasttimer_elapsetime = 0;
	navicasttimer_uri = uri;
	navicasttimer_timer = setInterval("runNavicast()", 1);

	return true;
}

//////////////////////////////////////////////
// Wait until navicast_landing is completed.
var navicasttimer_elapsetime = 0;
var navicasttimer_uri = '';
var navicasttimer_timer = '';
function runNavicast()
{
	target = document.getElementById("navicast_landing");
	if (navicasttimer_elapsetime == 0) {
		if( getBrowserType()=="Safari" ) {
			displayBannerNavicast();
			return;
		} else if (!target) {
			displayBannerNavicast();
			return;
		} else if (document.getElementById("navicast") != null) {
			displayBannerNavicast();
			return;
		}
	} else {
		if (navicasttimer_elapsetime < 100){
			navicasttimer_elapsetime += 1;
			return;
		} else {
			displayBannerNavicast();
			return;
		}
	}
}

///////////////////////////////////////////////
// Display Banner
function displayBannerNavicast() {
	var navicast = document.getElementById("navicast");
	var out = document.createElement("script");
	out.src = navicasttimer_uri;
	navicasttimer_uri = null;
	navicast.appendChild( out );
	clearInterval(navicasttimer_timer);
}

//////////////////////////////////////////////
// Get Navicast cookie data
function getNavicastCookie( cookieData, key ) {
	var ret = "";
	key = key + "=";
	var offset = cookieData.indexOf( key );

	if( offset>-1 ) {	// There is.
		s = offset + key.length;
		e = cookieData.indexOf( ";", s );
		ret = unescape(cookieData.substring(s, e));
	} else {	// none
		ret = "";
	}

	return ret;
}

//////////////////////////////////////////////
// Set navicast cookie data
// @param cookie_key
// @param write value
// @param now datetime string
// @param how long days does it keep cookie.
// @param cookie path
function setNavicastCookie( cookieKey, myValue, nowtime, myDay, myPath ) {
	if( myValue.length<=0 )	return;

	var myItem = cookieKey + "=" + escape(myValue) + ";";
	var myExp = new Date();
	myExp.setTime(nowtime.getTime()+(myDay*24*60*60*1000));
	var myExpires = "expires=" + myExp.toGMTString() + ";";
	if( myPath.length>0 ) {
		myPath = "path=" + myPath + ";";
		document.cookie =  myItem + myExpires + myPath;
	} else {
		document.cookie =  myItem + myExpires;
	}
}

//////////////////////////////////////////////
// Clicked FLASH(normal link)
function clickFlashLink( userId, manuscriptId, toUrl ) {
	clickFlashLinkAppoint( userId, manuscriptId, "0", toUrl, "0" );
}

//////////////////////////////////////////////
// Clicked FLASH(appoint frame or mailto)
function clickFlashLinkAppoint( userId, manuscriptId, toUrlType, toUrl, toUrlFrame ) {
	// get local cookie
	var cookie_data = document.cookie + ";";
	var key = "Navicast_SessID";
	var cookie_id = getNavicastCookie( cookie_data, key );

	var uri = getNavicastDomain() + "/access/setClickData.php"
		+ "?uid=" + escape(userId)
		+ "&mid=" + escape(manuscriptId)
		+ "&tourl=" + escape(toUrl)
		+ "&" + (new Date()).getTime(); //NDV-374
	if( cookie_id.length>0 )
		uri += "&cid=" + escape(cookie_id);

	var navicast = document.getElementById("navicast");
	navicast.removeChild( navicast.lastChild );	// delete iframe
	navicast.removeChild( navicast.lastChild );	// delete object(swf)
	var out = document.createElement("script");
	out.src = uri;
	uri = null;
	navicast.appendChild( out );

	if( toUrlType=="1" )
		toUrl = "mailto:" + toUrl;

	if( getBrowserType()=="MSIE" ) {
		var in_html = "";
		if( toUrlFrame=="0" ) {
			// target=_self
			in_html = "<a href='" + toUrl + "' target='_self' id='navicastlink' style='display:none;'></a>";
		} else {
			// target=_blank
			in_html = "<a href='" + toUrl + "' target='_blank' id='navicastlink' style='display:none;'></a>";
		}
		navicast.innerHTML = in_html;
		document.getElementById('navicastlink').click();
	} else {
		var ua = navigator.userAgent;
		var nHit = ua.indexOf("Firefox");
		var bFF = (nHit >=  0);
		var bVer20 = (bFF && ((ua.substr(nHit+8, 2) == "2.") || (ua.substr(nHit+8, 2) == "3."))); //NDV-374
		var d1 = new Date().getTime();
		var d2 = new Date().getTime();
		if( bVer20 ) {	// FireFox2. 3.
			while( d2<d1+500 ) {	//0.3sec
				d2 = new Date().getTime();
			}
		} else {		// FireFox1.x
			while( out.src.length<=0 && d2<d1+500 ) {
				d2 = new Date().getTime();
			}
		}
		if( toUrlFrame=="0" ) {	// target=_self
			location.href = toUrl;
		} else {				// target=_blank
			window.open( toUrl );
		}
	}
}

//////////////////////////////////////////////
// Close FLASH
function closeWindow( objId ) {
	close_flg = 1;
	document.getElementById('navicast_obj').parentNode.removeChild(document.getElementById('navicast_obj'));
	document.getElementById('navicast').style.width = "0px";
	document.getElementById('navicast').style.height = "0px";
	/*
	new Effect.Fade( objId );
	// if not IE, go outer frame
	if( getBrowserType()!="MSIE" ) {
		new Effect.MoveBy(objId,-10000,-10000,
			{
				delay: 0,
				fps:10000,
				transition: Effect.Transitions.full
			}
		);
	}*/
}

//////////////////////////////////////////////
// XmlHttp request
function createXmlHttp() {
	if (window.XMLHttpRequest) {			// Mozilla, Firefox, Safari, IE7
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {		// IE5, IE6
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");    // MSXML3
		} catch(e) {
			return new ActiveXObject("Microsoft.XMLHTTP"); // to MSXML2
		}
	} else {
		return null;
	}
}

////////////////////////////////////////////////////////////
// if browser was scrolled, banner is followed scrolls
function navicast_scroll_follow() {
	if( navicast_follow_flg!=2 )	return;	// It is not follow status

	// get position before scroll
	navicast_old_scr_x = navicast_scr_x;
	navicast_old_scr_y = navicast_scr_y;
	
	// get now scroll position
	navicast_get_scroll_position();

	// get scroll volumes
	navicast_scr_x_val = navicast_scr_x - navicast_old_scr_x;
	navicast_scr_y_val = navicast_scr_y - navicast_old_scr_y;
	
	originalLeft = parseFloat(document.getElementById('navicast').style.left || "0");
	originalTop = parseFloat(document.getElementById('navicast').style.top || "0");
	
	document.getElementById('navicast').style.left = Math.round(navicast_scr_x_val + originalLeft)+"px";
	document.getElementById('navicast').style.top = Math.round(navicast_scr_y_val + originalTop)+"px";
	/*
	new Effect.MoveBy("navicast", navicast_scr_y_val, navicast_scr_x_val,
		{
			delay: 0,
			fps:10000,
			transition: Effect.Transitions.full
		}
	);
	*/
}

////////////////////////////////////////////////////////////
// get now scroll position
function navicast_get_scroll_position() {
	scroll_start_time = new Date().getTime();

	// get now scroll position
	if( document.all ) {
		// for IE
		if( navicast_get_compatmode() ) {
			navicast_scr_x = document.documentElement.scrollLeft;
			navicast_scr_y = document.documentElement.scrollTop;
		} else  {
			navicast_scr_x = document.body.scrollLeft;
			navicast_scr_y = document.body.scrollTop;
		}
	} else {
		if( getBrowserType()=="Safari" ) {
			navicast_scr_x = document.body.scrollLeft;
			navicast_scr_y = document.body.scrollTop;
		} else {
			// for FF1.5-2.0
			if( navicast_get_compatmode() ) {
				navicast_scr_x = document.documentElement.scrollLeft;
				navicast_scr_y = document.documentElement.scrollTop;
			} else {
				navicast_scr_x = document.body.scrollLeft;
				navicast_scr_y = document.body.scrollTop;
			}
		}
	}
}

////////////////////////////////////////////////////////////
// if browser is IE, get compat mode
function navicast_get_compatmode() {
	var bStd = (document.compatMode && document.compatMode=="CSS1Compat");
	return bStd;
}

////////////////////////////////////////////////////////////
// get next flash banner, and then redraw
function redrawBanner(userId,nextManuscriptPriority,stacFlg,navicast_display_count,navicast_max_display_count) {
	// check display count
	if( navicast_display_count>=navicast_max_display_count || close_flg==1 )	return;

	// get now scroll position
	navicast_get_scroll_position();

	// Get browser infomations.
	var browser_info = getBrowserInfo();
	var browser_w;
	var browser_h;

	if( stacFlg==0 ) {
		if( document.all ) {
			var bIE = (browser_info.browser=="MSIE");
			var bVer6 = (browser_info.aryVer[0]=="6");
			var bVer7 = (browser_info.aryVer[0]=="7");
			if( bIE && (bVer6||bVer7) && navicast_get_compatmode() ) {
				browser_w = document.documentElement.clientWidth;
				browser_h = document.documentElement.clientHeight;
			} else {
				browser_w = document.body.clientWidth;
				browser_h = document.body.clientHeight;
			}
		} else {
			browser_w = window.innerWidth;
			browser_h = window.innerHeight;
		}
	} else {
		browser_w = 0;
		browser_h = 0;
	}

	// get nowtime
	var nowtime = new Date();
	var nowtimestr = getDatetimeString( nowtime );

	// Get cookie id
	var key = "";
	var cookie_data = document.cookie + ";";
	key = "@NavicastAccessCountID-" + userId;
	var cookieId1 = getNavicastCookie( cookie_data, key );
	key = "@NavicastRotationID-" + userId;
	var cookieId2 = getNavicastCookie( cookie_data, key );
	key = "Navicast_SessID";
	var cookieId3 = getNavicastCookie( cookie_data, key );

	// Get DB information for making uri
	var uri = getNavicastDomain() + "/access/getNextFlash2.php"
		+ "?uid=" + userId
		+ "&nmp=" + nextManuscriptPriority
		+ "&frm=" + escape(document.referrer)
		+ "&uri=" + escape(document.location)
		+ "&br_w=" + escape(browser_w)
		+ "&br_h=" + escape(browser_h)
		+ "&scx=" + navicast_scr_x
		+ "&scy=" + navicast_scr_y
		+ "&ndc=" + navicast_display_count
		+ "&stc=" + stacFlg
		+ "&dt=" + nowtimestr;
	if( cookieId1.length>0 )
		uri += "&c1=" + escape(cookieId1);
	if( cookieId2.length>0 )
		uri += "&c2=" + escape(cookieId2);
	if( cookieId3.length>0 )
		uri += "&c3=" + escape(cookieId3);

	var navicast_banner = document.getElementById("navicast");
//	navicast_banner.removeChild(navicast_banner.lastChild);
	if( document.all ) {
		navicast_banner.innerHTML = "";
	} else {
		navicast_banner.textContent = "";
	}
	var out = document.createElement("script");
	out.src = uri;
	navicast_banner.appendChild( out );

	return;
}


////////////////////////////////////////////////////////////
// get Navicast server domain name
function getNavicastDomain() {
	var src_str;
	var prtcl;

	for (i = 0;i < document.getElementsByTagName('script').length;i++)
	{
		src_str = document.getElementsByTagName('script')[i].getAttribute('src');
		if ((src_str != null) && (src_str.search('navicast2.js') >= 0))
		{
			prtcl = 'http';
			if (src_str.substr(0,6) == 'https:')
				prtcl = 'https';
			src_str = src_str.substr(src_str.search('//') + 2);
			src_str = src_str.substr(0,src_str.search('/'));
			return prtcl + '://' + src_str;
		}
	}
	return null;
}

/***********************************************************
 * get date to string
 * @param date
 * @return string
 */
function getDatetimeString( date ) {
	var yyyy = date.getFullYear();
	var mm   = date.getMonth() + 1;
	var dd   = date.getDate();
	var hh   = date.getHours();
	var mi   = date.getMinutes();
	var ss   = date.getSeconds();

	ret  = "" + yyyy;
	ret += Math.floor(mm/10)%10;
	ret += mm%10;
	ret += Math.floor(dd/10)%10;
	ret += dd%10;
	ret += Math.floor(hh/10)%10;
	ret += hh%10;
	ret += Math.floor(mi/10)%10;
	ret += mi%10;
	ret += Math.floor(ss/10)%10;
	ret += ss%10;

	return ret;
}

/***********************************************************
 * get browser infomation
 * @return browser information object
 */
function getBrowserInfo() {
	var info = new Object();
	var strVer;

	// get os type
	info.os = getOSType();

	// browser type
	info.browser = getBrowserType();

	// browser version
	info.version = getBrowserVersion( info.browser );
	strVer = String(info.version);
	info.aryVer = strVer.split( "." );
	return info;
}

/*******************************************************
 * get operation system type
 * @return using browser version
 */
function getOSType() {
	var ua = navigator.userAgent;
	var ret = "unknown";

	if( ua.indexOf('Mac')>-1 ) {
		ret = "Mac";
	} else if( ua.indexOf('Windows')>-1 ) {
		ret ="Win";
	}

	return ret;
}

/*******************************************************
 * get browser type
 * @return using browser version
 */
function getBrowserType() {
	var ua = navigator.userAgent;
	var ret = "unknown";

	if( ua.indexOf("Safari")>-1) {
		ret = "Safari";
	} else if( ua.indexOf("Opera")>-1 ) {
		ret = "Opera";
	} else if( ua.indexOf("Firefox")>-1 ) {
		ret = "Firefox";
	} else if( ua.indexOf("Gecko")>-1 ) {
		ret = "Netscape / Mozilla";
	} else if( ua.indexOf("Sleipnir")>-1 ) {
		ret = "Sleipnir";
	} else if( ua.indexOf("MSIE ")>-1 ) {
		ret = "MSIE";
	} else if( ua.indexOf("Mozilla")>-1 ) {
		ret = "Netscape";
	}

	return ret;
}

/*******************************************************
 * get browser version
 * @param navigator.userAgent
 * @param Browser type string
 * @return using browser version
 */
function getBrowserVersion( browser ) {
	var ua = navigator.userAgent;
	var version = "0";

	switch( browser ) {
		case "Safari":
			s = ua.indexOf( "Version/", 0 ) + 8;
			e = ua.indexOf( " ", s );
			version = ua.substring(s,e);
			break;
		case "Opera":
			appVer = navigator.appVersion;
			e = appVer.indexOf( " ", 0 );
			version = appVer.substr(0, e);
			break;
		case "Firefox":
			s = ua.indexOf( "Firefox/", 0 ) + 8;
			version = ua.substr( s );
			break;
		case "Netscape / Mozilla":
			s = ua.indexOf( "Netscape/", 0 );
			if( s>-1 ) {
				// after ver7.0
				s += 9;
				e = ua.indexOf( " ", s );
				version = ua.substring(s, e);
			} else {
				// before ver7.0
				s = ua.indexOf( "Netscape", 0 ) + 7;
				s = ua.indexOf( "/", s ) + 1;
				version = ua.substr( s );
			}
			break;
		case "Sleipnir":
			s = ua.indexOf( "Sleipnir", 0 ) + 8;
			e = ua.indexOf( ":", s );
			version = ua.substring(s, e);
			break;
		case "MSIE":
			s = ua.indexOf( "MSIE ", 0 ) + 5;
			e = ua.indexOf( ";", s );
			version = ua.substring(s, e);
			// if browser is IE6 SP2, version becomes 6.9
			if( version>=6 && version<7 && ua.indexOf("SV1",0)>-1 ) {
				version = 6.9;
			}
			break;
		case "Netscape":
			appVer = navigator.appVersion;
			e = appVer.indexOf( " ", 0 );
			version = appVer.substring(0, e);
			if( version>=5 )	version++;
			break;
		default:
			version = "0";
			break;
	}

	return version;
}

/*******************************************************
 * is this browser available?
 * @param browser infomation
 * @param navicast stac flg(0:drag / 1:stac)
 * @return available:true / not available:false
 */
function isAvailableBrowser( info, stacFlg ) {
	ret = true;

	if( info.browser=="unknown" || info.version=="0" )
		return false;
	switch( info.browser ) {
		case "Safari":
//			if( info.aryVer[0]<3 && stacFlg==0 )	ret = false;
			break;
		case "Opera":
			break;
		case "Firefox":
			if( info.aryVer[0]<1 )	ret = false;
			else if( info.aryVer[0]==1 && info.aryVer[1]<5 )	ret = false;
			break;
		case "Netscape / Mozilla":
			if( info.aryVer[0]<7 && stacFlg==0 )	ret = false;
			else if( info.aryVer[0]<6 )	ret = false;
			break;
		case "Sleipnir":
			break;
		case "MSIE":
			if( info.os=="Mac" )	ret = false;
			else if( info.aryVer[0]<6 )	ret = false;
//			else if( info.aryVer[0]==6 && info.aryVer[1]<9 )	ret = false;
			break;
		case "Netscape":
			if( info.aryVer[0]<7 )	ret = false;
			break;
		default:
			break;
	}

	return ret;
}

/*******************************************************
 * for detect flash version
 */
function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful.

			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}

	return version;
}

function GetSwfVer(isIE, isWin, isOpera) {
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	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;
			//alert("flashVer="+flashVer);
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}
	return flashVer;
}

function DetectFlashVer( browserInfo, reqMajorVer, reqMinorVer, reqRevision ) {
	var isIE    = (browserInfo.browser=="MSIE");
	var isWin   = (browserInfo.os=="Win");
	var isOpera = (browserInfo.browser=="Opera");

	versionStr = GetSwfVer(isIE, isWin, isOpera);
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		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;
	}
}
// End of file
