/*
 * jQuery Impromptu
 * By: Trent Richardson [http://trentrichardson.com]
 * Version 1.8
 * Last Modified: 12/28/2008
 * 
 * Copyright 2008 Trent Richardson
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

jQuery.extend({ImpromptuDefaults:{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:'100px',persistent:true},SetImpromptuDefaults:function(o){jQuery.ImpromptuDefaults=jQuery.extend({},jQuery.ImpromptuDefaults,o);},prompt:function(m,o){o=jQuery.extend({},jQuery.ImpromptuDefaults,o);var ie6=(jQuery.browser.msie&&jQuery.browser.version<7);var b=jQuery(document.body);var w=jQuery(window);var msgbox='<div class="'+o.prefix+'box" id="'+o.prefix+'box">';if(o.useiframe&&((jQuery.browser.msie&&jQuery('object, applet').length>0)||ie6))
msgbox+='<iframe src="javascript:;" class="'+o.prefix+'fade" id="'+o.prefix+'fade"></iframe>';else{if(ie6)jQuery('select').css('visibility','hidden');msgbox+='<div class="'+o.prefix+'fade" id="'+o.prefix+'fade"></div>';}
msgbox+='<div class="'+o.prefix+'" id="'+o.prefix+'"><div class="'+o.prefix+'container"><div class="'+o.prefix+'close">X</div><div class="'+o.prefix+'message">'+m+'</div><div class="'+o.prefix+'buttons" id="'+o.prefix+'buttons">';jQuery.each(o.buttons,function(k,v){msgbox+='<button name="'+o.prefix+'button'+k+'" id="'+o.prefix+'button'+k+'" value="'+v+'">'+k+'</button>'});msgbox+='</div></div></div></div>';var jqib=b.append(msgbox).children('#'+o.prefix+'box');var jqi=jqib.children('#'+o.prefix);var jqif=jqib.children('#'+o.prefix+'fade');var getWindowScrollOffset=function(){return(document.documentElement.scrollTop||document.body.scrollTop)+'px';};var getWindowSize=function(){var size={width:window.innerWidth||(window.document.documentElement.clientWidth||window.document.body.clientWidth),height:window.innerHeight||(window.document.documentElement.clientHeight||window.document.body.clientHeight)};return size;};var ie6scroll=function(){jqib.css({top:getWindowScrollOffset()});};var fadeClicked=function(){if(o.persistent){var i=0;jqib.addClass(o.prefix+'warning');var intervalid=setInterval(function(){jqib.toggleClass(o.prefix+'warning');if(i++>1){clearInterval(intervalid);jqib.removeClass(o.prefix+'warning');}},100);}
else removePrompt();};var escapeKeyClosePrompt=function(e){var key=(window.event)?event.keyCode:e.keyCode;if(key==27)removePrompt();};var positionPrompt=function(){var wsize=getWindowSize();jqib.css({position:(ie6)?"absolute":"fixed",height:wsize.height,width:"100%",top:(ie6)?getWindowScrollOffset():0,left:0,right:0,bottom:0});jqif.css({position:"absolute",height:wsize.height,width:"100%",top:0,left:0,right:0,bottom:0});jqi.css({position:"absolute",top:o.top,left:"50%",marginLeft:((((jqi.css("paddingLeft").split("px")[0]*1)+jqi.width())/2)*-1)});};var stylePrompt=function(){jqif.css({zIndex:o.zIndex,display:"none",opacity:o.opacity});jqi.css({zIndex:o.zIndex+1,display:"none"});jqib.css({zIndex:o.zIndex});}
var removePrompt=function(callCallback,clicked,msg){jqi.remove();if(ie6)b.unbind('scroll',ie6scroll);w.unbind('resize',positionPrompt);jqif.fadeOut(o.overlayspeed,function(){jqif.unbind('click',fadeClicked);jqif.remove();if(callCallback)o.callback(clicked,msg);jqib.unbind('keypress',escapeKeyClosePrompt);jqib.remove();if(ie6&&!o.useiframe)jQuery('select').css('visibility','visible');});}
positionPrompt();stylePrompt();jQuery('#'+o.prefix+'buttons').children('button').click(function(){var msg=jqi.children('.'+o.prefix+'container').children('.'+o.prefix+'message');var clicked=o.buttons[jQuery(this).text()];if(o.submit(clicked,msg))
removePrompt(true,clicked,msg);});if(ie6)w.scroll(ie6scroll);jqif.click(fadeClicked);w.resize(positionPrompt);jqib.keypress(escapeKeyClosePrompt);jqi.find('.'+o.prefix+'close').click(removePrompt);jqif.fadeIn(o.overlayspeed);jqi[o.show](o.promptspeed,o.loaded);jqi.find('#'+o.prefix+'buttons button:eq('+o.focus+')').focus();return jqib;}});