/*
 * jQuery ScreenSaver plugin 0.1
 *
 * http://docs.jquery.com/Plugins/screensaver
 *
 * Copyright (c) 2008 Rafael Almeida
 *
 * $Id$
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Creates a screensaver.
 *
 * @example $.screensaver();
 *
 * @name screensaver
 * @type jQuery
 * @cat Plugins/screensaver
 */
;(function($) {
	/*
	 * Plugin defaults
	 */
	var defaults = {
		animationUrl: "/assets/flash/screensaver.swf",
		delay: 120000,
		docStrict: true,
		events: 'mousemove mousedown keydown',
		height: '100%',
		textAlt: "Screensaver active",
		type: 'swf',
		width: '100%',
		background: '00000'
	};

	$.screensaver = function(settings) {

		if(badBrowser()) {
			return;
		}

		$.screensaver.settings = $.extend({}, defaults, settings);

		if (settings.docStrict == true) {
			var endEmpty = " />";
		} else {
			var endEmpty = ">";
		}
		if ($.screensaver.settings.type == "image") {
			scrsvrHtml = "<div id='screensaver' style='line-height: "+$.screensaver.settings.height+"; text-align: center;background:#"+$.screensaver.settings.background+
				" url("+$.screensaver.settings.animationUrl+") no-repeat center center'>";
		} else if ($.screensaver.settings.type == "swf") {
			$.screensaver.settings.animationUrl = $.screensaver.settings.animationUrl + '?theme='+$.screensaver.settings.background;
			scrsvrHtml = "<div id='screensaver' style='background-color:#"+$.screensaver.settings.background+"'><object type='application/x-shockwave-flash' data='"+$.screensaver.settings.animationUrl
			 + "' width='100%' height='100%'>"
			 + "<param name='movie' value='"+$.screensaver.settings.animationUrl+"'"+endEmpty
			 + "<param name='flashVars' value='playerMode=embedded'"+endEmpty
			 + "<param name='wMode' value='opaque'"+endEmpty
			 + "<param name='bgcolor' value='#"+$.screensaver.settings.background+"'"+endEmpty
			 + "</object></div>";
		}
		var scrsvrObj = $(scrsvrHtml)
			.appendTo("body").hide()
			.css({
				'position': 'absolute', 'top': '0', 'left': '0', 'overflow': 'hidden',
				'width': $.screensaver.settings.width, 'height': $.screensaver.settings.height
			});
		$.screensaver.startCounter($.screensaver.settings.delay);
		bindEvents($.screensaver.settings.events);
		return scrsvrObj;
	};

	/*
	 * Public Functions
	 */
	$.screensaver.hide = function() {
		//$("#screensaver").fadeOut("slow");
		$("#screensaver").hide();
		$.screensaver.resetCounter();
	};
	$.screensaver.show = function() {
		//$("#screensaver").fadeIn("slow");
		$("#screensaver").show();
	};
	$.screensaver.startCounter = function(timeout) {
		$.screensaver.counter = setInterval("$.screensaver.show()", timeout);
	};
	$.screensaver.resetCounter = function() {
		clearInterval($.screensaver.counter);
		$.screensaver.startCounter($.screensaver.settings.delay);
	};

	function bindEvents(events, elmt) {
		$(window).bind(events, $.screensaver.hide);
		$("#screensaver, #screensaver object").bind(events, $.screensaver.hide);
	};

	function badBrowser() {
		if(navigator.userAgent.indexOf('Chrome') != -1) {
			return true;
		}

		if($.browser.msie &&  jQuery.browser.version < 7) {
			return true;
		}

		return false;

	}
})(jQuery);