var bdrStl = "solid red 1px";
function isCompleted (elem, error) {
	if (elem.value.length != 0 && elem.value != " ") {
		elem.style.border = "";
		return true;
	} else {
		alert (error);
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
}

function isSelected (elem) {
	if (elem.selectedIndex != 0) {
		elem.style.border = "";
		return true;
	} else {
		alert ("Select one of the available options!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
}

function isChecked (elem) {
	elemChecked = false;
	for (var i = 0; i < elem.length; i++) {
		if (elem[i].checked) {
			var elemChecked = true;
			return true;
		}
	}
	
	if (elemChecked == false) {
		alert ("Please check one of the available options!");
		elem[0].focus();
		return false;
	}
}

function isNumeric (elem) {
	var format = /^[0-9]+$/;
	if (elem.value.match (format)) {
		elem.style.border = "";
		return true;
	} else {
		alert ("Please use only numeric characters!");
		elem.focus();
		elem.style.border = bdrStl;
		return false;
	}
}

function isFloat (elem) {
	var format = /^[0-9]+[\.\,]+[0-9]+$/;
	if (elem.value.match (format)) {
		elem.style.border = "";
		return true;
	} else {
		alert ("Please use only numeric characters for floating values. Decimal character: dot (.) or comma (,)!");
	}
}

function checkEmail (elem) {
	var str = elem.value;
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
		alert ("Please use a valid e-mail address!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
	
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		alert ("Please use a valid e-mail address!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
	
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		alert ("Please use a valid e-mail address!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
	
	if (str.indexOf(at,(lat+1))!=-1){
		alert ("Please use a valid e-mail address!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
	
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		alert ("Please use a valid e-mail address!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
	
	if (str.indexOf(dot,(lat+2))==-1){
		alert ("Please use a valid e-mail address!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
	
	if (str.indexOf(" ")!=-1){
		alert ("Please use a valid e-mail address!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
	
	elem.style.border = "";
	return true			
}

function checkBirthDate (day, month, year) {
	if (isNumeric(day) == true && isNumeric(month) == true && isNumeric(year) == true) {
		if (day.value > 0 && day.value <= 31) {
			day.style.border = "";
			if (month.value > 0 && month.value <= 12) {
				month.style.border = "";
				var curDate = new Date();
				var curDay = curDate.getDay();
				var curMonth = curDate.getMonth();
				var curYear = curDate.getFullYear();
				if (year.value > curYear - 80 && year.value <= curYear) {
					year.style.border = "";
					
					var insDate = new Date();
					var ageLimit = new Date();
					insDate.setFullYear (year.value, month.value-1, day.value);
					ageLimit.setFullYear (curYear-16, curMonth, curDay);
					
					if (insDate > curDate) {
						alert ("Date inserted is after today! Please check date of birth!");
						day.style.border = bdrStl;
						month.style.border = bdrStl;
						year.style.border = bdrStl;
						day.focus();
						return false;
					} else if (insDate > ageLimit) {
						alert ("Registration is only allowed for people over the age of 16!");
						window.location = "http://www.aegeanva.gr/new_site_2/";
						return false;
					} else {
						day.style.border = "";
						month.style.border = "";
						year.style.border = "";
						return true;
					}
				} else {
					alert ("Insert a valid date!");
					year.style.border = bdrStl;
					year.focus();
					return false;
				}
			} else {
				alert ("Insert a valid date!");
				month.style.border = bdrStl;
				month.focus();
				return false;
			}
		} else {
			alert ("Insert a valid date!");
			day.style.border = bdrStl;
			day.focus();
			return false;
		}
	} else {
		return false;
	}
}

function checkDate (elem, limit) {
	if (elem.value.length == 10) {
		var insDate = elem.value.split("/");
		var day = insDate[0];
		var month = insDate[1];
		var year = insDate[2];
		
		var curDate = new Date();
		var curYear = curDate.getFullYear();
		
		if (day > 0 && day <= 31) {
			elem.style.border = "";
			if (month >= 0 && month <= 12) {
				elem.style.border = "";
				if (year >= 2005 && year <= curYear+5) {
					elem.style.border = "";
					
					var insDate = new Date();
					insDate.setFullYear (year, month-1, day);
					if (limit == true) {
						if (insDate <= curDate) {
							elem.style.border = "";
							return true;
						} else {
							alert ("Date inserted is after today! Please check date of flight!")
							elem.style.border = bdrStl;
							elem.focus();
							return false;
						}
					} else {
						return true;
					}
				} else {
					alert ("Insert a valid date!");
					elem.style.border = bdrStl;
					elem.focus();
					return false;
				}
			} else {
				alert ("Insert a valid date!");
				elem.style.border = bdrStl;
				elem.focus();
				return false;
			}
		} else {
			alert ("Insert a valid date!");
			elem.style.border = bdrStl;
			elem.focus();
			return false;
		}
	} else {
		alert ("Please use the following format for the date: DD/MM/YYYY!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
}

function isTime (elem) {
	if (elem.value.length == 5) {
		var time = elem.value.split(":");
		var hour = time[0];
		var min = time[1];
		
		if (hour >= 0 && hour < 24) {
			if (min >= 0 && min < 60) {
				return true;
			} else {
				alert ("Insert a valid time!");
				elem.style.border = bdrStl;
				elem.focus();
				return false;
			}
		} else {
			alert ("Insert a valid time!");
			elem.style.border = bdrStl;
			elem.focus();
			return false;
		}
	} else {
		alert ("Please use the following format for time: HH:MM!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
}

function checkFlightNum (elem) {
	var format_1 = /^[A]+[E]+[E]+[0-9]+[0-9]+[0-9A-Z]+$/;
	var format_2 = /^[A]+[3]+[0-9\-]+[0-9]+[0-9A-Z]+$/;
	var format_3 = /^[F]+[L]+[Y]+[0-9]+[0-9]+[0-9A-Z]+$/;
	if (elem.value.match (format_1) || elem.value.match (format_2) || elem.value.match (format_3)) {
		elem.style.border = "";
		return true;
	} else {
		alert ("Use a valid format for \"Flight number\"! Accepted formats are: AEE0000, A30000 &FLY0000 where 0000 is the flight number (eg: AEE747/ A3-747). The use of hypen (-) is not mandatory.");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
}

function checkTourFlightNum (elem) {
	var format = /^[A-Z]+[A-Z]+[A-Z]+[A-Z0-9]+[0-9]+[0-9]+$/;
	if (elem.value.match (format)) {
		elem.style.border = "";
		return true;
	} else {
		alert ("Use a valid format for \"Flight number\"!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
}

function checkAptICAO (elem) {
	var format = /^[A-Z]+$/;
	if (elem.value.length == 4) {
		elem.style.border = "";
		if (elem.value.match (format)) {
			elem.style.border = "";
			return true;
		} else {
			alert ("Use only alphabetical characters for the airport's ICAO code. Examples of valid and accepted ICAO codes: KJFK, LGAV, YBBM!");
			elem.style.border = bdrStl;
			elem.focus();
			return false;
		}
	} else {
		alert ("Use a valid format for airport's ICAO code. ICAO codes consist of 4 letters (eg. KJFK, LGAV, YMMB)!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
}

function checkReg (elem) {
	var format = /^[A-Z]+$/;
	if (elem.value.match (format)) {
		elem.style.border = "";
		return true;
	} else {
		alert ("Use a valid registration code! Registration code can only contain letters!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
}

function checkCoord (elem) {
	var format = /^[0-9\.\-]+$/;
	if (elem.value.match (format)) {
		elem.style.border = "";
		return true;
	} else {
		alert ("Use valid GPS format for coordinates (e.g. 40.519725)! To indicate S/W add the minus sign (-) in front (e.g. -73.778925)!");
		elem.style.border = bdrStl;
		elem.focus();
		return false;
	}
}

function isLoaded () {
	alert ("Functions have been succesfully loaded!");
}
