var localSearch = {
	submitSearch: function(){
		var local_search_url = baseURL+"/cautare/p"+$('#current_page').val();
		$('#localSearchForm').attr('action', local_search_url);
		$('#localSearchSubmit').click(function(event){
			event.preventDefault();
			if($('#keywords').val() != ''){
				$('#localSearchForm').submit();
				return false;
			}
		});
	},
	run: function(){
		localSearch.submitSearch();
	}
};
var searchAmadeus = {
	autocompleteDestinations: function(){
		$( "#From, #To" ).autocomplete({
			source: baseURL+"/ajax/autocomplete",
			minLength: 3,
			html: true
		});
	},
	checkFlightType: function(){
			var date_span = $("#ReturnDate").parent();
			var time_span = $(date_span).next();
			if($('#OneWay').is(':checked')) { 
				$(date_span).css('display', 'none');
				$('#ReturnDate').val('');
				$(time_span).css('display', 'none');
				$(time_span).children('select').val('00:01');
				$('#ArrivalFlexibility').parent().css('display', 'none');
				$('#ArrivalFlexibility').val('');
			}else{
				$(date_span).css('display', 'block');
				$(time_span).css('display', 'block');
				$('#ArrivalFlexibility').parent().css('display', 'block');
			}
	},
	changeFlightType: function(){
		$("input[name=SearchType]").click(function(){
			searchAmadeus.checkFlightType();
		});
	},
	submitSearch: function(){
		$('#searchSubmit').click(function(event){
			event.preventDefault();
			var process_url = baseURL+"/process/index";
			var valid = '';
			valid = searchAmadeus.validSearch();
			if(valid.length == 0){
				$("#searchForm").attr('action', process_url);
				$("#searchForm").submit();
				return false;
			}else{
//					$('#searchErrors').html(valid);
				alert(valid);
			}
		});
	},
	validSearch: function(){
		var errorStr = '';
		var depDate = 0;
		var arrDate = 0;
		if($('#From').val() == '' || $('#To').val() == ''){
			errorStr += 'Plecarea şi destinaţia sunt obligatorii\n';
		}
		if($('#DepartureDate').val() == ''){
			errorStr += 'Data plecării este obligatorie\n';
		}else{
			if(!searchAmadeus.validDate($('#DepartureDate').val())){
				errorStr += 'Data plecării în format zz/ll/aaaa\n'; 
			}else{
				depDate = Date.parse(searchAmadeus.convertDate($('#DepartureDate').val()));
			}
		}
		if($('#RoundTrip').is(':checked')){
			if($('#ReturnDate').val() == ''){
				errorStr += 'Data întoarcerii este obligatorie\n';
			}else{
				if(!searchAmadeus.validDate($('#ReturnDate').val())){
					errorStr += 'Data întoarcerii în format zz/ll/aaaa\n'; 
				}else{
					arrDate = Date.parse(searchAmadeus.convertDate($('#ReturnDate').val()));
					if(arrDate < depDate){
						errorStr += 'Data întoarcerii trebuie să fie după data plecării\n';
					}
				}
			}
		}
		if(parseInt($('#NumberOfInfants').val()) != 0 && parseInt($('#NumberOfInfants').val()) > parseInt($('#NumberOfAdults').val())){
			errorStr += 'Numărul de infanţi nu poate fi mai mare decât cel al adulţilor\n';
		}
		return errorStr;
	},
	convertDate: function(dateString){
		var day = '';
		var month = '';
		var year = '';
		day = dateString.substring(0,2);
		month = dateString.substring(3,5);
		year = dateString.substring(6);
		return month+'/'+day+'/'+year;
	},
	validDate: function(dateString){
		var datePattern = /^\d{2}\/\d{2}\/\d{4}$/;
		var day = '';
		var month = '';
		if(datePattern.test(dateString)){
			day = dateString.substring(0,2);
			if(parseInt(day, 10) < 1 || parseInt(day, 10) > 31){
				return false;
			}
			month = dateString.substring(3,5);
			if(parseInt(month, 10) < 1 || parseInt(month, 10) > 12){
				return false;
			}
			return true;
		}else{
			return false;
		}
	},
	run: function(){
		searchAmadeus.autocompleteDestinations();
		searchAmadeus.checkFlightType();
		searchAmadeus.changeFlightType();
		searchAmadeus.submitSearch();
	}
};

var nlSubscribe = {
	initialize: function(){
		$(".subscribeErrors").css('display', 'none');
		$("#subscribeName, #subscribeEmail").click(function(){
			$(".subscribeErrors").html('');
			$(".subscribeErrors").css('display', 'none');
			$("#subscribeName").removeClass('error');
			$("#subscribeEmail").removeClass('error');
		});
		$( "#butSubscribeNl" ).click(function() {
			$(".subscribeErrors").html('');
			$(".subscribeErrors").css('display', 'none');
			return false;
		});
	},
	subscribe: function(){
		$("#subscribeSubmit").click(function(event){
			event.preventDefault();
			if(nlSubscribe.validEmail() && nlSubscribe.validName()){
				$.ajax({
					url: baseURL + "/ajax/newsletter",
					type: 'post',
					async: false,
					data: {email : $('#subscribeEmail').val(), name : $("#subscribeName").val()},
					dataType: 'json',
					success: function (data) {
						$(".subscribeErrors").html(data[0]);
						$(".subscribeErrors").css('display', 'block');
					}
				});
			}else{
				$(".subscribeErrors").html('Ambele campuri sunt obligatorii.<br />Adresa de email trebuie să fie validă,<br />Numele trebuie să conţină doar litere.');
				$(".subscribeErrors").css('display', 'block');
			}
		});
	},
	validEmail: function(){
		var valid = false;
		var regexp = new RegExp('^[a-z0-9_\.]+@[a-z0-9\.]+\.[a-z]{2,3}$');
		if($("#subscribeEmail").val() != '' && regexp.test($('#subscribeEmail').val())){
			valid = true;
		}
		if(!valid){
			$("#subscribeEmail").addClass('error');
		}
		return valid;
	}, 
	validName: function(){
		var valid = true;
		var regexp = /[a-zA-Z ]+/;
		if($("#subscribeName").val() != ''){
			if(!regexp.test($('#subscribeName').val()) || $('#subscribeName').val().match(regexp) != $('#subscribeName').val()){
				valid = false;
			}
		}
		if(!valid){
			$("#subscribeName").addClass('error');
		}
		return valid;
	},
	run: function(){
		nlSubscribe.initialize();
		nlSubscribe.subscribe();
	}
};
var locationFinder = {
	initialize: function(){
		$('#finder_country').change(function(){
			locationFinder.deleteOptions('finder_city');
			locationFinder.getCities($('#finder_country').val());
			$('#finder_city').removeAttr('disabled');
			locationFinder.deleteOptions('finder_airport');
			$('#finder_airport').attr('disabled', 'disabled');
		});
		$('#finder_city').change(function(){
			locationFinder.deleteOptions('finder_airport');
			locationFinder.getAirports($('#finder_city').val());
			$('#finder_airport').removeAttr('disabled');
		});
		$('#finderSubmit').click(function(event){
			event.preventDefault();
			var selected_code = '';
			var selected_name = '';
			if($('#finder_airport').val() != ''){
				selected_code = $('#finder_airport').val();
				selected_name = $('#finder_city option:selected').text();
				selected_name += ', ' + $('#finder_country option:selected').text();
				selected_name += ' - ' + $('#finder_airport option:selected').text() + ' (' + selected_code + ')';
			}
			if($('#finder_city').val() != '' && selected_code == ''){
				selected_code = $('#finder_city').val(); 
				selected_name = $('#finder_city option:selected').text() + ', ' + $('#finder_country option:selected').text() + ' (' + selected_code + ')';
			}
			$('#'+$('#finder_return').val()).val(selected_name);
			$(".popup").fadeOut("fast");

			$("#finder_country option:selected").removeAttr('selected');
		    $("#finder_country option[value='']").attr('selected','selected');       
			
			locationFinder.deleteOptions('finder_city');
			locationFinder.deleteOptions('finder_airport');
			$('#finder_city').attr('disabled', 'disabled');
			$('#finder_airport').attr('disabled', 'disabled');
		});
	},
	getCountries: function(){
		$.ajax({
			url: baseURL + "/ajax/getCountries",
			type: 'post',
			async: false,
			data: {},
			dataType: 'json',
			success: function (data) {
				for(x in data){
					locationFinder.appendOption('finder_country', data[x].code, data[x].name);
				}
			}
		});
	},
	getCities: function(country_code){
		$.ajax({
			url: baseURL + "/ajax/getCities",
			type: 'post',
			async: false,
			data: {code: country_code},
			dataType: 'json',
			success: function (data) {
				for(x in data){
					locationFinder.appendOption('finder_city', data[x].code, data[x].name);
				}
			}
		});
	},
	getAirports: function(city_code){
		$.ajax({
			url: baseURL + "/ajax/getAirports",
			type: 'post',
			async: false,
			data: {code: city_code},
			dataType: 'json',
			success: function (data) {
				for(x in data){
					locationFinder.appendOption('finder_airport', data[x].code, data[x].name);
				}
			}
		});
	},
	appendOption: function(input_name, option_value, option_text){
		$('#'+input_name).append('<option value="'+option_value+'">'+option_text+'</option>');
	},
	deleteOptions: function(input_name){
		$('#'+input_name).empty();
		$('#'+input_name).append('<option value="" selected="selected">alege...</option>');
	},
	run: function(){
		locationFinder.getCountries();
		locationFinder.initialize();
	}
};
$().ready(function () {
	$("#col1, #col2, #col3").equalizeCols();
	localSearch.run();
	searchAmadeus.run();
	nlSubscribe.run();
	locationFinder.run();
});

