var cora = window.cora || {};

cora.ui = {};
/***********************************************************
*
* UI
*
***********************************************************/

cora.ui.init = function()
{
	$.browser.msie6 = $.browser.msie && parseInt($.browser.version) == 6;
	$.browser.msie7 = $.browser.msie && parseInt($.browser.version) == 7;
	cora.ui.display();
	cora.ui.menuInit();
	//cora.ui.fancyBoxImages('.gallery-item');
	$("a[rel^='prettyPhoto']").prettyPhoto({
		default_width: 556
	});
	cora.ui.genericTabsInit();
	cora.ui.utils();
	
	cora.labels = heap.labels['default'];
};

cora.ui.menuInit = function()
{
	if ($.browser.msie6) return false;
	
	// simply ajust submenu left position and add marker image accordingly
	var menu = $('#nav-main ul');
	var active = $('#nav-main > ul > li.active > a');
	var submenu = active.next('.sublevel');
	
	if (!active.length || !submenu.length) return false;
	
	// add cute marker and position it
	active.append('<span class="pointer" />');
	$('.pointer', active).css({marginLeft: active.width()/2});

	// move submenu
	leftTemp = active.position().left-1;
	totalTemp = submenu.width() + leftTemp;
	
	// if new left position for submenu explodes to right, align to right 0px
	if (totalTemp > menu.width()) {
		pos = {right: 0};
	} else {
		// we have room, no prob
		pos = {left: leftTemp};
	}
	submenu.css(pos);
}

cora.ui.utils = function () {

	// bind print function
	$('.ico-print').live('click', function(e){
		e.preventDefault();
		window.print();
	});
	
	$('.ico-share').attr('title', '');
}

/**
 * bind click and hover event on parent div
 */
cora.ui.linkalizeBlock = function (selector) {

	$(selector).each(function() {
		var href = $(this).find('a').attr('href');
		$(this)
		.click(function(e){
			if(!$(this).find('.link a.extLink')){
				window.location.href = href;
			}
		})
		.hover(function(e){ $(this).addClass('hover'); }, function(e){ $(this).removeClass('hover'); });
	});
}

cora.ui.display = function()
{
	cora.ui.cutelinks();
	
	// cufon magic
	Cufon.replace('.cufon');

	cora.ui.linkalizeBlock('.block');
	
	// center ul nav
	f = $('#footer');
	fw = f.width();
	$('ul', f).css({'marginLeft': (fw-$('ul', f).width())/2});

	// show pretty checkboxes and radio
	var showprettycheckbox = $.browser.msie && parseInt($.browser.version) < 8 ? false : true;

	if (showprettycheckbox) {
		$('input[type=checkbox],input[type=radio]').prettyCheckboxes({
			checkboxWidth: 31, // The width of your custom checkbox
			checkboxHeight: 27, // The height of your custom checkbox
			className : 'prettycheckbox', // The classname of your custom checkbox
			display: 'inline' // The style you want it to be display (inline or list)
		});
	}

	// bind rollover behavior on label-look nav items
	if (!$.browser.msie6) {
		$('.nav-label').addClass('nav-active');
		$('.nav-label > ul > li > a').attr('title', '').wrapInner('<span class="inner" />');
	}
	
	// for dejeuner menu box, add cute marker on active item
	$('.dejeuner-menu li.active a').append('<span class="pointer" />');
	
	//show corners magic for IE
	if ($.browser.msie) {
		$('.corners').corners({ radio: 4, outColor: '#fecc32' });
	}
	
	// manage toggling link
	$('.toggle').each(function() {
		var h = $(this).prevAll('h2,h4');
		var t = $(this);
		t.hide();
	  h.addClass("toggler")
		 .click(function() {
	 			var t = $(this).nextAll('.toggle');
				// major issue with slideToggle() and toggle()
				// does not work for some reason. try it manually
				if (t.css('display') == 'none') {
					t.slideDown(200);
					$(this).addClass("toggler-open");
				} else {
					$(this).removeClass("toggler-open");
					t.slideUp(100);
				}
		  });
		// expand default
		if (t.is(".open")) { h.trigger('click'); }
	});

	// automatically add target blank
	$("a[href^='http']", "#content").not("a[href^='http:\/\/"+window.location.hostname+"']").attr("target", "_blank");
	
	// sets equal heights
	$(".equalheight").equalHeight();

}

cora.ui.fancyBoxImages = function(selector)
{
	var opts = {
	  titleFormat: function(title, currentArray, currentIndex, currentOpts) {
		   var subtitle = "";
		   if (title.indexOf(" | ") !== -1) {
		   	temp = title.split(" | ", 2);
		   	title = temp[0];
		   	subtitle = temp[1];
		   }
		   str = '<span id="fancybox-title-wrap">' + title;
		   if (subtitle !== "" && subtitle !== title) str += ' <span id="fancybox-subtitle">' + subtitle + '</span>';
		   str += '</span>';
		   return str;
     }
	};
	$(selector).fancybox(opts);
};

cora.ui.cutelinks = function(parent) {
	// add ico span to <div class="link" />
	$('.link a', parent).append('<span />');
	$('a.arrow', parent).append('<span />');
}

cora.ui.genericTabsInit = function()
{
	$('.tabs-enabled').each(function() {
	
		var t = $(this);
		
		$('.tabs', t)
			.children(':first')
			.addClass('active');
		$('.tab-content', t).hide();
		$('.tab-content:first', t).show();
		 
		$('.tabs li a', t).not('.disabled').click(function(e){
			e.preventDefault();

		if ($(this).parent().is('.active')) return false;
	    var target = $(this).attr('rel');
	    $('.tabs li', t).removeClass('active');
	    $(this).parent().addClass('active');
			$('.tab-content', t).hide();
			$('#tab-'+target).stop().fadeIn(300);
	    return false;
	  });
	
		$('.close', t).click(function(e){
			e.preventDefault();
			if ($.browser.msie)
				t.hide();
			else
				t.fadeOut(200);
		});
	
		t.prev('.popin-closed').click(function(e){
			e.preventDefault();
			if ($.browser.msie)
				t.show();
			else
				t.fadeIn(100);
		});
	
		t.hide();
	
	});
};

cora.ui.slider = {};

cora.ui.slider.init = function(opts) {

	cora.ui.slider.opts = {
		fade: true,
		autodelay: 10000
	};
	$.extend(cora.ui.slider.opts, opts);
	
	var mode = 'none';
	var slider = $('#slider');
	
	// do we have paging system or left/right arrows
	var page = $('.pager .page', slider);
	var arrows = $('.bt', slider);
	var arrowprev = $('.bt-prev', slider);
	var arrownext = $('.bt-next', slider);

	if (page.length) {
		control = $('a', page);
		mode = 'page';
	} else if (arrows.length) {
		control = arrows;
		mode = 'nav';
	}
	
	// no paging system or arrows, no sliding will happen
	if (mode == 'none') return false;

	var target = $('#slider-content');
	target.after('<div id="slider-buffer" />');
	var buffer = $('#slider-buffer').hide();
	
	if (mode == 'page') {
		page.first().addClass('active');
		// prepare autoplay
		cora.ui.slider.setAutoplay(cora.ui.slider.opts.autodelay);
	}

	if (mode == 'nav') {
		// bind mousewheel function
		slider.bind('mousewheel', function(e, delta) {
			e.preventDefault();
			if (delta > 0) {
				arrowprev.trigger('click');
			} else {
				arrownext.trigger('click');
			}
		});
	}
	
	control.click(function(e, manualTrigger){
		
		if (typeof(manualTrigger) == 'undefined') manualTrigger = true;
		
		// if triggered manually and slider set to autoslide, reinitialize interval
		if (manualTrigger && cora.ui.slider.timer) {
			cora.ui.slider.setAutoplay(cora.ui.slider.opts.autodelay);
		}
		
		var c = $(this);
		
		if (c.data('busy')) return false;
	  e.preventDefault();
	  
	  if (c.parent().is('.active,.disabled') || c.is('.disabled')) return false;
	  
	  c.data('busy', true);
	  url = c.attr('href')+'?ajax';
	  buffer.load(url, function(){
		
			target.fadeOut(100, function(){
				$(this).html(buffer.html())
				
				if (cora.ui.slider.opts.fade) {
					$(this).fadeIn('fast');
		  	    } else {
					$(this).show();
				}
	
				track(c.attr('href')); // track url for google analytics purpose
				
		    // store new current url, and previous and next one
		    arrows.removeClass('disabled');
		    arrowprev.attr('href', $('link[rel=prev]', target).attr('href'));
		    arrownext.attr('href', $('link[rel=next]', target).attr('href'));
		    arrows.each(function(){ if ($(this).attr('href') == '') $(this).addClass('disabled'); });
		  	    
				// various operations to apply to newly loaded content
				cora.ui.refresh(target);
				//console.log(target);		
				c.data('busy', false);
			})
	  });	  
	  if (mode == 'page') {
	  	page.removeClass('active');
	  	$(this).parent().addClass('active');
	  }
	});
}

/**
 * when buffered content successfully loaded, perform various refreshing tasks
 * cufon, tabs, custom scrollbar, etc.
 */
cora.ui.refresh = function(target) {

	Cufon.replace(target.selector + ' .cufon');
	$('.scroll-pane', target).jScrollPane({verticalDragMinHeight: 64,verticalDragMaxHeight: 64});
	cora.ui.genericTabsInit();
	cora.ui.cutelinks(target);
	
	// do we have some fbml markup to re-parse?
	if ($('.fbml', target).length) {
		$('.fbml', target).each(function() {
			FB.XFBML.parse(document.getElementById($(this).attr('id')));
		});
	}
	// do we need to refresh addthis component?
	if (window.addthis){
    window.addthis = null;
		var script = 'http://s7.addthis.com/js/250/addthis_widget.js#username=chezcora&domready=1';
    $.getScript(script);
	}
	
}

cora.ui.slider.setAutoplay = function (elapsed) {
	
	window.clearInterval(cora.ui.slider.timer);
	
	cora.ui.slider.timer = window.setInterval(function(){
		// determine active slide
		var pager = $('#slider .pager');
		var current = pager.children(".active").children().attr("rel");
		var next = parseInt(current)+1;
		if (next > pager.children().length) next = 1;
		pager.children(":eq("+(next-1)+")").children().trigger('click', [false]);
	}, elapsed);
}

/*
 * equal height function
*/
$.fn.equalHeight = function () {
    var height        = 0;
    var maxHeight    = 0;

    // Store the tallest element's height
    this.each(function () {
        height        = $(this).outerHeight();
        maxHeight    = (height > maxHeight) ? height : maxHeight;
    });

    // Set element's min-height to tallest element's height
    return this.each(function () {
        var t            = $(this);
        var minHeight    = maxHeight - (t.outerHeight() - t.height());
        var property    = $.browser.msie && $.browser.version < 7 ? 'height' : 'min-height';

        t.css(property, minHeight + 'px');
    });
};

function track(url) {
	if (typeof(_gaq) == 'object') {
		url = url.replace(heap.config.http_root, '');
		_gaq.push(['_trackPageview', url]);
	}
	return true;
}

/*
 * get url param
*/
function gup(name)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );

  if( results == null )
    return "";
  else
    return results[1];

}
var youtubeDebug = false;

onYouTubePlayerReady = function(){
	player = document.getElementById("prettyPlayer");
	if(t){
		t = t.replace('s', '');
		tA = t.split('m');
		if(tA.length == 2){
			m = parseInt(tA[0]*60);
			s = parseInt(tA[1]);
			total = m + s;
		}else if(tA.length == 1){
			total = parseInt(tA[0]);
		}
		var timer = setTimeout("player.seekTo(total,true);",1000);
	}
}
seekVideo = function(){
	player = document.getElementById("prettyPlayer");
}
initVideoCarousel = function(carousel){
	stateCar = 1;
	
	$('.jcarousel-prev').bind('click',function(){
		if($(this).attr('disabled')!='true'){
			if(parseInt(stateCar)-1 < 1){
				return false;
			}
			stateCar--;
			$('.page.cufon.large').removeClass('active');
			$('.page.cufon.large.coco'+stateCar).addClass('active');
		}
	});
	$('.jcarousel-next').bind('click',function(){
		if($(this).attr('disabled')!='true'){
			if(parseInt(stateCar)+1 > nbSlice){
				return false;
			}
			stateCar++;
			$('.page.cufon.large').removeClass('active');
			$('.page.cufon.large.coco'+stateCar).addClass('active');
		}
	});
	$('.container-pager div').bind('click', function() {
		var classes = $(this).attr('class');
		var aClasses = classes.split(' ');
		for(var i=0; i< aClasses.length;i++){
			var s = aClasses[i];
			var isT = s.indexOf('coco');
			if(isT != -1){
				s = s.replace('coco','');
				stateCar = s;
				$('.page.cufon.large').removeClass('active');
				$('.page.cufon.large.coco'+stateCar).addClass('active');
				carousel.scroll(jQuery.jcarousel.intval(s));
			}
		}
		return false;
	});

}
changeVideo = function(who){
	$('.vid-text .inner').fadeOut('fast',function(){
		var span = who.find('.hidden').text();
		if(videos[span]['linkLabel'] != '' && videos[span]['linkUrl'] != ''){
			$('.vid-text .link a').html(videos[span]['linkLabel']+'<span></span>');
			$('.vid-text .link a').attr('href',videos[span]['linkUrl']);
			$('.vid-text .link').show();
			$('.vid-text .link span').css('display','block!important');
		}else{
			$('.vid-text .link a').html('');
			$('.vid-text .link span').css('display','none!important');
			$('.vid-text .link').hide();
		}
		
		$('.vid-text h1').html(videos[span]['title']);
		$('.vid-text .text').html(videos[span]['text']);
		
		//facebook
		$("meta[property='og:description']").attr("content",videos[span]['seo']);
		$("meta[name='description']").attr("content",videos[span]['seo']);
		$("meta[property='og:site_name']").attr("content",videos[span]['title']);
		$("meta[property='og:url']").attr("content",heap.urlmap.dejeuner_videos+"/"+videos[span]['id']);
		var fbUrl = 'http://www.youtube.com/v/'+videos[span]['youtube']+'';
		$('.vid-text #facebook-like').html('<fb:like class=" fb_edge_widget_with_comment fb_iframe_widget" colorscheme="light" action="like" width="300" show-faces="false" layout="stardard" href="'+heap.config.http_root+heap.urlmap.dejeuner_videos+"/"+videos[span]['id']+'"></fb:like');
		FB.XFBML.parse(document.getElementById('facebook-like'));
		
		window.addthis = null;
		var script = 'http://s7.addthis.com/js/250/addthis_widget.js#username=chezcora&domready=1';
    $.getScript(script);
		
		player = document.getElementById("prettyPlayer");
		player.loadVideoByUrl(fbUrl,videos[span]['time']);
		$('.vid-text .link').attr('href',(videos[span]['link']));
		
		Cufon.replace('h1.cufon');
		track(heap.urlmap.dejeuner+'?video='+videos[span]['id']);
		$(this).fadeIn('fast')	
	});
	


}
