﻿$.sOn = function(key){
	//if(!$.sOn.key && typeof key == "undefined") console.log('ON true');
	
	//Если стоит ключ и введенный ключ не совпадает посылать
	if($.sOn.key && (typeof key == "undefined" || $.sOn.key != key)){ return  false; /* console.log('ON false'); */ }
	
	//Если стоит ключ и он пришел и раве стоящему - снять ключ
	if($.sOn.key && typeof key == "string" && key == $.sOn.key){ delete $.sOn.key; /* console.log('ON delete key = ' + key); */ }
	
	//Если НЕ стоит ключ то и он пришел то поставить ключ
	else if(!$.sOn.key && typeof key == "string"){ $.sOn.key = key; /* console.log('ON set key = ' + key); */ }
	
	//Включаю ключ
	document.body.onselectstart = null;
	$.sOn.on = true;
	return $;
}
$.sOff = function(key){
	//if(!$.sOn.key && typeof key == "undefined") console.log('OFF true');
	
	//Если стоит ключ и введенный ключ не совпадает посылать
	if($.sOn.key && (typeof key == "undefined" || $.sOn.key != key)){ return  false; /* console.log('OFF false'); */ }
	
	//Если стоит ключ и он пришел и раве стоящему - снять ключ
	if($.sOn.key && typeof key == "string" && key == $.sOn.key){ delete $.sOn.key; /* console.log('OFF delete key = ' + key); */ }
	
	//Если НЕ стоит ключ то и он пришел то поставить ключ
	else if(!$.sOn.key && typeof key == "string"){ $.sOn.key = key;  /* console.log('OFF set key = ' + key); */}
	document.body.onselectstart = function() { return false }
	$.sOn.on = false;
	return $;
}
$.sOn.on = true;
$.sRestart = function(){
	if($.sOn.on) $.sOff($.sOn.key).sOn($.sOn.key);
	else $.sOn($.sOn.key).sOff($.sOn.key);
};
$.fn.selectHover = function(){
	return this.each(function(){ $(this).hover($.sOff, $.sOn); });
};
$.fn.getParamInShow = function(opt){
	var opt = opt || 'height',
		hidden = this.is(':hidden')
		param = hidden ? this.show()[opt]() : this[opt]();
	if(hidden) this.hide();
	return param;
}
/*
 * jQuery autoResize (textarea auto-resizer)
 * @copyright James Padolsey http://james.padolsey.com
 * @version 1.04
 */

    
    $.fn.autoResize = function(options) {
        var settings = $.extend({
            onResize : $.noop,
			afterReize: $.noop,
            animate : true,
            animateDuration : 150,
            animateCallback : $.noop,
            extraSpace : 0,
            limit: 300
        }, options);
        this.filter('textarea').each(function(){
            var textarea = $(this).css({resize:'none','overflow-y':'hidden'}),
                origHeight = textarea.height(),
                clone = (function(){
                    var props = ['height','width','lineHeight','textDecoration','letterSpacing'],
                        propOb = {};
                    $.each(props, function(i, prop){
                        propOb[prop] = textarea.css(prop);
                    });
                    return textarea.clone().removeAttr('id').removeAttr('name').css({
                        position: 'absolute',
                        top: 0,
                        left: -9999
                    }).css(propOb).attr('tabIndex','-1').insertBefore(textarea);
					
                })(),
                lastScrollTop = null,
                updateSize = function() {
					if ($.browser.msie && $.browser.version == 6) {
						var obj = jQuery(this).get(0);
						var m = obj.createTextRange().boundingHeight;
						if(m<origHeight) m=origHeight;
						m+=settings.extraSpace;
						jQuery(this).css("height",m+'px');
					}else{
                    clone.height(0).val($(this).val()).scrollTop(10000);
                    var scrollTop = Math.max(clone.scrollTop(), origHeight) + settings.extraSpace,
                        toChange = $(this).add(clone);
                    if (lastScrollTop === scrollTop) { return; }
                    lastScrollTop = scrollTop;
                    if ( scrollTop >= settings.limit ) {
                        $(this).css('overflow-y','');
                        return;
                    }
                    settings.onResize.call(this);
                   settings.animate && textarea.css('display') === 'block' ?
                        toChange.stop().animate({height:scrollTop}, settings.animateDuration, settings.animateCallback)
                        : toChange.height(scrollTop);
					}
                    settings.afterResize.call(this);
                };
            textarea.unbind('.dynSiz').bind('keyup.dynSiz keydown.dynSiz change.dynSiz', updateSize);
        });
        return this;
        
    };
  
$.fn.placeholderEmulate = function(){
	return this.each(function(){
		var text = $(this).attr('placeholder') || '';
		if(this.value.length === 0 || this.value == $(this).attr('placeholder')) $(this).val(text).addClass('placeholder');
		$(this)
		.removeAttr('placeholder')
		.focus(function(){
			if($(this).hasClass('placeholder')) $(this).val('').removeClass('placeholder');
		})
		.blur(function(){
			if(!$(this).val().length) $(this).val(text).addClass('placeholder');
		}).blur();
	}); 
};

$.fn.active = function(a){
	if(typeof(a)!='undefined'){
		if(a===true  || a===1) a='set';
		if(a===false || a===0) a='del'
	}else var a = "get";
	
	switch(a){
		case "get": return this.hasClass('active');
		case "del": return this.removeClass('active');
		default: return this.addClass('active');
	}
};

/* MISSCLICK */
	var index = 0;
	$.event.special.missclick = {
		setup: function(){
			index++;
			var obj = $(this).data('missIndex', index);
			$('body').bind('click.miss_' + index , function(e){
				$(obj).each(function(){
					if( this != e.target && !$(this).has(e.target).length){
						$(this).trigger('missclick');
					};
				});
			});
		},
		teardown: function(){
			$('body').unbind('click.miss_' + $(this).data('missIndex'));
		}
	}
	$.fn.missclick = function(f){ return this.bind('missclick', f); }





