﻿var hasMessage = false;

function getContainer(sectionType) {
   var rooms = (sectionType != 'Flight' ? parseInt($(clientPrefix + 'ddlRooms' + sectionType).value) : 0); ;
   var container = $('containerMinorsAges' + sectionType);
   container.sectionType = sectionType;
   container.kids = new Array();
   container.hasKids = function() {
      for (var i = 0; i < this.kids.length; i++) {
         if (i < rooms && this.kids[i] > 0) return true;
      }
      return false;
   };
   return container;
}

function updateKids(ddlKids) {
   var maxKidsAux = parseInt(window.maxKids ? maxKids : window['maxKids' + ddlKids.container.sectionType]);
   var kids = parseInt(ddlKids.value);
   var hasKids = false;

   if (ddlKids.room) {
      var prefix = clientPrefix + 'Room' + ddlKids.room.toString() + '.';
      var rooms = parseInt($(clientPrefix + 'ddlRooms' + ddlKids.container.sectionType).value);

      var trAgeKids = $(prefix + 'trAgeKids' + ddlKids.container.sectionType);
      if (trAgeKids) trAgeKids.style.display = (ddlKids.room <= rooms && kids > 0 ? '' : 'none');

      var tdAgeKids = $(prefix + 'tdAgeKids' + ddlKids.container.sectionType);
      if (tdAgeKids) tdAgeKids.style.display = (rooms > 1 ? '' : 'none');

      var tdAgeKidsAux = $(prefix + 'tdAgeKids');
      if (tdAgeKidsAux) tdAgeKidsAux.style.display = (ddlKids.room <= rooms && kids > 0 ? '' : 'none');

      for (var kid = 1; kid <= maxKidsAux; kid++) {
         $(prefix + 'tdAgeKid' + kid.toString() + ddlKids.container.sectionType).style.display = (ddlKids.room <= rooms && kid <= kids ? '' : 'none');
      }

      ddlKids.container.kids[ddlKids.room - 1] = kids;
   }
   else {
      for (var kid = 1; kid <= maxKidsAux; kid++) {
         $(clientPrefix + 'tdAgeKid' + kid.toString() + ddlKids.container.sectionType).style.display = (kid <= kids ? '' : 'none');
         hasKids = (kid <= kids ? true : hasKids);
      }
   }
   ddlKids.container.style.display = (ddlKids.container.hasKids() || hasKids ? '' : 'none');
}

function updateRooms(sectionType) {
   var container = getContainer(sectionType);
   var maxRoomsAux = parseInt(window.maxRooms ? maxRooms : window['maxRooms' + sectionType]);
   var rooms = parseInt($(clientPrefix + 'ddlRooms' + sectionType).value);
   var tdRoom = $(clientPrefix + 'Room1.tdRoom' + sectionType);
   if (tdRoom) tdRoom.style.visibility = (rooms > 1 ? 'visible' : 'hidden');
   for (var room = 1; room <= maxRoomsAux; room++) {
      var roomPrefix = clientPrefix + 'Room' + room.toString() + '.';
      $(roomPrefix + 'trRoom' + sectionType).style.display = (room <= rooms ? '' : 'none');
      ddlKids = $(roomPrefix + 'ddlKids' + sectionType);
      ddlKids.container = container;
      ddlKids.room = room;
      ddlKids.onchange = function() {
         updateKids(this);
      };
      ddlKids.onchange();
   }
}

function initPax() {
   var ddlRooms = $(clientPrefix + 'ddlRooms');
   if (ddlRooms) {
      ddlRooms.onchange = function() {
         updateRooms('');
      };
      ddlRooms.onchange();
   }

   var ddlRoomsHotel = $(clientPrefix + 'ddlRoomsHotel');
   if (ddlRoomsHotel) {
      ddlRoomsHotel.onchange = function() {
         updateRooms('Hotel');
      };
      ddlRoomsHotel.onchange();
   }

   var ddlRoomsPackage = $(clientPrefix + 'ddlRoomsPackage');
   if (ddlRoomsPackage) {
      ddlRoomsPackage.onchange = function() {
         updateRooms('Package');
      }
      ddlRoomsPackage.onchange();
   }

   var ddlKidsFlight = $(clientPrefix + 'ddlKidsFlight');
   if (ddlKidsFlight) {
      ddlKidsFlight.container = getContainer('Flight');
      ddlKidsFlight.onchange = function() {
         updateKids(ddlKidsFlight);
      }
      ddlKidsFlight.onchange();
   }
}

YAHOO.util.Event.onDOMReady(initPax);

function isValidPax(sectionType) {
   var pax = 0;
   var ddlRooms = $(clientPrefix + 'ddlRooms' + sectionType);
   if (ddlRooms) {
      var rooms = parseInt(ddlRooms.value);
      for (var room = 1; room <= rooms; room++) {
         var prefix = clientPrefix + 'Room' + room.toString() + '.';
         pax += parseInt($(prefix + 'ddlAdults' + sectionType).value);
         pax += parseInt($(prefix + 'ddlKids' + sectionType).value);
      }
   }
   else {
      pax += parseInt($(clientPrefix + 'ddlAdults' + sectionType).value);
      pax += parseInt($(clientPrefix + 'ddlKids' + sectionType).value);
   }
   return (pax <= maxPax);
}

function validateKids(sectionType, room) {
   var hasEmpties = false;
   var prefix = clientPrefix + (room ? 'Room' + room.toString() + '.' : '');
   var kids = parseInt($(prefix + 'ddlKids' + sectionType).value);
   for (var kid = 1; kid <= kids; kid++) {
      var ddlAgeKid = $(prefix + 'ddlAgeKid' + kid.toString() + sectionType);
      var rqfAgeKid = $(prefix + 'rqfAgeKid' + kid.toString() + sectionType);
      if (parseInt(ddlAgeKid.value) < 0) {
         if (focus.length == 0) focus = ddlAgeKid.id;
         rqfAgeKid.style.display = '';
         hasEmpties = true;
      }
      else {
         rqfAgeKid.style.display = 'none';
      }
   }
   if (hasEmpties && !hasMessage) {
      message += ageKidsErrorMessage;
      messageHTML += ageKidsErrorMessage + " <br /> "
      hasMessage = true;
   }
}

function validateRooms(sectionType) {
   hasMessage = false;
   var rooms = parseInt($(clientPrefix + 'ddlRooms' + sectionType).value);
   for (var room = 1; room <= rooms; room++) {
      validateKids(sectionType, room);
   }
}

function setAdults(sectionType, room) {
   var rPrefix = (room ? 'Room' + room.toString() + '.' : '');
   var cPrefix = clientPrefix + rPrefix;
   var adults = parseInt($(cPrefix + 'ddlAdults' + sectionType).value);
   if (room) $(rPrefix + 'Adults').value = adults.toString();
   return adults;
}

function setKids(sectionType, room) {
   var rPrefix = (room ? 'Room' + room.toString() + '.' : '');
   var cPrefix = clientPrefix + rPrefix;
   var kids = parseInt($(cPrefix + 'ddlKids' + sectionType).value);
   if (room) $(rPrefix + 'Kids').value = kids.toString();
   return kids;
}

function setAgeKids(sectionType, room) {
   var rPrefix = (room ? 'Room' + room.toString() + '.' : '');
   var cPrefix = clientPrefix + rPrefix;
   var kids = parseInt($(cPrefix + 'ddlKids' + sectionType).value);
   var ageKids = new Array();
   for (var kid = 1; kid <= kids; kid++) ageKids.push($(cPrefix + 'ddlAgeKid' + kid.toString() + sectionType).value);
   var ageKidsAux = ageKids.join(',');
   if (room) $(rPrefix + 'AgeKids').value = ageKidsAux;
   return ageKidsAux;
}

function setPax(sectionType) {
   var adults = 0; var kids = 0; var ageKids = new Array();
   var ddlRooms = $(clientPrefix + 'ddlRooms' + sectionType);
   if (ddlRooms) {
      var rooms = parseInt(ddlRooms.value);
      $('Rooms').value = rooms.toString();
      for (var room = 1; room <= rooms; room++) {
         var prefix = clientPrefix + 'Room' + room.toString() + '.';
         adults += setAdults(sectionType, room);
         kids += setKids(sectionType, room);
         var ageKidsAux = setAgeKids(sectionType, room);
         if (ageKidsAux.length > 0) ageKids.push(ageKidsAux);
      }
   }
   else {
      adults = setAdults(sectionType);
      kids = setKids(sectionType);
      ageKids.push(setAgeKids(sectionType));
   }
   $('Adults').value = adults.toString();
   $('Kids').value = kids.toString();
   $('AgeKids').value = ageKids.join(',');
}