/*
 * jQuery Impromptu
 * By: Trent Richardson [http://trentrichardson.com]
 * Version 2.7
 * Last Modified: 6/7/2009
 * 
 * Copyright 2009 Trent Richardson
 * Dual licensed under the MIT and GPL licenses.
 * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt
 * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
 * 
 */
(function(jQuery){jQuery.prompt=function(message,options){options=jQuery.extend({},jQuery.prompt.defaults,options);jQuery.prompt.currentPrefix=options.prefix;var ie6=(jQuery.browser.msie&&jQuery.browser.version<7);var jQuerybody=jQuery(document.body);var jQuerywindow=jQuery(window);var msgbox='<div class="'+options.prefix+'box" id="'+options.prefix+'box">';if(options.useiframe&&((jQuery('object, applet').length>0)||ie6)){msgbox+='<iframe src="javascript:false;" style="display:block;position:absolute;z-index:-1;" class="'+options.prefix+'fade" id="'+options.prefix+'fade"></iframe>';}else{if(ie6){jQuery('select').css('visibility','hidden');}msgbox+='<div class="'+options.prefix+'fade" id="'+options.prefix+'fade"></div>';}msgbox+='<div class="'+options.prefix+'" id="'+options.prefix+'"><div class="'+options.prefix+'container"><div class="';msgbox+=options.prefix+'close">X</div><div id="'+options.prefix+'states"></div>';msgbox+='</div></div></div>';var jQueryjqib=jQuery(msgbox).appendTo(jQuerybody);var jQueryjqi=jQueryjqib.children('#'+options.prefix);var jQueryjqif=jQueryjqib.children('#'+options.prefix+'fade');if(message.constructor==String){message={state0:{html:message,buttons:options.buttons,focus:options.focus,submit:options.submit}};}var states="";jQuery.each(message,function(statename,stateobj){stateobj=jQuery.extend({},jQuery.prompt.defaults.state,stateobj);message[statename]=stateobj;states+='<div id="'+options.prefix+'_state_'+statename+'" class="'+options.prefix+'_state" style="display:none;"><div class="'+options.prefix+'message">'+stateobj.html+'</div><div class="'+options.prefix+'buttons">';jQuery.each(stateobj.buttons,function(k,v){states+='<button name="'+options.prefix+'_'+statename+'_button'+k+'" id="'+options.prefix+'_'+statename+'_button'+k+'" value="'+v+'">'+k+'</button>';});states+='</div></div>';});jQueryjqi.find('#'+options.prefix+'states').html(states).children('.'+options.prefix+'_state:first').css('display','block');jQueryjqi.find('.'+options.prefix+'buttons:empty').css('display','none');jQuery.each(message,function(statename,stateobj){var jQuerystate=jQueryjqi.find('#'+options.prefix+'_state_'+statename);jQuerystate.children('.'+options.prefix+'buttons').children('button').click(function(){var msg=jQuerystate.children('.'+options.prefix+'message');var clicked=stateobj.buttons[jQuery(this).text()];var forminputs={};jQuery.each(jQueryjqi.find('#'+options.prefix+'states :input').serializeArray(),function(i,obj){if(forminputs[obj.name]===undefined){forminputs[obj.name]=obj.value;}else if(typeof forminputs[obj.name]==Array){forminputs[obj.name].push(obj.value);}else{forminputs[obj.name]=[forminputs[obj.name],obj.value];}});var close=stateobj.submit(clicked,msg,forminputs);if(close===undefined||close){removePrompt(true,clicked,msg,forminputs);}});jQuerystate.find('.'+options.prefix+'buttons button:eq('+stateobj.focus+')').addClass(options.prefix+'defaultbutton');});var ie6scroll=function(){jQueryjqib.css({top:jQuerywindow.scrollTop()});};var fadeClicked=function(){if(options.persistent){var i=0;jQueryjqib.addClass(options.prefix+'warning');var intervalid=setInterval(function(){jQueryjqib.toggleClass(options.prefix+'warning');if(i++>1){clearInterval(intervalid);jQueryjqib.removeClass(options.prefix+'warning');}},100);}else{removePrompt();}};var keyPressEventHandler=function(e){var key=(window.event)?event.keyCode:e.keyCode;if(key==27){removePrompt();}if(key==9){var jQueryinputels=jQuery(':input:enabled:visible',jQueryjqib);var fwd=!e.shiftKey&&e.target==jQueryinputels[jQueryinputels.length-1];var back=e.shiftKey&&e.target==jQueryinputels[0];if(fwd||back){setTimeout(function(){if(!jQueryinputels)return;var el=jQueryinputels[back===true?jQueryinputels.length-1:0];if(el)el.focus();},10);return false;}}};var positionPrompt=function(){jQueryjqib.css({position:(ie6)?"absolute":"fixed",height:jQuerywindow.height(),width:"100%",top:(ie6)?jQuerywindow.scrollTop():0,left:0,right:0,bottom:0});jQueryjqif.css({position:"absolute",height:jQuerywindow.height(),width:"100%",top:0,left:0,right:0,bottom:0});jQueryjqi.css({position:"absolute",top:options.top,left:"50%",marginLeft:((jQueryjqi.outerWidth()/2)*-1)});};var stylePrompt=function(){jQueryjqif.css({zIndex:options.zIndex,display:"none",opacity:options.opacity});jQueryjqi.css({zIndex:options.zIndex+1,display:"none"});jQueryjqib.css({zIndex:options.zIndex});};var removePrompt=function(callCallback,clicked,msg,formvals){jQueryjqi.remove();if(ie6){jQuerybody.unbind('scroll',ie6scroll);}jQuerywindow.unbind('resize',positionPrompt);jQueryjqif.fadeOut(options.overlayspeed,function(){jQueryjqif.unbind('click',fadeClicked);jQueryjqif.remove();if(callCallback){options.callback(clicked,msg,formvals);}jQueryjqib.unbind('keypress',keyPressEventHandler);jQueryjqib.remove();if(ie6&&!options.useiframe){jQuery('select').css('visibility','visible');}});};positionPrompt();stylePrompt();if(ie6){jQuerywindow.scroll(ie6scroll);}jQueryjqif.click(fadeClicked);jQuerywindow.resize(positionPrompt);jQueryjqib.bind("keydown keypress",keyPressEventHandler);jQueryjqi.find('.'+options.prefix+'close').click(removePrompt);jQueryjqif.fadeIn(options.overlayspeed);jQueryjqi[options.show](options.promptspeed,options.loaded);jQueryjqi.find('#'+options.prefix+'states .'+options.prefix+'_state:first .'+options.prefix+'defaultbutton').focus();if(options.timeout>0)setTimeout(jQuery.prompt.close,options.timeout);return jQueryjqib;};jQuery.prompt.defaults={prefix:'jqi',buttons:{Ok:true},loaded:function(){},submit:function(){return true;},callback:function(){},opacity:0.6,zIndex:999,overlayspeed:'slow',promptspeed:'fast',show:'fadeIn',focus:0,useiframe:false,top:"15%",persistent:true,timeout:0,state:{html:'',buttons:{Ok:true},focus:0,submit:function(){return true;}}};jQuery.prompt.currentPrefix=jQuery.prompt.defaults.prefix;jQuery.prompt.setDefaults=function(o){jQuery.prompt.defaults=jQuery.extend({},jQuery.prompt.defaults,o);};jQuery.prompt.setStateDefaults=function(o){jQuery.prompt.defaults.state=jQuery.extend({},jQuery.prompt.defaults.state,o);};jQuery.prompt.getStateContent=function(state){return jQuery('#'+jQuery.prompt.currentPrefix+'_state_'+state);};jQuery.prompt.getCurrentState=function(){return jQuery('.'+jQuery.prompt.currentPrefix+'_state:visible');};jQuery.prompt.getCurrentStateName=function(){var stateid=jQuery.prompt.getCurrentState().attr('id');return stateid.replace(jQuery.prompt.currentPrefix+'_state_','');};jQuery.prompt.goToState=function(state){jQuery('.'+jQuery.prompt.currentPrefix+'_state').slideUp('slow');jQuery('#'+jQuery.prompt.currentPrefix+'_state_'+state).slideDown('slow',function(){jQuery(this).find('.'+jQuery.prompt.currentPrefix+'defaultbutton').focus();});};jQuery.prompt.nextState=function(){var jQuerynext=jQuery('.'+jQuery.prompt.currentPrefix+'_state:visible').next();jQuery('.'+jQuery.prompt.currentPrefix+'_state').slideUp('slow');jQuerynext.slideDown('slow',function(){jQuerynext.find('.'+jQuery.prompt.currentPrefix+'defaultbutton').focus();});};jQuery.prompt.prevState=function(){var jQuerynext=jQuery('.'+jQuery.prompt.currentPrefix+'_state:visible').prev();jQuery('.'+jQuery.prompt.currentPrefix+'_state').slideUp('slow');jQuerynext.slideDown('slow',function(){jQuerynext.find('.'+jQuery.prompt.currentPrefix+'defaultbutton').focus();});};jQuery.prompt.close=function(){jQuery('#'+jQuery.prompt.currentPrefix+'box').fadeOut('fast',function(){jQuery(this).remove();});};})(jQuery);
