Вход Регистрация
Файл: static/plugins/base/js/default.js
Строк: 3012
<?php
var PeepUtils = function(){
    var 
langs = {};
    var 
messageTime 3000;
    var 
$messageCont = $('<div class="peep_message_cont"></div>');
    var 
events = {};

    
this.registry = {};

    $(function(){
        
$messageCont.appendTo(document.body);
    });

    
this.message = function( messagetypeparamTime ){
        var 
$messageNode = $('<div class="peep_message_node '+type+'" style="display:none;"><div><div><a class="close_button" href="javascript://" onclick="$(this).closest('.peep_message_node').slideUp(200, function(){$(this).remove();})"></a>'+message+'</div></div></div>').appendTo($messageCont);
        if( 
paramTime == undefined ){
            
paramTime messageTime;
        }

        
$messageNode.slideDown(200,
            function(){
                
window.setTimeout(
                    function(){
                        
$messageNode.slideUp(200,
                            function() {
                                
$messageNode.remove();
                            }
                    );
                    }, 
paramTime
                
);
            }
        );
    }

    
this.error = function( message ){
        
this.message(message'error');
    };

    
this.warning = function( message ){
        
this.message(message'warning');
    };

    
this.info = function( message ){
        
this.message(message'info');
    };

    
this.flagContent = function( entityTypeentityId )
    {
        
PEEP.registry['flag-panel-fb'] = PEEP.ajaxFloatBox("BASE_CMP_Flag", [entityTypeentityId], {
            
width315,
            
titlePEEP.getLanguageText('base''flag_as')
        });
    };


    var 
loadedScriptFiles = {};
    
this.loadScriptFiles = function( urlListcallbackoptions ){
        
        if ( $.
isPlainObject(callback) ) {
            
options callback;
            
callback null;
        }
        
        var 
addScript = function(url) {
            return 
jQuery.ajax($.extend({
                
dataType"script",
                
cachetrue,
                
urlurl
            
}, options || {})).done(function() {
                
loadedScriptFiles[url] = true;
            });
        };
        
        if( 
urlList && urlList.length ) {
            var 
recursiveInclude = function(urlListi) {
                if( (
i+1) === urlList.length )
                {
                    
addScript(urlList[i]).done(callback);
                    return;
                }

                
addScript(urlList[i]).done(function() {
                    
recursiveInclude(urlList, ++i);
                });
            };
            
recursiveInclude(urlList0);
        } else {
            
callback.apply(this);
        }
    };
    
    
this.addScriptFiles = function( urlListcallbackonce ) {
        if ( 
once === false ) {
            
this.loadScriptFiles(urlListcallback);
            return;
        }
        
        $(
"script").each(function() {
            
loadedScriptFiles[this.src] = true;
        });
        
        var 
requiredScripts = $.grep(urlList, function(url) {
            return !
loadedScriptFiles[url];
        });

        
this.loadScriptFiles(requiredScriptscallback);
    };

    
this.addScript = function( scriptscopecontext )
    {
        if (!
script)
        {
            return;
        }

        
context context || window;
        
scope scope || window;

        Function(
'_scope'script).call(contextscope);
    },

    
this.addCssFile = function( url )
    {
        if ( $(
'link[href="'+ $.trim(url) +'"]').length ) {
            return;
        }
        
        $(
'head').append($('<link type="text/css" rel="stylesheet" href="'+$.trim(url)+'" />'));
    },

    
this.addCss = function( css ){
        $(
'head').append($('<style type="text/css">'+css+'</style>'));
    };

    
this.getLanguageText = function(prefixkeyassignedVars)
    {
        if ( 
langs[prefix] === undefined ) {
                return 
prefix '+' key;
        }

        if ( 
langs[prefix][key] === undefined ) {
                return 
prefix '+' key;
        }

        var 
langValue langs[prefix][key];

        if ( 
assignedVars ) {
                for( 
varName in assignedVars ) {
                        
langValue langValue.replace('{$'+varName+'}'assignedVars[varName]);
                }
        }

        return 
langValue;
    };

    
this.registerLanguageKey = function(prefixkeyvalue)
    {
            if ( 
langs[prefix] === undefined ) {
                    
langs[prefix] = {};
            }

            
langs[prefix][key] = value;
    };

    
this.inProgressNode = function(node)
    {
        return $(
node).inprogress();
    };

    
this.activateNode = function(node)
    {
        return $(
node).activate();
    };

    
this.showUsers = function(userIdstitle)
    {
        
PEEP.Users.showUsers(userIdstitle);
    },

    
this.getActiveFloatBox = function getFloatBox()
    {
        if ( 
typeof window.PEEPActiveFloatBox === 'undefined' )
        {
            return 
false;
        }

        return 
window.PEEPActiveFloatBox;
    },

    
/**
     * Loads a component
     *
     * Examples:
     * 1:
     * PEEP.loadComponent(cmpClass, '.place_to_node');
     *
     * 2:
     * PEEP.loadComponent(cmpClass, function(){
     *     //onReady event
     *     //Add the html somewhere
     * });
     *
     * 3:
     * PEEP.loadComponent(cmpClass, [ p1, p2, ... ], '.place_to_node');
     *
     * 4:
     * PEEP.loadComponent(cmpClass, [ p1, p2, ... ], function(html){
     *     //onReady event
     *     //Add the html somewhere
     * });
     *
     * 5:
     * PEEP.loadComponent(cmpClass, [ p1, p2, ... ],
     * {
     *     onLoad: function(){},
     *     onError: function(){},
     *     onComplete: function(){},
     *     onReady: function( html )
     *     {
     *        //Add the html somewhere
     *     }
     * });
     *
     * @param string cmpClass
     *
     * Cmp class params or targetNode selector or targetNod HtmlElement or ready callback
     * @param array|string|HTMLElement|jQuery|function p1
     *
     * Options or targetNode selector or targetNod HtmlElement or ready callback
     * @param object|string|HTMLElement|jQuery|function p2
     */
    
this.loadComponent = function( cmpClassp1p2 )
    {
        function 
isNodenode )
        {
            return 
typeof node === 'string' || node.jquery || node.nodeType
        
}

        var 
params = [], options = {};

        if ( 
isNode(p2) )
        {
            
options.place = $(p2);
        }
        else if ( $.
isPlainObject(p2) )
        {
            
options p2;
        }
        else if ( $.
isFunction(p2) )
        {
            
options.onReady p2;
        }

        if ( 
isNode(p1) )
        {
            
options.place = $(p1);
        }
        else if ( $.
isArray(p1) || $.isPlainObject(p1) )
        {
            
params p1;
        }
        else if ( $.
isFunction(p1) )
        {
            
options.onReady p1;
        }

        
options = $.extend({}, {
            
placefalse,
            
scopewindow,
            
contextwindow,
            
addClass'',
            
onLoad: function() {},
            
onReady: function( ) {},
            
onError: function( ) {},
            
onComplete: function( ) {}
        }, 
options);

        var 
rsp this.ajaxComponentLoaderRsp,
            
jsonParams JSON.stringify(params),
            
$preloader false;

        if ( 
options.place )
        {
            
$preloader = $('<div class="peep_ajaxloader_preloader peep_preloader_content ' options.addClass '"></div>');
            $(
options.place).html($preloader);
        }

        var 
ajaxOptions = {
            
urlrsp '?cmpClass=' cmpClass '&r=' Math.random(),
            
dataType'json',
            
type'POST',
            
data: {paramsjsonParams},
            
error: function(r)
            {
                
options.onError(r);
            },
            
complete: function(r)
            {
                
options.onComplete(r);
            },
            
success: function(markup)
            {
                var 
contentHtml markup.content$contentHtml = $(contentHtml);

                if ( !
$contentHtml.length )
                {
                    
contentHtml '<span>' contentHtml '</span>';
                    
$contentHtml = $(contentHtml)
                }

                if ( 
$preloader )
                {
                    
$preloader.replaceWith($contentHtml);
                }

                
options.onReady($contentHtml);

                
PEEP.bindAutoClicks($contentHtml);
                
PEEP.bindTips($contentHtml);

                if (
markup.styleSheets)
                {
                    $.
each(markup.styleSheets, function(io)
                    {
                        
PEEP.addCssFile(o);
                    });
                }

                if (
markup.styleDeclarations)
                {
                    
PEEP.addCss(markup.styleDeclarations);
                }

                if (
markup.beforeIncludes)
                {
                    
PEEP.addScript(markup.beforeIncludesoptions.scopeoptions.context);
                }

                if (
markup.scriptFiles)
                {

                    
PEEP.addScriptFiles(markup.scriptFiles, function()
                    {
                        if (
markup.onloadScript)
                        {
                            
PEEP.addScript(markup.onloadScriptoptions.scopeoptions.context);
                            
options.onLoad();
                        }
                    });
                }
                else
                {
                    if (
markup.onloadScript)
                    {
                        
PEEP.addScript(markup.onloadScriptoptions.scopeoptions.context);
                    }
                    
options.onLoad();
                }
            }
    };

        $.
ajax(ajaxOptions);
    },

    
this.ajaxFloatBox = function(cmpClassparamsoptions)
    {
        
params params || [];

        
options options || {};
        
options = $.extend({}, {
            
title'',
            
widthfalse,
            
heightfalse,
            
topfalse,
            
leftfalse,
            
iconClassfalse,
            
addClassfalse,
            
layout'default',
            
$preloadernull,
            
scope: {},
            
contextnull,
            
onLoad: function(){},
            
onReady: function(){},
            
onError: function(){},
            
onComplete: function(){}
        }, 
options);

        var 
floatBox = new PEEP_FloatBox({
            
$titleoptions.title,
            
widthoptions.width,
            
heightoptions.height,
            
topoptions.top,
            
leftoptions.left,
            
icon_classoptions.iconClass,
            
addClassoptions.addClass,
            
layoutoptions.layout,
            
$preloaderoptions.$preloader
        
});

        
options.scope = $.extend({floatBoxfloatBox}, options.scope);
        
options.context options.context || floatBox;

        
this.loadComponent(cmpClassparams,
        {
            
scopeoptions.scope,
            
contextoptions.context,
            
onLoadoptions.onLoad,
            
onErroroptions.onError,
            
onCompleteoptions.onComplete,
            
onReady: function( )
            {
                
floatBox.setContent(r);

                if ( $.
isFunction(options.onReady) )
                {
                    
options.onReady.call(thisr);
                }
            }
        })

        return 
floatBox;
    };

    
this.bind = function(typefunc)
    {
        if (
events[type] == undefined)
        {
            
events[type] = [];
        }

        
events[type].push(func);

    };

    
this.trigger = function(typeparamsapplyObject)
    {
        if (
events[type] == undefined) {
            return 
false;
        }

        
applyObject applyObject || this;
        
params params || [];

        if ( !$.
isArray(params) )
        {
            
params = [params];
        }

        for (var 
0funcfunc events[type][i]; i++)
        {
            if (
func.apply(applyObjectparams) === false)
            {
                return 
false;
            }
        }

        return 
true;
    };

    
this.unbind = function( type )
    {
        if (
events[type] == undefined) {
            return 
false;
        }

        
events[type] = [];
    };

    
this.editLanguageKey = function( prefixkeysuccess )
    {
        var 
fb PEEP.ajaxFloatBox("BASE_CMP_LanguageValueEdit", [prefixkeytrue], {width520titlethis.getLanguageText('admin''edit_language')});

        
PEEP.bind("admin.language_key_edit_success", function( ) {
            
fb.close();
            
PEEP.unbind("admin.language_key_edit_success");
            
success(e);
        });
    };

    
this.authorizationLimitedFloatbox = function( message )
    {
        
PEEP.ajaxFloatBox(
            
"BASE_CMP_AuthorizationLimited",
            {
messagemessage},
            {
width500titlethis.getLanguageText('base''authorization_limited_permissions')}
        );
    };

    
this.bindAutoClicks = function(context){
        var 
autoClicks;

        if ( 
context )
        {
            
autoClicks = $('.form_auto_click'context);
        }
        else
        {
            
autoClicks = $('.form_auto_click');
        }

        $.
each(autoClicks, function(i,o){
            var 
context = $(o);
            $(
'textarea.invitation'context)
            .
bind('focus.auto_click', {context:context},
                function(
e){
                    $(
'.peep_submit_auto_click'e.data.context).show();
                    $(
this).unbind('focus.auto_click')
                }
            );
/*
            .bind('keyup.auto_click',
                function(){
                    if( $(this).val() != '' ){
                        $(this).unbind('focus.auto_click').unbind('keyup.auto_click').unbind('mouseup.auto_click').unbind('blur.auto_click');
                    }
                }
            )
            .bind('mouseup.auto_click',
                function(){
                    if( $(this).val() != '' ){
                        $(this).unbind('focus.auto_click').unbind('keyup.auto_click').unbind('mouseup.auto_click').unbind('blur.auto_click');
                    }
                }
            )
            .bind('blur.auto_click', {context:context},
                function(e){
                    if( $(this).hasClass('invitation') ){
                        $('.peep_submit_auto_click', e.data.context).hide();
                    }
                }
            );*/
        
});
    };

    
this.initWidgetMenu = function( items ){
        var 
$toolbarCont null;
        var 
$contex null;
        var 
condIds = [];
        var 
linkIds = [];
        $.
eachitems, function(keyvalue){
                if( 
$toolbarCont === null ){
                    
$contex = $('#'+value['contId']).closest('.peep_box, .peep_box_empty');
                    
$toolbarCont = $('.peep_box_toolbar_cont'$contex);
                }
                
condIds.push('#'+value['contId']);
                
linkIds.push('#'+value['id']);
            }
        );

        var 
contIdSelector = $(condIds.join(','));
        var 
linkIdSelector = $(linkIds.join(','));

        $.
eachitems, function(keyvalue){
                $(
'#'+value['id']).bind('click', {value:value},
                    function(
e){
                        
contIdSelector.hide();
                        $(
'#'+e.data.value.contId).show();
                        
linkIdSelector.removeClass('active');
                        $(
this).addClass('active');

                        if( 
e.data.value.toolbarId != undefined ){
                            if( 
e.data.value.toolbarId ){
                                if( 
$toolbarCont.length === ){
                                    
$toolbarCont = $('<div class="peep_box_toolbar_cont"></div>');
                                    
$contex.append($toolbarCont);
                                }
                                
$toolbarCont.html($('#'+e.data.value.toolbarId).html());
                            }
                            else{
                                if( 
$toolbarCont.length !== ){
                                    
$toolbarCont.remove();
                                    
$toolbarCont = [];
                                }
                            }
                        }
                    }
                );
            }
        );
    };

    
this.showTip = function( $elparams ){
        
params params || {};
        
params = $.extend({side:'bot'show:nullwidth:nulltimeout:0offset:5hideEventnull}, params);

        var 
showTipN = function(){

            var 
$rootEl $el.data('peepTip');
            var 
coords $el.offset();

            switch( 
params.side )
            {
                case 
'top':
                    var 
left coords.left $el.outerWidth()/$rootEl.outerWidth()/2;
                    var 
top coords.top $rootEl.outerHeight() - params.offset;
                    break;

                case 
'bot':
                    var 
left coords.left $el.outerWidth()/$rootEl.outerWidth()/2;
                    var 
top coords.top $el.outerHeight() + params.offset;
                    break;

                case 
'right':
                    var 
left coords.left $el.outerWidth() + params.offset;
                    var 
top coords.top $el.outerHeight()/$rootEl.outerHeight()/2;
                    break;

                case 
'left':
                    var 
left coords.left $rootEl.outerWidth() - params.offset;
                    var 
top coords.top $el.outerHeight()/$rootEl.outerHeight()/2;
                    break;

                 default:
                     return;
            }

            
$rootEl.css({left:lefttop:top});

            var 
tod setTimeout( function(){
                
$el.data('peepTip').show1,
                    function(){
                        if( 
params.hideEvent ){
                            
$el.bind(params.hideEvent, function(){PEEP.hideTip($el)});
                        }
                        
$el.data('peepTipStatus'true);
                        if( 
$el.data('peepTipHide') == true ){
                            
PEEP.hideTip($el);
                        }
                    }
                );
            }, 
params.timeout);
            
$el.data('tod'tod)
        }

        if( 
$el.data('peepTip') ){
            if( 
$el.data('peepTipStatus') == true ){
                return;
            }
            
showTipN();
            return;
        }

        var 
showContent;

        if( 
params.show != null ){
            
showContent = ( typeof(params.show) == 'string' params.show params.show.html() );
        }
        else{
            if( !
$el.attr('title') ){
                return;
            }

            
showContent '<span class="peep_tip_title">'+$el.attr('title')+'</span>';
        }

        var 
$rootEl = $('<div class="peep_tip peep_tip_'+params.side+'"></div>').css({display:'none'}).append($('<div class="peep_tip_arrow"><span></span></div><div class="peep_tip_box">'showContent +'</div>'));
        if( 
params.width != null ){
            
$rootEl.css({width:params.width});
        }
        $(
'body').append($rootEl);

        
$el.removeAttr('title');
        
$el.data('peepTip'$rootEl);
        
showTipN();
    };

    
this.hideTip = function( $el ){
        if( 
$el.data('tod') ){
            
clearTimeout($el.data('tod'));
        }

        if( 
$el.data('peepTip') && $el.data('peepTipStatus') == true ){
            
$el.data('peepTip').hide();
            
$el.data('peepTipStatus'false);
            
$el.data('peepTipHide'false);
        }
    };

    
this.bindTips = function( $context ){
      
//$('*[title]', $context).each( function(i, o){$(o).hover(function(){PEEP.showTip($(this), {timeout:200})}, function(){PEEP.hideTip($(this))})});
      
$('*[title]'$context).each( function(io){
          $(
o).on('mouseenter', function(){ PEEP.showTip($(this), {timeout:200}); });
          $(
o).on('mouseleave', function(){ PEEP.hideTip($(this)); });
      });
    };

    
this.resizeImg = function($contextparams){
        if( !
params.width ){
            return;
        }

        $( 
'img'$context ).each(function(){
            $(
this).load(
                function(){
                    if( $(
this).data('imgResized') != true){
                        var 
$fakeImg = $(this).clone();
                        
$fakeImg.css({width:'auto',height:'auto',visibility:'hidden',position:'absolute',left:'-9999px'}).removeAttr('width').removeAttr('height');
                        $(
document.body).append ($fakeImg);
                        var 
self this;
                        
$fakeImg.load(function(){
                            var 
width = $(this).width();
                            if( 
width params.width  ){
                                $(
self).css({width:'auto'height:'auto'});
                            }
                            else if( $(
self).width() >= params.width ){
                                $(
self).css({width:params.widthheight:'auto'});
                            }
                            $(
self).data('imgResized'true);
                            $(
this).remove();
                        });
                    }
                }
            );
        });
    };

    
this.showImageInFloatBox = function( src )
    {
        var 
floatBox = new PEEP_FloatBox({layout'empty'});
        var 
$fakeImageC = $('<div></div>');
        var 
$fakeImg = $('<img src="'+src+'" />');
        
$fakeImageC.append($fakeImg);
        
$fakeImageC.css({visibility:'hidden',position:'absolute',left:'-9999px'});
        $(
document.body).append ($fakeImageC);

        
$fakeImg.load(function(){
            var 
width $fakeImg.width();
            var 
height $fakeImg.height();

            if( 
width 340 || height 220 ){

                if( 
width 800 )
                {
                    
$fakeImg.css({width:'800px'height:'auto'});
                    
width 800;
                }
                else if( 
$fakeImg.height 600 )
                {
                    
height 600;
                    
$fakeImg.css({height:'600px'width:'auto'});
                }

                
floatBox.setContent($fakeImg);
            }
            else{
                
floatBox.setContent($fakeImg);
            }

            
floatBox.fitWindow({
                
"width"width,
                
"height"height
            
});

            
floatBox.bind('close', function(){
                
$fakeImageC.remove();
            });
        });
    }
}


//Enable / Disable node
jQuery.fn.extend({
    
inprogress: function() {
        
this.each(function()
        {
            var 
$this jQuery(this).addClass('peep_inprogress');
            
this.disabled true;

            if ( 
this.tagName != 'INPUT' && this.tagName != 'TEXTAREA' && this.tagName != 'SELECT' )
            {
                
this.jQuery_disabled_clone $this.clone().removeAttr('id').removeAttr('onclick').get(0);

                
$this.hide()
                    .
bind('unload', function(){
                        
$this.activate();
                    })
                    .
after(this.jQuery_disabled_clone);
            }
        });

        return 
this;
    },

    
activate: function() {
        
this.each(function()
        {
            var 
$this jQuery(this).removeClass('peep_inprogress');
            
this.disabled false;

            if ( 
this.jQuery_disabled_clone )
            {
                
jQuery(this.jQuery_disabled_clone).remove();
                
this.jQuery_disabled_clone null;

                
jQuery(this)
                    .
unbind('unload', function(){
                        
$this.activate();
                    })
                    .
show();
            }
        });

        return 
this;
    }
});

window.PEEP = new PeepUtils();

function 
lg(o){
    
console.log(o);
}

$( 
//8aa: resize fullsize images to fit to it's parendt width
    
function (){
        if(
typeof($) == 'undefined') return;

        $(
'.fullsize-image').hide();
        var 
node = $('.fullsize-image')[0];

        while( 
node = $(node).parent()[0]){

            if( 
node.tagName != 'DIV'){
                continue;
            }

            if($(
'.fullsize-image').width() > parseInt($(node).innerWidth()))
                $(
'.fullsize-image').width( (parseInt($(node).innerWidth()) - 10) + 'px' );

            $(
'.fullsize-image').show();
            break;
        }

    }
);


/**
 * Float box constructor.
 *
 * @param string|jQuery $title
 * @param string|jQuery $contents
 * @param jQuery $controls
 * @param object position {top, left} = center
 * @param integer width = auto
 * @param integer height = auto
 */
function PEEP_FloatBox(options)
{
    var 
fl_box this;
    var 
fb_class;
    
this.parentBox PEEP.getActiveFloatBox();
    
this.options options;
    
this.verion 2;

    
this.events = {close: [], show: []};

    if (
typeof document.body.style.maxHeight === 'undefined') { //if IE 6
            
jQuery('body').css({height'100%'width'100%'});
            
jQuery('html').css('overflow''hidden');
            if (
document.getElementById('floatbox_HideSelect') === null)
            { 
//iframe to hide select elements in ie6
                
jQuery('body').append('<iframe id="floatbox_HideSelect"></iframe><div id="floatbox_overlay"></div>');
                
fb_class PEEP_FloatBox.detectMacXFF() ? 'floatbox_overlayMacFFBGHack' 'floatbox_overlayBG';
                
jQuery('#floatbox_overlay').addClass(fb_class);
            }
    }
    else { 
//all others
        
if (document.getElementById('floatbox_overlay') === null)
        {
            
jQuery('body').append('<div id="floatbox_overlay"></div>');
            
fb_class PEEP_FloatBox.detectMacXFF() ? 'floatbox_overlayMacFFBGHack' 'floatbox_overlayBG';
            
jQuery('#floatbox_overlay').addClass(fb_class).click(function()
            {
                
fl_box.close();
            });
        }
    }

    
options.layout options.layout || 'default';

    
jQuery('body').addClass('floatbox_nooverflow');

    var 
activeCanvas jQuery('.floatbox_canvas_active');
    var 
fbContext jQuery('#floatbox_prototype').find('.' options.layout);

    
this.$canvas jQuery('.floatbox_canvas'fbContext).clone().appendTo(document.body);
    
this.$preloader jQuery('.floatbox_preloader_container'this.$canvas);

    if ( 
options.addClass )
    {
        
this.$canvas.addClass(options.addClass);
    }

    
activeCanvas.removeClass('floatbox_canvas_active');
    
this.$canvas.addClass('floatbox_canvas_active');

    if (
this.parentBox)
    {
        
this.$canvas.addClass('floatbox_canvas_sub');
        
this.parentBox.bind('close', function()
        {
            
fl_box.close();
        });
    }

    
this.$canvas.click(function(e)
    {
        if ( $(
e.target).is(this) )
        {
            
fl_box.close();
        }
    });

    
this.$container jQuery('.floatbox_container'this.$canvas);

    if ( 
options.$title )
    {
        if (
typeof options.$title == 'string')
        {
            
options.$title jQuery('<span>'+options.$title+'</span>');
        }
        else
        {
            
this.$title_parent options.$title.parent();
        }

        
this.$header jQuery('.floatbox_header'this.$container);

        var 
$fbTitle jQuery('.floatbox_cap'this.$header)
            .
find('.floatbox_title')
                .
append(options.$title);
    }

    
/*if (typeof options.icon_class == 'string')
    {
        $fbTitle.addClass(options.icon_class);
    }*/

    
this.$body jQuery('.floatbox_body'this.$container);
    
this.$bottom jQuery('.floatbox_bottom'this.$container);

    
this.showPreloader(options.$preloader || null);

    if (
options.$controls)
    {
        if (
typeof options.$controls == 'string')
        {
            
options.$controls jQuery('<span>'+options.$controls+'</span>');
        }
        else
        {
            
this.$controls_parent options.$controls.parent();
        }

        
this.$bottom.append(options.$controls);
    }


    if (
options.width)
            
this.$container.css("width"options.width);
    if (
options.height)
            
this.$body.css("height"options.height);

    
jQuery('.close'this.$header)
        .
one('click', function()
        {
            
fl_box.close();
            return 
false;
        });

    
this.esc_listener =
    function(
event) {
            if (
event.keyCode == 27) {
                    
fl_box.close();
                    return 
false;
            }
            return 
true;
    }

    
jQuery(document).bind('keydown'this.esc_listener);

    if (
options.left)
    {
        
this.$container.css('margin-left'options.left);
    }

    if (
options.top)
    {
        
this.$container.css('margin-top'options.top);
    }

    if ( 
options.$contents )
    {
        
this.setContent(options.$contents);
    }

    
window.PEEPActiveFloatBox this;
}

PEEP_FloatBox.version 3;
PEEP_FloatBox.detectMacXFF = function()
{
    var 
userAgent navigator.userAgent.toLowerCase();
    return (
userAgent.indexOf('mac') != -&& userAgent.indexOf('firefox') != -1);
}

PEEP_FloatBox.prototype = {

    
fitWindow: function( params )
    {
        
params params || {};
        
params = $.extend({
            
"width"null,
            
"height"null,
            
"top"null,
            
"left"null
        
}, params);

        var 
css = {};

        if ( 
params.width )
        {
            
this.options.width params.width;
            
css.width params.width;
        }

        if ( 
params.height )
        {
            
this.options.height params.height;
            
css.height params.height;
        }

        if ( 
params.top )
        {
            
this.options.top params.top;
            
css.marginTop params.top;
        }

        if ( 
params.left )
        {
            
this.options.left params.left;
            
css.marginLeft params.left;
        }

        
this.$container.css(css);
    },

    
setContent: function( $contents )
    {
        var 
self this;

        if (
typeof $contents == 'string')
        {
            var 
$contentsNode jQuery($contents);

            if ( !
$contentsNode.length )
            {
                
$contentsNode jQuery('<span>' $contents '</span>');
            }

            
$contents jQuery($contentsNode);
        }
        else
        {
            
this.$contents_parent $contents.parent();
        }

        var 
widthfakeNode;

        if ( !
this.options.width )
        {
            
fakeNode = $('<div></div>').insertAfter(this.$body);
            
fakeNode.attr('class'this.$body.attr('class'));
            
fakeNode.css({position'absolute',top: -2000visibility'hidden'});
            
fakeNode.append($contents);
            
width fakeNode.outerWidth();
        }
        else
        {
            
width this.options.width;
        }

        
this.$body.empty().append($contents);

        if ( 
fakeNode )
        {
            
fakeNode.remove();
        }

        
this.hidePreloader();

        
this.fitWindow({widthwidth});

        
window.setTimeout(function(){
            
self.trigger('show');
        });
    },

    
// OLD
    /*showPreloader: function( preloaderContent )
    {
        var css = {};

        if ( preloaderContent )
        {
            if ( typeof preloaderContent == 'string' )
            {
                preloaderContent = jQuery('<div class="floatbox_string_preloader"><span>' + preloaderContent + '</span></div>');
            }

            this.$preloader.html(preloaderContent);
        }

        this.$canvas.addClass('peep_floatbox_loading');


        this.$preloader.css('visibility', 'hidden');

        css.marginTop = ( jQuery(window).height() / 2 ) - ( this.$preloader.height() / 2 + 100);
        css.visibility = 'visible';

        this.$preloader.css(css);
    },*/

    
showPreloader: function( preloaderContent )
    {
        if ( 
preloaderContent )
        {
            if ( 
typeof preloaderContent == 'string' )
            {
                
preloaderContent jQuery('<div class="floatbox_string_preloader"><span>' preloaderContent '</span></div>');
            }

            
this.$preloader.html(preloaderContent);
        }

        
this.$canvas.addClass('peep_floatbox_loading');
    },

    
hidePreloader: function()
    {
        
this.$canvas.removeClass('peep_floatbox_loading');
    },

    
close: function()
    {
        if (
this.trigger('close') === false) {
                return 
false;
        }

        
jQuery(document).unbind('keydown'this.esc_listener);

        if (
this.$title_parent && this.$title_parent.length)
        {
            
this.$title_parent.append(
                
jQuery('.floatbox_title'this.$header).children()
            );
        }

        if (
this.$contents_parent && this.$contents_parent.length)
        {
            
this.$contents_parent.append(this.$body.children());
        }

        if (
this.$controls_parent && this.$controls_parent.length)
        {
            
this.$controls_parent.append(this.$bottom.children());
        }

        
this.$canvas.remove();

        if (
jQuery('.floatbox_canvas:visible').length === 0)
        {
            
jQuery('html, body').removeClass('floatbox_nooverflow');
            
jQuery('#floatbox_overlay, #floatbox_HideSelect').remove();
        }

        
window.PEEPActiveFloatBox this.parentBox;

        return 
true;
    },

    
bind: function(typefunc)
    {
            if (
this.events[type] == undefined) {
                    throw 
'form error: unknown event type "'+type+'"';
            }

            
this.events[type].push(func);

    },

    
trigger: function(typeparams)
    {
            if (
this.events[type] == undefined) {
                    throw 
'form error: unknown event type "'+type+'"';
            }

            
params params || [];

            for (var 
0funcfunc this.events[type][i]; i++) {
                    if (
func.apply(thisparams) === false) {
                            return 
false;
                    }
            }

            return 
true;
    }
}


/* PEEP Forms */

var PeepFormElement = function( idname ){
    
this.id id;
    
this.name name;
    
this.input document.getElementById(id);
    
this.validators = [];
}

PeepFormElement.prototype = {

    
validate: function(){

        var 
error false;
        var 
errorMessage '';

        try{
            for( var 
0this.validators.lengthi++ ){
                
this.validators[i].validate(this.getValue());
            }
        }catch (
e) {
            
error true;
            
this.showError(e);
            
errorMessage e;
        }

        if( 
error ){
            throw 
errorMessage;
        }
    },

    
addValidator: function( validator ){
        
this.validators.push(validator);
    },

    
getValue: function(){
        return $(
this.input).val();
    },

    
setValue: function( value ){
        $(
this.input).val(value);
    },

    
resetValue: function(){
        $(
this.input).val('');
    },

    
showError: function( errorMessage ){
        $(
'#'+this.id+'_error').append(errorMessage).fadeIn(50);
    },

    
removeErrors: function(){
        $(
'#'+this.id+'_error').empty().fadeOut(50);
    }
}

var 
PeepForm = function( params ){
    $.
extend(thisparams);
    
this.form document.getElementById(this.id);
    
this.elements = {};
    var 
actionUrl = $(this.form).attr('action');
    
this.actionUrl = ( !actionUrl location.href actionUrl );
    
this.showErrors true;
    
this.events = {
        
submit:[],
        
success:[]
    }
};

PeepForm.prototype = {

    
addElement: function( element ){
        
this.elements[element.name] = element;
    },

    
getElement: function( name ){
        if( 
this.elements[name] === undefined ){
            return 
null;
        }

        return 
this.elements[name];
    },

    
validate: function(){

        var 
error false;
        var 
element null;
        var 
errorMessage;

        $.
eachthis.elements,
            function(
indexdata){
                try{
                    
data.validate();
                }catch (
e){
                    
error true;

                    if( 
element == null ){
                        
element data;
                        
errorMessage e;
                    }
                }
            }
            );

        if( 
error ){
            
element.input.focus();

            if( 
this.validateErrorMessage ){
                throw 
this.validateErrorMessage;
            }else{
                throw 
errorMessage;
            }
        }
    },

    
bind: function( eventfnc ){
        
this.events[event].push(fnc);
    },

    
sucess: function( fnc ){
        
this.bind('success'fnc);
    },

    
submit: function( fnc ){
        
this.bind('submit'fnc);
    },

    
trigger: function( eventdata ){
        if( 
this.events[event] == undefined || this.events[event].length == ){
            return;
        }
        
        var 
result undefinedreturnVal;

        for( var 
0this.events[event].lengthi++ ){
            
            
returnVal this.events[event][i].apply(this.form, [data]);
            if(
returnVal === false || returnVal === true ){
                
result returnVal;
            }
        }
        
        if( 
result !== undefined ){
            return 
result;
        }
    },

    
getValues: function(){

        var 
values = {};

        $.
each(this.elements,
            function( 
indexdata ){
                
values[data.name] = data.getValue();
            }
            );

        return 
values;
    },

    
setValues: function( values ){

        var 
self this;

        $.
eachvalues,
            function( 
indexdata ){
                if(
self.elements[index]){
                    
self.elements[index].setValue(data);
                }
            }
            );
    },

    
resetForm: function(){
        $.
eachthis.elements,
            function( 
indexdata ){
                
data.resetValue();
            }
            );
    },

    
removeErrors: function(){

        $.
eachthis.elements,
            function( 
indexdata ){
                
data.removeErrors();
            }
            );
    },

    
submitForm: function(){

        var 
self this;

        
this.removeErrors();

        try{
            
this.validate();
        }catch(
e){
            if( 
this.showErrors ){
                
PEEP.error(e);
            }
            return 
false;
        }

        var 
dataToSend this.getValues();
        if( 
self.trigger('submit'dataToSend) === false ){
            return 
false;
        }

        var 
buttons = $('input[type=button], input[type=submit], button''#' this.id).addClass('peep_inprogress');

        if( 
this.ajax ){
            
PEEP.inProgressNode(buttons);
            var 
postString '';

            $.
eachdataToSend, function( indexdata ){
                if ( $.
isArray(data) || $.isPlainObject(data) ) {
                    $.
each(data, function (keyvalue){
                        
postString += index '[' key ']=' encodeURIComponent(value) + '&';
                    });
                }
                else{
                    
postString += index '=' encodeURIComponent(data) + '&';
                }
            } );

            $.
ajax({
                
type'post',
                
urlthis.actionUrl,
                
datapostString,
                
dataTypeself.ajaxDataType,
                
success: function(data){
                    if(
self.reset){
                        
self.resetForm();
                    }
                    
self.trigger('success'data);
                },
                
error: function( XMLHttpRequesttextStatuserrorThrown ){
                    
PEEP.error(textStatus);
                    throw 
textStatus;
                },
                
complete: function(){
                    
PEEP.activateNode(buttons);
                }
            });

            return 
false;
        }

        $.
each(this.elements,
            function( 
i){
                if( $(
o.input).hasClass('invitation') ){
                    $(
o.input).attr('disabled''disabled');
                }
            }
            );

        return 
true;
    }
}

peepForms = {};

// custom fields
var addInvitationBeh = function( formElementinvitationString ){
    
formElement.invitationString invitationString;

    
formElement.getValue = function(){
        var 
val = $(this.input).val();
        if( 
val != '' && val != this.invitationString ){
            $(
this.input).removeClass('invitation');
            return 
val;
        }
        else{
            return 
'';
        }
    };

    var 
parentResetValue formElement.resetValue;

    
formElement.resetValue = function(){
        
parentResetValue.call(this);

        $(
this.input).addClass('invitation');
        $(
this.input).val(invitationString);
    };

    $(
formElement.input
        
).bind('focus.invitation', {formElement:formElement},
            function(
e){
                
el = $(this);
                
el.removeClass('invitation');
                if( 
el.val() == '' || el.val() == e.data.formElement.invitationString){
                    
el.val('');
                    
//hotfix for media panel
                    
if( 'htmlarea' in el.get(0) ){
                        
el.unbind('focus.invitation').unbind('blur.invitation');
                        
el.get(0).htmlarea();
                        
el.get(0).htmlareaFocus();
                    }
                }
                else{
                    
el.unbind('focus.invitation').unbind('blur.invitation');
                }
            }
        )
/*.bind('blur.invitation', {formElement:formElement},
            function(e){
                el = $(this);
                if( el.val() == '' || el.val() == e.data.formElement.invitationString){
                    el.addClass('invitation');
                    el.val(e.data.formElement.invitationString);
                }
                else{
                    el.unbind('focus.invitation').unbind('blur.invitation');
                }
            }
    );*/
}

var 
PeepTextField = function( idnameinvitationString ){
    var 
formElement = new PeepFormElement(idname);
    if( 
invitationString ){
        
addInvitationBeh(formElementinvitationString);
    }
    return 
formElement;
}

var 
PeepTextArea = function( idnameinvitationString ){
    var 
formElement = new PeepFormElement(idname);
    if( 
invitationString ){
        
addInvitationBeh(formElementinvitationString);
    }
    return 
formElement;
}

var 
PeepWysiwyg = function( idnameinvitationString ){
    var 
formElement = new PeepFormElement(idname);
    
formElement.input.focus = function(){this.htmlareaFocus();};
    
addInvitationBeh(formElementinvitationString);
    
formElement.resetValue = function(){$(this.input).val('');$(this.input).keyup();};
    
formElement.getValue = function(){
                var 
val = $(this.input).val();
                if( 
val != '' && val != '<br>' && val != '<div><br></div>' && val != this.invitationString ){
                    $(
this.input).removeClass('invitation');
                    return 
val;
                }
                else{
                    return 
'';
                }
            };

    return 
formElement;
}

var 
PeepRadioField = function( idname ){
    var 
formElement = new PeepFormElement(idname);

    
formElement.getValue = function(){
        var 
value = $("input[name='"+this.name +"']:checked", $(this.input.form)).val();
        return ( 
value == undefined '' value );
    };

    
formElement.resetValue = function(){
        $(
"input[name='"+this.name +"']:checked", $(this.input.form)).removeAttr('checked');
    };

    
formElement.setValue = function(value){
        $(
"input[name='"this.name +"'][value='"+value+"']", $(this.input.form)).attr('checked''checked');
    };

    return 
formElement;
}

var 
PeepCheckboxGroup = function( idname ){
    var 
formElement = new PeepFormElement(idname);

    
formElement.getValue = function(){
        var 
$inputs = $("input[name='"this.name +"[]']:checked", $(this.input.form));
        var 
values = [];

        $.
each$inputs, function(indexdata){
                if( 
this.checked == true ){
                    
values.push($(this).val());
                }
            }
        );

        return 
values;
    };

    
formElement.resetValue = function(){
        var 
$inputs = $("input[name='"this.name +"[]']:checked", $(this.input.form));

        $.
each$inputs, function(indexdata){
                $(
this).removeAttr('checked');
            }
        );
    };

    
formElement.setValue = function(value){
        for( var 
0value.lengthi++ ){
            $(
"input[name='"this.name +"[]'][value='"+value[i]+"']", $(this.input.form)).attr('checked''checked');
        }
    };

    return 
formElement;
}

var 
PeepCheckboxField = function( idname ){
    var 
formElement = new PeepFormElement(idname);

    
formElement.getValue = function(){
        var 
$input = $("input[name='"+this.name+"']:checked", $(this.input.form));
        if( 
$input.length == ){
            return 
'';
        }
        return 
'on';
    };

    
formElement.setValue = function(value){
        var 
$input = $("input[name='"+this.name+"']:checked", $(this.input.form));
        if( 
value ){
            
$input.attr('checked''checked');
        }
        else{
            
$input.removeAttr('checked');
        }
    };
    
formElement.resetValue = function(){
        var 
$input = $("input[name='"+this.name+"']:checked", $(this.input.form));
        
$input.removeAttr('checked');
    };

    return 
formElement;
}

var 
PeepRange = function( idname ){
    var 
formElement = new PeepFormElement(idname);

    
formElement.getValue = function(){
        var 
$inputFrom = $("select[name='"this.name +"[from]']");
        var 
$inputTo = $("select[name='"this.name +"[to]']");
        var 
values = [];

        
values.push($inputFrom.val());
        
values.push($inputTo.val());

        return 
values;
    };

    
formElement.setValue = function(value){
        var 
$inputFrom = $("select[name='"this.name +"[from]']");
        var 
$inputTo = $("select[name='"this.name +"[to]']");

        if( 
value[1] ){
            $(
"option[value='"value[1] +"']"$inputFrom).attr('selected''selected');
        }

        if( 
value[2] ){
            $(
"option[value='"value[2] +"']"$inputTo).attr('selected''selected');
        }

    };

    return 
formElement;
}

var 
PeepAvatarField = function( idnameparams ){
    var 
formElement = new PeepFormElement(idname);
    var 
$preview = $(formElement.input).closest(".peep_avatar_field").find(".peep_avatar_field_preview");
    var 
$img $preview.find("img");

    
$preview.click(function(){
        $(
formElement.input).trigger('click');
    });

    
$preview.find("span").click(function(e){
        
e.stopPropagation();
 
        
$img.attr("src""");
        
formElement.resetValue();
        
$preview.hide();
        $(
formElement.input).val("").show();

        
// delete a tmp avatar
        
if (!$("#" id "_preload_avatar").length) {
            $.
ajax({
                
urlparams.ajaxResponder,
                
type'POST',
                
data: { ajaxFunc'ajaxDeleteImage' },
                
dataType'json',
                
success: function(data){ }
            });
        }

        $(
"#" id "_preload_avatar").remove();
    });

    $(
formElement.input).change(function(e){
        
document.avatarFloatBox PEEP.ajaxFloatBox(
            
"BASE_CMP_AvatarChange",
            { 
params : { step 2inputId idhideStepstruedisplayPreloadertruechangeUserAvatar:  params.changeUserAvatar} },
            { 
width 749titlePEEP.getLanguageText('base''avatar_change') }
        );
    });

    
PEEP.bind('base.avatar_cropped', function(data){
        
formElement.removeErrors();
        $(
formElement.input).hide();
        
formElement.setValue(data.url);
        
$preview.show();

        var 
ts = new Date().getTime();
        
$img.attr("src"data.url "?" ts);
        $(
"#" id "_preload_avatar").remove();
    });

    return 
formElement;
}

/* end of forms */


/* Drag and drop fix */

DND_InterfaceFix = new (function(){

    var 
embed = function(context){
        var 
$context = $(context);
        var 
cWidth $context.innerWidth();

        var 
configureEmbed = function($embed) {
            var 
embed $embed.get(0);
            if ( 
embed.default_width === undefined || embed.default_width === null ) {
                
embed.default_width $embed.width();
            }

            if ( 
cWidth embed.default_width )
            {
                
$embed.css('width''100%');
            }
            else
            {
                
$embed.css('width'embed.default_width 'px');
            }

                        
$embed.attr('wmode''transparent');
        };

        var 
configureObject = function($object) {
            
$object.css('width''100%');
        };

        $(
'embed'context).each(function(){
            var 
$node = $(this).hide();
            
configureEmbed($node);
            
$node.show();
        });

        $(
'object'context).each(function() {
            var 
$node = $(this).hide(), $embeds = $('embed'this);

            
configureObject($node);
        if ( 
$embeds.length )
        {
            
configureEmbed($embeds);
        }
            
$node.show();
        });
    };

    var 
image = function(context) {

        var 
$context = $(context), cWidth;
        var 
cWidth $context.innerWidth();

        if ( !
cWidth )
        {
            return;
        }

        var 
resize = function(img) {
            var 
$img = $(img);

            if ( 
img.default_width ) {
                
img.default_width $img.width();
            }

            if ( 
img.default_width cWidth ) {
                
$img.css('width''100%');
            } else {
                
$img.css('width'img.default_width);
            }
        };

        
$context.find('img').each(function(){
                    $(
this).css('max-width''100%');
                    if (
this.naturalWidth == 0) {
                        $(
this).load(function(){
                            
resize(this);
                        });
                    } else {
                        
resize(this);
                    }
        });
    };


    var 
iframe = function(context)
        {
            var 
$iframe = $('iframe'context);
            var 
cWidth = $(context).innerWidth();
            
$iframe.each(function(io)
            {
                var 
$o = $(o), urlwmode;

                if ( 
$o.width() > cWidth )
                {
                    
$o.css('width''100%');
                }

                
url = $(this).attr("src");

                if ( !
url ) return;

                
wmode "wmode=transparent";
                if ( 
url.indexOf("?") != -1)
                {
                    
$o.attr("src"url "&" wmode);
                }
                else
                {
                    
$o.attr("src"url "?" wmode);
                }
            });
    };

    
this.fix = function(context) {
        
this.embed(context);
        
this.image(context);
        
this.iframe(context);
    };

    
this.embed = function(context) {
        $(
context).each(function(){
            
embed(this);
        })
    };

    
this.image = function(context) {
        $(
context).each(function(){
            
image(this);
        });
    };

    
this.iframe = function(context) {
        $(
context).each(function(){
            
iframe(this);
        });
    };

})();

/* Comments */
var PeepComments = function( params ){
    $.
extend(thisparams);
    
this.$cmpContext = $('#' this.contextId);
    var 
self this;
    var 
sleeping false;
    
this.eventParams = {entityType:self.entityTypeentityId:self.entityIdcustomId:self.customId};
    
this.submitHandler = function(){PEEP.error('FORM IS NOT INITIALIZED!');};
    
this.attachmentInProgressHandler = function(){PEEP.error(params.labels.attachmentLoading);};
    
    var 
checkAddress = function( data ){
        if( 
data.customId && data.customId != self.customId  ){
            return 
false;
        }
        
        return ( 
data.entityType == self.entityType && data.entityId == self.entityId );
    };
    
    
PEEP.bind('base.comments_sleep'
        function(
data){
            if( 
checkAddress(data) ){
                
sleeping true;
                if( 
this.userAuthorized ){
                    
self.moveForm();
                }
                
self.$cmpContext.hide();
            }
        }
    );
    
    
PEEP.bind('base.comments_wakeup'
        function(
data){
            if( 
checkAddress(data) ){
                
sleeping false;
                
self.$cmpContext.show();
            }
        }
    );
    
    
PEEP.bind('base.comments_destroy'
        function(
data){
            if( 
checkAddress(data) ){
                
self.$cmpContext.remove();
            }
        }
    );
    
    if( !
this.userAuthorized ){
        return;
    }
    
    
this.$textarea = $('#'+this.textAreaId);
    
this.$attchCont = $('#'+this.attchId);
    
this.$formWrapper = $('.peep_comments_form_wrap'this.$cmpContext);
    
this.$formWrapperPre = $('.peep_comments_form_wrap_pre'this.$cmpContext);
    
this.$hiddenBtnCont = $('.comments_hidden_btn'this.$cmpContext);
    
this.$commentsInputCont = $('.peep_comments_item_info'this.$formWrapper);
    
this.initTextarea();
    
this.attachmentInfo false;
    
this.oembedInfo false;

    
PEEP.bind('base.comments_list_init',
        function(
data){
            if( 
sleeping ) return;
            if( 
checkAddress(data) ){
                
self.initialCount this.initialCount;
            }
        }
    );

    
PEEP.bind('base.add_photo_attachment_submit',
        function(
data){
            if( 
sleeping ) return;            
            if( 
data.uid == self.attchUid ){
                
self.oembedInfo false;
                
self.$attchCont.empty();
                
self.submitHandler self.attachmentInProgressHandler;
                
self.$hiddenBtnCont.show();
                
PEEP.trigger('base.comment_button_show'self.eventParams);
            }
        }
    );

    
PEEP.bind('base.attachment_added',
        function(
data){
            if( 
sleeping ) return;            
            if( 
data.uid == self.attchUid ){                
                
self.attachmentInfo data;
                
self.$textarea.focus();
                
self.submitHandler self.realSubmitHandler;
                
PEEP.trigger('base.comment_attachment_added'self.eventParams);
            }
        }
    );

    
PEEP.bind('base.attachment_deleted',
        function(
data){
            if( 
sleeping ) return;
            if( 
data.uid == self.attchUid ){
                
self.attachmentInfo false;
                
self.$hiddenBtnCont.hide();
                
PEEP.trigger('base.comment_attachment_deleted'self.eventParams);
            }
        }
    );

    
PEEP.bind('base.move_comments_form',
        function(
data){
            if( 
sleeping ) return;
            if( !
data.entityType || !data.entityId ){
                return;
            }

            if( 
checkAddress(data) ){
                if( 
data.appendTo ){
                    
self.moveForm(data.appendTo);
                }else{
                    
self.moveForm();
                }
            }
        }
    );
}

PeepComments.prototype = {
    
repaintCommentsList: function(data){
        if(
data.error){
            
PEEP.error(data.error);
            return;
        }
        
//PEEP.trigger('base.comments_list_update', {entityType: data.entityType, entityId: data.entityId, id:this.uid});
        
$('.comments_list_cont'this.$cmpContext).empty().append($(data.commentList));        
        
PEEP.addScript(data.onloadScript);
    },

    
sendMessage: function( message ){
        var 
self this;
        var 
dataToSend = {
            
entityTypeself.entityType,
            
entityIdself.entityId,
            
displayTypeself.displayType,
            
pluginKeyself.pluginKey,
            
ownerIdself.ownerId,
            
cidself.uid,
            
attchUidself.attchUid,
            
commentCountOnPageself.commentCountOnPage,
            
commentTextmessage,
            
initialCountself.initialCount
        
};

        if( 
self.attachmentInfo ){
            
dataToSend.attachmentInfo JSON.stringify(self.attachmentInfo);
        }
        else if( 
self.oembedInfo ){
            
dataToSend.oembedInfo JSON.stringify(self.oembedInfo);
        }

        $.
ajax({
            
type'post',
            
urlself.addUrl,
            
datadataToSend,
            
dataType'JSON',
            
success: function(data){
                
self.repaintCommentsList(data);
                
PEEP.trigger('base.photo_attachment_uid_update', {uid:self.attchUidnewUid:data.newAttachUid});
                
self.eventParams.commentCount data.commentCount;
                
PEEP.trigger('base.comment_added'self.eventParams);
                
self.attchUid data.newAttachUid;
                
                
self.$formWrapper.removeClass('peep_preloader');
                
self.$commentsInputCont.show();
            },
            
error: function( XMLHttpRequesttextStatuserrorThrown ){
                
PEEP.error(textStatus);
            },
            
complete: function(){
                
            }
        });
        
        
this.$textarea.val('').keyup().trigger('input.autosize');
    },

    
initTextarea: function(){
        var 
self this;
        
this.realSubmitHandler = function(){
            
self.initialCount++;                         
            
self.sendMessage(self.$textarea.val());
            
self.attachmentInfo false;
            
self.oembedInfo false;
            
self.$hiddenBtnCont.hide();
            if( 
this.mediaAllowed ){
                
PEEPLinkObserver.getObserver(self.textAreaId).resetObserver();
            }
            
self.$attchCont.empty();
            
PEEP.trigger('base.photo_attachment_reset', {pluginKey:self.pluginKeyuid:self.attchUid});
            
PEEP.trigger('base.comment_add'self.eventParams);
            
            
self.$formWrapper.addClass('peep_preloader');
            
self.$commentsInputCont.hide();
            
        };
        
        
this.submitHandler this.realSubmitHandler;
        
        
this.$textarea
            
.bind('keypress',
                function(
e){
                    if( 
e.which === 13 && !e.shiftKey ){
                        var 
textBody = $(this).val();

                         if ( $.
trim(textBody) == '' && !self.attachmentInfo && !self.oembedInfo ){
                             
PEEP.error(self.labels.emptyCommentMsg);
                            return 
false;
                         }
                        
                        
self.submitHandler();
                        return 
false;
                    }
                }
            )
            .
one('focus', function(){$(this).removeClass('invitation').val('').autosize({callback:function(data){PEEP.trigger('base.comment_textarea_resize'self.eventParams);}});});

       
this.$hiddenBtnCont.unbind('click').click(function(){self.submitHandler();});

       if( 
this.mediaAllowed ){
           
PEEPLinkObserver.observeInput(this.textAreaId, function( link ){
            if( !
self.attachmentInfo ){
                 
self.$attchCont.html('<div class="peep_preloader" style="height: 30px;"></div>');
                 
this.requestResult( function( ){
                     
self.$attchCont.html(r);
                     
self.$hiddenBtnCont.show();

                     
PEEP.trigger('base.comment_attach_media', {})
                 });
                 
this.onResult = function( ){ 
                     
self.oembedInfo r
                     if( $.
isEmptyObject(r) ){
                         
self.$hiddenBtnCont.hide();
                     }
                 };
            }
         });
       }
    },

    
moveForm: function( $appendTo ){
        if( 
$appendTo ){
            
$appendTo.append(this.$formWrapper);
        }
        else{
            
this.$formWrapperPre.after(this.$formWrapper);
        }
    }
};

var 
PeepCommentsList = function( params ){
    
this.$context = $('#' params.contextId);
    $.
extend(thisparamspeepCommentListCmps.staticData);
        
this.$loader = $('.peep_comment_list_loader'this.$context);
}

PeepCommentsList.prototype = {
    
init: function(){
    var 
self this;
        $(
'.peep_comments_item'this.$context).hover(function(){$('.cnx_action'this).show();$('.peep_comments_date_hover'this).hide();}, function(){$('.cnx_action'this).hide();$('.peep_comments_date_hover'this).show();});
        
this.$loader.one('click',
            function(){
                
self.$loader.addClass('peep_preloader');
                $(
'a'self.$loader).hide();
                
self.initialCount += self.loadMoreCount;
                
self.reload();
            }
        );

//        PEEP.bind('base.comments_list_update',
//            function(data){
//                if( data.entityType == self.entityType && data.entityId == self.entityId && data.id != self.cid ){
//                    self.reload();
//                }
//            }
//        );

        
PEEP.trigger('base.comments_list_init', {entityTypethis.entityTypeentityIdthis.entityId}, this);

        
PEEP.bind('base.comment_add', function(data){ if( data.entityType == self.entityType && data.entityId == self.entityId self.initialCount++ });

        if( 
this.pagesCount )
        {
            for( var 
1<= this.pagesCounti++ )
            {
                $(
'a.page-'+iself.$context).bind'click', {i:i},
                    function(
event){
                        
self.reload(event.data.i);
                    }
                );
            }
        }

        $.
each(this.actionArray.comments,
            function(
i,o){
                $(
'#'+i).click(
                    function(){
                        if( 
confirm(self.delConfirmMsg) )
                        {
                           $(
this).closest('div.peep_comments_item').slideUp(300, function(){$(this).remove();});

                            $.
ajax({
                                
type'POST',
                                
urlself.delUrl,
                                
data: {
                                    
cid:self.cid,
                                    
commentCountOnPage:self.commentCountOnPage,
                                    
ownerId:self.ownerId,
                                    
pluginKey:self.pluginKey,
                                    
displayType:self.displayType,
                                    
entityType:self.entityType,
                                    
entityId:self.entityId,
                                    
initialCount:self.initialCount,
                                    
page:self.page,
                                    
commentId:o
                                
},
                                
dataType'json',
                                
success : function(data){
                                    if(
data.error){
                                            
PEEP.error(data.error);
                                            return;
                                    }

                                    
self.$context.replaceWith(data.commentList);
                                    
PEEP.addScript(data.onloadScript);

                                    var 
eventParams = {
                                        
entityTypeself.entityType,
                                        
entityIdself.entityId,
                                        
commentCountdata.commentCount
                                    
};

                                    
PEEP.trigger('base.comment_delete'eventParamsthis);
                                }
                            });
                        }
                    }
             );
            }
        );

        $.
each(this.actionArray.users,
            function(
i,o){
                $(
'#'+i).click(
                    function(){
                        
PEEP.Users.deleteUser(o);
                    }
             );
            }
        );

        for( 
0this.commentIds.lengthi++ )
        {
            if( $(
'#att'+this.commentIds[i]).length )
             {
                 $(
'.attachment_delete',$('#att'+this.commentIds[i])).bind'click', {i:i},
                    function(
e){

                        $(
'#att'+self.commentIds[e.data.i]).slideUp(300, function(){$(this).remove();});

                        $.
ajax({
                            
type'POST',
                            
urlself.delAtchUrl,
                            
data: {
                                
cid:self.cid,
                                
commentCountOnPage:self.commentCountOnPage,
                                
ownerId:self.ownerId,
                                
pluginKey:self.pluginKey,
                                
displayType:self.displayType,
                                
entityType:self.entityType,
                                
entityId:self.entityId,
                                
page:self.page,
                                
initialCount:self.initialCount,
                                
loadMoreCount:self.loadMoreCount,
                                
commentId:self.commentIds[e.data.i]
                            },
                            
dataType'json'
                        
});
                    }
                 );
             }
        }
    },

    
reload:function( page ){
        var 
self this;        
        $.
ajax({
            
type'POST',
            
urlself.respondUrl,
            
data: {
                    
cid:self.cid,
                    
commentCountOnPage:self.commentCountOnPage,
                    
ownerId:self.ownerId,
                    
pluginKey:self.pluginKey,
                    
displayType:self.displayType,
                    
entityType:self.entityType,
                    
entityId:self.entityId,
                    
initialCount:self.initialCount,
                    
loadMoreCount:self.loadMoreCount,
                    
page:page
            
},
            
dataType'json',
            
success : function(data){
               if(
data.error){
                        
PEEP.error(data.error);
                        return;
                }
                
self.$loader.removeClass('peep_preloader');
                $(
'a'self.$loader).hide();
                
self.$context.replaceWith(data.commentList);
                
PEEP.addScript(data.onloadScript);
            },
            
error : function( XMLHttpRequesttextStatuserrorThrown ){
                
PEEP.error('Ajax Error: '+textStatus+'!');
                throw 
textStatus;
            }
        });
    }
}

peepCommentCmps = {};
peepCommentListCmps = {items:{},staticData:{}};

var 
PeepRate = function( params ){
    
this.cmpId params.cmpId;
    
this.userRate params.userRate;
    
this.entityId params.entityId;
    
this.entityType params.entityType;
    
this.itemsCount params.itemsCount;
    
this.respondUrl params.respondUrl;
    
this.ownerId params.ownerId;
    
this.$context = $('#rate_'+params.cmpId);
}

PeepRate.prototype = {
    
init: function(){
        var 
self this;
        
this.setRate(this.userRate);
        for( var 
1<= this.itemsCounti++ ){
            $(
'#' this.cmpId '_rate_item_' i).bind'mouseover', {i:i},
                function(
e){
                    
self.setRate(e.data.i);
                }
            ).
bind'mouseout',
                function(){
                    
self.setRate(self.userRate);
                }
            ).
bind'click', {i:i},
                function(
e){
                    
self.updateRate(e.data.i);
                }
            );
        }
    },

    
setRate: function( rate ){
        for( var 
1<= this.itemsCounti++ ){
            var 
$el = $('#' this.cmpId '_rate_item_' i);
            
$el.removeClass('active');
            if( !
rate ){
                continue;
            }
            if( 
<= rate ){
                
$el.addClass('active');
            }
        }
    },

    
updateRate: function( rate ){
        var 
self this;
        if( 
rate == this.userRate ){
            return;
        }
        
this.userRateBackup this.userRate;
        
this.userRate rate;
        $.
ajax({
            
type'POST',
            
urlself.respondUrl,
            
data'entityType='+encodeURIComponent(self.entityType)+'&entityId='+encodeURIComponent(self.entityId)+'&rate='+encodeURIComponent(rate)+'&ownerId='+encodeURIComponent(self.ownerId),
            
dataType'json',
            
success : function(data){

                if( 
data.errorMessage ){
                    
PEEP.error(data.errorMessage);
                    
self.userRate self.userRateBackup;
                    
self.setRate(self.userRateBackup);
                    return;
                }

                if( 
data.message ){
                    
PEEP.info(data.message);
                }

                $(
'.total_score'self.$context).empty().append(data.totalScoreCmp);
                
PEEP.trigger('base.rate_update', {entityTypeself.entityTypeentityIdself.entityIdraterateownerIdself.ownerId}, this);
            },
            
error : function( XMLHttpRequesttextStatuserrorThrown ){
                
alert('Ajax Error: '+textStatus+'!');
                throw 
textStatus;
            }
        });
    }
}

PEEPLinkObserver =
{
    
observers: {},

    
observeInput: function( inputIdcallBack )
    {
        
this.observers[inputId] = new PEEPLinkObserver.handler(inputIdcallBack);
    },

    
getObserver: function( inputId )
    {
        return 
this.observers[inputId] || null;
    }
};

PEEPLinkObserver.handler = function( inputIdcallBack )
{
    
this.callback callBack;
    
this.input = $('#' inputId);
    
this.inputId inputId;
    
this.detectedUrl null;

    
this.onResult = function(){};

    
this.startObserve();
};

PEEPLinkObserver.handler.prototype =
{
    
startObserve: function()
    {
        var 
self this;

        var 
detect = function()
        {
            var 
val self.input.val();

            if ( $.
trim(val) )
            {
                
self.detectLink();
            }
        };

        
this.input.bind('paste', function(){
            
setTimeout(function() {
                
detect();
            }, 
100);
        });

        
this.input.bind('blur'detect);

        
this.input.keyup(function(e)
        {
            if (
e.keyCode == 32 || e.keyCode == 13) {
                
detect();
            }
        });
    },

    
detectLink: function( text )
    {
        var 
textrgxpresult;

        
text this.input.val();
        
rgxp = /(http(s)?://|www.)((d+.d+.d+.d+)|(([w-]+.)+([a-z,A-Z][w-]*)))(:[1-9][0-9]*)?(/?([?w-.,/:%+@&*=~]+[w-,./?':%+@&=*|]*)?)?/;
        
result text.match(rgxp);

        if ( !
result )
        {
            return 
false;
        }

        if ( 
this.detectedUrl == result[0] )
        {
            return 
false;
        }

        
this.detectedUrl result[0];

        
this.callback.call(thisthis.detectedUrl);
    },

    
requestResult: function( callbacklink )
    {
        var 
self this;

        
link link || this.detectedUrl;

        $.
ajax({
            
type'POST',
            
urlPEEP.ajaxAttachmentLinkRsp,
            
data: {"url"link},
            
dataType'json',
            
success: function( )
            {
                if ( 
r.content )
                {
                    if ( 
r.content.css )
                    {
                        
PEEP.addCss(r.content.css);
                    }

                    if ( $.
isFunction(callback) )
                    {
                        
callback.call(selfr.content.htmlr.result);
                    }

                    if ( $.
isFunction(self.onResult) )
                    {
                        
self.onResult(r.result);
                    }

                    if ( 
r.content.js )
                    {
                        
PEEP.addScript(r.content.js);
                    }
                }

                if ( 
r.attachment && PEEP_AttachmentItemColletction[r.attachment] )
                {
                    
PEEP_AttachmentItemColletction[r.attachment].onChange = function(oembed){
                        
self.onResult(oembed);
                    };
                }
            }
        });
    },

    
resetObserver: function()
    {
        
this.detectedUrl null;
    }
};

PEEP_AttachmentItemColletction = {};

PEEP_Attachment = function(uniqIddata)
{
    var 
self this;

    
this.data data;
    
this.uniqId uniqId;
    
this.node document.getElementById(this.uniqId);
    
this.onChange = function(){};

    
//PEEP.resizeImg(this.$('.EQ_AttachmentImageC'),{width:'150'});

    
this.$('.PEEP_AttachmentSelectPicture').click(function()
    {
        
self.showImageSelector();
    });

    
this.$('.PEEP_AttachmentDelete').click(function()
    {
        $(
self.node).remove();

        if ( $.
isFunction(self.onChange) )
        {
            
self.data = [];
            
self.onChange.call(selfself.data);
        }
        
        return 
false;
    });
};

PEEP_AttachmentProto = function()
{
    
this.$ = function (sel)
    {
        return $(
selthis.node);
    };

    
this.showImageSelector = function()
    {
        var 
fb$contentsself this;

        
$contents this.$('.PEEP_AttachmentPicturesFbContent')

        
fb = new PEEP_FloatBox({
            
$titlethis.$('.PEEP_AttachmentPicturesFbTitle'),
            
$contents$contents,
            
width520
        
});

        
$contents.find('.PEEP_AttachmentPictureItem').unbind().click(function()
        {
            var 
img = $('img'this);
            
self.changeImage(img.attr('src'));

            
fb.close();
        });
    };

    
this.changeImage = function( url )
    {
        var clone, 
original;

        
original this.$('.PEEP_AttachmentImage');
        clone = 
original.clone();
        clone.
attr('src'url);
        
original.replaceWith(clone);

        if ( $.
isFunction(this.onChange) )
        {
            
this.data["thumbnail_url"] = url;

            
this.onChange.call(thisthis.data);
        }
    };

};
PEEP_Attachment.prototype = new PEEP_AttachmentProto();

// Additional jQuery plugins

jQuery.fn.onImageLoad = function(fn)
{
    
this.load(fn);
    
this.each( function() {
        if ( 
this.complete && this.naturalWidth !== ) {
            $(
this).trigger('load');
        }
    });
};


/* PING */

PEEP_PingCommand = function( commandNamecommandObjectstack )
{
    $.
extend(thiscommandObject);

    
this.commandName commandName;
    
this.repeatTime false;
    
this.minRepeatTime null;

    
this.stack stack;
    
this.commandTimeout null;
    
this.stopped true;
    
this.skipped false;
    
this.inProcess false;
    
this.isRootCommand false;

    
this._lastRunTime null;
};

PEEP_PingCommand.PROTO = function()
{
    
this._updateLastRunTime = function()
    {
        
this._lastRunTime = $.now();
    };

    
this._received = function( )
    {
        
this.after(r);
    },

    
this._delayCommand = function()
    {
        var 
self this;

        if ( 
this.commandTimeout )
        {
            
window.clearTimeout(this.commandTimeout);
        }

        
this.commandTimeout window.setTimeout(function()
        {
            
self._run();
            
self.skipped false;
        }, 
this.repeatTime);
    },

    
this._completed = function()
    {
        
this.inProcess false;
        
this._updateLastRunTime();

        if ( 
this.skipped || this.stopped || this.repeatTime === false )
        {
            return;
        }

        
this._delayCommand();
    },

    
this._getStackCommand = function()
    {
        return {
            
"command"this.commandName,
            
"params"this.params
        
};
    };

    
this._beforeStackSend = function()
    {
        if ( 
this.minRepeatTime === null || this.stopped || this.inProcess || this.isRootCommand )
        {
            return;
        }

        if ( $.
now() - this._lastRunTime this.minRepeatTime )
        {
            return;
        }

        
this._run();
    };

    
this._run = function()
    {
        if ( !
this.stopped )
        {
            
this.inProcess true;
            
this.stack.push(this);
        }

        if ( 
this.onRun )
        {
            
this.onRun(this);
        }
    };

    
this.params = {};
    
this.before = function(){};
    
this.after = function(){};

    
this.start = function( repeatTime )
    {
        if ( $.
isNumeric(repeatTime) )
        {
            
this.repeatTime repeatTime;
        }
        else if ( $.
isPlainObject(repeatTime) )
        {
            if ( 
repeatTime.max )
            {
                
this.repeatTime repeatTime.max;
            }

            if ( 
repeatTime.min )
            {
                
this.minRepeatTime repeatTime.min == 'each' repeatTime.min;
            }
        }

        
this.stop();
        
this.stopped false;

        if ( !
this.inProcess )
        {
            
this._run();
        }
    };

    
this.skip = function()
    {
        
this.skipped true;
        
this._delayCommand();
    };

    
this.stop = function()
    {
        
this.stopped true;
    };
};

PEEP_PingCommand.prototype = new PEEP_PingCommand.PROTO();


PEEP_Ping = function()
{
    var 
_stack = [], _commands = {};

    var 
rspUrl;
    var 
_rootCommand null;

    var 
beforeStackSendsendStackrefreshRootCommandrootOnCommandRungenericOnCommandRunsetRootCommand;

    
rootOnCommandRun = function( command )
    {
        
window.setTimeout(function(){
            
sendStack();
        }, 
10);
    };

    
genericOnCommandRun = function( command )
    {
        if ( !
_rootCommand )
        {
            
setRootCommand(command);
            
rootOnCommandRun(command);

            return;
        }

        if ( 
command.repeatTime === false )
        {
            return;
        }

        if ( 
_rootCommand.repeatTime === false || _rootCommand.repeatTime command.repeatTime )
        {
            
setRootCommand(command);
            
rootOnCommandRun(command);
        }
    };

    
refreshRootCommand = function()
    {
        var 
rootCommand null;

        for ( var 
c in _commands )
        {
            if ( 
_commands[c].repeatTime === false || _commands[c].stopped  )
            {
                continue;
            }

            if ( !
rootCommand || _commands[c].repeatTime rootCommand.repeatTime )
            {
                
rootCommand _commands[c];
            }
        }

        if ( 
rootCommand )
        {
           
setRootCommand(rootCommand);
        }
    };

    
setRootCommand = function( command )
    {
        if ( 
_rootCommand )
        {
            
_rootCommand.onRun genericOnCommandRun;
            
_rootCommand.isRootCommand false;
        }

        
command.isRootCommand true;
        
_rootCommand command;
        
_rootCommand.onRun rootOnCommandRun;
    };

    
beforeStackSend = function()
    {
        for ( var 
c in _commands )
        {
            
_commands[c]._beforeStackSend();
        }
    };

    
sendStack = function()
    {
        
beforeStackSend();

        if ( !
_stack.length )
        {
            return;
        }

        var 
stack = [], commands = [];

        while ( 
_stack.length )
        {
            var 
_stack.pop();
            
commands.push(c);

            if ( 
c.before() === false )
            {
                
c.skip();
                continue;
            }

            
stack.push(c._getStackCommand());
        }

        if ( !
stack.length )
        {
            return;
        }

        var 
request = {
            
"stack"stack
        
};

        var 
jsonRequest JSON.stringify(request);

        var 
ajaxOptions =
        {
            
urlrspUrl,
            
dataType'json',
            
type'POST',
            
data: {requestjsonRequest},
            
success: function(result)
            {
                if ( !
result || !result.stack )
                {
                    return;
                }

                $.
each(result.stack, function(icommand)
                {
                    if ( 
_commands[command.command] )
                    {
                        
_commands[command.command]._received(command.result);
                    }
                });
            },

            
complete: function()
            {
                $(
commands).each(function(icommand)
                {
                    
command._completed();
                });

                
refreshRootCommand();
            }
        };

        $.
ajax(ajaxOptions);
    };

    
this.addCommand = function( commandNamecommandObject )
    {
        if ( 
_commands[commandName] )
        {
            return 
_commands[commandName];
        }

        
commandObject commandObject || {};

        
_commands[commandName] = new PEEP_PingCommand(commandNamecommandObject_stack);
        
_commands[commandName].onRun genericOnCommandRun;

        return 
_commands[commandName]
    };

    
this.getCommand = function( commandName )
    {
        return 
_commands[commandName] || null;
    };

    
this.setRspUrl = function( url )
    {
        
rspUrl url;
    };

};


PEEP_Ping.getInstance = function()
{
    if ( !
PEEP_Ping.pingInstance )
    {
        
PEEP_Ping.pingInstance = new PEEP_Ping();
    }

    return 
PEEP_Ping.pingInstance;
}



PEEP.getPing = function()
{
    return 
PEEP_Ping.getInstance();
};

/* Add command example
PEEP.getPing().addCommand('ajaxim', {
    params: {
        p1: 1,
        p2: 3
    },
    before: function()
    {
        this.params.p1 = 4;
    },
    after: function( res )
    {

    }
}).start(5000); // repeatTime ( Number or Object {max: maxRepeatTime, min: minRepeatTime} )
*/




/* Scroll */

PEEP.Scroll = {};

PEEP.Scroll.settings =
{
    
verticalGutter0,
    
horizontalGutter0,
    
showArrowsfalse
};

PEEP.addScroll = function( nodesettings )
{
    
settings settings || {};
    
settings = $.extend({}, PEEP.Scroll.settingssettings);

    var 
$node = $(node);

    
$node.unbind('jsp-initialised').bind('jsp-initialised', function()
    {
        var 
track $node.find('.jspTrack');

        
$node.hover(function()
        {
            
track.fadeIn('fast');
        }, function()
        {
            
track.fadeOut(200);
        });
    });

    if ( !
$node.hasClass('peep_scrollable') )
    {
        
$node.addClass('peep_scrollable');
    }

    
$node.jScrollPane(settings);

    return 
$node.data().jsp;
};

PEEP.removeScroll = function( node )
{
    var 
$node = $(node);
    var 
jsp $node.data('jsp');

    if ( 
jsp )
    {
        
jsp.destroy();
    }
    
//$node.jScrollPaneRemove();
    
$node.removeClass('peep_scrollable');
};

PEEP.updateScroll = function( nodesettings )
{
    var 
jsp = $(node).data('jsp');

    
settings settings || {};
    
settings = $.extend({}, PEEP.Scroll.settingssettings);

    if ( 
jsp )
    {
        
jsp.reinitialise(settings);
    }
};

PEEP.addScrolls = function( context )
{
    
context context || null;

    $(
'.peep_scrollable'context).each(function()
    {
        
PEEP.addScroll(this);
    });
};

PEEP.removeScrolls = function( context )
{
    
context context || null;

    $(
'.peep_scrollable'context).each(function()
    {
        
PEEP.removeScroll(this);
    });
};

PEEP.updateScrolls = function( context )
{
    
context context || null;

    $(
'.peep_scrollable'context).each(function()
    {
        
PEEP.updateScroll(this);
    });
};

PEEP.Utils = (function() {

    return {
        
toggleText: function( nodevaluealternateValue ) {
            var 
$node = $(node), text $node.text();

            if ( !
$node.data("toggle-text") )
                
$node.data("toggle-text"text);

            
alternateValue alternateValue || $node.data("toggle-text");
            
$node.text(text == alternateValue value alternateValue);
        },

        
toggleAttr: function( nodeattributeNamevaluealternateValue ) {
            var 
$node = $(node), attributeValue $node.attr(attributeName);

            if ( !
$node.data("toggle-" attributeName) )
                
$node.data("toggle-" attributeNameattributeValue);

            
alternateValue alternateValue || $node.data("toggle-" attributeName);
            
$node.attr(attributeNameattributeValue == alternateValue value alternateValue);
        }
    };
})();


PEEP.Users null;
PEEP_UsersApi = function( _settings )
{
    var 
_usersApi this;

    var 
_query = function(commandparamscallback) {
        
callback callback || function( ) {
            if ( !
) return;
            if (
r.infoPEEP.info(r.info);
            if (
r.errorPEEP.error(r.error);
        };

        return $.
getJSON(_settings.rsp, {"command"command"params"JSON.stringify(params)}, callback);
    };

    
PEEP.Users this;

    
//Public methods

    
this.deleteUser = function(userIdcallBackshowMessage)
    {
        
showMessage showMessage === false false true;

        var 
redirectUrl null;

        if ( 
typeof callBack == 'string' )
        {
            
redirectUrl callBack;
        }

        var 
floatBox;

        
floatBox PEEP.ajaxFloatBox('BASE_CMP_DeleteUser', [{userIduserIdshowMessage showMessage && redirectUrl}],
        {
            
titlePEEP.getLanguageText('base''delete_user_confirmation_label'),
            
iconClass'peep_ic_add',
            
scope: {
                
deleteCallback: function( )
                {
                    if ( 
r.result == 'error' )
                    {
                        if ( 
r.message )
                        {
                            
PEEP.error(r.message);
                        }

                        return;
                    }

                    if ( 
redirectUrl )
                    {
                        
window.location.href redirectUrl;

                        return;
                    }

                    if ( 
showMessage )
                    {
                        
PEEP.info(r.message);
                    }

                    if ( 
callBack )
                    {
                        
callBack.call(floatBoxr);

                        return;
                    }
                }
            }
        });
    },

    
this.showUsers = function(userIdstitle)
    {
        
title title || PEEP.getLanguageText('base''ajax_floatbox_users_title');

        
PEEP.ajaxFloatBox('BASE_CMP_FloatboxUserList', [userIds], {iconClass"peep_ic_user"titletitlewidth470});
    },

    
this.suspendUser = function( userIdcallbackmessage ) {
        return 
_query("suspend", {"userId"userId'message'message}, callback);
    };

    
this.unSuspendUser = function( userIdcallback ) {
        return 
_query("unsuspend", {"userId"userId}, callback);
    };

    
this.blockUserWithConfirmation = function( userIdconfirmationCallbackcallback ) {
        var 
floatBox PEEP.ajaxFloatBox("BASE_CMP_BlockUser", [userId], {
            
scope: {
                
"confirmCallback": function() {
                    
_usersApi.blockUser(userIdcallback);
                    if ( $.
isFunction(confirmationCallback) ) {
                        
confirmationCallback.call(nulluserId);

                        
floatBox.close();
                    }
                }
            }
        });
    };

    
this.blockUser = function( userIdcallback ) {
        return 
_query("block", {"userId"userId}, callback);
    };

    
this.unBlockUser = function( userIdcallback ) {
        return 
_query("unblock", {"userId"userId}, callback);
    };

    
this.featureUser = function( userIdcallback ) {
        return 
_query("feature", {"userId"userId}, callback);
    };

    
this.unFeatureUser = function( userIdcallback ) {
        return 
_query("unfeature", {"userId"userId}, callback);
    };
};
?>
Онлайн: 1
Реклама