/* Разработано: Захаренков Михаил (Michael.zahar@gmail.com) */

var ourSite = 'http://' + location.hostname;
var photoGallery = '/index/photo-gallery/';
var isIE6 = $.browser.msie && $.browser.version < 7;
var isIE7 = $.browser.msie && $.browser.version < 8;

function centerFly(obj) {
    obj.css({'display': 'block', 'visibility': 'hidden'});
    var width = obj.width();
    var height = obj.height();
    obj.css({'position': 'absolute', 'top': '50%', 'left': '50%', 'margin': -height/2 + 'px 0 0 ' + -width/2 + 'px'});
    if ((obj.position().top - height/2) < 50) obj.css({'top': '50px', 'margin-top': 0});
    obj.css({'display': 'none', 'visibility': 'visible'});
}
function showFly(obj, mod) {
    if (mod) {
	$('#key-visuals_').hide();
    }
    $('#shadow-bg').css({display: 'block', opacity: 0}).animate({opacity: .5});
    centerFly(obj);
    obj.show();
}
function hideFly(obj, mod) {
    if (mod) {
	$('#key-visuals_').show();
    }
    $('#shadow-bg').animate({opacity: 0}, {complete: function() {$('#shadow-bg').hide()}});
    obj.hide();
}
function checkHeight(container, panel, dealersKey) {
    var height = container.height();
    var containerAddHeight = 20;
    if (dealersKey) containerAddHeight = 20;
    container.add(panel).css('height', 'auto');
    var realHeight = container.height();
    if (realHeight > height) {
	container.css('height', height + 'px');
	panel.css('height', (height - 20) + 'px');
    } else {
	container.css('height', (realHeight + containerAddHeight) + 'px');
	panel.css('height', (realHeight + containerAddHeight) + 'px');
    }
}
var About = function() {
    $(function() {
	var scrollPane = $('.scroll-pane');
	var scrollContent = $('.scroll-content');
	var scrollbar = $(".scroll-bar").slider({
	    slide: function(e, ui){
		if( scrollContent.width() > scrollPane.width() ){scrollContent.css('margin-left', Math.round( ui.value / 100 * ( scrollPane.width() - scrollContent.width() )) + 'px');}
		else {scrollContent.css('margin-left', 0);}
	    },
	    stop: function() {
		var obj = $('#about div.scroll-content');
		var left = parseInt(obj.css('margin-left'));
		var steps = Math.abs(Math.round(left / 480));
		var nLeft = 0;
		nLeft = (steps == 0) ? 0 : -steps * 480;
		obj.animate({'margin-left': nLeft + 'px'});
		var k = 960 / obj.width();
		var handlerLeft = Math.abs(nLeft * k);
		if (handlerLeft > 680) handlerLeft = 682;
		$('#about a.ui-slider-handle').css('left', handlerLeft + 'px');
	    }
	});
	var handleHelper = scrollbar.find('.ui-slider-handle').mousedown(function(){
	    scrollbar.width( handleHelper.width() );
	}).mouseup(function(){
	    scrollbar.width( '960px' );
	}).append('<span class="ui-icon ui-icon-grip-dotted-vertical"></span>').wrap('<div class="ui-handle-helper-parent"></div>').parent();

	scrollPane.css('overflow','hidden');

	function sizeScrollbar(){
	    var remainder = scrollContent.width() - scrollPane.width();
	    var proportion = remainder / scrollContent.width();
	    var handleSize = scrollPane.width() - (proportion * scrollPane.width());
	    var _handleSize = handleSize;
	    if (isIE6) _handleSize = 0;
	    scrollbar.find('.ui-slider-handle').css({
		width: handleSize,
		'margin-left': -_handleSize/2
	    });
	    handleHelper.width('').width( scrollbar.width() - handleSize);
	}

	function resetValue(){
	    var remainder = scrollPane.width() - scrollContent.width();
	    var leftVal = scrollContent.css('margin-left') == 'auto' ? 0 : parseInt(scrollContent.css('margin-left'));
	    var percentage = Math.round(leftVal / remainder * 100);
	    scrollbar.slider("value", percentage);
	    if (isIE6) $('#about .ui-slider-handle').css('margin-left', 0);
	}

	function reflowContent(){
	    var showing = scrollContent.width() + parseInt( scrollContent.css('margin-left') );
	    var gap = scrollPane.width() - showing;
	    if(gap > 0){
		scrollContent.css('margin-left', parseInt( scrollContent.css('margin-left') ) + gap);
	    }
	    if (isIE6) $('#about .ui-slider-handle').css('margin-left', 0);
	}

	$(window).resize(function(){
	    resetValue();
	    sizeScrollbar();
	    reflowContent();
	});

	$('#about .ui-handle-helper-parent').css('left', '-4px');
	$('#about a.big-point').click(function() {
	    var obj = $('#about div.scroll-content');
	    var left = parseInt(obj.css('margin-left'));
	    if ((left - 480) >= (960 - obj.width())) {
		obj.animate({'margin-left': (left - 480) + 'px'});
		var k = 960 / obj.width();
		var handlerLeft = Math.abs((left - 480) * k);
		if (handlerLeft > 680) handlerLeft = 682;
		$('#about a.ui-slider-handle').css('left', handlerLeft + 'px');
	    }
	});
	setTimeout(sizeScrollbar,10);
	if (isIE6) $('#about .ui-slider-handle').css('margin-left', 0);
	function initFeedBack() {
	    $('#feed-back a.close').click(function() {
		$('#feed-back').hide();
	    });
	    $('#about a.show-manifest').click(function() {
		$('#feed-back').show();
	    });
	}
	initFeedBack();
    });
}
var Form = (function() {
    function findForm(oField, depth) {
	depth = depth || 5;
	var oElement = oField[0];
	var i = 0;
	while(oElement && oElement.tagName.toLowerCase() != 'form' && i < depth) {
	    oElement = oElement.parentNode;
	    i++;
	}
	if (oElement.tagName.toLowerCase() == 'form') {
	    return oElement;
	} else {
	    return false;
	}
    }
    function checkMail(oField) {
	if (oField.hasClass('additional')) {
	    return true;
	} else {
	    return isValidEmail(oField.val());
	}
    }
    function isValidEmail(email) {
	re = /^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i;
	return re.test(email);
    }
    function checkField(oField, error) {
        var key = true;
        if ($.trim(oField.val()) == '') key = false;
	if (oField.attr('type') == 'checkbox' && oField.attr('must') == 'yes' && !oField.attr('checked')) key = false;
	if (oField.hasClass('email-check') && !checkMail(oField)) key = false;
	if (error && !key) {
	    oField.addClass('invalid');
	    if (oField.attr('error-text') && oField.attr('error-text') != '') {
		$(findForm(oField)).find('p.message').removeClass('success loading').addClass('error').show().html('<i></i>' + oField.attr('error-text'));
	    }
	} else {
	    if (error) oField.removeClass('invalid');
	}
        return key;
    }
    function checkForm(oForm, error) {
        var key = true;
        oForm.find('input, textarea').not('[type=hidden]').not(':button').not('.additional').each(function() {
            if (!checkField($(this), error)) key = false;
        });
        return key;
    }
    function initForm(oForm, successAction, error) {
        oForm.ajaxForm({
            dataType: 'json',
            beforeSubmit: function() {
		return beforeSubmit(oForm, error);
            },
            success: function(data, status) {
		successSubmit(data, status, oForm, successAction);
            },
            error: function(XHR) {
                var oMessage = oForm.find('p.message');
                var submitButton = (oForm.find('input[type=submit]').size() > 0 ) ? oForm.find('input[type=submit]') : oForm.find('.submit');
                submitButton.show();
                oMessage.removeClass('success loading').addClass('error').show().html('<i></i>' + XHR.responseText);
            }
        });
    }
    function beforeSubmit(oForm, error) {
        var oMessage = oForm.find('p.message');
        var submitButton = (oForm.find('input[type=submit]').size() > 0 ) ? oForm.find('input[type=submit]') : oForm.find('.submit');
        var isComplete = checkForm(oForm, error);
        if (!isComplete) {
            oMessage.removeClass('success loading').addClass('error').show().html('<i></i>Заполнены не все поля');
            return false;
        } else {
            submitButton.hide();
            oMessage.removeClass('success error').addClass('loading').show().html('<i></i>' + oMessage.attr('text-loading'));
            return true;
        }
    }
    function successSubmit(data, status, oForm, action) {
        var oMessage = oForm.find('p.message');
	var submitButton = (oForm.find('input[type=submit]').size() > 0 ) ? oForm.find('input[type=submit]') : oForm.find('.submit');
        submitButton.show();
        if (data && data.code == 200) {
            oMessage.removeClass('error loading').addClass('success').show().html('<i></i>' + oMessage.attr('text-success'));
            if (action) action(data);
        } else if (data) {
	    if ($('#cabinet').size() > 0 && $('#cabinet').hasClass('code')) {
		oMessage.removeClass('success loading').addClass('error').show().html('<i></i>' + data.error + '<br><a href="#" class="show-error-form" style="color: #000;">Задать вопрос</a>');
	    } else {
		oMessage.removeClass('success loading').addClass('error').show().html('<i></i>' + data.error);
	    }
	    if (action) action(data);
        }
    }
return {
    checkField: function(oField, error) {
        checkField(oField, error);
    },
    checkForm: function(oForm, error) {
        return checkForm(oForm, error);
    },
    initForm: function(oForm, successAction, error) {
        initForm(oForm, successAction, error);
    },
    initCheckForm: function(oForm, error, checkAll, fSuccess, fError) {
	oForm.find('input[type=text], textarea').bind('change blur keyup keydown keypress', function() {
	    checkField($(this), error);
	    if (checkAll) {
		(Form.checkForm(oForm)) ? fSuccess() : fError();
	    }
	});
    },
    isValidEmail: isValidEmail
}
})();

var Gallery = (function() {
    var gallery = null;
    var form = null;
    var previous = null;
    var next = null;
    var timer = 0;
    var page = 1;
    var pages = 1;
    var curImg = null;
    function initProvider() {
        $('#get-photos-page').val(1);
        Form.initForm(
            form,
            function(data) {
                draw(data);
            },
            true
        );
    }
    function initAction() {
	function checkRepeatViewButton(obj) {
	    (obj.hasClass('first')) ? $('#photo-carrier').find('a.previous').hide() : $('#photo-carrier').find('a.previous').show();
	    (obj.hasClass('last')) ? $('#photo-carrier').find('a.next').hide() : $('#photo-carrier').find('a.next').show();
	}
	var timer = 0;
        previous.click(function() {
            if (!previous.hasClass('previous-disabled')) {
                $('#get-photos-page').val(--page);
                form.submit();
            }
            return false;
        });
        next.click(function() {
        if (!next.hasClass('next-disabled')) {
                $('#get-photos-page').val(++page);
                form.submit();
            }
            return false;
        });
	gallery.delegate('img.small', 'mouseover', function() {
	    $('#photo-gallery div.preview').show().find('div').html('<img src="' + $(this).attr('bigphoto') + '" alt="">');
	    $(this).parent().append($('#photo-gallery div.preview'));
	    clearTimeout(timer);
	    timer = 0;
	    curImg = $(this);
	});
	$('#photo-gallery div.preview').bind('mouseover', function() {
	    clearTimeout(timer);
	    timer = 0;
	}).click(function() {
	    $(this).hide();
	    $('#photo-carrier div.photo-container').html('');
	    $('#photo-carrier div.photo-container').append($(this).find('div img'));
	    $('#photo-carrier').show();
	    checkRepeatViewButton(curImg);
	});
	$('#photo-carrier a.close').click(function() {
	    $('#photo-carrier').hide();
	});
	$('#photo-carrier a.next').click(function() {
	    if (!curImg.hasClass('last')) {
		curImg = curImg.parent().next().find('img');
		$('#photo-carrier img').not('.loading').remove();
		$('#photo-carrier div.photo-container').html('<img src="' + curImg.attr('bigphoto') + '" alt="">');
	    }
	    checkRepeatViewButton(curImg);
	    return false;
	});
	$('#photo-carrier a.previous').click(function() {
	    if (!curImg.hasClass('first')) {
		curImg = curImg.parent().prev().find('img');
		$('#photo-carrier img').not('.loading').remove();
		$('#photo-carrier div.photo-container').html('<img src="' + curImg.attr('bigphoto') + '" alt="">');
	    }
	    checkRepeatViewButton(curImg);
	    return false;
	});
	$('#photo-carrier input').click(function() {
	    $('#make-title-photo_id').val(curImg.attr('photoid'));
	    $('#find-photo-next').removeClass('button-next-nbg').addClass('button-next');
	    $('#make-title div.photo-container').html('<img src="' + curImg.attr('bigphoto') + '" alt="">');
	    $('#photo-carrier').hide();
	    $('#find-photo-page-message').hide();

	    $('#cabinet').attr('class', 'content make-title');
	    $('#competition-menu').removeClass('step1 step2').addClass('step3');
	});
	$('#photo-gallery').bind('mouseout', function() {
	    timer = setTimeout(function() {
		$('#photo-gallery div.preview').hide();
	    }, 500);
	});
    }
    function getData() {
        clearTimeout(timer);
        timer = setTimeout(function() {
            form.submit();
        }, 1000);
    }
    function clear() {
	$('#photo-gallery div.carrier').before($('#photo-gallery div.preview'));
        gallery.html('');
    }
    function setButtons(nPage, nPages) {
	var i = 1;
        page = parseInt(nPage) || 1;
	if (page < 1) page = 1
        pages = parseInt(nPages) || 1;
	if (pages < 1) pages = 1
        var isAllDisabled = (page == 1 && pages == 1);
        var isAllEnabled = (page != 1 && pages != page);
        var isOnlyNext = (page == 1 && pages != page);
        var isOnlyPrevious = (page != 1 && pages == page);
        if (isAllDisabled) {
            previous.removeClass('previous').addClass('previous-disabled');
            next.removeClass('next').addClass('next-disabled');
        } else if (isAllEnabled) {
            previous.removeClass('previous-disabled').addClass('previous');
            next.removeClass('next-disabled').addClass('next');
        } else if (isOnlyNext) {
            previous.removeClass('previous').addClass('previous-disabled');
            next.removeClass('next-disabled').addClass('next');
        } else if (isOnlyPrevious) {
            previous.removeClass('previous-disabled').addClass('previous');
            next.removeClass('next').addClass('next-disabled');
        }
    }
    function fill(items) {
	clear();
        var str = '';
        var count = (items.length <= 36) ? items.length : 36;
        for (var i = 0; i < count; i++) {
            gallery.append('<div><img src="' + items[i][0] + '" alt="" photoid="' + items[i][2] + '" bigphoto="' + items[i][1] + '" class="small"></div>');
        }
	gallery.find('img:first').addClass('first');
	gallery.find('img:last').addClass('last');
    }
    function draw(data) {
        if (data.items && data.items.length > 0) {
            fill(data.items);
            setButtons(data.doc.page, data.doc.pages);
        } else {
	    clear();
	    gallery.html('<p class="empty">Ничего не найдено</p>');
	    setButtons(1, 1);
        }
    }
return {
    init: function() {
        form = $('#find-photo form');
        gallery = $('#photo-gallery .carrier div');
        previous = $('#photo-gallery a.pointer:first');
        next = $('#photo-gallery a.pointer:last');
        initProvider();
        initAction();
    },
    getData: function() {
        getData();
    }
}})();

var Cabinet = (function() {
    var userCardData = null;
    function initMakeTitle() {
	var oForm = $('#make-title form');
	var message = $('#make-title p.message');
	$('#coordinates').val('250:150');
	function check(key) {
	    var kkey = Form.checkForm(oForm, true);
	    if ($('#make-title textarea').val() == 'Размер Renault Fluence имеет значение, потому что...') {
		kkey = false;
	    }
	    if (kkey) {
		$('#finish-button').removeClass('button-next-nbg').addClass('button-next');
		message.hide();
		return true;
	    } else {
		$('#finish-button').removeClass('button-next').addClass('button-next-nbg');
		if ($('#make-title input[type=checkbox]').attr('checked')) {
		    message.removeClass('success loading').addClass('error').show().html('<i></i>Заполнены не все поля');
		} else {
		    message.removeClass('success loading').addClass('error').show().html('<i></i>Для участия в конкурсе вы должны согласиться с правилами');
		}
		return false;
	    }
	    return kkey;
	}

        $('#make-title input.previous').click(function() {
	    $('#competition-menu').removeClass('step1 step3').addClass('step2');
            $('#cabinet').attr('class', 'content find-photo');
        });
	$('#make-title .baloon').css('z-index', '300').draggable({
	    containment: '#make-title div.photo-container',
	    scroll: false,
	    stop: function() {
		$('#coordinates').val($('#make-title .baloon').position().left + ':' + $('#make-title .baloon').position().top);
	    }
	});
	$('#make-title input[type=checkbox], #make-title label[for=rules]').click(function() {
	    check(true);
	});
	$('#make-title textarea').text('Размер Renault Fluence имеет значение, потому что...');
	$('#make-title textarea').click(function() {
	    if ($(this).val() == 'Размер Renault Fluence имеет значение, потому что...') {
		$(this).val('');
	    }
	});
	$('#make-title textarea').bind('blur', function() {
	    if ($.trim($(this).val()) == '') $(this).val('Размер Renault Fluence имеет значение, потому что...');
	});
	$('#make-title textarea').bind('change blur keyup keydown keypress', function() {
	    if ($(this).val().length > 130) {
		$(this).val($(this).val().substr(0,130));
	    }
	});
	$('#comment').bind('change blur keypress', function() {
	    check();
	});
	$('#finish-button').click(function() {
	    if (check(true)) oForm.submit();
	});
	Form.initForm(
            oForm,
            function(data) {
		showActiveUserCard(data.user);
            },
            true
        );
    }
    function initFindPhoto() {
        function initSlider() {
            $('#find-photo div.slider').each(function() {
                var oField = $(this);
                var oFieldMin = $('#time_min');
                var oFieldMax = $('#time_max');
                oField.slider({
                    range: true,
                    min: oField.attr('min'),
                    max: oField.attr('max'),
                    values: [oField.attr('min') - 0, oField.attr('max') - 0],
                    slide: function(event, ui) {
                        oFieldMax.val(ui.values[0]);
                        oFieldMax.val(ui.values[1]);
                        oField.slider().find('a:first').html('<span>' + ui.values[0] + '</span>');
                        oField.slider().find('a:last').html('<span>' + ui.values[1] + '</span>');
                        Gallery.getData();
                    }
                });
		oFieldMin.val(oField.attr('min'));
		oFieldMax.val(oField.attr('max'));
                oField.slider().find('a:first').html('<span>' + oField.attr('min') + '</span>');
                oField.slider().find('a:last').html('<span>' + oField.attr('max') + '</span>');
            });
        }
        Gallery.init();
        initSlider();
        $('#find-photo input.button-next-nbg').click(function() {
	    if ($('#make-title-photo_id').val() != '') {
		$('#cabinet').attr('class', 'content make-title');
		$('#competition-menu').removeClass('step1 step2').addClass('step3');
		$('#find-photo-page-message').hide();
	    } else {
		$('#find-photo-page-message').removeClass('loading success').addClass('error').show().html('<i></i>Не выбрано фото');
	    }
        });
        $('#find-photo form').find('input, select').bind('change', function() {
            Gallery.getData();
        });
	$('#show-all-dealers-for-city').click(function() {
	    $('#find-photo form').append('<input type="hidden" name="reset_dealer_id" value="1">');
	    Gallery.getData();
	    return false;
	});
    }
    function showPhotoFind() {
        $('#cabinet').attr('class', 'content find-photo');
	$('#find-photo select.custom').selectmenu({style: 'dropdown'});
        $('#find-photo form').submit();
	$('#competition-menu').removeClass('step1 step3').addClass('step2');
	flashReplace('#find-photo div.filter em', {'font-size': '18px', 'margin': '0 0 0 0', 'line-height': '18px'});
	$("#dialog").dialog();
    }
    function showActiveUserCard(data) {
	function ending(n) {
	    var end = '';
	    if (n > 100) n = n % 100;
	    var div = n % 10;
	    if (div != 0 && (n < 10 || n > 20)) {
		end = (div >= 2 && div <=4) ? 'а' : 'ов';
		if (div == 1) end = '';
	    } else {
		end = 'ов';
	    }
	    return end;
	}
	Form.initForm(
            $('#attached form')
        );
	$('#attached .baloon').css('z-index', '300').draggable({
	    containment: '#attached div.photo-container',
	    scroll: false,
	    stop: function() {
		$('#attached p.bot-buttons').show();
		$('#att-coordinates').val($('#attached .baloon').position().left + ':' + $('#attached .baloon').position().top);
	    }
	});
	$('#cabinet').attr('class', 'content attached');
	$('#competition-menu').hide();
	$('#cabinet h1').html('Здравствуйте, <span style="color: #666;">' + data.lastname + ' ' + data.firstname + ' ' + data.patronimyc + '</span>');
	flashReplace('h1', {'font-size': '30px', 'margin': '0 0 8px -3px', 'line-height': '30px'});
	$('#attached p.comment').html(data.photo_comment);
	$('#attched-photo_id').val(data.photo_id);
	$('#attached div.photo-container').html('<img src="' + data.photo_path + '" alt="">');
	var rating = (data.rating == '' || data.rating < 1) ? '0' : data.rating;
	$('#attached p.votes').html(rating + ' ' + 'голос' + ending(parseInt(data.rating)));
	flashReplace('#attached p.votes', {'font-size': '40px', 'margin': '20px 0 0 0', 'line-height': '40px', 'white-space': 'nowrap'});
	$('#social-sites textarea').val(ourSite + '/index/photo-gallery/id/' + data.photo_id);
        ZeroClipboard.setMoviePath('/js/clipboard.swf');
	var clip = new ZeroClipboard.Client();
	clip.glue($('#cabinet-copy-button')[0]);
	var txt = $('#social-sites textarea').val();
	clip.setText(txt);
	clip.addEventListener('complete', function(client, text) {
	    $('#social-sites textarea').select();
	});
	var photoPageLink = encodeURIComponent(ourSite + photoGallery + 'id/' + data.photo_id);
	var photoLink = encodeURIComponent(ourSite + data.photo_path);
	var faceBookLink = 'http://www.facebook.com/sharer.php?u=' + photoPageLink  + '&t=' + data.photo_comment;
	var twitterLink = 'http://twitter.com/home?status=' + photoPageLink + ' - ' + data.photo_comment;
	var mySpaceLink = 'http://www.myspace.com/Modules/PostTo/Pages/?t=' + photoPageLink + ' - ' + data.photo_comment + '&u=' + photoLink + '&l=1';
	var vkontakteLink = 'http://vkontakte.ru/share.php?url=' + photoPageLink;
	var mirLink = 'http://connect.mail.ru/share?share_url=' + photoPageLink;
	$('#social-sites a.sys1').click(function() {
	    this.href = faceBookLink;
	});
	$('#social-sites a.sys2').click(function() {
	    this.href = vkontakteLink;
	});
	$('#social-sites a.sys3').click(function() {
	    this.href = twitterLink;
	});
	$('#social-sites a.sys4').click(function() {
	    this.href = mySpaceLink;
	});
	$('#social-sites a.sys5').click(function() {
	    this.href = mirLink;
	});
	$('#att-coordinates').val(data.coordinates);
	try {
	    $('#attached div.baloon').css({top: data.coordinates.split(':')[1] + 'px', left: data.coordinates.split(':')[0] + 'px'});
	} catch(e) {}
	$('#attached p.bot-buttons').hide();
    }
    function initCode() {
        $('#code select.custom').selectmenu({style: 'dropdown'});
        var oForm = $('#code form');
        Form.initForm(
            oForm,
            function(data) {
		if (data.user.attached) {
		    showActiveUserCard(data.user);
		} else {
		    userCardData = data.user;
		    Card.show();
		}
            },
            true
        );
    }
    var Card = (function() {
	var oForm = null;
	var fillKey = true;
	function initForm() {
	    Form.initForm(oForm, function() {showPhotoFind();}, true);
	}
	function initNextButton() {
	    var oButton = $('#card input[type=button]').filter('.b-next');
	    oButton.click(function() {
		if ($('#card').hasClass('edit')) {
		    $('#card div.edit form').submit();
		} else {
		    if (Form.checkForm(oForm, true)) {
			showPhotoFind();
		    } else {
			$('#card .edit p.message').removeClass('loading success').addClass('error').show().html('<i></i>Заполнены не все поля');
			$('#card').removeClass('view').addClass('edit');
			flashReplace('#card div.edit span', {'font-size': '12px', 'margin': '0 0 0 -3px', 'line-height': '12px'});
			flashReplace('#card div.edit h3', {'font-size': '16px', 'margin': '15px 0 0 -3px', 'line-height': '14px'});
		    }
		}
		return false;
	    });
	}
	function checkFill(fillKey) {
	    if (fillKey) {
		$('#card .view .b-next').removeClass('button-next-nbg').addClass('button-next');
		$('#card input.b-edit').hide();
	    } else {
		$('#card input.b-next').removeClass('button-next').addClass('button-next-nbg');
	    }
	}
	function fill() {
	    var oBlockView = $('#card div.view');
	    var oBlockEdit = $('#card div.edit');
	    fillKey = true;
	    for (var name in userCardData) {
		if (oBlockEdit.find('input[name=' + name + ']').size() > 0) {
		    if ($.trim(userCardData[name]) == '') {
			oBlockView.find('span.field-' + name).css({color: '#f4f4f4'}).addClass('lite-grey').html('-');
			oBlockEdit.find('input[name=' + name + ']').removeAttr('disabled').val('');
			fillKey = false;
		    } else {
			oBlockView.find('span.field-' + name).css({color: '#000'}).addClass('dark').html(userCardData[name]);
			oBlockEdit.find('input[name=' + name + ']').attr('disabled', 'disabled').addClass('disabled').val(userCardData[name]);
		    }
		}
	    }
	    checkFill(fillKey);
	}
    return {
	init: function() {
	    oForm = $('#card div.edit form');
	    initForm();
	    initNextButton();
	    Form.initCheckForm(oForm, true, true, function() {
		$('#card div.edit p.bot-buttons input').removeClass('button-next-nbg').addClass('button-next');
		oForm.find('p.message').hide();
	    }, function() {
		$('#card div.edit p.bot-buttons input').removeClass('button-next').addClass('button-next-nbg');
		oForm.find('p.message').show();
	    });
	},
	show: function() {
	    $('#cabinet').attr('class', 'content card');
	    fill();
	    flashReplace('#card .view p.name span', {'font-size': '36px', 'margin': '0 0 0 -3px', 'line-height': '18px'});
	    flashReplace('#card .view p.field span.lite-grey', {'font-size': '18px', 'margin': '0 0 0 -3px', 'line-height': '18px'}, '#f4f4f4');
	    flashReplace('#card .view p.field span.dark', {'font-size': '18px', 'margin': '0 0 0 -3px', 'line-height': '18px'});
	},
	fill: function() {
	    fill();
	}
    }
    })();
    function initFeedBack() {
	$('#feed-back input[type=button]').click(function() {
	    $('#feed-back div.' + $('#feed-back').attr('class')).find('form')[0].reset();
	    $('#feed-back').removeClass().hide();
	});
	$('#feed-back form').each(function() {
	    var oForm = $(this);
	    Form.initForm(oForm, function() {
		oForm.find('input[type=submit]').hide();
		oForm.find('input[type=button]').show();
	    }, true);
	});
	$('#feed-back a.close').click(function() {
	    try {$('#feed-back div.' + $('#feed-back').attr('class')).find('form')[0].reset();} catch(err) {};
	    $('#feed-back').removeClass().hide();
	});
	$('#cabinet input.feed-back').click(function() {
	    $('#feed-back').removeClass().addClass($(this).attr('win')).show();
	    $('#feed-back > div').hide();
	    if (isIE6) $('#feed-back i.carrier').css('height', $('#cabinet').height() + 'px');
	    $('#feed-back div.' + $(this).attr('win')).show().find('p.message').hide();
	    $('#feed-back div.' + $(this).attr('win')).find('input[type=button]').hide().end().find('input[type=submit]').show();
	});
	$('#code p.message').delegate('a', 'click', function() {
	    $('#feed-back').removeClass().addClass('general').show();
	    $('#feed-back div.general').find('p.message').hide();
	    $('#feed-back div.general').find('input[type=button]').hide().end().find('input[type=submit]').show();
	    return false;
	});
	if (isIE6) {
	    $('#feed-back').css('visibility', 'hidden');
	    $('#feed-back').removeClass().addClass('answer').show();
	    $('#feed-back').removeClass().hide();
	}
	$('#express_answer a').click(function() {
	    $('#feed-back').removeClass().addClass('answer').show();
	    if (isIE6) setTimeout(function() {$('#feed-back').removeClass().addClass('answer').show();}, 100);
	    return false;
	});
	$('#make-title a.manifest').click(function() {
	    if (isIE6) $('#feed-back i.carrier').css('height', $('#cabinet').height() + 'px');
	    $('#feed-back > div').hide();
	    $('#feed-back').removeClass().addClass('manifest').show();
	    $('#feed-back div.manifest').show().find('p.message').hide();
	});
    }
return {
    init: function() {
	$('#cabinet input.datepicker').each(function() {
	    var minYear = $(this).attr('min-year');
	    minYear = ($.trim(minYear) == '') ? 1950 : minYear;
	    $(this).datepicker({
		changeMonth: true,
		changeYear: true,
		yearRange: minYear + ':2010'
	    });
	});
	$('#make-title-photo_id').val('');
	$('#make-title input[type=checkbox]').attr('checked', false);
        initCode();
        Card.init();
        initFindPhoto();
        initMakeTitle();
	initFeedBack();
    }
}
})();

var DBGallery = (function () {
    var gallery, preview, filter, bGPrevious, bGNext, bPPrevious, bPNext, bGallery, bPreview, buttons, oPages;
    var page = 1;
    var pages = 1;
    var count = 0;
    var cur = {
	big: null,
	mini: null
    };
    var curNumber = 0;
    var curLeft = 0;
    var WIDTH = 540;
    var CACHE = {
	CURRENT: null,
	PREV: null,
	NEXT: null
    }
    var addParamDealerId = '';
    var startPhotoId = null;
    function sysInfo(key) {
	if (key == 'close') {
	    $('#object .loading').hide();
	    $('#photo-header p.message').hide();
	} else {
	    $('#object .loading').show();
	    $('#photo-header p.message').show();
	}
    }
    function getCache() {
	if (page != 1 && !CACHE.PREV) {
	    $.ajax({
		url: filter.attr('action') + '?' + filter.formSerialize().replace(/page=\d+/gi, 'page=' + (page - 1)) + '&get_cache_prev',
		dataType: 'json',
		success: function(data, status) {
		    if (data && data.code == '200') CACHE.PREV = data;
		}
	    });
	}
	if (page != pages && !CACHE.NEXT) {
	     $.ajax({
		url: filter.attr('action') + '?' + filter.formSerialize().replace(/page=\d+/gi, 'page=' + (page + 1)) + '&get_cache_next',
		dataType: 'json',
		success: function(data, status) {
		    if (data && data.code == '200') CACHE.NEXT = data;
		}
	    });
	}
    }
    function setNumber(number) {
	if ((!number && !parseInt(number)) || parseInt(number) < 1) return number = 1;
	return parseInt(number);
    }
    function setCurNotActive() {
	cur.big.add(cur.mini).removeClass('cur');
	cur.mini.css('opacity', .5);
	cur.big.find('i.shadow').css({'display': 'block', 'opacity': .5});
    }
    function setNewCurActive(o) {
	o.big.add(o.mini).addClass('cur');
	o.mini.css('opacity', 1);
	o.big.find('i.shadow').not('.extreme').fadeOut();
    }
    function getCurrentPhoto(dir) {
	if (Math.abs(dir) > 1) {
	    return {mini: $(preview.find('li').get(dir)), big: $(gallery.find('li').get(dir))};
	} else {
	    return (dir > 0) ? {mini: cur.mini.next(), big: cur.big.next()} : {mini: cur.mini.prev(), big: cur.big.prev()};
	}

    }
    function goToPhoto(dir) {
	bGallery.hide();
	curNumber = curNumber + dir;
	var newCur = getCurrentPhoto(dir);
	setCurNotActive();
	setNewCurActive(newCur);
	sysInfo('close');
	$('')
	gallery.animate({left: (curLeft = curLeft - dir * WIDTH) + 'px'}, {
	    complete: function() {
		showButtons();
		cur.big = newCur.big;
		cur.mini = newCur.mini;
	    }
	});
    }
    function initGalleryButtons() {
	bGPrevious.click(function() {
	    if (curNumber != 0) {
		goToPhoto(-1)
	    } else if (CACHE.PREV) {
		buttons.hide();
		getPage(null, 'PREV');
	    }
	    return false;
	});
	bGNext.click(function() {
	    if (curNumber != count - 1) {
		goToPhoto(1)
	    } else if (CACHE.NEXT) {
		buttons.hide();
		getPage(null, 'NEXT');
	    }
	    return false;
	});
    }
    function initPreviewButtons() {
	bPPrevious.click(function() {
	    buttons.hide();
	    oPages.val(page - 1);
	    getPage(null, 'PREV');
	    gallery.find('i.extreme').css({opacity: .5, display: 'block'});
	    return false;
	});
	bPNext.click(function() {
	    buttons.hide();
	    oPages.val(page + 1);
	    getPage(null, 'NEXT');
	    gallery.find('i.extreme').css({opacity: .5, display: 'block'});
	    return false;
	});
    }
    function initPreviewImg() {
	var flag = true;
	preview.delegate('li', 'click', function() {
	    var oThis = $(this);
	    if (!oThis.hasClass('cur') && flag) {
		flag = false;
		bGallery.hide();
		var newCurNumber = preview.find('li').index($(this));
		(curNumber > newCurNumber) ? curLeft += (curNumber - newCurNumber) * WIDTH : curLeft -= (newCurNumber - curNumber) * WIDTH;
		curNumber = preview.find('li').index($(this));
		setCurNotActive();
		var newCurBig = $(gallery.find('li').get(newCurNumber));
		setNewCurActive({big: newCurBig, mini: oThis});
		sysInfo('close');
		gallery.animate({left: curLeft + 'px'}, {
		    complete: function() {
			showButtons();
			cur.big = newCurBig;
			cur.mini = oThis;
			flag = true;
		    }
		});
	    }
	    return false;
	});
    }
    function initCitySelect() {
	CityDealersObject.init(false, function(v1, oCity) {
	    filter.find('input[name="filter[city_id]"]').val(oCity.find('a').attr('city_id'));
	    $('#photo-header input[name="filter[dealer_id]"]').remove();
            filter.find('input[name="filter[id]"]').val('');    
	    getPage(true);
	});
    }
    function initButtons() {
	initCitySelect();
	initGalleryButtons();
	initPreviewButtons();
	initPreviewImg();
	filter.find('.filter_ a').click(function() {
	    var o = $(this);
	    filter.find('input[name=ob]').val(o.attr('name'));
	    if (o.find('i').hasClass('down')) {
		o.find('i').removeClass('down').addClass('up');
		filter.find('input[name=ot]').val(1);
	    } else {
		o.find('i').removeClass('up').addClass('down');
		filter.find('input[name=ot]').val(0);
	    }
            filter.find('input[name="filter[id]"]').val('');            
            
	    filter.find('.filter_ a').not(o).find('i').removeClass('up').addClass('down');
	    getPage(true);
	    return false;
	});
	gallery.delegate('a.up', 'click', function() {
	    var oThis = $(this);
//	    var isVoting = $(this).attr('voting') == 'true';
//
//	    if (isVoting) {
//		$.ajax({
//		    url: filter.attr('voting') + oThis.attr('photo_id'),
//		    type: 'GET',
//		    dataType: 'json',
//		    beforeSend: function() {
//			oThis.html('<i></i>голосование...')
//		    },
//		    error: function(XHR) {
//			alert(XHR.responseText);
//		    },
//		    success: function(data) {
//			oThis.html('<i></i>голос учтен<span>' + data.votes + '</span>');
//                        oThis.addClass('dislike');
//		    }
//		});
//	    }
            $('#plus-odin').show();
            $.each($('#plus-odin .container a'), function(){
                $(this).attr('href', $(this).attr('href')+oThis.parent().attr('photo_id'));
            })

//            var votes_count = 0;
//            oThis.html('<i></i>голос учтен<span>' + votes_count + '</span>');
//            oThis.addClass('dislike');
	    return false;
	});
    }
    function clearPage() {
	curNumber = curLeft = 0
	gallery.css('left', '0');
	gallery.add(preview).html('');
    }
    function clearFilter() {

    }
    function makeHtml(item, isExtreme) {
	var text, key;
//	text = (item[7] == 'false') ? 'голос учтен' : 'нравится';
//	var voice = '<a href="#up" class="up" voting="' + item[7] + '" photo_id="' + item[2] + '"><i></i>' + text + '<span>' + item[8] + '</span></a>';
//	var top = ((item[5].split(':')[1] - 29) < 0) ? 0 : (item[5].split(':')[1] - 29);
//	var position = 'style="position: absolute; top: ' + top + 'px; left: ' + item[5].split(':')[0] + 'px;"';
//	var comment = '<div class="comment" ' + position + '>\
//	    <div class="baloon">\
//		<p class="text">' + item[3] + '</p>\
//		<p class="name">' + item[4] + '</p>\
//	    </div>\
//	    <i class="bottom-pointer bottom-pointer-left"></i>' + voice + '</div>';
//	if (isExtreme) {
//	    return '<div class="' + isExtreme + '"><img src="' + item[1] + '" alt="" photo_id="' + item[3] + '">' + comment + '<i class="shadow extreme"></i></div>';
//	}
//	return '<li photo_id="' + item[2] + '"><img src="' + item[1] + '" alt="" photo_id="' + item[2] + '"><div class="date"><i></i><p>' + item[10] + ', ' + item[6] + '</p></div>' + comment + '<i class="shadow"></i></li>';

        //console.log(item);
        text = /*(item[7] == 'false') ? 'голос учтен' : */'нравится';
	var voice = '<a href="#up" class="up" voting="' + ((item.votes_count==null)? 0 : item.votes_count) + '" photo_id="' + item.id + '"><i></i>' + text + '<span>' + ((item.votes_count==null)? 0 : item.votes_count) + '</span></a>';
	var top = (item.coordinates==null) ? 0 :(((item.coordinates.split(':')[1] - 29) < 0) ? 0 : (item.coordinates.split(':')[1] - 29));
        var left = (item.coordinates==null) ? 0 : (item.coordinates.split(':')[0]);
	var position = 'style="position: absolute; top: ' + top + 'px; left: ' + left + 'px;"';
        //console.log(item);
	var comment = '<div class="comment" ' + position + '>\
	    <div class="baloon">\
		<p class="text">' + ((item.comment == null) ? '' : item.comment) + '</p>\
		<p class="name"><span class="flright">' + item.city + '</span>' + item.lastname + ' ' + item.firstname + '</p>\
	    </div>\
	    <i class="bottom-pointer bottom-pointer-left"></i></div>';
	if (isExtreme) {
	    return '<div class="' + isExtreme + '"><img src="/pi/' + item.photo + '" alt="" photo_id="' + item.id + '">' + comment + '<i class="shadow extreme"></i></div>';
	}
        var creation_date = '';
        if (item.photo_activation_time!=null)
            creation_date = new Date(item.photo_activation_time*1000);
	return '<li photo_id="' + item.id + '"><img src="/pi/' + item.photo + '" alt="" photo_id="' + item.id + '"><div class="date"><i></i><p>' + ((item.city_id==null) ? '' : item.city_id + ', ') + ((creation_date=='') ? '' : creation_date.getDate()+'.')+((creation_date=='') ? '' : (creation_date.getMonth()+1)+'.')+((creation_date=='') ? '' : creation_date.getFullYear()) + '</p></div>' + comment + voice + '<i class="shadow"></i></li>';
    }
    function buildGallery(data, isShow, getKey) {
	var delta = 100;
	var time = 0;
	var items = data.items;
	var gal = $('<ul></ul>');
	for (var i = 0; i < items.length; i++) {
	    gal.append(makeHtml(items[i]));
	}
	if (data.extreme_items) {
	    if (data.extreme_items.first && data.extreme_items.first[2] != '') {
		gal.find('li:first').prepend(makeHtml(data.extreme_items.first, 'first')).find('i.shadow').css('opacity', '.5');
	    }
	    if (data.extreme_items.last && data.extreme_items.last[2] != '') {
		gal.find('li:last').prepend(makeHtml(data.extreme_items.last, 'last')).find('i.shadow').css('opacity', '.5');
	    }
	}
	isShow = isShow || 'first';
	gal.find('li').find('i.shadow').css('opacity', .5).end().filter('li:' + isShow).addClass('cur').find('i.shadow').hide();
	cur.big = gal.find('li:' + isShow);
	cur.big.find('div.first i.shadow, div.last i.shadow').css('opacity', .5);
	if (getKey) {
	    return gal;
	}
	return gallery.append(gal);
    }
    function buildPreview(items, isShow, getKey) {
	var obj = $('<ul></ul>');
	for (var i = 0; i < items.length; i++) {
	    obj.append(cur.mini = $('<li><img src="/pi/' + items[i].thumb + '"></li>'));
	}
	isShow = isShow || 'first';
	obj.find('li').css('opacity', .5).filter('li:' + isShow).addClass('cur').css('opacity', 1);
	cur.mini = obj.find('li:' + isShow);
	if (getKey) {
	    return obj;
	}
	return preview.append(obj);
    }
    function fixCache() {
	if (curNumber == 0 && CACHE.PREV) bGPrevious.show();
	if (curNumber == (count - 1) && CACHE.NEXT) bGNext.show();
    }
    function showButtons(nPage, nPages, nCount) {
	page = setNumber(nPage);
	pages = setNumber(nPages);
	if (arguments.length >= 3) {
	    count = (nCount) ? parseInt(nCount) || 0 : 0;
	    if (count > 10) {
		count = (10 * page > count) ? count % 10 : 10;
	    }
	}
	bGallery.hide();
	if (curNumber > 0) bGPrevious.show();
	if (curNumber != count - 1) bGNext.show();
	fixCache();
	if (arguments.length >= 3) {
	    bPreview.hide();
	    if (page > 1) bPPrevious.show();
	    if (page != pages) bPNext.show();
	}
    }
    function buildCacheGallery(data, dir) {
	var width = 0;
	if (dir == 'first') {
	    width = gallery.find('ul').width();
	    gallery.append($(buildGallery(data, dir, true)).css({position: 'absolute', top: 0, left: width + 'px'}));
	    curNumber = 0;
	    sysInfo('close');
	    gallery.animate({left: -width + 'px'}, {complete: function() {
		gallery.find('ul:first').remove();
		gallery.add(gallery.find('ul')).css('left', 0);
		curLeft = 0;
	    }});
	} else {
	    var temp = null;
	    gallery.append(temp = $(buildGallery(data, dir, true)));
	    curNumber = temp.find('li').size() - 1;
	    width = -1 * gallery.find('ul:last').width();
	    gallery.find('ul:last').css({position: 'absolute', top: 0, left: width + 'px'});
	    sysInfo('close');
	    gallery.animate({left: 540 + 'px'}, {complete: function() {
		gallery.find('ul:first').remove();
		gallery.css('left', (width + 540) + 'px');
		gallery.find('ul').css('left', 0);
		curLeft = width + 540;
	    }});
	}

    }
    function buildCachePreview(data, dir) {
	var width = 0;
	if (dir == 'first') {
	    width = preview.find('ul').width();
	    preview.append($(buildPreview(data.items, dir, true)).css({position: 'absolute', top: 0, left: width + 'px'}));
	} else {
	    preview.append($(buildPreview(data.items, dir, true)));
	    width = -1 * preview.find('ul:last').width();
	    preview.find('ul:last').css({position: 'absolute', top: 0, left: width + 'px'});
	}
	preview.animate({left: -width + 'px'}, {complete: function() {
	    preview.find('ul:first').remove();
	    preview.add(preview.find('ul')).css('left', 0);
	}});
    }
    function getPage(key, dir) {
	if (key) {
	    filter.find('input[name=page]').val(1);
	    clearPage();
	    for (var name in CACHE) CACHE[name] = null;
	    filter.submit();
	} else if (dir && CACHE[dir]) {
	    var data = CACHE[dir];
	    buttons.hide();
	    if (dir == 'PREV') {
		CACHE.NEXT = CACHE.CURRENT;
		CACHE.PREV = null;
		buildCacheGallery(data, 'last');
		buildCachePreview(data, 'last');
	    }
	    if (dir == 'NEXT') {
		CACHE.PREV = CACHE.CURRENT;
		CACHE.NEXT = null;
		buildCacheGallery(data, 'first');
		buildCachePreview(data, 'first');
	    }
	    CACHE.CURRENT = data;
	    showButtons(data.doc.page, data.doc.pages, data.doc.items);
	    gallery.find('i.extreme').css({opacity: .5, display: 'block'});
	    getCache();
	} else {
	    clearPage();
	    sysInfo('open');
	    filter.submit();
	}
    }
    function buildPage(data, photoId) {
	if (data) {
	    clearPage();
	    if (data.items.length > 0) {
		CACHE.CURRENT = data;
		buildGallery(data);
		buildPreview(data.items);
		showButtons(data.doc.page, data.doc.pages, data.doc.items);
		if (photoId) {
		    curNumber = 0;
		    goToPhoto(gallery.find('li').index(gallery.find('li[photo_id=' + photoId + ']')));
		}
		getCache();
	    } else {
		var message = filter.find('p.message');
		message.removeClass('error loading').addClass('success').show().html('<strong style="text-align: center; display: block; font-size: 1.8em; font-weight: bold; color: #000; position: relative; top: -50px;">Станьте первым!<br>Начало акции 8 октября</strong>');
		$('#objects .loading').hide();
		buttons.hide();
		message.css('margin-left', -message.width() / 2 + 'px');
	    }

	}
    }
return {
    init: function(oGallery, oPreview, oFilter, oGPrevious, oGNext, oPPrevious, oPNext) {
	gallery = oGallery;
	preview = oPreview;
	filter = oFilter;
	bGPrevious = oGPrevious;
	bGNext = oGNext;
	bPPrevious = oPPrevious;
	bPNext = oPNext;
	bGallery = bGPrevious.add(bGNext);
	bPreview = bPPrevious.add(bPNext);
	buttons = bGallery.add(bPreview);
	oPages = filter.find('input[name=page]');
	filter.find('input[name="filter[city_id]"]').val('');
	oPages.val(1);
	Form.initForm(filter, function(data) {
            //console.log(data);
	    sysInfo('close');
	    buildPage(data);
	}, false);
	initButtons();
	//getPage();
    },
    getPage: function() {
	var addParam = document.location.hash;
	if (addParam && addParam.match(/city_id=\d+/)) {
	    var cityId = addParam.match(/city_id=\d+/)[0].match(/\d+/)[0];
	    if (addParam.match(/dealer_id=\d+/)) {
		addParamDealerId = addParam.match(/dealer_id=\d+/)[0].match(/\d+/)[0];
		$('#photo-header form').append('<input type="hidden" name="filter[dealer_id]" value="' + addParamDealerId + '">');
	    }
	    if (cityId && parseInt(cityId)) {
		filter.find('input[name="filter[city_id]"]').val(cityId);
		$('#dealers a.switch-button span').html($('#cities li.c' + cityId + ' a').text());
	    }
	}
	getPage();
    },
    buildPage: function(data, photoId) {
	buildPage(data, photoId);
    },
    cache: function() {
	return CACHE;
    }
}})();

var Top20Gallery = (function(){
    var fGetData = false;
    var obj, butList, butGallery, message, listing, navNext, navPrev;
    var curNumber = 0;
    var count = 0;
    var CACHE = {
	PREV: null,
	NEXT: null
    }

    function showPhoto() {
	var gallery = obj.find('div.photo-item');
	gallery.not(':eq(' + curNumber + ')').fadeOut();
	$(gallery.get(curNumber)).fadeIn();
	listing.find('a').removeClass('cur').filter(':eq(' + curNumber + ')').addClass('cur');
	showButtons();
    }
    function initButtons(showButton) {
	navPrev.click(function() {
	    curNumber--;
	    showPhoto();
	    return false;
	});
	navNext.click(function() {
	    curNumber++;
	    showPhoto();
	    return false;
	});
	obj.delegate('a.up', 'click', function() {
	    var oThis = $(this);
	    var photoId = oThis.attr('photo_id');
	    var isVoting = $(this).attr('voting') == 'true';
	    if (isVoting) {
		$.ajax({
		    url: obj.find('input[name=voting]').val() + photoId,
		    type: 'GET',
		    dataType: 'json',
		    beforeSend: function() {
			oThis.html('<i></i>голосование...')
		    },
		    error: function(XHR) {
			alert(XHR.responseText);
		    },
		    success: function(data) {
			obj.find('a.up[photo_id=' + photoId + ']').html('<i></i>голос учтен<span>' + data.votes + '</span>')
		    }
		});
	    }
	    return false;
	});
	listing.delegate('a', 'click', function() {
	    var oThis = $(this);
	    if (!oThis.hasClass('cur')) {
		curNumber = oThis.html() - 1;
		showPhoto();
	    }
	    return false;
	});
	showButton.click(function() {
	    /*obj.find('i.bg').css('opacity', 0);
	    obj.show();
	    obj.find('i.bg').animate({ opacity: .5 });*/
	    getData();
	    showFly(obj, true);
	    return false;
	});
	obj.find('a.close').click(function() {hideFly(obj, true);return false;});
	butList.click(function() {
	    butGallery.addClass('grey');
	    butList.removeClass('grey');
	    obj.find('.photos').hide();
	    obj.find('.list').show();
	});
	butGallery.click(function() {
	    butGallery.removeClass('grey');
	    butList.addClass('grey');
	    obj.find('.photos').show();
	    obj.find('.list').hide();
	});
    }

    function showButtons() {
	navPrev.add(navNext).show();
	if (count == 0 || count == 1) {
	    navNext.add(navPrev).hide();
	} else {
	    if (curNumber == 0) navPrev.hide();
	    if (curNumber == count - 1) navNext.hide();
	}
    }

    function buildList(data) {
	var items = [];
	for (var i = 0; i < data.length; i++) {
	    var status = (data[i][7] == 'false') ? 'голос учтен' : 'нравится';
	    if (i == 0) {
		items[i] = '<div class="list-item" style="padding-top: 0;"><i class="number" style="top: 0;">' + (i + 1) + '</i><a href="/index/photo-gallery/id/' + data[i][2] + '#id=' + data[i][2] + '"><img src="' + data[i][1] + '" alt="' + data[i][3] + '" style="top: 0;"></a><div class="text"><p class="user">' + data[i][4] + ', ' + $('#cities-list span.c' + data[i][9]).html() + '</p><p>"' + data[i][3] + '"</p><p class="voting"><a photo_id="' + data[i][2] + '" voting="' + data[i][7] + '" class="up" href="#up"><i></i>' + status + '<span>' + data[i][8] + '</span></a></p></div></div>';
	    } else if (i == (data.length - 1)) {
		items[i] = '<div class="list-item" style="padding-bottom: 5px; border-bottom: none;"><i class="number">' + (i + 1) + '</i><a href="/index/photo-gallery/id/' + data[i][2] + '#id=' + data[i][2] + '"><img src="' + data[i][1] + '" alt="' + data[i][3] + '"></a><div class="text"><p class="user">' + data[i][4] + ', ' + $('#cities-list span.c' + data[i][9]).html() + '</p><p>"' + data[i][3] + '"</p><p class="voting"><a photo_id="' + data[i][2] + '" voting="' + data[i][7] + '" class="up" href="#up"><i></i>' + status + '<span>' + data[i][8] + '</span></a></p></div></div>';
	    } else {
		items[i] = '<div class="list-item"><i class="number">' + (i + 1) + '</i><a href="/index/photo-gallery/id/' + data[i][2] + '#id=' + data[i][2] + '"><img src="' + data[i][1] + '" alt="' + data[i][3] + '"></a><div class="text"><p class="user">' + data[i][4] + ', ' + $('#cities-list span.c' + data[i][9]).html() + '</p><p>"' + data[i][3] + '"</p><p class="voting"><a photo_id="' + data[i][2] + '" voting="' + data[i][7] + '" class="up" href="#up"><i></i>' + status + '<span>' + data[i][8] + '</span></a></p></div></div>';
	    }
	}
	var pane = obj.find('div.list div.sc-panel');
	pane.html(items.join(''));
	obj.find('.list').css({visibility: 'hidden'}).show();
	pane.jScrollPane({scrollbarWidth: 6});
	obj.find('.list').css('visibility', 'visible').hide();
    }
    function buildGallery(items) {
	var gallery = obj.find('.ph-container');
	listing.html('');
	for (var i = 0; i < items.length; i++) {            
	    var text, key;
	    text = (items[i][7] == 'false') ? 'голос учтен' : 'нравится';
	    var voice = '<a href="#up" class="up" voting="' + items[i][7] + '" photo_id="' + items[i][2] + '"><i></i>' + text + '<span>' + items[i][8] + '</span></a>';
	    var position = '';
	    try {
		position = 'style="position: absolute; top: ' + items[i][5].split(':')[1] + 'px; left: ' + items[i][5].split(':')[0] + 'px;"';
	    } catch(err) { }
	    var comment = '<div class="comment" ' + position + '>\
		<div class="baloon">\
		    <p class="text">' + items[i][3] + '</p>\
		    <p class="name">' + items[i][4] + '</p>\
		</div>\
		<i class="bottom-pointer bottom-pointer-left"></i>' + voice + '</div>';
	    if (i == 0) {
		gallery.append($('<div class="photo-item cur"><img src="' + items[i][1] + '" alt="" photo_id="' + items[i][3] + '"><div class="date"><i></i><p>' + items[i][10] + ', ' + items[i][6] + '</p></div>' + comment + '</div>'));
		listing.append('<a href="#" class="cur">' + (i + 1) + '</a>');
	    } else {
		gallery.append($('<div class="photo-item"><img src="' + items[i][1] + '" alt="" photo_id="' + items[i][3] + '"><div class="date"><i></i><p>' + items[i][10] + ', ' + items[i][6] + '</p></div>' + comment + '</div>').hide());
		listing.append('<a href="#">' + (i + 1) + '</a>');
	    }
	}
    }
    function getData() {
	$.ajax({
	    url: obj.find('input[name=get_photo]').val(),
	    type: 'GET',
	    dataType: 'json',
	    beforeSend: function() {
		message.removeClass('error success').addClass('loading').show().html('<i></i>Загрузка фото...');
	    },
	    error: function(XHR) {
		message.removeClass('loading success').addClass('error').show().html('<i></i>Ошибка: ' + XHR.responseText);
	    },
	    success: function(data) {
		if (data && data.items) {
		    count = data.items.length;
		    if (count == 0) {
			message.removeClass('loading success erorr').show().html('<i></i>В рейтинге пока нет фото');
		    } else {
			message.hide();
			buildGallery(data.items);
			buildList(data.items);
			showPhoto();
			obj.find('div.photos').show();
		    }
		} else {
		    message.removeClass('loading success').addClass('error').show().html('<i></i>Ошибка: ' + data.error);
		}
	    }
	});
    }
return{
    init: function(showButton) {
	obj = $('#top20');
	butList = obj.find('input[name=list]');
	butGallery = obj.find('input[name=photo]');
	navNext = obj.find('a.next');
	navPrev = obj.find('a.previous');
	message = obj.find('p.message');
	listing = obj.find('p.listing');
	initButtons(showButton);
    }
}})();
var GoogleMap = (function() {
    var MAP, Geocoder, markers, cities, markerManager;
    var CITY_ZOOM = 9;
    var ICON = null;
    var CENTER = {
	lng: 100,
	lat: 65,
	zoom: 3
    };
    var cityTitleTimer = 0;
    var cityTitleTimer2 = 0;
    var mouseX, mouseY;
    function setIconsOption() {
	ICON = {
	    image: '/i/gm-pointer.png',
	    iconSize: new GSize(29, 35),
	    iconAnchor: new GPoint(15, 35),
	    infoWindowAnchor: new GPoint(-26, -115)
	};
    }
    function setCenter(map) {
	map.setCenter(new google.maps.LatLng(CENTER.lat, CENTER.lng), CENTER.zoom);
    }
    function addMapController(map) {
	var mapControl = new GLargeMapControl3D();
	map.addControl(mapControl);
    }
    function GoogleMapLoad(oHtmlMap) {
	if (GBrowserIsCompatible()) {
	    var map = new google.maps.Map2(oHtmlMap[0]);
	    map.enableDoubleClickZoom();
	    setCenter(map);
	    addMapController(map);
	    Geocoder = new google.maps.ClientGeocoder();
	    return map;
	} else {
	    return null;
	}
    }
    function createObjects(data, fWinCreate) {
	var j = 0;
	var c = 0;
	markers = [];
	cities = [];
	var city = '';
	for (var i = 0; i < data.length; i++) {            
	    if (data[i].coordinates.lat && data[i].coordinates.lng && data[i].coordinates.lat != '' && data[i].coordinates.lng != '') {
		var point = (new google.maps.LatLng(data[i].coordinates.lat, data[i].coordinates.lng));
		var marker = createMarker(point);
		if (city != data[i].cityId) {
		    city = data[i].cityId;
		    var oCity = createMarker(point);
		    oCity.city_name = data[i].city;
		    cities[c++] = oCity;
		    addCityZoomListner(oCity);
                    addInfoWinOpenListner2(oCity, point, data[i], fWinCreate);
		}
		marker.dealer_name = data[i].name;
		markers[j++] = marker;
		addInfoWinOpenListner(marker, point, data[i], fWinCreate);
	    }
	}
	return markers;
    }
    function setMarkerOptions(icon) {
	for (var name in ICON) icon[name] = ICON[name];
    }
    function createMarker(point) {
	var tinyIcon = new GIcon();
	setMarkerOptions(tinyIcon);
	var markerOptions = {icon: tinyIcon};
	return (new GMarker(point, markerOptions));
    }
    function addCityZoomListner(marker) {
	GEvent.addListener(marker, 'mouseover', function() {           
	    clearTimeout(cityTitleTimer);
	    $('#city-name').show().html(marker.city_name);
	});
	GEvent.addListener(marker, 'mouseout', function() {
	    cityTitleTimer = setTimeout(function() {
		$('#city-name').hide();
	    }, 150);
	});
	GEvent.addListener(marker, 'click', function(){
	    $('#city-name').hide();
	    var zoom = MAP.getZoom();
	    if (zoom < CITY_ZOOM) {
		MAP.setZoom(CITY_ZOOM);
		MAP.setCenter(marker.getPoint());
	    }
	});
    }
    function addInfoWinOpenListner(marker, point, data, fWinCreate) {       
	GEvent.addListener(marker, 'mouseover', function() {            
	    clearTimeout(cityTitleTimer);
            marker.openExtInfoWindow(
		MAP,
		"google-window",
		fWinCreate(data),
		{beakOffset: 2}
	    );
	    //var zoom = MAP.getZoom();
	    //if (zoom != 13) $('#city-name').show().html(marker.dealer_name);
	    $('#city-name').show().html(marker.dealer_name);
	});
        GEvent.addListener(marker, 'mouseleave', function() {
            MAP.closeExtInfoWindow();
	});
	GEvent.addListener(marker, 'mouseout', function() {           
            
	    cityTitleTimer = setTimeout(function() {
		$('#city-name').hide();
                
	    }, 150);
            
	});
	GEvent.addListener(marker, 'click', function() {
	    $('#city-name').hide();
	    MAP.setZoom(13);
	    MAP.setCenter(marker.getPoint());
	    MAP.panBy(new GSize(0, 80));
	    marker.openExtInfoWindow(
		MAP,
		"google-window",
		fWinCreate(data),
		{beakOffset: 2}
	    );
	});
	$('#city-dealers li[dealer_id=' + data.dealerId + ']').click(function() {
	    var isWindowOpen = MAP.getExtInfoWindow() || false;
	    $('#city-name').hide();
	    if (isWindowOpen) {
		MAP.setZoom(13);
		MAP.panTo(point);
	    } else {
		MAP.setCenter(point, 13);
	    }
	    MAP.panBy(new GSize(0, 80));
	    marker.openExtInfoWindow(
		MAP,
		"google-window",
		fWinCreate(data),
		{beakOffset: 0}
	    );
	});
    }

    function addInfoWinOpenListner2(marker, point, data, fWinCreate) {
        
	GEvent.addListener(marker, 'mouseover', function() {
            //console.log(data);
//            clearTimeout(cityTitleTimer2);
            marker.openExtInfoWindow(
		MAP,
		"google-window",
		fWinCreate(data),
		{beakOffset: 2}
	    );
	});
//        GEvent.addListener(marker, 'mouseout', function() {
//             cityTitleTimer2 = setTimeout(function() {
//		MAP.closeExtInfoWindow();
//	    }, 150);
//
//	});
    }

    function setupMarkers() {
	markerManager = new MarkerManager(MAP);
	markerManager.addMarkers(markers, CITY_ZOOM);
	markerManager.addMarkers(cities, 1);
	markerManager.refresh();
    }
    function getMap(oHtmlMap, oData, fCreateInfoWindow) {
	try {
	    MAP = GoogleMapLoad(oHtmlMap);
	    setIconsOption();
	    markers = createObjects(oData, fCreateInfoWindow);
	    window.setTimeout(setupMarkers, 0);
	    //MAP.clearOverlays();
	} catch (err) {};
    }
return {
    map: function() {
	return MAP;
    },
    init: function(oHtmlMap, oData, fCreateInfoWindow) {
	getMap(oHtmlMap, oData, fCreateInfoWindow);
	$(document).mousemove(function(e){
	    function getMouseX(evt) {
		if (evt.pageX) return evt.pageX;
		else if (evt.clientX)
		   return evt.clientX + (document.documentElement.scrollLeft ?
		   document.documentElement.scrollLeft :
		   document.body.scrollLeft);
		else return null;
	    }
	    function getMouseY(evt) {
		if (evt.pageY) {
		    return evt.pageY;
		} else if (evt.clientY) {
		    return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
		}
		else return null;
	    }
	    mouseY = getMouseY(e);
	    mouseX = getMouseX(e);
	    $('#city-name').css({left: (mouseX + 3) + 'px', top: (mouseY - 33) + 'px'});
	});
    },
    clear: function() {
	MAP.clearOverlays();
    },
    show: function() {
	setCenter(MAP);
	MAP.closeExtInfoWindow();
    },
    markers: function() {
	return markers;
    },
    openInfoWindow: function(marker, html) {
	MAP.setCenter(marker.getPoint(), 13);
	marker.openExtInfoWindow(
	    MAP,
	    "google-window",
	    html,
	    {beakOffset: 2}
	);
    }
}})();

var DealersMap = (function() {
    var htmlMap, dData, oDealers;
    function getData(obj) {
	data = [];
	var i = 0;
	obj.each(function() {
	    var item = $(this);
	    data[i++] = {
		coordinates: {
		    lat: item.attr('coordinates').split(':')[1],
		    lng: item.attr('coordinates').split(':')[0]
		},
		city: $('#cities li').filter('.c' + item.attr('city_id')).find('a').text(),
		name: item.find('span.name').html(),
		address: item.find('span.address').html(),
		cityId: item.attr('city_id'),
		dealerId: item.attr('dealer_id'),
		videoActive: item.attr('video_active'),
		phone: item.attr('phone'),
		timeShop: item.attr('dealers_time'),
		timeSealer: item.attr('promoters_time'),
                startDay: item.attr('start_day'),
		link: item
	    };
	});
        //console.log(data);
	return data;
    }
    function createInfoWindow(dealerData) {
	var link, linkText;
	if (dealerData.videoActive == 1) {
	    link = '/video/#id=' + dealerData.dealerId;
	    linkText = 'Прямая видео трансляция из шоу-рума';
	} else {
	    link = '/index/photo-gallery/#city_id=' + dealerData.cityId + '&dealer_id=' + dealerData.dealerId;
	    linkText = 'Трансляция фото из шоу-рума';
	}
        var start_day = '';
        if (dealerData.startDay!=''){
            start_day = '<p>Внимание! Этот Дилерский центр начинает участвовать в акции с '+dealerData.startDay+' октября!</p>';
        }
	return '<div class="googe-win">\
	    <p class="name">' + dealerData.name + '</p>\
	    <p>' + dealerData.city + ', ' + dealerData.address + '<br><span>Время работы</span>Шоу-рум: ' + dealerData.timeShop + '<br>Промоутер: ' + dealerData.timeSealer + '<br>Телефон: ' + dealerData.phone + '</p>'+start_day+'\
	    <p><a href="' + link + '" class="icon' + dealerData.videoActive + '"><i></i>' + linkText + '</a></p>\
	</div>';
    }
return {
    init: function() {
	htmlMap = $('#dealers-gmap');
	oDealers = $('#city-dealers li');
	dData = getData(oDealers);
	GoogleMap.init(htmlMap, dData, createInfoWindow);
    }
}})();

var Dealers = (function(){
    var hidDealers = null;
    var city = null;
    function initCitySelect() {
	CityDealersObject.init(true);
    }
return {
    init: function() {
	hidDealers = $('#hidden-dealers ul');
	city = $('#dealers .panel-container').filter('.city');
	initCitySelect();
	city.find('li.all').add($('#dealer-header h2')).click(function() {
	    GoogleMap.show();
	    CityDealersObject.close();
	});
	DealersMap.init();
    }
}})();

var CityDealersObject = (function() {
    var object, hidDealers, city;
    var fDealers = false;
    function initSwitch() {
	object.find('a.switch-button').click(function() {
	    var oButton = $(this);
	    if (!oButton.hasClass('active')) {
		oButton.addClass('active');
		city.show();
	    } else {
		hideCityObject();
		if (fDealers) hideCityDealers();
	    }
	    return false;
	});
    }
    function hideCityObject() {
	object.find('a.switch-button').removeClass('active');
	showAllCities();
	city.hide();
    }
    function showAllCities() {
	city.css({'height': city.attr('_height') + 'px'}).find('li').removeClass('active').show();
	city.find('.jScrollPaneTrack').show();
    }
    function initCitySelect() {
	checkHeight(city, city.find('div.scroll-panel'));
	city.find('div.scroll-panel').jScrollPane();
	city.css('visibility', 'visible').hide();
	city.attr('_height', city.height());
    }
    function createDealers() {
	city.find('li').not('.all').each(function() {
	    var cityId = $(this).find('a').attr('city_id');
	    var oDealers = $('<div class="panel-container dealer c' + cityId + '"><div class="scroll-panel"><ul></ul></div></div>');
	    oDealers.find('ul').append(hidDealers.find('li.c' + cityId));
	    $('#city-dealers').append(oDealers);
	    checkHeight(oDealers, oDealers.find('div'), true);
	    oDealers.find('div').jScrollPane();
	    oDealers.css({visibility: 'visible'}).hide();
	});
    }
    function hideCityDealers() {
	$('#city-dealers div.panel-container').hide();
    }
    function initAutoClose() {
	$(document).click(function() {
	    hideCityObject();
	    hideCityDealers();
	});
    }
    function openDealers(cityId) {
	city.find('li').not('[city_id=' + cityId + ']').hide();
	city.find('.jScrollPaneTrack').hide();
	city.css({'height': '60px', 'overflow': 'hidden'}).find('li').hide().filter('.c' + cityId).show();
	hideCityDealers();
	object.find('div.panel-container').filter('.c' + cityId).show();
	city.find('div.scroll-panel').add('div.jScrollPaneDrag').css('top', '0');
    }
    function initLiteners(fCity, fDealer) {
	city.find('li').click(function() {
	    var oCity = $(this);
	    if (oCity.hasClass('active')) {
		oCity.removeClass('active');
		if (fCity) fCity('close', oCity);
		if (fDealers) {
		    hideCityDealers();
		    showAllCities();
		} else {
		    object.find('a.switch-button').html('все города<i class="pointer"></i>');
		}
	    } else {
		city.find('li').removeClass('active');
		oCity.addClass('active');
		if (fCity) fCity('open', oCity);
		if (fDealers) {
		    openDealers(oCity.find('a').attr('city_id'));
		} else {
		    object.find('a.switch-button').html(oCity.text() + '<i class="pointer"></i>');
		}
	    }
	    if (!fDealers) hideCityObject();
	    return false;
	});
	if (fDealers) {
	    $('#city-dealers li').click(function() {
		if (fDealer) fDealer();
		hideCityDealers();
		hideCityObject();
		//return false;
	    });
	}
    }
return {
    init: function(key, citiesListener, dealersListener) {
	object = $('#dealers');
	hidDealers = $('#hidden-dealers');
	/* Костыль. После того как поправим бузу убрать */
	hidDealers.find('li[dealer_id=59]').remove();
	/* end */
	city = object.find('div.panel-container').filter('.city');
	initCitySelect();
	initSwitch();
	if (key && hidDealers.size() > 0) {
	    fDealers = true;
	    createDealers();
	}
	initLiteners(citiesListener, dealersListener);
	initAutoClose();
    },
    close: function() {
	hideCityObject();
    }
}})();

var TopMenu = (function() {
    var obj, cur, curNumber;
    var setting = {
	maxCloseWidth: 69,
	closeWidth: {
	    step1: 159,
	    step2: 277,
	    step3: 195,
	    step4: 190
	},
	openWidth: {
	    step1: 725,
	    step2: 764,
	    step3: 737,
	    step4: 725
	}
    }
    function initListeners() {
	var timer = 0;
	obj.find('a.open').click(function() {
	    clearTimeout(timer);
	    cur = $(this).parent().parent();
	    curNumber = cur.find('i.step').text();
	    if (curNumber == 4) {
		obj.find('li').not(cur).animate({width: setting.maxCloseWidth + 'px'}, {complete: function() {
		    //cur.animate({ width: setting.openWidth['step' + curNumber] + 'px' });
		}}).find('div.close').fadeIn().end().find('div.open').fadeOut();
		cur.animate({width: setting.openWidth['step' + curNumber] + 'px'});
	    } else {
		obj.find('li').not(cur).not('.step4').animate({width: setting.maxCloseWidth + 'px'}, {complete: function() {
		    //cur.animate({ width: setting.openWidth['step' + curNumber] + 'px' });
		}}).find('div.close').fadeIn().end().find('div.open').fadeOut();
		cur.animate({width: setting.openWidth['step' + curNumber] + 'px'});
		obj.find('.step4').animate({width: (setting.maxCloseWidth - 44) + 'px'});
		obj.find('.step4').find('div.close').fadeIn().end().find('div.open').fadeOut();
	    }
	    cur.find('div.close').fadeOut().end().find('div.open').fadeIn();
	});
	obj.find('li').hover(function() {
	    cur = $(this);
	    clearTimeout(timer);
	    timer = setTimeout(function() {
		curNumber = cur.find('i.step').text();
		if (curNumber == 4) {
		    obj.find('li').not(cur).animate({width: setting.maxCloseWidth + 'px'}, {complete: function() {
			//cur.animate({ width: setting.openWidth['step' + curNumber] + 'px' });
		    }}).find('div.close').fadeIn().end().find('div.open').fadeOut();
		    cur.animate({width: setting.openWidth['step' + curNumber] + 'px'});
		} else {
		    obj.find('li').not(cur).not('.step4').animate({width: setting.maxCloseWidth + 'px'}, {complete: function() {
			//cur.animate({ width: setting.openWidth['step' + curNumber] + 'px' });
		    }}).find('div.close').fadeIn().end().find('div.open').fadeOut();
		    cur.animate({width: setting.openWidth['step' + curNumber] + 'px'});
		    obj.find('.step4').animate({width: (setting.maxCloseWidth - 44) + 'px'});
		    obj.find('.step4').find('div.close').fadeIn().end().find('div.open').fadeOut();
		}
		cur.find('div.close').fadeOut().end().find('div.open').fadeIn();
	    }, 400);
	}, function() {
	    clearTimeout(timer);
	    timer = setTimeout(function() {
		obj.find('li').not(':last').each(function() {
		    $(this).animate({width: setting.closeWidth['step' + $(this).find('i.step').text()] + 44 + 'px'});
		});
		obj.find('li:last').animate({width: setting.closeWidth.step4 + 'px'});
		obj.find('li div.open').fadeOut().end().find('div.close').fadeIn();
		obj.find('li').not(':last').animate({'margin-right': '0'});
	    }, 1500);
	});
    }
return {
    init: function() {
	obj = $('#main-menu');
	obj.find('div.close').each(function() {
	    if ($(this).css('display') == 'none') {
		$(this).css('display', 'block').fadeOut(0);
	    }
	});
	initListeners();
    }
}})();

var Showroom = (function() {
    var cars, texts, navigation, points;
    function initListeners() {
	navigation.click(function() {
	    var newCurItem = $(this);
	    if (!newCurItem.hasClass('cur')) {
		navigation.removeClass('cur');
		newCurItem.addClass('cur');
		texts.hide();
		$('#text' + newCurItem.text()).show();
		if ($.browser.msie) {
		    cars.not($('#car' + newCurItem.text())).hide();
		    $('#car' + newCurItem.text()).show();
		} else {
		    cars.not($('#car' + newCurItem.text())).fadeOut();
		    $('#car' + newCurItem.text()).css('opacity', 0).show().animate({opacity: 1}, {complete: function() {

		    }});
		}
	    }
	    return false;
	});
	$('#cars a').fancybox({
	    'titleShow': false,
            'padding': 5,
            'overlayOpacity': .7,
            'overlayColor': '#fff',
            'transitionIn': 'elastic',
	    'transitionOut': 'elastic'
        });
	$('#fancybox-close').html('×');
    }
return {
    init: function() {
	cars = $('#cars').find('div');
	texts = $('#texts').find('div');
	navigation = $('#sh-nav a');
	points = $('#cars').find('a');
	initListeners();
    }
}})();
var Video = (function() {
    var hidDealers, video, blank;
    var isVideo = false;
    var dealers = [];
    function getDealersArray() {
	$('#hidden-dealers ul li').each(function() {
	    var oItem = $(this);
	    if (oItem.attr('video_active') == '1') isVideo = true;
	    dealers.push({
		id: oItem.attr('dealer_id'),
		name: oItem.find('span.name').text(),
		address: oItem.find('span.address').text(),
		city: $('#cities li.c' + oItem.attr('city_id')).text(),
		cityId: oItem.attr('city_id'),
		active: oItem.attr('video_active'),
		videoId: oItem.attr('video_id')
	    });
	});
    }
    function initCitySelect() {
	CityDealersObject.init(true);
    }
    function showAddress() {
	var str = dealers[0].city + ', ' + dealers[0].address;
	if (str.length > 75) {
	    str = str.substr(0, 75);
	    str = str.split(' ');
	    str.pop();
	    str = str.join(' ');
	    var lCh = str[str.length - 1];
	    if (lCh == '.' || lCh == ',' || lCh == ':' || lCh == ';') str = str.substr(0, str.length - 1);
	    str = str + '…';
	}
 	$('#dealer-header h2').css({'margin-top': 0, 'font-size': '12px'}).html(str);
	setTimeout(function() {flashReplace('#dealer-header h2', {'font-size': '18px', 'margin-top': '5px', 'white-space': 'nowrap'}, '#ffffff');}, 100);
    }
    function printVideo() {
	showAddress();
	$('#fl').remove();
	if (dealers[0].active == 1) {
	    message.html('Пожалуйста, подождите');
	    if (isFlash) {
		video.append('<div class="video" id="fl"></div>');
		initVideo(dealers[0].videoId, dealers[0].id, dealers[0].cityId);
		video.show();
	    } else {
		message.html('У Вас не установлен flash player<br><a href="http://get.adobe.com/flashplayer/?promoid=BUIGP">Утановить Adobe Flash Player</a>');
		video.hide();
	    }
	} else {
	    message.html('<a href="/index/photo-gallery/#city_id=' + dealers[0].cityId + '&dealer_id=' + dealers[0].id + '" style="font-size: 1.1em;">Смотреть фото</a><br>В данный момент<br>трансляция недоступна');
	    video.hide();
	}
    }
    function getVideo(dir) {
	if (dir && isVideo) {
	    (dir < 0) ? prev() : next();
	    (dealers[0].active != 1) ? getVideo(dir) : printVideo();
	} else {
	    printVideo();
	}
    }
    function prev() {
	dealers.unshift(dealers.pop());
    }
    function next() {
	dealers.push(dealers.shift());
    }
    function initVideo(videoId, dealerId, cityId) {
    timeShift = $('.c'+cityId)[0].getAttribute('timeshift')
	if (cityId == 1) {
	    var so = swfobject.embedSWF("/player/player.swf", "fl", "650", "440", "10.0.0", "/event/expressInstall.swf",
		{
		    "server": "&mainUrl=rtmp://kkm-live.ngenix.net/live/mp4:id"+dealerId+"&alternativeUrl=http://bigfluence.ru/video_files/files/fluence-ad.mp4&test=false&timeoffset="+timeShift,
		    "stream": "live_7.flv",
		    "autoplay": "true",
		    "logo": "/reno/reno_mini.png",
		    "preview": "/reno/reno.png",
		    "allowFullScreen": "true",
		    "logoAlign": "right",
		    "bufferTime": "3",
		    "sound": false
		},
		{
		    "wmode": "opaque",
		    "allowScriptAccess": "always",
		    "allowFullScreen": "true",
		    "bgcolor": "#fbfbfb"
		}
	    );
	} else {
	    var so = swfobject.embedSWF("/player/player.swf", "fl", "320", "240", "10.0.0", "/event/expressInstall.swf",
		{
		    "server": "&mainUrl=rtmp://kkm-live.ngenix.net/live/mp4:id"+dealerId+"&alternativeUrl=http://bigfluence.ru/video_files/files/fluence-ad.mp4&test=false&timeoffset="+timeShift,
		    "stream": "live",
		    "autoplay": "true",
		    "logo": "/reno/reno_mini.png",
		    "preview": "/reno/reno.png",
		    "allowFullScreen": "true",
		    "logoAlign": "right",
		    "bufferTime": "1"
		},
		{
		    "wmode": "opaque",
		    "allowScriptAccess": "always",
		    "allowFullScreen": "true",
		    "bgcolor": "#ffffff"
		}
	    );
	}
    }
    function initNavigation() {
	$('#video-gallery a.previous').click(function() {
	    getVideo(-1);
	    return false;
	});
	$('#video-gallery a.next').click(function() {
	    getVideo(1);
	    return false;
	});
	$('#city-dealers').delegate('li', 'click', function() {
	    var dealerId = $(this).attr('dealer_id');
	    if (dealers[0].id != dealerId) {
		while(dealers[0].id != dealerId) {
		    next();
		}
		getVideo();
	    }
	    return false;
	});
    }
    function getIdFromHash() {
	var addParam = document.location.hash;
	var id;
	if (addParam && addParam.match(/id=\d+/)) {
	    id = addParam.match(/id=\d+/)[0].match(/\d+/)[0];
	    if (id && parseInt(id)) {
		return id;
	    }
	}
	return false;
    }
    function setActiveDealer(id) {
	if (dealers[0].id != id) {
	    while(dealers[0].id != id) {
		next();
	    }
	}
    };
    function findActiveVideo() {
	if (isVideo) {
	    if (dealers[0].active != '1') {
		while(dealers[0].active != '1') {
		    next();
		}
	    }
	}
    }
return{
    init: function() {
	hidDealers = $('#hidden-dealers ul');
	video = $('#video-gallery div.video-container');
	blank = $('#video-gallery div.blank');
	message = $('#video-gallery p.message');
	getDealersArray();
	initCitySelect();
	var hours = (new Date()).getHours();
	/*if (hours < 4 || hours >=20) {
	    setActiveDealer(55);
	    dealers[0].active = 1;
	} else {
	    if (getIdFromHash()) {
		setActiveDealer(getIdFromHash());
	    } else findActiveVideo();
	}*/
	for (var i = 0; i < dealers.length; i++) {
	    dealers[i].active = 1;
	}
	getVideo();
	initNavigation();
    }
}})();
var TopBanner = (function() {
    var banner, text, texts;
    text = [];
    var cur = 0;
    var TIMEOUT = 7000;
    var timer = 0;
    function switchText() {
	cur++;
	if (cur > text.length - 1) cur = 0;
	texts.not(text[cur]).fadeOut();
	text[cur].fadeIn();
    }
return {
    init: function() {
	banner = $('#top-banner');
	text[0] = banner.find('p.text1');
	text[1] = banner.find('p.text2');
	text[2] = banner.find('p.text3');
	texts = banner.find('p');
	setInterval(switchText, TIMEOUT);
    }
}})();
function flashReplace(selector, css, color) {
    css = css || '';
    if (isFlash && $(selector) && $(selector).size() > 0) {
	color = color || '#000000';
	$(selector).css(css).flash(
	    {
		src: '/helvetic.swf',
		wmode: 'transparent',
		flashvars: {
		    css: '* { color: ' + color + '; }'
		}
	    },
	    {version: 7},
	    function(htmlOptions) {
		if ($(this).css('text-transform') == 'uppercase') {
		    ($(this).find('a').size() > 0) ? $(this).find('*').each(function() {$(this).html($(this).html().toUpperCase());}) : $(this).html($(this).html().toUpperCase());
		}
		htmlOptions.flashvars.txt = this.innerHTML;
		this.innerHTML = '<span>'+this.innerHTML+'</span>';
		var $alt = $(this.firstChild);
		htmlOptions.height = $alt.height();
		htmlOptions.width = $alt.width();
		$alt.addClass('alt');
		$(this).addClass('flash-replaced').prepend($.fn.flash.transform(htmlOptions));
	    }
	);
    }
}
var TechForm = (function() {
    var fly, butClose, butSubmit, butTopClose, form, message;
    function initFly() {
	form[0].reset();
	butSubmit.show();
	butClose.hide();
    }
    function initSendForm() {
	Form.initForm(form, function() {
	    butSubmit.hide();
	    butClose.show();
	}, true);
    }
    function initOpen() {
	$('a#printForm').click(function() {
	    form[0].reset();
	    butSubmit.show();
	    butClose.hide();
	    showFly(fly, true);
	    return false;
	});
    }
    function initClose() {
	butTopClose.add(butClose).click(function() {
	    hideFly(fly, true);
	    return false;
	});
    }
    function initListeners() {
	initOpen();
	initClose();
	initSendForm();
    }
return {
    init: function() {
	fly = $('#tech-form');
	butClose = fly.find('input.button-close');
	butSubmit = fly.find('input.button-submit');
	butTopClose = fly.find('a.close');
	form = fly.find('form');
	message = fly.find('p.message');
	initFly();
	initListeners();
    }
}})();
var PrizeGallery = (function() {
    var preview, gallery, next, prev;
    var cur = 0;
    var count = 5;
    var flag = true;
    function showButton() {
	next.add(prev).hide();
	if (cur != 0) prev.show();
	if (cur != count - 1) next.show();
    }
    function initListeners() {
	prev.click(function() {
	    if (cur > 0) showItem(--cur);
	    return false;
	});
	next.click(function() {
	    if (cur < count - 1) showItem(++cur);
	    return false;
	});
	preview.find('li').click(function() {
	    showItem(cur = preview.find('li').index($(this)));
	    return false;
	});
    }
    function showItem() {
	if (flag) {
	    flag = false;
	    gallery.find('img').not(':eq(' + cur + ')').fadeOut();
	    gallery.find('img:eq(' + cur + ')').fadeIn('normal', function() {
		flag = true;
	    });
            $('.cool-stories .story').hide();
            $('.cool-stories .story:eq('+cur+')').show();
	    preview.find('li').not(':eq(' + cur + ')').find('img').css('opacity', .5);
	    preview.find('li:eq(' + cur + ') img').css('opacity', 1);
	    showButton();
	}
    }
return {
    init: function() {
	preview = $('#prizes-preview');
	gallery = $('#prizes-gallery');
	next = $('#prizes-next');
	prev = $('#prizes-prev');
	preview.find('img').not(':first').css('opacity', .5);
	initListeners();
	showButton();
    },
    setCurrent: function(item){
        cur = item;
    }
}
})();
var isFlash;
var isIe = $.browser.msie || null;
$(document).ready(function() {
    TopBanner.init();
    isFlash = _Flash.hasFlash();
    if (_Flash.hasFlash()) {
	var playerVersion = swfobject.getFlashPlayerVersion();
	isFlash = (playerVersion.major > 6) ? true : false;
    }
    if ($('#cabinet').size() > 0) Cabinet.init();
    if ($('#about').size() > 0) About();
    if ($('#objects ul').size() > 0 && $('#preview ul').size() > 0) {
	DBGallery.init($('#objects div.gallery-container'), $('#preview div.preview-container'), $('#gallery-filter'), $('#gallery-previous'), $('#gallery-next'), $('#preview-previous'), $('#preview-next'));
	/*(window.onePhotoData) ? DBGallery.buildPage(window.onePhotoData, window.photoId) : */DBGallery.getPage();
    }
    if ($('#dealers-gmap').size() > 0) Dealers.init();
    //TopMenu.init();
    PrizeGallery.init();
    if ($('#top20').size() > 0) Top20Gallery.init($('#banner-top20 p.top20 a'));
    if ($('#showroom').size() > 0) Showroom.init();
    if ($('#video-gallery').size() > 0) Video.init();
    if ($('#printForm').size() > 0) TechForm.init();
    $('#feed-back, #feed-back > div, #tech-form').css({display: 'block', visibility: 'hidden'});
    //flashReplace('h1', { 'font-size': '30px', 'margin': '10px 0 8px -3px', 'line-height': '30px' });
    $('#cabinet h1, #feed-back h1, #tech-from h1').css({'margin': '0 0 0 -3px'});
    $('#feed-back, #feed-back > div, #tech-form').css({display: 'none', visibility: 'visible'}).removeAttr('style');
    $('#top20 h1').html('Топ 20');
    $('#top20').css({'display': 'block', 'visibility': 'hidden'});
    flashReplace('#top20 h1', {'font-size': '30px', 'margin': '0 0 8px -3px', 'line-height': '30px'});
    $('#top20').css({'display': 'none', 'visibility': 'visible'});
    if (isIE7) {
    } else {
	//flashReplace('#competition-menu li span', { 'display': 'block', 'font-size': '18px', 'margin': '4px 0 0 4px', 'white-space': 'nowrap' }, '#ffffff');
    }
    if (isFlash) $('#texts li i').show();
    $('#texts > div').not(':first').show().css({position: 'absolute', 'top': 0, 'visibility': 'hidden'});
    flashReplace('#texts p', {'font-size': '16px'});
    $('#texts > div').not(':first').hide().css({position: 'relative', 'visibility': 'visible'});
    if ($('#video-gallery').size() == 0) flashReplace('#dealer-header h2', {'font-size': '18px', 'margin-top': '5px'}, '#ffffff');
    flashReplace('#about div.links p', {'margin-top': '38px'});
    if (isFlash) $('#about div.description a i').css('display', 'block');
    flashReplace('#prizes h3', {'font-size': '18px', 'margin': '10px 0 0 -3px', 'line-height': '18px'});
    flashReplace('#jury h2 span', {'font-size': '20px', 'margin': '10px 0 0 -5px', 'line-height': '20px'});
    flashReplace('#code label', {'font-size': '18px', 'margin': '0 0 0 -3px', 'line-height': '18px'});
//    if (isFlash) {
//	flashReplace('#banner-top20 p.f-r', { 'height': '33px', 'font-size': '34px', 'line-height': '34px', 'margin': '0 0 0 -3px' }, '#9f9fa3');
//	$('#banner-top20 p.f-r').css({ 'margin': '0 0 6px -3px' });
//	if (isIE7) $('#banner-top20 p.f-r').css({ 'margin': '4px 0 6px -3px' });
//    }
    if ($('#key-visuals_').size() > 0) {
	if (isFlash) {
	    $('#key-visuals_').css('top', '0px').append('<div id="renault_baner"></div>');
	    var flashvars = {};
	    var params = {
		wmode: "opaque",
		menu:"true",
		allowFullScreen:"true",
		allowScriptAccess:"always"
	    };
	    var attributes = {
		id: "myDynamicContent",
		name: "myDynamicContent"
	    };
	    swfobject.embedSWF("http://www.bigfluence.ru/video_files/banner/renault_banner4.swf", "renault_baner", "100%", "500", "9.0.0", false, flashvars, params, attributes);
	} else {
	    $('#key-visuals_').append('<iframe src="/key-visuale.html" name="keyVisuale" frameborder="0" height="498" width="100%" scrolling="no"></iframe>');
	}
    }

});
