function setCookie (name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function getCookie(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);
}

function add_banner(element, banner_delay) {
    var banners = $(element + ' li');
    var banners_count = banners.length;
    var active = 0;
    var banner_delay = banner_delay || 7000;
    var timerID;

    if (banners_count > 1) {
        $('<div id="banner_nav"><div id="banner_nav_l">&larr;&nbsp;Назад</div><div id="banner_nav_r">Вперед&nbsp;&rarr;</div></div>').insertAfter(element);
    }

    var nextb = $('#banner_nav_r');
    var prevb = $('#banner_nav_l');

    banners.eq(0).css('left', '0px');

    if (banners_count > 1) {
        timerID = setInterval(next, banner_delay);
    }

    nextb.bind('click', next);
    prevb.bind('click', prev);

    function next() {
        clearInterval(timerID);
        timerID = setInterval(next, banner_delay);
        if (!$(element + ' li:animated').length) {
            banners.eq(active++).animate({
                left: '-=230px'
            });

            if (active == banners_count) {
                active = 0;
            }
            banners.eq(active).css('left', '230px').animate({
                left: '-=230px'
            });
        }
    }
    function prev() {
        clearInterval(timerID);
        timerID = setInterval(next, banner_delay);
        if (!$(element + ' li:animated').length) {
            banners.eq(active--).animate({
                left: '+=230px'
            });

            if (active < 0) {
                active = banners_count - 1;
            }
            banners.eq(active).css('left', '-230px').animate({
                left: '+=230px'
            });
        }
    }
}

function add_phones(element) {
    var active_phone = getCookie('active_phone') || 0;
    var phone_list = $(element + ' li');
    
    phone_list.hide();
    phone_list.eq(active_phone).show();

    $('<ul id="cities"></ul>').insertAfter(element);
    $(element + ' .city').each(function() {
        $('#cities').append('<li>'+$(this).text()+'</li>');
    }).remove();

    $('#cities li').eq(active_phone).addClass('active_phone');

    $('#cities li').bind('click', function(){
        target_phone = $(this).index();
        if (target_phone != active_phone && !$('#cities li:animated').length) {
            active_phone = target_phone;
            setCookie('active_phone', active_phone);
            $('#cities li').removeClass('active_phone');
            $(this).addClass('active_phone');

            phone_list.fadeOut(200, function(){
                phone_list.eq(target_phone).fadeIn(400);
            });
        }
    });
}

function add_same_products(element) {
    if ($(element + ' li').length > 3) {
        $('<div id="slider"></div>').insertAfter(element);
        
        $( "#slider" ).slider({
            animate: true
        });
        
        $(element).wrap('<div id="same_products_frame"></div>');

        $("#slider").bind('slide', function(event, ui){
            var cw = 0;
            fw = $("#same_products_frame").outerWidth();
            $(element + " li").each(function() {
                cw = cw + $(this).outerWidth(true);
            });
            p = (fw - cw) * ui.value /100;
            $(element).css('left', p + 'px');
        });
        $('#same_products_frame').append('<div id="gradient_left"></div><div id="gradient_rigth"></div>');
    }
    else {
        $(element).wrap('<div id="same_products_frame"></div>');
    }
    
    var max_height = 0;
    $(element + ' li a').each(function(){
        $(this).append('<p>' + $(this).children('img').attr('alt') + '</p>');
        cur_h = $(this).parent('li').outerHeight();
        if (cur_h > max_height) {
            max_height = cur_h;
        }
    });

    $('#same_products_frame').css('height', max_height + 'px');

}

/**
 * Добавляет в строку поиска текст по умолчанию.
 * @param element       Строка поиска.
 * @param text          Текст строки поиска.
 * @param text_color    Цвет текста.
 */
function search_field(element, text, text_color){
    var sf = $(element);
    text_color = text_color || '#888888';
    text = text || 'Поиск';
    
    sf.attr('value', text).css('color', text_color).bind('focus', function(){
        if ($(this).attr('value') == text) {
            $(this).attr('value', '').css('color', 'black');
        }
    }).bind('blur', function(){
        if ($(this).attr('value') == '') {
            $(this).attr('value', text).css('color', text_color);
        }
    }).parent('form').bind('submit', function(){
        return (sf.attr('value') == text ? false : true);
    });
}

$(function() {

    search_field('#search_art_field', 'Ключевые слова статьи');
    var op = new Operator({headerText:'Наш консультант',delayTime:12000,headerColor:'#f02c2c',headerTextColor:'#ffffff'});
    add_banner('#banners',  7000);
    add_phones('#contacts');
    add_same_products("#same_products");
    search_field('#search_field', 'Найти косметику');
    search_field('#subscribe', 'Введите Ваш e-mail');
});
