// Формирует параметр GET-запроса на основании словаря параметров
NETANGELS.util.escapeList = function(list){
    q = [];
    for (var key in list){
        var val = list[key];
        try{
            q.push(escape(key) + "=" + escape(val));
        }catch(e){
            q.push(escape(key) + "=");
        }
    }
    return q.join("&");
}

// Аналог php-ного htmlspecialchars
NETANGELS.util.htmlspecialchars = function(value){
    return value.replace("&", "&amp;").replace("\"", "&quot;").replace("'", "&amp;").replace("<", "&lt;").replace(">", "&gt;");
}

NETANGELS.util.shortingWord = function(word) {
    if (word.length > 13) {
        word = word.slice(0, 10) + '-' + word.slice(-2)
    } 
    return word;
}

NETANGELS.util.shortingString = function(value){
    return value.split(' ').map(NETANGELS.util.shortingWord).join(' ')
}

// Преобразование строки вида YYYY-MM-DD HH:MM:SS в объект DateTime
NETANGELS.util.strToDatetime = function(value){
    var ret = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/.exec(value);
    if (ret){
        var date = new Date();
        date.setFullYear(ret[1], ret[2]-1, ret[3]);
        date.setHours(ret[4], ret[5], ret[6]);
        return date;
    }
    return null;
}


// Отрезание пробелов
NETANGELS.util.trim = function(value){
    return value.replace(/^\s+|\s+$/g,"");
}


// Преобразование числа (в байтах) 
// в кило, мега или гига
NETANGELS.util.filesizeformat = function(bytes){
    try{
        bytes = parseFloat(bytes)
    }catch(e){
        return "ошибка!"
    }
    if (bytes < 1024){
        return  bytes + " байт" 
    }else if (bytes < 1024 * 1024){
        return (NETANGELS.util.floatformat(bytes / 1024)) + " kb"
    }else if (bytes < 1024 * 1024 * 1024){
        return (NETANGELS.util.floatformat(bytes / (1024 * 1024))) + " Mb"
    }else{
        return (NETANGELS.util.floatformat(bytes / (1024 * 1024 * 1024))) + " Gb"
    }
}

// преобразование числа типа float в строку вида "XX,YY"
NETANGELS.util.floatformat = function(num){
    try{
        num = parseFloat(num)
    }catch(e){
        return "???"
    }
    return parseInt(num) + "," + (parseInt(num*100) - parseInt(num)*100)
}


// Правила транслитерации 
NETANGELS.util.transliterate = function(str){
    var db = {
        "А":"A", "Б":"B", "В":"V", "Г":"G", "Д":"D", "Е":"E","Ё":"Yo", "Ж":"Zh", "З":"Z","И":"I", "Й":"Y", "К":"K",
        "Л":"L", "М":"M", "Н":"N", "О":"O", "П":"P", "Р":"R","С":"S", "Т":"T", "У":"U","Ф":"F", "Х":"H", "Ц":"Ts",
        "Ч":"Ch", "Ш":"Sh", "Щ":"Sh", "Ъ":"", "Ы":"Y", "Ь":"","Э":"E", "Ю":"Yu", "Я":"Ya",
        "а":"a", "б":"b", "в":"v", "г":"g", "д":"d", "е":"e","ё":"yo", "ж":"zh", "з":"z","и":"i", "й":"y", "к":"k",
        "л":"l", "м":"m", "н":"n", "о":"o", "п":"p", "р":"r","с":"s", "т":"t", "у":"u","ф":"f", "х":"kh", "ц":"ts",
        "ч":"ch", "ш":"sh", "щ":"sh", "ъ":"", "ы":"y", "ь":"","э":"e", "ю":"yu", "я":"ya"
    }
    var ret = ""
    for (var i=0; i<str.length; i++){
        if (db[str.charAt(i)] != null){
            ret += db[str.charAt(i)]
        }else{
            ret += str.charAt(i)
        }
    }
    return ret
}


/* =================================================================================================
* Time Since creates a string which friendly tells you the time since the original date
* Based on the original time_since() function by Natalie Downe - http://blog.natbat.co.uk/archive/2003/Jun/14/time_since
*
* Copyright (c) 2004 Mark Wubben - http://neo.dzygn.com/
*
* Usage: date.toTimeSinceString(number nLimit, string sBetween, string sLastBetween)
* nLimit: limit the shown time units (year, month etc). default = 2
==================================================================================================*/
NETANGELS.util.timeSince = function(datetime, nLimit){
    if(!nLimit){ nLimit = 1; }
    sBetween = ", ";
    sLastBetween = " и ";
    var collStructs = new Array(
        {seconds: 60 * 60 * 24 * 365, name: "год"},
        {seconds: 60 * 60 * 24 * 30, name: "мес"},
        // {seconds: 60 * 60 * 24 * 7, name: "неделя"},
        {seconds: 60 * 60 * 24, name: "дней"},
        {seconds: 60 * 60, name: "час"},
        {seconds: 60, name: "мин"},
        {seconds: 1, name: "сек"}
    );
    try{
        var nSecondsRemain = ((new Date).valueOf() - datetime.valueOf()) / 1000;
    }catch(e){
        return "ошибка обработки!";
    }

    if (nSecondsRemain >= 60 * 60 * 24) {
        return datetime.toLocaleString()
    }

    var sReturn = "";
    var nCount = 0;
    var nFloored;

    for(var i = 0; i < collStructs.length && nCount < nLimit; i++){
        nFloored = Math.floor(nSecondsRemain / collStructs[i].seconds);
        if(nFloored > 0){
            if(sReturn.length > 0){
                if(nCount == nLimit - 1 || i == collStructs.length - 1){
                    sReturn += sLastBetween;
                } else if(nCount < nLimit && i < collStructs.length){
                    sReturn += sBetween;
                }
            }
            sReturn += nFloored + "&nbsp;" + collStructs[i].name;
            /*
            if(nFloored > 1){
                sReturn += "s";
            }
            */
            nSecondsRemain -= nFloored * collStructs[i].seconds;
            nCount++;
        }
    }
    if (sReturn == "")
        return "<span title=\"" + datetime.toLocaleString() + "\">только&nbsp;что</span>";
    return "<span title=\"" + datetime.toLocaleString() + "\">" + sReturn + "&nbsp;назад</span>";
}

$(function(){
    if (typeof $.fancybox == "function") {
        $(".fancybox").fancybox({
            titlePosition: 'inside',
            onStart: function(arr, idx, opts) {
                $.fancybox.currentOptions = opts;
            }
        });
    }
});
