/*var naviAgent = navigator.userAgent;
var opera = (naviAgent.indexOf("Opera",0)!=-1);
var netscape = (navigator.appName.indexOf("Netscape",0)!=-1);
var msie = (navigator.appName.indexOf("Microsoft",0)!=-1);
var mozilla = (naviAgent.indexOf("Gecko",0)!=-1);
var win = (naviAgent.indexOf("Windows",0)!=-1);
var opera7h = (opera && browserVersion()>=7);
var opera7u = (opera && browserVersion()<7);*/

var agent = navigator.userAgent;
var agentArray = agent.split(" ");
var browser = agentArray[agentArray.length-1].match(/[A-Za-z]+/);
var browserVersion = parseFloat(agentArray[agentArray.length-1].match(/[\d\.]+$/));

var isMsie = ((agent.match(/MSIE ([\d\.]+)/)) && (!agent.match(/Opera|Gecko/)));
var isOpera = (agent.match(/Opera *\/*([\d\.]+)/)); /**/
var isNetscape = (agent.match(/Netscape *\/*([\d\.]+)/)); /**/
if (!!RegExp.$1) browserVersion = parseFloat(RegExp.$1.match(/[\d\.]+$/));

var isNetscape4 = ((agent.match(/Mozilla\/(4\.\d+)/)) && !browserVersion);
if (isNetscape4) browserVersion = parseFloat(RegExp.$1);

var isMozilla = (agent.match(/rv:([\d\.]+)/));
var GeckoVersion = (isMozilla)? RegExp.$1 : 0;
if (browser == "Gecko") browserVersion = parseFloat(GeckoVersion);

if (isMsie) browser = "Internet Explorer";
if (isOpera) browser = "Opera";
if (isNetscape || isNetscape4) browser = "Netscape";
if (isMozilla) browser = (browser == "Gecko")? "Mozilla" : browser + " ( compatible Mozilla "+ GeckoVersion + " )";

var isWin = agent.match(/(Win[ 9xdowsNT]*[MEXP\d\.]+)/g);
var winVersion = ((!!isWin)? isWin[isWin.length-1] : "0").match(/[MEXP\d\.]+$/);
if (!isNaN(winVersion)) winVersion = parseFloat(winVersion);

var isOpera7h = (isOpera && browserVersion>=7);
var isOpera7u = (isOpera && browserVersion<7);

var size=0;
var plugin = 0;
var usingPlugin = 0;
var oldUrl = "";

var screenWidth = Math.floor(screen.width/2);
var screenHeight = Math.floor(screenWidth*0.65);
var w = false;
var screeenLeft = Math.floor(screen.width/4);
var screeenTop = Math.floor(screen.height/4);

var option = "width="+screenWidth+",height="+screenHeight+",left="+screeenLeft+",top="+screeenTop+",resizable=1,scrollbars=0,status=1";

var clsID = new Array();
clsID[1] = "clsid:06646724-bcf3-11d0-9518-00c04fc2dd79";	// CosmoPlayer
clsID[2] = "clsid:86a88967-7a20-11d2-8eda-00600818edb1";	// Cortona VRML Client
clsID[3] = "clsid:4b6e3013-6e45-11d0-9309-0020afe05cc8";	// blaxxun Contact 3D / BS Contact VRML
clsID[4] = "clsid:332F83AF-3367-45c8-819F-9F7AE87410F8";	// Pivoron Player

var str0 = "<html><head><title>";
var str1 = "<\/title></head><body style=\"margin:0px;padding:0px;\"><object classid=\"";
var str2 = "\" width=\"100%\" height=\"100%\"><param name=\"src\" value=\"";
var str3 = "\"><\/object><\/body><\/html>";

var str01 = "<\/title></head><body style=\"margin:0px;padding:0px;\"><embed src=\"";
var str02 = "\" width=\"100%\" height=\"100%\"><\/body><\/html>";

function getObject(val) {
	var obj;
	if (document.getElementById) obj = document.getElementById(val);
	else if (document.all) obj = document.all(val);
	else return false;
	if (!obj) obj = false;
	return obj;
}

var initialized = false;
var summaryObj = false;

function initialize() {
	getPluginSelectValue();
	
	if (initialized) return;
	else initialized = true;
	
	summaryObj = getObject("summary");
	
	var ors = getObject("oldrecordswitch");
	if (!!ors && !isOpera7u) ors.style.visibility = "visible";
	
	if (isMozilla || isOpera7u) {
		var conObj = getObject("contents");
		conObj.style.width = "62%";
		if (!!summaryObj) summaryObj.style.width = "48%";
	}
	
	var contents = getObject("contents");
	if (!!contents) {
		var divs = contents.getElementsByTagName("DIV");
		if (!!divs) for (var i=0; i<divs.length; i++) {
			if (!divs[i].className) continue;
			if (divs[i].className == "summaries") divs[i].className = "nodisplay";
		}
		var imgs = contents.getElementsByTagName("IMG");
		if (!!imgs) for (var i=0; i<imgs.length; i++) {
			if (!!imgs[i].id) imgs[i].style.borderWidth = "3px";
		}
	}
	
	var objName = new Array("vrmlgame","vrmlatelier","vrmlrailroad");
	for (var i=0; i<objName.length; i++) {
		var obj = getObject(objName[i]);
		var imgs = obj.getElementsByTagName("IMG");
		if (!!imgs) for (var q=0; q<imgs.length; q++) {
			if (!!imgs[q].id) imgs[q].className = objName[i]+"img";
		}
	}
	
	var abt = getObject("about");
	if (!!abt) {
		abt.style.visibility= "hidden";
		abt.style.cursor = "pointer";
	}
	
	if (!isWin || isOpera || isMozilla) return;
	var psObj = getObject("pluginselect");
	if (!!psObj) psObj.className = "okdisplay";
}

function getPluginSelectValue() {
	var i = 0;
	var loop = true;
	do {
		var vbsObj = getObject("vbs"+i);
		if (!vbsObj) loop = false;
		else if (vbsObj.checked) plugin = i;
		i++;
	} while(loop)
}

function aboutKekenken(bool) {
	var ak = getObject("about");
	if (!ak) return true;
	ak.style.visibility = (bool)? "visible":"hidden";
	return false;
}
function selectePlugin(num) {
	plugin = num;
	if (num==3) alert("Check the box of the side of \"Use textures for text\" of Preferences,\nif your BS Contact VRML does not display texts.");
	if (num==4) alert("\"Pivoron Player 1.0\" does not display a part or all the texts.\nAlso, this plug-in often freezes with games.");
}
function display(url,id) {
	if (win_closed(w)) vrmlOpen(url,id);
	else if (!win_closed(w) && (usingPlugin!=plugin || oldUrl!=url)) { w.close(); vrmlOpen(url,id); }
	else w.focus();
	return false;
}
function vrmlOpen(url,id) {
	usingPlugin = plugin;
	oldUrl = url;
	if (!isMsie) {
		w = window.open(url,"",option);
		return;
	}
	
	var str = "";
	if (plugin==0) str = str0 + id + str01 + url + str02;
	else str = str0 + id + str1 + clsID[plugin] + str2 + url + str3;

	w = window.open("","",option);
	w.document.open();
	w.document.write(str);
	w.document.close();
}

function win_closed(winVar) {
	// http://game.gr.jp/js-ml/samples/200102/openerTest.html
	var ua = navigator.userAgent;
	if (!!winVar) {
		if ( ( ua.indexOf('Opera')!=-1 || ua.indexOf('Gecko')!=-1 || ua.indexOf('MSIE 4')!=-1 ) && ua.indexOf('Win')!=-1 ) return winVar.closed;
		else return typeof winVar.document  != 'object';
	}
	else return true;
}

function mouseOver(e) {
	var element = (e)? e.target : ((event)? event.srcElement : false);
	outsetImage (element,true);
	if (!!element) indicateInfo(element);
}
function mouseDown(e) {
	var element = (e)? e.target : ((event)? event.srcElement : false);
	if (!!element) clearInfo(element);
}
function mouseOut(e) {
	var element = (e)? e.target : ((event)? event.srcElement : false);
	outsetImage (element,false);
}

function mouseMove(e) {
	var x = (e)? e.pageX : ((event)? event.x + document.body.scrollLeft : 0);
	var y = (e)? e.pageY : ((event)? event.y + document.body.scrollTop : 0);
	var element = (e)? e.target : ((event)? event.srcElement : false);
	//window.status = x +' , '+y;
}

window.onload = initialize;
window.onscroll = scrolled;
document.onmouseover = mouseOver;
document.onmousedown = mouseDown;
document.onmouseout = mouseOut;
//document.onmousemove = mouseMove;

function scrolled() {
	if (!summaryObj) return;
	if (!isMsie || !isWin) summaryObj.style.visibility = "hidden";
	else {
		if (!!timer0) clearInterval(timer0);
		timer0 = setInterval("summaryTrans(false,50)",50);
	}
}
function displayOldRecord() {
	var or = getObject("oldrecord");
	var ors = getObject("oldrecordswitch");
	if (!or || !ors || isOpera7u) {
		alert ("Sorry. This does not work in this browser");
		return false;
	}
	or.className = "okdisplay";
	ors.style.visibility = "hidden";
}

var timer0 = false;
var trans = 0;

function indicateInfo(element) {
	if (!element.id) return;
	if (!summaryObj) return;
	if (element.tagName != "IMG") return;
	if (!element.id.match(/Image/)) return;
	
	so = getObject(element.id.replace(/Image/,"Summary"));
	if (!so) return ;
	soHTML = so.innerHTML;
	summaryObj.innerHTML = soHTML;
	summaryObj.style.visibility = "visible";
	

	var contObj = getObject("contents");

	summaryObj.style.left = element.offsetLeft + ((isMsie)? contObj.offsetLeft : 0) + 15;
	summaryObj.style.top = element.offsetTop - summaryObj.offsetHeight + ((isMsie)? contObj.offsetTop : 0) - 3;
	
	if (!isMsie || !isWin) return;

	if (!!timer0) clearInterval(timer0);
	timer0 = setInterval("summaryTrans(true,50)",100);
	trans = 0;
	summaryObj.filters["alpha"].opacity = trans;
}

function summaryTrans(bool,dt) {
	var over = false;
	trans += ((bool)? dt: -dt);
	trans = Math.min(100, Math.max(0,trans));
	summaryObj.filters["alpha"].opacity = trans;
	if (trans>=100 || trans<=0) clearInterval(timer0);
	if (trans<=0) summaryObj.style.visibility = "hidden";
}

function clearInfo(element) {
	if (!summaryObj) return;
	if (!searchId(element,"summary")) scrolled();
}

function searchId(element,str) {
	var loop = true;
	var matched = false;
	do {
		if (!element.id) element = element.parentNode;
		else if (element.id==str) {
			matched = true;
			loop = false;
		}
		else element = element.parentNode;
		if (!element) loop = false;
	} while (loop)
	return matched;
}

function outsetImage (element,active) {
	if (!element.tagName) return;
	if (element.tagName != "IMG") return;
	if (!element.id) return;
	element.style.borderStyle = (active)? "outset" : "solid";
}

