// JavaScript Document
var breakfast = Array();
var countries = ""; // список стран
var prices = Array(); // общая стоимость периода
var rooms_accomod = Array();
var guest_name_arr = Array('','',''); // список имен гостей
var guest_lastname_arr = Array('','',''); // список фамилий гостей
var stop_procedure = false;
var breakfast_incl={}; //сведения о том, включён завтрак или нет для номеров гостиницы

/*
**
*/

function visa_support()
{
	var id = $("select#visa").val();
	var visa_support = $("div#visa_support");
	visa_support.empty();
	if (id != 0)
	{
		$("<font color=\"red\">Please send us a copy of your passport by fax or e-mail</font>").appendTo(visa_support);
	}
}

/*
**
*/

function new_date(date)
{
	var date_arr = date.split('.');
	var year = date_arr[2];
	var mouth = date_arr[1];
	var days = date_arr[0];
	var ndate = new Date(year, mouth, days);
	var ndate = new Date(ndate.getFullYear(), ndate.getMonth()-1, ndate.getDate())
	return ndate;
}

/*
**
*/

function formatDate(formatDate, formatString)
{
  		var yyyy = formatDate.getFullYear();
  		var yy = yyyy.toString().substring(2);
  		var m = formatDate.getMonth() + 1;
  		var mm = m < 10 ? "0" + m : m;
  		var d = formatDate.getDate();
 		var dd = d < 10 ? "0" + d : d;

  		var h = formatDate.getHours();
		var hh = h < 10 ? "0" + h : h;
		var n = formatDate.getMinutes();
		var nn = n < 10 ? "0" + n : n;
		var s = formatDate.getSeconds();
		var ss = s < 10 ? "0" + s : s;

		formatString = formatString.replace(/yyyy/i, yyyy);
		formatString = formatString.replace(/yy/i, yy);
		formatString = formatString.replace(/mm/i, mm);
		formatString = formatString.replace(/m/i, m);
		formatString = formatString.replace(/dd/i, dd);
		formatString = formatString.replace(/d/i, d);
		formatString = formatString.replace(/hh/i, hh);
		formatString = formatString.replace(/h/i, h);
		formatString = formatString.replace(/nn/i, nn);
		formatString = formatString.replace(/n/i, n);
		formatString = formatString.replace(/ss/i, ss);
		formatString = formatString.replace(/s/i, s);

		return formatString;	
}

function start_validate(date)
{
  d = new Date();
  d2 = new Date(d.getTime());
  if (d2.getTime() > date.getTime())
  {
	return d2;
  }
  else
  {
	return date;
  }
}

function stop_validate(sdate, edate)
{
  edate = new Date(edate.getTime()+86400000);
  if (edate > sdate.getTime())
  {
	return edate;
  }
  else
  {
	return sdate;
  }
  return sdate;
}

Date.prototype.format = function(format)
{
	return formatDate(this, format);
}
Date.prototype.start_validate = function(date)
{
	return start_validate(this, date);
}
Date.prototype.stop_validate = function(date)
{
	return stop_validate(this, date);
}

/*
**
*/
function get_hotels()
{
  var id = $("select#city_id").val();
  $.getJSON('/ajax/hotels.php', {'city_id': id, 'lang': 1}, onAjaxHotelsSuccess);
 
}

/*
**
*/

function get_rooms()
{  
  $("input#submit").attr('disabled', 'disabled');
  var id = $("select#hotel_id").val();
  var sdate = $("input#start_date").val();
  var edate = $("input#stop_date").val();
  var accomod = $("select#room_type").val();
  
  //Проверка дат
  if (!check_dates(sdate,edate))
  {
  	$("#room_price font").html('<span style="color:red">You have selected an incorrect period</span>');
	return false;
  }
  
  d1 = new_date(sdate);
  d2 = d1.start_validate();
  sdate = d2.format("dd.mm.yyyy");
  d3 = new_date(edate);
  d4 = d3.stop_validate(d1);
  edate = d4.format("dd.mm.yyyy");
  
  $("input#start_date").attr('value', sdate);
  $("input#stop_date").attr('value', edate);
  $.getJSON('/ajax/rooms.php', {'hotel_id': id, 'start_date':sdate, 'stop_date':edate, 'accomod':accomod, 'lang': 1}, onAjaxRoomsSuccess);
  generat_guestlist();
}


//Проверка выбранных дат
function check_dates(start_date,stop_date)
{
	var cur_date = new Date();
	cur_date.setMinutes(0); cur_date.setHours(0); cur_date.setSeconds(0); cur_date.setMilliseconds(0);
	var cur_time=cur_date.getTime();
	var stop_date_parts = stop_date.split('.');
	var stop_date = new Date(stop_date_parts[2]+'/'+stop_date_parts[1]+'/'+stop_date_parts[0]);
	var stop_date_time=stop_date.getTime();
	var start_date_parts = start_date.split('.');
	var start_date = new Date(start_date_parts [2]+'/'+start_date_parts [1]+'/'+start_date_parts[0]);
	var start_date_time=start_date.getTime();
	var days_diff=(stop_date_time - start_date_time)/86400000;
	//Даты не в прошлом, дата начала меньше даты конца и разница по дням меньше 365
	if (start_date_time >= stop_date_time || start_date_time <  cur_time || stop_date_time <  cur_time || days_diff > 365)
	{
		return false;
	}
	else
	{
		return true;
	}
}


/*
**
*/

function generat_guestlist()
{
  $("input.guest_name").each(function(index)
  {
    guest_name_arr[index] = $(this).attr('value');
  });
  $("input.guest_lastname").each(function(index)
  {
    guest_lastname_arr[index] = $(this).attr('value');
  });
  
  var tab = $("table#tab_guestlist");  
  var type = $("select#room_type").attr('value');
  var betwin = $("div#betwin");
  var check = $("input#bt").attr('checked');
  var betwin_info = $("div#betwin_info");
  betwin_info.empty();
  if (check != true)
  {
	  betwin.empty();
	  if (type == 2) {
		$("<input type=\"checkbox\" name=\"bt\" id=\"bt\" onClick=\"JavaScript:generat_guestlist();\"><font> extra-bed</font>").appendTo(betwin);
	  }
  }
  else if(check == true && type == 1)
  {
	  betwin.empty();
  }
  //
  if (check == true)
  {
	   if (type == 2)
	   {
		  $("<font color=green>(Information about the price of extra bed will be given by a manager)</font>").appendTo(betwin_info);
	   }
  }
  //  
  tab.empty();
  if (check == true && type == 1) type = 1;
  else if (check == true) type = type*1+1;
$("<tr bgcolor=\"#DFDFDF\"><tr><td><b>Surname</b></td><td><b>Name Father’s name</b></td><td><b>Citizenship</b></td></tr>").appendTo(tab);
  for (var i=0; i<type; i++)
  {
	  $("<tr bgcolor=\"#DFDFDF\"><tr><td><input type=\"text\" class=\"guest_name\" style=\"width:100px;\" id=\"guest_name[]\" name=\"guest_name[]\" value=\""+guest_name_arr[i]+"\"></td><td><input type=\"text\" class=\"guest_lastname\" style=\"width:200px;\" id=\"guest_lastname[]\" name=\"guest_lastname[]\" value=\""+guest_lastname_arr[i]+"\"></td><td><select name=\"guest_country[]\"  style=\"width:200px;\">"+countries+"</select></td></tr>").appendTo(tab);
  }
}

/*
** проверка списка гостей
*/

function guest_list_validate()
{ 
	stop_procedure = false;
	$("input.guest_name").each(valid_guest); // передаем в each функцию colorize
	//$("input.guest_lastname").each(valid_guest); // передаем в each функцию colorize
	if (stop_procedure == true)
	{
		//alert('Type in the Guest\'s Surname, Name, Father\'s name.!');
		alert('Fill in Surname!');
		return false;
	}
	return true;
}

function valid_guest(index)
{
	if ($(this).attr('value') == "")
	{
		stop_procedure = true;
	}
}

/*
** очистить список гостей
*/

function guest_list_clear()
{ 
	$("input.guest_name").each(clear_guest);
	$("input.guest_lastname").each(clear_guest);
}

function clear_guest(index)
{
	$(this).attr('value','');
}

/*
**
*/

function put_date(date, type)
{
  if (type == 1)
  {
	  $("input#start_date").attr('value', date);
  }
  else if (type == 2)
  {
	  $("input#stop_date").attr('value', date);
  }
}

/*
**
*/
/*function generat_room_num()
{
  var type = $("select#room_type").attr('value');
  var num = $("select#people_num").attr('value');
  var col = (num / type);
  $("select#room_num").attr('value', Math.ceil(col));	
}*/
/*
**
*/

/*
function get_breakfast()
{
	var rooms = $("select#room_id");
	var id = rooms.val();
	var brf = $("select#breakfast");
	brf.empty();
	if (breakfast[id] != 2) $("<option></option>").attr("value", 0).html('Excluded').appendTo(brf);
	if (breakfast[id] != 0) $("<option></option>").attr("value", 1).html('Included').appendTo(brf);
}
*/
/*
**
*/

function delete_period(id)
{
  dateObjectName = new Date();
  session = $("input#session").attr('value');
  $.getJSON('/ajax/delete_period.php?'+dateObjectName.getTime(), {'id' : id, 'session' : session, 'lang': 1}, onAjaxPeriodSuccess);
}

/*
** Получаем список стран
*/

function onAjaxCountrySuccess(obj)
{
	for (var i=0; i<obj.length; i++)
	{
		countries += "<option id=\""+obj[i].id+"\">"+obj[i].country+"</option>";
	}
	//generat_guestlist();
}

/*
**
*/

function onAjaxHotelsSuccess(obj)
{
	var sel = $("select#hotel_id");
	var hotel_id = sel.val();
	sel.empty();
	var stars = "";
	var stars_number = 0;
	for (var i=0; i<obj.length; i++)
	{
		if (stars_number != obj[i].stars)
		{
			stars = "";
			for (var a=0; a<obj[i].stars; a++)
			{
				stars += '*';
				stars_number = obj[i].stars;
			}
		}
		if (obj[i].online != 0) hotel_name = ""+stars+" "+obj[i].hotel+" (Online)"
		else hotel_name = ""+stars+" "+obj[i].hotel;
		var opt = $("<option></option>");
		opt.attr("value", obj[i].id).html(hotel_name);
		if (obj[i].id == hotel_id)
		{
			opt.attr("selected", "selected");
		}
		if (obj[i].online != 0)
		{
			opt.css({color: "#009900"});
		}
		else
		{
			opt.css({color: "#000000"});
		}
		opt.appendTo(sel);
	}
	get_rooms();
}

/*
**
*/

function get_room_prices()
{
	var rooms = $("select#room_id");
	var id = rooms.val();
	var room_price = $("div#room_price");
	room_price.empty();
	if (prices[id] != 0) {
		$("<font>The whole period price: <b>"+prices[id]+"</b> rur.</font>").appendTo(room_price);
	}
	else
	{
		$("<font>The whole period price is available on request.</font>").appendTo(room_price);	
	}
	//Если завтрак включён в прайс, то прячем выбор завтрака 
	if (breakfast_incl[id]==1)
	{
		$('#breakfast option:first').removeAttr('selected');
		$('#breakfast option:last').attr('selected','selected');
		$('#breakfast').css('display','none');
		$('#breakfast_incl_capt').css('display','block');
	}
	else
	{
		$('#breakfast_incl_capt').css('display','none');
		$('#breakfast').css('display','inline');
	}
	//get_breakfast();
	get_room_type();
}

/*
** Определить тип размещения
*/

function get_room_type()
{
	var rooms = $("select#room_id");
	var id = rooms.val();
	var rooms_type = $("select#room_type");
	var rooms_type_id = rooms_type.val();
	rooms_type.empty();
	var opt = $("<option></option>");
	opt.attr("value", 1).html('Single');
	if (rooms_type_id == 1) opt.attr("selected", "selected");
	opt.appendTo(rooms_type);
	if (rooms_accomod[id] != 1)
	{
		var opt = $("<option></option>");
		opt.attr("value", 2).html('Double');
		if (rooms_type_id == 2) opt.attr("selected", "selected");
		opt.appendTo(rooms_type);
	}
	generat_guestlist();
}

/*
**
*/

function onAjaxRoomsSuccess(obj)
{
	
	var rooms = $("select#room_id");
	var room_id = rooms.val();
	rooms.empty();
	for (var i=0; i<obj.length; i++)
	{
		prices[obj[i].id] = obj[i].sum; // сумма номера
		breakfast_incl[obj[i].id] = obj[i].breakfast_incl; //включён завтрак или нет
		if (obj[i].min_sum != 0 && obj[i].min_sum != '-') {
			if (obj[i].is_min == 0) room_name = obj[i].room+" ("+obj[i].min_sum+" rur.)";
			else room_name = obj[i].room+" (от "+obj[i].min_sum+" rur.)";
		}
		else room_name = obj[i].room+" ( - )";
		
		/*if (obj[i].online != 0) room_name = room_name+" (Онлайн)";
		else room_name = room_name+" (По запросу)";*/
		var opt = $("<option></option>");
		opt.attr("value", obj[i].id).html(room_name);
		if (obj[i].id == room_id)
		{
			opt.attr("selected", "selected");
		}
		if (obj[i].online != 0) {
		  opt.css({color: "#009900"});
		  var curOptText = opt.text();
		  curOptText += ' - Online';
		  opt.text(curOptText);
		}
		else {
		  opt.css({color: "#000000"});
		}
		opt.appendTo(rooms);
		breakfast[obj[i].id] = obj[i].breakfast;
		rooms_accomod[obj[i].id] = obj[i].accomod; //тип размещения
	}
	//get_breakfast();
	get_room_prices();
	$("input#submit").attr('disabled', '');
}

/*
**
*/

/*function onAjaxPeriodSuccess(obj)
{
	session = obj[0].session;
	$("input#session").attr('value',session);
	$("table#td_period").empty();
	if (obj[1].length == 0) return false;
	$("<tr bgcolor=\"#DFDFDF\"><td><b>Гостиница</b></td><td><b>Номер</b></td><td><b>Дата начала</b></td><td><b>Дата окончания</b></td><td><b>Количество номеров</b></td><td>Действие</td></tr>").appendTo("table#td_period");
	for (var i=0; i<obj[1].length; i++)
	{
		$("<tr><td>"+obj[1][i].hotel_name+"</td><td>"+obj[1][i].room_name+"</td><td>"+obj[1][i].start_date+"</td><td>"+obj[1][i].stop_date+"</td><td>"+obj[1][i].room_num+"</td><td><input type=\"button\" value=\"x\" onClick=\"JavaScript:delete_period('"+obj[1][i].id+"');\"></td></tr>").appendTo("table#td_period");
	}	
	$("<tr><td colspan=\"6\" align=\"right\"><input type=\"button\" value=\"далее\" onClick=\"JavaScript:document.location='confirm.php?session="+session+"';\"></td></tr>").appendTo("table#td_period");
}*/

/*
**
*/

function onAjaxPeriodSuccess(obj)
{
	$("table#td_period").empty();
	if (obj[1].length == 0 || obj[1].length == undefined) return false;
	var online;
	var allSumm=0;
	var byRequestAll=0;
	for (var i=0; i<obj[1].length; i++)
	{
		var byRequestRoom=0;
		$("<tr bgcolor=\"#DFDFDF\" style=\"font-size:11px;\"><td align=\"center\" style=\"border-right: #000 solid 1px; border-top: #000 solid 1px; border-left: #000 solid 1px;\" width=\"28px;\"><b>Type of<br>booking</b></td><td align=\"center\" style=\"border-right: #000 solid 1px; border-top: #000 solid 1px\"><b>List of tourists</b></td><td align=\"center\" style=\"border-right: #000 solid 1px; border-top: #000 solid 1px\" width=\"65px;\"><b>Period of<br>accommodation</b></td><td align=\"center\" style=\"border-right: #000 solid 1px; border-top: #000 solid 1px\" width=\"80px;\"><b>Room price a day</b></td><td align=\"center\" style=\"border-right: #000 solid 1px; border-top: #000 solid 1px\" width=\"30px;\"><b>Quantity of days</b></td><td align=\"center\" style=\"border-right: #000 solid 1px; border-top: #000 solid 1px\" width=\"30px;\"><b>Quantity of rooms</b></td><td align=\"center\" style=\"border-right: #000 solid 1px; border-top: #000 solid 1px\" width=\"50px;\"><b>Breakfast price</b></td><td align=\"center\" style=\"border-right: #000 solid 1px; border-top: #000 solid 1px\" width=\"60px;\"><b>Price</b></td><td align=\"center\" style=\"border-right: #000 solid 1px; border-top: #000 solid 1px\" width=\"40px;\"><b>Delete</b></td></tr>").appendTo("table#td_period");
		status = 1;
		if (obj[1][i].online == 1) online = 'Online';
		else online = '<nobr>On request</nobr>';
		for (var a=0; a<obj[1][i].periods.length; a++)
		{
			//Если хотя бы одна цена по запросу, не выводим итого
			if (obj[1][i].periods[a].price=='-')
			{
				byRequestRoom=1;
				byRequestAll=1;
				obj[1][i].periods[a].sum='<span style="color:black;font-weight:bolder;">'+obj[1][i].periods[a].sum+'</span>';
			}
			var str = "<tr style=\"font-size:11px;\">";
			if (status == 1) {str += "<td align=\"center\" style=\"border-right: #000 solid 1px; border-left: #000 solid 1px;\" rowspan=\""+obj[1][i].periods.length+"\">"+online+"</td>";}
			if (status == 1) {str += "<td  align=\"center\" style=\"border-right: #000 solid 1px\" rowspan=\""+obj[1][i].periods.length+"\">"+obj[1][i].guest_list+"</td>";}
			str += "<td align=\"center\" style=\"border-right: #000 solid 1px\">"+obj[1][i].periods[a].speriod+" - "+obj[1][i].periods[a].eperiod+"</td>";
			str += "<td align=\"center\" style=\"border-right: #000 solid 1px\">"+obj[1][i].periods[a].price+"</td><td style=\"border-right: #000 solid 1px\" align=\"center\">"+obj[1][i].periods[a].days+"</td>";
			if (status == 1) {str += "<td  style=\"border-right: #000 solid 1px\" align=\"center\" rowspan=\""+obj[1][i].periods.length+"\">"+obj[1][i].room_num+"</td>";}
			if (status == 1) {str += "<td  style=\"border-right: #000 solid 1px\" align=\"center\" rowspan=\""+obj[1][i].periods.length+"\">"+obj[1][i].periods[a].breakfast+"</td>";}
			str += "<td style=\"border-right: #000 solid 1px\" align=\"center\" >"+obj[1][i].periods[a].sum+"</td>";
			if (status == 1) str += "<td style=\"border-right: #000 solid 1px\" align=\"center\" rowspan=\""+obj[1][i].periods.length+"\"><input type=\"image\" style=\"border:none;width:24px;height:24px;\" src=\"/img/delete24.gif\" title=\"Delete\"  value=\"X\" style=\"color:#F00; font-weight:bold; text-align:center; width:20px; height:20px;\" onClick=\"JavaScript:delete_period('"+obj[1][i].id+"');\"></td>";
			$(str).appendTo("table#td_period");
			status = 0;
		}
		if (byRequestRoom == 1) 
		{
			$("<tr><td colspan=\"9\" style=\"border-top: #000 solid 1px;\" align=\"right\"><b>Total: </b>price is available on request</td></tr>").appendTo("table#td_period");
		}
		else 
		{
			if (obj[1][i].order_summ != 0) 
			{
				allSumm=allSumm+obj[1][i].order_summ;
				$("<tr style=\"font-size:11px;\"><td colspan=\"9\" style=\"border-top: #000 solid 1px;\" align=\"right\"><b>Total: </b>" + obj[1][i].order_summ + " rur.</td></tr>").appendTo("table#td_period");
			}
			else 
			{
				$("<tr style=\"font-size:11px;\"><td colspan=\"9\" style=\"border-top: #000 solid 1px;\" align=\"right\"><b>Total: </b>price is available on request</td></tr>").appendTo("table#td_period");
			}
		}
		$("<tr><td colspan=\"9\" align=\"right\">&nbsp;</td></tr>").appendTo("table#td_period");
	}
	//Если нет периодов по запросу и больше 1 подзаказа
	if (byRequestAll==0 && obj[1].length > 1)
	{
		$("<tr><td colspan=\"9\" align=\"right\" style=\"font-weight:bolder;font-size:14px;color:black;\">Total price: "+allSumm+" rur.</td></tr>").appendTo("table#td_period");
		$("<tr><td colspan=\"9\" align=\"right\">&nbsp;</td></tr>").appendTo("table#td_period");
	}
	$("<tr><td colspan=\"9\" align=\"right\"><input type=\"image\" src=\"/img/room_add_en2.jpg\" onClick=\"JavaScript:validate_submit(); return false;\"><input type=\"image\" src=\"/img/btb_next_order_en.jpg\" onClick=\"JavaScript:document.location='/en/booking.html?session="+session+"&op=order';\"></td></tr>").appendTo("table#td_period");
}

/*
**
*/

function validate_submit()
{
	$("#fbooking").validate(
	{
		/*focusInvalid: false,
		focusCleanup: true,*/
		rules :
		{
				//main_date : "required", 
				guest_name : "required"
		},
		messages :
		{
				//main_date : "TEST",
				guest_name : ""
		}/*,
		errorPlacement: function(error, element)
		{
		  er = element.attr("name");
		  alert(er);
		  //error.appendTo(element.parent().find("label[@for='" + er + "']").find("em"));
		}*/

	});
	if (!guest_list_validate()) return false;
	dateObjectName = new Date();
	var qString = $("#fbooking").formSerialize();
	//alert(qString);
	//Событие для Google Analytics
	//alert(typeof _gaq);
	$.getJSON('/ajax/booking.php?'+dateObjectName.getTime(), qString, onAjaxPeriodSuccess);
	//Добавляем виртуальную страницу для учёта в Google Analytics
	if(typeof _gaq=='object') {
		_gaq.push(['_trackPageview', '/booking_add_room/']);
	}
	//$("#fbooking").clearForm();
	guest_list_clear();
}

/*
** выполняется в момент загрузки страницы
*/

$(document).ready(function()
{
	dateObjectName = new Date();
	session = $("input#session").attr('value');
	get_hotels();
	$.getJSON('/ajax/booking.php?'+dateObjectName.getTime(), {'session' : session, 'lang': 1}, onAjaxPeriodSuccess);
	$.getJSON('/ajax/country.php?'+dateObjectName.getTime(), {'lang': 1}, onAjaxCountrySuccess);
});
