// Planed Plant Object
var pp = {};


// Planed Plant Interface Ping
pp.ping = {

	interval: 60,

	is_live: function() {
		setInterval(function() {
			jQuery.getJSON('/api2/ping/status.json', function(response) {
				if (response.streaming === true || response.chat === true) {
					assertNot('#notice.live_status', function() {
						pp.setNotice('<a href="/planedplant/' + lit('cy', 'en') + '" class="block">Planed Plant - ' + lit('Nawr yn fyw!', 'Now on air!') + '</a>', 'success live_status', false);
						jQuery('#logo a').css('background-image', 'url(/planedplant/static/img/header_pp_logo_onair.gif)');
					});
				} else if (response.streaming === false && response.chat === false) {
					jQuery('#notice').slideUp('slow', function() {
						jQuery('#notice').remove();
					});
					jQuery('#logo a').css('background-image', 'url(/planedplant/static/img/header_pp_logo.gif)');
				}
			});
		}, (pp.ping.interval * 1000))
	}

}


// Planed Plant User Object
pp.user = {
	lang: 'cy',
	username: null,
	background: '/planedplant/static/themes/default.jpg'
};


// Planed Plant Live Statuses
pp.status = {
	streaming: false,
	chat: false
};


// Planed Plant Detect Object
pp.detect = {
	language: function() {
		assert('body.en', function() {
			pp.user.lang = 'en';
		});
	}
};


// Planed Plant Non-Homepage Status Check
pp.checkAndDisplayStatus = function() {
	if (pp.status.streaming === true || pp.status.chat === true) {	
		pp.setNotice('<a href="/planedplant/' + lit('cy', 'en') + '" class="block">Planed Plant - ' + lit('nawr yn fyw!', 'now on air!') + '</a>', 'success live_status', true);
		jQuery('#logo a').css('background-image', 'url(/planedplant/static/img/header_pp_logo_onair.gif)');
	}
};


// Planed Plant Global Flash Functions
pp.flash = {
	version: '9',
	express_install_src: '/planedplant/static/swf/global/express_install.swf',
	profile: function(upgrade_message) {
		if (upgrade_message !== false) {
			upgrade_message = '<div><img src="/planedplant/static/img/flash_upgrade_small_' + pp.user.lang + '.gif" /></div>';
		}
		flash({
			id: 'profile',
			src: '/planedplant/static/swf/global/profile.swf',
			width: 178,
			height: 347,
			flash_vars: {
				api_url: '/api2/' + pp.user.lang + '/user/profile.xml'
			},
			transparent: true,
			upgrade_message: upgrade_message
		});
	},
	log_in: function(upgrade_message) {
		if (upgrade_message !== false) {
			upgrade_message = '<div><img src="/planedplant/static/img/flash_upgrade_small_' + pp.user.lang + '.gif" /></div>';
		}
		flash({
			id: 'log_in',
			src: '/planedplant/static/swf/global/log_in.swf',
			width: 178,
			height: 347,
			flash_vars: {
				submit_url: '/planedplant/' + pp.user.lang + '/mewngofnodi',
				redirect: location.href
			},
			transparent: true,
			upgrade_message: upgrade_message
		});
	},
	mini_promos: function(upgrade_message) {
		if (upgrade_message !== false) {
			upgrade_message = '<div><img src="/planedplant/static/img/flash_upgrade_small_' + pp.user.lang + '.gif" /></div>';
		}
		flash({
			id: 'mini_promos',
			src: '/planedplant/static/swf/global/mini_promos.swf',
			width: 178,
			height: 347,
			flash_vars: {
				api_url: '/api2/' + pp.user.lang + '/promos/mini_promos.xml'
			},
			transparent: true,
			upgrade_message: upgrade_message
		});
	},
	miniplayer: function(id, obj) {
		onready(function() {
			var width = getValue(obj.width, 274);
			var height = getValue(obj.height, 156);
			flash({
				id: 'miniplayer_' + id,
				src: '/planedplant/static/swf/mini_player.swf',
				width: width,
				height: height,
				flash_vars: {
					width: width,
					height: height,
					video_id: id,
					api_url: '/api2/' + pp.user.lang + '/mini_video.xml',
					thumbnail: getValue(obj.thumbnail, '/planedplant/static/img/miniplayer_bg.png')
				},
				transparent: true,
				upgrade_message: getValue(obj.upgrade_message, '<div><img src="/planedplant/static/img/flash_upgrade_miniplayer_' + pp.user.lang + '.gif" width="' + width + '" height="' + height + '" alt="" /></div>')
			});
		});
	}
};

pp.noticeTimer = null;
pp.noticeSlideStarted = false;
pp.slideNotice = function() {
	var timeout = 8; // seconds
	pp.noticeTimer = setTimeout(function() {
		pp.noticeSlideStarted = true;
		jQuery('#notice').slideUp('slow', function() {
			jQuery('#notice').remove();
		});
	}, (timeout * 1000));
};


pp.setNotice = function(text, typeClass, slideDown, slideUp) {
	if (jQuery('#notice').length) {
		if (jQuery('#notice.success').length) {
			if (!pp.noticeSlideStarted) {
				clearTimeout(pp.noticeTimer);
			}
			pp.noticeSlideStarted = false;
		}
		jQuery('#notice').remove();
	}
	var style = '';
	if (slideDown === true) {
		style = ' style="display: none;"';
	}
	jQuery('#header').after('<div id="notice" class="rounded '+ typeClass +'"' + style + '><div class="pad_10">' + text + '</div></div>');
	if (slideDown === true) {
		jQuery('#notice').slideDown('slow');
	}
	if (slideUp === true) {
		pp.slideNotice();
	}
};


// Language iteration
var lit = function(cy, en) {
	if (pp.user.lang === 'en') {
		return en;
	}
	return cy;
};


// If we pass a jQuery test (selector exists), execute callback(s)
var assert = function() {
	var selector = arguments[0];
	if (jQuery(selector).length) {
		for (var i = 1; i < arguments.length; ++i) {
			arguments[i]();
		}
		return true;
	}
	return false;
};
var assertNot = function() {
	var selector = arguments[0];
	if (!jQuery(selector).length) {
		for (var i = 1; i < arguments.length; ++i) {
			arguments[i]();
		}
		return true;
	}
	return false;
};


// Execute when the DOM is ready.
var onready = function() {
	if (typeof(jQuery) == 'undefined') {
		return;
	}
	for (var i = 0; i < arguments.length; ++i) {
		jQuery(document).ready(arguments[i]);
	}
};


// Returns value if not undefined, otherwise default. if default not set, returns false
var getValue = function(value, def) {
	if (typeof(value) !== 'undefined') {
		return value;
	}
	if (typeof(def) !== 'undefined') {
		return def;
	}
	return null;
};


// Open links with "external" class in new window
var externalLinks = function() {
	jQuery('a.external').attr('target', '_blank');
};


// Returns true if not undefined, otherwise false
var isset = function(value) {
	if (typeof(value) !== 'undefined') {
		return true;
	}
	return false;
};


// Wrapper for swfobject
var flash = function(settings) {
	if (!isset(swfobject)) {
		return;
	}
	var version = getValue(settings.version, pp.flash.version);
	var expressInstall = getValue(settings.express_install, null);
	if (!swfobject.hasFlashPlayerVersion(version)) {
		if (!swfobject.hasFlashPlayerVersion('6.0.65') || !expressInstall) {
			if (isset(settings.upgrade_message)) {
				jQuery(function() {
					jQuery('#' + settings.id).html(settings.upgrade_message);
				});
			}
			return;
		}
	}
	if (expressInstall === true) {
		expressInstall = pp.flash.express_install_src;
	}
	var flashVars = getValue(settings.flash_vars, {});
	flashVars.lang = pp.user.lang;
	var attributes = getValue(settings.attributes, {});
	attributes.id = getValue(settings.id_prefix, 'flash_') + settings.id;
	var parameters = getValue(settings.parameters, {});
	parameters.menu = getValue(parameters.menu, 'false');
	parameters.allowscriptaccess = getValue(parameters.allowscriptaccess, 'always');
	parameters.allowfullscreen = getValue(parameters.allowfullscreen, 'true');
	if (getValue(settings.transparent, false) === true) {
		parameters.wmode = 'transparent';
	}
	swfobject.embedSWF(settings.src, settings.id, settings.width, settings.height, version, expressInstall, flashVars, parameters, attributes);
};



// Track pages
var pageTracker = null;
var gaPageTracker = null;
var trackInit = function() {
	jQuery.getScript('http://secure-uk.imrworldwide.com/v60.js', function() {
		pageTracker = nol_t({
			cid:     's4c',
			content: '0',
			server:  'secure-uk'
		});
		pageTracker.record().post();
	});
	jQuery.getScript('http://www.google-analytics.com/ga.js', function() {
		gaPageTracker = _gat._getTracker('');
		gaPageTracker._initData();
		gaPageTracker._trackPageview();
	});
};
var track = function(page) {
	if (pageTracker === null) {
		return;
	}
	pageTracker.sectionEvent('section_content-description_' + page);
	if (gaPageTracker === null) {
		return;
	}
	gaPageTracker._trackPageview(page);
};
/*	// OLD GA code
var pageTracker = null;
var trackInit = function() {
	jQuery.getScript('http://www.google-analytics.com/ga.js', function() {
		pageTracker = _gat._getTracker('UA-2847543-1');
		pageTracker._initData();
		pageTracker._trackPageview();
	});
};
var track = function(page) {
	if (pageTracker === null) {
		return;
	}
	pageTracker._trackPageview(page);
};
*/


onready(trackInit, pp.detect.language, externalLinks, function() {
	assertNot('#homepage', function() {
		assertNot('#notice', function() {
			pp.checkAndDisplayStatus();
		});
		pp.ping.is_live();
	});
});

window.onload = function() {
	jQuery('body').css('background-image', 'url(' + pp.user.background + ')');
};