/**
 * Класс для управления cookies
 */
Cookies = new Object();
/**
 * Устанавливает значение cookie
 * @param {String} name
 * @param {String} value
 * @param {String} expires возможно использовать инкрементные значения (+1d, +2m ...)
 * @param {String} path
 * @param {String} domain
 * @param {Boolean} secure
 */
Cookies.set = function(name, value, expires, path, domain, secure) {
    if ((expires) && (expires.toString().match(/\+(\d+)(h|d|m|y)/))) {
        var date = new Date();
        var c = parseInt(RegExp.$1);
        var s = RegExp.$2;
        switch (s) {
            case 'y':
                date.setYear(date.getYear() + c);
                break;
            case 'm':
                date.setMonth(date.getMonth() + c);
                break;
            case 'd':
                date.setDate(date.getDate() + c);
                break;
            case 'h':
                date.setHours(date.getHours() + c);
                break;
        }
        expires = date.toGMTString();
    }
    document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

/**
 * Получает значение cookie
 * @param {String} name
 */
Cookies.get = function(name) {
    var cookie = " " + document.cookie;
    var search = " " + name + "=";
    var setStr = null;
    var offset = 0;
    var end = 0;
    if (cookie.length > 0) {
        offset = cookie.indexOf(search);
        if (offset != -1) {
            offset += search.length;
            end = cookie.indexOf(";", offset)
            if (end == -1)
                end = cookie.length;
            setStr = unescape(cookie.substring(offset, end));
        }
    }
    return(setStr);
}


/**
 * Класс для обработки специфических функций браузера
 */
Browser = function() {
    var userAgent = navigator.userAgent.toLowerCase();
    var _ie = /msie/.test(userAgent) && !/opera/.test(userAgent);
    var _old_ie = /MSIE (5\.5|6).+Win/.test(navigator.userAgent);
    var _ie7 = /MSIE 7.+Win/.test(navigator.userAgent);
    var _webkit = /webkit/.test(userAgent);
    return {
        isMSIE: _ie,
        isWebKit: _webkit,
        isIE6: _old_ie,
        isIE7: _ie7
    }
}();


/**
 * Добавим в массив метод indexOf
 */
if (!Array.indexOf) {
    Array.prototype.indexOf = function(searchElement, fromIndex) {
        if (!fromIndex)
            fromIndex = 0;
        for(var i = fromIndex; i < this.length; i ++)
            if (this[i] == searchElement)
                return i;
        return -1;
    }
}

var __trimRegExp = /^(\s|\u00A0)+|(\s|\u00A0)+$/g;
String.prototype.trim = function() {
    return this.replace(__trimRegExp, '');
}


/**
 * pngFix для IE
 *
 */
var __sizingRegExp = /iesizing\-(\w+)/;

function fixPNG(element, sizing, force) {
    if ((Browser.isIE6) || (force)) {
        sizing = sizing || "crop";
        var sizingMatch = __sizingRegExp.exec(element.className)
        if (sizingMatch)
            sizing = sizingMatch[1];
        var url;
        if (element.tagName == "IMG") {
            if (/\.png$/.test(element.src)) {
                url = element.src;
                element.src = "/i/ie/e.gif";
            }
        } else {
            url = element.currentStyle.backgroundImage.match(/url\(["']?(.+\.png).*?["']?\)/i);
            if (url) {
                url = url[1];
                element.runtimeStyle.backgroundImage = "none";
            }
        }
        if (url)
            element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url + "',sizingMethod='" + sizing + "')";
        else
            element.runtimeStyle.filter = "true";
    }
}

