﻿/*
 * visitor - jQuery plugin for attach a visitor
 *
 * Copyright (c) 2008 Mio KAGEYAMA
 *
 * Dual licensed under 
 * the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.gnu.org/licenses/gpl.html) licenses.
 *
 * Version: 1.0.0
 */

(function($) {
	$.visitor = function(path) {
		return new $.visitor.fn.init(path);
	};
	
	$.extend($.visitor, {
		settings: {
			visitor: {
				id: 'visitor',
				position: 100
			},
			swf: {
				file: {
					left: 'penpen-left.swf',
					right: 'penpen-right.swf'
				},
				name: 'penpen',
				w: 84,
				h: 84,
				version: 8,
				color: '#fff'
			}
		}
	});

	$.visitor.fn = $.visitor.prototype = {
		init: function(path) {
			var t = this;
			var v = $.visitor.settings.visitor;
			var s = $.visitor.settings.swf;
			var r = Math.floor(Math.random() * 2);
			
			$.timer(3000, function(timer) {
				var wx = $(window).scrollLeft();
				var wy = $(window).scrollTop();
				var ww = $(window).width();
				var wh = $(window).height();
				
				switch(r) {
					case 0:
						var f = path + s.file.left;
						var x = Math.round(wx - s.w) + 'px';
						v.left = Math.round(wx + ww) + 'px';
						v.mode = 'left';
						break;
					case 1:
						var f = path + s.file.right;
						var x = Math.round(wx + ww) + 'px';
						v.left = Math.round(wx - s.w) + 'px';
						v.mode = 'right';
						break;
					default:
						return false;
						break;
				}
				var y = Math.round((wy + wh) - (s.h + v.position));
				
				v.object = $('<div/>').attr({ 'id': v.id }).css({ 'display': 'none', 'position': 'absolute', 'top': y, 'left': x });
				$('body').append(v.object);
				var so = new SWFObject(f, s.name, s.w, s.h, s.version, s.color);
				so.addParam('quality', 'high');
				so.addParam('wmode', 'transparent');
				so.write(v.id);
				$(v.object).show();
				t.move();
				timer.stop();
			});
		},
		
		move: function() {
			var t = this;
			var v = $.visitor.settings.visitor;
			switch(v.mode) {
				case 'left':
					var s = Math.round((parseInt(v.left) - parseInt($(v.object).css('left'))) / 50) * 1000;
					break;
				case 'right':
					var s = Math.round((parseInt($(v.object).css('left')) - parseInt(v.left)) / 50) * 1000;
					break;
			}
			$(v.object).animate({ 'left': v.left }, s, 'linear', function() { t.hide(); });
		},

		stop: function() {
			var v = $.visitor.settings.visitor;
			$(v.object).stop();
		},
		
		hide: function() {
			var v = $.visitor.settings.visitor;
			$(v.object).animate({ 'opacity': 0 }, 1000, 'linear', function() { $(this).remove(); });
		}
	}
	
	$.visitor.fn.init.prototype = $.visitor.fn;
})(jQuery);

/*
$(function() {
	$.visitor('');
});
*/

