debug = 0;

var SOCO = {};
var pageTitle = document.title;


/**
 * Global functions
 */
function trackPageview(href) {
	var href = href.toLowerCase();
	
	if (debug > 0) {
		console.log('pageTracker', '_trackPageview('+href+')');
	}
	
	if (window.pageTracker) {
        pageTracker._trackPageview(href);
	}
}

function trackEvent(category, action, label) {
	if (debug > 0) {
		console.log('pageTracker', '_trackEvent('+category+', '+action+', '+label+')');	
	}
	
	if (window.pageTracker) {
		// _trackEvent(category, action, opt_label, opt_value)
        pageTracker._trackEvent(category, action, label);
	}
}

function cleanSplit(str, separator){
	if(!str)return new Array();
	var a=str.split(separator),i=a.length;
	while(i>=0){if(a[i]=='')a.splice(i,1);i--;}
	return a;
}

function handleElement(href, tracking) {
	var parts = cleanSplit(href, '/');
	var el = parts[1];
	
	// track page view
	if (tracking) {
        trackPageview(href);
	}
	
	// scroll to element
	if($('#' + el).length > 0) {
		elTop = $('#' + el).offset().top;
		
		if($.browser.safari){
			bodyEl = $("body")
		} else{
			bodyEl = $("html")
		}
		
   		bodyEl.animate({scrollTop: elTop}, 400);
	}
}

/**
 * SWFAddress
 */
SOCO.swfAddressComponents = function() {
	SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleSWFAddress);
	
	function handleSWFAddress(event) {
		var seourl = '#' + event.value;
		var url = event.value + '.aspx';
		var parts = cleanSplit(seourl, '/');
		
		if(seourl == '#/') {
			return false;
		}
				
		// handle page categorie
		if(seourl.match('home') || seourl.match('drinks') || seourl.match('story')) {
			handleElement(seourl, true);
		}
		
		// handle drinks categorie, e.g. "/#/drinks/rock-n-shots"
		if(seourl.match('cocktails') || seourl.match('longdrinks') || seourl.match('rock-n-shots')) {
			p = (parts.length == 3) ? parts[parts.length-1] : parts[3];
		
			if(!seourl.match('/drinks/rezepte/')) {
				$('ul.drinksList').fadeOut(150);
				$('ul#' + p).fadeIn(500);
			} else {
				$('ul.drinksList').hide();
				$('ul#' + p).show();
			}
			
			$('ul#drinksNav li').removeClass('selected');
			$('ul#drinksNav li.' + p).addClass('selected');
		}
		
		// handle shadowbox
		if(seourl.match('/drinks/rezepte/') || seourl.match('coupon') || seourl.match('creative')) {
			var $anchor = $("a[href='"+url+"']");
		
			// open Shadowbox
			$anchor.click();
		}
		
		return false;
	}
};


/**
 * jCarousel
 */
SOCO.jCarouselComponents = function() {
	function mycarousel_initCallback(carousel) {
	    // Disable autoscrolling if the user clicks the prev or next button.
	    carousel.buttonNext.bind('click', function() {
	        carousel.startAuto(0);
	    });

	    carousel.buttonPrev.bind('click', function() {
	        carousel.startAuto(0);
	    });

	    // Pause autoscrolling if the user moves with the cursor over the clip.
	    carousel.clip.hover(function() {
	        carousel.stopAuto();
	    }, function() {
	        carousel.startAuto();
	    });
	};
	
	 $('#teaser-row').jcarousel({
        auto: 3,
		wrap: 'circular',
		scroll:1,
		animation: 'slow',
		buttonNextHTML: null,
		buttonPrevHTML: null,
        initCallback: mycarousel_initCallback
    });
};


/**
 * Shadowbox
 */
SOCO.shadowboxComponents = function() {
	var tpl = [];
	tpl.push('<div id="sb-container">');
	tpl.push('	<div id="sb-overlay"></div>');
	tpl.push('	<div id="sb-wrapper">');
	tpl.push('		<div id="sb-title">');
	tpl.push('			<div id="sb-title-inner"></div>');
	tpl.push('		</div>');
	tpl.push('		<div id="sb-wrapper-inner">');
	tpl.push('			<div id="sb-body">');
	tpl.push('				<div id="sb-body-inner"></div>');
	tpl.push('				<div id="sb-loading">');
	tpl.push('					<div id="sb-loading-inner"><span>{loading}</span></div>');
	tpl.push('				</div>');
	tpl.push('			</div>');
	tpl.push('		</div>');
	tpl.push('		<div id="sb-info">');
	tpl.push('			<div id="sb-info-inner">');
	tpl.push('				<div id="sb-counter"></div>');
	tpl.push('				<div id="sb-nav">');
	//tpl.push('				<a id="sb-nav-close" title="{close}" onclick="Shadowbox.close()"></a>');
	tpl.push('					<a id="sb-nav-next" title="N&auml;chter Drink" onclick="Shadowbox.next()"></a>');
	tpl.push('					<a id="sb-nav-play" title="{play}" onclick="Shadowbox.play()"></a>');
	tpl.push('					<a id="sb-nav-pause" title="{pause}" onclick="Shadowbox.pause()"></a>');
	tpl.push('					<a id="sb-nav-previous" title="Vorheriger Drink" onclick="Shadowbox.previous()"></a>');
	tpl.push('				</div>');
	tpl.push('			</div>');
	tpl.push('		</div>');
	tpl.push('		<a id="sb-nav-close" title="Schliessen" onclick="Shadowbox.close()"></a>');
	tpl.push('	</div>');
	tpl.push('</div>');
	
	Shadowbox.skin.markup = tpl.join('');
	
	Shadowbox.init({
		overlayColor: '#000',
		overlayOpacity: 0.75,
		viewportPadding: -1,
		displayCounter: false,
		modal: true,
		handleOversize: 'none',
		onFinish: function() {
			var url = SWFAddress.getValue();

			if(url.match('/drinks/rezepte/')) {
				var $anchor = Shadowbox.getCurrent().link;
				var href = $anchor.pathname;
				var path = href.substr(0, href.length-5); // "/drinks/rezepte/cocktails/caipi.aspx" to "/drinks/rezepte/cocktails/caipi"
				var parts = cleanSplit('#' + path, '/');
				var text = $anchor.text;

				SWFAddress.setValue(path);
				SWFAddress.setTitle(text + ' - ' + pageTitle);

				// set body class
			    $('iframe#sb-player').load(function() {			    	
					var id = parts[parts.length-1];
					$(this).contents().find('body').attr({'id' : id});
					
			    	return false;
			    });
			}
		}
	});
};


/**
 * Navigation
 */
SOCO.navigationComponents = function() {
	$('ul.nav a').not('ul.nav li.photos a').bind({
		click: function() {
			var href = $(this).attr('href');
			var path = $(this).attr('href').substr(1);
			var text = $(this).text();
			
			if(path == SWFAddress.getValue()) {
				handleElement(href, false);
			} else {
				SWFAddress.setValue(path);
				SWFAddress.setTitle(text + ' - ' + pageTitle);
			}
			
			return false;
		}
	});
	
	$('ul.drinksList a, a#couponLink, a#creativeLink').bind({
		click: function() {
			var href = $(this).attr('href');
			var path = href.substr(0, href.length-5); // e.g. "/drinks/rezepte/cocktails/caipi.aspx" to "/drinks/rezepte/cocktails/caipi"
			var text = $(this).text();
			
			SWFAddress.setValue(path);
			SWFAddress.setTitle(text + ' - ' + pageTitle);
			
			return false;
		}
	});
	
/* TMP Creative Teaser */
		$('#creativeLink').click(function() {
		  $('#sb-nav').append('<p style="color:#fff6e9;text-indent:20px;font-family:Georgia,serif;font-size:15px;">MACH DICH BEREIT: WEITERE INFORMATIONEN ZUM CREATIVE EXCHANGE KOMMEN SCHON BALD.</p>');
		});
	
	
	$("ul.drinksList li").hover(
		function () {
			$(this).addClass('hover');
		}, 
		function () {
			$(this).removeClass('hover');
		}
	);
	
};


/*
* ShareBox Tooltips @todo
*/
SOCO.shareBoxTooltips = function() {
	var btnLike = '<iframe src="http://www.facebook.com/plugins/like.php?href='+encodeURIComponent(window.location)+'&amp;layout=button_count&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:21px;" allowTransparency="true"></iframe>';
	
	$('.tooltip-facebook').html(btnLike);

	$(".wrapper").click(function () {
		//console.log("wrapper clicked");
		$(".tooltip-share").hide();
		$(".tooltip-download").hide();
		$(".tooltip-facebook").hide();
	});


	$("a.facebook").mouseover(function () {
		$(".tooltip-share").hide();
		$(".tooltip-download").hide();
		$("span.tooltip-facebook").show();
	});
/* fixme */	
	$("span.tooltip-facebook").mouseleave(function () {
		$("span.tooltip-facebook").hide();
	});
	
	
	$("a.download").mouseover(function () {
		$(".tooltip-share").hide();
		$(".tooltip-facebook").hide();
		$("a.tooltip-download").show();
	});
	$("a.tooltip-download").click(function () {
		$("a.tooltip-download").hide();
	});
	$("a.share").mouseover(function () {
		$(".tooltip-facebook").hide();
		$(".tooltip-download").hide();
		$(".tooltip-share").show();
	});

	$("span.close").click(function () {
		$(".tooltip-share").hide();
	});
	
	$("span.facebook").click(function () {
		$(".tooltip-share").hide();
		return addthis_sendto('facebook');
	});
	$("span.twitter").click(function () {
		$(".tooltip-share").hide();
		return addthis_sendto('twitter');
	});
	$("span.blogger").click(function () {
		$(".tooltip-share").hide();
		return addthis_sendto('blogger');
	});
	$("span.studi").click(function () {
		$(".tooltip-share").hide();
		return addthis_sendto('studivz');
	});
	$("span.myspace").click(function () {
		$(".tooltip-share").hide();
		return addthis_sendto('myspace');
	});

	$("span.more").click(function () {
		$(".tooltip-share").hide();
		return addthis_sendto('more');
	});
};

String.prototype.supplant = function (o) {
    return this.replace(/{([^{}]*)}/g,
        function (a, b) {
            var r = o[b];
            return typeof r === 'string' || typeof r === 'number' ? r : a;
        }
    );
};


/**
 * Additional Tracking
 */
SOCO.additionalTracking = function() {
	// share buttons
	$('ul.share-box a, div.tooltip-share span').bind({
		click: function() {
			var href = '#/share/' + $(this).text();
			//trackPageview(href);
			trackEvent('Tooltip', 'Share', href);
		}
	});
	
	$('ul#teaser-row a').bind({
		click: function() {
			var href = '#/teaser/' + $(this).attr('href');
			trackEvent('Teaser', 'Clicked', href);
		}
	});
};


/**
 * Story
 */
SOCO.storyComponents = function() {
	var templates = {
		historyItem : '<div class="story date-{className}"><p>{description}</p></div>'
	};

	loadData('/style/js/dataStory.json', initHistory);
	
	function loadData(url, callback) {
		//console.log("load data");
		$.getJSON(url, {}, callback);
	}

	function initHistory(data, textStatus) {
		//console.log("initStory", textStatus);
		if (textStatus === 'success') {
			var historyItems = []; 
			$.each(data.story, function(i, item) {
				//console.log(item);
				historyItems.push(templates.historyItem.supplant(item));
			});
			$('#historypanes .items').append(historyItems.join(''));
		}
	}
	
	 var api = $("#historypanes").scrollable({
		 onSeek: function()  {  
 			var position = this.getIndex();
			//console.log(position);
			if (position == "0") {
				$(".story-nav .prev").addClass("disabled");
			} else {
				$(".story-nav .prev").removeClass("disabled");
			}
			if (position == "11") {
				$(".story-nav .next").addClass("disabled");
			} else {
				$(".story-nav .next").removeClass("disabled");
			}
			
			// track page view
			var href = $("#history-tabs .current").text();
        	trackPageview('#/story/' + href);
        }		
	}).navigator({ 
		navi: "#history-tabs",
		naviItem: 'span',
		activeClass: 'current'
	});
	$(".story-nav span").mouseover(function () {
		$(this).addClass("high");
	});
	$(".story-nav span").mouseleave(function () {
		$(this).removeClass("high");
	});

	$(".story-nav .prev").addClass("disabled");
	
	$("#history-tabs #t1 span").addClass("current");
	
	$("#history-tabs li span").mouseover(function () {
		$(this).toggleClass("active-hover");
	});
	$("#history-tabs li span").mouseout(function () {
		$(this).toggleClass("active-hover");
	});
};


SOCO.shadowboxComponents();

$(function() {
	QueryLoader.init();
	SOCO.swfAddressComponents();
	SOCO.jCarouselComponents();
	SOCO.navigationComponents();
	SOCO.shareBoxTooltips();
	SOCO.additionalTracking();
	SOCO.storyComponents();
});