// JavaScript Document

function Sidebar() {
	var $background = $('#blog_background');
	var sidebarMargin = sidebarTop = 0;
	var stage = $(window);
	var doc = $(document);
	var self = $('#blog_sidebar');
	var searchField = $('#search_box');
	var openClose = $('.openClose');
	var backTop = $('.blog_sidebar_backTop');
	var openItems = new Array();
	var _drxOpen;
	
	function init() {
		$('#search_box').keyup(searchEnter);
		backTop.click(backToTop);
		openClose.click(openCloseClick);
		searchField.focus(searchFocusBlur);		
		searchField.val('enter search term');
		searchField.addClass('search_blur');
				
		if (!browserDetect.getMobile()) stage.scroll(scrolling);
			else stage.scroll(mobileScroll);
		
		if ($('#blog').hasClass('blog_inner')) {
			_drxOpen = true;
			self.children('a').children('.sidebar_logo').slideDown(1);
			console.log(self.children('a').children('.sidebar_logo'));
			sidebarTop = 120;
			sidebarMargin = -70;
		} else {
			_drxOpen = false;
			sidebarTop = 480;
			sidebarMargin = -440;
		}
	} init();
	
	function searchEnter(e) {
      	if (e.keyCode == 13 && searchField.val() != '') {
			window.location = root+'/?s='+searchField.val();
      	}
	}
	
	function backToTop() {
		backTop.fadeOut(500);
		if (!isSingle) self.children('a').children('.sidebar_logo').slideUp(500, 'easeOutCubic');
		var tweenTime = stage.scrollTop() / 2;
		if (tweenTime < 1000) tweenTime = 1000;
		$('html, body').animate({scrollTop: 0}, tweenTime, 'easeOutCubic');
	}
	
	function scrolling(e) {
		var scrollTop = stage.scrollTop();
		var logo = self.children('a').children('.sidebar_logo');

		if (scrollTop > sidebarTop) {
			if (!logo.hasClass('open')) {
				logo.addClass('open');
				self.css("position", "fixed");
				if (!_drxOpen) logo.slideDown(500);
				self.css("margin-top", sidebarMargin);
				backTop.fadeIn(500);
			}
		} else {
			if (logo.hasClass('open')) {
				logo.removeClass('open');
				self.css("position", "absolute");
				if (!_drxOpen) logo.slideUp(500);
				self.css("margin-top", "57px");
				backTop.fadeOut(500);
			}
		}

		$background.css({top: -stage.scrollTop()*.2});
		if(!isSingle && stage.scrollTop() + stage.height() == doc.height()) {
			if (content) content.loadNewContent();
		}
	}
	
	function mobileScroll() {
		if(!isSingle && stage.scrollTop() + stage.height() >= doc.height() - 200) {
			if (content) content.loadNewContent();
		}
	}
	
	function searchFocusBlur(e) {
		if (e.type == 'focus') {
			$('.mag_icon').animate({opacity: 0}, 500);
			
			if (searchField.val() == 'enter search term') {
				searchField.val('');
				searchField.removeClass('search_blur');
			}
		} else {
			if (searchField.val() == '') {
				searchField.addClass('search_blur');
				searchField.val('enter search term');
			}
		}
	}
	
	function openCloseClick() {
		var section = $(this).parent();
		var plusMinus = $(this).children('.blog_plusminus');
		
		if (!plusMinus.hasClass('minus')) {
			section.children('.innerContent').slideDown(500);
			plusMinus.addClass('minus');
			
			openItems.push(section.attr("tcr:sidebar"));
		} else {
			section.children('.innerContent').slideUp(500);
			plusMinus.removeClass('minus');
			
			for (var i = 0; i<openItems.length; i++) {
				if (openItems[i] == section.attr("tcr:sidebar")) openItems.splice(i, 1);
			}
		}
		
		cookies.setCookie(openItems);
	}
	
	//public methods
	this.openSidebarItems = function(opts) {
		var sidebars = opts.split('&');
		for (var i = 0; i<sidebars.length; i++) {
			sidebar = sidebars[i];
			if (sidebar.length) {
				openItems.push(sidebar);
				$('.tcr_'+sidebar).children('.innerContent').show();
				$('.tcr_'+sidebar).children('.openClose').children('.blog_plusminus').addClass('minus');
			}
		}
	}
}

function Cookies() {
	var _window = $(window);
	var tcr = 'drromanelli_blog';
	var options = { path: '/' };
	
	function init() {
		window.onbeforeunload = setBackPosition;
		checkIFrame();
		checkCookies();
		if (iFrame) {
			$.cookie(tcr+'_iframe', 'true', options);
			browserDetect.isIFrame();
		}
	} init();
	
	function checkIFrame() {
		if ($.cookie(tcr+'_iframe') == 'true') {
			browserDetect.isIFrame();
		}
	}
	
	function setBackPosition() {
		if (document.location == root+'/blog') $.cookie(tcr+'last_scroll_num', _window.scrollTop(), options);
	}
	
	function checkCookies() {
		if (document.location == root+'/blog') {
			if ($.cookie(tcr) == null) $.cookie(tcr, '', options);
			else sidebar.openSidebarItems($.cookie(tcr));
			
			if ($.cookie(tcr+'last_scroll')) {
				_window.scrollTop(Number($.cookie(tcr+'last_scroll_num')));
				$.cookie(tcr+'last_scroll', null);
			}
		}
	}
	
	//public methods
	this.setCookie = function(array) {
		var tempStr = '';
		for (var i = 0; i<array.length; i++) {
			sidebar = array[i];
			tempStr += '&'+sidebar;
		}
		$.cookie(tcr, tempStr, options);
	}
	
	this.setPrevious = function() {
		//$.cookie(tcr+'previous', window.location.href, options);
	}
	
	this.getPrevious = function() {
		//window.location = $.cookie(tcr+'previous');
		$.cookie(tcr+'last_scroll', _window.scrollTop(), options);
		history.go(-1);
	}
}

function Content() {
	var blogBody = $('#blog_body');
	var loader = $('.blog_ajaxloader');
	var end = false;
	var loading = false;
	var page = 1;
	
	function init() {
		//window.onbeforeunload = savePage;
	} init();
	
	this.loadNewContent = function() {
		if (!loading && !end) {
			page++;
			
			loading = true;
			loader.show();
			$.post(root+'/wp-admin/admin-ajax.php', {action: 'tcr_get_posts', paged:page, optionz:query_options}, ajaxResponse);
		}
	}
	
	function ajaxResponse(e) {
		if (e != 'NO_RESULTS') {
			loading = false;
			loader.hide();
			blogBody.append(e);
		} else {
			loader.hide();
			end = true;
		}
	}
}

function BrowserDetect() {
	var mobileBrowsers;
	var brs;
	var isMobile;
	
	function init() {
		mobileBrowsers = ['Android', 'iPhone', 'Blackberry', 'WP7', 'Palm'];
		brs = whichBrs();
		
		setCSSTweaks();
		setMobile();
	} init();
	
	function setMobile() {
		var hit = false;
		for (var i = 0; i < mobileBrowsers.length; i++) {
			if (brs == mobileBrowsers[i]) hit = true;
		}
		
		if (hit) isMobile = true;
		else isMobile = false;
	}
	
	function setCSSTweaks() {
		switch (brs) {
			case 'iPhone':
				$('#search_box').width(100);
				$('#search_box').css("margin-top", "-3px");
				break;
		}
	}
	
	function whichBrs() {
		var agt = navigator.userAgent.toLowerCase();
		if (agt.indexOf("ipad") != -1) return 'iPhone';
		if (agt.indexOf("iphone") != -1) return 'iPhone';
		if (agt.indexOf("android") != -1) return 'Android';
		if (agt.indexOf("palm") != -1) return 'Palm';
		if (agt.indexOf("windows phone") != -1) return 'WP7';
		if (agt.indexOf("blackberry") != -1) return 'Blackberry';
	}
	
	this.getMobile = function() {
		return isMobile;
	}
	
	this.isIFrame = function() {
		$('.blog_sidebar_text').remove();
		$('.blog_sidebar_item').each(function() {
			if ($(this).attr('tcr:sidebar') == 'follow') $(this).remove();
		});
	}
}

var sidebar, content, cookies, browserDetect;
$(document).ready(function() {
	browserDetect = new BrowserDetect();
	sidebar = new Sidebar();
	content = new Content();
	cookies = new Cookies();
});
