var phoneChanged = false;
var hasRef = false;
var fuckRef = false;

function setForm() {
	var today = new Date();
	
	//date set
	document.jobForm.date_day.value = (today.getDate() < 9) ? "0" + today.getDate() : today.getDate();
	document.jobForm.date_month.value = ((today.getMonth() + 1) < 9) ? "0" + (today.getMonth() + 1) : (today.getMonth() + 1);
	document.jobForm.date_year.value = today.getYear();
}

function copyPhone() {
	if (!phoneChanged) {
		document.jobForm.telephone_work.value = document.jobForm.telephone.value;
		alert("If your work and home number are different, please change your work number now!");
		phoneChanged = true;
	}
}

function countAge() {
	var today = new Date();
	var birthDate = new Date();
	
	if (document.jobForm.birth_day.value.length) {
		if (document.jobForm.birth_month.value.length) {
			if (document.jobForm.birth_year.value.length) {
				if (document.jobForm.birth_year.value.length < 4) {
					alert("The Date of Birth (Year) entry box is to short!\nFor digits year format is required!");
					document.jobForm.birth_year.focus();
					return false;	
				} else {
					//wszystko ok!
					birthDate.setYear(document.jobForm.birth_year.value);
					birthDate.setMonth((document.jobForm.birth_month.value - 1));
					birthDate.setDate(document.jobForm.birth_day.value);
					
					if (birthDate.getYear() < today.getYear()) {
						if (birthDate.getMonth() < today.getMonth()) {
							document.jobForm.age.value = (birthDate.getYear() < 2000) ? (today.getYear() - (birthDate.getYear() + 1900)) : (today.getYear() - birthDate.getYear());
						} else if (birthDate.getMonth() == today.getMonth()) {
							if (birthDate.getDate() >= today.getDate()) {
								document.jobForm.age.value = (birthDate.getYear() < 2000) ? (today.getYear() - (birthDate.getYear() + 1900)) : (today.getYear() - birthDate.getYear());
							} else {
								document.jobForm.age.value = (birthDate.getYear() < 2000) ? (today.getYear() - (birthDate.getYear() + 1900) - 1) : (today.getYear() - birthDate.getYear() - 1);
							}
						} else {
							document.jobForm.age.value = (birthDate.getYear() < 2000) ? (today.getYear() - (birthDate.getYear() + 1900) - 1) : (today.getYear() - birthDate.getYear() - 1);
						}
					} else {
						alert("A Man from the future!?\nYou have not been born yet!\nCorrect Date of Birth (Year) entry box immediately!");
						return false;
					}
				}
			} else {
				alert("The Date of Birth (Month) entry box is empty!");
				document.jobForm.birth_month.focus();
				return false;
			}
		} else {
			alert("The Date of Birth (Day) entry box is empty!");
			document.jobForm.birth_day.focus();
			return false;
		}
	}
}

function checkForm(form) {
	if (!form.fname.value.length) {
		alert("The First Name entry box is empty!");
		form.fname.focus();
		return false;
	}
	
	if (!form.lname.value.length) {
		alert("The Last Name entry box is empty!");
		form.lname.focus();
		return false;
	}
	
	if (!form.street.value.length) {
		alert("The Street entry box is empty!");
		form.street.focus();
		return false;
	}
	
	if (!form.zipcode.value.length) {
		alert("The Zip Code entry box is empty!");
		form.zipcode.focus();
		return false;
	} else {
		if (form.zipcode.value.length != 6) {
			(form.zipcode.value.length < 6) ? alert("The Zip Code entry box is to short!") : alert("The Zip Code entry box is to long!");
			form.zipcode.focus();
			return false;
		} else {
			var str = form.zipcode.value;
			for(i = 0; i < str.length; i++) {
				if (i != 2) {
					if (isNaN(str.substring(i, i+1))) {
						alert("The Zip Code is invalid!");
						form.zipcode.focus();
						return false;
					}
				} else {
					if (!isNaN(str.substring(i, i+1))) {
						alert("The Zip Code is invalid!");
						form.zipcode.focus();
						return false;
					}
				}
			}
		}
	}
	
	if (!form.city.value.length) {
		alert("The City / Post Office entry box is empty!");
		form.city.focus();
		return false;
	}
	
	if (!form.email.value.length) {
		if (!confirm("The E-mail address entry box is empty!\nDo you want to continue?")) {
			alert("Please fill in the E-mail address entry box!");
			form.email.focus();
			return false;
		}
	} else {
		var str = form.email.value;
      var hasAt = false, hasDot = false, hasDoubleDot = false;
      var countAt = 0, countDot = 0;
		var indexAt = 0, indexDoubleDot = 0;
      
		if ((str.charAt(0) == '@') || (str.charAt(0) == '.')) {
			alert("The E-mail address entry box is invalid!\nEmail address cannot start with a '" + str.charAt(0) + "' character!");
         form.email.focus();
         return false;
      } else if ((str.charAt(str.length-1) == '@')) {
         alert("The E-mail address entry box is invalid!\nThere is a mail server domain missing!\nYou have: " + form.email.value + "\nShould be (eg.): " + form.email.value + "server.com");
         form.email.focus();
         return false;
      } else if ((str.charAt(str.length-1) == '.')) {
			alert("The E-mail address entry box is invalid!\nThere is a domain missing!\nYou have: " + form.email.value + "\nShould be (eg.): " + form.email.value + "com");
         form.email.focus();
         return false;
		}
		  
      for(i = 0; i < str.length; i++) {
			switch(str.charAt(i)) {
				case '@':
					hasAt = true;
					countAt++;
					break;
				case ' ':
            case '\\':
            case '/':
            case '!':
            case '~':
            case '`':
            case '#':
            case '$':
            case '%':
            case '^':
            case '&':
            case '*':
            case '(':
            case ')':
            case '+':
            case '=':
            case '|':
            case '{':
            case '}':
            case '[':
            case ']':
            case ':':
            case ';':
            case '"':
            case '\'':
            case '<':
            case '>':
            case ',':
            case '?':
            	alert("The E-mail address entry box is invalid because of a wrong charecter '" + str.charAt(i) +"' at the position no. " + (i+1));
               form.email.focus();
               return false;                    
            default:
               break;
         }
			
			if (hasAt) {
      		if (countAt != 1) {
         		alert("The E-mail address entry box is invalid!\nThere are to many '@' characters!");
	            return false;
   	      } else {
					if (indexAt == 0) {
						indexAt = i;
					}
				}
      	}
		}
	 
		if (!hasAt) {
         alert("The E-mail address entry box is invalid!\nThere is a '@' character missing!");
         form.email.focus();
         return false;
      }
		
		for(i = indexAt; i < str.length; i++) {
			if (str.charAt(i) == '.') {
				countDot++;
				hasDot = true;
				if (str.charAt(i+1) == '.') {
					if (!hasDoubleDot) {
						hasDoubleDot = true;
						indexDoubleDot = i+1;
					} else {
						break;
					}
				}
			}
		}
		
		if (!hasDot) {
			alert("The E-mail address entry box is invalid!\nThere is a domain name missing!");
         form.email.focus();
         return false;
		} else {
			if (indexDoubleDot != 0) {
				var errStr = str.substring(indexDoubleDot-1, str.length);
				var corrStr = str.substring(0, indexDoubleDot-1);
				
				hasDoubleDot = false;
				for(i = 0; i < errStr.length; i++) {
					if (errStr.charAt(i) == '.') {
						if (errStr.charAt(i+1) != '.') {
							if (!hasDoubleDot) {
								corrStr += errStr.charAt(i);
							}							
						} else {
							if (!hasDoubleDot) {
								hasDoubleDot = true;
								corrStr += errStr.charAt(i);
							}
						}
					} else {
						if (hasDoubleDot) {
							hasDoubleDot = false;
						}
						corrStr += errStr.charAt(i);
					}
				}
				
				if (confirm("The E-mail address entry box is invalid!\nThere are to many dots in the mail server address!\nYou have: " + str + "\nShould be: " + corrStr + "\n\nWould you like me, to put the correct value into the E-mail address entry box?")) {
					form.email.value = corrStr;
					alert("The E-mail address entry box was changed!\nPlease click SEND button to send the form.");
					form.sendButton.focus();
				} else {
					alert("Please correct the E-mail address entry box immediately!");
					form.email.focus();
				}
				return false;
			}
		}
	}
	
	if (!form.birth_day.value.length) {
		alert("The Date of Birth (Day) entry box is empty!");
		form.birth_day.focus();
		return false;
	} else {
		if (form.birth_day.value.length < 2) {
			if (confirm("The Date of Birth (Day) entry box is to short!\nTwo digits day format is required.\nWould you like me, to put the correct value there?")) {
				form.birth_day.value = (form.birth_day.value < 9) ? ("0" + form.birth_day.value) : form.birth_day.value;
				alert("Required changes have been made!\nPlease click SEND button to send the form.");
				form.sendButton.focus();
			} else {
				alert("Please correct the Date of Birth (Day) entry box immediately!");
				form.birth_day.focus();
			}
			return false;	
		}
	}
	
	if (!form.birth_month.value.length) {
		alert("The Date of Birth (Month) entry box is empty!");
		form.birth_month.focus();
		return false;
	} else {
		if (form.birth_month.value.length < 2) {
			if (confirm("The Date of Birth (Month) entry box is to short!\nTwo digits month format is required.\nWould you like me, to put the correct value there?")) {
				form.birth_month.value = (form.birth_month.value < 9) ? ("0" + form.birth_month.value) : form.birth_month.value;
				alert("Required changes have been made!\nPlease click SEND button to send the form.");
				form.sendButton.focus();
			} else {
				alert("Please correct the Date of Birth (Month) entry box immediately!");
				form.birth_month.focus();
			}
			return false;	
		}
	}
	
	if (!form.birth_year.value.length) {
		alert("The Date of Birth (Year) entry box is empty!");
		form.birth_month.focus();
		return false;
	} else {
		if (form.birth_year.value.length < 4) {
			alert("The Date of Birth (Year) entry box is to short!\nFor digits year format is required!");
			form.birth_year.focus();
			return false;	
		}
	}
	
	if (!form.male.checked) {
		if (!form.female.checked) {
			alert("The Sex entry box is empty!");
			form.male.focus();
			return false;
		}
	} else {
		if (form.female.checked) {
			alert("Are you bisexual?");
			form.male.focus();
			return false;
		}
	}
	
	if (form.single.checked) {
		if (form.married.checked || form.divorced.checked) {
			alert("The Martial status entry box is invalid!");
			form.signle.focus();
			return false;
		}
	} else {
		if (!form.married.checked) {
			if (!form.divorced.checked) {
				alert("The Martial status entry box is invalid!");
				form.signle.focus();
				return false;
			}
		}
	}
	
	if (!form.medical_history.value.length) {
		alert("The Medical History entry box is empty!\nPlease complete or write 'none'");
		form.medical_history.focus();
		return false;
	} else if (form.medical_history.value == '\n') {
		alert("The Medical History entry box is empty!\nPlease complete or write 'none'");
		form.medical_history.focus();
		return false;
	}
	
	if (!form.days_missed.value.length) {
		if (confirm("The Medical History (missed days) entry box is empty!\nWould you like ME to put a 0 (zero) there?")) {
			form.days_missed.value = 0;
		} else {
			alert("Please correct the Medical History (missed days) entry box immediately!");
			form.days_missed.focus();
		}
		return false;
	}
	
	if (!form.convictions.value.length) {
		alert("The Convictions entry box is empty!\nPlease complete or write 'none'");
		form.convictions.focus();
		return false;
	}
	
	var refNum = 0;
	
	if (!hasRef) {
		if (!form.reference1_fname.value.length) {
			if (confirm("You should have at least one reference!\nWould you like to send the for anyway?")) {
				fuckRef = true;
			}
		
			if (!form.reference2_fname.value.length) {
				if (confirm("You should have at least one reference!\nWould you like to send the for anyway?")) 	{
					fuckRef = true;
				}
				
				if (!form.reference3_fname.value.length) {
					if (confirm("You should have at least one reference!\nWould you like to send the for anyway?")) 		{
						fuckRef = true;
					}
					
					if (!form.reference4_fname.value.length) {
						if (confirm("You should have at least one reference!\nWould you like to send the for anyway?")) 			{
							fuckRef = true;
						}
					} else {
						refNum = 4;
						hasRef = true;
					}
				} else {
					refNum = 3;
					hasRef = true;
				}
			} else {
				refNum = 2;
				hasRef = true;
			}
		} else {
			refNum = 1;
			hasRef = true;
		}
	}
	
	if (!fuckRef && hasRef) {
		switch(refNum) {
			case 1:
				if (!form.reference1_fname.value.length) {
					alert("The Reference1 First Name entry box is empty!");
					form.reference1_fname.focus();
					return false;
				}
				
				if (!form.reference1_lname.value.length) {
					alert("The Reference1 Last Name entry box is empty!");
					form.reference1_lname.focus();
					return false;
				}
				
				if (!form.reference1_street.value.length) {
					alert("The Reference1 Street entry box is empty!");
					form.reference1_street.focus();
					return false;
				}
				
				if (!form.reference1_zipcode.value.length) {
					alert("The Reference1 Zip-Code entry box is empty!");
					form.reference1_zipcode.focus();
					return false;
				} else if (form.reference1_zipcode.value.length < 6) {
					alert("The Reference1 Zip-Code entry box is to short!");
					form.reference1_zipcode.focus();
					return false;
				} else if (form.reference1_zipcode.value.length > 6) {
					alert("The Reference1 Zip-Code entry box is to long!");
					form.reference1_zipcode.focus();
					return false;
				}
				
				if (!form.reference1_city.value.length) {
					alert("The Reference1 City / Post entry box is empty!");
					form.reference1_city.focus();
					return false;
				}
				
				if (!form.reference1_telephone.value.length) {
					alert("The Reference1 Telephone Number entry box is empty");
					form.reference1_telephone.focus();
					return false;
				}
				break;
			case 2:
				if (!form.reference2_fname.value.length) {
					alert("The Reference2 First Name entry box is empty!");
					form.reference2_fname.focus();
					return false;
				}
				
				if (!form.reference2_lname.value.length) {
					alert("The Reference2 Last Name entry box is empty!");
					form.reference2_lname.focus();
					return false;
				}
				
				if (!form.reference2_street.value.length) {
					alert("The Reference2 Street entry box is empty!");
					form.reference2_street.focus();
					return false;
				}
				
				if (!form.reference2_zipcode.value.length) {
					alert("The Reference1 Zip-Code entry box is empty!");
					form.reference2_zipcode.focus();
					return false;
				} else if (form.reference2_zipcode.value.length < 6) {
					alert("The Reference2 Zip-Code entry box is to short!");
					form.reference2_zipcode.focus();
					return false;
				} else if (form.reference2_zipcode.value.length > 6) {
					alert("The Reference2 Zip-Code entry box is to long!");
					form.reference2_zipcode.focus();
					return false;
				}
				
				if (!form.reference2_city.value.length) {
					alert("The Reference2 City / Post entry box is empty!");
					form.reference2_city.focus();
					return false;
				}
				
				if (!form.reference2_telephone.value.length) {
					alert("The Reference2 Telephone Number entry box is empty");
					form.reference2_telephone.focus();
					return false;
				}
				break;
			case 3:
				if (!form.reference3_fname.value.length) {
					alert("The Reference3 First Name entry box is empty!");
					form.reference3_fname.focus();
					return false;
				}
				
				if (!form.reference3_lname.value.length) {
					alert("The Reference3 Last Name entry box is empty!");
					form.reference3_lname.focus();
					return false;
				}
				
				if (!form.reference3_street.value.length) {
					alert("The Reference3 Street entry box is empty!");
					form.reference3_street.focus();
					return false;
				}
				
				if (!form.reference3_zipcode.value.length) {
					alert("The Reference3 Zip-Code entry box is empty!");
					form.reference3_zipcode.focus();
					return false;
				} else if (form.reference3_zipcode.value.length < 6) {
					alert("The Reference3 Zip-Code entry box is to short!");
					form.reference3_zipcode.focus();
					return false;
				} else if (form.reference3_zipcode.value.length > 6) {
					alert("The Reference3 Zip-Code entry box is to long!");
					form.reference3_zipcode.focus();
					return false;
				}
				
				if (!form.reference3_city.value.length) {
					alert("The Reference3 City / Post entry box is empty!");
					form.reference3_city.focus();
					return false;
				}
				
				if (!form.reference3_telephone.value.length) {
					alert("The Reference3 Telephone Number entry box is empty");
					form.reference3_telephone.focus();
					return false;
				}
				break;
			case 4:
				if (!form.reference4_fname.value.length) {
					alert("The Reference4 First Name entry box is empty!");
					form.reference4_fname.focus();
					return false;
				}
				
				if (!form.reference4_lname.value.length) {
					alert("The Reference4 Last Name entry box is empty!");
					form.reference4_lname.focus();
					return false;
				}
				
				if (!form.reference4_street.value.length) {
					alert("The Reference4 Street entry box is empty!");
					form.reference4_street.focus();
					return false;
				}
				
				if (!form.reference4_zipcode.value.length) {
					alert("The Reference4 Zip-Code entry box is empty!");
					form.reference4_zipcode.focus();
					return false;
				} else if (form.reference4_zipcode.value.length < 6) {
					alert("The Reference4 Zip-Code entry box is to short!");
					form.reference4_zipcode.focus();
					return false;
				} else if (form.reference4_zipcode.value.length > 6) {
					alert("The Reference4 Zip-Code entry box is to long!");
					form.reference4_zipcode.focus();
					return false;
				}
				
				if (!form.reference4_city.value.length) {
					alert("The Reference4 City / Post entry box is empty!");
					form.reference4_city.focus();
					return false;
				}
				
				if (!form.reference4_telephone.value.length) {
					alert("The Reference4 Telephone Number entry box is empty");
					form.reference4_telephone.focus();
					return false;
				}
				break;
			default:
				break;
		}
	}
	return true;
}