/*
 * vbox v1 (ViewBox)
 * @author Sylvain Plat
 * @url http://cv.sp72.net/
 */

var vbox_body=null;
var vbox_html=null;
var vbox_box=null;
var vbox_bg=null;
var vbox_content=null;
var vbox_close=null;
var vbox_title=null;
var vbox_boxSizeInfo=new Array();
var vbox_pageSizeInfo=new Array();
var vbox_interval=null;
var vbox_link=null;
var vbox_object=null;
var vbox_scrollSave={'top':0,'left':0};
/*---------------------------------*/
var vbox_translations={
	'closeBar':'close',
	'closeText':'Click here to close',
	'loading':'Loading...',
	'pic404':'The picture does\'t exist.'
};
var vbox_scrollTop=60;
/*---------------------------------*/
function vbox_init(){
	/* Create elements */
	vbox_html=document.getElementsByTagName('html').item(0);
	vbox_body=document.getElementsByTagName('body').item(0);
	vbox_box=document.createElement('div');
	vbox_box.id='vboxBox';
	vbox_box=vbox_body.insertBefore(vbox_box,vbox_body.firstChild);
	if(vbox_translations.closeBar){
		vbox_close=document.createElement('div');
		vbox_close.id='vboxClose';
		vbox_close.innerHTML=vbox_translations.closeBar;
		vbox_close.title=vbox_translations.closeText;
		vbox_close.onclick=vbox_hide;
		vbox_close=vbox_box.appendChild(vbox_close);
	}
	vbox_content=document.createElement('div');
	vbox_content.id='vboxContent';
	vbox_content=vbox_box.appendChild(vbox_content);
	vbox_title=document.createElement('div');
	vbox_title.id='vboxTitle';
	vbox_title.innerHTML='#vboxTitle';
	vbox_title=vbox_box.appendChild(vbox_title);
	vbox_bg=document.createElement('div');
	vbox_bg.id='vboxBg';
	vbox_bg.title=vbox_translations.closeText;
	vbox_bg.onclick=vbox_hide;
	vbox_bg=vbox_body.insertBefore(vbox_bg,vbox_body.firstChild);
	/* Hide */
	vbox_hide();
	/* Add events on links */
	var a=document.getElementsByTagName('a');
	var i,l,r,t;
	var vboxFlash=new RegExp('^vboxFlash_');
	var vboxText=new RegExp('^vboxText_');
	for(i=0;i<a.length;i++){
		l=a[i];
		if(r=l.getAttribute('rel')){
			if(r=='vboxPic'){
				eval('l.onclick=function(){vbox_showPic(this);return(false);};');
			}else if(r.match(/^vboxFlash/)){
				t=r.replace(vboxFlash,'');
				eval('l.onclick=function(){vbox_showSwf(this,'+t+');return(false);};');
			}else if(r.match(/^vboxText/)){
				t=r.replace(vboxText,'');
				eval('l.onclick=function(){vbox_showText(this,'+t+');return(false);};');
			}
		}
	}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_pageSizeGetInfo(){
	var scrollX=0,scrollY=0,windowWidth=0,windowHeight=0;
	/* Modified code from Lightbox v1 (http://www.huddletogether.com/projects/lightbox/) */
	if(window.innerHeight&&window.scrollMaxY){
		scrollX=document.body.scrollWidth;
		scrollY=window.innerHeight+window.scrollMaxY;
	}else if(document.body.scrollHeight>document.body.offsetHeight){
		scrollX=document.body.scrollWidth;
		scrollY=document.body.scrollHeight;
	}else{
		scrollX=document.body.offsetWidth;
		scrollY=document.body.offsetHeight;
	}
	if(self.innerHeight){
		windowWidth=self.innerWidth;
		windowHeight=self.innerHeight;
	}else if(document.documentElement&&document.documentElement.clientHeight){
		windowWidth=document.documentElement.clientWidth;
		windowHeight=document.documentElement.clientHeight;
	}else if(document.body){
		windowWidth=document.body.clientWidth;
		windowHeight=document.body.clientHeight;
	}
	var pageWidth=(scrollX<windowWidth)?windowWidth:scrollX;
	var pageHeight=(scrollY<windowHeight)?windowHeight:scrollY;
	vbox_pageSizeInfo={'pageWidth':pageWidth,'pageHeight':pageHeight,'windowWidth':windowWidth,'windowHeight':windowHeight};
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_picWait(){
	if(vbox_object.complete){
		clearInterval(vbox_interval);
		vbox_showPic2();
	}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_show(){
	vbox_pageSizeGetInfo();
	if(vbox_bg){
		vbox_box.style.marginTop=vbox_scrollTop+'px';
		vbox_box.style.display='';
		vbox_bg.style.display='';
		vbox_html.scrollTop=0;
		vbox_bgResize();
	}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_boxGetSize(){
	if(vbox_box){
		alert(vbox_box.offsetHeight);
		alert(vbox_box.offsetHeight);
		//vbox_boxSizeInfo
	}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_loading(silent){
	vbox_pageSizeGetInfo();
	if(typeof(silent)=='undefined') var c='<p id="vboxLoading">'+vbox_translations.loading+'</p>';
	vbox_contentUpdate(c);
	vbox_contentResize(512);
	vbox_show();
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_bgResize(){
	if(vbox_bg){
		vbox_bg.style.height=(vbox_scrollTop+vbox_pageSizeInfo['pageHeight'])+'px';
	}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_hide(){
	if(vbox_bg&&vbox_box&&vbox_title){
		vbox_userScrollSave(false);
		vbox_bg.style.display='none';
		vbox_box.style.display='none';
		vbox_title.style.visibility='hidden';
		vbox_contentUpdate('');
		vbox_contentResize(0,'auto');
		vbox_titleUpdate('');
	}
	vbox_object=null;
	vbox_link=null;
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_showPic(lnk){
	vbox_userScrollSave(true);
	vbox_loading();
	vbox_link=lnk;
	vbox_object=new Image();
	vbox_interval=setInterval('vbox_picWait()',100);
	vbox_object.src=vbox_link.href;
	vbox_object.onerror=function(){
		clearInterval(vbox_interval);
		vbox_showText(lnk,{'text':vbox_translations.pic404});
	}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_showPic2(){
	var c='<img src="'+vbox_object.src+'" id="vboxImg" alt="'+vbox_link.title+'" />';
	vbox_contentUpdate(c);
	vbox_contentResize(vbox_object.width);
	vbox_titleUpdate(vbox_link.title);
	vbox_show();
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_contentResize(w,h){
	if(vbox_box){
		if(typeof(vbox_pageSizeInfo['pageWidth'])=='undefined') vbox_pageSizeGetInfo();
		var l=Math.round((vbox_pageSizeInfo['pageWidth']-w)/2);
		vbox_box.style.left=l+'px';
		if(vbox_content){
			vbox_content.style.width=w+'px';
			if(typeof(h)!='undefined'){
				if(parseInt(h)) h+='px';
				vbox_content.style.height=h;
			}
		}
	}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_userScrollSave(backup){
	if(backup){
		vbox_scrollSave.top=vbox_html.scrollTop;
		vbox_scrollSave.left=vbox_html.scrollLeft;
	}else{
		vbox_html.scrollLeft=vbox_scrollSave.left;
		vbox_html.scrollTop=vbox_scrollSave.top;
		vbox_scrollSave.top=0;
		vbox_scrollSave.left=0;
	}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_showSwf(lnk,obj){
	var param={
		'src':(typeof(obj.src)=='string')?obj.src:'',
		'width':(typeof(obj.width)=='string')?obj.width:'',
		'height':(typeof(obj.height)=='string')?obj.height:'',
		'backgroundColor':(typeof(obj.backgroundColor)=='string')?obj.backgroundColor:'',
		'title':(typeof(obj.title)=='string')?obj.title:'',
		'wmode':(typeof(obj.wmode)=='string')?obj.wmode:'opaque'
	};
	if(param.src!=''&&param.width!=''&&param.height!=''){
		vbox_userScrollSave(true);
		vbox_object=obj;
		vbox_link=lnk;
		vbox_loading();
		vbox_contentResize(param.width,param.height);
		vbox_contentUpdate(vbox_flash(param));
		vbox_titleUpdate(vbox_link.title);
	}else{
		vbox_showText(lnk,{'text':'Can\'t show SWF object (missing parameters).'});
	}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_showText(lnk,obj){
	vbox_userScrollSave(true);
	vbox_loading();
	vbox_link=lnk;
	vbox_object=obj;
	var w=(typeof(vbox_object.text)!='undefined')?vbox_object.text:'';
	vbox_contentUpdate(w);
	w=(typeof(vbox_object.width)!='undefined')?vbox_object.width:'300';
	vbox_contentResize(w);
	vbox_titleUpdate(vbox_link.title);
	vbox_show();
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_contentUpdate(c){
	if(vbox_content){
		vbox_content.innerHTML=c;
	}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_titleUpdate(c){
	if(vbox_title){
		vbox_title.innerHTML=c;
		vbox_title.style.visibility=(c=='')?'hidden':'';
	}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_initWhenPageLoaded(){
	var init=vbox_init;
	var bak=window.onload;
	if (typeof(window.onload)!='function'){
		window.onload=init;
	}else{
		window.onload=function(){
			bak();
			init();
		};
	}
	init=function(){
		if(vbox_object!=null){
			vbox_pageSizeGetInfo();
			vbox_contentResize(vbox_object.width);
		}
	};
	bak=window.onresize;
	if (typeof(window.onresize)!='function'){
		window.onresize=init;
	}else{
		window.onresize=function(){
			bak();
			init();
		};
	}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
function vbox_flash(obj){
	var rv='';
	if(navigator.appName=='Netscape'){
		rv+=('	<embed src="'+obj.src+'" menu="false" quality="high"');
		if(obj.wmode){
			rv+=(' wmode="'+obj.wmode+'" ');
		}
		rv+=('bgcolor="'+obj.backgroundColor+'" width="'+obj.width+'" height="'+obj.height+'" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />\n');
	}else{
		rv+=('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+obj.width+'" height="'+obj.height+'" align="middle" title="'+obj.title+'">\n');
		rv+=('	<param name="allowScriptAccess" value="always" />\n');
		rv+=('	<param name="movie" value="'+obj.src+'" />\n');
		rv+=('	<param name="quality" value="high" />\n');
		if(obj.wmode){
			rv+=('	<param name="wmode" value="'+obj.wmode+'" />\n');
		}
		rv+=('	<param name="bgcolor" value="'+obj.backgroundColor+'" />\n');
		rv+=('	<param name="menu" value="false" />\n');
		rv+=('	<embed src="'+obj.src+'" menu="false" quality="high"');
		if(obj.wmode){
			rv+=(' wmode="'+obj.wmode+'" ');
		}
		rv+=('bgcolor="'+obj.backgroundColor+'" width="'+obj.width+'" height="'+obj.height+'" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />\n');
		rv+=('</object>');
	}
	return(rv);
}
/* - - - - - - - - - - - - - - - - - - - - - - - - */
vbox_initWhenPageLoaded();
