/*
 * jQuery ScreenSaver plugin 0.1
 *
 * http://docs.jquery.com/Plugins/screensaver
 *
 * Copyright (c) 2008 Rafael Almeida
 *
 * jQueryIdjQuery
 * 
 * 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 jQuery.screensaver();
 *
 * @name screensaver
 * @type jQuery
 * @cat Plugins/screensaver
 */
;(function(jQuery) {
	/*
	 * Plugin defaults
	 */
	var defaults = {
		animationUrl: "../images/rocks.jpg",
		delay: 60000,
		docStrict: true,
		events: 'mousemove mousedown keydown',
		height: '100%',
		textAlt: "Screensaver active",
		type: 'image',
		width: '100%'
	};
	
	jQuery.screensaver = function(settings) {
		jQuery.screensaver.settings = jQuery.extend({}, defaults, settings);
		
		if (settings.docStrict == true) {
			var endEmpty = " />";
		} else {
			var endEmpty = ">";
		}
		if (jQuery.screensaver.settings.type == "image") {
			scrsvrHtml = "<div id='screensaver' style='line-height: "+jQuery.screensaver.settings.height+"; text-align: center;'><div id='other'>"+
			"<img src='"+jQuery.screensaver.settings.animationUrl+"' alt='"+jQuery.screensaver.settings.textAlt+"' id='screensaver'"+endEmpty;
		} else if (jQuery.screensaver.settings.type == "swf") {
			scrsvrHtml = "<div id='screensaver'><object type='application/x-shockwave-flash' data='"+jQuery.screensaver.settings.animationUrl
			 + "' width='100%' height='100%'>"
			 + "<param name='movie' value='"+jQuery.screensaver.settings.animationUrl+"'"+endEmpty
			 + "<param name='flashVars' value='playerMode=embedded'"+endEmpty
			 + "<param name='wmode' value='transparent'"+endEmpty
			 + "</object></div>";
		} else if (jQuery.screensaver.settings.type == "div") {
			jQuery("#screensaver").hide();
			scrsvrHtml = "";
		}
		var scrsvrObj = jQuery(scrsvrHtml)
			.appendTo("body")
			.css({
				'position': 'absolute', 'top': '0', 'left': '0', 'overflow': 'hidden',
				'width': jQuery.screensaver.settings.width, 'height': jQuery.screensaver.settings.height
			});
		jQuery.screensaver.startCounter(jQuery.screensaver.settings.delay);
		bindEvents(jQuery.screensaver.settings.events);
		return scrsvrObj;
	};
	
	/*
	 * Public Functions
	 */
	jQuery.screensaver.hide = function() {
		if(jQuery.browser.msie){
			jQuery("#screensaver").hide();
		}else{
			jQuery("#screensaver").fadeOut("slow");
		};
		jQuery.screensaver.resetCounter();
	};
	jQuery.screensaver.show = function() {
		if(jQuery.browser.msie){
			jQuery("#screensaver").show();
		}else{
			jQuery("#screensaver").fadeIn("slow");
		};
	};
	jQuery.screensaver.startCounter = function(timeout) {
		jQuery.screensaver.counter = setInterval("jQuery.screensaver.show()", timeout);
	};
	jQuery.screensaver.resetCounter = function() {
		clearInterval(jQuery.screensaver.counter);
		jQuery.screensaver.startCounter(jQuery.screensaver.settings.delay);
	};
	
	/*
	 * Private functions
	 */
	function debug(jQuerymsg, jQueryobj) {
		if (window.console && window.console.log)
			window.console.log(jQuerymsg + jQueryobj);
		else 
			alert(jQuerymsg + jQueryobj);
	};
	function bindEvents(events, elmt) {
		jQuery(window).bind(events, jQuery.screensaver.hide);
		jQuery("#screensaver, #screensaver object").bind(events, jQuery.screensaver.hide);
	};

})(jQuery);
