Landing = function() {
	var that = this;
	
	this.init = function () {
		console.log('Landing::init()');
		that.renderLandingPage();
	}
	
	this.renderLandingPage = function () {
		console.log('Landing::renderLandingPage()');
		var cont = $('#blog_container');
		//that.puffFiller();
		
		that.initPosters();
		var startTime = new Date().getTime()*1;
		
		// IE 9 SEEMS TO NOT CATCH THE imagesLoaded event
		//cont.imagesLoaded( function() {
			$('#blog_container').masonry({
				itemSelector: '.blog_item',
				columnWidth: CFG.columnWidth
			});
		//});	
		
		var endTime = new Date().getTime()*1;
		console.log('Masonry exec: '+(endTime-startTime)+' milliseconds');
		// LISTENER FOR PERPETUAL SCROLL & SET FILM BUTTONS
		$(window).scroll(that.checkPageBottom);
		$('.load_more_posts').click(that.loadMorePosts);
		$('#blog_container').bind('postsAppended.LANDING', that.onPostsAppended);
		
		setTimeout(that.setFilmButtons, 500);
		
		// SETUP SEARCH
		that.setupSearchForm();
		
		//CONVERT LINKS
		that.convertLinksToAjax();
	}
	
	this.onPostsAppended = function () {
		that.setFilmButtons();
		that.convertLinksToAjax();
	}
	
	this.convertLinksToAjax = function () {
		var cnt = 0;
		$('.blog_item').each(function () {
			if(!$(this).hasClass('ajaxed') && !$(this).hasClass('ad')) {
				var lnk = $(this).find('.read_more_link');
				if(lnk.length > 0) {
					var frag = that.niceLinkToAjax(lnk.attr('href'));
					lnk.attr('href', frag )
					$(this).find('.title a').attr('href', frag);
					//$(this).find('.thumb_link').attr('href', frag);
					//console.log('convertLink', frag, cnt);
				}				
				//ADD CLASS
				$(this).addClass('ajaxed');
				cnt++
			}
		});
		$('.to_ajax').each(function() {
			if(!$(this).hasClass('ajaxed')) {
				var frag = that.niceLinkToAjax( String($(this).attr('href')), true );
				$(this).attr('href', frag);
				$(this).addClass('ajaxed');
				$(this).removeClass('to_ajax');
				//console.log('convertLink', frag, $(this));
			}
		});
	}
	
	this.niceLinkToAjax = function (str, relative) {
		if(relative == null) {
			relative = false;
		}
		var comparison = (relative) ? '' : 'http://'+location.hostname ;
		//console.log(str, relative, comparison, comparison.length);
		var ret = 'notset';
		if(typeof str != undefined) {
			ret = '#/go=article;link='+encodeURIComponent( str.substring(comparison.length) );
		}//console.log(str, str.substr(comparison.length));
		return ret;
	}
	
	this.setupSearchForm = function () {
		var opt = { beforeSubmit:that.beforeSubmitSearch };
		$('#searchform').submit(function () {
			$(this).ajaxSubmit(opt);
			return false;
		});
		//.ajaxForm(opt);
	}
	
	this.beforeSubmitSearch = function (arr, form) {
		console.log('Landing::beforeSubmitSearch()', arr, form, location);
		var query = arr[0].value.split(' ').join('+');
		location.hash = '#/go=article;link='+encodeURIComponent('/?s='+query);
		//return false;
	}
	
	this.setFilmButtons = function (e) {
		//console.log('Landing::setFilmButtons()');
		$('.post_play_btn').each(function () {
			var pos = $(this).siblings('.post_thumb').position();
			var offx = ($(this).siblings('.post_thumb').width()/2)-16;
			var offy = ($(this).siblings('.post_thumb').height()/2)-16;
			//console.log('pos', pos, offx, offy);
			$(this).css({top:pos.top+offy+'px', left:pos.left+offx+'px'});
			$(this).show();
		});
	}
	
	this.initPosters = function () {
		//console.log('Landing::initPosters()');
		// EXPAND WRAP CONTAINER
		var itemWidth	= $('.poster_container').width();
		var items		= $('.posters .poster_item');
		$('.posters').css('width', itemWidth*items.length+'px');
		// SET VARS, TIMERS, NAV & LISTENERS
		that.currentPoster = 0;
		that.allowPosterAnim = true; //**
		that.initPostersNav();
		that.posterInterval = setInterval(that.animPosters, 4000);
		$('.poster_container').bind('posterChangeComplete.LANDING', that.posterChangeCompleteHandler);
		$('.poster_container').bind('posterAnimStop.LANDING', that.posterAnimStop);
		$('.poster_container').bind('posterAnimPlay.LANDING', that.posterAnimPlay);
		that.posterChangeCompleteHandler();
		$('.poster_container .pg_item').click(function () { that.posterNav($('.pg_item').index(this)); });
	}
	
	this.initPostersNav = function () {
		//console.log('Landing::initPostersNav()');
		// BUILD PAGINATION
		var items		= $('.posters .poster_item');
		for (var i=0; i<items.length;i++) {
			$('.poster_container .pg_count').append('<div class="pg_item"></div>');
		}
		$('.poster_nav').centerFloats();
		// SET LISTENERS
		$('.poster_nav .prev_btn').click(function () { that.posterNav('back') });
		$('.poster_nav .next_btn').click(function () { that.posterNav('next') });
	}
	
	this.posterNav = function (type) {
		//console.log('Landing::posterNav()', type, that.currentPoster);
		//clearInterval(that.posterInterval); **
		var items = $('.posters .poster_item');
		
		if(type == 'back' && that.currentPoster > 0){
			this.gotoPoster(that.currentPoster-1);
		} else if (type == 'next' && that.currentPoster < items.length-1 ) {
			this.gotoPoster(that.currentPoster+1);
		} else if ( !isNaN(type) ) {
			this.gotoPoster(type);
		}
		// ENABLE ANIMATIONS
		//that.posterInterval = setInterval(that.animPosters, 4000);
	}
	
	this.posterAnimStop = function () {
		console.log('Landing::posterAnimStop()');
		//clearInterval(that.posterInterval);**
		that.allowPosterAnim = false;
	}
	
	this.posterAnimPlay = function () {
		console.log('Landing::posterAnimPlay()');
		//that.posterInterval = setInterval(that.animPosters, 4000); **
		that.allowPosterAnim = true;
	}
	
	this.posterChangeCompleteHandler = function (e) {
		//console.log('Landing::posterChangeCompleteHandler()');
		var count = 0;
		$('.pg_count').children().each(function() {
			if(that.currentPoster == count){
				$(this).addClass('selected');
			} else {
				if($(this).hasClass('selected')){
					$(this).removeClass('selected');
				}
			}
			count++;
		});
	}
	
	this.animPosters = function () {
		var itemWidth		= $('.poster_container').width();
		var items			= $('.posters .poster_item');
		var pos				= $('.posters').position();
		if(items.length > 1 && that.allowPosterAnim) {
			//console.log('animate posters', items.length-1, that.currentPoster);
			if(that.currentPoster < items.length-1){
				that.gotoPoster(that.currentPoster+1);
			} else {
				that.gotoPoster(0);
			}
		}
	}
	
	this.gotoPoster = function (num) {
		that.currentPoster = num;
		var itemWidth	= $('.poster_container').width();
		$('.posters').animate({ left:-itemWidth*num }, {queue:false, duration:500, complete:function () { $('.poster_container').trigger(new $.Event('posterChangeComplete.LANDING')) } });
	}
	
	this.loadMorePosts = function (e) {
		$('.load_more_posts p').html('');
		$('.load_more_posts').addClass('loading');
		// fetch next set of posts & update masonry & set new listeners
		var nextPage = $(e.currentTarget).find('[name=nextpage]').val();
		console.log('Landing::loadMorePosts()', location.pathname, nextPage, e);
		$.get(location.pathname+'?'+nextPage, function (data) {
			var content = $(data).find('.blog_item, .end_of_posts');
			$('#blog_container').find('.load_more_posts, .end_of_posts').remove();
			$('#blog_container').append(content).masonry('appended', content, true);
			
			$('#blog_container').delay(500).trigger($.Event('postsAppended.LANDING'));			
			$('.load_more_posts').click(that.loadMorePosts);
			$(window).scroll(that.checkPageBottom)
			console.log('Landing::loadMorePosts()->data removed');
		});
	}
	
	this.checkPageBottom = function () {
		//console.log($('.load_more_posts'));
		if($('.load_more_posts').length > 0){
			var scrollPos = $(window).scrollTop()+$(window).height();
			var loadMorePos = $('.load_more_posts').offset().top;
			//console.log('Landing::checkPageBottom', scrollPos, loadMorePos);
			if(scrollPos >= loadMorePos){
				$(window).unbind('scroll');
				$('.load_more_posts').trigger('click');
			}
		}
	}
		
	this.init();
	
	return this;
	
}
