// ==========================================================
// Put functions for mainFrame here
// ==========================================================

var customizePanelLoaded = false;
var customizePanelState = 'closed';
var openCustomizePanelInterval = null;

var sidebarLeftPanelNetworksReloadTimout = null; // This is a timout in seconds
var sidebarLeftPanelNetworksReloadTimer = null;  // This holds the setTimout() instance

// Get server time for the header clock
var datetimeLocalObject = datetimeLocal;
var datetimeComputer = new Date();
var clockOffset = (datetimeLocalObject - datetimeComputer.getTime());


jQuery(document).ready(function(){

    // Clock
	updateHeaderClock();

	// Reload page after 1h. This prevents the clock drift and other issues
	setTimeout("window.location.reload();",1000*3600);

	// Check Flash plugin version
	/**/
    if (FlashDetect.installed != true || FlashDetect.majorAtLeast(9) != true) {
		alert("Our website requires the Adobe Flash plugin version 9 or newer." +
		      "\n\nYou can download the plugin from http://get.adobe.com/flashplayer/");
	}

    // Clear errors in player frame after login
    if (window.location.href.match(/justloggedin/)) {
    	playerFrame.jQuery('.error').empty();
    }

	// ################################   EVENT HANDLERS    ###################################


	// featured panel - home page

	var max_featured_heading = 0;
			jQuery("#featured_content_content_home h3").each(function(){
				var featured_heading = jQuery(this).height();
				if(featured_heading > max_featured_heading){
					max_featured_heading = featured_heading;

				}
			});
			jQuery("#featured_content_content_home h3").css('height', max_featured_heading);


	// Customize Panel

	jQuery('#btn_customize').click(function(e){
			e.preventDefault();


			jQuery('#customize_iframe').animate({height: 'show'}, 'slow');
			if(msie6 || msie7 || msie8){
				jQuery('#side_options').css('visibility', 'hidden');
				var zIndexNumber = 990;
				jQuery('div.zindex_fix').each(function() {
					jQuery(this).css('zIndex', zIndexNumber);
					zIndexNumber -= 10;
					//console.log('exec');
				});
			}



			jQuery('#customize_panel').slideDown('slow', function(){
					jQuery('#customize_panel').addClass('customize_panel_back');

					// Panel Minimize button

					jQuery('#btn_minimize').click(function(e){
									e.preventDefault();

									jQuery('#customize_panel').slideUp('slow', function(){
										jQuery('#customize_panel').removeClass('customize_panel_back');
										if(msie6 || msie7 || msie8){
											jQuery('#side_options').css('visibility', 'visible');
										}
									});
									jQuery('#customize_iframe').animate({height: 'hide'}, 'slow');

									customizePanelState = 'closed';
					});

					// Load Customize Panel through Ajax

					if (! customizePanelLoaded) {
						jQuery.post(customizePanelControllerURL, {}, function(response){

							jQuery('#customize_panel_loader').removeClass('customize_panel_loading');
							jQuery('#customize_panel_loader').html(response);

							// Panel Carousel Menu

							jQuery('#carousel_customize').jcarousel({
								vertical: true,
								scroll: 3
							});

							// Panel Tabs

							jQuery('.customize_content .tab-content').addClass("tabs-hide");
							var selectedTabId = jQuery('.customize_content ul li.tabs-selected a').attr('href').replace(/(.*)\#/,'');
							jQuery('.customize_content #'+selectedTabId+'.tab-content').removeClass("tabs-hide").addClass("tabs-visible");
							jQuery('.customize_content_menu ul a').click(function(){
								jQuery('.customize_content .tab-content.tabs-visible').removeClass("tabs-visible").addClass("tabs-hide");
								jQuery('.customize_content ul li.tabs-selected').removeClass('tabs-selected');
								jQuery(this).parent('li').addClass('tabs-selected');
								var selectedTabId = jQuery('.customize_content ul li.tabs-selected a').attr('href').replace(/(.*)\#/,'');
								jQuery('.customize_content #'+selectedTabId+'.tab-content').removeClass("tabs-hide").addClass("tabs-visible");
								styleButtons();
								return false;
							});

							// Customize Panel Subtabs

							jQuery('.customize_content .subtabs a').hover(function(){
								jQuery(this).parent().addClass('active');
							}, function(){
								jQuery(this).parent().removeClass('active');
							});

							jQuery('.customize_content .subtab-content').addClass("subtabs-hide");
							var selectedsubtabId = jQuery('.customize_content ul.subtabs li.subtabs-selected a').attr('href').replace(/(.*)\#/,'');
							jQuery('.customize_content #'+selectedsubtabId+'.subtab-content').removeClass("subtabs-hide").addClass("subtabs-visible");
							jQuery('.customize_content ul.subtabs li a').click(function(){
								jQuery('.customize_content .subtab-content.subtabs-visible').removeClass("subtabs-visible").addClass("subtabs-hide");
								jQuery('.customize_content ul.subtabs li.subtabs-selected').removeClass('subtabs-selected');
								jQuery(this).parent('li').addClass('subtabs-selected');
								var selectedsubtabId = jQuery('.customize_content ul.subtabs li.subtabs-selected a').attr('href').replace(/(.*)\#/,'');
								jQuery('.customize_content #'+selectedsubtabId+'.subtab-content').removeClass("subtabs-hide").addClass("subtabs-visible");
								return false;
							});

							// Customize Panel Subscription Language Auto-checking
							subscriptionFormFieldsAutoCheckboxes();

							// Style big submit buttons
							styleButtons();

							// Customize Panel My Languages Auto-checking
							programmeLanguagesFormFieldsAutoCheckboxes();

							// My Settings / My Account / My Languages Form

							jQuery( ".customize_content #tab-my-settings .submit, " +
									".customize_content #tab-my-account .submit, " +
									".customize_content #tab-my-languages .submit").click(function(e){
								e.preventDefault();
								$form = jQuery(this).parents('form');
								$message = $form.find('.message');

								$message.empty().css('display', 'none');
								$form.find('.ajax-loader-small').css('display','block');

								jQuery.post($form.attr('action'), $form.serialize(), function(response){
									$form.find('.ajax-loader-small').css('display','none');
									$message.removeClass('ok').removeClass('error');
									$message.addClass(response.status);

									if (response.status == 'error') {
										alert(response.message.replace(/\<br(\/*)\>/g, "\n"));
										return false;
									} else {
										$message.html(response.message);
										$message.css('display', 'block');
										return false;
									}
								}, 'json');

							});

							// My Settings / Reset to defaults link
							jQuery( ".customize_content #tab-my-settings .reset").click(function(e) {
								e.preventDefault();
								jQuery(".customize_content #tab-my-settings select").val("");
								jQuery(".customize_content #tab-my-settings .submit").trigger("click");
							});

							customizePanelLoaded = true;

						}, 'html'); // end of jQuery.get

					}

				});

				customizePanelState = 'open';
	});

	// Open the customize panel when the user logs in

	if (window.location.href.match(/.*openCustomizePanel\=1.*/)) {
		var tab = window.location.hash.replace(/\#/, '');
		if (tab != '') {
			openCustomizePanel(tab);
		} else {
			openCustomizePanel();
		}
	}


	// Home page news rotator

	if (jQuery('#news_rotator') != null && jQuery('#news_rotator').length > 0) {
		jQuery('#news_rotator').cycle({
			    fx: 'fade',
				pager: '#news_pager',
				timeout: 8000
			});
	}

	jQuery('#news_pager a').click(function (e)
	  {
		e.preventDefault();
	  });


	// Centering Pager

	if (jQuery('ul#news_pager').length > 0) {
		var pagination_width = jQuery('ul#news_pager').width();
		if (pagination_width > 194){
			pagination_width = 194;
			jQuery('ul#news_pager').css("width", + pagination_width);

		}
		var margin = (194 - pagination_width)/2;
		jQuery('ul#news_pager').css("margin-left", + margin);
		}


	// Vertical Scrolls - Sidebar

	jQuery('#carousel_networks').jcarousel({
        vertical: true,
        scroll: 4
    });

	jQuery('#carousel_stations').jcarousel({
        vertical: true,
        scroll: 5
    });


	// Form Submit Buttons

	jQuery('.btn_login').mouseover(function(){
		jQuery(this).addClass('btn_login_over');
		});
	jQuery('.btn_login').mouseout(function(){
		jQuery(this).removeClass('btn_login_over');
		});

	jQuery('.btn_signup').mouseover(function(){
		jQuery(this).addClass('btn_signup_over');
		});
	jQuery('.btn_signup').mouseout(function(){
		jQuery(this).removeClass('btn_signup_over');
		});


	// Networks Sidebar Block - Ajax switching

	jQuery('#carousel_networks a').click(function(e){

		if (jQuery('#carousel_networks').hasClass('disable-ajax')) {
			// This simply follows the link instead of doing jQuery stuff on it
			return true;
		} else {
			e.preventDefault();
			var $ajaxContainer = jQuery('#networks_panel .programs');

			jQuery('#carousel_networks .active').removeClass('active');
			jQuery(this).parent().addClass('active');

			$ajaxContainer.addClass('loading');
			jQuery.post(this.href, {}, function(response){
					$ajaxContainer.removeClass('loading');
					$ajaxContainer.html(response);
					// Set timer to reload network on next broadcast
					if (sidebarLeftPanelNetworksReloadTimout != null) {
						sidebarLeftPanelNetworksReloadTimer = setTimeout(
							"jQuery('#carousel_networks .active a').trigger('click');",
							(sidebarLeftPanelNetworksReloadTimout * 1000)
						);
					}
			}, 'html');

			return false;
		}
	});

	// Load active network into sidebar block on page load

	jQuery('#carousel_networks .active a').trigger('click');


	jQuery('.networks_with_slider #carousel_networks a').click(function(e){
		e.preventDefault();

		if (jQuery('#networks_panel_sliding').hasClass('hidden')){
					/*jQuery('#networks_panel_sliding').show();
					jQuery('#networks_panel_sliding').removeClass('hidden');*/
					jQuery('#networks_panel_sliding').animate({width: 'show'}, 'slow');
						if(msie6 || msie7){
							jQuery('#networks_panel_sliding_iframe').animate({width: 'show'}, 'slow');
							jQuery('.event-content div.time').css('visibility', 'hidden');
						}
					//jQuery('.arrow').addClass('no_arrow');
		}
	});


	jQuery('.btn_close_networks_slider').click(function(e){
					e.preventDefault();
					//jQuery('#networks_panel_sliding').hide();
					//jQuery('#networks_panel_sliding').addClass('hidden');
					jQuery('#networks_panel_sliding').animate({width: 'hide'}, 'slow');

					if(msie6 || msie7){
						jQuery('#networks_panel_sliding_iframe').animate({width: 'hide'}, 'slow');
						jQuery('.event-content div.time').css('visibility', 'visible');
					}
					//jQuery('.arrow').removeClass('no_arrow');

	});


	jQuery('.box_header h2.toggle').toggle(function(e){
			var element_id = jQuery(this).parent().parent().children('.expandable_content').get(0).id;
			jQuery(this).parent().parent().children('.expandable_content').slideUp('slow');
			jQuery.cookie('' + element_id, 'collapsed');
		}, function(e){
			var element_id = jQuery(this).parent().parent().children('.expandable_content').get(0).id;
			jQuery(this).parent().parent().children('.expandable_content').slideDown('slow');
			jQuery.cookie('' + element_id, 'expanded');
		});

	jQuery('.box_header h2.toggle').mouseover(function(e){
					jQuery(this).addClass('over');
		});

	jQuery('.box_header h2.toggle').mouseout(function(e){
					jQuery(this).removeClass('over');
		});


	jQuery('.expandable_content').each(function(e){
		var element_id = jQuery(this).get(0).id;
		var user_selection = jQuery.cookie('' +element_id);
		if (user_selection == 'collapsed'){
			jQuery(this).hide();
			jQuery(this).siblings('.box_header').children('h2.toggle').trigger('click');
		}
		});



	// Schedules - Ajax Weekday Switching

	jQuery('#schedule_nav a').click(function(e){
		e.preventDefault();
		var weekday = jQuery(this).get(0).id;
		var $form = jQuery('#schedule_panel form');

		jQuery('#schedule_nav li').removeClass('active');
		jQuery('#schedule_nav li').addClass('inactive');
		jQuery(this).parent().addClass('active');
		jQuery('#schedule_panel .schedule').addClass('loading');
		jQuery('#schedule_panel .schedule').empty();

		jQuery.post($form.attr('action'), { Weekday : weekday }, function(response){
			jQuery('#schedule_panel .schedule').removeClass('loading');
			jQuery('#schedule_panel .schedule').html(response);

			// Scroll to current broadcast
			var startAt = 1;
			jQuery('.schedule_list').children().each(function(i){
				if (jQuery(this).hasClass('active')) startAt = parseInt(i) + 1;
			});

			jQuery('.schedule_list').jcarousel({
        		vertical: true,
        		scroll: 3,
        		start: startAt,
        		initCallback: function() {
        			// Scroll a bit down in firefox so the first item's background
        			// is fully visible
        			if (jQuery.browser.mozilla) {
	        			var extraOffset = 12;
	        			var $scheduleList = jQuery('.schedule_list');
	        			var oldTopInt = parseInt($scheduleList.css('top'));
	        			$scheduleList.css('top', (parseInt(oldTopInt) + parseInt(extraOffset)) + 'px')
        			}
        			return true;
        		}
    		});

    		// Add to Favourites onclick
			bindAddToFavouritesLinks();
		}, 'html');

		return false;
	});

	// Load today's schedule on page load
	jQuery('#schedule_nav li.active a').trigger('click');


	// Station Details

	jQuery('#section_top #read_more').click(function(e){
		e.preventDefault();
		jQuery('#info_short').hide();
		jQuery('#info_long').show();
		jQuery('.contact_details').show();
		jQuery('#close_more').show();
		});

	jQuery('#section_top #close_more').click(function(e){
		e.preventDefault();
		jQuery('#info_short').show();
		jQuery('#info_long').hide();
		jQuery('.contact_details').hide();
		jQuery('#close_more').hide();
		});


	jQuery('#language_and_time select').change(function(){
		var form = jQuery('#language_and_time form');
		jQuery.post( form.attr('action'), form.serialize(), function(data) {
			/*if (window.location == top.location) { //this isn't needed now there is force frames
				window.location.href = data.redirectTo;
			} else {
				top.location.href = data.redirectTo;
			}*/
			//alert(data.redirectTo);
			self.location.href = self.location.href;
//			console.log(data);
		}, 'json');
	});


	// Stations Calendar

	if (jQuery('body').attr('id') == 'stations' && (jQuery("#days").length != 0)) {

		    // Date dropdown and language dropdown submit the form through ajax

		    jQuery("#CalendarYear,#CalendarMonth,#CalendarDay,#CalendarLanguage").change(function(){
	//		    		jQuery("#load").css('display','block');
			    		jQuery(".events .event-content").css('visibility','hidden');
			    		jQuery(".events").addClass('loading');

			    		// Update the hidden date range field from dropdowns
			    		jQuery('#CalendarDateRangeEnd').val(jQuery('#CalendarYear').val()+'-'+jQuery('#CalendarMonth').val()+'-'+jQuery('#CalendarDay').val());

			    		// Do ajax calendar update request
			    		jQuery.post(jQuery('#calendar-update-form').attr('action'), jQuery('#calendar-update-form').serialize(), function(response){
//			    			jQuery("#load").css('display','none');

			    			// Slide up, submit form, slide down
		    				jQuery(".events").slideUp('slow',function(){
			    				jQuery(".events .event-content").html("");

						    	// Update programmes
						    	jQuery(".events .event-content").html(response);

						    	// Update weekbar
						    	jQuery("#days").html(jQuery('#update-days').html());

						    	// Make weekbar day links non-clickable
		    					jQuery('.calendar #days ul li a').click(function(e){ e.preventDefault(); return false; });

		    					// Speaker/Download hover
		    					jQuery(".events .event-content .days ul li.enabled a").hover(
							      function () {
							      	jQuery('.events .days li.hover').removeClass('hover');

							      	var $li = jQuery(this).parent();
							      	$li.addClass('hover');

							      	// Copy data from day to slot description
							      	var $programmeInfo = $li.parents(".days").siblings('.info');
							      	var $moreLink = $programmeInfo.find('a.link_read_more');
							      	$programmeInfo.find('.programme-id').html($li.find('.programme-id').val());
							      	$programmeInfo.find('.programme-title').html($li.find('.programme-title').val()).append($moreLink);
							      	$programmeInfo.find('.programme-language').html($li.find('.programme-language').val());
							      },
							      function () {
							      	jQuery('.events .days li.hover').removeClass('hover');
							      }
							    );

							    // 'Add to playlist' links open the customize panel and loads
		    					// the playlist by Ajax
		    					jQuery('.add-to-playlist-link').unbind('click').click(function(e) {
							    	e.preventDefault();
							    	var addItemUrl = this.href;
							    	jQuery('#playlist-form').find('.message').empty();
									jQuery('#playlist-form').find('.ajax-loader-small').css('display','block');
							    	openCustomizePanel('my-playlists', function() {
							    		playlistAjaxAction(addItemUrl);
							    	});
							    	return false;
							    });

								jQuery(".events").slideDown('slow', function() {
									jQuery(".events").removeClass('loading');
									jQuery(".events .event-content").css('visibility','visible');
								});
					    	}); // end of slideUp
		    			}); // end of ajax jQuery.post
		    }); // end of jQuery("#CalendarDay, #CalendarLanguage").change

   	    	// Load initial calendar update (date range ends today)
    		jQuery("#CalendarDay").trigger('change');

    		// Update calendar when 'today' is clicked
    		jQuery(".selector .today-text a").click(function(e){
    			e.preventDefault();
    			var date = this.rel.split('-');
    			jQuery('#CalendarYear').val(date[0]);
    			jQuery('#CalendarMonth').val(date[1]);
    			jQuery('#CalendarDay').val(date[2]);
    			jQuery("#CalendarDay").trigger('change');
    			return false;
    		});

    } // end of Stations calendar


    // Add to Favourites onclick
	bindAddToFavouritesLinks();


    // 'Flag this comment/tag' Hover

	jQuery(".flag").hover(
      function () {
      	var pos = jQuery(this).offset();
        jQuery(".flag-popup").css("display","block");
        jQuery(".flag-popup").css("left",pos.left-120);
        jQuery(".flag-popup").css("top",pos.top-30);
      },
      function () {
        jQuery(".flag-popup").css("display","none");
      }
    );


    // Registration/Account page account type dropdown
    // (submit form to the same page without validation)
    jQuery('#MemberSignupForm_MemberSignupForm_AccountType').change(function() {
    	jQuery(this).parents('form').attr('action', window.location.href).submit();
    });


    // Open newsletter signup form in a popup
	jQuery('.newsletter_panel form').submit(function(e){
		e.preventDefault();
		var $form = jQuery('.newsletter_panel form');
		var $emailField = $form.find('input[name=email]');
		openContentPopup($form.attr('action') + '?email=' + $emailField.val() + '&popup=1', '680', '650');
		return false;
	});


	// Main nav rollovers

	jQuery('#main_nav a').hover(function(){
		jQuery(this).parent().addClass('active');
	}, function(){
		jQuery(this).parent().removeClass('active');
	});


	// Ways to listen

	jQuery('.ways_to_listen_list .closed').toggle(function(e){
		e.preventDefault();
		jQuery(this).removeClass('closed').addClass('open');
		jQuery(this).siblings('.desc').show();
	}, function(e){
		e.preventDefault();
		jQuery(this).addClass('closed').removeClass('open');
		jQuery(this).siblings('.desc').hide();
	});

	jQuery('#side_options_ways select').change(function(e) {
		jQuery(this).parents('form').submit();
		return false;
	});


	// Tools

	jQuery('.tool_read_more').toggle(function(e){
		e.preventDefault();
		jQuery(this).siblings('.more_about_tool').show();
		jQuery(this).addClass('close').text('Show less');
	}, function(e){
		e.preventDefault();
		jQuery(this).siblings('.more_about_tool').hide();
		jQuery(this).removeClass('close').text('Read more');
	});


	jQuery('#tools #widget_download_link a').click(function(e){
		if (!(jQuery('.terms_checkbox').attr('checked'))){
			e.preventDefault();
			alert('Please confirm that you agree with Terms and Conditions');
		} 
	});


	// Help

	jQuery('#help_list .title').click(function(e){
		e.preventDefault();
		jQuery(this).siblings('.answer').show();
		jQuery(this).addClass('open');
	});

	jQuery('#help_list .close_answer').click(function(e){
		e.preventDefault();
		jQuery(this).parent().hide();
		jQuery(this).parent().siblings('.title').removeClass('open');
	});


	// Help form validation
	if(jQuery("#help_form").length > 0){
		jQuery("#help_form").validate();
	}

	// Contact form validation
	if(jQuery("#contact_form").length > 0){
		jQuery("#contact_form").validate();
	}

	jQuery('#btn_ask_a_question').click(function(e){
		e.preventDefault();
		jQuery(this).hide();
		jQuery('#ask_a_question_form').slideDown('slow', function(){
			jQuery("#ask_a_question_form a[title=submit]").addClass('btn').hover(function(e){
				jQuery(this).css('opacity', '0.7');
			  }, function(e){
				  jQuery(this).css('opacity', '1');
			  });
			styleButtons();
			});
	});


	// Dynamic "big blue button" styling
	styleButtons();

	jQuery('.btn').hover(function(e){
		jQuery(this).css('opacity', '0.7');
	}, function(e){
		  jQuery(this).css('opacity', '1');
	});


	// Form submission using anchors with title="submit"
	jQuery("a[title=submit]").click( function(e){
		e.preventDefault();
		jQuery(this).parents("form").trigger('submit');
	});


	// Password strength meter
	jQuery("#Password-_Password").passStrength({
		userid:	"#MemberSignupForm_MemberSignupForm_Email"
	});

	// Ernie forms, required fields asterisk decoration
	addRequiredFieldAsterisks();

	// Registration page - newsletter - languages autochecking
	subscriptionFormFieldsAutoCheckboxes();



	// dynamic breadcrumbs lengths
	jQuery(function(){
		var breadcrumbs_left = jQuery('#bread_crumbs_left');
		var breadcrumbs_nav = jQuery('#bread_crumbs_nav');
		var label_width = breadcrumbs_left.children("span").width();
		//console.log(title_width);
		breadcrumbs_left.css('width', label_width + 7);
		var breadcrumbs_area = 630;
		breadcrumbs_nav.width(breadcrumbs_area - label_width);

	});


	//registration page
	//It seems that having just the #label-... means that only when the label gets clicked does the JS get executed.
	//jQuery("#label-MemberSignupForm_MemberSignupForm_AccountType_7day").click( function(e){
	jQuery("li.val7day").click( function(e){
		jQuery("#MemberSignupForm_MemberSignupForm_AccountType_7day").attr("checked", "checked");
		jQuery("#MemberSignupForm_MemberSignupForm_AccountType_7day").parents('form').attr('action', window.location.href).submit();
	});

	//jQuery("#label-MemberSignupForm_MemberSignupForm_AccountType_notloggedin").click( function(e){
	jQuery("li.valnotloggedin").click( function(e){
		jQuery("#MemberSignupForm_MemberSignupForm_AccountType_notloggedin").attr("checked", "checked");
		jQuery("#MemberSignupForm_MemberSignupForm_AccountType_7day").parents('form').attr('action', window.location.href).submit();
	});

	//jQuery("#label-MemberSignupForm_MemberSignupForm_AccountType_30day").click( function(e){
	jQuery("li.val30day").click( function(e){
		jQuery("#MemberSignupForm_MemberSignupForm_AccountType_30day").attr("checked", "checked");
		jQuery("#MemberSignupForm_MemberSignupForm_AccountType_7day").parents('form').attr('action', window.location.href).submit();
	});

}); // end of jQuery(document).ready()




/**
 * Dynamic big submit button styling
 * @return
 */
function styleButtons(){
	jQuery('.btn span').each(function(e){
		if (jQuery(this).parents('.tabs-hide').length == 0) { // Fix for hidden tabs of Customize Panel
				jQuery(this).attr('style','');
				var text_width = jQuery(this).width();
				var anchor_width = text_width + 42;
				jQuery(this).css({
								 'padding' : '7px 29px 0 9px',
								 'display' : 'block',
								 'width': 'auto'
				 });
				jQuery(this).parent().width('auto');
		}
	});
}


/**
 * Opens media format popup
 * @param {} button : button clicked, usually 'this' on button
 * @param {} type : 'Audio', 'Video'
 * @param {} delivery : 'Stream', 'Download'
 * @param {} entity 'Network', 'Programme'
 * @param {} id
 */
function openMediaFormatPopup(button,type,delivery,entity,id) {


	var $popup = jQuery('#media-format-popup');
	var mediaFormatCookieName = 'MediaFormat_'+type+'_'+delivery;

	// If format previously selected, don't show the popup
	if (jQuery.cookie(mediaFormatCookieName) != null) {
		var preSelectedFormat = jQuery.cookie(mediaFormatCookieName);
		launchMedia();

	// Otherwise show the popup
	} else {
		// Set position next to button clicked
		var pos = jQuery(button).offset();
	    $popup.css('display','block');
	    // $popup.css("left",pos.left-680); // this does not work properly
		if(jQuery("#header.with_banner").length>0){
	    	$popup.css("top",pos.top-190);
		}else{
			$popup.css("top",pos.top-110);
		}

		// Show only Audio or Video options
		$popup.find('.type').css('display','none');
		$popup.find('.type.'+type).css('display','block');

		// Show only Stream or Download options
		$popup.find('.delivery').css('display','none');
		$popup.find('.delivery.'+delivery).css('display','block');

		// Close button
		$popup.find('.close').unbind("click").click(function(e){
			$popup.css("display","none");
		});
	}

	// 'Listen' and 'Download' buttons click
	$popup.find('.button').unbind("click").click(launchMedia);

	/**
	 * Helper used for Listen/Download button onclick
	 * @param {} e
	 * @return {Boolean}
	 */
	function launchMedia(e) {

			// Read selected format
			var selectedFormat;
			if (typeof(preSelectedFormat) != 'undefined' && preSelectedFormat != null) {
				selectedFormat = preSelectedFormat;
			} else {
				// Read from radios
				jQuery(this).parents('.delivery').find('input[type=radio]').each(function(i) {
					if (this.checked) selectedFormat = this.value;
				});
			}

			// We save the selection for type and delivery
			var saveFormatCheckbox = $popup.find('.save-format-checkbox').get(0);
			if (saveFormatCheckbox.checked) {
				jQuery.cookie(mediaFormatCookieName, selectedFormat, { path: cookieBaseURL });
				/*
				if (userLoggedIn) {
					
				} else {
					alert("You need to be logged in to save your selection. \nPlease login or register using the WRN Login box.");
					return false;
				}*/
			}

			// If streaming, load content to playerFrame
			if (delivery == 'Stream') {
				if (entity == 'Network') {
					playerFrame.loadNetwork(id, selectedFormat, saveFormatCheckbox.checked)
				} else {
					if (jQuery(button).hasClass('play-playlist-item')) {
						playerFrame.loadProgramme(id, selectedFormat, saveFormatCheckbox.checked, true)
					} else {
						playerFrame.loadProgramme(id, selectedFormat, saveFormatCheckbox.checked);
					}
				}
			// If download, call download action
			} else {
				downloadProgramme(id, selectedFormat, saveFormatCheckbox.checked);
			}

			$popup.css('display','none');

			// Highlight playing item on station calendar
			if (jQuery(button).hasClass('play')) {
				jQuery('.events .days li').removeClass('playing');
				jQuery(button).parent().addClass('playing');
			}

			// Highlight playing item on playlist
			if (jQuery(button).hasClass('play-playlist-item')) {
				jQuery(button).parents('.playlist').find('li').removeClass('active');
				jQuery(button).parent().addClass('active');
			}

			return false;
	}

	return false;
}


/**
 * Opens the customize panel on given tab
 * E.g. 'my-account', 'my-playlists', 'my-favourites'
 * @param {} tab
 * @param {} callbackFunction - executed when panel is open and tab switched to
 *                              (only if user is logged in)
 */
function openCustomizePanel(tab, callbackFunction) {
	if (typeof(tab) == 'undefined') var tab = 'my-settings';
	if (typeof(callbackFunction) == 'undefined') var callbackFunction = function() {};

	jQuery('html,body').animate({scrollTop: 0}, 200);

	if (customizePanelState != 'open') jQuery('#btn_customize').trigger('click');

	// Wait for the panel to open and load through Ajax
	openCustomizePanelInterval = setInterval(
		function () {
			if (customizePanelLoaded && customizePanelState == 'open') {
				clearInterval(openCustomizePanelInterval);
				// Switch to specified tab if user is logged in
				if (jQuery('#customize_panel #customize-needs-login').length == 0) {
					jQuery('.customize_content_menu a[href=#tab-'+tab+']').trigger('click');
					callbackFunction();
				}
			}
		}
	, 50);
}


/**
 * Initiate download of a programme selected from Media Format Popup
 * @param {} id
 * @param {} format ( e.g. 'MP4_32')
 * @param {} saveFormat bool
 */
function downloadProgramme(id, format, saveFormat) {
	var url = downloadProgrammeURL + id;
	url += '/' + format;
	url += '/' + (saveFormat ? '1' : '0');
	mainFrame.location.href = url;
}


/**
 * Performs an ajaxAction and fills #playlist-form with HTML response
 * Used to delete playlist items, for example
 * @param {} actionUrl
 * @param {} data - extra post data to pass to the server
 */
function playlistAjaxAction(actionUrl, data) {
	if (typeof(data) == 'undefined') var data = {};
	var $form = jQuery('#playlist-form');
	$form.find('.message').empty();
	$form.find('.ajax-loader-small').css('display','block');
	jQuery.post(actionUrl, data, function(response){
		$form.find('.ajax-loader-small').css('display','none');
		$form.html(response);
	}, 'html');
}


/**
 * Performs an ajaxAction and fills #favourites-form with HTML response
 * Used to delete favourites, for example
 * @param {} actionUrl
 * @param {} data - extra post data to pass to the server
 */
function favouritesAjaxAction(actionUrl, data) {
	if (typeof(data) == 'undefined') var data = {};
	var $form = jQuery('#favourites-form');
	$form.find('.message').empty();
	$form.find('.ajax-loader-small').css('display','block');
	jQuery.post(actionUrl, data, function(response){
		$form.find('.ajax-loader-small').css('display','none');
		$form.html(response);
	}, 'html');
}


/**
 * Generic overlay for loading pages like Terms and Conditions
 * @param {} url
 * @return {Boolean}
 */
function openContentOverlay(url, width, height) {
	if (typeof(width) == 'undefined' || width == null) var width = 657;
	if (typeof(height) == 'undefined' || height == null) var height = 400;

	var dummyLink = document.createElement('a');
	dummyLink.href = url;

    jQuery(dummyLink).fancybox({
    	frameWidth			:	width,
		frameHeight			:	height,
		overlayShow			:	true,
		overlayOpacity		:	0.2,
		hideOnContentClick	:	false,
		iframe              :   true
    });

    jQuery(dummyLink).trigger('click');
	return false;
}


/**
 * Generic popup for loading pages like Terms and Conditions
 * @param {} url
 * @return {Boolean}
 */
function openContentPopup(url, width, height) {
	if (typeof(width) == 'undefined' || width == null) var width = 657;
	if (typeof(height) == 'undefined' || height == null) var height = 500;
	window.open(url,'popupwindow','menubar=0,location=0,resizable=1,width='+width+',height='+height+',scrollbars=1');
	return false;
}


/**
 * Updates time on the big header clock
 */
function updateHeaderClock (){
 	var hour = 60*60*1000;
	var min = 60*1000;
	//alert(language);
	//var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
	//var months = ["January","February","March","April","May","June","July","August","September","October","November","December"];

	// damian: added leading 0
	var compTime = new Date();
	compTime.setTime(compTime.getTime() + clockOffset);
	var minutes = compTime.getMinutes();
	if (minutes.toString().length == 0) minutes = '00';
	if (minutes.toString().length == 1) minutes = '0' + minutes.toString();

	var hours = compTime.getHours();
	if (hours.toString().length == 0) hours = '00';
	if (hours.toString().length == 1) hours = '0' + hours.toString();
	//alert(clockOffset);
	//Get Date with suffix
	var temp = compTime.getDate();
	
	var dateSuff = temp;
	var suffixes = ["st", "nd", "rd"];
	var suffix = "";
	if(language != 'ar')
	{
		if (temp >= 11 && temp <= 13) {
			dateSuff += "th";
		} else {
			dateSuff += (suffix = suffixes[String(temp).substr(-1) - 1]) ? (suffix) : ("th");
		}
	}
	else
	{
		jQuery("#date").attr('style','direction:rtl;')
	}

	jQuery("#hour").html( hours );
	jQuery("#min").html( minutes );

	jQuery("#date").html(days[compTime.getDay()]+"<br/>"+dateSuff+" "+months[compTime.getMonth()]+", "+compTime.getFullYear());
	
	// damian: added blinking colon
	if (jQuery(".clock .colon").css('visibility') == 'hidden') {
		jQuery(".clock .colon").css('visibility', 'visible');
	} else {
		jQuery(".clock .colon").css('visibility', 'hidden');
	}

	// Push time by a second
	var timestamp = compTime.getTime();
	compTime.setTime(parseInt(timestamp) + 1000);

	setTimeout("updateHeaderClock()",1000);
}


/**
 * Onclick for Add To Favourites links
 */
function bindAddToFavouritesLinks() {
	// 'Add to favourites' links
	jQuery('.add_to_favourites, .btn_bookmark').unbind('click').click(function(e) {
    	e.preventDefault();
    	var addItemUrl = this.href;
    	jQuery('#favourites-form').find('.message').empty();
		jQuery('#favourites-form').find('.ajax-loader-small').css('display','block');
    	openCustomizePanel('my-favourites', function() {
    		favouritesAjaxAction(addItemUrl);
    	});
    	return false;
    });
}


/**
 * On stations calendar, opens programme details
 * @param {} link
 * @return {Boolean}
 */
function openProgrammeDetailsOverlay(linkElem) {
	var programmeId = jQuery(linkElem).parents('.event-content').children('.info').find('.programme-id').text().replace(/\s+/,"");
   	var url = currentPageURL + '/programmeDetails/' + programmeId + '?popup=1';
   	openContentOverlay(url);
   	return false;
}


/**
 * Newsletter subscription checkboxes with multiple languages
 */
function subscriptionFormFieldsAutoCheckboxes() {

	// Checking a language automatically checks 'Subscribe to newsletter'
	jQuery('.subscriptionFormFields .right-col input').click(function(e){
		var languagesSelected = jQuery('.subscriptionFormFields .right-col input:checked').length;

		if (this.checked) {
			jQuery('.subscriptionFormFields #Newsletter input').get(0).checked = true;
		} else {
			if (languagesSelected == 0) {
				jQuery('.subscriptionFormFields #Newsletter input').get(0).checked = false;
			}
		}
	});

	// Checking 'Subscribe to newsletter' automatically checks first language
	jQuery('.subscriptionFormFields #Newsletter input').click(function (e) {
		if (this.checked) {
			jQuery('.subscriptionFormFields .right-col input').get(0).checked = true;
		} else {
			jQuery('.subscriptionFormFields .right-col input').attr('checked','');
		}
	});
}


/**
 * 'My Languages' in customize panel auto language checkboxes
 */
function programmeLanguagesFormFieldsAutoCheckboxes() {

	// All languages input
	jQuery('.programmeLanguagesFormFields #AllProgrammeLanguages input').click(function(e){
		var languagesSelected = jQuery('.programmeLanguagesFormFields #ProgrammeLanguages input:checked').length;

		if (this.checked) {
			jQuery('.programmeLanguagesFormFields #ProgrammeLanguages input').attr('checked',true);
		} else {
			jQuery('.programmeLanguagesFormFields #ProgrammeLanguages input:not(:disabled) ').attr('checked','');
		}
	});

	// Individual languages uncheck 'All languages'
	jQuery('.programmeLanguagesFormFields #ProgrammeLanguages input').click(function (e) {
		if (this.checked == false) {
			jQuery('.programmeLanguagesFormFields #AllProgrammeLanguages input').get(0).checked = false;
		}
	});
}
