﻿$(function(){
	loadPoints('/Themes/AGT/js/points.xml');
	textSwitcher();
});
var xmlData = null;
var loadedPoints = new Array();

/**
 * Загрузить xml с точками для карты.
 *
 * @param {String} xmlFile Имя xml-файла
 */
function loadPoints(xmlFile) {
	$.get(xmlFile, {time: String(new Date().getTime())}, buildPoints, 'xml');
}

/**
 * Расставляем actions ссылок, нажатие по которым отображает точки на карте.
 *
 */
function buildPoints(data) {
	var obj = '#points';
	var data = $(data);
	xmlData = data;
	var secCount = data.find('section').length;
	for (var i = 0; i < secCount; i++) {
		var section = data.find('section').eq(i);
		var secType = section.attr('type'); // ex key
		eval("$('li#" + secType + " a').click(function(){ loadPoint(" + i + "); $(this).parent().parent().find('li a').removeClass('cur'); $(this).addClass('cur'); $('" + obj + " li').hide(); $('li.p-" + secType + "').fadeIn(); return false; });");
	}
}
var t = '';
var actionq = true;

$(document).ready(function(){

//t = setInterval("actionq = true;$('#calend h4').click();", 5000);

});

/**
 * Вывести точки определенной секции.
 *
 * @param {Number} sectionInd Идентификатор секции
 */
function loadPoint(sectionInd) {
	if (loadedPoints[sectionInd] != true) {
		loadedPoints[sectionInd] = true;
		var obj = '#points';
		var html = '';
		var section = xmlData.find('section').eq(sectionInd);
		var secType = section.attr('type'); // ex key
		var pointsCount = section.find('point').length;
		for (var j = 0; j < pointsCount; j++) {
			var point = section.find('point').eq(j);
			var link = point.attr('link');
			var title = point.attr('title');
			html += '<li class="p-' + secType + ' ico-' + point.attr('ico') + '" style="left:' + point.attr('x') + 'px; top:' + point.attr('y') + 'px">'
					+ '<span>' + title + '</span>'
					+ '<div><div><a href="' + link + '"><img src="' + point.attr('img') + '" alt="" /></a><p><a href="' + link + '">' + title + '</a>'+ point.text() + '</p><br style="clear:both" /></div></div>'
					+ '</li>';
		}
		$(obj).append(html);
		$(obj + ' li').mouseover(function(){ $(this).find('div').stop().show().css('opacity','1'); $(this).find('span').css('opacity','1'); $(this).css('z-index','100'); });
		$(obj + ' li').mouseout(function(){ $(this).find('div').hide(); $(this).css('z-index','1'); $(this).find('span').css('opacity','0.6');  });
	}
}

// =====--- ПЕРЕКЛЮЧАТЕЛИ ---=====
var monthListUrl = ['calendar_jan', 'calendar_feb', 'calendar_mar', 'calendar_apr', 'calendar_may', 'calendar_jun', 'calendar_jul', 'calendar_aug', 'calendar_sep', 'calendar_oct', 'calendar_nov', 'calendar_dec'];
var avachaGif = "/Themes/AGT/img/avacha.gif";
var disableSwitch = false;
/** 
 * Блок переключатель (календарь, 10 причин)
 */
function textSwitcher() {
	// Назначаем события на кнопки переключатлей
	$('.text-switcher h5, .text-switcher h4').click(tsShowItem);
			
	// Удаляем мусор из календаря
	$('#calend ul div li').hide().appendTo('#calend ul');
	$('#calend ul div').remove();
	$('#calend ul div').remove();
	
	// Отображаем ближайшее событие в календаре
	findNextEvent( (new Date).getMonth() ).show()
	
	// Отображаем первую причину
	$('#cause li:first-child').show();
	
	// Показываем иллюстрации видимого элемента
	$('.text-switcher li:visible').each(function(){
		var bg = $(this).find('img').attr('src');
		bg = bg.match(/\.jpg|\.gif|\.png/i) ? bg : '/Themes/AGT/img/calendar.jpg';
		// Анимированный баннер для дня вулкана
		// if ($.trim( $(this).find('.itemBriefDescription p').text() ) == '27 - 29 августа') { bg = avachaGif; }
		$(this).parent().parent().parent().find('.ts-pic').css('background-image', "url('" + bg + "')");
	});
}


/**
 * Поиск ближайшего события.
 *
 * @param	int		Номер месяца (отсчет с нуля)
 * @param	int		Кол-во проведенных итераций поиска (для защиты от зацикливания, если вдруг календарь пуст)
 * @return	Object	Найденное событие
 */
function findNextEvent(monthNum, iterationCount) {
	iterationCount = iterationCount == undefined ? 0 : iterationCount;
	var event = $('#calend li h3 a[href*="' + monthListUrl[monthNum] + '"]').eq(0).parent().parent();
	if ( event.text() == '' && ++iterationCount < monthListUrl.length) {
		monthNum = ++monthNum < 12 ? monthNum : 0;
		event = findNextEvent(monthNum, iterationCount);
	}
	return event;
}

/**
 * Показать элемент списка блока-переключателя
 */
function tsShowItem() {

	if (!actionq)
		clearInterval(t);

	actionq = false;
		
	if (disableSwitch) return;
	disableSwitch = true;
	
	var box = $(this).parent().parent();
	var curElem = box.find('ul li:visible');
	
	var direction = this.tagName.toLowerCase() == 'h4' ? 'next' : 'prev';
	if (direction == 'next') { // вперед
		if ( curElem.next().is(':hidden') ) {
			var shown = curElem.hide().next().show();
		} else {
			curElem.hide();
			var shown = curElem = box.find('ul li:first').show();
		}
	} else { // назад
		if ( curElem.prev().is(':hidden') ) {
			var shown = curElem.hide().prev().show();
		} else {
			curElem.hide();
			var shown = curElem = box.find('ul li:last').show();
		}
	}
	
	box.find(':header, ul').hide().fadeIn(570);
	
	// Иллюстрации
	var bg = shown.find('img').attr('src');
	bg = bg.match(/\.jpg/i) ? bg : '/Themes/AGT/img/calendar.jpg';
	/*if ($.trim( shown.find('.itemBriefDescription p').text() ) == '27 - 29 августа') {
		bg = avachaGif;
	}*/
	box.find('.ts-pic2').hide().css('background-image', "url('" + bg + "')").fadeIn(400, function(){
		box.find('.ts-pic').css('background-image', $(this).css('background-image') );
		$(this).hide();
		disableSwitch = false;
	});
	
	// Извлекаем номер текущего элемента
	var index = box.find('li').index(shown) + 1;
	box.find('.ts-inf>h3').text(index);
}
