window.addEvent('domready',initVars);
window.addEvent('load',function(){if(document.location.hash!=''){expand(document.location.hash.substr(1));}$('news').src=newsurl;});
window.addEvent('resize',centersite);

var expanded,currentspread,layerFade,undef,footer,spine,wrapper,prev,next,closer,email,phone,video,bar;
var barwidth=0;
var barhidden=false;
var images,thumbs,titles,layers=[],spreads=[];

/* set this to the number of the news spread */
var newsspread=20;
/* set this to the url of the news page */
var newsurl='news.php';
/* object to match author names to spreads for findauthor() function on news */
var authorspreads={'gill':18,'rupert':19};

function findauthor(thelink)
{
	for(var i in authorspreads)
	{
		if($(thelink).get('text').toLowerCase().indexOf(i.toLowerCase())!=-1)
		{
			goto(authorspreads[i]);
			break;
		}
	}
}

function spread(theleft,thetop,thewidth,theheight)
{
	this.left=theleft;
	this.top=thetop;
	this.width=thewidth;
	this.height=theheight;
}

function centersite()
{
	wrapper.setStyle('left',Math.round((footer.getStyle('width').toInt()-907)/2));
}

function initVars()
{
	footer=$('footer');
	wrapper=$('wrapper');
	centersite();
	wrapper.setStyle('visibility','visible');
	$('spreads').setStyle('opacity',0.75);
	images=$$('#spreads .image');
	thumbs=$$('#spreads .thumb');
	titles=$$('#spreads .title');
	var templayers=$$('.layer');
	bar=$('loadingbar');
	prev=$('prev');
	prev.setStyle('opacity',0);
	next=$('next');
	next.setStyle('opacity',0);
	closer=$('closer');
	closer.setStyle('opacity',0);
	email=$('email');
	phone=$('phone');
	video=$('video');
	//spine=$('spine');
	closer.setStyle('display','block');
	next.setStyle('display','block');
	prev.setStyle('display','block');
	email.setStyle('display','block');
	phone.setStyle('display','block');
	images.each(
		function(element,i)
		{
			element.addEvent('load',updatebar);
			//alert(element.getPosition().top+'\n'+element.getPosition().left+'\n'+element.getPosition().width+'\n'+element.getPosition().height);
			spreads[i]=new spread(element.getStyle('left').toInt(),element.getStyle('top').toInt(),element.getStyle('width').toInt(),element.getStyle('height').toInt());
		});
	templayers.each(
		function(element)
		{
			var id=element.id.replace(/\D+/,'').toInt();
			element.setStyle('visibility','hidden');
			layers[id]=element;
		});
}

function checkNewsURL()
{
	if($('news').src.indexOf(newsurl)<0)
	{
		$('news').src=newsurl;
	}
}

function updatebar()
{
	barwidth+=Math.round(760/images.length);
    var barFx=new Fx.Morph($('loadingbar'),{duration:100,wait:false}).start({'width':barwidth});
	if(barwidth>730) hidebar();
}

function hidebar()
{
	if(!barhidden)
	{
		var barFx2=new Fx.Morph($('loadingbar'),{duration:100,wait:200}).start({'opacity':0});
		var blankFx=new Fx.Morph($('spreads'),{duration:100,wait:300}).start({'opacity':1});
		$('email').setStyle('visibility','visible');
		$('phone').setStyle('visibility','visible');
		barhidden=true;
	}
}

function shrink()
{
	clearLayer()
	//alert('shrink');
	closer.setStyle('opacity',0);
	next.setStyle('opacity',0);
	prev.setStyle('opacity',0);
	//email.setStyle('opacity',0);
	//phone.setStyle('opacity',0);
	for(var i=0;i<images.length;i++)
	{
		if(i!=currentspread)
		{
			thumbs[i].setStyle('visibility','visible');
			images[i].setStyle('left',spreads[i].left);
			images[i].setStyle('top',spreads[i].top);
			images[i].setStyle('width',spreads[i].width);
			images[i].setStyle('height',spreads[i].height);
			images[i].setStyle('z-index',10);
			//images[i].title='10';
		}
		images[i].setStyle('opacity',1);
	}
	var theObj=$('image'+currentspread);
	theObj.setStyle('z-index','100');
    var shrinkFx=new Fx.Morph(theObj,{duration:900,wait:false,transition:Fx.Transitions.Cubic.easeInOut}).start({'width':spreads[currentspread].width,'height':spreads[currentspread].height,'top':spreads[currentspread].top,'left':spreads[currentspread].left}).addEvent('onComplete',function(){theObj.setStyle('z-index','10');thumbs[currentspread].setStyle('visibility','visible');});
	//var spineFx=new Fx.Morph(spine,{duration:400,wait:800,transition:Fx.Transitions.Cubic.easeIn}).start({'opacity':1});
	expanded=false;
}

function expand(theLink)
{
	hidebar()
	var theId=($type(theLink)!='string')?theLink.id:theLink;
	var spread=parseInt(theId.replace(/\D+/g,''));
	if(expanded)
	{
		goto(spread);
		//shrink(theLink);
	}
	else
	{
		expanded=true;
		currentspread=spread;
		var expanding=images[currentspread];
		expanding.setStyle('z-index','100');
		thumbs[currentspread].setStyle('visibility','hidden');
		var expandFx=new Fx.Morph(expanding,{duration:900,wait:false,transition:Fx.Transitions.Cubic.easeIn}).start({'width':760,'height':537,'top':0,'left':0}).addEvent('onComplete',arrange);
		//HMMif(layers[currentspread]) var layerFx=new Fx.Morph(layers[currentspread],{duration:300,wait:900,transition:Fx.Transitions.Cubic.easeIn}).start({'opacity':1});
		//var spineFx=new Fx.Morph(spine,{duration:400,wait:700,transition:Fx.Transitions.Cubic.easeIn}).start({'opacity':0});
	}
}

function playVideo(theLink,theFile)
{
	var theObj=theLink.parentNode;
	var l=theObj.getStyle('left').toInt();
	var t=theObj.getStyle('top').toInt();
	var w=theObj.getStyle('width').toInt();
	var h=theObj.getStyle('height').toInt();
	video.setStyle('left',l);
	video.setStyle('top',t);
	video.setStyle('width',w);
	video.setStyle('height',h);
	video.setStyle('visibility','visible');
	var so=new SWFObject('http://www.thejoneses-nyc.com/videos/mediaplayer.swf','mpl',w,h,'8');
	//so.addParam('allowscriptaccess','always');
	//so.addParam('allowfullscreen','false');
	so.addVariable('height',h);
	so.addVariable('width',w);
	so.addVariable('file','http://www.thejoneses-nyc.com/videos/'+theFile);
	//so.addVariable('image','images/wibble.jpg');
	so.addVariable('frontcolor','0x000000');
	so.addVariable('backcolor','0x000000');
	so.addVariable('displayheight','220');
	so.addVariable('bufferlength','5');
	so.addVariable('searchbar','false');
	so.addVariable('showicons','false');
	so.addVariable('shownavigation','false');
	so.addVariable('showstop','true');
	so.addVariable('showdigits','false');
	so.addVariable('usefullscreen','false');
	so.addVariable('thumbsinplaylist','false');
	so.addVariable('autostart','true');
	so.addVariable('smoothing','false');
	so.write('video');
}

function showTitle(theObj)
{
	var i=theObj.id.replace(/link/,'');
	$('title'+i).setStyle('visibility','visible');
}

function hideTitle(theObj)
{
	var i=theObj.id.replace(/link/,'');
	$('title'+i).setStyle('visibility','hidden');
}

function arrange()
{
	for(var i=0;i<images.length;i++)
	{
		images[i].setStyle('width','760px');
		images[i].setStyle('height','537px');
		images[i].setStyle('top','0px');
		images[i].setStyle('left',((i<currentspread)?'-900px':((i>currentspread)?'900px':'0px')));
		//HMMif(layers[i]) layers[i].setStyle('left',((i<currentspread)?'-900px':((i>currentspread)?'900px':'0px')));
		if(i==currentspread) continue;
		thumbs[i].setStyle('visibility','hidden');
		images[i].setStyle('opacity',0);
	}
	showPN();
}

function showPN()
{
	var closerFx=new Fx.Morph(closer,{duration:200,wait:300}).start({'opacity':1});
	//var emailFx=new Fx.Morph(email,{duration:200,wait:300}).start({'opacity':1});
	//var phoneFx=new Fx.Morph(phone,{duration:200,wait:300}).start({'opacity':1});
	if(currentspread>0)
	{
		var prevFx=new Fx.Morph(prev,{duration:200,wait:300}).start({'opacity':1});
	}
	if(currentspread<(images.length-1))
	{
		var nextFx=new Fx.Morph(next,{duration:200,wait:300}).start({'opacity':1});
	}
	if(layers[currentspread])
	{
		layers[currentspread].setStyle('display','block');
		layers[currentspread].setStyle('opacity',0);
		layers[currentspread].setStyle('visibility','visible');
		var fadeFx=new Fx.Morph(layers[currentspread],{duration:300,wait:false,transition:Fx.Transitions.Cubic.easeIn}).start({'opacity':1});
	}
}

function fadeout(theObj)
{
    var fadeFx=new Fx.Morph(theObj,{duration:2000,wait:false}).start({'opacity':[1,0.5]});
}

function fadeIn(theObj)
{
    var fadeFx=new Fx.Morph(theObj,{duration:1200,wait:false}).start({'opacity':[0.5,1]});
}

function slideLeft(oldObj,newObj)
{
	fadeIn(newObj);
    var oldFx=new Fx.Morph(oldObj,{duration:1400,wait:false,transition:Fx.Transitions.Cubic.easeInOut}).start({'left':[0,-1020]}).addEvent('onComplete',function(){fadeout(oldObj)});
    var newFx=new Fx.Morph(newObj,{duration:1400,wait:false,transition:Fx.Transitions.Cubic.easeInOut}).start({'left':[1020,0]}).addEvent('onComplete',showPN);
}

function slideRight(oldObj,newObj)
{
	fadeIn(newObj);
    var oldFx=new Fx.Morph(oldObj,{duration:1400,wait:false,transition:Fx.Transitions.Cubic.easeInOut}).start({'left':[0,1020]}).addEvent('onComplete',function(){fadeout(oldObj)});
    var newFx=new Fx.Morph(newObj,{duration:1400,wait:false,transition:Fx.Transitions.Cubic.easeInOut}).start({'left':[-1020,0]}).addEvent('onComplete',showPN);
}

function clearLayer()
{
	//$clear(layerFade);
	video.innerHTML='';
	video.setStyle('visibility','hidden');
	for(var i=0;i<layers.length;i++)
	{
		if(layers[i]) layers[i].setStyle('display','none');
	}
}

function gonext()
{
	clearLayer();
	if(currentspread==newsspread) checkNewsURL()
	var theObj=images[currentspread];
	var nextObj=images[currentspread+1];
	currentspread++;
	if(currentspread==(images.length-1)) var nextFx=new Fx.Morph(next,{duration:200,wait:300}).start({'opacity':0});
	slideLeft(theObj,nextObj);
}

function goprev()
{
	clearLayer();
	if(currentspread==newsspread) checkNewsURL()
	var theObj=images[currentspread];
	var nextObj=images[currentspread-1];
	currentspread--;
	if(currentspread==0) var prevFx=new Fx.Morph(prev,{duration:200,wait:300}).start({'opacity':0});
	slideRight(theObj,nextObj);
}

function goto(tospread)
{
	if(currentspread!=tospread)
	{
		if(currentspread==newsspread) checkNewsURL()
		clearLayer();
		var theObj=images[currentspread];
		var nextObj=images[tospread];
		if(tospread==0)
		{
			var prevFx=new Fx.Morph(prev,{duration:200,wait:300}).start({'opacity':0});
		}
		else if(tospread==(images.length-1))
		{
			var nextFx=new Fx.Morph(next,{duration:200,wait:300}).start({'opacity':0});
		}
		if(currentspread>tospread)
		{
			slideRight(theObj,nextObj);
		}
		else
		{
			slideLeft(theObj,nextObj);
		}
		currentspread=tospread;
	}
}