$(document).ready(function(){
	$(".top-phone a").click(function(){
		var date = new Date();
		$('#sgtcapimg').attr('src', '/captcha/?' + date);
		$(".callback-popup").popup();
	});

	$("input.placeholder").placeholder();
	$(".input-hint").labelAsPlaceholder();

	$("#gmap .toggler").click(function(){
		$(this).next().toggle();
		return false;
	});

	Carousel();
	
	SearchPrice();

	CountryGalsPreviews();

	HotelGallery();


	/**
	 * главное меню
	 */
	$("#global-nav li").each(function(){
		$(this).click(function(){
			if (!$(this).hasClass("n")){
				$(this).toggleClass("hover");
			}
		});
		$(this).hover(
			function(){
				$(this).addClass("hover").addClass("n");
			},
			function(){
				$(this).removeClass("hover").removeClass("n")
			})
	});
	

	/**
	 * раскрывалка в спец.предложениях
	 */
    $(".special-offers .toggler").each(function(){
        var others = $(this).parent().parent().find(".other-offers");

        $(this).find("a").each(function(){
            var me = $(this);
            me.click(function(){
                if (!me.hasClass("selected")) {
                    var c = me.attr("class");
                    me.addClass("selected");
                    me.siblings().removeClass("selected");

                    if (others) {
                        others.attr('class', "other-offers " + c);
                    } else {
                        me.parent().next().attr('class', c);
                    }
                }

                return false;
            })
        })
    });

	/**
	 * раскрывалка в меню стран
	 */
    $(".countries-menu .toggler a").each(function(){
		var me = $(this);
        me.click(function(){
            var c = me.attr("class");
            me.addClass("selected");
            me.siblings().removeClass("selected");

            me.parent().next().attr({"class": c});

			return false;
        })
    });

	/**
	 * по клику на флаг раскрывается подменю
	 */
	$(".countries-menu ul span").click(function(){
		$(this).parent().parent().find("ul").slideToggle();
		return false;
	});




	/**
	 * раскрывалка на странице с результатами поиска
	 */
	$(".expandable").each(function(){
		var a = $(this).find(".toggler");
		var b = $(this).find(".inner");
		var c = $(this).find(".header .title");
		var h = $(this).find(".header");
		var s = "expanded";

		a.add(c).add(h).click(function(){
			if (a.hasClass(s)){
				a.removeClass(s);
				a.text("Развернуть");
				b.slideUp("fast");
			} else {
				a.addClass((s));
				a.text("Свернуть");
				b.slideDown("fast");
			}

			return false
		});

		$(this).find("h3").each(function(){
			$(this).click(function(){
				$(this).toggleClass("expanded");
				$(this).next().toggle();
			});
		});
	});
	$(".calendarik-title").each(function(){
		$(this).prepend("<span></span>")
	});


	/**
	 * слайдшоу-галеря на странице страны
	 */
	$(".slide-show").each(function(){
		var me = $(this);
		var prev = me.find(".prev");
		var next = me.find(".next");
		var imgs = me.find("img");
		var counter = me.find("em");

		var n = imgs.length - 1;
		var i = 0;

		imgs.filter(":eq(0)").show();
		me.find("b").text(n + 1);

		next.click(function(){
			change(1)
		});

		var change = function(dir){
			imgs.filter(":eq(" + i + ")").hide();
			if (dir == 1){
				if (i == n) {
					i = 0;
				} else {
					i = i + 1;
				}
			} else {
				if (i == 0) {
					i = n
				} else {
					i = i - 1;
				}
			}
			imgs.filter(":eq(" + i + ")").show();
			counter.text(i + 1);
		}
	});
});





/**
 * штуки в форме поиска отеля
 */
function SearchPrice(){
	$(".tour-search.main form").submit(function(){
		$("#curtains").show();
		$("#wait-please").show();
//		setTimeout(function(){
//			$(".tour-search.main form").submit();
//		}, 4000);
	});

	function Children(){
		var obj = $(".ts-children-q");
		
		if (obj.find("option:selected").text() == "2 ребёнка") {
			$(".ts-child-age").addClass("vis");
			$(".ts-children-label").addClass("vis");
		}
		else {
			if (obj.find("option:selected").text() == "1 ребёнок") {
				$(".ts-child-age.n0").addClass("vis");
				$(".ts-child-age.n1").removeClass("vis");
				$(".ts-children-label").addClass("vis");
			}
			else {
				$(".ts-child-age").removeClass("vis");
				$(".ts-children-label").removeClass("vis");
			}
		}
	}
	
	$(".ts-children-q").change(function(){
		Children()
	});
	Children();
	
	var CheckAge = function(){
		var elems = $(".ts-child-age");
		var hint = $(".ts-children-hint");
		
		var CheckInputs = function(){
			var flag = false;
			elems.each(function(){
				var n = Number($(this).val());
				if (n > 0 && n <= 2){
					flag = true;
				}
			});	
			return flag;
		};
		
		var ToggleHint = function(){
			if (CheckInputs()){
				hint.addClass("vis");
			} else {
				hint.removeClass("vis");
			}
		};
		
		elems.each(function(){
			$(this).blur(function(){
				ToggleHint();
			});
		});
		
		ToggleHint();		
	};
	
	CheckAge();
	
	
	$(".tour-search form").submit(function(){
		var fl = true;
		$(".ts-child-age").each(function(){
		 	if ($(this).css("visibility") == "visible" && $(this).val()==""){
				fl = false;
				var me = $(this);
				me.focus();
				me.next(".error-hint")
					.css({top:$(this).position().top + 24})
					.show()
					.fadeOut(2000);
				return false;
			}
		});
		return fl;
	});
}

/**
 *  Замена содержимого селекта указанным html (должен быть список <option>'ов).
 *  Если в списке присутствует только один элемент, селект делается неактивным.
 *
 * 	в качестве параметров передаётся ID элемента и HTML-код для замены
 */

function setOptions(id, html)
{
	$('#' + id).html(html);
	if ($('#' + id + ' option').length == 1)
	{
		$('#' + id).attr('disabled', 'disabled');
		var field_name = $('#' + id).attr('name');
		var field_value = $('#' + id).val();
		$('#' + id).append('<input type="hidden" id="so_' + id + '" name="'+ field_name +'" value="'+ field_value +'" />');
	} else {
		$('#' + id).removeAttr('disabled');
		$('#so_' + id).remove();
	}
}




/**
 * галерея на странце отеля и аналогичных
 */
function HotelGallery(){
	var n = 0;
	var obj = $(".gallery");
	var next = obj.find(".next");
	var prev = obj.find(".prev");
	var previews = obj.find(".previews a");
	var qty = obj.find(".previews a").length;

	previews.each(function(index){
		if (index == 0){
			$(this).addClass("selected");
		}
		$(this).click(function(){
			changePic(index);

			return false
		});
	});

	var changePic = function(to){
		previews.removeClass("selected");
		var pic = previews.filter(":eq(" + to + ")");
		pic.addClass("selected");

		$(".bigimg img").attr({src:pic.attr("href")});

		n = to;
	};

	next.click(function(){
		var t = n + 1;
		if (n == qty - 1){
			t = 0;
		}

		changePic(t);
		
		n = t;
	});

	prev.click(function(){
		var t = n - 1;
		if (n == 0){
			t = qty - 1;
		}

		changePic(t);

		n = t;
	});

	// открываем попап-галерею
	$(".gallery .bigimg a").click(function(){
		PopupGallery(n);
		return false;
	});
}



/**
 * попап - галерея
 */
function PopupGallery(n){
	if (n>=0){} else {n=0} //я индус
	var obj = $(".gallery");

	// массив с превьюшками
	// предполагается, что в div.source то же самое, что и в div.previews + все остальные фотки
	var source = [];
	$(".gallery").find(".source a").each(function(){
		source.push([$(this).text(), $(this).attr("href")])
	});

	$(".gallery-popup").popup();

	var popup = $(".gallery-popup");

	var next = popup.find(".next");
	var prev = popup.find(".prev");
	var play = popup.find(".play");
	var pause = popup.find(".pause");

	var current = popup.find(".counter span");
	var all = popup.find(".counter ins");
	var text = popup.find(".an");

	all.text(obj.find(".source a").length);
	var curtains = $("#curtains");

	var bigimg = popup.find(".bigimg img");

	var change = function(){
		current.text(n + 1);
		bigimg.attr({src: source[n][1]});
		text.html(source[n][0]);
	};

	change();

	var Next = function(){
		if (n < source.length - 1){
			n++;
		} else {
			n = 0;
		}
		change();
	};

	var Prev = function(){
		if (n > 0){
			n--;
		} else {
			n = source.length - 1;
		}
		change();
	};

	var slideshowTimer;
	var slideshowStart = function(){
		slideshowTimer = setInterval(Next, 3000);
		play.hide();
		pause.show();
	};
	var slideshowStop = function(){
		clearInterval(slideshowTimer);
		play.show();
		pause.hide();
	};

	play.click(function(){
		slideshowStart();
	});
	pause.click(function(){
		slideshowStop();
	});


	bigimg.click(function(){
		Next();
		slideshowStop();
	});

	next.click(function(){
		Next();
		slideshowStop();
	});

	prev.click(function(){
		Prev();
		slideshowStop();
	});

	//анбайндится в плагине popup
	$(document).bind("keydown", function(event){
		var B = event.keyCode;
		switch (B) {
			case 39:
				if (event.ctrlKey) {
					Next();
				}
				break;
			case 37:
				if (event.ctrlKey) {
					Prev();
				}
				break;
		}
	});
}

/**
 * на сколько проскроллен документ
 */
function GetYScroll(){
	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	return yScroll;
}



/**
 * jquery-плагин, показывает и скрывает попап
 */
(function($) {
	$.fn.popup = function(methods) {
		return this.each(function() {
			var me = $(this);

			var yScroll = GetYScroll();
			var h = me.outerHeight();
			var t;
			var wh = $(window).height();
				if (h > wh){
					t = yScroll + 10;
				} else {
					t = yScroll + (wh - h) / 2;
				}
			
			me.css({top: t + "px"});

			$("#curtains").show(); // затенение сайта
			me.show();

			$(document).bind("click", function(e){
				if ($(e.target).attr("id") == "curtains"){
					close()
				}
			});

			$(document).bind("keydown", function(event){
				var B = event.keyCode;
				switch (B) {
					case 27:
						close()
				}
			});

			me.find(".close").click(function(){
				close();
				return false
			});

			var close = function(){
				$("#curtains").hide();
				me.hide();

				$(document).unbind("click");
				$(document).unbind("keydown");
			}
		});
	};
})(jQuery);





/**
 * эмуляция атрибута placeholder
 */
(function($) {
	$.fn.placeholder = function() {
		return this.each(function() {
			var me = $(this);
			var defaultText = me.val();

			$(this).focus(function(){
				if (me.val() == defaultText ){
					me.val("").removeClass("default");
				}
			}).blur(function(){
				if (me.val() == ""){
					me.val(defaultText).addClass("default");
				}
			});
		});
	};
})(jQuery);


/**
 * плейхолдер через label
 */
(function($) {
	$.fn.labelAsPlaceholder = function() {
		return this.each(function() {
			var label = $(this).find("label");
			var input = $(this).find("input");
			
			if (input.val() == ""){
				label.show();
			}
			
			input.focus(function(){
				label.hide()
			});
			
			input.blur(function(){
				if (input.val() == ""){
					label.show();
				}
			});
		});
	};
})(jQuery);




  


/**
 * слайдшоу баннеров на главной (подсмотрено на jetstyle)
 */
function Carousel(){
	var dw = $(window).width();
	var s;
	if (dw > 1284) {
		s = 3;
	}
	else if (dw > 1024){
		s = 2;
	}
	else {
		s = 1;
	}
	
	$(".ban-carousel").each(function(){
		$("#banners li").each(function(index){
//			var path = "/img/banners/" + banners[index][s - 1];
			var path = banners[index][s - 1];
			$(this).find(".img").attr({style: "background-image: url(" + path + ")"});
		});
		var ul = $(this).find("ul");
		ul.find("li:last").clone().prependTo(ul);
		ul.css({left:"-100%"});
		var banCounter = 0;
		var banAmount = ul.find("li").length;
		var speed = 300;
	
		var next = function(){
			banCounter++;
			banCounter %= banAmount;
			if(!banCounter){
				ul.css({left: "0%"});
				banCounter++;
			}
			ul.animate({
				left: -100 * banCounter + "%"
			}, speed );
		};
	
		var prev = function(){
			banCounter--;
			if ( banCounter < 0 ) {
				banCounter = banAmount -1;
				ul.css({left: -100 * banCounter + "%"});
				banCounter --;
			}
			ul.animate({
				left: -100 * banCounter + "%"
			}, speed );
		};
	
		if (banAmount>2) {
			$(this).find(".prev").click(function(){
				prev();
				clearInterval(interval);
				return false;
			});
			$(this).find(".next").click(function() {
				next();
				clearInterval(interval);
				return false;
			});
		}
		
		var interval;
		if ($(this).hasClass("temp")){
			setTimeout(function(){
				interval = setInterval(function(){
					next();
				}, 8000)
			}, 4000)
		} else {
			interval = setInterval(function(){
				next();
			}, 8000);
		}
	})
}


/**
 * калькулятор валют
 */
function CurrCalc(usd, eur){
	CurrCalc.usd = usd;
	CurrCalc.eur = eur;
	CurrCalc.ccf = true; //true - евро, false - доллары

	var obj = $("#currency-calc");
	var input = obj.find(".val");
	var result = obj.find(".result span");

	$("#top-exchange .eur, #top-exchane .icon").click(function(){
		CurrCalc.ccf = true;
		obj.find(".eur").addClass("selected");
		obj.find(".usd").removeClass("selected");
		obj.show();
		
		return false;
	});

	$("#top-exchange .usd").click(function(){
		CurrCalc.ccf = false;
		obj.find(".usd").addClass("selected");
		obj.find(".eur").removeClass("selected");
		obj.show();

		return false;
	});

	obj.find(".close").click(function(){
		obj.hide();
		input.val("0");
		result.html("0.0000");
		return false;
	});
	
	input.focus(function(){
		if($(this).val() == 0){
			$(this).val("")
		}
	});
	input.blur(function(){
		if ($(this).val() == ""){
			$(this).val("0")
		}
	});

	obj.find(".togglers span").each(function(){
		var me = $(this);
		me.click(function(){
			if (!me.hasClass("selected")){
				me.siblings().removeClass("selected");
				me.addClass("selected");
				CurrCalc.ccf = !CurrCalc.ccf;
				CurrCalc.Output()
			}
		});
	});

	input.keydown(function(){
		setTimeout("CurrCalc.Output()", 100);
	});

	CurrCalc.Output = function(){
//		var s = input.val();

		var r = input.val() * (CurrCalc.ccf ? CurrCalc.eur: CurrCalc.usd);
		r = r.toFixed(4);
		result.text(r);
	}
}


function hide_this_error(){
	$("#errmsg").hide();
}

function CountryGalsPreviews(){
	$(".country-gals-previews").each(function(){
		var obj = $(this);
		var prev = obj.find(".prev");
		var next = obj.find(".next");
		var slider = obj.find(".photos-inner");
		var w1 = obj.width();
		var w2 = slider.find("a").length * 90;
		slider.width(w2);

		var step = 170;
		var speed = 200;
		var x = 0;
		var xm = w1 - w2;

		if (w2 > w1){
			next.show();
		}

		next.click(function(){
			if (x > xm) {
				x = x - step;
				slider.animate({left: x}, speed);
				prev.show();
				if (x < xm){
					next.hide();
				}
			} else {
				next.hide();
			}
		});

		prev.click(function(){
			if (x < 0) {
				x = x + step;
				slider.animate({left: x}, speed);
				next.show();
				if (x = 0){
					prev.hide();
				}
			} else {
				prev.hide();
			}
		});
	});
}

function CountryHotelsList(){
	$(function(){
		$("#country-hotels-list .parent").each(function(){
			$(this).click(function(){
				$(this).next().toggle();
				return false;
			});
		});
	});
}
