$(document).ready(function() {
	if(isSlidable()) {
		$pageslider = $.pageslider('.page-container', {
			speed: 'slow',
			ajaxOptions: {
				data : {ajax: 1}, //Firefox throws a big tantrum if I remove this
				type : 'POST',
				error: function(XMLHttpRequest, textStatus, errorThrown) {
				    window.location.href = rootURL + notFoundQuery;
                    //initPageLoad(notFoundQuery, true);
				},
				beforeSend: function() {
                    $.fancybox.showActivity();		
                    triggerCallBack('beforeSend');	
					//$.each(beforeSendCallbacks, function(index, func) {func.call()});		
				}
			},
			beforeSlide: function(){		    
				$.fancybox.hideActivity();
				triggerCallBack('beforeSlide');
				//$.each(beforeSlideCallbacks, function(index, func) {func.call()});	
			},
			afterSlide: function() {			    
			    triggerCallBack('afterSlide');
				//$.each(afterSlideCallbacks, function(index, func) {func.call()});						
			}
		});

		$.address
		.internalChange(function(event) {
            initPageLoad(event.value, false);
		})
		.externalChange(function(event) {
            initPageLoad(event.value, true);            
		})
		
		$('a.menu-button').click(function() {
		    if(loading) return false;
    		landingPageScrollTo(this.href, isRootPage());
    		return false;
    	});

		//if incoming page contains fragment, scroll to that section
		if(location.href.indexOf('#/landing') != -1) landingPageScrollTo(location.href, isRootPage());
    	
	} else {
	    triggerCallBack('all');
        // $.each(beforeSendCallbacks, function(index, func) {func.call()});
        // $.each(beforeSlideCallbacks, function(index, func) {func.call()});           
        // $.each(afterSlideCallbacks, function(index, func) {func.call()});
	}
});
var loading = false;
function initPageLoad(value, external) {
    //if use on landing page and request query contains "/landing"
    //then ignore, or else if it contains "/landing" but not on landing page
    //load landing page
    if(onLandingPage && value.indexOf(defaultQuery) > -1) {
        return;
    } else if(value.indexOf(defaultQuery) > -1) {
        value = defaultQuery;
    }
    // if user delete cookie manually
    // redirect to age verification page
    if(!isVerified()) {
        window.location = rootURL;
        return;
    }
    var url = getPageURL(value);
	if(url == currentQuery) return;
	//if it's root load landing page    
	if(value == '/') {
		url = getPageURL(defaultQuery);		
	}
    $pageslider.loadPage(url, external? null : 'left');
	currentQuery = url;
	if(url.indexOf("blog/") != -1) menuSelect('news');
	loading = true;
}

/**
 * Called by menu items and landing page
 * only store the target value to scrollToTarget
 * but if specified, will call doScroll immediately
 */
function landingPageScrollTo(hash, now) {
	hash = unescape(hash);
	var target = hash.split('landing/')[1].replace(/\//g, '');
	scrollToTarget = target;
	if(now) doScroll();
}

/**
 * Call scrollTo function and select menu item
 */
function doScroll() {
    if(!scrollToTarget) return;
    $target = $('#' + scrollToTarget +'-panel');
    scrollTo($target);
    menuSelect(scrollToTarget);
    scrollToTarget = null;
}

function scrollTo(target) {
	if(typeof target == "string") target = $(target);
	if (target.length) {
		var targetOffset = target.offset().top - 70;
		$('html,body').stop().animate({scrollTop: targetOffset}, {"duration": 1000, easing: "easeInOutExpo"});
		return true;
	}
}

function menuSelect(target) {
    $target = $('#'+target+"-button");
    $("a.menu-button").removeClass("current");
    $target.addClass("current");
}

// function initSfMenu() {
// 	if(!$('ul.sf-menu')) return;
// 	$('ul.sf-menu').superfish({
// 		dropShadows: true,
// 		speed: 0,
// 		delay: 100
// 	});
// 	$('.sf-menu > li').corner('5px');
// 	$('.sf-menu li ul li:first-child').corner('tl tr 5px');
// 	$('.sf-menu li ul li:last-child').corner('bl br 5px');
// 	$('ul.sf-menu').fadeIn('fast');
// }

function log(msg) {
	if(window.console && window.console.log) console.log(msg);
}

function toggleOverlay() {
    // $overlay = $("#fancybox-overlay");
    // $overlay.css({"opacity": 0.85, 'background-color': 'black'});
    // $overlay.toggle();
}

function isRootPage() {
	var realAddress = $.address.baseURL().toString();
	//if url consists of preview param, ignore the load
	if(realAddress.indexOf("preview=true") != -1) return false;
	// if we pass some GET variable, consider it's the root page as well
	if(realAddress.indexOf(rootURL + "/?") == 0) return true;
	return $.address.baseURL().toString().toLowerCase() == rootURL;
}

function isSlidable() {
    return isRootPage() && isVerified() && !iPhone
}

function getPageURL(value) {
	var url = value.substr(1, value.length);
	if(url.indexOf('landing-') != -1) url = url.split('-')[0]
	return url;
}

function beforeSlideCallbackDefault() {
    // $('.panel-header').corner('tl tr 15px');
	var browser = $.browser;
	if(!browser.msie) {
		$('.page-panel .panel-container').corner('tl bl 15px');
		$('.post-panel .panel-container').corner('tl tr 15px');		
		$('.button a').corner('3px');
	}
	
	/*=== CUSOTM STYLING ===*/
    // $(".panel .panel-text img").css('margin-left','-10px');
	
	// Apply cycle effect on twitter feed
	$('.widget_twitter ul').cycle('stop');						
	$('.widget_twitter ul').cycle({timeout: 10000, pauseOnHover: true, fx: 'scrollUp'});
	
    // if not IE 7 then truncate text here
    if(!browser.msie || Number(browser.version) != 7) {
        $('.truncate-by-width').textTruncate();
    }
}
addCallBack('beforeSlide', 'beforeSlideCallbackDefault', beforeSlideCallbackDefault);
//beforeSlideCallbacks.push(beforeSlideCallbackDefault);

function afterSlideCallbackDefault() {
	// sifr
	// sIFR.replace(caecilia, {
	//   	selector: 'h3.inline-flash',
	// 	fitExactly: true,
	// 	css: [ ".sIFR-root {color: #FFFFFF;}"],
	// 	wmode: 'transparent',
	// 	forceSingleLine: true
	// });
	
	var browser = $.browser;
    if(browser.msie && Number(browser.version) == 7) {
        $('.news-item .truncate-by-width').textTruncate({width: 240});
    }
    
	//Cufon.replace('.caecilia', {fontFamily: 'Caecilia LT Std'});
	// Cufon.replace('.post blockquote', {fontFamily: 'Caecilia LT Std'});
	// Cufon.replace('h3', {fontFamily: 'Caecilia LT Std'});						
	// Cufon.replace('h4', {fontFamily: 'Caecilia LT Std'});						
	// Cufon.replace('h2', {fontFamily: 'Caecilia LT Std'});		
	// Cufon.replace('.futura', {fontFamily: 'Futura Md BT'});
	
	//initSfMenu();
	
	if(!iPhone) {
	    loading = false;
	    $('a[href^=' + rootURL + ']').address(function() {
    	    if($(this).hasClass('fancybox-link')) return;
            if($(this).hasClass('no-deeplink')) return true;
            var href = $(this).attr('href');
			// ignore links of attachment and files
		    if(href.indexOf(rootURL + "/files/") != -1) return;
		    if(href.indexOf(rootURL + "/?attachment_id=") != -1) return true;
			setSwfAddress(href);
    	})
    	
    	doScroll();
	}

    var options = {
        cyclic: true,
		titlePosition: "over",
		titleShow: false
    }
    options = $.extend({}, options, defaultFancybox);
	$('dl.gallery-item a').fancybox(options);
}

function setSwfAddress(href) {
    //if current page is not root
    //reset the window location to root
    if(!isRootPage()) {
     	value = href.replace(rootURL, '');
     	window.location.href = rootURL + '/#' + value;
     	return;
    }
    var value;
    if(href.indexOf('#') == 0) {
     	value = href.replace('#', '');
    } else {
     	value = href.replace(rootURL, '')
     	if(value == '') value = '/';
    }
    if(value) $.address.value(value);
}

addCallBack('afterSlide', 'afterSlideCallbackDefault', afterSlideCallbackDefault);