


var errMessages = "";

var emptyString = /^\s*$/;

var global_valfield;



function trim(str)

{

  return str.replace(/^\s+|\s+$/g, '');

}



function setFocusDelayed()

{

  global_valfield.focus();

}



function setfocus(valfield)

{

  // save valfield in global variable so value retained when routine exits

  global_valfield = valfield;

  setTimeout( 'setFocusDelayed()', 100 );

}



function isEmpty(fieldVal) {
	
	if (emptyString.test(fieldVal)) {
		
		return true;
		
	}
	
	return false;
}


function validateRequired(field, fieldName) {
	
	fieldVal = trim(field.value);
	
	if (isEmpty(fieldVal)) {
		
		errMessages += "Please fill in the field " + fieldName + ".\n";
		
		setfocus(field);
		
		return false;
		
	}
	
	return true;
}




function validateEmail(emailField, required) {
	
	fieldVal = trim(emailField.value);
	
	if (emptyString.test(fieldVal)) {

		if (required) { 
	
		  errMessages += "Please enter your e-mail address.\n";
		  
		  setfocus(emailField);
	
		  return false;
	
		}
	
	}
	
	emailExp = /^[^@]+@[^@.]+\.[^@]*\w\w$/;
	
	if (!emailExp.test(fieldVal)) {

		errMessages += "Please enter a valid e-mail address.\n";
		
		setfocus(emailField);
	
		return false;

	}
	
	return true;
	
}




function validateTelephone(field, required) {
	
	fieldVal = trim(field.value);
	
	if (emptyString.test(fieldVal)) {

		if (required) { 
	
		  errMessages += "Please enter your phone number.\n";
		  
		  setfocus(field);
	
		  return false;
	
		}
	
	}
	
	telephoneExp = /[^\d\s\(\)\+]/;
	
	if (telephoneExp.test(fieldVal)) {

		errMessages += "Please use only numbers, paranthesis and + in the 'Phone' field.\n";
		
		setfocus(field);
	
		return false;

	}
	
	return true;
	
}



function validateRoomType(field, required) {
	
	fieldVal = trim(field.value);
	
	if (emptyString.test(fieldVal)) {

		if (required) { 
	
		  errMessages += "Please choose a room type.\n";
		  
		  setfocus(field);
	
		  return false;
	
		}
	
	}
	
	switch(fieldVal) {
		
		case "Standard":
		case "Handicapped":
		case "Suite":
		case "Honeymoon":
		case "Executive":
		case "King":
		case "standard":
		case "handicapped":
		case "suite":
		case "honeymoon":
		case "executive":
		case "king":
			return true;
			break;
	}
	
	errMessages += "Invalid room type. Please choose a valid room type.\n";
		  
	setfocus(field);
	
	return false;
	
}



function validateRoomNum(field, field2, required) {
	
	fieldVal = trim(field.value);
	field2Val = trim(field2.value);
	
	if (emptyString.test(fieldVal)) {

		if (required) { 
	
		  errMessages += "Please enter the number of rooms to reserve.\n";
		  
		  setfocus(field);
	
		  return false;
	
		}
	
	}
	
	twoDigitExp = /^\d{1,2}$/;
	zeroExp = /^0+$/;
	
	if (!twoDigitExp.test(fieldVal) || zeroExp.test(fieldVal)) {
		
		errMessages += "Invalid number of rooms. Please enter a valid number of rooms to reserve.\n";
		
		setfocus(field);
		
		return false;
		
	}
	
	switch(field2Val) {
		
		case "Standard":
		case "standard":
			
			if (fieldVal > 76) {
				
				errMessages += "There are only 76 Standard Rooms. Please check the number of rooms.\n";
				
				setfocus(field);
				
				return false;
				
			}
			
			break;
			
		case "Engelli":
		case "engelli":
		
			if (fieldVal > 1) {
				
				errMessages += "There is only 1 Special Handicapped Room. Please check the number of rooms.\n";
				
				setfocus(field);
				
				return false;
				
			}
			
			break;
			
		case "Suite":
		case "suite":
		
			if (fieldVal > 5) {
				
				errMessages += "There are only 5 Suite Rooms. Please check the number of rooms.\n";
				
				setfocus(field);
				
				return false;
				
			}
			
			break;
			
		case "Balayı":
		case "balayı":
		
			if (fieldVal > 1) {
				
				errMessages += "There is only 1 Honeymoon Suite. Please check the number of rooms.\n";
				
				setfocus(field);
				
				return false;
				
			}
			
			break;
			
		case "Executive":
		case "executive":
		
			if (fieldVal > 1) {
				
				errMessages += "There is only 1 Executive Room. Please check the number of rooms.\n";
				
				setfocus(field);
				
				return false;
				
			}
			
			break;
			
		case "Kral":
		case "kral":
		
			if (fieldVal > 1) {
				
				errMessages += "There is only 1 King Suite. Please check the number of rooms.\n";
				
				setfocus(field);
				
				return false;
				
			}
			
			break;
	}
	
	return true;
	
}




function validateDates(checkinDateField, checkoutDateField, required) {
	
	checkinDateVal = trim(checkinDateField.value);
	
	checkoutDateVal = trim(checkoutDateField.value);
	
	
	if (emptyString.test(checkinDateVal) && emptyString.test(checkoutDateVal)) {

		if (required) { 
	
		  errMessages += "Please choose the check-in and check-out dates.\n";
		  
		  setfocus(checkinDateField);
	
		  return false;
	
		} 
	
	} else if (emptyString.test(checkinDateVal)) {
			
		if (required) { 
	
		  errMessages += "Please choose the check-in date.\n";
		  
		  setfocus(checkinDateField);
	
		  return false;
	
		} 
			
	} else if (emptyString.test(checkoutDateVal)) {
			
		if (required) { 
	
		  errMessages += "Please choose the check-out date\n";
		  
		  setfocus(checkoutDateField);
	
		  return false;
	
		} 
			
	}
	
	dateExp = /^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{2,4})$/;
	
	if (!dateExp.test(checkinDateVal) && !dateExp.test(checkoutDateVal)) {
		
		errMessages += "Invalid check-in / check-out dates. Please check your check-in / check-out dates.\n";
		  
		setfocus(checkinDateField);
	
		return false;
		
	} else if (!dateExp.test(checkoutDateVal)) {
		
		errMessages += "Invalid check-out date. Please check your check-out date.\n";
		  
		setfocus(checkoutDateField);
	
		return false;
		
	} else if (!dateExp.test(checkinDateVal)) {
		
		errMessages += "Invalid check-in date. Please check your check-in date.\n";
		  
		setfocus(checkinDateField);
	
		return false;
		
	}
	
	today = new Date();
	weekLater = new Date();
	weekLater.setDate(today.getDate()+7);
	
	checkinArray = checkinDateVal.split(".", 3);
	checkoutArray = checkoutDateVal.split(".", 3);
	
	if (checkinArray[2].length == 2) {
		
		checkinArray[2] = "20" + checkinArray[2];
		
	}
	
	if (checkoutArray[2].length == 2) {
		
		checkoutArray[2] = "20" + checkoutArray[2];
		
	}
	
	checkinDate = new Date();
	checkinDate.setFullYear(checkinArray[2], checkinArray[1]-1, checkinArray[0]);
	checkinDate.setHours(23);
	checkinDate.setMinutes(59);
	checkinDate.setSeconds(59);
	
	checkoutDate = new Date();
	checkoutDate.setFullYear(checkoutArray[2], checkoutArray[1]-1, checkoutArray[0]);
	checkoutDate.setHours(23);
	checkoutDate.setMinutes(59);
	checkoutDate.setSeconds(59);
	
	if (checkinDate < today) {
		
		errMessages += "Check-in date cannot be in the past. Please check your check-in date.\n";
		  
		setfocus(checkinDateField);
	
		return false;
		
	}
	
	if (checkoutDate <= checkinDate) {
		
		errMessages += "Check-out date must be a later date than the check-in date. Please check your dates.\n";
		  
		setfocus(checkinDateField);
	
		return false;
		
	}
	
	return true;
	
}



function validateOnSubmit() {
    var elem;
    var errs=0;
    // execute all element validations in reverse order, so focus gets
    // set to the first one in error.
	
    if (!validateTelephone(document.forms.form_rezrv1.telefon, false)) errs += 1;
	if (!validateEmail(document.forms.form_rezrv1.eposta, true)) errs += 1;
	if (!validateRequired(document.forms.form_rezrv1.soyad, "\'Last Name\'", true)) errs += 1;
	if (!validateRequired(document.forms.form_rezrv1.isim, "\'First Name\'", true)) errs += 1;
	if (!validateRoomType(document.forms.form_rezrv1.oda_tipi, true)) errs += 1;
	if (!validateRoomNum(document.forms.form_rezrv1.oda_sayisi, document.forms.form_rezrv1.oda_tipi, true)) errs += 1;
	if (!validateDates(document.forms.form_rezrv1.giris_tarihi, document.forms.form_rezrv1.cikis_tarihi, true)) errs += 1;

    if (errs >= 1)  alert(errMessages);
	
	errMessages = "";

    return (errs==0);
}