$(function(){
    $("#date").datepicker({ dateFormat: 'dd-mm-yy',
        altFormat: 'yy-mm-dd',
        dayNames: ['Воскресение', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
        dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
        dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
        monthNames: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
        monthNamesShort: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июнь', 'Июль', 'Авг', 'Сент', 'Окт', 'Ноя', 'Дек'],
        maxDate: maxDate,
        minDate: new Date(),
        firstDay: 1});
    //$('input#startStation').keyup(stationRequest);
    //$('input#endStation').keyup(stationRequest);

    if ($('#erdialog'))
    {
        $('#erdialog').dialog({
            modal: true,
            autoOpen: false,
            buttons: {
                Ok: function()
                {
                    $(this).dialog('close');
                }
            }
        });

    }

    $('.isChild').removeAttr('checked');
});

/*
 * INDEX
 * */

function pastRoute(o)
{
	var x = o.innerHTML.split(' - ');
    $("#from").val(x[0]);
    $("#to").val(x[1]);
    return false;
}

/*
 	
 	TRAINS PAGE
 
 */
$(function(){
     $("a.routeDates").bind("click", function(){
    	  var data = {from: from, to: to, date: $(this).attr('name')};
    	  if (to_id) data['to_id'] = to_id;
    	  if (from_id) data['from_id'] = from_id;
    	  return sendForm(data, '/trains/');
    });
})


function validateField(o, params){
    var text = $.trim(o.val());
    if ( ( params.minLength && text.length > params.maxLength ) ||
         ( params.maxLength && text.length < params.minLength ) )
    {
        o.addClass('ui-state-error');
        if ( params.errorField )
        {
            var lengthError = 'Это поле должно содержать от ' + params.minLength +
                ' до ' + params.maxLength + ' символов';
            $(params.errorField).text(lengthError);//.css({color: 'red'}).effect('highlight', {}, 1500);
        }
        return false;
    }
    if ( params.regexp && !params.regexp.test(text) ){
        o.addClass('ui-state-error');
        if ( params.regexpErrorText && params.errorField )
        {
            params.errorField.text(params.regexpErrorText);//.css({color: 'red'}).effect('highlight', {}, 1500);
        }
        return false;
    }
    return true;
}

$(function(){
    var nameField = $('#reporterName'),
        emailField = $('#reporterEmail'),
        opinionField = $('#reporterOpinion'),
        allFields = $([]).add(nameField).add(emailField).add(opinionField),
        errorField = $('#reportError');
    $('#reportDialog').dialog({
        bgiframe: true,
        height: 370,
        autoOpen: false,
        modal: true,
        width: 500,
        title: 'Оставить отзыв',
        buttons: {
            'Оставить отзыв': function(){
                allFields.removeClass('ui-state-error');
                var bValid = true;
                var validParams = {minLength: 3, maxLength: 100, regexp: null,
                    regexpErrorText: null, errorField: errorField};
                bValid = bValid && validateField(nameField, validParams);
                validParams.maxLength = 1000;
                bValid = bValid && validateField(opinionField, validParams);
                validParams.maxLength = 100;
                validParams.regexp = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
                validParams.regexpErrorText = 'Неправильный адрес электронной почты';
                bValid = bValid && validateField(emailField, validParams);
                var thisDialog = this;
                function modalDialog(sourceElementId, parentDialog, message){
                    $(sourceElementId).html(message);
                    $(sourceElementId).dialog({
                        modal: true,
                        autoOpen: false,
                        buttons: {
                            'Закрыть': function(){
                                $(this).dialog('close');
                            }
                        },
                        close: function(){
                            if ( $(parentDialog) ){
                                $(parentDialog).dialog('close');
                            }
                        }
                    }).dialog('open');
                }
                if ( bValid )
                {
                   $.ajax({
                       url: '/ajax/report/',
                       dataType: 'json',
                       success: function(data){
                           modalDialog("#reportWaitDialog", thisDialog, data.text);
                           $(thisDialog).dialog('close');
                       },
                       error: function(){
                           modalDialog("", thisDialog, 'Ошибка соединения с сервером.');
                           $(thisDialog).dialog('close');
                       },
                       data: {
                           name: $.trim($(nameField).val()),
                           email: $.trim($(emailField).val()),
                           opinion: $.trim($(opinionField).val())
                       },
                       type: 'post'
                   });
                }
            },
            'Отмена': function(){
                $(this).dialog('close');
            }
        },
        close: function(){
            allFields.val('').removeClass('ui-state-error');
            errorField.text("Пожалуйста, заполните все поля").css({color: '#000'});
        }
    });
});

function search()
{
	var date = $.trim($('#date').val());
	var from = $.trim($('#from').val());
	var to = $.trim($('#to').val());
	
	if (from.length == 0)
	{
		$('#erdialog').html('Укажите место отправления');
		$('#erdialog').dialog('open');
		return false;
	}
	
	if (to.length == 0)
	{
		$('#erdialog').html('Укажите место прибытия');
		$('#erdialog').dialog('open');
		return false;
	}
	
	if (date.length == 0)
	{
		$('#erdialog').html('Укажите дату отправления');
		$('#erdialog').dialog('open');
		return false;
	}
    // записать значения, которые уже подверглись trim'у
    $('#date').val(date);
    $('#from').val(from);
    $('#to').val(to);
	$('#mainFrom').submit();
}

function sendReport(){
}

// оправка формы на получение запроса
function sendOrder()
{
	var phone = $.trim($('#phone').val());
	var email = $.trim($('#email').val());
	
	if (phone.length < 11)
	{
		showError('Необходимо указать телефон в международном формате');
		$('#phone').focus();
		return;
	}
	
	if (email.length == 0)
	{
		showError('Необходимо указать адрес электронной почты');
		$('#email').focus();
		return;
	}
	
	
	if (!isEmail(email))
	{
		showError('Необходимо указать верный адрес электронной почты');
		$('#email').focus();
		return;
	}
	var data = {
		'from': from,
		'to': to,
		'trainNumber': trainNumber,
		'arrival' : arrival,
		'departure': departure,
		'UFSfrom': UFSfrom,
		'UFSto': UFSto,
		'carNumber': carNumber,
		'serviceClass': serviceClass,
		'originalPrice': originalPrice,
		'fullPrice': fullPrice,
		'childPrice': childPrice,
		'childOriginalPrice': childOriginalPrice,
		'serviceCost': serviceCost,
		'payment_system': payment_system,
		'category': category,
		'email': email,
		'phone': phone,
		'ticketCount': ticketCount,
		'lower': lower,
		'upper': upper,
		'lowerSide': lowerSide,
		'upperSide': upperSide,
		'inOneRoomette': inOneRoomette,
		'remainingSeatsCount': remainingSeatsCount,
		'notNearWC': notNearWC
	};
	
	if (to_id) data['to_id'] = to_id;
	if (from_id) data['from_id'] = from_id;
	
	for (var i in passengers) for (var j in passengers[i]) data['passengers['+i+']['+j+']'] = passengers[i][j];
		
	 $.ajax({
         url: '/ajax/order/',
         dataType: 'json',
         cache: false,
         type: "POST",
         success: function(data)
         {
		 	if (data.result != undefined && data.result == 'success')
		 	{
		 		sendForm({
		 			'xml_session_data': data.xml
		 		}, 'http://railroad.mobiticket.ru/invoice-partner.php');
		 	}
         },
         error: function(data)
         {
        	alert('Ошибка');
         },
         data: data
	 });
	
}

function setPayType(payType, amoundToPay, comission)
{
	payment_system = payType;
	$('#amoundToPay').html('Итого: '+amoundToPay+' руб.');
	$('#comission').html('Сервисный сбор: '+comission+' руб.');
}

function sendForm(params, url)
{
	var form = $('<form/>');
	form.attr({'action':url, 'method':'post'});
	for (var i in params)
	{
		$('<input/>').attr({'name': i, 'type' : 'hidden'}).val(params[i]).appendTo(form);		
	}
	form.appendTo($('#traintheme'));
	form.submit();
	return false;
}

function goToMain()
{
	return sendForm({'from': from,'to': to,'date': date}, '/');
}

function goToTrainList()
{
	return sendForm({'from': from,'to': to,'date': date}, '/trains/');
}

function returnToPrice()
{
	goToPrice(category);
}

/* идем на страницу выбор мест */
function goToPrices(trainNumber, category, departure, arrival, UFSfrom, UFSto)
{
	var data = {
			'trainNumber': trainNumber,
			'from': from,
			'to': to,
			'UFSfrom': UFSfrom,
			'UFSto': UFSto,
			'date': date,
			'category': category,
			'departure' : departure,
			'arrival' : arrival,
			'notNearWC' : notNearWC,
			'inOneRoomette' : inOneRoomette
		};
	if (to_id) data['to_id'] = to_id;
	if (from_id) data['from_id'] = from_id;
	return sendForm(data, '/prices/');
}





function goToPassengersUndefined(carNumber, serviceClass, iterator, isVIP)
{
	var ticketСount = parseInt($('#undefined' + iterator).val());
	
	if (ticketСount > 4)
	{
		$('#erdialog').html('Вы не можете указать более 4-х мест');
		$('#erdialog').dialog('open');
		return;
	}
	var data = {
			'from': from,
			'to': to,
			'date': date,
			'trainNumber': trainNumber,
			'UFSfrom': UFSfrom,
			'UFSto': UFSto,
			'category': category,
			'carNumber': carNumber,
			'ticketCount': ticketСount,
			'departure': departure,
			'arrival': arrival,
			'serviceClass': serviceClass,
			'notNearWC' : notNearWC,
			'inOneRoomette' : inOneRoomette
		};
	
	if (to_id) data['to_id'] = to_id;
	if (from_id) data['from_id'] = from_id;
	return sendForm(data, '/passengers/');
}

function goToPassengers(carNumber, serviceClass, iterator, isVip)
{
	var upperCount = parseInt($('#upper' + iterator).val());
	var lowerCount = parseInt($('#lower' + iterator).val());
	var upperSideCount = parseInt($('#upperSide' + iterator).val());
	var lowerSideCount = parseInt($('#lowerSide' + iterator).val());
	
	upperSideCount = isNaN(upperSideCount) ? 0 : upperSideCount;
	lowerSideCount = isNaN(lowerSideCount) ? 0 : lowerSideCount;

	if (upperCount + lowerCount + upperSideCount + lowerSideCount == 0)
	{
		$('#erdialog').html('Выбирите хотя бы одно место');
		$('#erdialog').dialog('open');
		return;
	}
	
	if (upperCount + lowerCount + upperSideCount + lowerSideCount > 4)
	{
		$('#erdialog').html('Вы можете выбрать не более 4-х мест');
		$('#erdialog').dialog('open');
		return;
	}
	
	var send = false;
	
	// проверям боковые места
	if (upperSideCount + lowerSideCount > 0 && ( (lowerSideCount == 1 && upperSideCount == 0)  || lowerSideCount - upperSideCount < 2 ))
	{
		send = true;
	}

	// не боковые места
	if (upperCount + lowerCount > 0 && ((lowerCount == 1 && upperCount == 0)  || lowerCount - upperCount < 2 ) )
	{
		send = true;
	}
	// СВ
	if (isVip) send = true;
	
	if (send)
	{
		var data = {
				'from': from,
				'to': to,
				'date': date,
				'trainNumber': trainNumber,
				'UFSfrom': UFSfrom,
				'UFSto': UFSto,
				'category': category,
				'carNumber': carNumber,
				'lower': lowerCount,
				'upper': upperCount,
				'lowerSide': lowerSideCount,
				'upperSide': upperSideCount,
				'departure': departure,
				'arrival': arrival,
				'serviceClass': serviceClass,
				'notNearWC' : notNearWC,
				'inOneRoomette' : inOneRoomette
			};
		if (to_id) data['to_id'] = to_id;
		if (from_id) data['from_id'] = from_id;
		
		sendForm(data, '/passengers/');
	}
	else
	{
		$('#erdialog').html('Количество нижних мест не может превышать количество верхних');
		$('#erdialog').dialog('open');
		return;
	}
}



function fillPassagirs()
{
	$('.surnamenf').val($('.surnamef').val());
	$('.namenf').val($('.namef').val());
	$('.middlenamenf').val($('.middlenamef').val());
	$('.document_numbernf').val($('.document_numberf').val());
	$('.document_typenf').val($('.document_typef').val());
}

function switchDocumentExample(index)
{
	var help = '';
	switch(parseFloat($('#doc'+index).val()))
	{
		case 1:
		{
			help = '1234 123450';
			break;
		}
		
		case 2:
		{
			help = 'IIМЮ234561';
			break;
		}
		
		case 3:
		{
			help = 'ВМ0472680';
			break;
		}
		
		case 4:
		{
			help = '601522106';
			break;
		}
		case 5:
		{
			help = 'АМ0804521';
			break;
		}
		case 6:
		{
			help = '220310989';
			break;
		}  
	}
	
	$('#document_number'+ index).val(help);
	$('#ex'+index).html(help);
}

function onChildIs(index)
{
	var isChild = $('#is_child' + index).attr('checked') ? true : false;
	
	if (isChild)
	{
		if (child_count + 1 >= people_count)
		{
			$('#is_child' + index).removeAttr('checked');
		}
		else
		{
			if (child_original_price == 0)
			{
				$('.isChild').attr('disabled', 'disabled');
				showChildLoading(index);
				$('#submitButton').hide();
			 $.ajax({
                 url: '/ajax/getChildPrice/',
                 dataType: 'json',
                 cache: false,
                 success: function(data)
                 {
				 	hideChildLoading();
				 	if (data.status == undefined)
				 	{              	 
                	   child_price = data[0];
                	   child_original_price = data[1];
                	   $('#child_original_price').val(child_original_price);
                	   $('#child_price').val(child_price);

                	   $('#fullPriceInfo').after('<br /><span>Детский билет ' + child_price + ' руб.</span>');
                	   
                	   addChildP(index);
				 	}
				 	else
				 	{
                	   alert('Неудалось получить цены для детских билетов.');
                	   $('#is_child' + index).removeAttr('checked');
				 	}
				 	$('.isChild').removeAttr('disabled');
				 	$('#submitButton').show();
                 },
                 
                 error: function()
                 {
                	 hideChildLoading();
                	 alert('Неудалось получить цены для детских билетов.');
                	 $('#is_child' + index).removeAttr('checked');
                	 $('.isChild').removeAttr('disabled');
                	 $('#submitButton').show();
                 },
                 
                 data:
                 {
                     from: $('#from').val(),
                     to: $('#to').val(),
                     date: $('#date').val(),
                     trainNumber: $('#trainNumber').val(),
                     category: $('#category').val(),
                     carNumber: $('#carNumber').val(),
                     serviceClass:  $('#service_class').val()
                 },
                 
                 type: 'post'
             });
			}
			else
			{
				addChildP(index);
			}
		}
	}
	else
	{
		child_count--;
		var select = $('#doc' + index);
		var v = select.val();
		select.html('<option value="1">Российский паспорт</option>'+
				'<option value="2">Свидетельство о рождении</option>'+
				'<option value="3">Иностранный паспорт</option>'+
				'<option value="4">Загран паспорт</option>'+
				'<option value="5">Удостоверение личности</option>'+
				'<option value="6">Паспорт моряка</option>');
		select.val(v);
	}
}

function showChildLoading(index)
{
	$('#is_child' + index).after('<span class="childLoad">Загрузка цены на детские билеты.</span>');
}

function hideChildLoading()
{
	$('.childLoad').remove();
}

function addChildP(index)
{
	child_count++;
	var options = $('#doc' + index + ' > option');
	options.each(function (i, item)
			{
				if (item.value == 1 || item.value > 4) 
				{
					$(item).remove();
				}
			});
	var select = $('#doc' + index);
	if (select.val() == 1 || select.val() > 4) {select.val(2); switchDocumentExample(index);}
}
	
function seatChange(cb, index, isSide)
{
	var noSideCount = parseInt($('#lower' + index).val()) + parseInt($('#upper' + index).val());
	var sideCount = parseInt($('#lowerSide' + index).val()) + parseInt($('#upperSide' + index).val());
	
	var lower = $('#lower' + index);
	var upper = $('#upper' + index);
	var lowerSide = $('#lowerSide' + index);
	var upperSide = $('#upperSide' + index);
	
	if (sideCount > 0)
	{
		lower.attr("disabled", "disabled").val(0);
		upper.attr("disabled", "disabled").val(0);
		lowerSide.removeAttr("disabled");
		upperSide.removeAttr("disabled");
	}

	if (noSideCount > 0)
	{
		lowerSide.attr("disabled", "disabled").val(0);
		upperSide.attr("disabled", "disabled").val(0);
		lower.removeAttr("disabled");
		upper.removeAttr("disabled");
	}
	
	if (noSideCount + sideCount == 0)
	{
		lower.removeAttr("disabled");
		upper.removeAttr("disabled");
		lowerSide.removeAttr("disabled");
		upperSide.removeAttr("disabled");
	}
}

function changeWC()
{
	notNearWC = $('#notNearWC').attr('checked') ? 1 : 0;
}

function changeRommette()
{
	inOneRoomette = $('#inOneRoomette').attr('checked') ? 1 : 0;
	
	// убирает 4 для vip
	if (inOneRoomette == 1)
	{
		$('select.vipPlaceSelect').html('<option value="0">0</option><option value="1">1</option><option value="2">2</option>');
	}
	else
	{
		$('select.vipPlaceSelect').each(function(i, item)
		{
					item = $(item);
					var seatsCount = item.hasClass('seats0') ? 0 :
						item.hasClass('seats1') ? 1 :
						item.hasClass('seats2') ? 2 :
						item.hasClass('seats3') ? 3 : 4;
					var html = '';
					for (var i=0; i<=seatsCount; i++) html += '<option value="'+i+'">'+i+'</option>';
					item.html(html);
		});
	}
}

function showError(err)
{
	$('#erdialog').html(err);
	$('#erdialog').dialog('open');
}

function isEmail(value)
{
	 return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
}


/* PAGE PRICES*/
function showRows(newCategory)
{
	if (newCategory != category)
	{
		$('tr.category' + category).hide();
		$('tr.category' + newCategory).show();
		$('#catb'+category).removeClass('obs').addClass('ob');
		$('#catb'+newCategory).removeClass('ob').addClass('obs');
		category = newCategory;
		
	}
}

