$(document).ready(function(){
	RoomScroll();
	
	$('.TestimonialFeed').cycle({ 
	    fx: 'fade', 
	    speed: 2500,
		pause: true,
		timeout: 10000,
		slideExpr: 'p'
	 });
	 
	 $('.MenuLeft li li, .MenuRight li li').each(function(){
		var href = '';
		if($(this).find('a')){
			href = $(this).find('a').attr('href');
		}
		if(href != ''){
			$(this).css({cursor: 'pointer'}).click(function(){
				window.location = href;
			});
		}
	 });
	 
	$('.Home #tweets').tweetable({username: 'DSMdesign', time: true, limit: 1});
});

var roomWidth = 3600;							// Length of room
var myPanels = new Array(0, 900, 1800, 2700);	// Positions of each panel
var currentPanel = 0;							// Current panel (0, 1, 2, 3, etc.)
var currentLocation = 0;						// Current location (x-co-ordinate)
var locked = false;
var speed = 1;
var autoOn = true;
var autospeed = 0.5;
var layer1 = '.Furniture1';						// Furniture for layer 1
var speed1 = 1.05;
var layer2 = '.Furniture2, .Furniture4';
var speed2 = 1.2;
var layer3 = '.Furniture3';
var speed3 = 1.4;
var offset = 0;

function RoomScroll(){
	BuildRoom();
	RoomScrollEvents();
}

function BuildRoom(){
	$('.Home .MainContentWrap').prepend('<div class="ScrollLeft"></div>').append('<div class="ScrollRight"></div>');
	$('.Panel .Picture').wrapInner('<div class="Framed"></div>');
	$('.Panel .Picture.LCD').append('<div class="Frame LCD"></div>');
	$('.Panel .Picture.WoodFrame').append('<div class="Frame WoodFrame"></div>');
	$('.Panel .Picture.WoodFrameSlant').append('<div class="Frame WoodFrameSlant"></div>');
	$('.Panel .Picture').each(function(){
		var href = '';
		if($(this).find('a')){
			href = $(this).find('a').attr('href');
		}
		if(href != ''){
			$(this).find('.Frame').css({cursor: 'pointer'}).click(function(){
				window.location = href;
			});
		}
	});
	var count = 1;
	$('.Enhance2ContentElement2 img').each(function(){
		$(this).addClass('Furniture');
		$(this).addClass('Furniture' + count);
		count++;
	});
	$(layer1).attr('speed', speed1);
	$(layer2).attr('speed', speed2);
	$(layer3).attr('speed', speed3);
}

function RoomScrollEvents(){
	$('.ScrollRight').click(function(){
		autoOn = false;
		ScrollForwards();
	});	
	$('.ScrollLeft').click(function(){
		autoOn = false;
		ScrollBackwards();
	});	
	setTimeout("DSMWelcome()",4000);
	setTimeout("AutoScroll()",8000);	
}

function DSMWelcome(){
	$('.DSMWelcome').fadeOut(1500);
}

function AutoScroll(){
	if(autoOn == true){
		var tempspeed = speed;
		speed = autospeed;
		ScrollForwards();
		speed = tempspeed;
		setTimeout("AutoScroll()",8000); 
	}
}

function ScrollForwards(){
	if(locked == false){
		locked = true;
		
		var nextPanel = (currentPanel + 1) % myPanels.length;
		var newLocation = myPanels[nextPanel];
		while(newLocation < currentLocation){ newLocation += roomWidth; }
		var distanceToTravel = newLocation - currentLocation;
		
		$('.MainContent').animate({backgroundPosition: '-=' + distanceToTravel + 'px 0px'}, 2000 / speed, 'swing', function(){
		  var outpanel = currentPanel + 1;
		  var inpanel = nextPanel + 1;
		  $('.Panel' + outpanel + ' .Text').animate({opacity: 0});
		  $('.Panel' + inpanel + ' .Text').animate({opacity: 1});
		});
		$('.Panel').animate({left: '-=' + distanceToTravel  + 'px'}, 2000 / speed, 'swing');
		$(layer1).animate({left: '-=' + distanceToTravel * speed1 + 'px'}, 2000 / speed, 'swing');		
		$(layer2).animate({left: '-=' + distanceToTravel * speed2 + 'px'}, 2000 / speed, 'swing');
		$(layer3).animate({left: '-=' + distanceToTravel * speed3 + 'px'}, 2000 / speed, 'swing', function(){
		  currentPanel = nextPanel;
		  currentLocation = newLocation;
		  offset++;
		  NormaliseForwards();
		  locked = false;
		});
	}
}

function ScrollBackwards(){
	if(locked == false){
		locked = true;
		
		var nextPanel = (currentPanel - 1);
		if(nextPanel < 0){ nextPanel += myPanels.length; }
		var newLocation = myPanels[nextPanel];
		while(newLocation > currentLocation){ newLocation -= roomWidth; }
		var distanceToTravel = currentLocation - newLocation;
		
		$('.MainContent').animate({backgroundPosition: '+=' + distanceToTravel + 'px 0px'}, 2000 / speed, 'swing', function(){
		  var outpanel = currentPanel + 1;
		  var inpanel = nextPanel + 1;
		  $('.Panel' + outpanel + ' .Text').animate({opacity: 0});
		  $('.Panel' + inpanel + ' .Text').animate({opacity: 1});
		});
		$('.Panel').animate({left: '+=' + distanceToTravel + 'px'}, 2000 / speed, 'swing');
		$(layer1).animate({left: '+=' + distanceToTravel * speed1 + 'px'}, 2000 / speed, 'swing');
		$(layer2).animate({left: '+=' + distanceToTravel * speed2 + 'px'}, 2000 / speed, 'swing');
		$(layer3).animate({left: '+=' + distanceToTravel * speed3 + 'px'}, 2000 / speed, 'swing', function(){
		  currentPanel = nextPanel;
		  currentLocation = newLocation;
		  offset--;
		  NormaliseBackwards();
		  locked = false;
		});
	}
}

function NormaliseForwards(){
	$('.Furniture').each(function(){
		if((parseInt($(this).css('left').replace('px', ''))) < 0){
			var moves = myPanels.length; //(Math.abs(offset) % myPanels.length) + myPanels.length;
			var move = (parseInt($(this).css('left').replace('px', '')));
			for(var i = 0; i < moves; i++){
				var dist = 900 * (parseFloat($(this).attr('speed'))); // Needs changing if variable panel widths
				move += dist;
			}
			$(this).css('left', move + 'px');
		}
	});
	NormaliseAll();
}

function NormaliseBackwards(){
	$('.Furniture').each(function(){
		if((parseInt($(this).css('left').replace('px', ''))) > roomWidth){
			var moves = myPanels.length; //(Math.abs(offset) % myPanels.length) + myPanels.length;
			var move = (parseInt($(this).css('left').replace('px', '')));
			for(var i = 0; i < moves; i++){
				var dist = 900 * (parseFloat($(this).attr('speed'))); // Needs changing if variable panel widths
				move -= dist;
			}
			$(this).css('left', move + 'px');
		}
	});
	NormaliseAll();
}

function NormaliseAll(){
	if(currentLocation < 0){
		currentLocation += roomWidth;
	}
	if(currentLocation > roomWidth){
		currentLocation -= roomWidth;
	}
	$('.Panel').each(function(){
		var oldPos = $(this).css('left');
		oldPos = parseInt(oldPos.replace('px', ''));
		var newPos = oldPos;
		if(oldPos < 0 - (parseInt($(this).css('width').replace('px', '')) / 2)){
			newPos = oldPos + roomWidth;
		}
		if(oldPos > roomWidth - (parseInt($(this).css('width').replace('px', '')) / 2)){
			newPos = oldPos - roomWidth;
		}
		$(this).css({left: newPos + 'px'});
	});
	var backgroundpos = parseFloat($('.MainContent').css('backgroundPosition').replace('px', ''));
	if(backgroundpos < roomWidth *-1){
		$('.MainContent').css({backgroundPosition: backgroundpos + roomWidth + 'px 0px'});
	}else if(backgroundpos > roomWidth){
		$('.MainContent').css({backgroundPosition: backgroundpos - roomWidth + 'px 0px'});
	}
}