$(function() {	
	if ($.datepicker.regional[LANG] == null) LANG= '';
	$.datepicker.setDefaults($.datepicker.regional[LANG]);

	// вкладки быстрого подбора тура и поиска отеля
	initTabs();
	
	// просмотр заявки
	initCheckOrder();
	
	// акордион на первой стр.
	initAccordion();	
	
	// загрузка данных (типы отдыха)
	loadRestTypeData();
	
	// загрузка данных (тезрекомендует)
	loadRecommendData();	
	
	// флешка со странами
	if ($.browser.flash) {
		showFlash(
				'media/worldmap_02.swf'
				, '520'
				, '280'
				, 'transparent'
				, ''
				, {
					'xmlFile' : 'map/countries.html',
					'countryXMLfile' : 'map/country.html?countryId=',
					'txtStyleFile' : 'css/worldmap_styles.css'
				}
				, $('#world-map-tez')
		);		
	} else {
		$('#world-map-tez .world-map-tez-noflash').show();
	}	
	
	// банер каталога стран с загрузкой кол-ва отелей 
	initCatalogBanner();
	loadDepartureCountries();	
	
	// ajax для проверки времени вылета
	loadArrivalCountries();	
	
	loadTextSiteBanners();
	
	loadFooterSiteBanners();
	
	loadSpoSiteBannersBanners();
	
	// загрузка данных (акции)
	loadActionData();
	
	// загрузка данных (акции)
	loadHotelRatingData();
	
	// проверка времен вылета
	initFlightDeparture();
});

function initCheckOrder() {
	$('#checkOrder input[name=orderId]').focus(function() {
		if($.trim($(this).val())==ORDER_ID) $(this).val('');
	}).blur(function() {
		if($.trim($(this).val())=='') $(this).val(ORDER_ID);
	});	
	
	$('#checkOrder').submit(function() {
		var $orderId = $('#checkOrder input[name=orderId]');
		if ($orderId.val() == '' || $orderId.val() == ORDER_ID || isNaN($orderId.val())) {
			showMessage('Введите номер заявки.')
			return false;
		}
		
		var ordId = $(':text', this).val();
		loadOrderInfo(
				'orderStatus.html?id=' + ordId 
				, ordId
				, function() {
					$.fancybox({			
						'padding'        : 0,
						'titleShow'		 : false,
						'href'           : '#order-panel'		
					});
				}
		);
		return false;
	});
}

function initFlightDeparture() {
	$('#aviaReferenceSearch input[name=flightNumber]').focus(function() {
		if($.trim($(this).val())==FLIGHT_NUMBER) $(this).val('');
	}).blur(function() {
		if($.trim($(this).val())=='') $(this).val(FLIGHT_NUMBER);
	}).trigger('blur');
	
	$('#aviaReferenceSearch input[name=depDate]').focus(function() {
		if($.trim($(this).val())==DEP_DATE) $(this).val('');
	}).blur(function() {
		if($.trim($(this).val())=='') $(this).val(DEP_DATE);
	}).trigger('blur');
	
	$('#aviaReferenceSearch input[type=button]').click(function() {
		aviaReferenceSearch(FLIGHT_NUMBER, DEP_DATE);
	});
}

function initBannersCarousel() {
	$('.carousel-links a:first').addClass('link-selected');
	$('.banners-carousel-body a:not(:first)').hide();
	
	var $autoBannerCarusel = getAutoBannerCarusel();
	
	$('.banners-carousel-body a').hover(
		function() {
			clearInterval($autoBannerCarusel);
		}, function() {
			$autoBannerCarusel = getAutoBannerCarusel();
		}
	);	
	
	$('.carousel-links a').click(function(){
		$activeLink = $(this);
		
		$('.banners-carousel-body a').removeClass('active');
		var bannerID = $(this).attr('href');		
		
		$(this).toggleClass('link-selected');
		$(this).siblings('a').removeClass('link-selected');
		
		$('.banners-carousel-body a[id='+bannerID+']').show().siblings('a').hide();
		return false;
	}).hover(
		function() {
			clearInterval($autoBannerCarusel);
		}, function() {
			$autoBannerCarusel = getAutoBannerCarusel();
		}
	);
} 

var $activeLink;
function getAutoBannerCarusel() {
	return setInterval(
			function(){
				if (!$activeLink) $activeLink = $('.carousel-links a:first');
				$activeLink = $activeLink.next().size() == 0 ? $('.carousel-links a:first') : $activeLink.next();
				$activeLink.click();
			}
			, 5000
	);	
}

function initAccordion() {	
	$('.accordion-body h3 a.acc-title:first').addClass('select');
	$('.accordion-body div.acc-item-body:not(:first)').hide();

	$('.accordion-body h3').click(function(){
		if ($(this).children('a').attr('class') != 'acc-title select') {
			$('.accordion-body h3 a.acc-title').removeClass('select');
			$('.accordion-body div.acc-item-body').hide();
			$(this).children('a.acc-title').toggleClass('select');
			$(this).next('div.acc-item-body').show();
			
			if (!$.browser.msie) $(this).next('div.acc-item-body').tinyscrollbar();
		}
		return false;
	});
}

function initTabs() {
	var tabContainers = $('div.form-tabs > div.container'); // получаем массив контейнеров
	var $captionTabs = $('div.form-tabs ul.tabNavigation a'); 
	// далее обрабатывается клик по вкладке
	$captionTabs.click(function() {
		tabContainers
			.hide() // прячем все табы
			.filter(this.hash)
			.show(); // показываем содержимое текущего
		$captionTabs.removeClass('selected'); // у всех убираем класс 'selected'
		$(this).addClass('selected'); // текушей вкладке добавляем класс 'selected'
		
		$.cookie('tez-index-select-tab', '.tabNavigation a[href='+this.hash+']', { expires: 365, path: '/'});
		return false;
	}); 
	
	var selectTab = $.cookie('tez-index-select-tab');
	if( selectTab == null ) selectTab = '.tabNavigation a[href=#tab-1]';
	// обратная совместимость с ие6, без таймера не прятал элементы управления с первой страницы
	setTimeout(
		function() {
			$(selectTab).click();			
		}
		, 1000
	);
}

function showMessage(message) {
	$('#order-panel').html('').append(message);
	$.fancybox({
		'titlePosition'	: 'inside',
		'transitionIn'	: 'none',
		'transitionOut'	: 'none',
		'href'			: '#order-panel'
	});
}

function loadArrivalCountries() {
	var url = "referenceFlight.html";

	$.getJSON(url, function(data) {
		var $country = $('#arrivalCountryId');
		$.each(data.arrivals, function(i, arrival) {
			if (arrival.countryId == 1104) {
				$('<option>')
				  .attr('value', arrival.countryId)
				  .attr('selected', "selected")
				  .append(arrival.country)
				  .appendTo($country);				
			} else {
				$('<option>')
				  .attr('value', arrival.countryId)
				  .append(arrival.country)
				  .appendTo($country);
			}
			
		});
	});
}

function aviaReferenceSearch(flightNumberText, depDateText) { 
	if ($.trim($('#flightNumber').val()) == flightNumberText) {
		$('#flightNumber').val('');
	}
	if ($.trim($('#dateRange-to').val()) == depDateText) {
		$('#dateRange-to').val('');
	}

	if ($.browser.msie) {
		$('#aviaReferenceSearch input[name=lite]').val('false');
		$('#aviaReferenceSearch').submit();	
	} else {
		var $form = $('#aviaReferenceSearch');
		$.fancybox({			
			'padding'       : 0,
			'width'         : 700, 
			'titleShow'		: false,
			'type'			: 'iframe',		
			'href'          : $form.attr('action') + '?' + $form.serialize(),	
			'transitionIn'	: 'none',
			'transitionOut'	: 'none',
			'onClosed'      : function() {
				$('#aviaReferenceSearch input[name=flightNumber]').trigger('blur');
				$('#aviaReferenceSearch input[name=depDate]').trigger('blur');
			}
		});		
	}
}

function loadOrderInfo(URL_ORDER, orderId, callback) {
	if (!URL_ORDER) return false;
	
	$.getJSON(URL_ORDER, function(data) {
		if (data.success) {
			var $mainPanel = $('#order-panel'),
				$table = $('<table>'),
				$tableBody = $('<tbody>');
			
			$mainPanel.html('');	
			$('<h1>').append(ORDER_NUMBER + ': ' + orderId).appendTo($mainPanel);
			$table.addClass('resStatus-table').appendTo($mainPanel);
			
			$table.before(
				data.isCalculated
				? $('<div>').addClass('status-confirmed').text(ORDER_CALC)
				: $('<div>').addClass('status-released').text(ORDER_NOT_CALC) 
					
			);

			if (data.status != 'released')
				$table.before(
						data.isDocumentsReady 
						? $('<div>').addClass('status-confirmed').text(ORDER_DOCS_READY)
						: $('<div>').addClass('status-released').text(ORDER_DOCS_NOT_READY)
				);
			
			if (data.status == 'released')
				$table.before($('<div>').addClass('status-released').text(ORDER_RELEASED));

			if (data.status == 'confirmed')
				$table.before($('<div>').addClass('status-confirmed').text(ORDER_CONFIRMED));

			if (data.status == 'onProcess')
				$table.before($('<div>').addClass('status-onprocess').text(ORDER_ON_PROCESS));
			
			if (data.isDocumentsReady) {
				$('<tr><th>' + FLIGHT_NUMBER + '</th><td>' + data.flightNumber + '</td></tr>').appendTo($tableBody);
				$('<tr><th>' + DEP_DATETIME + '</th><td>' + data.departureDateTime + '</td></tr>').appendTo($tableBody);
				$('<tr><th>' + ARRIVAL_AIRPORT + '</th><td>' + data.arrivalAirport + '</td></tr>').appendTo($tableBody);
				$('<tr><th>' + ARRIVAL_CITY + '</th><td>' + data.arrivalCity + '</td></tr>').appendTo($tableBody);
				$.each(data.hotels, function(i, hotel) {
					$('<tr><th>' + HOTE_NAME + '</th><td>' + hotel.hotelName + '</td></tr>').appendTo($tableBody);
					$('<tr><th>' + CHECK_IN + '</th><td>' + hotel.hotelCheckIn + '</td></tr>').appendTo($tableBody);
					$('<tr><th>' + CHECK_OUT + '</th><td>' + hotel.hotelCheckOut + '</td></tr>').appendTo($tableBody);									
				});
			}
			
			$tableBody.appendTo($table);
			if (data.isDocumentsReady)
				$table.after($('<p>').append(ORDER_WARNING)).after($('<br>'));
			
			if (callback) callback();
		} else {
			showMessage(data.error);
		}
		
	});
}

function loadTextSiteBanners() {
	//right baners
	$.getJSON("textSiteBanners.html", function(data) {	
		if (data.success) {
		    var content = "";
			if (data.siteBanners.length > 0) {
			  $.each(data.siteBanners, function(i, item) {				  
				  content +=  '<a  href="' + item.link + '" class="shadow-block">';	  
				  content += '<h3>' + item.title + '</h3>';
				  content += '<img title="' + item.title + '" src="' +  IMAGE_BANNER_DIR  + item.url +'">';
				  content += '<h4>' + item.text + '</h4>';
				  content += '</a>';
			  });
			  $('#right-banners-body').append(content);
		  }
		}
	});	
}

function loadFooterSiteBanners() {
	$.getJSON("footerSiteBanners.html", function(data) {	
		if (data.success) {
			//var $content = $('#bottom-banners');
			if (data.siteBanners.length > 0) {
			  var buffer = "";
			 
			  $.each(data.siteBanners, function(i, item) {				  
				  if (item.url.lastIndexOf(".swf") > 0) {
					  buffer = '<div id="f'+i+'"><script language="JavaScript">';
					  buffer += 'var params = {"link":"' +item.link + '","target":"blank"};';
					  buffer += ' showFlash("' + FOOTER_BANNER_DIR + item.url + '","235","80","transparent","",params, $("#f'+i+'"))';
					  buffer += '</script></div>';	
				  } else {
					  buffer = '<div><a href="' + item.link + '"><img  border="0" src="'+ FOOTER_BANNER_DIR + item.url + '"/></a></div>';					  					  
				  }
				  $('.bottom-banners').append(buffer);
			  });
			  
		  }
		}
	});	
}

function loadSpoSiteBannersBanners() {
	$.getJSON("spoSiteBanners.html", function(data) {	
		if (data.success) {
		    var content = "";
		    var links = "";
			if (data.siteBanners.length > 0) {
			  $.each(data.siteBanners, function(i, item) {				  
				  var price = ( typeof item.price !== 'undefined' && item.price != null) ? '<td class="td2"><b>'+item.price+'</b></td>' : '';
				  content +=  '<a href="' +item.link +'" id="' +item.id +'" class="carousel-item" style="background-image: url('+SPO_BANNER_DIR + item.url +');">';	  
				  content += '<em>';
				  content += '<table>';
				  content += '<tr>';
				  content += '<td class="td1"><b>'+item.title+'</b>'+item.text+'</td>';
				  content += price;
				  content += '</tr>';
				  content += '</table>';
				  content += '</em>';
				  content += '</a>';	
				  links += '<a href="'+item.id +'">' + (i + 1) +'</a> ';				  
			  });
			  $('.banners-carousel-body').append(content);
			  
			  $('.carousel-links').append(links);
		  }
		  initBannersCarousel();
		}
	});	
}

function loadDepartureCountries() {	
	$.getJSON(
		'/data/catalog.html'
		, function(data) {	
			if (data.success) {
				var $totalAmount = 0,
					$mapTezNoFlash = $('#world-map-tez .world-map-tez-noflash'),
					$ownerDiv = $('<div>');
				
				$('<h3>').append(MAP_TITLE).appendTo($mapTezNoFlash);
				$mapTezNoFlash.append($ownerDiv);				
				$.each(data.countries, function(i, country) {
					if ((i > 0) && ((i%5) == 0)) {
						$ownerDiv = $('<div>').css('margin-left', '21px').appendTo($mapTezNoFlash);
					}
					
					$('<a>')
						.css('background-color', 'transparent')
						.css('border', 'none')
						.attr('id', 'country-' + country.id)
						//.attr('href', 'country.html?countryId='+country.id)
						.attr('href', PREFIX_URL + 'catalog/' + country.urlName + '.html')
						.append(country.name)
						.appendTo($ownerDiv)
						.after($('<br>'));
					
					$totalAmount += country.hotelAmount; 
				}); 

				
				if (typeof window.document.fpbanner != 'undefined') {
					window.document.fpbanner.SetVariable ('hotelsNumb', $totalAmount);					
				}
			} else {
				alert('Error load total hotels amount!');
			}
	});	
}

function initCatalogBanner() {	
	if ($.browser.flash) {
	  var  catalogCities = new Array ("minsk", "kiev", "donetsk", "lviv", "dp", "odessa", "zaporozhye", "kharkov");
	  if ($.inArray($.cookie('tez_city'), catalogCities) > -1) {
		  var params = {
					'link': '/catalog.html' //куда ссылается баннер
					,'newwindow':'false' // открывать в новом окне? (true - false)
					,'text1':encodeURI(CATALOG_TEXT1) // первый текст. Не более трех строк. Текст можно переносить \n
					,'text2':encodeURI(CATALOG_TEXT2) // второй текст
					,'xmlFile': 'media/catalogbanner/fp_banner_imgs_01.xml' // XML с картинками
					,'intervalBlocks':70 // интервал между отображениями блоков
					,'intervalImg':1000 // интервал между сменами картинок
					,'speedBlock':4 // скорость 'роста' блока (1-5)

			};
			showFlash(
					'media/firstPageCatalogBanner.swf'
					,'490'
					,'66'
					,'transparent'
					,'fpbanner'
					,params
					, $('#main-banner-catalog') 
			);		
	  } else {
		var params = {
				'link': '/article.html?id=30000358' //куда ссылается баннер
				,'newwindow':'false' // открывать в новом окне? (true - false)
				,'text1':encodeURI(CATALOG_TEXT1) // первый текст. Не более трех строк. Текст можно переносить \n
				,'text2':encodeURI(CATALOG_TEXT2) // второй текст
				,'xmlFile': 'media/catalogbanner/fp_banner_imgs_01.xml' // XML с картинками
				,'intervalBlocks':70 // интервал между отображениями блоков
				,'intervalImg':1000 // интервал между сменами картинок
				,'speedBlock':4 // скорость 'роста' блока (1-5)

		};
		showFlash(
				'media/firstPageCatalogBanner_FINAL.swf'
				,'490'
				,'66'
				,'transparent'
				,'fpbanner'
				,params
				, $('#main-banner-catalog') 
		);	
	   }
	} else {
		$('#main-banner-catalog div').show();
	}
}

//load rest types 
function loadRestTypeData() {
	var $restTypePlace = $('#main-banner-catalog').next(),
	$restTypeWaiting= $('img', $restTypePlace);
	
	$.getJSON(
			'data/restTypes.html'
			, function(data) {	
				if (data.success) {
					$.each(data.siteRestTypes, function(i, restType) {
						var $dl = $('<dl>');
						if (i > 0 && (i+1) % 2 == 0) $dl.addClass('dl-right');
						
						$('<dt>')
							.append($('<div class ="shadow-block">').append(
								$('<img>').attr('src', REST_TYPE_IMAGE_PREFIX + restType.restTypeId + '.jpg')
							)								
						).appendTo($dl);
						
						$('<dd>')
							.append(
								$('<a>')
									.attr('href', 'restType.html?id=' + restType.id)
									.append(restType.title)
							).append(restType.announce)
							.appendTo($dl); 
						
						$restTypePlace.append($dl);
						
						if (i > 0 && (i+1) % 2 == 0) $('<div>').addClass('clear').appendTo($restTypePlace);						
					});
					$restTypeWaiting.hide();
				} 
			});
}

//load Recommend 
function loadRecommendData() {
	var $recommendPlace = $('#scrollbar1 .tez-recommends .overview'),
	$recommendWaiting = $('#scrollbar1 .tez-recommends .overview img');
	
	if ( $.browser.msie) {
		$recommendPlace = $('#scrollbar1 .tez-recommends');
		$recommendWaiting = $('#scrollbar1 .tez-recommends img');		
	}
	
	$.getJSON(
			'data/recommend.html'
			, function(data) {	
				if (data.success) {
					$.each(data.recommends, function(i, recommend) {
						var $itemRecommend = $('<div>').addClass('recommends-item'),
							$imageRecommend = $('<a>').attr('href', 'hotel.html?id=' + recommend.id);
						
						if (typeof recommend.recommendImage != 'undefined' && recommend.recommendImage != '' ) {
							$imageRecommend.css('background', 'url(' + HOTEL_IMAGE_URL_PREFIX + recommend.siteHotelId + '/' + recommend.recommendImage + ')');
						} else if (typeof recommend.mainImage == 'undefined') {
							$imageRecommend.css('background', 'url(' + HOTEL_EMPTY_IMAGE_URL + ')');
						} else {
							var $img = recommend.mainImage.replace('.', '_small.');
							$imageRecommend.css('background', 'url(' + HOTEL_IMAGE_URL_PREFIX + recommend.siteHotelId + '/' + $img + ')');
						}
						
						$('<div>')
							.addClass('recommends_img')
							.append($imageRecommend)
							.appendTo($itemRecommend);
												
						var $textRecommend = $('<div>')
							.addClass('recommends_text')
							.append(
								$('<a>')
									.attr('href', 'hotel.html?id=' + recommend.id)
									.append(recommend.name + ' ')
									.append($('<i>').append(recommend.hotelType))
							).append(
								recommend.countryName + ' - ' + recommend.regionName
							);
						
						if (typeof recommend.roundedPrice != 'undefined') {
							$('<em>')
								.append('от ' + recommend.roundedPrice + ' ' + recommend.currencySign)
								.appendTo($textRecommend);
						}
						
						$itemRecommend
							.append($textRecommend)
							.append($('<div>').addClass('clear'));
						
						$recommendPlace.append($itemRecommend);
					});	
					// all item Tez recommends
					$('<a>')
						.attr('href', 'recommend.html')
						.append(
							$('<b>').append(PROMO_SECOND_ALL)
						).appendTo($recommendPlace);
					
					$recommendWaiting.hide();
				} 
			});
}

//load Action
function loadActionData() {
	var $tezActionPlace = $('#scrollbar2 .tezaction .overview'),
	$tezActionWaiting = $('#scrollbar2 .tezaction .overview img');
	
	if ( $.browser.msie) {		
		$tezActionPlace = $('#scrollbar2 .tezaction');
		$tezActionWaiting = $('#scrollbar2 .tezaction img');		
	}
	
	$.getJSON(
			'data/actions.html'
			, function(data) {	
				if (data.success) {					
					$.each(data.articles, function(i, action) {
						var $tezactionItem = $('<div>').addClass('tezaction-item'),
							$tezactionTitle = (action.title||'').trim == '' ? 'no content title' : (action.title||''),		
							$tezactionAnnonce = (action.announce||'').trim == '' ? 'no content announce' : (action.announce||'');
						
						if (typeof action.image != 'undefined') {
							$('<a>')
								.attr('href', 'article.html?id=' + action.id)
								.addClass('tezaction-img')
								.css('background-image', 'url(' + ACTION_IMAGE_PREFIX + action.id + '/' + action.image + ')')
								.appendTo($tezactionItem);
						}
						$('<a>')
							.attr('href', 'article.html?id=' + action.id)
							.addClass('tezaction-title')
							.append($tezactionTitle)
							.appendTo($tezactionItem);
						
						if (typeof action.announce != 'undefined') {
							  $('<div>')
							  	.addClass('tezaction-desc')
							  	.append(
							  		$('<small>').append($tezactionAnnonce)
							  	).appendTo($tezactionItem);
						}						
						$tezActionPlace.append($tezactionItem);
					});
					
					// all item actions
					$('<a>')
						.attr('href', 'articles.html?categoryId=36')
						.append(
							$('<b>').append(PROMO_SECOND_ALL)
						).appendTo($tezActionPlace);
					
					$tezActionWaiting.hide();
				} 
			});
}



//load HotelRating
function loadHotelRatingData() {
	var $tezTopPlace = $('#scrollbar3 .teztop .overview'),
	$tezTopWaiting = $('#scrollbar3 .teztop .overview img');
	if ( $.browser.msie) {		
		$tezTopPlace = $('#scrollbar3 .teztop');
		$tezTopWaiting = $('#scrollbar3 .teztop img');
	}
	
	$.getJSON(
			'data/hotelRaiting.html'
			, function(data) {	
					if (data.ratings.length > 0) {
						var $prevCountryId, $ul;
						$.each(data.ratings, function(i, rating) {
							if ($prevCountryId != rating.countryId) {
								$('<b>')
									.attr('id', 'country-' + rating.countryId)
									.append(rating.countryName)
									.appendTo($tezTopPlace);

								$ul = $('<ul>');
								$ul.appendTo($tezTopPlace);								
							}
							var $hotel = $('<li>')
								.append(
									$('<a>')
										.attr('href', 'hotel.html?id=' + rating.hotelId)
										.append(rating.hotelName + ' ' + rating.hotelType)
								).append(
									$('<small>').append(rating.regionName)
								).appendTo($ul);
							
							$prevCountryId = rating.countryId;
						});
					} else {
						$('#scrollbar3').prev().hide();
						$('#scrollbar3').hide();
					}					
					$tezTopWaiting.hide();
					
					if (!$.browser.msie) $('#scrollbar1').tinyscrollbar();
				 
			});
}

