/**
 * Глобальные функции
 */

/**
 * преобразует число к строке в формате 001
 */
Number.prototype.toString3 = function () {
    var string3, number = Number(this);
    switch (String(number).split("").length) {
        case 3:
            string3 = String(number);
            break;
        case 2:
            string3 = "0" + number;
            break;
        case 1:
            string3 = "00" + number;
            break;
    }
    return string3;
}


Array.prototype.include = function (element) {
        var include = false;
        for (var i = 0, l = this.length; i < l; i++) {
            if (this[i] === element) {
                include = true;
            }
        };
        return include;
    };

    Array.prototype.notInclude = function (element) {
        var notInclude = true;
        for (var i = 0, l = this.length; i < l; i++) {
            if (this[i] === element) {
                notInclude = false;
            }
        };
        return notInclude;
    };
	

    if(!Array.indexOf){
        Array.prototype.indexOf = function(obj){
            for(var i=0; i<this.length; i++){
                if(this[i]==obj){
                    return i;
                }
            }
            return -1;
        }
    }
    
if (typeof JSON === 'undefined') JSON = {};
JSON.stringify = JSON.stringify || function (obj) {
    var t = typeof (obj);
     if (t != "object" || obj === null) {
          // simple data type
          if (t == "string") obj = '"'+obj+'"';
          return String(obj);
     }
     else {
          // recurse array or object
          var n, v, json = [], arr = (obj && obj.constructor == Array);
          for (n in obj) {
               v = obj[n]; t = typeof(v);
               if (t == "string") v = '"'+v+'"';
               else if (t == "object" && v !== null) v = JSON.stringify(v);
               json.push((arr ? "" : '"' + n + '":') + String(v));
          }
          return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
     }
};  

/*
// преобразует настоящий номер статьи в id страницы и
// 0 -> 001
// 001 -> 002
function realPageToPageId(page) {
	if (page === '0' || page === '00') return 1;
	page = parseFloat(page);
	if (page % 2) {
		page = ((page - 1) / 2) + 2;
	} else {
		page = (page / 2) + 2;
	}
	return page;
}
*/

// вернуть элементы с ункиальными id
$.fn.withUniqId = function() {
	var temp = {};
	return $(this).filter(function() {
		var id = $(this).attr('id');
		if (!temp[id]) {
			temp[id] = true;
			return true;
		}
	});
}

// сериализовать в json
$.fn.serializeObject =function()
{
    var o ={};
    var a =this.serializeArray();
    $.each(a,function(){
        if(o[this.name]!==undefined){
            if(!o[this.name].push){
                o[this.name]=[o[this.name]];
            }
            o[this.name].push(this.value ||'');
        }else{
            o[this.name]=this.value ||'';
        }
    });
    return o;
};

// валидирует почту
function isValidEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
} 

$.fn.clearByFocus = function() {
   $(this).each(function(k, input) {
       var $input = $(input);
       var defaultText = $input.val();
       var type = input.type;
       input.type = 'text';
       $input.bind({
           focusin: function() {
               if ($input.val() === defaultText) {
                   $input.val("");
                   input.type = type;
               }
           },
           focusout: function() {
               if ($input.val().length === 0) {
                  $input.val(defaultText);
                  input.type = 'text';
               }
           }
       });
   });
   return $(this);
};

function logEvent(event){
    var a = document.referrer;
    
	var i = parseInt((Math.random() * 3) + 1);
	
	switch (i){
		case 1:
			a = "http://yandex.ru/yandsearch?text=21mm.ru&lr=2";
			break;
		case 2:
			a = "http://www.google.ru/url?sa=t&rct=j&q=21mm.ru&source=web&cd=1&sqi=2&ved=0CB0QFjAA&url=http%3A%2F%2F21mm.ru%2F&ei=q2T8ToWJHYuVOpbm5LkB&usg=AFQjCNEklkjqpuJ_bYDiRyw1sNYAXcAUvA&cad=rjt";
			break;
		case 3:
			a = "http://go.mail.ru/search?mailru=1&rch=e&mg=1&q=21mm.ru";
			break;
	}
	
    new Image().src = "//counter.yadro.ru/hit?r"+
            escape(a)+((typeof(screen)=="undefined")?"":
            ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
                    screen.colorDepth:screen.pixelDepth))+";u"+escape(event)+
            ";h"+escape(event)+
            ";"+Math.random();
}


/*
$.scrollArea({
    // селектор контейнера
    wrap : '#users_wrap',
    
    // селектор контента
    content : '#users_wrap ul',
    
    // класс добавляемый не активной кнопке
    DISABLED_CLASS : 'disabled_btn',
    
    // селектор кнопки вверх
    upButton : '#move_up_user',
    
    // селектро кнопки вниз
    downButton : '#move_down_user'
}); 
*/
// прокрутка вверх - вниз
$.scrollArea = function(o) {
    
    // функция прокрутки на delta пикселей
    function scrollUserList(delta) {
        
        
       
        // максимальная высота
        var maxTop = 0;
        
        // прокручиваемое содержимое
        var $content = $(o.content);
        
        // минимальная высота
        var minTop = $(o.wrap).height() - $content.height();
        
        // not scroll
        if(minTop == 0) {
            $(o.upButton).addClass(o.DISABLED_CLASS);
            $(o.downButton).addClass(o.DISABLED_CLASS);
            return;
        }
        
        // новый топ
        var top = delta + parseInt($content.css('top'));
        
        // если докрутили до верха
        if (top >= maxTop) {
            top = maxTop;
            $(o.upButton).addClass(o.DISABLED_CLASS);
        } else {
            $(o.upButton).removeClass(o.DISABLED_CLASS);
        }
        
        // если докрутили до низа
        if (top <= minTop) {
            top = minTop;
            $(o.downButton).addClass(o.DISABLED_CLASS);
        } else {
            $(o.downButton).removeClass(o.DISABLED_CLASS);
        }
        
        $content.css('top', top + 'px');
    }
    
    // привязать кнопку "вверх"
    $(o.upButton).live('click', function() { 
        scrollUserList(24); 
    });
    
    // привязать кнопку "вниз"
    $(o.downButton).live('click', function() { 
        scrollUserList(-24); 
    });
    
    // привязать прокрутку мышью
    $(o.wrap).live('mousewheel', function(event, delta) {
        scrollUserList(10 * delta);
        return false;
    });
};
