(function($) {
	$.prompt = function(options) {
		options = $.extend({}, $.prompt.defaults, options);

		var ie6		= ($.browser.msie && $.browser.version < 7);
		var $body	= $(document.body);
		var $window	= $(window);
		var $items = new Array();
		var curitem = options.curitem - 1;


		// Set items
		var $i = 0;
		$.each(options.items.split('|'), function()
		{
			if ($(this + ':first').length) {
				$items[$i++] = this;
			}
		});


		//build the box and fade
		var msgbox = '<div id="'+ options.prefix +'box">';
		msgbox +='<div class="'+ options.prefix +'fade" id="'+ options.prefix +'fade"></div>';
		msgbox += '</div>';

		var $jqib	= $(msgbox).appendTo($body);
		var $jqif	= $jqib.children('#'+ options.prefix +'fade');
		var $jqb = '', $jqbc = '';


		if(ie6) {
			$('select').css('visibility', 'hidden');
		}

		var ie6scroll = function(){
			$jqib.css({ top: $window.scrollTop() });
		};

		var fadeClicked = function(){
			if(options.persistent){
				var i = 0;
				$close.addClass(options.close);
				var intervalid = setInterval(function(){
					$close.toggleClass(options.close);
					if(i++ > 1) {
						clearInterval(intervalid);
						$close.removeClass(options.close);
					}
				}, 100);
			}
			else {
				removePrompt();
			}
		};
		
		var keyPressEventHandler = function(e) {
			var key = (window.event) ? event.keyCode : e.keyCode; // MSIE or Firefox?

			//escape key closes
			if(key==27) {
				removePrompt();	
			}
		};
		
		var positionPrompt = function(){
			$jqib.css({
				position: (ie6) ? "absolute" : "fixed",
				height: $window.height(),
				width: "100%",
				top: (ie6)? $window.scrollTop() : 0,
				left: 0,
				right: 0,
				bottom: 0
			});
			$jqif.css({
				position: "absolute",
				height: $window.height(),
				width: "100%",
				top: 0,
				left: 0,
				right: 0,
				bottom: 0
			});
		};

		var stylePrompt = function(){
			$jqif.css({
				zIndex: options.zIndex + 1,
				display: "none",
				opacity: options.opacity
			});
			$jqib.css({
				zIndex: options.zIndex
			});
		};

		var removePrompt = function(){
			$jqbc.fadeOut();
			$jqb.css({zIndex: 1});
			//ie6, remove the scroll event
			if(ie6) {
				$body.unbind('scroll',ie6scroll);
			}
			$window.unbind('resize',positionPrompt);
			$jqif.fadeOut(options.overlayspeed,function(){
				$jqif.unbind('click',fadeClicked);
				$jqif.remove();
				$jqib.unbind('keypress',keyPressEventHandler);
				$jqib.remove();
				if(ie6) {
					$('select').css('visibility','visible');
				}
			});
		}


		showblock = function() 
		{
			i = 1;
			do {
				if (curitem + i == $items.length || curitem + i < 0) {
					curitem = 0;
				}
				else {
					curitem = curitem + 1;
				}
			}
			while ($($items[curitem] + ':first').length <= 0);


			// reset last block
			if (typeof $jqbc != 'undefined' && $jqbc != '') {
				$jqbc.fadeOut();
				$jqb.css({zIndex: 1});
			}


			$jqb = $($items[curitem] + ':first').css({position: 'relative', zIndex: options.zIndex + 2});
			$jqbc = $jqb.find('.tour-comments').html('').append('<div style="padding:5px;border:1px solid #0563ad"><p>' + tour_messages[$items[curitem]] + '</p><div class="tour-pages">' + (curitem == ($items.length - 1) ? '<a href="javascript:void(0);" rel="done">Done</a>' : '<a href="javascript:void(0);" rel="next">Next &raquo;</a>') + '</div></div>');
			$next = $jqbc.find('[rel="next"]');
			$done = $jqbc.find('[rel="done"]');
			$close = $('<a class="close" href="javascript:void(0);">Close</a>').appendTo($jqbc).css({position:'absolute',top:'1px',right:'1px'});


			// Set binds
			$close.bind("click", removePrompt);		
			$next.bind('click', showblock);
			$done.bind('click', removePrompt);

			// Scroll to item
			$.scrollTo($jqb);

			// Fade item
			$jqbc[options.show](options.promptspeed);
		}

		
		positionPrompt();
		stylePrompt();
		
		//ie6, add a scroll event to fix position:fixed
		if(ie6) {
			$window.scroll(ie6scroll);
		}
		$jqif.click(fadeClicked);
		$window.resize(positionPrompt);
		$jqib.bind("keydown keypress",keyPressEventHandler);

		/*$close.bind("click", removePrompt);		
		$next.bind('click', showitem);
		$back.bind('click', showitem);*/


		//Show it
		$jqif.fadeIn(options.overlayspeed);
		showblock();
		//$jqbc[options.show](options.promptspeed,options.loaded);

		return $jqib;
	};
	
	$.prompt.defaults = {
		prefix:'jqi',
		opacity: 0.7,
	 	zIndex: 99,
	  	overlayspeed: 'slow',
	   	promptspeed: 'fast',
   		show: 'fadeIn',
	  	persistent: true,
		close: 'close-red',
		items: '',
		curitem: 0
	};
})(jQuery);