/*
 * jQuery Impromptu
 * By: Trent Richardson [http://trentrichardson.com]
 * Version 3.0
 * Last Modified: 2/15/2010
 * 
 * Copyright 2010 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($$){$$.prompt=function(message,options){options=$$.extend({},$$.prompt.defaults,options);$$.prompt.currentPrefix=options.prefix;var ie6=($$.browser.msie&&$$.browser.version<7);var $$body=$$(document.body);var $$window=$$(window);options.classes=$$.trim(options.classes);if(options.classes!='')options.classes=' '+options.classes;var msgbox='<div class="'+options.prefix+'box'+options.classes+'" id="'+options.prefix+'box">';if(options.useiframe&&(($$('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){$$('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 $$jqib=$$(msgbox).appendTo($$body);var $$jqi=$$jqib.children('#'+options.prefix);var $$jqif=$$jqib.children('#'+options.prefix+'fade');if(message.constructor==String){message={state0:{html:message,buttons:options.buttons,focus:options.focus,submit:options.submit}};}var states="";$$.each(message,function(statename,stateobj){stateobj=$$.extend({},$$.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">';$$.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>';});$$jqi.find('#'+options.prefix+'states').html(states).children('.'+options.prefix+'_state:first').css('display','block');$$jqi.find('.'+options.prefix+'buttons:empty').css('display','none');$$.each(message,function(statename,stateobj){var $$state=$$jqi.find('#'+options.prefix+'_state_'+statename);$$state.children('.'+options.prefix+'buttons').children('button').click(function(){var msg=$$state.children('.'+options.prefix+'message');var clicked=stateobj.buttons[$$(this).text()];var forminputs={};$$.each($$jqi.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||typeof forminputs[obj.name]=='object'){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);}});$$state.find('.'+options.prefix+'buttons button:eq('+stateobj.focus+')').addClass(options.prefix+'defaultbutton');});var ie6scroll=function(){$$jqib.css({top:$$window.scrollTop()});};var fadeClicked=function(){if(options.persistent){var i=0;$$jqib.addClass(options.prefix+'warning');var intervalid=setInterval(function(){$$jqib.toggleClass(options.prefix+'warning');if(i++>1){clearInterval(intervalid);$$jqib.removeClass(options.prefix+'warning');}},100);}else{removePrompt();}};var keyPressEventHandler=function(e){var key=(window.event)?event.keyCode:e.keyCode;if(key==27){fadeClicked();}if(key==9){var $$inputels=$$(':input:enabled:visible',$$jqib);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;}}};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});$$jqi.css({position:"absolute",top:options.top,left:"50%",marginLeft:(($$jqi.outerWidth()/2)*-1)});};var stylePrompt=function(){$$jqif.css({zIndex:options.zIndex,display:"none",opacity:options.opacity});$$jqi.css({zIndex:options.zIndex+1,display:"none"});$$jqib.css({zIndex:options.zIndex});};var removePrompt=function(callCallback,clicked,msg,formvals){$$jqi.remove();if(ie6){$$body.unbind('scroll',ie6scroll);}$$window.unbind('resize',positionPrompt);$$jqif.fadeOut(options.overlayspeed,function(){$$jqif.unbind('click',fadeClicked);$$jqif.remove();if(callCallback){options.callback(clicked,msg,formvals);}$$jqib.unbind('keypress',keyPressEventHandler);$$jqib.remove();if(ie6&&!options.useiframe){$$('select').css('visibility','visible');}});};positionPrompt();stylePrompt();if(ie6){$$window.scroll(ie6scroll);}$$jqif.click(fadeClicked);$$window.resize(positionPrompt);$$jqib.bind("keydown keypress",keyPressEventHandler);$$jqi.find('.'+options.prefix+'close').click(removePrompt);$$jqif.fadeIn(options.overlayspeed);$$jqi[options.show](options.promptspeed,options.loaded);$$jqi.find('#'+options.prefix+'states .'+options.prefix+'_state:first .'+options.prefix+'defaultbutton').focus();if(options.timeout>0)setTimeout($$.prompt.close,options.timeout);return $$jqib;};$$.prompt.defaults={prefix:'jqi',classes:'',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;}}};$$.prompt.currentPrefix=$$.prompt.defaults.prefix;$$.prompt.setDefaults=function(o){$$.prompt.defaults=$$.extend({},$$.prompt.defaults,o);};$$.prompt.setStateDefaults=function(o){$$.prompt.defaults.state=$$.extend({},$$.prompt.defaults.state,o);};$$.prompt.getStateContent=function(state){return $$('#'+$$.prompt.currentPrefix+'_state_'+state);};$$.prompt.getCurrentState=function(){return $$('.'+$$.prompt.currentPrefix+'_state:visible');};$$.prompt.getCurrentStateName=function(){var stateid=$$.prompt.getCurrentState().attr('id');return stateid.replace($$.prompt.currentPrefix+'_state_','');};$$.prompt.goToState=function(state){$$('.'+$$.prompt.currentPrefix+'_state').slideUp('slow');$$('#'+$$.prompt.currentPrefix+'_state_'+state).slideDown('slow',function(){$$(this).find('.'+$$.prompt.currentPrefix+'defaultbutton').focus();});};$$.prompt.nextState=function(){var $$next=$$('.'+$$.prompt.currentPrefix+'_state:visible').next();$$('.'+$$.prompt.currentPrefix+'_state').slideUp('slow');$$next.slideDown('slow',function(){$$next.find('.'+$$.prompt.currentPrefix+'defaultbutton').focus();});};$$.prompt.prevState=function(){var $$next=$$('.'+$$.prompt.currentPrefix+'_state:visible').prev();$$('.'+$$.prompt.currentPrefix+'_state').slideUp('slow');$$next.slideDown('slow',function(){$$next.find('.'+$$.prompt.currentPrefix+'defaultbutton').focus();});};$$.prompt.close=function(){$$('#'+$$.prompt.currentPrefix+'box').fadeOut('fast',function(){$$(this).remove();});};$$.fn.prompt=function(options){if(options==undefined)options={};if(options.withDataAndEvents==undefined)options.withDataAndEvents=false;$$.prompt($$(this).clone(withDataAndEvents).html(),options);}})(jQuery);
