















var maxInfantsPerAdult  = 1;
var maxChildrenPerAdult = 2;
var maxNoOfTravellers   = 8;
var maxNoOfChildren     = 4;
var maxNoOfInfants      = 4;
var destDefault         = '??? otherDestDefaultMsg ???';


function setNumTravellers(form, a, c, i) {
  if (form.numberOfAdults.options[0].value == 0){
  	form.numberOfAdults.selectedIndex  = a;
  }else{
  	form.numberOfAdults.selectedIndex  = a-1;
  }
  form.numberOfChildren.selectedIndex  = c;
  form.numberOfInfants.selectedIndex = i;
}

function checkTravellers(form, type) {
  var numAdultCatMenu  = form.numberOfAdults;
  var numChildCatMenu  = form.numberOfChildren;
  var numInfantCatMenu = form.numberOfInfants;

  var numAdultCat  = parseInt(numAdultCatMenu.options[numAdultCatMenu.selectedIndex].value);
  var numChildCat  = numChildCatMenu.selectedIndex;
  var numInfantCat = numInfantCatMenu.selectedIndex;

  var totNumChildCat = numChildCat + numInfantCat;

  var numChildCatAllowed  = numAdultCat * maxChildrenPerAdult;
  var numInfantCatAllowed = numAdultCat * maxInfantsPerAdult;

  if (type == 'adult') {
    if (numAdultCat == 0) {
      alert('Det må være minst en voksen på reisen');
      setNumTravellers(form, 1, 0, 0);
      return false;
    }
     else if (numAdultCat > maxNoOfTravellers) {
      alert('Maks '+maxNoOfTravellers+' Passasjerer');
      setNumTravellers(form, maxNoOfTravellers, 0, 0);
      return false;
    }
    else if (numAdultCat + totNumChildCat > maxNoOfTravellers) {
      alert('Maks '+maxNoOfTravellers+' Passasjerer');
      setNumTravellers(form, numAdultCat, 0, 0);
      return false;
    }
    else if (numInfantCat > numInfantCatAllowed) {
      alert('Maks '+maxInfantsPerAdult+' spedbarn per voksen passasjer');
      setNumTravellers(form, numAdultCat, 0, 0);
      return false;
    }
    return true;
  }

  if (type == 'child') {
    if (totNumChildCat > maxNoOfChildren) {
      alert('Maks '+maxNoOfChildren+' barn');
      setNumTravellers(form, numAdultCat, 0, numInfantCat);
    }
    else if (numAdultCat + totNumChildCat > maxNoOfTravellers) {
      alert('Maks '+maxNoOfTravellers+' Passasjerer');
      setNumTravellers(form, numAdultCat, 0, numInfantCat);
    }
    return;
  }

  if (type == 'infant') {
    if (totNumChildCat > maxNoOfChildren) {
      alert('Maks '+maxNoOfChildren+' barn');
      setNumTravellers(form, numAdultCat, numChildCat, 0);
    }
    else if (numInfantCat > maxNoOfInfants) {
      alert('Maks '+maxNoOfInfants+' spedbarn');
      setNumTravellers(form, numAdultCat, numChildCat, 0);
    }
    else if (numAdultCat + totNumChildCat > maxNoOfTravellers) {
      alert('Maks '+maxNoOfTravellers+' Passasjerer');
      setNumTravellers(form, numAdultCat, numChildCat, 0);
    }
    else if (numInfantCat > numInfantCatAllowed) {
      alert('Maks '+maxInfantsPerAdult+' spedbarn per voksen passasjer');
      setNumTravellers(form, numAdultCat, numChildCat, 0);
    }
    return;
  }
}


function numAdultCatMenuChanged(menu) {
  checkTravellers(menu.form, 'adult');
}

function numChildCatMenuChanged(menu) {
  checkTravellers(menu.form, 'child');
} 

function numInfantCatMenuChanged(menu) {
  checkTravellers(menu.form, 'infant');
}

function validateChildrenAndInfants(form, infantMaxAge, childMaxAge) {
	var numChildrenInfants = form.numberOfChildrenInfants.selectedIndex;
	var childrenInfantsAge = form.childrenInfantsAge.value;

	form.numberOfChildren.selectedIndex = 0;
	form.numberOfInfants.selectedIndex = 0;

	if (numChildrenInfants == 0) {
		childrenInfantsAge = '';
		return true;
	}
	
	if (!childrenInfantsAge.match(/(^ *\d+ *(, *\d+ *)*$)/)) {
		alert('Feil i barnets alder');
		return false;
	}

	var parts = childrenInfantsAge.split(",");
	if (numChildrenInfants != parts.length) {
		alert('Feil i barnets alder');
		return false;
	}

	for (i=0; i<parts.length; i++) {
		var part = parts[i].replace(" ", "");
		if (part <= infantMaxAge) {
			form.numberOfInfants.selectedIndex++;
		} else if (part <= childMaxAge) {
			form.numberOfChildren.selectedIndex++;
		} else {
			alert('Feil i barnets alder');
			return false
		}
	}

	return true;
}

function validateHotelChildrenAndInfants(form, infantMaxAge, childMaxAge, numChildrenInfantsSelect, childrenInfantsAgeInput) {
	var numChildrenInfants = numChildrenInfantsSelect.val();
	var childrenInfantsAge = childrenInfantsAgeInput.val();

	if (numChildrenInfants == 0) {
		childrenInfantsAge = '';
		return true;
	}

	if (!childrenInfantsAge.match(/(^ *\d+ *(, *\d+ *)*$)/)) {
		alert('Feil i barnets alder');
		return false;
	}

	var parts = childrenInfantsAge.split(",");
	if (numChildrenInfants != parts.length) {
		alert('Feil i barnets alder');
		return false;
	}

	for (var i=0; i<parts.length; i++) {
		var part = parts[i].replace(" ", "");
        if (part > childMaxAge) {
			alert('Feil i barnets alder');
			return false
		}
	}

	return true;
}



