
$().ready(function(){

	// initialize fancybox
	$('.gallery a, .single-image a').not('.internal').fancybox();

	// cascade clicks on navigation squares
	$('#mainnav>li, #socialnav li').not('.active').click( function() {
		window.location.href = $(this).find('a').eq(0).attr('href');
	});//.append('<div class="background" />');
	
	

	// cascade clicks on teasers
	$('div.teaser').click(function(){
		window.location.href=($(this).find('a.proceed:first').attr('href'));
	});





	/* * * * * * * * * * * * * * * * * * * * 
	 * build elements
	 */
	
	// inject social navigation
	/*
	$('#mainnav').after( 
		$('<ul/>').attr({id:'socialnav',class:'nav'}).
		append( $('<a/>').attr({href:'#'}).html('facebook') ).
		append( $('<a/>').attr({href:'#'}).html('twitter') ).
		append( $('<a/>').attr({href:'#'}).html('rss') ).
		append( $('<a/>').attr({href:'#'}).html('blog') )
	).next().find('a').wrapInner('<span/>').wrap('<li/>');
	$('#socialnav li').each(function(){
		$(this).attr('title',$(this).find('a span').text());
	});/**/




	/* * * * * * * * * * * * * * * * * * * * 
	 * enhance usability on blog elements
	 */
	
	// set titles for general blog navigation elements
	$('div.home-link a, div.next-posts-link a, div.previous-posts-link a').each( function() { 
		$(this).attr('title',$(this).text());
	});




	/* * * * * * * * * * * * * * * * * * * * 
	 * init mass-content modules, such as galleries and newsfeed
	 */
	
	// build paginators
	$('div.gallery ul, div.news ul').each(function(){
		$(this).clone().appendTo($(this).parent()).addClass('paginator').find('li').mouseover( paginatorMouseHandler).html('•');
	})
	if(!$.browser.msie) 
		$('div.gallery ul, div.news ul').swipe({
			threshold: 	{ x: 40, y: 40 },
			swipeLeft: 	function() { swipeHandler.call(this, 1); },
			swipeRight: function() { swipeHandler.call(this,-1); }
		});

	// news rotation
	$('div.news ul:first').addClass('news').find('li').hide().eq(0).addClass('current').show();
	window.newsInterval = setInterval(newsRotateAll, window.newsDelay = 12*1000);

	// gallery rotation
	$('.gallery ul:first-child').css({ position: 'relative', left: '0px', top: '0px', padding: 0, overflow: 'visible' }).find('li').hide().find('img').css({ display: 'block' });
	$('.gallery ul:first-child li:first-child').addClass('current').show();
	window.galleryInterval = setInterval(imgRotateAll, window.galleryDelay = 5*1000);

	// trigger paginator
	$('.gallery, .news').each( updatePaginator);

	



	/* * * * * * * * * * * * * * * * * * * * 
	 * background/visual formatting
	 */
	
	// set up background image
	$('img.slidebg').maxImage({   isBackground: true, verticalAlign: 'bottom' , horizontalAlign: 'center', overflow: 'auto' });
	
	// on touch devices, swap image source and switch to a "real" body background image
	if(isTouchDevice()) {
		/*
		var bg = $('img.slidebg')[0];
		$('body').addClass('touch').css('background','url("'+bg.src.replace("large","touch-bg")+'") center top no-repeat');
		$('#bgwrap').detach();
		/**/
	}
	
	// on larger screens, swap image source to full-hd version
	else if(screen.width>1024) {
		var bg = $('img.slidebg')[0];
		bg.src = bg.src.replace("large","no-resize");
	}

	if(isTouchDevice()) {
		// remove scrolling class from mainwrap to enable full-document scrolling
		$('#mainwrap').removeClass('scr');
		
		// reposition background when page scrolls
		/*
		$(document).scroll(reposBackground).scroll();
		/**/
		
/*		// on iOS, set up mainwrap to fill virtual viewport width, i.e. 980px
		if(navigator.platform.indexOf('iOS') != -1) {
			$('#mainwrap').width(980);
			var viewport = $('meta[name="viewport"]').attr('content');
			$('meta[name="viewport"]').attr('content', viewport.replace('device-width', screen.width > screen.height ? '980' : '600' ));
		}*/
		
		resizeNewsbox();
	}
	else {
		// resize handler to re-position background vertically, keeping virtual horizon at a fixed position
		$(window).resize(resizeHandler).resize();
		
		// focus on mainwrap as scrollable element, to enable keyboard-based scrolling
		var stage;
		if(stage = document.getElementById('mainwrap')) {
			if(stage.focus) 
				stage.focus();
			if(stage.blur) 
				stage.blur();
		}
	}

	
	
	/* * * * * * * * * * * * * * * * * * * * 
	 * forms and ajax
	 */
	
	// mark required fields in forms
	$('fieldset .required').each(function(){ $('label[for='+$(this).attr('id')+']').append('<span>*</span>') })


	//validation handler for contact form
	$("#contact").validate({
		submitHandler: function(form) {
			// do other stuff for a valid form
			$(form).find('input,textarea').attr('readonly','1').parents('.form').addClass('loading').find('input').attr('readonly',true);
			$(form).ajaxSubmit({
				dataType: 	'html',
				data: 		{ _ajax:1 },
				success: 	function(data, textStatus, XMLHttpRequest) {
								$('#contact').parents('.form').removeClass('loading').replaceWith(data);
								(window.data = data);
							}
			});
			
		}
	});

	
	
	/* * * * * * * * * * * * * * * * * * * * 
	 * handler for collapsed / expandable content
	 */
	$('div.standard.collapsed').find('h2:first').addClass('clickable').click(function(){$(this).toggleClass('expanded').next().slideToggle();}).siblings().wrapAll('<div/>').parent().hide();

});

function reposBackground(){
	$('body').css('background-position','center '+pageYOffset+'px');
}

function deBubble(e){
	var event = e || window.event;
	if(!event)
		return;
	if(event.stopPropagation)
		event.stopPropagation();
	else
		event.cancelBubble = true;
}

function updatePaginator(index) {
	if(typeof(index)!="number") 
		index = $(this).find('li.current').prevAll().length;
	$(this).find('ul.paginator li').fadeTo(0,0.4).eq(index).fadeTo(0,1);
}

function paginatorMouseHandler(){
	var container = $(this).closest('div'), index = $(this).prevAll().length;
	container.addClass('manual');
	rotate.call(container, index); 
}

function newsRotateAll() {
	$('div.news').not('.manual').each( rotate);
}

function imgRotateAll() {
	$('.gallery').not('.manual').each( rotate);
}

function rotate(  index, Element) {
	var iHandler, oHandler;
	if($(this).closest('div').hasClass('gallery')) {
		iHandler = function(){
			$(this).css({ position: 'absolute', zIndex: 1 }).fadeIn($(this).closest('div').hasClass('manual')?'fast':'slow',function(){
				$(this).parent().children('li').not(this).hide();
				$(this).show().css({ position: 'relative', zIndex: 0 });
			});
		};
		oHandler = function(){};
	}
	else if($(this).closest('div').hasClass('news')) {
		var asc = ( $(this).find('ul:first li.current').prevAll().length < index || Element );
		iHandler = function(){
			$(this).show().css({left: asc ? "100%" : "-100%" }).animate({left:"0%"},$(this).closest('div').hasClass('manual')?'fast':'slow');
		};
		oHandler = function(){
			$(this).animate({left: asc ? "-100%" : "100%"},$(this).closest('div').hasClass('manual')?'fast':'slow');
		};
	}

	if(typeof(index)=="number" && !Element) 
		$(this).find('ul:first li.current').removeClass('current').each(oHandler).parent().children().eq(index).addClass('current').each(iHandler);
	else if($(this).find('ul:first li.current').next().length)
		$(this).find('ul:first li.current').removeClass('current').each(oHandler).next().addClass('current').each(iHandler);
	else
		$(this).find('ul:first li.current').removeClass('current').each(oHandler).parent().children(':first').addClass('current').each(iHandler);
	updatePaginator.call(this);
}

function isTouchDevice() {
	var el = document.createElement('div');
	el.setAttribute('ongesturestart', 'return;');
	if(typeof el.ongesturestart == "function"){
		return true;
	}else {
		return false;
	}
}

function swipeHandler( offset ) {
	var target, item = $(this).parent(), current = $(this).children('.current').prevAll().length, max = $(this).children().length -1;
	item.addClass('manual'); 
	if(offset < 0 && current == 0)
		target = max;
	else if( offset > 0 && current == max) 
		target = 0;
	else
		target = current + offset;
	rotate.call( item, target);
}


function resizeNewsbox() {
	var a=0;
	$('ul.news li',a).each(function(){if(a<$(this).height()) a = $(this).height()}); 
	$('ul.news').height(a);
}


function resizeHandler(){
	var i = $('.slidebg').eq(0);
	$('.slidebg').css( { 
		marginTop: (
		 
			(( 1 - $(window).height() / $(window).width()  ) * 
			$(window).width() + $(window).height()) * 
			i.attr('baseline') /*/i.attr('origheight')*/ *
			-1
			
		), top: '25em'
	});
	 
	resizeNewsbox();
}

if(!window.console)
	var console = {
		log:	function(){}
	}

