var horoscopes = {};
var pageGall = {};
var pxCommon = {};
var socialGallery = {};
var socialGroups = {};
var fastAuth = {};

var mm_flags = {};
var mm_ahover_id = null;

var docDispatcher = {
  _ui_current_uid: 0,
  _event_listeners: [],
  _initialized: false,
  _initialize: function() {
    if (this._initialized) return;
    this._initialized = true;
    var self = this;

    var handler = function(e) {
      var handlers = self._event_listeners[e.type];
      if (!handlers) return;

      for (var i in handlers) {
        var el = handlers[i][0], callback = handlers[i][1];

        if ((e.type == 'click' || e.type == 'mousedown')) {
          e.outside = true;
          var t = e.target;
          while (t != null) {
            if (t == el) {
              e.outside = false;
              break;
            }
            t = t.parentNode;
          }
        }

        if (callback(e) === false) // run handler
          return false;
      }
    }

    $(document).bind('mousedown', handler);
  },

  getUID: function() {
    return this._ui_current_uid++;
  },
  attachListener: function(el, event, handler) {
    //el = ge(el);
    if (!el || !$.isFunction(handler)) return false;

    this._initialize();
    if (!$.isArray(this._event_listeners[event]))
      this._event_listeners[event] = [];
    this._event_listeners[event].push([el, handler]);
  }
};

// ----------------- START - Main menu hovering & sliding routine ---------------------------------------- // - Main menu hovering & sliding routine ---------------------------------------- //
(function($) {
    $.extend({
        ahover: {
            version: 1.0,
            defaults: {
                toggleSpeed: 75,
                toggleEffect: 'both',
                hoverEffect: null,
                moveSpeed: 250,
                easing: 'swing',
                className: 'ahover'
            },
            effects: {
                'width': {width: 0},
                'height': {height: 0},
                'both': {width: 0, height: 0}
            }
        }
    });

    $.fn.extend({
        ahover: function(options) {
            var options = $.extend({}, $.ahover.defaults, options);
            var effect = (
                (typeof options.toggleEffect == 'string') ?
                $.ahover.effects[options.toggleEffect] : options.toggleEffect
            );

            var parent = this.offsetParent();

            return this.hover(
                function(e) {
                    var over = $(this);
                    mm_ahover_id = over.attr('id');

                    var overSize = {
                        width: over.outerWidth(),
                        height: over.outerHeight()
                    };
                    var overOffset = over.offset();
                    var parentOffset = parent.offset();

                    var under = $('div.' + options.className, parent).stop();
                    var created = (under.length == 0);
                    if (created) {
                        under = $('<div>&nbsp;</div>')
                            .addClass(options.className)
                            .appendTo(parent).css(overSize);
                    }

                    var underOffset = {
                        left: overOffset.left - parentOffset.left -
                            (under.outerWidth() - under.width()) / 2,
                        top: overOffset.top - parentOffset.top -
                            (under.outerHeight() - under.height()) / 2
                    }

                    if (created) {
                        under.css(underOffset).css(effect).animate(overSize, {
                            queue: false,
                            duration: options.toggleSpeed,
                            easing: options.easing
                        });
                    }
                    else {
                        var underCSS = $.extend({}, overSize, underOffset);
                        under.animate(underCSS, {
                            queue: false,
                            duration: options.moveSpeed,
                            easing: options.easing
                        });
                    }
                    if ($.isFunction(options.hoverEffect)) {
                        under.queue(options.hoverEffect);
                    }
                },
                function(e) {
                    var $div = $(this);
                    var mm_id = $div.attr('id').replace('mm_but_', 'mm_sub_');

                    if(mm_id && (mm_flags[mm_id].overbut || mm_flags[mm_id].oversub)) {
                        return false;
                    }
//debugger;
                    $('div.' + options.className, parent).animate(effect, {
                        queue: false,
                        duration: options.toggleSpeed,
                        easing: options.easing,
                        complete: function() { $(this).remove(); }
                    });
                }
            );
        }
    });
})(jQuery);

init_main_menu = function() {
    var mm_expr = "#main-menu";

    // No main menu found.
    if(!$(mm_expr).length) return false;

    if($(mm_expr + ' div.but').length) {
        $(mm_expr + ' div.but').each(function(i, item) {
            mm_flags['mm_sub_' + i] = {
                overbut: false,
                oversub: false
            };
        });

        $(mm_expr + ' div.but').ahover({toggleEffect: 'width', moveSpeed: 150});
    }

    hide_mm_sub = function(mm_id) {
        $('#' + mm_id).eq(0).slideUp(100);

        var remove_ahover = mm_ahover_id.replace('mm_but_', 'mm_sub_') == mm_id ? true : false;

        if($(mm_expr + ' div.ahover').length && remove_ahover) {
            $(mm_expr + ' div.ahover').animate({width: 0}, {
                queue: false,
                duration: 150,
                easing: 'swing',
                complete: function() { $(this).remove(); }
            });
        }
    };

    // No subitems found.
    if(!$(mm_expr + " .but .main-menu-sub").length) return false;

    var $mm_subs = $('<div></div>').css('display', 'block').appendTo(document.body);

    $(mm_expr + " .but .main-menu-sub").each(function(i, item) {
        var $item = $(item);
        var mm_id = 'mm_sub_' + i;
        $item.attr('id', mm_id);
        $item.parents('.but').eq(0).attr('id', 'mm_but_' + i);

        $item.appendTo($mm_subs);

        $item.hover(function() {
            mm_flags[mm_id].oversub = true;
        }, function() {
            mm_flags[mm_id].oversub = false;

            window.setTimeout(function() {
                if(!mm_flags[mm_id].overbut && !mm_flags[mm_id].oversub) {
                    hide_mm_sub(mm_id);
                }
            }, 50);
        });

        $('div', $item).hover(function() {
            $(this).addClass('ah');
        }, function() {
            $(this).removeClass('ah');
        });
    });

    // Menu button hover events.
    $(mm_expr + " .but").hover(function() {
        var $this = $(this);

        if($this.attr('id')) {
            var mm_id = $this.attr('id').replace('mm_but_', 'mm_sub_');

            if($('#' + mm_id).length) {
                mm_flags[mm_id].overbut = true;

                var $sub = $('#' + mm_id).eq(0);

                if($sub.css('display') != 'block') {
                    var pos = pxCommon.absolutePosition($this[0]);
                    var mm_pos = {
                        x: pos.x - 1,
                        y: pos.y + $this.height()
                    };

                    $sub.css({top: mm_pos.y, left: mm_pos.x}).slideDown(100);
                }
            }
        }
    }, function() {
        var $this = $(this);

        if($this.attr('id')) {
            var mm_id = $this.attr('id').replace('mm_but_', 'mm_sub_');

            if($('#' + mm_id).length) {
                mm_flags[mm_id].overbut = false;
                
                window.setTimeout(function() {
                    if(!mm_flags[mm_id].overbut && !mm_flags[mm_id].oversub) {
                        hide_mm_sub(mm_id);
                    }
                }, 50);
            }
        }
    });
};
// ----------------- END - Main menu hovering & sliding routine ---------------------------------------- //



post_load = function() {

    init_main_menu();

    if($("#globals-current-pub").length) {
        var v = jQuery.jsonDecode($("#globals-current-pub").html());

        if(v && v !== undefined) GLOBALS_CURRENT_PUB = v;
    }

    if($("#globals-current-node").length) {
        var v = jQuery.jsonDecode($("#globals-current-node").html());

        if(v && v !== undefined) GLOBALS_CURRENT_NODE = v;
    }

    if($("#globals-current-alias").length) {
        var v = jQuery.jsonDecode($("#globals-current-alias").html());

        if(v && v !== undefined) GLOBALS_CURRENT_ALIAS = v;
    }

    if($("#globals-top-node").length) {
        var v = jQuery.jsonDecode($("#globals-top-node").html());

        if(v && v !== undefined) GLOBALS_TOP_NODE = v;
    }


    var user_body_width = $(document.body).width();

    if(user_body_width) {
//        user_body_width = user_body_width - 9 - 306 - (20 * 2);
        $.cookie('user_body_width', user_body_width, { expires: 7, path: '/' });
    }

};

(function($) {
    $.homeBlockRoller = function(el) {
        var obj = this;

        this.el      = $(el);

        $.extend(this, {
            pnl			: null,
            pnl_id		: null,
            slider		: null,
            page        : 0,
            maxpages    : 1,
            total_pages : 10,
            alias       : '',
            bleft       : null,
            bright      : null,
            item_width  : 645,
            slide_speed : 300,

            load_block  : function(dir) {
                if(dir > 0 && obj.page == obj.maxpages - 1 && obj.maxpages < obj.total_pages) {
                    obj.maxpages++;

                    obj.page += dir;

                    var pre_items = [];
                    for(var i = 0; i < 3; i++) {
                        pre_items[i] = $('<div class="item loading"></div>');
                        obj.slider.append(pre_items[i]);
                    }

                    $.ajax({
                        url         : obj.alias ? appURL + 'index/ajax_home_block2' : appURL + 'index/ajax_home_block',
                        type        : 'POST',
                        dataType    : "json",
                        data        : 'page=' + obj.page + '&pnl_id=' + obj.pnl_id + '&alias=' + obj.alias,
                        success     : function(response) {
                            if(response.success && response.data.length) {
                                if(response.count) {
                                    obj.total_pages = Math.floor(response.count / 3);
                                    if(obj.total_pages > 10) {
                                        obj.total_pages = 10;
                                    }
                                }

                                for(var i = 0; i < response.data.length; i++) {
                                    var x = $(
                                        '<a href="'+ response.data[i].href +'"><img src="'+ response.data[i].img_src +'" /></a>' +
                                        '<div class="rev_mask"></div>' +
                                        '<div class="rev_over">' +
                                            '<div class="term">'+ response.data[i].nodes_link +'</div>' +
                                            '<div class="title"><a href="'+ response.data[i].href +'">'+ response.data[i].title +'</a></div>' +
                                        '</div>');

                                    pre_items[i].append(x).removeClass('loading');
                                }
                            }
                        }
                    });
                } else {
                    obj.page += dir;
                }

                if(obj.page < 0) obj.page = 0;
                if(obj.page >= obj.maxpages) obj.page = obj.maxpages - 1;

                if(obj.page == 0) obj.bleft.addClass('noact');
                else obj.bleft.removeClass('noact');

                if(obj.page == obj.total_pages - 1) obj.bright.addClass('noact');
                else obj.bright.removeClass('noact');

                obj.slider.width(obj.maxpages * obj.item_width);

                obj.slider.animate({ left: (obj.item_width) * obj.page * -1 }, obj.slide_speed);

            }, // eo load_block

            init : function() {
                obj.pnl         = this.el;
                obj.slider      = obj.pnl.find(".slider").eq(0);
                obj.bleft       = obj.pnl.find(".btn-lft").eq(0);
                obj.bright      = obj.pnl.find(".btn-rght").eq(0);
                obj.pnl_id      = obj.pnl.attr('id');
                obj.alias       = obj.pnl.attr('alias');

                obj.bleft.attr('href', 'javascript:{}').click(function() {
                    if($(this).hasClass('noact')) return;

                    obj.load_block(-1);
                });

                obj.bright.attr('href', 'javascript:{}').click(function() {
                    if($(this).hasClass('noact')) return;

                    obj.load_block(1);
                });

                obj.pnl.hover(function() {
                    obj.bleft.css('display', 'block');
                    obj.bright.css('display', 'block');
                }, function() {
                    obj.bleft.css('display', 'none');
                    obj.bright.css('display', 'none');
                });
            } // eo init
        });

        obj.init();
    };

    $.fn.homeBlockRoller = function() {
        if(this.length && this.length > 1) {
            var res = [];
            for(var i = 0; i < this.length; i++) res[i] = new $.homeBlockRoller(this[i]);

            return res;
        } else {
            return new $.homeBlockRoller(this[0]);
        }
	};
})(jQuery);

$(document).ready(function() {
    if($(".pnl-roller").length) $(".pnl-roller").homeBlockRoller();
    if($('.wc-select-city').length) {
        $('.wc-select-city').attr('href', 'javascript:{}').click(function() {
            var pos = pxCommon.absolutePosition($(this)[0]);
            initWeatherSelector(0, pos.x, pos.y + 15);
        });
    }

    if($('.week7 .w-links div').length) {
        $('.week7 .w-links div').hover(function() {
            $('.week7 .w-links div').removeClass('ah');
            $(this).addClass('ah');
        }, function() {
            $('.week7 .w-links div').removeClass('ah');
        });
    }

    if($('.week-full .week').length) {
        $('.week-full .week').mouseleave(function() {
            var $glass = $(this).find('.glass').eq(0);
            $glass.css('top', -100);
        });

        $('.week-full .week .fdays tr').mouseenter(function() {
            var tr = parseInt($(this).attr('trid'));
            var $glass = $(this).parents('.week').eq(0).find('.glass').eq(0);

            $glass.css('top', tr * 37 + 42);
        }).mouseleave(function() {
            var $glass = $(this).parents('.week').eq(0).find('.glass').eq(0);
//            $glass.css('top', -100);
        });
    }

    if($('#hotmenu object').length) {
        var $o = $('#hotmenu object').eq(0);
        $o[0].outerHTML = $o[0].outerHTML;
    }
});

initWeatherSelector = function(type, posx, posy) {
    if(appCfg.weather.hasWeatherSelector) return;

    appCfg.weather.hasWeatherSelector = true;

    if(type === undefined) type = 0;

    var $wcity_box = null;

    var wc = {};

    var alphabet = appCfg.alphabet_rus;
    var empty = appCfg.weather.alphabet_rus_empty;

    var letters = '';
    for(var i = 0; i < alphabet.length; i++) {
        var flag = false;

        for(var s = 0; s < empty.length; s++)
            if(i == empty[s]) flag = true;

        letters += '<div class="wc-tab' + ((i == 0) ? ' wc-sel' : '') + '"><div class="wc-top"></div>' + (flag ? '<span>' + alphabet[i] + '</span>' : '<a wc_letter="' + i + '" href="#">' + alphabet[i] + '</a>') + '</div>';
    }

    wc.sel_body = '' +
        '<div class="wcity-select">' +
            '<div class="wc-top"></div>' +
            '<div class="wc-mid">' +
                '<div class="wc-title">Пожалуйста, выберите город:<a href="#" class="close-but" title="Закрыть"></a></div>' +
                '<div class="hg5"></div>' +
                '<div class="wc-tabs">' +
                    '<div class="wc-bbl"></div>' +
                    '<div>' + letters + '</div>' +
                '</div>' +
                '<div class="cl"></div>' +
                '<div class="wc-body">' +
                    '<table class="wc-city-list" width="100%">' +
                        '<tr><td><div class="empty">Загрузка данных...</div></td></tr>' +
                    '</table>' +
                '</div>' +
                '<div class="wc-bot"></div>' +
//                '<div class="wc-footer">В данный момент выбран город: <strong>Киев</strong></div>' +
            '</div>' +
            '<div class="wc-bot"></div>' +
        '</div>';

    wc.close = function() {
        $wcity_box.remove();
        appCfg.weather.hasWeatherSelector = false;
    }

    wc.initLetters = function() {
        var $wc_tabs = $wcity_box.find('.wc-tabs .wc-tab a');

        if(!$wc_tabs.length) return;

        $wc_tabs.attr('href', 'javascript:{}').click(function() {
            var $a = $(this);
            var letter = parseInt($a.attr('wc_letter'));
            wc.loadList(letter);

            $wcity_box.find('.wc-tabs .wc-tab').removeClass('wc-sel');
            $a.parents('.wc-tab').eq(0).addClass('wc-sel');
        });
    }

    wc.loadList = function(letter) {
        if(letter === undefined || !letter)
            letter = 0;

        $.ajax({
            url             : appURL + 'frweather/getCityList/',
            type            : 'POST',
            dataType        : "json",
            data            : 'letter=' + letter,
            success         : function(response) {
                if(response.err) {
                    pxCommon.showError(response);
                } else {
                    var $wc_list = $wcity_box.find('.wc-city-list tr').eq(0);

                    $wc_list.empty();

                    var list = response.list;
                    
                    for(var i = 0; i < list.length; i++) {
                        var $td = $('<td width="' + (100 / list.length) + '%"></td>');

                        for(var s = 0; s < list[i].length; s++) {
                            var city = list[i][s];
                            $('<div></div>').append($('<a href="http://gigamir.net/weather/' + city.city_id + '"><span>' + city.city_title.substr(0, 1) + '</span>' + city.city_title.substr(1) + '</a>')).appendTo($td);
                        }

                        $td.appendTo($wc_list);
                    }

                }
            },
            error           : function(response) {
                pxCommon.showError(response);
            }
        });
    }

    $wcity_box = $(wc.sel_body).css({display: 'none'}).appendTo(document.body);

    var dw = $(document.body).width();
    var w = $wcity_box.width();

    if(dw < posx + w){
        posx = dw - w - 10;
    }

    $wcity_box.css({display: 'block', left: posx, top: posy});

    $wcity_box.find('a.close-but').eq(0).attr('href', 'javascript:{}').click(function() {
        wc.close();
    });

    wc.initLetters();
    wc.loadList();
};
function slideUp(){

 $(".roller > div").animate(
        {top: $(".roller > div").attr('top')},
        1000, null, function(){
           if (("-"+(($(".roller > div a").length * 20)-20)) == $(".roller > div").attr('top')){
                $(".roller > div").css('top', '0px' );
                $(".roller > div").attr('top', 0);
                slideUp();
                return;
           }
           else
                $(".roller > div").attr('top', $(".roller > div").attr('top') - 20 );
           setTimeout("slideUp()",5000);
       }
      );
    
}

jQuery.extend({
	setHomepage: function(url) {
		if (document.all) {
			document.body.style.behavior = 'url(#default#homepage)';
			document.body.setHomePage(url);
		}
		else if (window.sidebar) {
			if (window.netscape) {
				try {
					netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
				}
				catch (e) {
					var strTemp = '';
					strTemp += "this action was aviod by your browser,";
					strTemp += "if you want to enable,please enter about:config in your address line,";
					strTemp += "and change the value of signed.applets.codebase_principal_support to true";
					alert(strTemp);
				}
			}

			var prefs = Components.classes['@mozilla.org/preferences-service;1']
			.getService(Components.interfaces.nsIPrefBranch);
			prefs.setCharPref('browser.startup.homepage', url);
		}
	}
});

$(document).ready(function() {
    $(".roller > div").attr('top', 0);
    setTimeout("slideUp()",5000);

    $(".pnl-week li").hover(
      function () {
        $(this).animate({ backgroundColor: 'white' }, 150);//addClass("odd");
      },
      function () {
        $(this).animate({ backgroundColor: '#e6e5e5' }, 150);//removeClass("odd");
      }
    );


    if($(".make-hpage").length) {
		$(".make-hpage").eq(0).attr('href', 'javascript:{}').click(function() {
			$.setHomepage('http://gigamir.net');
		});
	};

    if($(".text-size a.minus").length) {
        $(".text-size a.minus").eq(0).attr('href', 'javascript:{}').click(function() { decrease_textsize(); });
    }

    if($(".text-size a.plus").length) {
        $(".text-size a.plus").eq(0).attr('href', 'javascript:{}').click(function() { increase_textsize(); });
    }


    init_gsearch_inputs();

    $('#q').focus(function() {
        if ($('#q').val()=="Интернет поиск")
        $('#q').val("");
    });

    $('#q').blur(function() {
        if ($('#q').val()=="")
        $('#q').val("Интернет поиск");
    });

});



pxCommon.loadBanner = function(placeholder_id, group, node) {
    var placeholder = ($('#' + placeholder_id).length) ? $('#' + placeholder_id).eq(0) : null;

    if(!placeholder) return false;

    if(typeof group == 'undefined') group = '';

    if(typeof node == 'undefined') node = 0;

    if(!node && GLOBALS_CURRENT_NODE) {
        node = GLOBALS_CURRENT_NODE;
    }

    $.ajax({
        url         : appURL + 'frBanner/getCode',
        type        : 'POST',
        dataType    : "json",
        data        : ({
            g           : group,
            n           : node
        }),
        success     : function(response) {
            placeholder.empty();
            placeholder.append(response[0]);
        }
    });
};


pxCommon.checkBanner = function(placeholder, group, delay, node) {
    if(typeof group == 'undefined') group = '';

    if(typeof delay == 'undefined') delay = 100;
    if(typeof node == 'undefined') node = 0;

    if(!node && GLOBALS_CURRENT_NODE) {
        node = GLOBALS_CURRENT_NODE;
    }

    var timer = window.setTimeout(function() {
//                var scripts = placeholder.children('script');
        var objects = placeholder.children('object');

        if(!objects.length) {
            $.ajax({
                url         : appURL + 'frBanner/getCode',
                type        : 'POST',
                dataType    : "json",
                data        : ({
                    g           : group,
                    n           : node
                }),
                success     : function(response) {
                    placeholder.empty();
                    placeholder.append(response[0]);
                }
            });
        }
    }, delay);
};


pxCommon.absolutePosition = function (el) {
    var sLeft = 0, sTop = 0;
    var isDiv = /^div$/i.test(el.tagName);

    if(isDiv && el.scrollLeft) sLeft = el.scrollLeft;

    if(isDiv && el.scrollTop) sTop = el.scrollTop;

    var r = { x: el.offsetLeft - sLeft, y: el.offsetTop - sTop };
    if(el.offsetParent) {
        var tmp = pxCommon.absolutePosition(el.offsetParent);
        r.x += tmp.x;
        r.y += tmp.y;
    }

    return r;
};

init_gsearch_inputs = function() {
    var b = function() {
        if($(this).val() == '') {
            $(this).addClass('cse-search-input-wm');
        }
    };

    $(".cse-search-input").each(function() {
        $(this).unbind().focus(function() {
            $(this).removeClass('cse-search-input-wm');
        }).blur(b);

        if($(this).val() == '') {
            $(this).addClass('cse-search-input-wm');
        }
    });

    $("form.cse-search-box").submit(function() {
        var q = $(this).find("input.cse-search-input").eq(0);
        //q.val('site:gigamir.net ' + q.val());
        var t = q.val();
        if (t=="Интернет поиск" || t=="") { return false; }
        else { return true; }
    });
};


decrease_textsize = function() {
    var mn = 10;
    var mx = 20;

    if($(".pub-body-text").length) {
        var cc = parseInt($(".pub-body-text").css('font-size'));
        if(cc - 1 >= mn) $(".pub-body-text").css('font-size', cc - 1);
    }
};

increase_textsize = function() {
    var mn = 10;
    var mx = 20;

    if($(".pub-body-text").length) {
        var cc = parseInt($(".pub-body-text").css('font-size'));
        if(cc + 1 <= mx) $(".pub-body-text").css('font-size', cc + 1);
    }
}

check_bigimg_size = function() {

	 if($(".content-pub .big-img img").length) 
	 {
        var $img = $(".content-pub .big-img img").eq(0);
		//debugger;

        var img = new Image();
        img.src = $img.attr('src');
		
		
		
        img.onLoad = calc_size_func($img, img);
    }
}

calc_size_func = function(n, img) {
	//debugger;
	
	if(img.complete) 
	{
		
		if(img.width && img.height) 
		{
			n.parents('.content-pub .big-img').eq(0).css({width: img.width + 4, height: img.height + 4});
            n.parents('.content-pub .big-img').find('.bpnl').eq(0).css({width: img.width});
			n.parents('.content-pub .big-img').find('.bpnl_2').eq(0).css({width: img.width});
		}
	} else {
		window.setTimeout(function() { calc_size_func(n, img); }, 100);
	}
};

//----------------
if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length >>> 0;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}

pxUpload = {
	frame : function(c) {
		var n = 'f' + Math.floor(Math.random() * 99999);
		var d = document.createElement('DIV');
        d.setAttribute('id', 'div-' + n);

		d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="pxUpload.loaded(\''+n+'\')"></iframe>';
		document.body.appendChild(d);

		var i = document.getElementById(n);
		if (c && typeof(c.onComplete) == 'function') {
			i.onComplete = c.onComplete;
		}

		return n;
	},

	form : function(f, name) {
		f.setAttribute('target', name);
	},

	submit : function(f, c, submit) {
		pxUpload.form(f, pxUpload.frame(c));
        if(submit) f.submit();

		if (c && typeof(c.onStart) == 'function') {
			return c.onStart();
		} else {
			return true;
		}
	},

	loaded : function(id) {
		var i = document.getElementById(id);

		if (i.contentDocument) {
			var d = i.contentDocument;
		} else if (i.contentWindow) {
			var d = i.contentWindow.document;
		} else {
			var d = window.frames[id].document;
		}

		if (d.location.href == "about:blank") {
			return;
		}

		if (typeof(i.onComplete) == 'function') {
			i.onComplete(d.body.innerHTML);
            window.setTimeout(function() { pxUpload.clean(id); }, 1000);
		}
	},

    clean : function(id) {
        if($("#div-" + id).length) $("#div-" + id).remove();
        if($("#div2-" + id).length) {
            $("#div2-" + id).remove();
        }
    },

    upload : function(input, options) {
        var $clone = input.clone();

        input.parents().eq(0).append($clone);

        var $frm = $('<form enctype="multipart/form-data" method="post"></form>').attr('action', options.url);
        var $div = $('<div style="display:none;"></div>').append($frm);

        $frm.append(input);

        $div.appendTo(document.body);

        var frame = pxUpload.frame({'onComplete' : options.success});
        $div.attr('id', 'div2-' + frame);

        pxUpload.form($frm[0], frame);
        $frm[0].submit();
    }
}

$.fn.fireEvent = function(eventType) {
    return this.each(function() {
        if (document.createEvent) {
            var event = document.createEvent("HTMLEvents");
            event.initEvent(eventType, true, true);
            return !this.dispatchEvent(event);
        } else {
            var event = document.createEventObject();
            return this.fireEvent("on" + eventType, event)
        }
    });
};

pxCommon.is_img_loaded = function($img, callback) {
    var img = new Image();
    img.src = $img.attr('src');

    window.setTimeout(function() { pxCommon.check_img_status(img, callback); }, 100);
}

pxCommon.check_img_status = function(img, callback) {
	if(img.complete) {
		if(img.width && img.height) {
            callback(img);
		}
	} else {
		window.setTimeout(function() { pxCommon.check_img_status(img, callback); }, 100);
	}
};

pxCommon.showError = function(response_obj) {
    var msg = '';

    if(response_obj === undefined) {
        alert("Неправильный ответ сервера.");
        return false;
    }

    if(typeof(response_obj) == 'string') {
        msg = response_obj;
    } else {
        if(response_obj.err !== undefined) {
            switch(typeof(response_obj.err)) {
                case 'object':
                    for(var i = 0; i < response_obj.err.length; i++) {
                        msg += response_obj.err[i].msg + "\n";
                    }

                    break;

                case 'string':
                    msg = response_obj.err;
                    break;
            }
        }
    }

    if(!msg) {
        alert("Неправильный ответ сервера.");
        return false;
    }

    alert(msg);
    return true;
};

jQuery.fn.ajaxOverlay = function() {
  return this.each(function(){
	obj = $(this);
  	obj.css({position:'relative'})
	
	obj.ajaxStart(function(){
		obj = $(this);
		overlay = $('<div class="ajax-panel-overlay"><img style="position: absolute; top: 50%; left: 35%; height: 18px;" src="/templates/default/images/ajax-loader.gif"></div>').css({position: 'absolute', backgroundColor: 'gray', opacity: '0.8', top:0, left:0, width: obj.width(), height: obj.height()});
		obj.append(overlay);
	})
	.ajaxComplete(function(){
		$('.ajax-panel-overlay', $(this)).remove();
	});
	
	
  });
};

jQuery.fn.overlayShow = function(cls) {
    return this.each(function() {
        var obj = $(this);
        if($('.ajax-panel-overlay', $(this)).length) return;

        obj.css({position:'relative'});

        var h = obj.height();
        h += parseInt(obj.css('padding-top'));
        h += parseInt(obj.css('padding-bottom'));

        var w = obj.width();
        w += parseInt(obj.css('padding-left'));
        w += parseInt(obj.css('padding-right'));
        
        var overlay = $('<div class="ajax-panel-overlay"></div>').css({ opacity: '0.0', width: w, height: h});

        if(cls !== undefined) overlay.addClass(cls);

        obj.append(overlay);
        overlay.animate({ opacity: '0.9' }, 400);
    });
};

jQuery.fn.overlayHide = function() {
    return this.each(function() {
        $('.ajax-panel-overlay', $(this)).remove();
    });
};


function chHumor(c){
    $('.panel.pnl-humor .content').load('/frcontent/ajaxHumorBlock/type/'+c);
}

function showErrorSys(err)
{
    if(debugMode)
    {
        //document.write(err.responseText);
        alert(err.responseText);
    }
    else
    {
       //document.write(err.responseText);
       alert('Произошла критическая ошибка');
    }
    //system
    //user
}

function showErrorDefault(err) {
    var msg = '';

    for(var i=0; i < err.length; i++) {
        msg += err[i].msg + "\n";
    }
    alert(msg);
}



fastAuth.showAuthDialog = function(redir_url){
    if(redir_url===undefined){
       redir_url = window.location.toString();
    }

    $.ajax({
         url:appURL+'frauth/viewFastLoginForm/',
         type:'POST',
         dataType: "json",
         data:'redir_url='+$.toJSON(redir_url),
         success: function(response) {

            if(!response.success){ pxCommon.showError(response); }
            else{
                $('#TB_ajaxContent').attr("style", "width: 300px; height: 175px; background-color:#E1E1E1;");
                $('#TB_ajaxContent').empty();
                $('#TB_ajaxContent').append(response.template_content);
            }
        },//end success
        error: function(response) { pxCommon.showError(response); }
     });  
}


fastAuth.login = function(redir_url){
    var options = {
        //target:     '#divToUpdate',
        url:        appURL+'frauth/receiveauthorisedata/',
        dataType: "json",
        success:    function(response)
		{
                if(response.err)
                {
                    fastAuth.showErrRegForm(response.err);
                }
                else if(response.auth_ok == 1)
                {
                    fastAuth.successLoginForm(redir_url);
                }
        },//end success
        error: function(response) { pxCommon.showError(response);}
    };
    $('#loginform').ajaxForm(options);
}

fastAuth.showErrRegForm = function(err){
    var msg = '';
	var field_name = '';

	$("#user_email").removeClass("field-err");
	$("#user_pswd").removeClass("field-err");

	for(var i=0; i < err.length; i++)
    {
        msg += err[i].msg + "\n";

		field_name = err[i].name;
		$("#"+field_name).addClass("field-err");
    }
    alert(msg);
}

fastAuth.successLoginForm = function(redir_url){
    alert('Авторизация прошла успешно.');
    window.location = redir_url;
}