Вход Регистрация
Файл: vk/js/jquery-impromptu.3.2.js
Строк: 420
<?php
/*
 * jQuery Impromptu
 * By: Trent Richardson [http://trentrichardson.com]
 * Version 3.2
 * Last Modified: 10/12/2011
 * 
 * Copyright 2011 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(messageoptions) {
        
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;
            
        
//build the box and fade
        
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 a string was passed, convert to a single state
        
if(message.constructor == String){
            
message = {
                
state0: {
                    
htmlmessage,
                     
buttonsoptions.buttons,
                     
focusoptions.focus,
                     
submitoptions.submit
                 
}
             };
        }

        
//build the states
        
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(kv){
                if(
typeof v == 'object')
                    
states += '<button name="' options.prefix '_' statename '_button' v.title.replace(/[^a-z0-9]+/gi,'') + '" id="' options.prefix '_' statename '_button' v.title.replace(/[^a-z0-9]+/gi,'') + '" value="' v.value '">' v.title '</button>';
                else 
states += '<button name="' options.prefix '_' statename '_button' '" id="' options.prefix +    '_' statename '_button' '" value="' '">' '</button>';
            });
            
states += '</div></div>';
        });

        
//insert the states...
        
$jqi.find('#'options.prefix +'states').html(states).children('.'options.prefix +'_state:first').css('display','block');
        
$jqi.find('.'options.prefix +'buttons:empty').css('display','none');
        
        
//Events
        
$.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()];
                if(
clicked == undefined){
                    for(var 
i in stateobj.buttons)
                        if(
stateobj.buttons[i].title == $(this).text())
                            
clicked stateobj.buttons[i].value;
                }
                
                if(
typeof clicked == 'object')
                    
clicked clicked.value;
                var 
forminputs = {};

                
//collect all form element values from all states
                
$.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 
fadeClicked = function(){
            if(
options.persistent){
                var 
offset = (options.top.toString().indexOf('%') >= 0? ($window.height()*(parseInt(options.top,10)/100)) : parseInt(options.top,10)),
                    
top parseInt($jqi.css('top').replace('px',''),10) - offset;

                
//$window.scrollTop(top);
                
$('html,body').animate({ scrollToptop }, 'fast', function(){
                    var 
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// MSIE or Firefox?
            
            //escape key closes
            
if(key==27) {
                
fadeClicked();    
            }
            
            
//constrain tabs
            
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-0];

                    if (
el)
                        
el.focus();                        
                },
10);
                return 
false;
                }
            }
        };
        
        var 
positionPrompt = function(){
            var 
bodyHeight $body.outerHeight(true),
                
windowHeight $window.height(),
                
height bodyHeight windowHeight bodyHeight windowHeight,
                
top parseInt($window.scrollTop(),10) + (options.top.toString().indexOf('%') >= 0? (windowHeight*(parseInt(options.top,10)/100)) : parseInt(options.top,10));
            
            
$jqib.css({
                
position"absolute",
                
heightheight,
                
width"100%",
                
top0,
                
left0,
                
right0,
                
bottom0
            
});
            
$jqif.css({
                
position"absolute",
                
heightheight,
                
width"100%",
                
top0,
                
left0,
                
right0,
                
bottom0
            
});
            
$jqi.css({
                
position"absolute",
                
toptop,
                
left"50%",
                
marginLeft: (($jqi.outerWidth()/2)*-1)
            });
        };

        var 
stylePrompt = function(){
            
$jqif.css({
                
zIndexoptions.zIndex,
                
display"none",
                
opacityoptions.opacity
            
});
            
$jqi.css({
                
zIndexoptions.zIndex+1,
                
display"none"
            
});
            
$jqib.css({
                
zIndexoptions.zIndex
            
});
        };

        var 
removePrompt = function(callCallbackclickedmsgformvals){
            
$jqi.remove();
            
$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();
        
        
$jqif.click(fadeClicked);
        
$window.resize(positionPrompt);
        
$jqib.bind("keydown keypress",keyPressEventHandler);
        
$jqi.find('.'options.prefix +'close').click(removePrompt);

        
//Show it
        
$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: {
            
Oktrue
        
},
         
loaded: function(){

         },
          
submit: function(){
              return 
true;
        },
         
callback: function(){



         },
        
opacity0.6,
         
zIndex999,
          
overlayspeed'slow',
           
promptspeed'fast',
           
show'promptDropIn',
           
focus0,
           
useiframefalse,
         
top'15%',
          
persistenttrue,
          
timeout0,
          
state: {
            
html'',
             
buttons: {
                 
Oktrue
             
},
              
focus0,
               
submit: function(){
                   return 
true;
           }
          }
    };
    
    $.
prompt.currentPrefix = $.prompt.defaults.prefix;

    $.
prompt.setDefaults = function(o) {
        $.
prompt.defaults = $.extend({}, $.prompt.defaultso);
    };
    
    $.
prompt.setStateDefaults = function(o) {
        $.
prompt.defaults.state = $.extend({}, $.prompt.defaults.stateo);
    };
    
    $.
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(statecallback) {
        $(
'.'+ $.prompt.currentPrefix +'_state').slideUp('slow');
        $(
'#'+ $.prompt.currentPrefix +'_state_'state).slideDown('slow',function(){
            $(
this).find('.'+ $.prompt.currentPrefix +'defaultbutton').focus();
            if (
typeof callback == 'function')
                
callback();
        });
    };
    
    $.
prompt.nextState = function(callback) {
        var 
$next = $('.'+ $.prompt.currentPrefix +'_state:visible').next();

        $(
'.'+ $.prompt.currentPrefix +'_state').slideUp('slow');
        
        
$next.slideDown('slow',function(){
            
$next.find('.'+ $.prompt.currentPrefix +'defaultbutton').focus();
            if (
typeof callback == 'function')
                
callback();
        });
    };
    
    $.
prompt.prevState = function(callback) {
        var 
$next = $('.'+ $.prompt.currentPrefix +'_state:visible').prev();

        $(
'.'+ $.prompt.currentPrefix +'_state').slideUp('slow');
        
        
$next.slideDown('slow',function(){
            
$next.find('.'+ $.prompt.currentPrefix +'defaultbutton').focus();
            if (
typeof callback == 'function')
                
callback();
        });
    };
    
    $.
prompt.close = function() {
        $(
'#'+ $.prompt.currentPrefix +'box').fadeOut('fast',function(){
                $(
this).remove();
        });
    };
    
    $.
fn.extend({ 
        
prompt: function(options){
            if(
options == undefined
                
options = {};
            if(
options.withDataAndEvents == undefined)
                
options.withDataAndEvents false;
            
            $.
prompt($(this).clone(options.withDataAndEvents).html(),options);
        },
        
promptDropIn: function(speedcallback){ 
            var 
$t = $(this); 
            
            if(
$t.css("display") == "none"){ 
                var 
eltop $t.css('top');
                
$t.css({ top: $(window).scrollTop(), display'block' }).animate({ topeltop },speed,'swing',callback); 
            }
        }
        
    });
    
})(
jQuery);
?>
Онлайн: 3
Реклама