//VR-stereo version 0.4

//    This program is free software; you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation; either version 2 of the License, or
//    any later version.
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with this program (http://www.fsf.org/licensing/licenses/ );
//    if not, write to the Free Software
//    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
//
// The author (web.victor.reijs@gmail.com ) is interested in feedback.
// http://www.iol.ie/~geniet/3d



// no infinite homologous point in scene
var noninfinite=0.2
//var noninfinite=0
var number=0;
var viewingdistance=50
var picturejps=""
var farawaydeltapx=0
var infinite=0
var widthp=0
var heightp=0
var Jps = new Image();
var screencm=0
var widthcm=0
var heightcm=0
var eyedistance=0
var zoom=100
var keuze="SPVA"
var teller=0
var tempwidth=0
var viewmethod="2"
var cookiename="screencookievr2"


function readcookie(){
string=document.cookie;
substring = string.split(cookiename)
if (substring[1]!="" && string!="") {
	screencm=substring[1].split("$")
	widthcm=screencm[1]
	heightcm=screencm[2]
	eyedistance=screencm[3]
	keuze=screencm[4]
	if(keuze.charAt(0)==";")
		{keuze="Plug-in";viewmethod="Parallel";viewingdistance=50}
	else
		{viewmethod=screencm[5];viewingdistance=screencm[6]
			if(viewmethod==""){viewmethod="Parallel";viewingdistance=50}
			if(viewingdistance==""){viewingdistance=50}
	}
	return true}
else
  	{square()
	return false}
}

function square() {
window.open("calibration.htm")
}

//number: is the sequence number of the image in the HTML file
//picturejps: is the path and name of the jps picture (relative to the HTML page)
//farawaydeltapx: is the difference in pixels of the homologous infinite/farthest point in both pictures
//infinite: distance to the farthest object [m]

function display(num,picture,faraway,infin) {
if (readcookie()) {
	number=num;
	farawaydeltapx=faraway
	infinite=infin
	if(infinite==0){infinite=20}
	if(infinite==1){infinite=6000}
	noninfinite=viewingdistance/infinite/100*(eyedistance/2)
	//alert(faraway+" "+infin+" "+noninfinite)
	picturejps=picture
	if (keuze=="YouTubeVideo")
		{cancontinue()}
	else {

		var temp = new Image()
		temp.src=picturejps;
		Jps=temp
		tempwidth=Jps.width
		teller=0
		window.status="Initialization of "+keuze+" in progress"
		waittocontinue()}
	}
}

function waittocontinue() {
if (Jps.complete==false && Jps.width==tempwidth) {
	teller=teller+1
	window.status="Initialization of "+keuze+" in progress "+teller/10+" [sec]"
	setTimeout("waittocontinue()",100)
}
else {cancontinue()}
}

function cancontinue() {
window.status=keuze+" viewing has been started"
redisplay()
}

function checkcookie() {
readcookie()
}

function keuzevul(form) {
readcookie()
keuze=form.keuze[form.keuze.selectedIndex].text
if(keuze=="") {keuze="SPVA"}
if(typeof(keuze)=="undefined") {keuze="SPVA"}
var theDate= new Date();
theDate.setMonth(theDate.getMonth()+12);
cookiestring=cookiename+"="+"$"+widthcm+"$"+heightcm+"$"+eyedistance+"$"+keuze+"$"+viewmethod+"$"+";path=/"+";expires="+theDate.toGMTString();
document.cookie=cookiestring;
}

function viewmethodvul(form) {
readcookie()
viewmethod=form.viewmethod[form.viewmethod.selectedIndex].text
if(viewmethod=="") {viewmethod="Parallel"}
if(typeof(viewmethod)=="undefined") {viewmethod="Parallel"}
var theDate= new Date();
theDate.setMonth(theDate.getMonth()+12);
cookiestring=cookiename+"="+"$"+widthcm+"$"+heightcm+"$"+eyedistance+"$"+keuze+"$"+viewmethod+"$"+";path=/"+";expires="+theDate.toGMTString();
document.cookie=cookiestring;
}


function writewindow(){
if(keuze=="SPVA")
{heightp=heightp+29}
if(keuze=="YouTubeVideo")
{heightp=heightp+23}
if(keuze=="StereoBee")
{heightp=heightp+23}
if(keuze=="StereoscopeApplet")
{widthp=widthp/2}
newparallel=window.open('empty.htm','parallel', 'resizable=yes,scrollbars=no,width='+widthp+',height='+heightp+',top='+0+',left='+Math.round((screen.width-widthp)/2))
//alert(newparallel)
if(newparallel==null) {alert("To start up the "+keuze+" window, you need to allow popup windows")}
newparallel.document.writeln('<html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>')
newparallel.document.write(keuze)
newparallel.document.writeln(' viewing of '+picturejps+'</title>')
newparallel.document.writeln('</head><body rightmargin="0" topmargin="0" leftmargin="1" bottommargin="0">')
//alert(newparallel)
if(keuze=="Plug-in")
	{writeplugin(newparallel)} 
if(keuze=="SPVA")
	{writeSPVA(newparallel)}
if(keuze=="StereoscopeApplet")
	{writestereoscopeA(newparallel)}
if(keuze=="Browser")
	{writebrowser(newparallel)}
if(keuze=="StereoBee")
	{writeStereoBee(newparallel)}
if(keuze=="YouTubeVideo")
	{writeYouTubeVideo(newparallel)}
newparallel.document.write('</body></html>')
newparallel.document.close();
newparallel.focus()
}

function writeplugin (newparallel){
newparallel.document.write('<embed type="image/x-jps" src="')
newparallel.document.write(picturejps)
newparallel.document.writeln('" pluginspage=”http:\www.vrex.com\depthcharge” height="100%" width="100%"></embed>')
}

function writebrowser (newparallel){
newparallel.document.write('<img src="')
newparallel.document.write(picturejps)
newparallel.document.writeln('" height="100%" width="100%">')
}

function writeSPVA(newparallel){
newparallel.document.writeln('<applet codebase="./" code="je3dview.class" archive="je3dview.jar" height=100% width=100%>')
newparallel.document.write('<param name="imgfile" value="')
newparallel.document.write(picturejps)
newparallel.document.write('"><param name="type" value="')
if(viewmethod=="Parallel"){methode=0}
if(viewmethod=="Parallel (Loreo Stereoscope)"){methode=0}
if(viewmethod=="Crossed"){methode=1}
if(viewmethod=="KMQ"){methode=2}
if(viewmethod=="ColorRedCyan"){methode=6}
if(viewmethod=="Hor-interleaved"){methode=8}
if(viewmethod=="Ver-interleaved"){methode=9}
if(viewmethod=="Page-flipping"){methode=14}
newparallel.document.write(methode)
newparallel.document.writeln('">')
newparallel.document.writeln('<param name="swap" value="0"><param name="zoom" value="0">')
newparallel.document.write('<param name="menu" value="')
newparallel.document.writeln(1)
newparallel.document.writeln('"><param name="fast" value="0"><param name="spacing" value="1"></applet>')
}

function writeYouTubeVideo(newparallel){
newparallel.document.writeln('<embed src="')
newparallel.document.write(picturejps)
newparallel.document.write('&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="')
fullscreen="true"
if(viewmethod=="Parallel"){fullscreen="false"}
newparallel.document.write(fullscreen)
newparallel.document.writeln('" height="')
newparallel.document.write(heightp)
newparallel.document.writeln('" width="')
newparallel.document.writeln(widthp)
newparallel.document.writeln('">')
}


function writeStereoBee(newparallel){
newparallel.document.writeln('<applet codebase="./" code="StereoBee" archive="StereoBee.jar,filedrop.jar" height=100% width=100%>')
newparallel.document.write('<param name="filename" value="')
newparallel.document.write(picturejps)
newparallel.document.writeln('"><param name="tinyimage" value="')
newparallel.document.write(picturejps)
newparallel.document.writeln('">')
newparallel.document.write('<param name="kindview" value="')
methode=viewmethod
if(viewmethod=="Parallel"){methode="Crossed"}
if(viewmethod=="Parallel (Loreo Stereoscope)"){methode="Crossed"}
if(viewmethod=="Crossed"){methode="Parallel"}
if(viewmethod=="ColorRedCyan"){methode="Anaglyph"}
newparallel.document.write(methode)
newparallel.document.writeln('">')
newparallel.document.write('<param name="zoom" value="')
newparallel.document.write(zoom)
newparallel.document.writeln('">')
newparallel.document.writeln('</applet>')
}

//http://www.stereofoto.de/sapplet/howtouse.html
function writestereoscopeA(newparallel){
newparallel.document.write('<applet code="petersik.stereo.stereoscope.Stereoscope.class" archive="stereoscope.jar" name="stereoscope" height=')
newparallel.document.write(heightp)
newparallel.document.write(' width=')
newparallel.document.write(widthp)
newparallel.document.writeln('>')
newparallel.document.write('<param name="stereoImage" value="')
newparallel.document.write(picturejps)
newparallel.document.writeln('">')
newparallel.document.write('<param name="initZoom" value="')
newparallel.document.write(zoom)
newparallel.document.write('"><param name="viewType" value="')
methode=viewmethod
if(viewmethod=="Parallel (Loreo Stereoscope)"){methode="Parallel"}
if(viewmethod=="Hor-interleaved"){methode="shutterL"}
newparallel.document.write(methode)
newparallel.document.writeln('"><param name="parallelJPS" value="on"><param name="autoOpen" value="on"></applet>')
}


function redisplay() {
//try {newparallel2.close()} catch (e) {}
newparallel2=window.open('empty.htm','parallel')
try {newparallel2.close()} catch (e) {}
borderwidth=0
//alert(borderwidth) //+" "+picture)
widthpx=screen.width
heightpx=screen.height
infiniteseperation=eyedistance
infiniteseperation=infiniteseperation-noninfinite
if (keuze=="YouTubeVideo")
	{newwidth=eyedistance*2/widthcm*widthpx
	newheight=newwidth/16*9
//alert(newwidth+" "+newheight)
	}
	else
	{

	if (viewmethod=="Parallel (Loreo Stereoscope)") 
		{infiniteseperation= 15.2/2}
	if (viewmethod=="KMQ" && (keuze=="StereoscopeApplet" || keuze=="SPVA")) 
		{
		heightpicture= 10
		picturepy=heightpicture*heightpx/heightcm-borderwidth
		factory=picturepy/Jps.height
		factorx=factory/4
		}
		else 
		{
		picturesize=(Jps.width/2-farawaydeltapx)*widthcm/widthpx
		factorx=infiniteseperation/picturesize
		factory=factorx
		}
	zoom=factorx
	newwidth=Jps.width*factorx
	newheight=Jps.height*factory
	if(document.images[number-1].src.lastIndexOf("jps")!=-1)
		{
		document.images[number-1].width=newwidth
		document.images[number-1].height=newheight
		}
	}
//alert(1)
if(viewmethod!="Parallel" && keuze!="StereoBee" && keuze!="StereoscopeApplet" && viewmethod!="Parallel (Loreo Stereoscope)" )
{newwidth=2*newwidth
newheight=2*newheight
}
widthp=Math.round(newwidth)
heightp=Math.round(newheight)
if(keuze!='Non'){writewindow()}
}

