glow.ready(function() {
  
	try{
		if(fnEmpAutoEmbed && fnEmpPlaylist) writeEMP(fnEmpPlaylist);
	}catch(e){}

	
	doTabbedPromos();	
	doHomeSelector();
	
	doCarousel();
	
	doAccordion();
	
	doEqualHeights();
	
	doCreditsToggle();
	
	doFilterRollovers();
	doUserRating();
	doCopyToClipboard();
	
	doHomeLists();
});


//rate film or article
function doCreditsToggle(){
		
	var creditsOpen = false;
	var credits = glow.dom.get('#fn-film-credits');
	var creditsContainer = glow.dom.get('#fn-film-credits div.fn-credits-slide');
	var creditsInner = glow.dom.get('#fn-film-credits div.i');
	
	credits.addClass('mini').addClass('closed');	
	//glow.anim.slideUp(creditsContainer, 0);
	creditsContainer.css('height','123px').css('overflow','hidden')
		
	//get first aparagraph, substring, create new element
	var firstPText = String(glow.dom.get(creditsContainer.get('.fn-synopsis p')[0]).html()).substr(0,200) +'.... ( <a class="fn-film-credits-toggle" href="#" title="View more info">more info</a> )';
	var lessInfo = glow.dom.create('<p id="fn-film-info-less"><a class="fn-film-credits-toggle" href="#" title="Hide these film credits">hide film credits</a></p>');
	var newNodes = glow.dom.create('<p class="fn-synopsis">' + firstPText +'</p><p class="fn-synopsis"><a class="fn-film-credits-toggle" href="#" title="View more information about this film">View cast and crew, festival screenings, awards and more.</a></p>')
	glow.dom.get('#fn-film-credits .fn-synopsis').before(newNodes);
	glow.dom.get('#fn-film-credits .i ').append(lessInfo);
	
	//hide the actual film credits
	var hiddenContent = creditsContainer.get('div.fn-synopsis, .fn-cast-crew, .fn-film-addditional, #fn-film-info-less');
	hiddenContent.hide();	
	
	var creditsToggle = glow.dom.get('#fn-film-credits-toggle, #video #fn-film-credits .fn-film-credits-toggle').css('cursor','pointer');
	
	var creditsToggleListener = glow.events.addListener(creditsToggle,'click',function (event) {
		
		credits.removeClass('mini');
		
		if(creditsOpen){
			
			creditsOpen = false;	
			credits.addClass('closed');			
			//hiddenContent.hide();//do using .closed?
			glow.anim.slideUp(creditsContainer, 1);
			
		}else{
			
			newNodes.hide();
			creditsOpen = true;
			credits.removeClass('closed');
			hiddenContent.show();//do using .closed?
			glow.anim.slideDown(creditsContainer, 1);			
			
		}
		
		return false;
		
	});
	
}

function doHomeLists(){
	var homeLists = glow.dom.get('#fn-home-content-lists .fn-home-list');
	var activeListClass = "fn-home-list-active";
	var activeList;	
	setActiveList(glow.dom.get(homeLists[0]))
	
	var homeListTabs = glow.dom.get("#fn-home-tabs li");
	
	var homeListTabsListener = glow.events.addListener(homeListTabs,'click',function (event) {		
		var t = glow.dom.get(this);
		var id = t.attr('id');
		var list = glow.dom.get('#fn-home-content-lists #' +id +'-list');
		setActiveList(list);	
		homeListTabs.removeClass('active');
		t.addClass('active');
		return false;
	});
	
	function setActiveList(newActiveList){
		if(activeList) activeList.removeClass(activeListClass);
		homeLists.hide();
		activeList = newActiveList;
		activeList.addClass(activeListClass);
		activeList.show();
	}
}


var activeCarouselContainer;
//var activeCarouselRawHtml;
var carousels = [];
function doCarousel(){
	
	var carousel = glow.dom.get("div.carousel ol");	
	if(carousel.length){
		var carouselWidget = new glow.widgets.Carousel(carousel,{
	        loop: true,
	        size: 1,
	        step: 1,
	        pageNav: true
		});
	}
	

	
	setActiveCarousel(glow.dom.get("#fn-wrap div.carousel-container.active"));

	var carouselTabListener = glow.events.addListener('#fn-wrap .fn-carousel-tab','click',function (event) {		
		var t = glow.dom.get(this);
		if(t.hasClass('active')) return false;
		glow.dom.get('#fn-wrap .fn-carousel-tab.active').removeClass('active')
		t.addClass('active');
		var id = t.attr('id');
		setActiveCarousel(glow.dom.get('#fn-wrap #' +id +'-container'));		
		
		return false;
	});

	
	function setActiveCarousel(newActiveCarouselContainer){
		if(newActiveCarouselContainer.length ==0) return;
		if(activeCarouselContainer){
			carousels[activeCarouselContainer.attr('id')] = activeCarouselContainer;
			//activeCarouselContainer.css('display','none');
			//activeCarouselContainer.html(activeCarouselRawHtml)
			activeCarouselContainer.removeClass('active');
		}
		//activeCarouselRawHtml = newActiveCarouselContainer.html();		
		//var carousel = glow.dom.get("#fn-wrap div.carousel-container.active ul");
		activeCarouselContainer = newActiveCarouselContainer;
		activeCarouselContainer.addClass('active');
		if(carousels[activeCarouselContainer.attr('id')]) return;
		var carouselWidget = new glow.widgets.Carousel(activeCarouselContainer.get('ul'),{
	        loop: false,
	        size: glowCarouselSize,
	        step: glowCarouselStep,
	        theme: "dark"
		});			
	}
	
	
	var carouselLiElements = glow.dom.get('#fn-wrap div.carousel-container li');
	
	
	var carouselClickListener = glow.events.addListener(carouselLiElements,'click',function (event) {
		var t = glow.dom.get(this);
		window.location = t.get("a").attr('href');		
		return false;
	});
	
	var carouselOverListener = glow.events.addListener(carouselLiElements,'mouseover',function (event) {		
		var t = glow.dom.get(this);
		t.addClass('hover');
		t.get('img').css('opacity','0.25');
		t.get('.details').css('left','0');
		return false;
		
	});	
	
	var carouselOutListener = glow.events.addListener(carouselLiElements,'mouseout',function (event) {
		
		var t = glow.dom.get(this);
		t.removeClass('hover');
		t.get('img').css('opacity','1');
		t.get('.details').css('left','-999em');
		return false;
	});
			
}



//homepage full width promo selector
var homeSelector;
function doHomeSelector(){
	
	homeSelector = glow.dom.get('#fn-promo-selector');
	if(!homeSelector) return;
	
	var selectorMain = homeSelector.get('ul.main li');
	var selectorTriggers = homeSelector.get('ul.select li');
	
	selectorMain.css('cursor','pointer');
	selectorTriggers.css('cursor','pointer');
	
	var selectorTriggersListener = glow.events.addListener(selectorTriggers,'click',function (event) {
	
		var t = glow.dom.get(this);
		var id = t.attr('id');
		selectorMain.removeClass('active');
		selectorTriggers.removeClass('active');
		t.addClass('active');
		homeSelector.get('ul.main .' +id).addClass('active');
		return false;
	});
}



//copy to clipboard
var clip = null;
function doCopyToClipboard(shortCode) {	
	//copy to clipbaord
	var code = glow.dom.get('#fn-share input').attr('value');
	if(!code) return;
	ZeroClipboard.setMoviePath(palStaticHost +'/filmnetwork/swf/zeroclipboard.swf');
	clip = new ZeroClipboard.Client();
	clip.setText(code);
	clip.glue('fn-copy-to-clipboard');
}


//rate film or article
function doUserRating(){
	
	if(typeof fnRatingType=="undefined" || typeof fnRatingId=="undefined") return;
	
	
	var ratingMessageNode;
	var ratingNode = glow.dom.get('.fn-rating');
	var userRatingNode = glow.dom.get('#fn-user-rating').addClass('js');
	var userRatingValue = userRatingNode.get('.fn-stars-value');
	
	var userRating;
	
	
	var ratingClickListener = glow.events.addListener(userRatingValue,'click',function (event) {
		glow.events.removeListener(ratingClickListener);
		glow.events.removeListener(ratingMoveListener);
		
		userRatingNode.removeClass('js');
		
		
		userRatingNode.css('padding-bottom','15px');		
		ratingNode.append('<div id="fn-user-rating-message"><p>Saving.</p></div>');
		ratingMessageNode = ratingNode.get('#fn-user-rating-message');
		glow.anim.slideDown(ratingMessageNode, 1);
		
		var h = ratingMessageNode.css('height'); 
		ratingMessageNode.css('height','0px');
		glow.anim.css(ratingMessageNode, 0.3, {"height":h}).start();
		
		var uri = "/filmnetwork/rate/" +fnRatingType +"/" +fnRatingId +"/" +userRating; 
		var request = glow.net.get(uri, {
			  onLoad: function(response) {
				var r = response.text();
				var pos=r.indexOf("success")				
				if(pos==1) voteSuccess(glow.dom.get(response.xml()));
				else voteFailure();
			  },
			  onError: function(response) {
				  voteFailure();
			  }
			});			
		return false;
	});		
	
	
	
	
	var voteSuccess = function(resultNodeList){
		
		var count = resultNodeList.get('count').text();
		var average = resultNodeList.get('average').text();
		
		var hasDecimal=average.indexOf(".")
		var starClass;
		if(hasDecimal){ 
			var parts = average.split(".");
			var whole = parts[0];
			var fraction = parts[1] / 10;			
			if(fraction<0.25) fraction = 0;
			else if(fraction>=0.75){
				fraction = 0;
				whole++;
			}else{
				fraction = 5;
			}
			starClass = "fn-stars-value-" +whole +"-" +fraction;
		}else{
			starClass = "fn-stars-value-" +whole +"-0";
		}
		
		userRatingValue.addClass('fn-stars-value-1-0');		
		ratingMessageNode.get('p').html('Thanks for rating.');
		glow.anim.highlight(ratingMessageNode, "#ffe455", 3);
		
		var countSpan = glow.dom.get('.fn-rating .fn-stars-count span');
		countSpan.html(String(count));		
		
		var stars = glow.dom.get('.fn-rating .first .fn-stars-value');
		for(i=0;i<6;i++){
			stars.removeClass('fn-stars-value-' +i +'-0');
			stars.removeClass('fn-stars-value-' +i +'-5');
		}
		stars.addClass(starClass);
	}
	
	var voteFailure = function(){
		ratingMessageNode.get('p').html('Try again later.');
		glow.anim.highlight(ratingMessageNode, "#ffe455", 1);
	}
	
	
	var ratingMoveListener = glow.events.addListener(userRatingValue,'mousemove',function (event) {
		var offset = userRatingValue.offset();
		var left = offset.left;
		var x = event.pageX;
		var dif = (x - left) * 1.1;
		var width = userRatingValue.width();
		var p = dif/width;
		var rating = p * 5;
		if(rating<0) rating = 0;
		else if(rating>5) rating = 5;
		userRating = Math.round(rating);
		
		for(i=0;i<6;i++){
			userRatingValue.removeClass('fn-stars-value-' +i +'-0');
			userRatingValue.removeClass('fn-stars-value-' +i +'-5');
		}
		
		userRatingValue.addClass('fn-stars-value-' +userRating +'-0');
	});

}
	
function requestSuggestData(uri,onLoad){
	var request = glow.net.get(uri, {
		  onLoad: function(response) {
		    //alert("Got file:\n\n" + response.text());
		    onLoad(response.text());
		  },
		  onError: function(response) {
		    //alert("Error getting file: " + response.statusText());
		    onLoad(false);
		  }
		});	
}




function doFilterRollovers(){

	//filter rollovers
	glow.events.addListener('#fn-main #filters ul li','mouseover',function (event) {
		glow.dom.get(this).addClass('hover');
	});	
	glow.events.addListener('#fn-main #filters ul li','mouseout',function (event) {
		glow.dom.get(this).removeClass('hover');
	});
	glow.events.addListener('#fn-main #sub-filter ul li','mouseover',function (event) {
		glow.dom.get(this).addClass('hover');
	});	
	glow.events.addListener('#fn-main #sub-filter ul li','mouseout',function (event) {
		glow.dom.get(this).removeClass('hover');
	});
	
}

function doAccordion(){
	//accordion
	var accordionTweenDuration = 0.4;
	var accordionSelector = 'div#fn-main div#nav.accordion';
	var accordionSelectorActive = accordionSelector +' li.active';
	var accordion = glow.dom.get(accordionSelector);
	if(!accordion) return;
	accordion.addClass('js').get('li ul').css('display','none');
	var activeNode = glow.dom.get(accordionSelectorActive);
	var activeNodeUL = activeNode.get('ul').css('display','block');
	glow.events.addListener(accordionSelector +' a.section','click',function (event) {
		
		if(isActive = glow.dom.get(this).hasClass('active')) return false;
		
		//close existing active node
		if(activeNode){			
			activeNode.removeClass('active');
			glow.anim.slideUp(activeNodeUL, accordionTweenDuration,{tween:glow.tweens.easeOut(3)});
		}
		
		//set new active node
		activeNode = glow.dom.get(this).parent().addClass('active');
		activeNodeUL = activeNode.get('ul').css('display','block');
		glow.anim.slideDown(activeNodeUL, accordionTweenDuration,{tween:glow.tweens.easeOut(3)});
		
		return false;
	});		
}


function doTabbedPromos(){
	
	//4 way tabbed promos
	var tabLinks = glow.dom.get("div.tabbed-promos-container ol.tabs li a").each(function(i){
		var t = glow.dom.get(this);
		var h  = cleanPixelValue(t.css('height'));
		var pt = h<13 ? 24-h : 7;
		t.css('padding-top',pt);
	});
	var tabbedPromos = glow.dom.get("div.tabbed-promos-container ol.promos li").css('display','none');	
	var tabs = glow.dom.get("div.tabbed-promos-container ol.tabs li").each(function(i){
		this.myIndex=i;
	});	
	glow.events.addListener(tabs,'click',function(){
		selectTabbedPromo(this.myIndex);
		return false;
	});
	selectTabbedPromo(0);
	
	function selectTabbedPromo(index){
		tabbedPromos.css('display','none');		
		glow.dom.get(tabbedPromos[index]).css('display','block');
	}	
}




function doEqualHeights(){
	//equal height containers
	glow.dom.get('#fn-main .equal-height-container').each(function(){
		var maxHeight = 0;
		var t = glow.dom.get(this);
		t.get('.equal-height').each(function(){
			var t = glow.dom.get(this);
			var h  = cleanPixelValue(t.css('height'));
			if(h>maxHeight) maxHeight = h;
		});
		t.get('.equal-height').each(function(){
			var t = glow.dom.get(this);
			var pT = cleanPixelValue(t.css('padding-top'));
			var pB = cleanPixelValue(t.css('padding-bottom'));
			t.css('height',maxHeight-pT-pB);
		});
	});	
}


//takes a value such as "10" or "10px" and returns "10"
function cleanPixelValue(value){
	var p  = new String(value);	
	p = Number(p.replace("px",""));
	return p;
}


function writeEMP(playlist){
	
	if(typeof empConfigHost=="undefined") empConfigHost="";
	else{
		empConfigHost = empConfigHost.replace("https://","http://");
	}
	
	var emp = new embeddedMedia.Player();
	emp.setDomId("fn-emp-inner");
	emp.setWidth("832");
	emp.setHeight("503");
	emp.setPlaylist(playlist);
	emp.setConfig(empConfigHost +"/filmnetwork/emp/config.xml");	
	if(typeof fnEmpHoldingImage!="undefined") emp.set("holdingImage",fnEmpHoldingImage);
	emp.set("config_settings_skin", "black");//need to do this if setting holdingImage
		
	emp.write();	
	emp.onMediaPlayerInitialised = function() {
	    emp.register('onMediaPlaying');
	    emp.onMediaPlaying = function(e) {	        	
	        registerEMPView();
	        emp.onMediaPlaying = null;
	    }	    
	}
	
	function registerEMPView(){
		
		if(typeof fnDoView=="undefined" || !fnDoView) return;
		

		
		var uri = "/filmnetwork/view/" +fnViewType +"/" +fnViewId;		

		var request = glow.net.get(uri, {
			  onLoad: function(response) {
					var r = response.text();
					var pos=r.indexOf("success");
					if(pos>0){
						viewSuccess(glow.dom.get(response.xml()));
					}
			  },
			  onError: function(response) {
			  }
			});	
		
		

	}
	
	function viewSuccess(resultNodeList){

		var count = resultNodeList.get('count').text();
		
		var views = glow.dom.get('#video .head .fn-views');
		var viewsSpanCount = views.get('span.c');
		var viewsSpanLabel = views.get('span.l');
		
		if(viewsSpanCount.html() == count) return;
		
		glow.anim.fadeOut(views, 0.8, {
			onComplete:function(e){				
				viewsSpanCount.html(count);
				var l = count == 1 ? "view" : "views";
				viewsSpanLabel.html(l);
				glow.anim.fadeIn(views,0.5);
			}
		});
	}	
	
	//EMP
	glow.events.addListener('#video #fn-emp-resize','click',function(){
		toggleEMPSize();
		return false;
	});	
}



function toggleEMPSize() {
	var widthEmp=832;
	var heightEmp=503;
	var videoWidth = glow.dom.get('#video').css('width');
	if(videoWidth == "832" || videoWidth == "832px"){
		widthEmp=640;
		heightEmp=395;
		glow.dom.get('#video').addClass('compact');
		glow.dom.get('#video a#fn-emp-resize').removeClass('w832').addClass('w640');
		glow.dom.get('#fn-carousels').css('display','none');
	}else{
		glow.dom.get('#video').removeClass('compact');
		glow.dom.get('#video a#fn-emp-resize').removeClass('w640').addClass('w832');
		glow.dom.get('#fn-carousels').css('display','block');
	}
	glow.dom.get('#video').css('width',widthEmp +'px');
	glow.dom.get('#video #bbc_emp_embed_fn-emp-inner').css('width',widthEmp +'px').css('height',heightEmp +'px');		
}

