// Забор 1.01 от 10.11.2008
// © 2008 Селезнёв Д. Л., info@webfilin.ru

var MAX_ZINDEX = 1000;
var MAX_LEN_MESSAGE = 64;

var selectedColor = 'orange';
var zilNode = null;

$(window).load(function() {
    if (checkForFlash(8)) {
		var sound = $('<div id="sound"></div>').appendTo('body');
		sound.jPlayer({
			swfPath: '/js',
			ready: function() {
				sound.setFile('/border/music/twit.mp3');
				sound.play();
			}
		});		
    }
	
	$('#super-border').html(makeBorder());
	$('#super-border .message').click(function() {
		if (zilNode)	$(zilNode).css('z-index', zilNode.id.replace(/message/, ''));
		$(this).css('z-index', MAX_ZINDEX - 1);
		zilNode = this;
	});
	
	$('#new-message').draggable();

	var kolbasa = null;
	var superBorderHeight = $('#super-border').height();
	$('#switch-type .s2').hide();
	$('#switch-type').show();
	$('#super-border .message').each(function (i) {
			$(this).data('bufLeft', this.style.left).data('bufTop', this.style.top);
	});
	
	$('#switch-type span.inside').click(function () {	
		if (!kolbasa) {
			$('#super-border .message').each(function (i) {
				$(this).animate({left: '100px', top: 100 + i * (this.offsetHeight + 5) + 'px'}, 1000);
			});
		
			var m = $('#super-border .message');
			$('#super-border').height(100 + (m.length + 1) * (m.get(0).offsetHeight + 5));
			$('#switch-type .s2').show();
			$('#switch-type .s1').hide();
			kolbasa = true;
		}
		else {
			$('#super-border .message').each(function (i) {
				$(this).animate({left: $(this).data('bufLeft'), top: $(this).data('bufTop')}, 1000);
			});
		
			$('#super-border').height(superBorderHeight);		
			$('#switch-type .s1').show();
			$('#switch-type .s2').hide();
			kolbasa = false;
		}
	});
	
	$('#add-text').click(function() {
		$('#add-form').toggle();
		$('#add-form input:text').focus();
		
		if ($('#add-form input:text').val()) {
			$('#add-form-submit')[0].disabled = false;
		}
		else {
			$('#add-form-submit')[0].disabled = true;
		}
		
		if ($('#add-form').is(':visible')) {
			$('#new-message').html(getNewMessage()).show();
		}
		else {
			$('#new-message').hide();
		}
	});

	$('#add-form input:text').keyup(function() {
		$('#new-message').html(getNewMessage());
		if ($('#add-form input:text').val()) {
			$('#add-form-submit')[0].disabled = false;
		}
		else {
			$('#add-form-submit')[0].disabled = true;
		}		
	});

	$('#add-form span.cube').click(function(event) {
		$('#add-form span.cube').removeClass('selected');
		$(this).addClass('selected');
		selectedColor = this.id;
		$('#new-message').attr('class', 'new-message ' + selectedColor);
		$('#add-form input:text').focus();
	});

	$('#add-form-submit').click(function() {
		var x = $('#new-message')[0].offsetLeft;
		x = Math.floor($('#new-message')[0].offsetLeft / $('#super-border').width() * 100);
		var y = $('#new-message')[0].offsetTop;
		
		$('#new-message').draggable('destroy').css('cursor', 'text').addClass('message').removeClass('new-message');
		
		$('#add-form').hide();
		
		var text = $('#add-form input:text').val();
		if (stripSpaces(text)) {
			$('#add-text').hide();
			setCookie('nsb', '1', getExpDate(60, 0, 0));
			$.post('index.php?action=save', {x: x, y: y, color: selectedColor, text: text});
		}
		else {
			$('#add-form, #new-message').hide();
		}
	});

	//if (!getCookie('nsb'))
	//{
		$('#add-text').show();
	//}
});

function getNewMessage() {
	var text = $('#add-form input:text').val().substr(0, MAX_LEN_MESSAGE);
	text = text.replace(/\&/g, '&amp;');
	text = text.replace(/</g, '&lt;');
	text = text.replace(/>/g, '&gt;');
	
	return text;
}

function makeBorder() {
	var text = '';
	var len = borderMessages.length;
	
	for (var i = 0; i < len; i++) {
		text += '<div id="message' + (len - i) + '" class="message ' + borderMessages[i].color + '" style="left:'+borderMessages[i].x + '%; top:' + borderMessages[i].y + 'px; z-index:' + (len - i) + '">' + borderMessages[i].text + '</div>';
	}

	var y = Math.floor($('#super-border').height());
	
	// Чтобы новая запись была видна без прокрутки вертикального скрола страницы
	y -= Math.floor(y / 3);
	y = getRandom(y);
	var x = getRandom(90);
	
	// Чтобы новая запись не попадала под форму ввода
	if (x > 70 && y < 200)	y = 300;
	
	$('#add-form span.cube').removeClass('selected');
	selectedColor = $('#add-form span.cube')[getRandom($('#add-form span.cube').length - 1)].id;
	$('#'+selectedColor).addClass('selected');
	
	text += '<div class="new-message ' + selectedColor + '" id="new-message" style="left:' + x + '%; top:' + y + 'px; z-index:' + MAX_ZINDEX + ';"></div>';
	
	return text;
}

function getRandom(n) {
	return Math.floor(Math.random() * n);
}

function stripSpaces(text) {
	return text.replace(/[ \r\n\t]/g, '');
}
