var rand =1+Math.floor(Math.random()*16);
var fromHref = '#panel-contact-us';
var toHref = '#panel-home'+rand; 
var	homeCounter = rand+1;
// var loaded = false;
var position = 0;
var is_locked = false;

$(document).ready(function(){
	
	$('.panel').each(function() {
		$(this).attr('position', position++);
	});
	
	$('a').not('.external').address();
	$.address.change(function(e) {
			is_locked  = true;
			
			if (e.path.length>1) {
				if ($('#'+e.path.substring(1)).length) {
					if (e.path=='/panel-contact-us') {
						fromHref = '#panel-home1';
					};
					toHref = '#' + e.path.substring(1);
				} else {
					alert('No such slide! Going to Home Slide!'); 
					toHref = '#panel-home'+rand; 
				};
				
			} else {
				toHref = '#panel-home'+rand; 
			};
			fromHref = '#'+$('.active-panel').attr('id');
			
			
			if (fromHref != toHref) {
				$('.panel').removeClass('active-panel');
				$(toHref).addClass('active-panel ' + toHref.substring(1));
				
				if($(fromHref).hasClass('contentOnlySlide') && $(toHref).hasClass('contentOnlySlide')) {
					
					(parseInt($(toHref).attr('position')) > parseInt($(fromHref).attr('position'))) ? preloadImageInActivePanel('withContentOnlySlideRight') : preloadImageInActivePanel('withContentOnlySlideLeft');
				} else {
					
					(parseInt($(toHref).attr('position')) > parseInt($(fromHref).attr('position'))) ? preloadImageInActivePanel('withSlideRight') : preloadImageInActivePanel('withSlideLeft');
				};
				
				countSubsections();
				dealWithNavigation();
			};
			
			if (toHref=='#panel-home') {
				$('#navigation ul ul').hide();
			};
			
		
	});

	
	
	$('h1#logo a').mousedown(function(){
		if (!is_locked) {
			if (homeCounter > $('#category-home .section').length) {homeCounter = 1;};
			$('h1#logo a').attr('href', $('h1#logo a').attr('href').slice(0,11) + homeCounter );
			homeCounter++;
		
			$('#navigation ul ul').hide();	
		};
		
		
		return false;
	});
	
	
	
	
	$('#navigation a').not('.external').click(function(){
		return false;
	});
	$('#navigation a').mousedown(function() {
	});
	
	function countSubsections() {
		$('#counter div').css('visibility','hidden');
		if ($(toHref).parent().hasClass('subsection')) {
			$('#counter .total').text($(toHref).parent().children().length);
			$('#counter .current').text($(toHref).index()+1);
			$('#counter div').css('visibility','visible');
		};	
	};
 	countSubsections();
	
	var stayHighlighted = false;
	
	var current = $('.active-panel');
	var next = $('#panel-home'); //default value
	var prev = $('#panel-home'); //default value
	var parent = $('.active-panel').parent();
	
	$('#counter .arrow-next').mousedown(function() {
		current = $('.active-panel');
		parent = $('.active-panel').parent();
		
		if (parent.hasClass('category')) {
			if (current.hasClass('panel-case-studies')) {
				current = current.siblings().last();
			};
			navigateTree(current, prev, next, parent, 1, 'forward');	
			
			
		} else if(parent.hasClass('section')) {
			navigateTree(current, prev, next, parent, 2, 'forward');
			
		} else if(parent.hasClass('subsection')) {
			
			navigateTree(current, prev, next, parent, 3, 'forward');
			
		} else {
			return false;
		};
		
		$(this).attr('href', '#'+next.attr('id'));
		
		return false;
	});
	
	$('#counter .arrow-prev').mousedown(function() {
		
		current = $('.active-panel');
		parent = $('.active-panel').parent();
		
		if (parent.hasClass('category')) {
			
			navigateTree(current, prev, next, parent, 1, 'backward');
			
		} else if(parent.hasClass('section')) {
			
			navigateTree(current, prev, next, parent, 2, 'backward');
						
		} else if(parent.hasClass('subsection')) {
			
			navigateTree(current, prev, next, parent, 3, 'backward');
			
		} else {
			return false;
		};
		
		$(this).attr('href', '#'+prev.attr('id'));
		
		return false;
	});
	
	function navigateTree(_current, _prev, _next, _parent, _level, _direction) {
		
		if (_direction == 'forward') {
			
			switch(_level){
				case 1 : 
					if (_current.next().length) {
						_next = _current.next().find('.panel').eq(0);
					} else {
						
						_next = (_parent.next().length) ? _parent.next().find('.panel').eq(0) : _parent.siblings().first().find('.panel').eq(0);
					};
				break;	
				
				case 2 :
					if (_parent.hasClass('home-slide')) {
						_next = $('#panel-who-we-are');
					} else {
						if (_current.next().length) {
							_next = _current.next().find('.panel').eq(0);
						} else {
							_next = (_parent.next().length) ? _parent.next().find('.panel').eq(0) : _parent.parent().next().find('.panel').eq(0);
						};	
					};
				break;
				
				case 3 :
					// only for the case study slides
					
					if (_current.hasClass('last-panel')) {
						_next = $('#panel-who-we-work-with');
						break;
					} else {
						if (_current.next().length) {
							_next = _current.next();
						} else {
							if (_parent.next().length) {
								_next = _parent.next().find('.panel').eq(0);
							} else {
								
								if (_parent.parent().next().length) {
									_next = _parent.parent().next().find('.panel').eq(0);
								} else {
									if (_parent.parent().parent().next().length) {
										_next = _parent.parent().parent().next().find('.panel').eq(0);
									} else {
										_next = $('.category').find('.panel').eq(0);
									};
								};
							};
						};
					};
				break;
			};
		} else if (_direction == 'backward'){
			switch(_level){
				case 1 : 
					_prev = (_parent.prev().length) ? _parent.prev().find('.panel').eq(0) : _parent.siblings().last().find('.panel').eq(0);
				break;	
				
				case 2 :
					if (_parent.hasClass('home-slide')) {
						_prev = $('#panel-contact-us');
					} else {
						if (!_parent.prev().length && (_parent.parent().attr('id') == 'category-home')) {
							_prev = $('.category').last().find('.panel').eq(0);
						} else {
							_prev = (_parent.prev().hasClass('panel')) ?  _parent.prev() : _parent.prev().find('.panel').eq(0);	
						};	
					};
				break;
				
				case 3 :
					if (_current.parent().prev().length) {
						_prev = (_current.prev().length) ?  _current.prev() : _current.parent().prev();
					} else {
						_prev = (_current.prev().length) ? _current.prev() : $('#panel-who-we-work-with');
					};
				break;
			};
		};
		
		current = _current;
		next = _next;
		prev = _prev;
		parent = _parent;
		level = _level;
	};

	// logo gymnastics
	function fadeLogo(){
		$('h1#logo a').delay(4000).animate({opacity: 0.25, queue:false }, 1000);
	};
	fadeLogo();
	$('h1#logo a').hover(function(){ $(this).stop(true, true).animate({opacity: 1, queue: false});	}, fadeLogo	);
	
	
	// 	panels
 	$(window).resize(function(){
 		$('#dynamic, .panel').css({'width':$(document).width()});	
 	});	
 	$(window).resize();
	
	var client_t;
	$('#who-we-work-with .client').live('mouseover', function() {
		clearTimeout(client_t);
		$('#who-we-work-with .opening-text').fadeOut();
		$('#who-we-work-with .case-study').css({'visibility':'hidden'});
		$(this).prev().css({'visibility':'visible'});
		
		$('#who-we-work-with .client a').css({'color':'#6b6764', 'background':'none'});
		$(this).find('a').eq(0).css({'color':'#6b6764', 'background':'#ffd204'});
		
	});
	$('#who-we-work-with .client').live('mouseleave', function() {
		client_t = setTimeout(function() {
			$('#who-we-work-with .case-study').css({'visibility':'hidden'});
			$('#who-we-work-with .client a').css({'color':'#6b6764', 'background':'none'});
			$('#who-we-work-with .opening-text').delay(100).fadeIn();
		}, 100);
	});
	$('#who-we-work-with .case-study').live('mouseover',function() {
		clearTimeout(client_t);
	});
	$('#who-we-work-with .case-study').live('mouseleave',function() {
		$('#who-we-work-with .case-study').css({'visibility':'hidden'});
		$('#who-we-work-with .client a').css({'color':'#6b6764', 'background':'none'});
		$('#who-we-work-with .opening-text').delay(100).fadeIn();
	});
	
	
	
	$(document).keydown(function(e){
		  var keyCode = e.keyCode || e.which,
      	  arrow = {left: 37, up: 38, right: 39, down: 40 };
      	  
		  switch (keyCode) {
		    case arrow.left:
		      $('#counter .arrow-prev').click();
		    break;
		    case arrow.up:
		      startSlideshow();
		    break;
		    case arrow.right:
		      $('#counter .arrow-next').click();
		    break;
		    case arrow.down:
		      stopSlideshow();
		    break;
		  }
	});

	
	var autoSlide_t;
	function startSlideshow() {
		autoSlide_t = setInterval(function() {
			$('#counter .arrow-next').click();
		},1000);
	};
	function stopSlideshow() {
		clearTimeout(autoSlide_t);
	};

});
function preloadImageInActivePanel(type) {
	
	var new_src = $('.' + toHref.substring(1)).css('background-image');
	
	new_src = new_src.replace('"', '').replace('"', '').replace('url(', '').replace(')','');
	var new_img_loaded = false;
	var new_img = (new Image());
	new_img.src = new_src;
	
	if ($.browser.msie) {
		var ie_interval = setInterval(function() {
			if(new_img.complete != null && new_img.complete == true){ 
                new_img_loaded = true;
                clearInterval(ie_interval);
        	}
		}, 500);
	} else {
		new_img.onload = function() { new_img_loaded = true; }
	};
	
	// var img_load = $("<img/>");
	// 			$(img_load).unbind("load");
	// 			$(img_load).load(function() {
	// 				new_img_loaded = true;
	// 			}).error(function(){
	// 				new_img_loaded = true;
	// 			});
	// 			$(img_load).attr("src", new_src);
	
	
	if (new_img_loaded) {
		$(toHref).fadeIn();
	} else {
		var interval = setInterval(function() {
			
			if(new_img_loaded) {
				clearInterval(interval);
				switch(type) {
					case 'withFade': 
						$(toHref).fadeIn(); 
						is_locked = false;
						break;
					case 'withOneWaySlide': 
						$(toHref).css({'left':$(window).width()+'px', 'right':'auto'}).show().stop(true,true).animate({'left':'0'}, 500, function() {
							$('.panel').not('.active-panel').hide();	
							is_locked = false;
						});
						break;
					case 'withSlideRight': 
						$(toHref).css({'left':$(window).width()+'px', 'right':'auto'}).show().stop(true,true).animate({'left':'0'}, 500);
						$(fromHref).animate({'left':'-' + $(window).width()}, 500, function() {
							$('.panel').not('.active-panel').hide(); 
							is_locked = false;
						});
						break;
					case 'withSlideLeft': 
						$(toHref).css({'right':$(window).width()+'px', 'left':'auto'}).show().stop(true,true).animate({'right':'0'}, 500);
						$(fromHref).css({'left':'auto'});
						$(fromHref).animate({'right':'-' + $(window).width()}, 500, function() {
							$('.panel').not('.active-panel').hide();
							is_locked = false;
						});
						break;
						
					case 'withContentOnlySlideRight': 
					
						$(fromHref).find('.content').animate({'left': '-'+$(window).width()}, 500, function() {
							$(this).css({'left':'20px', 'right':'auto' });
						});				
						$(toHref).css({'left':$(window).width()+'px', 'right':'auto', 'background-position':'-99999px -99999px'}).show().stop(true,true).animate({'left':'0'}, 500,function() { 
							$(toHref).css({'background-position':'0 0'});
							$(fromHref).css({'left':'0', 'right':'auto' });
							$('.panel').not('.active-panel').hide(); 
							is_locked = false;
						});
						
						break;
					case 'withContentOnlySlideLeft': 
					
						$(fromHref).find('.content').animate({'left': +$(window).width()}, 500,function() {
							$(this).css({'left':'20px' })
						});				
						$(toHref).css({'right':$(window).width()+'px', 'left':'auto', 'background-position':'-99999px -99999px'}).show().stop(true,true).animate({'right':'0'}, 500,function() { 
							$(toHref).css({'background-position':'0 0'});
							$('.panel').not('.active-panel').hide(); 
							$(fromHref).css({'left':'auto', 'right':'0' });
							is_locked = false;
						});
						
						break;
				};
				
				fromHref = toHref;
				
			} else {
				return false;
			}
		}, 500);
	};
	
	

};
function dealWithNavigation() {
	$('#navigation a').removeClass('active hover');
	
	var active_menu_el = $('#navigation a[href="#' + $('.active-panel').attr('id') + '"]');
	if (active_menu_el.length) {
		active_menu_el.addClass('active');	
	} else {
		if ($('.active-panel').parent().siblings().first().hasClass('panel')) {
			$('#navigation a[href="' + '#'+ $('.active-panel').parent().siblings().first().attr("id") +'"]').addClass('active');	
			$('#navigation a[href="' + '#'+ $('.active-panel').parent().parent().siblings().first().attr("id") +'"]').addClass('active');	
		} else {
			$('#navigation a[href="' + '#'+ $('.active-panel').parents('.category').find('.panel').eq(0).attr("id") +'"]').addClass('active');	
		};
	};
	
	active_menu_el.parent().find('ul').eq(0).slideDown();
	active_menu_el.parents('ul').show();
	active_menu_el.parents('li').siblings().find('ul').slideUp();
	
	active_menu_el.parents('li').each(function() {
		$(this).find('a').eq(0).addClass('active');
	});
		
};




