| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666 | 
							- /*! jQuery-Impromptu - v5.1.1
 - * http://trentrichardson.com/Impromptu
 - * Copyright (c) 2013 Trent Richardson; Licensed MIT */
 - (function($) {
 - 	"use strict";
 - 
 - 	/**
 - 	* setDefaults - Sets the default options
 - 	* @param message String/Object - String of html or Object of states
 - 	* @param options Object - Options to set the prompt
 - 	* @return jQuery - container with overlay and prompt 
 - 	*/
 - 	$.prompt = function(message, options) {
 - 		// only for backwards compat, to be removed in future version
 - 		if(options !== undefined && options.classes !== undefined && typeof options.classes === 'string'){
 - 			options = { box: options.classes };
 - 		}
 - 
 - 		$.prompt.options = $.extend({},$.prompt.defaults,options);
 - 		$.prompt.currentPrefix = $.prompt.options.prefix;
 - 		
 - 		// Be sure any previous timeouts are destroyed
 - 		if($.prompt.timeout){
 - 			clearTimeout($.prompt.timeout);
 - 		}
 - 		$.prompt.timeout = false;
 - 
 - 		var opts = $.prompt.options,
 - 			$body = $(document.body),
 - 			$window = $(window);
 - 					
 - 		//build the box and fade
 - 		var msgbox = '<div class="'+ $.prompt.options.prefix +'box '+ opts.classes.box +'">';
 - 		if(opts.useiframe && ($('object, applet').length > 0)) {
 - 			msgbox += '<iframe src="javascript:false;" style="display:block;position:absolute;z-index:-1;" class="'+ opts.prefix +'fade '+ opts.classes.fade +'"></iframe>';
 - 		} else {
 - 			msgbox +='<div class="'+ opts.prefix +'fade '+ opts.classes.fade +'"></div>';
 - 		}
 - 		msgbox += '<div class="'+ opts.prefix +' '+ opts.classes.prompt +'">'+
 - 					'<form action="javascript:false;" onsubmit="return false;" class="'+ opts.prefix +'form">'+
 - 						'<div class="'+ opts.prefix +'close '+ opts.classes.close +'">'+ opts.closeText +'</div>'+
 - 						'<div class="'+ opts.prefix +'states"></div>'+
 - 					'</form>'+
 - 				'</div>'+
 - 			'</div>';
 - 
 - 		$.prompt.jqib = $(msgbox).appendTo($body);
 - 		$.prompt.jqi = $.prompt.jqib.children('.'+ opts.prefix);//.data('jqi',opts);
 - 		$.prompt.jqif = $.prompt.jqib.children('.'+ opts.prefix +'fade');
 - 
 - 		//if a string was passed, convert to a single state
 - 		if(message.constructor === String){
 - 			message = {
 - 				state0: {
 - 					title: opts.title,
 - 					html: message,
 - 					buttons: opts.buttons,
 - 					position: opts.position,
 - 					focus: opts.focus,
 - 					submit: opts.submit
 - 				}
 - 			};
 - 		}
 - 
 - 		//build the states
 - 		$.prompt.options.states = {};
 - 		var k,v;
 - 		for(k in message){
 - 			v = $.extend({},$.prompt.defaults.state,{name:k},message[k]);
 - 			$.prompt.addState(v.name, v);
 - 
 - 			if($.prompt.currentStateName === ''){
 - 				$.prompt.currentStateName = v.name;
 - 			}
 - 		}
 - 
 - 		// Go ahead and transition to the first state. It won't be visible just yet though until we show the prompt
 - 		var $firstState = $.prompt.jqi.find('.'+ opts.prefix +'states .'+ opts.prefix +'state').eq(0);
 - 		$.prompt.goToState($firstState.data('jqi-name'));
 - 
 - 		//Events
 - 		$.prompt.jqi.on('click', '.'+ opts.prefix +'buttons button', function(e){
 - 			var $t = $(this),
 - 				$state = $t.parents('.'+ opts.prefix +'state'),
 - 				stateobj = $.prompt.options.states[$state.data('jqi-name')],
 - 				msg = $state.children('.'+ opts.prefix +'message'),
 - 				clicked = stateobj.buttons[$t.text()] || stateobj.buttons[$t.html()],
 - 				forminputs = {};
 - 
 - 			// if for some reason we couldn't get the value
 - 			if(clicked === undefined){
 - 				for(var i in stateobj.buttons){
 - 					if(stateobj.buttons[i].title === $t.text() || stateobj.buttons[i].title === $t.html()){
 - 						clicked = stateobj.buttons[i].value;
 - 					}
 - 				}
 - 			}
 - 
 - 			//collect all form element values from all states.
 - 			$.each($.prompt.jqi.children('form').serializeArray(),function(i,obj){
 - 				if (forminputs[obj.name] === undefined) {
 - 					forminputs[obj.name] = obj.value;
 - 				} else if (typeof forminputs[obj.name] === Array || typeof forminputs[obj.name] === 'object') {
 - 					forminputs[obj.name].push(obj.value);
 - 				} else {
 - 					forminputs[obj.name] = [forminputs[obj.name],obj.value];	
 - 				} 
 - 			});
 - 
 - 			// trigger an event
 - 			var promptsubmite = new $.Event('impromptu:submit');
 - 			promptsubmite.stateName = stateobj.name;
 - 			promptsubmite.state = $state;
 - 			$state.trigger(promptsubmite, [clicked, msg, forminputs]);
 - 			
 - 			if(!promptsubmite.isDefaultPrevented()){
 - 				$.prompt.close(true, clicked,msg,forminputs);
 - 			}
 - 		});
 - 
 - 		// if the fade is clicked blink the prompt
 - 		var fadeClicked = function(){
 - 			if(opts.persistent){
 - 				var offset = (opts.top.toString().indexOf('%') >= 0? ($window.height()*(parseInt(opts.top,10)/100)) : parseInt(opts.top,10)),
 - 					top = parseInt($.prompt.jqi.css('top').replace('px',''),10) - offset;
 - 
 - 				//$window.scrollTop(top);
 - 				$('html,body').animate({ scrollTop: top }, 'fast', function(){
 - 					var i = 0;
 - 					$.prompt.jqib.addClass(opts.prefix +'warning');
 - 					var intervalid = setInterval(function(){
 - 						$.prompt.jqib.toggleClass(opts.prefix +'warning');
 - 						if(i++ > 1){
 - 							clearInterval(intervalid);
 - 							$.prompt.jqib.removeClass(opts.prefix +'warning');
 - 						}
 - 					}, 100);
 - 				});
 - 			}
 - 			else {
 - 				$.prompt.close(true);
 - 			}
 - 		};
 - 		
 - 		// listen for esc or tab keys
 - 		var keyPressEventHandler = function(e){
 - 			var key = (window.event) ? event.keyCode : e.keyCode;
 - 			
 - 			//escape key closes
 - 			if(key===27) {
 - 				fadeClicked();	
 - 			}
 - 			
 - 			//constrain tabs, tabs should iterate through the state and not leave
 - 			if (key === 9){
 - 				var $inputels = $('input,select,textarea,button',$.prompt.getCurrentState());
 - 				var fwd = !e.shiftKey && e.target === $inputels[$inputels.length-1];
 - 				var back = e.shiftKey && e.target === $inputels[0];
 - 				if (fwd || back) {
 - 					setTimeout(function(){ 
 - 						if (!$inputels){
 - 							return;
 - 						}
 - 						var el = $inputels[back===true ? $inputels.length-1 : 0];
 - 
 - 						if (el){
 - 							el.focus();
 - 						}
 - 					},10);
 - 					return false;
 - 				}
 - 			}
 - 		};
 - 		
 - 		$.prompt.position();
 - 		$.prompt.style();
 - 		
 - 		$.prompt.jqif.click(fadeClicked);
 - 		$window.resize({animate:false}, $.prompt.position);
 - 		$.prompt.jqi.find('.'+ opts.prefix +'close').click($.prompt.close);
 - 		$.prompt.jqib.on("keydown",keyPressEventHandler)
 - 					.on('impromptu:loaded', opts.loaded)
 - 					.on('impromptu:close', opts.close)
 - 					.on('impromptu:statechanging', opts.statechanging)
 - 					.on('impromptu:statechanged', opts.statechanged);
 - 
 - 		// Show it
 - 		$.prompt.jqif[opts.show](opts.overlayspeed);
 - 		$.prompt.jqi[opts.show](opts.promptspeed, function(){
 - 			$.prompt.jqib.trigger('impromptu:loaded');
 - 		});
 - 		
 - 		// Timeout
 - 		if(opts.timeout > 0){
 - 			$.prompt.timeout = setTimeout(function(){ $.prompt.close(true); },opts.timeout);
 - 		}
 - 
 - 		return $.prompt.jqib;
 - 	};
 - 	
 - 	$.prompt.defaults = {
 - 		prefix:'jqi',
 - 		classes: {
 - 			box: '',
 - 			fade: '',
 - 			prompt: '',
 - 			close: '',
 - 			title: '',
 - 			message: '',
 - 			buttons: '',
 - 			button: '',
 - 			defaultButton: ''
 - 		},
 - 		title: '',
 - 		closeText: '×',
 - 		buttons: {
 - 			Ok: true
 - 		},
 - 		loaded: function(e){},
 - 		submit: function(e,v,m,f){},
 - 		close: function(e,v,m,f){},
 - 		statechanging: function(e, from, to){},
 - 		statechanged: function(e, to){},
 - 		opacity: 0.6,
 - 		zIndex: 999,
 - 		overlayspeed: 'slow',
 - 		promptspeed: 'fast',
 - 		show: 'fadeIn',
 - 		focus: 0,
 - 		defaultButton: 0,
 - 		useiframe: false,
 - 		top: '15%',
 - 		position: { 
 - 			container: null, 
 - 			x: null, 
 - 			y: null,
 - 			arrow: null,
 - 			width: null
 - 		},
 - 		persistent: true,
 - 		timeout: 0,
 - 		states: {},
 - 		state: {
 - 			name: null,
 - 			title: '',
 - 			html: '',
 - 			buttons: {
 - 				Ok: true
 - 			},
 - 			focus: 0,
 - 			defaultButton: 0,
 - 			position: { 
 - 				container: null, 
 - 				x: null, 
 - 				y: null,
 - 				arrow: null,
 - 				width: null
 - 			},
 - 			submit: function(e,v,m,f){
 - 				return true;
 - 			}
 - 		}
 - 	};
 - 	
 - 	/**
 - 	* currentPrefix String - At any time this show be the prefix 
 - 	* of the current prompt ex: "jqi"
 - 	*/
 - 	$.prompt.currentPrefix = $.prompt.defaults.prefix;
 - 	
 - 	/**
 - 	* currentStateName String - At any time this is the current state
 - 	* of the current prompt ex: "state0"
 - 	*/
 - 	$.prompt.currentStateName = "";
 - 		
 - 	/**
 - 	* setDefaults - Sets the default options
 - 	* @param o Object - Options to set as defaults
 - 	* @return void
 - 	*/
 - 	$.prompt.setDefaults = function(o) {
 - 		$.prompt.defaults = $.extend({}, $.prompt.defaults, o);
 - 	};
 - 	
 - 	/**
 - 	* setStateDefaults - Sets the default options for a state
 - 	* @param o Object - Options to set as defaults
 - 	* @return void
 - 	*/
 - 	$.prompt.setStateDefaults = function(o) {
 - 		$.prompt.defaults.state = $.extend({}, $.prompt.defaults.state, o);
 - 	};
 - 
 - 	/**
 - 	* position - Repositions the prompt (Used internally)
 - 	* @return void
 - 	*/
 - 	$.prompt.position = function(e){
 - 		var restoreFx = $.fx.off,
 - 			$state = $.prompt.getCurrentState(),
 - 			stateObj = $.prompt.options.states[$state.data('jqi-name')],
 - 			pos = stateObj? stateObj.position : undefined,
 - 			$window = $(window),
 - 			bodyHeight = document.body.scrollHeight, //$(document.body).outerHeight(true),
 - 			windowHeight = $(window).height(),
 - 			documentHeight = $(document).height(),
 - 			height = bodyHeight > windowHeight ? bodyHeight : windowHeight,
 - 			top = parseInt($window.scrollTop(),10) + ($.prompt.options.top.toString().indexOf('%') >= 0? 
 - 					(windowHeight*(parseInt($.prompt.options.top,10)/100)) : parseInt($.prompt.options.top,10));
 - 
 - 		// when resizing the window turn off animation
 - 		if(e !== undefined && e.data.animate === false){
 - 			$.fx.off = true;
 - 		}
 - 		
 - 		$.prompt.jqib.css({
 - 			position: "absolute",
 - 			height: height,
 - 			width: "100%",
 - 			top: 0,
 - 			left: 0,
 - 			right: 0,
 - 			bottom: 0
 - 		});
 - 		$.prompt.jqif.css({
 - 			position: "fixed",
 - 			height: height,
 - 			width: "100%",
 - 			top: 0,
 - 			left: 0,
 - 			right: 0,
 - 			bottom: 0
 - 		});
 - 
 - 		// tour positioning
 - 		if(pos && pos.container){
 - 			var offset = $(pos.container).offset();
 - 			
 - 			if($.isPlainObject(offset) && offset.top !== undefined){
 - 				$.prompt.jqi.css({
 - 					position: "absolute"
 - 				});
 - 				$.prompt.jqi.animate({
 - 					top: offset.top + pos.y,
 - 					left: offset.left + pos.x,
 - 					marginLeft: 0,
 - 					width: (pos.width !== undefined)? pos.width : null
 - 				});
 - 				top = (offset.top + pos.y) - ($.prompt.options.top.toString().indexOf('%') >= 0? (windowHeight*(parseInt($.prompt.options.top,10)/100)) : parseInt($.prompt.options.top,10));
 - 				$('html,body').animate({ scrollTop: top }, 'slow', 'swing', function(){});
 - 			}
 - 		}
 - 		// custom state width animation
 - 		else if(pos && pos.width){
 - 			$.prompt.jqi.css({
 - 					position: "absolute",
 - 					left: '50%'
 - 				});
 - 			$.prompt.jqi.animate({
 - 					top: pos.y || top,
 - 					left: pos.x || '50%',
 - 					marginLeft: ((pos.width/2)*-1),
 - 					width: pos.width
 - 				});
 - 		}
 - 		// standard prompt positioning
 - 		else{
 - 			$.prompt.jqi.css({
 - 				position: "absolute",
 - 				top: top,
 - 				left: '50%',//$window.width()/2,
 - 				marginLeft: (($.prompt.jqi.outerWidth(false)/2)*-1)
 - 			});
 - 		}
 - 
 - 		// restore fx settings
 - 		if(e !== undefined && e.data.animate === false){
 - 			$.fx.off = restoreFx;
 - 		}
 - 	};
 - 	
 - 	/**
 - 	* style - Restyles the prompt (Used internally)
 - 	* @return void
 - 	*/
 - 	$.prompt.style = function(){
 - 		$.prompt.jqif.css({
 - 			zIndex: $.prompt.options.zIndex,
 - 			display: "none",
 - 			opacity: $.prompt.options.opacity
 - 		});
 - 		$.prompt.jqi.css({
 - 			zIndex: $.prompt.options.zIndex+1,
 - 			display: "none"
 - 		});
 - 		$.prompt.jqib.css({
 - 			zIndex: $.prompt.options.zIndex
 - 		});
 - 	};
 - 
 - 	/**
 - 	* get - Get the prompt
 - 	* @return jQuery - the prompt
 - 	*/
 - 	$.prompt.get = function(state) {
 - 		return $('.'+ $.prompt.currentPrefix);
 - 	};
 - 
 - 	/**
 - 	* addState - Injects a state into the prompt
 - 	* @param statename String - Name of the state
 - 	* @param stateobj Object - options for the state
 - 	* @param afterState String - selector of the state to insert after
 - 	* @return jQuery - the newly created state
 - 	*/
 - 	$.prompt.addState = function(statename, stateobj, afterState) {
 - 		var state = "",
 - 			$state = null,
 - 			arrow = "",
 - 			title = "",
 - 			opts = $.prompt.options,
 - 			$jqistates = $('.'+ $.prompt.currentPrefix +'states'),
 - 			defbtn,k,v,i=0;
 - 
 - 		stateobj = $.extend({},$.prompt.defaults.state, {name:statename}, stateobj);
 - 
 - 		if(stateobj.position.arrow !== null){
 - 			arrow = '<div class="'+ opts.prefix + 'arrow '+ opts.prefix + 'arrow'+ stateobj.position.arrow +'"></div>';
 - 		}
 - 		if(stateobj.title && stateobj.title !== ''){
 - 			title = '<div class="lead '+ opts.prefix + 'title '+ opts.classes.title +'">'+  stateobj.title +'</div>';
 - 		}
 - 		state += '<div id="'+ opts.prefix +'state_'+ statename +'" class="'+ opts.prefix + 'state" data-jqi-name="'+ statename +'" style="display:none;">'+ 
 - 					arrow + title +
 - 					'<div class="'+ opts.prefix +'message '+ opts.classes.message +'">' + stateobj.html +'</div>'+
 - 					'<div class="'+ opts.prefix +'buttons '+ opts.classes.buttons +'"'+ ($.isEmptyObject(stateobj.buttons)? 'style="display:none;"':'') +'>';
 - 		
 - 		for(k in stateobj.buttons){
 - 			v = stateobj.buttons[k],
 - 			defbtn = stateobj.focus === i || (isNaN(stateobj.focus) && stateobj.defaultButton === i) ? ($.prompt.currentPrefix + 'defaultbutton ' + opts.classes.defaultButton) : '';
 - 
 - 			if(typeof v === 'object'){
 - 				state += '<button class="'+ opts.classes.button +' '+ defbtn;
 - 				
 - 				if(typeof v.classes !== "undefined"){
 - 					state += ' '+ ($.isArray(v.classes)? v.classes.join(' ') : v.classes) + ' ';
 - 				}
 - 				
 - 				state += '" name="' + opts.prefix + '_' + statename + '_button' + v.title.replace(/[^a-z0-9]+/gi,'') + '" id="' + opts.prefix + '_' + statename + '_button' + v.title.replace(/[^a-z0-9]+/gi,'') + '" value="' + v.value + '">' + v.title + '</button>';
 - 				
 - 			} else {
 - 				state += '<button class="'+ opts.classes.button +' '+ defbtn +'" name="' + opts.prefix + '_' + statename + '_button' + k + '" id="' + opts.prefix +  '_' + statename + '_button' + k + '" value="' + v + '">' + k + '</button>';
 - 				
 - 			}
 - 			i++;
 - 		}
 - 		state += '</div></div>';
 - 		
 - 		$state = $(state);
 - 
 - 		$state.on('impromptu:submit', stateobj.submit);
 - 
 - 		if(afterState !== undefined){
 - 			$jqistates.find('#'+ $.prompt.currentPrefix +'state_'+ afterState).after($state);
 - 		}
 - 		else{
 - 			$jqistates.append($state);
 - 		}
 - 
 - 		$.prompt.options.states[statename] = stateobj;
 - 
 - 		return $state;
 - 	};
 - 	
 - 	/**
 - 	* removeState - Removes a state from the promt
 - 	* @param state String - Name of the state
 - 	* @return Boolean - returns true on success, false on failure
 - 	*/
 - 	$.prompt.removeState = function(state) {
 - 		var $state = $.prompt.getState(state),
 - 			rm = function(){ $state.remove(); };
 - 
 - 		if($state.length === 0){
 - 			return false;
 - 		}
 - 
 - 		// transition away from it before deleting
 - 		if($state.is(':visible')){
 - 			if($state.next().length > 0){
 - 				$.prompt.nextState(rm);
 - 			}
 - 			else{
 - 				$.prompt.prevState(rm);
 - 			}
 - 		}
 - 		else{
 - 			$state.slideUp('slow', rm);
 - 		}
 - 
 - 		return true;
 - 	};
 - 
 - 	/**
 - 	* getState - Get the state by its name
 - 	* @param state String - Name of the state
 - 	* @return jQuery - the state
 - 	*/
 - 	$.prompt.getState = function(state) {
 - 		return $('#'+ $.prompt.currentPrefix +'state_'+ state);
 - 	};
 - 	$.prompt.getStateContent = function(state) {
 - 		return $.prompt.getState(state);
 - 	};
 - 	
 - 	/**
 - 	* getCurrentState - Get the current visible state
 - 	* @return jQuery - the current visible state
 - 	*/
 - 	$.prompt.getCurrentState = function() {
 - 		return $.prompt.getState($.prompt.getCurrentStateName());
 - 	};
 - 		
 - 	/**
 - 	* getCurrentStateName - Get the name of the current visible state
 - 	* @return String - the current visible state's name
 - 	*/
 - 	$.prompt.getCurrentStateName = function() {
 - 		return $.prompt.currentStateName;
 - 	};
 - 	
 - 	/**
 - 	* goToState - Goto the specified state
 - 	* @param state String - name of the state to transition to
 - 	* @param subState Boolean - true to be a sub state within the currently open state
 - 	* @param callback Function - called when the transition is complete
 - 	* @return jQuery - the newly active state
 - 	*/	
 - 	$.prompt.goToState = function(state, subState, callback) {
 - 		var $jqi = $.prompt.get(),
 - 			jqiopts = $.prompt.options,
 - 			$state = $.prompt.getState(state),
 - 			stateobj = jqiopts.states[$state.data('jqi-name')],
 - 			promptstatechanginge = new $.Event('impromptu:statechanging');
 - 
 - 		// subState can be ommitted
 - 		if(typeof subState === 'function'){
 - 			callback = subState;
 - 			subState = false;
 - 		}
 - 
 - 		$.prompt.jqib.trigger(promptstatechanginge, [$.prompt.getCurrentStateName(), state]);
 - 		
 - 		if(!promptstatechanginge.isDefaultPrevented() && $state.length > 0){
 - 			$.prompt.jqi.find('.'+ $.prompt.currentPrefix +'parentstate').removeClass($.prompt.currentPrefix +'parentstate');
 - 
 - 			if(subState){ // hide any open substates
 - 				// get rid of any substates
 - 				$.prompt.jqi.find('.'+ $.prompt.currentPrefix +'substate').not($state)
 - 					.slideUp(jqiopts.promptspeed)
 - 					.removeClass('.'+ $.prompt.currentPrefix +'substate')
 - 					.find('.'+ $.prompt.currentPrefix +'arrow').hide();
 - 
 - 				// add parent state class so it can be visible, but blocked
 - 				$.prompt.jqi.find('.'+ $.prompt.currentPrefix +'state:visible').addClass($.prompt.currentPrefix +'parentstate');
 - 
 - 				// add substate class so we know it will be smaller
 - 				$state.addClass($.prompt.currentPrefix +'substate');
 - 			}
 - 			else{ // hide any open states
 - 				$.prompt.jqi.find('.'+ $.prompt.currentPrefix +'state').not($state)
 - 					.slideUp(jqiopts.promptspeed)
 - 					.find('.'+ $.prompt.currentPrefix +'arrow').hide();
 - 			}
 - 			$.prompt.currentStateName = stateobj.name;
 - 
 - 			$state.slideDown(jqiopts.promptspeed,function(){
 - 				var $t = $(this);
 - 
 - 				// if focus is a selector, find it, else its button index
 - 				if(typeof(stateobj.focus) === 'string'){
 - 					$t.find(stateobj.focus).eq(0).focus();
 - 				}
 - 				else{
 - 					$t.find('.'+ $.prompt.currentPrefix +'defaultbutton').focus();
 - 				}
 - 
 - 				$t.find('.'+ $.prompt.currentPrefix +'arrow').show(jqiopts.promptspeed);
 - 				
 - 				if (typeof callback === 'function'){
 - 					$.prompt.jqib.on('impromptu:statechanged', callback);
 - 				}
 - 				$.prompt.jqib.trigger('impromptu:statechanged', [state]);
 - 				if (typeof callback === 'function'){
 - 					$.prompt.jqib.off('impromptu:statechanged', callback);
 - 				}
 - 			});
 - 			if(!subState){
 - 				$.prompt.position();
 - 			}
 - 		}
 - 		return $state;
 - 	};
 - 
 - 	/**
 - 	* nextState - Transition to the next state
 - 	* @param callback Function - called when the transition is complete
 - 	* @return jQuery - the newly active state
 - 	*/	
 - 	$.prompt.nextState = function(callback) {
 - 		var $next = $('#'+ $.prompt.currentPrefix +'state_'+ $.prompt.getCurrentStateName()).next();
 - 		return $.prompt.goToState( $next.attr('id').replace($.prompt.currentPrefix +'state_',''), callback );
 - 	};
 - 	
 - 	/**
 - 	* prevState - Transition to the previous state
 - 	* @param callback Function - called when the transition is complete
 - 	* @return jQuery - the newly active state
 - 	*/	
 - 	$.prompt.prevState = function(callback) {
 - 		var $prev = $('#'+ $.prompt.currentPrefix +'state_'+ $.prompt.getCurrentStateName()).prev();
 - 		$.prompt.goToState( $prev.attr('id').replace($.prompt.currentPrefix +'state_',''), callback );
 - 	};
 - 	
 - 	/**
 - 	* close - Closes the prompt
 - 	* @param callback Function - called when the transition is complete
 - 	* @param clicked String - value of the button clicked (only used internally)
 - 	* @param msg jQuery - The state message body (only used internally)
 - 	* @param forvals Object - key/value pairs of all form field names and values (only used internally)
 - 	* @return jQuery - the newly active state
 - 	*/	
 - 	$.prompt.close = function(callCallback, clicked, msg, formvals){
 - 		if($.prompt.timeout){
 - 			clearTimeout($.prompt.timeout);
 - 			$.prompt.timeout = false;
 - 		}
 - 
 - 		$.prompt.jqib.fadeOut('fast',function(){
 - 
 - 			if(callCallback) {
 - 				$.prompt.jqib.trigger('impromptu:close', [clicked,msg,formvals]);
 - 			}
 - 			$.prompt.jqib.remove();
 - 			
 - 			$(window).off('resize',$.prompt.position);
 - 		});
 - 	};
 - 	
 - 	/**
 - 	* Enable using $('.selector').prompt({});
 - 	* This will grab the html within the prompt as the prompt message
 - 	*/
 - 	$.fn.prompt = function(options){
 - 		if(options === undefined){
 - 			options = {};
 - 		}
 - 		if(options.withDataAndEvents === undefined){
 - 			options.withDataAndEvents = false;
 - 		}
 - 		
 - 		$.prompt($(this).clone(options.withDataAndEvents).html(),options);
 - 	};
 - 	
 - })(jQuery);
 
 
  |