/*

	Requires:
	Prototype JavaScript framework, version 1.4.0

  *******************************************************************/


/*

Copyright 2006 Editions Montparnasse

Developed by: Sébastien Guillon <guillon@editionsmontparnasse.fr>

Notice: This has not been tested on Safari or any non-Windows browser.
Please send any comments or bug reports to the above address.

Most of this is still in early development...

  *******************************************************************/


zoomed = false; // Needed only to fix a Firefox problem (in association with setZoomStatus)


/*====================================================================
                                                         setZoomStatus
*/
function setZoomStatus(zoomState)
{
	zoomed = !zoomed;
}

function displayZoomInfo()
{
	alert("Current zoomed : "+zoomed+" ("+zoomedIndex+")");
}


/*====================================================================
                                                            zoomPlayer
*/
function zoomPlayer()
{
	//alert('Test 2');
	/*scroll(0,0);
	var windowDimensions = getWindowDimensions();
	var newPlayerWidth = windowDimensions.width;
	var newPlayerHeight = windowDimensions.height;
	var currentTop = getScrollXY()[1];*/


	if(BrowserDetect.browser=="Opera")
	{
		scroll(0,0);

		//alert('Opera n1');
		var rootElement = document.getElementsByTagName('body')[0];
		rootElement.setAttribute('style', 'overflow:hidden');

		var flashObject = document.getElementsByTagName('object')[0];
		flashObject.setAttribute('style','z-index:9999;position:absolute;left:0px;top:0px;right:0px;bottom:0px;width:100%;height:100%;');

		var flashEmbed = document.getElementsByTagName('embed')[0];
		flashEmbed.setAttribute('style','width:100%;height:100%;');
	}
	else if(BrowserDetect.browser=="Explorer")
	{
		//alert('IE n2');

		scroll(0,0);

		var windowDimensions = getWindowDimensions();
		var newPlayerWidth = windowDimensions.width;
		var newPlayerHeight = windowDimensions.height;
		var currentTop = getScrollXY()[1];

		var rootElement = document.getElementsByTagName('html')[0];
		rootElement.style.overflow = 'hidden';
		
		var flashObject = document.getElementsByTagName('object')[0];
		flashObject.style.position = 'absolute';
		flashObject.style.top = '0px';
		flashObject.style.right = '0px';
		flashObject.style.bottom = '0px';
		flashObject.style.left = '0px';
		flashObject.width = newPlayerWidth;
		flashObject.height = newPlayerHeight;

		Event.observe(window, 'resize', zoomPlayerResize);
	}
	else if(BrowserDetect.browser=="Firefox")
	{
		//alert('La fonction zoom ne fonctionne pas dans la naviateur Firefox.');
		
		scroll(0,0);
		
		var rootElement = document.getElementsByTagName('body')[0];
		rootElement.setAttribute('style', 'overflow:hidden');
		
		var flashEmbed = document.getElementsByTagName('embed')[0];
		flashEmbed.setAttribute('style','z-index:9999;position:absolute;left:0px;top:0px;right:0px;bottom:0px;width:100%;height:100%;');
		
		if(zoomed != true)
		{ // It works like this here though it does not seem to make any sense
			resetZoom();
			return false;	
		}
	}
}


/*====================================================================
                                                             resetZoom
*/
function resetZoom()
{
	if(BrowserDetect.browser=="Opera")
	{
		var rootElement = document.getElementsByTagName('body')[0];
		rootElement.style.overflow = 'auto';
		
		var flashObject = document.getElementsByTagName('object')[0];
		flashObject.setAttribute('style','z-index:9999;position:relative;left:0px;top:0px;right:0px;bottom:0px;');

		var flashEmbed = document.getElementsByTagName('embed')[0];
		flashEmbed.setAttribute('style','width:'+origPlayerWidth+'px;height:'+origPlayerHeight+'px;');
	}
	else if(BrowserDetect.browser=="Explorer")
	{
		Event.stopObserving(window, 'resize', zoomPlayerResize);
		
		var flashObject = document.getElementsByTagName('object')[0];
		flashObject.style.position = 'relative';
		flashObject.style.top = '0px';
		flashObject.style.right = '0px';
		flashObject.style.bottom = '0px';
		flashObject.style.left = '0px';
		flashObject.width = origPlayerWidth;
		flashObject.height = origPlayerHeight;

		var rootElement = document.getElementsByTagName('html')[0];
		rootElement.style.overflow = 'auto';
	}
	else if(BrowserDetect.browser=="Firefox")
	{
		//alert('La fonction zoom ne fonctionne pas dans la naviateur Firefox.');
		var rootElement = document.getElementsByTagName('body')[0];
		rootElement.setAttribute('style', 'overflow:auto');

		var flashEmbed = document.getElementsByTagName('embed')[0];
		flashEmbed.setAttribute('style','z-index:9999;position:relative;left:0px;top:0px;right:0px;bottom:0px;');

		zoomed = false;
	}
}


/*====================================================================
                                                      zoomPlayerResize
*/
function zoomPlayerResize()
{
	//zoomPlayer();
	var flashObject = document.getElementsByTagName('object')[0];

	if(BrowserDetect.browser=="Explorer")
	{
		var windowDimensions = getWindowDimensions();
		flashObject.width = windowDimensions.width;
		flashObject.height = windowDimensions.height;
	}
	/*else if(BrowserDetect.browser=="Firefox")
	{
		var windowDimensions = getWindowDimensions();
		var newPlayerWidth = windowDimensions.width;
		var newPlayerHeight = windowDimensions.height;

		var rootElement = document.getElementsByTagName('body')[0];
		rootElement.setAttribute('style','overflow:hidden;');

		var flashObject = document.getElementById('flash_object');

		flashObject.width = newPlayerWidth;
		flashObject.height = newPlayerHeight;

		flashObject.style.display = 'none';
		flashObject.setAttribute('style','z-index:9999;position:absolute;left:0px;top:0px;right:0px;bottom:0px;border:3px solid #f0f;');
		flashObject.style.display = 'block';
	}*/
}


function getWindowDimensions()
{
    var dimensions;

    if(window.innerWidth != null)
    {
        dimensions =
        {
            width: window.innerWidth,
            height: window.innerHeight
        };
    }
    else if (document.documentElement && document.documentElement.clientWidth)
    {
        dimensions =
        {
            width: document.documentElement.clientWidth,
            height: document.documentElement.clientHeight
        };
    }
    else if (document.body != null)
    {
        dimensions =
        {
            width: document.body.clientWidth,
            height: document.body.clientHeight
        };
    }

    return dimensions;
}


/*====================================================================
                                                       getViewportSize
*/
function getViewportSize() 
{ 
 var size = [0, 0]; 

 if (typeof window.innerWidth != 'undefined') 
 { 
   size = [ 
       window.innerWidth, 
       window.innerHeight 
   ]; 
 } 
 else if (typeof document.documentElement != 'undefined' 
     && typeof document.documentElement.clientWidth != 
     'undefined' && document.documentElement.clientWidth != 0) 
 { 
   size = [ 
       document.documentElement.clientWidth, 
       document.documentElement.clientHeight 
   ]; 
 } 
 else 
 { 
   size = [ 
       document.getElementsByTagName('body')[0].clientWidth, 
       document.getElementsByTagName('body')[0].clientHeight 
   ]; 
 } 

 return size; 
}


/*====================================================================
                                                           getScrollXY
*/
function getScrollXY()
{
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' )
	{	//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	}
	else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
	{	//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	}
	else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
	{	//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}

	return [ scrOfX, scrOfY ];
}

function testResize( width, height )
{
	var flashObject = document.getElementById( 'flash_object' );

	// flashObject.style.display = 'none';

	// var currentTop = getScrollXY()[1];
	//alert( width+' '+height );
	flashObject.width = width;
	flashObject.height = height;
	//flashObject.setAttribute( 'style', 'width:'+width+';height:'+height+';' );
}

// BrowserDetect.browser
// BrowserDetect.version
// BrowserDetect.OS



var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();


//alert(BrowserDetect.browser+" "+BrowserDetect.version+" "+BrowserDetect.OS);
