
$(document).ready(function(){
        // Loading portfolio work
        $('[id^=work]').live('click', function(e) {
            e.preventDefault();
            var work_id = $(this).attr('id').substr(4);

            var req = new JsHttpRequest();
            req.onreadystatechange = function() {
                if (req.readyState == 4) {
                    $('#ajax-content').html(req.responseJS.text).removeClass('hidden').show();
                }
            }
            req.open(null, '/portfolio/', true);
            req.send( {
                id: work_id
            } );

            $('#ajax-content').html('<img src="/images/ajax-loader.gif" alt="" id="ajax_loader" />').removeClass('hidden').show();
            $('.content-line').addClass('hidden');
            $('#jobs-big').addClass('hidden');
            $('#subnav').show();
            $('#jobs-small').show();
            $('#agency-content').hide();
            $('#contacts-content').hide();
        });

	$(".scrollable").scrollable({
		size: 1, 
		loop: true, 
		clickable: false,
		hoverClass: 'scrollable-over',
		activeClass: 'scrollable-active'
	}).circular();
	
	// DYNAMIC ELEMENTS
	
	$("#header").find('h1 a').click(function(e){
                e.preventDefault();
		$("#nav .js-link").removeClass('nav-selected');
		$(".dynamic-elem").slideUp("fast");
		if ( $("#jobs-big").attr("class") == "hidden" ) $("#jobs-big").removeClass("hidden"); 
		if ( $(".content-line").attr("class") == "content-line clearfix hidden" ) $(".content-line").removeClass("hidden"); 
		if ( $("#job-view").attr("class") == "clearfix" ) $("#job-view").addClass("hidden"); 
	});
	
	$("#nav .js-link").click(function(e){
            e.preventDefault();
		$(".dynamic-elem").slideUp("fast");
		if ( $("#jobs-big").attr("class") == "hidden" ) $("#jobs-big").removeClass("hidden"); 
		if ( $(".content-line").attr("class") == "content-line clearfix hidden" ) $(".content-line").removeClass("hidden"); 
		if ( $("#job-view").attr("class") == "clearfix" ) $("#job-view").addClass("hidden"); 
	});
	
	$("#jobs").click(function(e){
            e.preventDefault();
		if ( $(this).attr("class") == "js-link nav-selected" ) {
			$("#subnav").slideUp("fast");
		} else {
			$("#subnav").slideDown("fast");
			$("#jobs-small").slideDown("fast");
		}
	});
	
	$("#agency").click(function(e){
                e.preventDefault();
		if ( $(this).attr("class") == "js-link nav-selected" ) $("#agency-content").slideUp("fast"); 
		else $("#agency-content").slideDown("fast");
	});
	
	$("#contacts, .contactsLink").click(function(e){
            
            e.preventDefault(); 
            $('html').scrollTop(0);
            if ( $('#contacts').attr("class") == "js-link nav-selected" ) {
                $("#contacts-content").slideUp("fast");
            }
            else {
                $("#contacts-content").slideDown("fast");
            }
            if ($(this).hasClass('contactsLink')) {
                $(".js-link").removeClass('nav-selected');
                $('#contacts').addClass('nav-selected');
            }
	});
	
	$("#blog, .showBlogLink").click(function(e){
                e.preventDefault();

                var req = new JsHttpRequest();
                req.onreadystatechange = function() {
                    if (req.readyState == 4) {
                        $('#ajax-content').html(req.responseJS.text).removeClass('hidden').show();
                        $('#blog-content').show();
                        initPaging();
                        initCalendar();
                    }
                }
                req.open(null, '/news/', true);
                req.send( {

                } );

                $('#ajax-content').html('<img src="/images/ajax-loader.gif" alt="" id="ajax_loader" />').removeClass('hidden').show();

                $('.content-line').addClass('hidden');
                $('#jobs-big').addClass('hidden');
                $('#subnav').hide();
                $('#jobs-small').hide();
                $('#agency-content').hide();
                $('#contacts-content').hide();
		
	});

        $('#blog-content a[href*=tag]').live('click', function(e) {
            e.preventDefault();
            var tag = $(this).attr('href');
            $('#blog-posts a[href=' + tag + ']').parents('.post').siblings().hide().end().show();
            initPaging();
        });
	
	// NAV CLASSES
	
	$("#nav .js-link").each(function(){
		$(this).click(function(){
			if ( $(this).attr("class") == "js-link nav-selected" ) {
				$(this).removeClass('nav-selected');
			} else {
				$(".js-link").removeClass('nav-selected');
				$(this).addClass('nav-selected');
			}
		});
	});
	
	// SUB-NAV CLASSES
	
	$("#subnav .js-link").each(function(){
		$(this).click(function(e){
                        e.preventDefault();
			if ( $(this).attr("class") == "js-link subnav-selected" ) {
				$(this).removeClass('subnav-selected');
			} else {
				$(".js-link").removeClass('subnav-selected');
				$(this).addClass('subnav-selected');
				$("#jobs-small").fadeIn("slow");
                                var id = $(this).attr('href').substr(1);
                                var toShow = $('#id' + id);
                                toShow.show().siblings().hide();
			}
		});
	});
	
	// GREY VARUSEL'
	
	$("#grey-0").show();
	
	var greyItemsCount = $(".grey-item").size() - 1;
	var i = 0;
	
	$(".grey-scroller").each(function(){
		$(this).click(function(){
					     
			if ( $(this).attr("class") == "grey-scroller grey-scroller-prev" ) i--;
			else if ( $(this).attr("class") == "grey-scroller grey-scroller-next" ) i++;
			
			if ( i > greyItemsCount ) i = 0;
			else if ( i < 0 ) i = greyItemsCount;
			
			$(".grey-item").hide("slow");
			$("#grey-" + i).show("fast");
			
		});
	});
	
	// view job
	$("#jobs-small .scrollable").find("span").each(function(){
		/*$(this).click(function(){
			$("#jobs-small .scrollable").find("span").removeClass("jobs-small-selected");
			$(this).addClass("jobs-small-selected");
			$("#job-view").removeClass("hidden");
			$("#jobs-big").addClass("hidden");
			$(".content-line").addClass("hidden");
		});*/
	});
	
	// post toggle
        $(".posttoggle").live('click', function(){
            
            var $this = $(this);
            var post = $this.prev('.fullpost');

                
            if (post.hasClass('visible') || !post.attr('style')) {
                post.slideDown('slow');
                $this.text("закрыть");
                post.removeClass('visible');
            } else {
                post.slideUp('fast');
                $this.text("раскрыть");
                
                post.addClass('visible');
            }
            

        });

        $('#hostcmsLink').hide();
        $('.contacts-form').submit(function(e) {
            var result = {};
            result['name'] = $('#contacts_name').val();
            result['email'] = $('#contacts_email').val();
            result['phone'] = $('#contacts_phone').val();
            result['text'] = $('#contacts_text').val();


            var req = new JsHttpRequest();
            req.onreadystatechange = function() {
                if (req.readyState == 4) {
                    if (req.responseJS.text) {  // OK
                        $('.errors').hide();
                        $('#success_msg').show('fast');
                        $('.contacts-form input[type=text], .contacts-form textarea').val('');
                    } else {
                        if (req.responseJS.errors) {
                            var errors = req.responseJS.errors;
                            if (!errors.length) {
                                errors = [errors];
                            }
                            $('.errors ul').html('');
                            for (var i = 0; i < errors.length; i++) {
                                $('<li>').text(errors[i]).appendTo($('.errors ul'));
                            }
                             $('.errors').show('fast');
                             $('#success_msg').hide();
                            
                        }
                    }
                }
            }
            req.open(null, '/form_submit/', true);
            req.send(result);

            e.preventDefault();
            return false;
        });
});





/*
 *
 *   Utilities
 *
 **/

var dates = {};
function initCalendar() {
    dates = {};
    $('.post').each(function() {
        var date = $(this).attr('date');
        var month = date.substr(3, 2);
        var year = date.substr(6, 4);
        if (!dates[year])
            dates[year] = new Array();

        var pushed = false;
        for (var i = 0; i < dates[year].length; i++) {
            if (dates[year][i].month == month) {
                dates[year][i].count++;
                pushed = true;
                break;
            }
        }
        if (!pushed) {
            dates[year].push({
                month: month,
                count: 1
            });
        }
    });

    var container = $('#calendar');
    container.append('<h3>Календарь</h3>');
    var ul = $('<ul>');

    var date = new Date();
    var year = date.getFullYear();
    var sortFunction = function(a, b) {
        return a.month > b.month; 
    }
    for (var i = year; i > 2005; i--) {
        if (typeof dates[i] != 'undefined') {
            ul.append(
                $('<li>').addClass('year').append(
                    $('<a>').attr('href', '#')
                        .html('<strong>' + i + '</strong>')
                        .attr('year', i)
                )
            );
            var months = dates[i];
            months.sort(sortFunction);
            for (var j = 0; j < months.length; j++) {
                var textMonth = '';
                switch (months[j].month) {
                    case '01':textMonth = 'Январь';break;
                    case '02':textMonth = 'Февраль';break;
                    case '03':textMonth = 'Март';break;
                    case '04':textMonth = 'Апрель';break;
                    case '05':textMonth = 'Май';break;
                    case '06':textMonth = 'Июнь';break;
                    case '07':textMonth = 'Июль';break;
                    case '08':textMonth = 'Август';break;
                    case '09':textMonth = 'Сентябрь';break;
                    case '10':textMonth = 'Октябрь';break;
                    case '11':textMonth = 'Ноябрь';break;
                    case '12':textMonth = 'Декабрь';break;
                }
                var li = $('<li>').append(
                    $('<a>').attr('href', '#')
                        .text(textMonth + ' [' + months[j].count + ']')
                        .attr('year',i)
                        .attr('month', months[j].month)
                );
                ul.append(li)
            }
        }
    }

    container.append(ul);

    $('a[month]').click(function() {
        var month = $(this).attr('month');
        var year = $(this).attr('year');

        var resultElements = [];
        var yearElements = $('.post[date*=' + year +']"');
        for (var i = 0; i < yearElements.length; i++) {
            var pattern = new RegExp('\.'+ month +'\.');
            if (pattern.test($(yearElements[i]).attr('date'))) {
                resultElements.push($(yearElements[i]));
            }
        }
        $('.post').hide();
        for (var i = 0; i< resultElements.length; i++) {
            resultElements[i].show();
        }
        initPaging();
    });
}

var currentPage = 1;
var pages = 0;
function initPaging() {
    $('.paging').remove();
    var posts = $('#blog-content .post:visible');
    var length = posts.length;
    
    var debug = 'count(posts) = ' + length;
    pages = Math.ceil(length / perPage);
    if (pages > 1) {
        currentPage = 1;
        debug += ' pages = ' + pages;

        var container = $('<div>').addClass('paging');
        var toBegin = $('<a>').click(function(e) {
            e.preventDefault();
            setPage(1);
        }).text('К началу');
        var previousPage = $('<a>').click(function(e) {
            e.preventDefault();
            setPage(currentPage - 1);
        }).text('Предыдущая страница');
        var linkContainer = $('<span>').addClass('pages');

        for (var i = 1; i <= pages; i++) {
            var a = $('<a>').text(i).addClass('page_link' + i);
            linkContainer.append(a);
        }

        var nextPage = $('<a>').click(function(e) {
            e.preventDefault();
            setPage(currentPage + 1);
        }).text('Следующая страница');
        var last = $('<a>').click(function(e) {
            e.preventDefault();
            setPage(pages);
        }).text('В конец');

        container.append(toBegin).append(previousPage).append(linkContainer).append(nextPage).append(last);
        container.insertAfter($('#blog-content .post:visible:last'));
        $('.paging a').attr('href', '#');
        $('.pages a').click(function(e) {
            e.preventDefault();
            var page = $(this).attr('class').substr(9);
            setPage(page);
        })

        var page = 0;
        $('.post').attr('page', '');
        $('.post:visible').each(function(index, elem) {
            if (((index) % perPage) == 0) {
                page ++;
            }
            $(elem).attr('page', page);
        });

        setPage(1);

    }
}

function setPage(pageNum) {
    if (pageNum <= pages && pageNum > 0)  {
        currentPage = pageNum;
        $('.post').hide();
        $('.post[page='+ currentPage +']').show();
        $('.active').removeClass('active');
        $('.page_link' + currentPage).addClass('active').attr('href', '');

    }
}