//soundsuitshop 0.9 beta by Robb Irrgang <robb@cartelblanche.com> for Faust Ltd
//why jsdoc when you can leave clever notes until you hit 1.0?

//why do I still have to do things like this?
var is_ie6 = ('ActiveXObject' in window && !('XMLHttpRequest' in window));
var mainItem = false;
var mainExpanded = {};

mainExpanded['nav_shop'] = false;
mainExpanded['nav_blog'] = false;

//track hash changes, fade content based on it
function initializeHashManager() {
	$(window).hashchange( function(){
		if (window.location.hash == '#content') {
			$('.about, .shop, .calendar, .message, .blog')
				.fadeOut('slow', function() {	
					$('.content').fadeIn('slow'); 
				});
		}

		if (window.location.hash == '#scene') {
			_gaq.push(['_trackPageview', '/scene']);
 			$('#nav_blog > a').click();
			$('#calendar_li').removeClass('active');
			$('.about, .shop, .calendar, .message, .content')
				.fadeOut('slow', function() { 
					$('.blog').fadeIn('slow'); 
				});
		}
	
		if (window.location.hash == '#shop') {
			_gaq.push(['_trackPageview', '/shop']);
			$('#nav_shop > a').click();
			$('#calendar_li').removeClass('active');
			$('.blog, .about, .calendar, .message, .content')
				.fadeOut('slow', function() {	
					$('.shop').fadeIn('slow'); 
				});
		}
	})
	
	$(window).hashchange();
}

//recalculate relevant dimensions onresize
var resizeManager = function() {
	var wH = $(window).height();
	var wW = $(window).width();
	
	$('nav ul li ul li div.options').each(function() {
		var uH = $(this).find('li').length*156+31+30+30;

		if (uH > wH) { 
			//menu is bigger than windowheight; show controls
			$(this).parent().removeClass('hide_controls');
			var nh = Math.floor(((wH-31)/156)-1)*156;
			$(this).data('visible_items', Math.floor((wH-31)/156)-1);
			$(this).data('total_items', $(this).find('li').length);
			$(this).data('offset', 0);
			$(this).height((nh+29)+'px'); //resize menu w/controls to fit windowheight (rounded down) 
		} else {
			$(this).parent().addClass('hide_controls'); //hide irrelevant controls
			if ($(this).parent().find('a.archive').length==0||
				$(this).parent().find('a.archive').hasClass('inactive')) {
				$(this).parent().find('div.controls').hide();
			} else {
				$(this).parent().find('a.up, a.down').addClass('inactive');
			}
		}
	});
	
	//center logotype
	var tW = 400;
	if (mainExpanded['nav_shop'] || mainExpanded['nav_blog'])
		tW += 400;

	$('header h1 a').width(wW-tW);

	//search control blur/focus
	$('#nav_search_input').bind('focus', function() {
		var cV = $(this).val();
		if (cV == 'search') {
			$(this).val('');
		} 
	}).bind('blur', function() {
		var cV = $(this).val();
		if (cV == '') {
			$(this).val('search');
		} 			
	});

	//floater resize handler
	$('.resized').each(function() {
		$(this).find('div.wrapper').css('height', 'auto');
		$(this).removeClass('resized');
	});
	
	$('.floater').each(function() {
		if (!$(this).hasClass('noscroll')) {
 			var fh = $(this).height() + parseInt($(this).css('top'));
			if (wH < fh) {
				$(this).addClass('resized');
				
				var nH = wH-parseInt($(this).css('top'))-150;

				if (nH < 200) {
					nH = 200;
				}
					
				$(this).find('div.wrapper')
					.css('height', nH+'px')
					.css('overflow-x', 'hidden')
					.css('overflow-y', 'auto');
				
				if (!is_ie6) {
					$(this).find('div.wrapper').scrollbarPaper();
				}
			}
		}
	})
}

//obviously named function is obviously named.
function collapseNav(mainItem) {
		mainExpanded[mainItem] = false;
		$('nav ul li#'+mainItem).animate({width: 100}, 500, function() {
			$('nav > ul > li#'+mainItem).removeClass('active');
		});
}

//initialize nav 	
function setNavBehavior() {
	$('nav > ul > li > a').each(function() {
		var thisItem = $(this).parent().get(0).id;
		if ($(this).parent().get(0).id != 'nav_logotype') {
			$(this).parent().children('ul').width(500);			
		}
	})

	$('nav > ul > li > a').click(function() {
		var thisItem = $(this).parent().get(0).id;

		//slightly odd workaround for category "home" floaters when in said category
		if (thisItem == mainItem) {
			if (thisItem == 'nav_shop') {
				window.location.hash = 'shop';
			}
			if (thisItem == 'nav_blog') {
				window.location.hash = 'scene';
			}
			return false;
		}
		
		//animate collapse if subnav exists
		if (mainItem == 'nav_blog' || mainItem == 'nav_shop') {
			collapseNav(mainItem);
		} else {
			$('nav > ul > li').removeClass('active');		
		}

		//animate expansion if subnav exists				
		if (thisItem == 'nav_blog' || thisItem == 'nav_shop') {
			mainExpanded[thisItem] = true;
			
			$(this).parent()
				.width(100)
				.addClass('active')
				.animate({width: 500}, 500);
		} else {
			$(this).parent().addClass('active');
		}

		mainItem = thisItem;
		
		resizeManager();
		
	}) 
}

//overall initialization	
function initializeSSS() {
	//initialize story
	$('#nav_about a').click(function() {
		$('.blog, .shop, .calendar, .message, .content').fadeOut('slow', function() {	$('.about').fadeIn('slow'); });
		return false;
	});
	
	//initialize calendar
	$('#calendar_li a').click(function() {
		$('#calendar_li').addClass('active');
		$('.blog, .shop, .about, .message, .content').fadeOut('slow', function() {	$('.calendar').fadeIn('slow'); });
		return false;
	});

	//initialize toggle
	var toggleFloater = function() {
		var p = $(this).closest('.floater');
		if (p.hasClass('collapsed')) {
			p.removeClass('collapsed');
			p.height((p.find('footer').length+1)*30).animate({height: p.data('h')}, 'slow', function() {
			})

		} else {
			p.data('h', p.height());
			p.animate({height: (p.find('footer').length+1)*30}, 'slow', function() {
				$(this).addClass('collapsed');			
			});
		}
	}
	
	//initialize drag. don't put drag on divs with flash embeds since clicks get lost
	$('.floater').find('.close a')
				.click(toggleFloater);

	$('.floater').find('.x a').unbind('click')
				.click(function() { $('.message').fadeOut('slow'); });

     $('.floater').not('.lock').bind('dragstart', function(ev, dd) {
     	var whereDrag = dd.startY-parseInt($(dd.target).css('top'));
        return $(ev.target).is('.bar h3');
	})
	.bind('drag',function(ev, dd){
		if (dd.offsetY < 31) {
			dd.offsetY = 31;
		}
			
		if (dd.offsetX < 0) {
			dd.offsetX = 0;
		}
			
		var wW = $(window).width();
			
		if (dd.offsetX+$(this).width() > $(window).width()) {
			dd.offsetX = $(window).width() - $(this).width();
		}
			
		$(this).css({ 
			top: dd.offsetY, 
			left: dd.offsetX, 
			opacity: 0.5 
		}).addClass('dragging');
	})
	.bind('dragend', function() { 
		$(this).css('opacity', '1').removeClass('dragging')
	})
	
	//floaters can be doubleclicked to collapse. you know. for kids.
	$('.floater .bar').bind('dblclick', toggleFloater);
	
	//scroll nav up
	$('.controls .up').click(function() {
		var wH = $(window).height();
		var wW = $(window).width();

		var d = $(this).parent().parent();

		if (d.hasClass('blog')) {
			d = d.parent();
		}
		
		var u = d.find('ul');
		
		if (d.data('offset')>0) {	
			d.data('offset', d.data('offset')-1);
			u.animate({'margin-top': (d.data('offset')*-156)+'px'}, 200);
			
			if (d.data('offset') == 0) {
				$(this).parent().find('a.up').addClass('inactive');
			}
		}
		
		if (d.data('offset')<(d.data('total_items')-d.data('visible_items'))) {
			$(this).parent().find('a.down').removeClass('inactive');
		}

		return false;
	});

	//scroll nav down
	$('.controls .down').click(function() {
		var wH = $(window).height();
		var wW = $(window).width();

		var d = $(this).parent().parent();
		
		if (d.hasClass('blog')) {
			d = d.parent();
		}
		
		var u = d.find('ul');
		
		if (d.data('offset')<(d.data('total_items')-d.data('visible_items'))) {			
			$(this).parent().find('a.up').removeClass('inactive');
		
			d.data('offset', d.data('offset')+1);			
			u.animate({'margin-top': (d.data('offset')*-156)+'px'}, 200);
			
			if (d.data('offset')==(d.data('total_items')-d.data('visible_items'))) {
				$(this).parent().find('a.down').addClass('inactive');
			}

		}
		return false;
	});
	
	window.onresize = resizeManager;
	resizeManager();
}

//initialize home movie
function initializeHome() {
	var window_w = $(window).width();
	var window_h = $(window).height();		
	
	var image_ratio = 01280/720;
	
	var image_w = window_w;
	var image_h = Math.round(image_w/image_ratio);

	if (image_h < window_h) {
		image_h = window_h;
		image_w = Math.round(image_h*image_ratio);
	}

	image_w += 4;
	image_h += 4;

	if (Modernizr.video && Modernizr.video.h264) {
				$('body').append('<div class="backdrop" id="home_backdrop" style="background: #fff; width: '+image_w+'px; height: '+image_h+'px; margin-left: -'+Math.round(image_w/2)+'px; margin-top: -'+(Math.round(image_h/2)-2)+'px; z-index: 1"><video autoplay loop width="'+image_w+'" height="'+image_h+'" src="/assets/videos/sss_home_video.mp4" type=\'video/mp4\'></video></div>');
	} else {
		var flashvars = {
			movieURL: "/assets/videos/sss_home_video.mp4"
		};

		var params = {
		  wmode: "transparent",
		  menu: "false"
		};
		
		var attributes = { };
		$('body').append('<div class="backdrop" id="home_backdrop" style="background: #fff; width: '+image_w+'px; height: '+image_h+'px; margin-left: -'+Math.round(image_w/2)+'px; margin-top: -'+Math.round(image_h/2)+'px"><div id="home_movie"></div></div>');

		swfobject.embedSWF("/assets/videos/sss_player.swf", "home_movie", Math.round(image_w*1), Math.round(image_h*1), "9.0.0","expressInstall.swf", flashvars, params, attributes);
	}
}

//blog & shop
function initializeShare() {
	$('.floater footer .share a').click(function() {
		$(this).parent().toggleClass('share_on');
	});
}

//slightly hacky but functional. Twitter share does NOT like properly encoded emdashes and whatnot.
function urlencode(str) {
	return escape(str).replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40').replace(/\+/g,'%20').replace(/\%u2014/g, '-');	
}

function shareTwitter() {
	window.location = 'http://twitter.com/home?status='+urlencode(page.title+' '+page.link);
}

function shareFacebook() {
	window.location = 'http://www.facebook.com/share.php?u='+page.link;
}

function shareEmail() {
	window.location = 'mailto:?subject='+page.title+' on SoundSuitShop.com&body=I thought you might like this link.%0A%0A '+page.link;
}

//blog

var currentImage = 1;	

/* 
function showImage(n) {
	$('#vimeo_backdrop').hide();
	$('#faust_backdrop').html('');
	if (backdrop_types[n] == 'image') {
		$('#faust_backdrop').resizify(backdrops[n]);
	} else {

		if (backdrop_types[n] == 'video_fullscreen') {
			$('#faust_backdrop').resizify_vimeo(backdrops[n], {});
		} else {
			$('#faust_backdrop').resizify_vimeo(backdrops[n], {max_def: 720});
		}

	}

	$('h1 a').removeClass('orange').removeClass('white').addClass(logos[n].toLowerCase());
} 

*/

//gimme an o. gimme a b. gimme a v. gimme the rest.
function nextImage() {
	currentImage++;
	if (currentImage>slides.length)
		currentImage = 1;
		
	if (vimeos[currentImage-1].length>0) {
		if (vimeo_fs[currentImage-1]==0) {
			$('#ss_backdrop').resizify_vimeo(vimeos[currentImage-1], {max_def: 720});	
		} else {
			$('#ss_backdrop').resizify_vimeo(vimeos[currentImage-1], {});
		}
	} else {
		$('#ss_backdrop').resizify('/wp-content/files_mf/'+slides[currentImage-1]);
	}
}

//ob.vi.ous. 	
function prevImage() {
	currentImage--;
	
	if (currentImage==0)
		currentImage = slides.length;

	if (vimeos[currentImage-1].length>0) {
		if (vimeo_fs[currentImage-1]==0) {
			$('#ss_backdrop').resizify_vimeo(vimeos[currentImage-1], {max_def: 720});	
		} else {
			$('#ss_backdrop').resizify_vimeo(vimeos[currentImage-1], {});
		}
	} else {
		$('#ss_backdrop').resizify('/wp-content/files_mf/'+slides[currentImage-1]);
	}
}

//set up the menu w/o animation
function initializeBlog() {
	mainExpanded['nav_blog'] = true;
			
	var thisItem = 'nav_blog';

	$('nav > ul > li').removeClass('active');		
			
	mainExpanded[thisItem] = true;
		
	$('#nav_blog')
		.width(500)
		.addClass('active');

	mainItem = thisItem;
	
	var wW = $(window).width();
	var tW = 400;
	if (mainExpanded['nav_shop'] || mainExpanded['nav_blog'])
		tW += 400;

	$('header h1 a').animate({width: (wW-tW)}, 1);
}

//shop

//set up the menu w/o animation
function initializeShop() {
	mainExpanded['nav_shop'] = true;
			
	var thisItem = 'nav_shop';

	$('nav > ul > li').removeClass('active');		
			
	mainExpanded[thisItem] = true;
		
	$('#nav_shop')
		.width(500)
		.addClass('active');

	mainItem = thisItem;
	
	var wW = $(window).width();
	var tW = 400;
	if (mainExpanded['nav_shop'] || mainExpanded['nav_blog'])
		tW += 400;

	$('header h1 a').animate({width: (wW-tW)}, 1);
}

//obvious, again.
function switchImage(n) {
	if (currentImage != n) {
		if (vimeos[n-1].length>0) {
			if (vimeo_fs[n-1]==0) {
				$('#ss_backdrop').resizify_vimeo(vimeos[n-1], {max_def: 720});	
			} else {
				$('#ss_backdrop').resizify_vimeo(vimeos[n-1], {});
			}
		} else {
			$('#ss_backdrop').resizify('/wp-content/files_mf/'+slides[n-1]);
		}
		
		currentImage = n;
	}
}

