<!--   // Copyright© Acecom® Srl Italy - All rights reserved
       // Development by Acecom® Srl Italy
       // Booking Module Manager Solutions 2008/LUG/02 W3C XHTML
       // Note: Include Useragent.js


//--------- Define global variables
var d = document
var vStartReset   = false;
var aMemDate      = new Array();
var aVerData      = new Array();
var iVerDataIdx   = 0;
var aMemoIniData  = new Array();
var iMemoIniIdx   = 0;


switch(jsLanguage) {
  case "DE":  var aDay     = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
              var aMonth   = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
              var aPopWin  = new Array("Insert", "Korrigieren", " Um die Buchungsanfrage zu senden, korrigieren, \n Sie bitte die Fehler und wiederholen Sie das. \n Einsendeverfahren.");
              var aPrivacy = new Array("Zustimmung des privacy wird nicht angenommen");
            break;

  case "EN":  var aDay     = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
              var aMonth   = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
              var aPopWin  = new Array("Insert", "Verify", " Your booking request cannot be forwarded, \n as some information is missing or incorrect. \n Please correct the form and then repeat the \n forward procedure. Thank you.");
              var aPrivacy = new Array("Consent of the privacy is not accepted");
            break;

  case "FR":  var aDay     = new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
              var aMonth   = new Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aoùt", "Septembre", "Octobre", "Novembre", "Décembre");
              var aPopWin  = new Array("Insert", "Verify", " Pour envoyer la demande de réservation, nous vous prions, \n de bien vouloir corriger les erreurs et de répéter \n l'opération d'envoi. Merci.");
              var aPrivacy = new Array("le consentement de la privacy n\'est pas accepté");
            break;

  default:    var aDay     = new Array("Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato");
              var aMonth   = new Array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre");
              var aPopWin  = new Array("Inserire", "Verificare", " Per inviare la richiesta di prenotazione, si prega di, \n corregere gli errori e di ripetere l'operazione d'invio. \n Grazie.");
              var aPrivacy = new Array("Consenso privacy non accettato");
            break; }


//--------- Functions Data Manager
function ResetData() {
   if (vStartReset == true) RestoreIniData();

   SetStartDate(0); WriteDate(0);
   SetStartDate(1); WriteDate(1);

   SelectDate();
   SelectPerson();
   SelectRoom();

   if (vStartReset == false) MemorizeIniData();
 }

function RestoreIniData() {
   for (iDat = 0; iDat < aMemoIniData.length; iDat++) {
     with(d.FormPN.elements[aMemoIniData[iDat][0]]) {
       switch(aMemoIniData[iDat][1]) {
         case "text":       value = aMemoIniData[iDat][2];          break;
         case "textarea":   value = aMemoIniData[iDat][2];          break;
         case "select-one": selectedIndex = aMemoIniData[iDat][2];  break;
         case "radio":      checked = aMemoIniData[iDat][2]; ;      break; 
  } } }
}

function MemorizeIniData() {
   for (iDat = 0; iDat < d.FormPN.elements.length; iDat++) {
     with(d.FormPN.elements[iDat]) {
       switch(type) {
         case "text":       aMemoIniData[iMemoIniIdx] = new Array(name, type, value);         iMemoIniIdx++;  break;
         case "textarea":   aMemoIniData[iMemoIniIdx] = new Array(name, type, value);         iMemoIniIdx++;  break;
         case "select-one": aMemoIniData[iMemoIniIdx] = new Array(name, type, selectedIndex); iMemoIniIdx++;  break;
         case "radio":      aMemoIniData[iMemoIniIdx] = new Array(name, type, checked);       iMemoIniIdx++;  break;
  } } }
   vStartReset = true;
}

//---------- Functions Date-Period Manager
function SelectDate() {
   DefineDate(0, 0); 
   DefineDate(1, 1); 

   if (DifferenceDate() < 1) {
     DefineDate(1, 0);
     aMemDate[1].setDate(aMemDate[1].getDate() + 1); }

   WriteDate(0);
   WriteDate(1);
     d.FormPN.StayLong.value = DifferenceDate();
}

function SetStartDate(iDate) {
   with(d.FormPN) {
     if (GM[iDate].disabled) aMemDate[iDate] = new Date(AA[iDate].id, (MM[iDate].id - 1), GM[iDate].id);
     else                    aMemDate[iDate] = new Date();
  }
}

function DefineDate(iDate, iRead) {
   with(d.FormPN) {
     aMemDate[iDate] = new Date(AA[iRead].value, MM[iRead].value, GM[iRead].value);
   }
}

function DifferenceDate() {
   return Math.floor((aMemDate[1].getTime() - aMemDate[0].getTime()) / 86400000);
}

function WriteDate(iDate) {
   with(d.FormPN) {
     GS[iDate].value = aDay[aMemDate[iDate].getDay()];
     GM[iDate].value = aMemDate[iDate].getDate();
     AA[iDate].value = aMemDate[iDate].getFullYear();
     MM[iDate].value = aMemDate[iDate].getMonth();
    
     switch(iDate) {    
       case 1:  StayValEnd.value = ConvertDate(aMemDate[1]);  break;
       default: StayValIni.value = ConvertDate(aMemDate[0]);  break; }
   }
}

function ConvertDate(vDate) {
     vConvDate = vDate.getFullYear() + "-" + Math.floor(vDate.getMonth()+ 1) + "-" + vDate.getDate();
   return (vConvDate);
}

//--------- Functions Arrival Time Manager
function SelectTime() {
   with(d.FormPN) {
     StayTimeIni.value = DefineTime(TimeIni.value);
   }
}

function DefineTime(iTime) {
   iOpt = 0; 
   for (iOne = 0; iOne < 24; iOne++) {
     for (iTwo = 0; iTwo < 2; iTwo++) {
       if (iTime == iOpt) return WriteTime(iOne, iTwo);
       iOpt++;
   } }
   return;
}

function WriteTime(iOne, iTwo) {
   if (iOne > 9) vTimeOut  = iOne;
     else        vTimeOut  = '0' + iOne;
   if (iTwo > 0) vTimeOut += ':' + iTwo * 30; 
     else        vTimeOut += ':' +'00';

   return (vTimeOut);
}

//--------- Functions Person Manager
function SelectPerson() {
   with(d.FormPN) {
     vPerTot  = Math.round(PersVal1.value) + Math.round(PersVal2.value);
     vPerTot += Math.round(PersVal3.value) + Math.round(PersVal4.value);  

     PersTot.value = vPerTot
   }
}

//---------- Functions Room Manager
function SelectRoom() {
   with(d.FormPN) {
     Rm1 = Math.round(RoomValS1.value) + Math.round(RoomValS3.value);
     Rm2 = Math.round(RoomValD1.value) + Math.round(RoomValD3.value);
     Rm3 = Math.round(RoomValT1.value) + Math.round(RoomValT3.value);
     Rm4 = Math.round(RoomValQ1.value) + Math.round(RoomValQ3.value);
     Rm5 = Math.round(RoomValS2.value) + Math.round(RoomValS4.value);
     Rm6 = Math.round(RoomValD2.value) + Math.round(RoomValD4.value);
     Rm7 = Math.round(RoomValT2.value) + Math.round(RoomValT4.value);
     Rm8 = Math.round(RoomValQ2.value) + Math.round(RoomValQ4.value);

     RmPart1 = Rm1 + Rm2 + Rm3 + Rm4;
     RmPart2 = Rm5 + Rm6 + Rm7 + Rm8;
     BdTotal = Rm1 + (Rm2*2) + (Rm3*3) + (Rm4*4) + Rm5 + (Rm6*2) + (Rm7*3) + (Rm8*4);

     RoomTotNum.value = RmPart1 + RmPart2;
     RoomTotNur.value = RmPart2;
     RoomTotBed.value = BdTotal;
     RoomTotPer.value = BdTotal + RmPart2;
   }
}

function WriteImgBed(iBed2, iBed1, iBed3) {
   for (iBed = 0; iBed < iBed2; iBed++) d.write('<img class="FormIcons" border="0" src="' +jsPathImage +'bed_02.png" width="19" height="18" alt="" />');
   for (iBed = 0; iBed < iBed1; iBed++) d.write('<img class="FormIcons" border="0" src="' +jsPathImage +'bed_01.png" width="12" height="18" alt="" />');
   for (iBed = 0; iBed < iBed3; iBed++) d.write('<img class="FormIcons" border="0" src="' +jsPathImage +'bed_03.png" width="10" height="18" alt="" />');
}

function OptionNumber(iMin, iMax) {
   for (iOpt = iMin; iOpt < (iMax + 1); iOpt++) {
     d.write('<option value="' + iOpt + '">' + iOpt + '</option>');
   }
}

function OptionMonth() {
   for (iOpt = 0; iOpt < 12; iOpt++) {
    d.write('<option value="' + iOpt + '">' + aMonth[iOpt] + '</option>');
   } 
}

function OptionTimer() {
   iOpt = 0; 
   for (iOne = 0; iOne < 24; iOne++) {
     for (iTwo = 0; iTwo < 2; iTwo++) {
       d.write('<option value="' + iOpt + '">' + WriteTime(iOne, iTwo) + '</option>');
       iOpt++;
   } }
}

//---------- Functions
function FieldInput(inNameId, inDataSize, inTypeVer, inDescLan) {
  if (typeof inNameId != "undefined" && typeof inTypeVer != "undefined" && typeof inDescLan != "undefined") { 
     d.write('<img border="0" src="' +jsPathImage +'form.png" width="20" height="14" alt="" />');

     aVerData[iVerDataIdx] = new Array(inNameId, inTypeVer, inDescLan);
   iVerDataIdx++;
  }

  if (typeof inNameId != "undefined") { 
     d.write('<input class="FormInp01" size="' + BrowserResize(inDataSize) + '" type="text" maxlength="50" name="' + inNameId + '">');
   }
}

function FieldTextVisual(inNameId, inDataSize, inData) {
  if (typeof inNameId != "undefined") { 
     d.write('<input class="FormInp03" size="' + BrowserResize(inDataSize) + '" type="text" maxlength="50" name="' + inNameId + '" value="' + inData + '" readonly>');
   }
}

function FieldTextArea(inNameId, inDataSize) {
   if (typeof inNameId != "undefined") { 
     d.write('<textarea class="FormInp03" rows="8" name="' + inNameId + '" cols="' + BrowserResize(inDataSize) + '"></textarea>');
   }
}

function FieldTextAreaVisual(inNameId, inDataSize, inData) {
   if (typeof inNameId != "undefined") { 
     d.write('<textarea class="FormInp03" rows="8" name="' + inNameId + '" cols="' + BrowserResize(inDataSize) + '" readonly>' + inData +'</textarea>');
   }
}

//----------- Functions Control-Data Manager
function VerWSpace(vInput) {
   return (VerSequence(vInput, " \t\n\r"));
}

function VerNumber(vInput) {
   return ((vInput >= "0") && (vInput <= "9"));
}

function VerSequence (vInput, vSeq) {
   for (iTes = 0; iTes < vSeq.length; iTes++) { 
     if (vSeq.charAt(iTes) == vInput) return (true); 
   }
   return  (false);
}

function IsEmpty(vDatVal) {
   return ((vDatVal == null) || (vDatVal == ""));
}

function IsNumber(vDatVal) {
   for (iChr = 0; iChr < vDatVal.length; iChr++) { 
     if (!VerNumber(vDatVal.charAt(iChr))) return (false);
   }
   if (vDatVal > 0) return (true); 
   else             return (false);
}

function IsMail(vDatVal) {
   iChr = 0;
   while ((iChr < vDatVal.length) && (vDatVal.charAt(iChr) != "@")) iChr++;
     if ((iChr >= vDatVal.length) || (vDatVal.charAt(iChr) != "@")) return (false); 
   
   iChr += 2;
   while ((iChr < vDatVal.length) && (vDatVal.charAt(iChr) != ".")) iChr++;
     if ((iChr >= vDatVal.length - 1) || (vDatVal.charAt(iChr) != ".")) return (false);   
   
   return (true);
}

function RemoveIniSpace(vDatVal) {
   iChr = 0;
   while ((iChr < vDatVal.length) && VerWSpace(vDatVal.charAt(iChr))) iChr++;
   
   return (vDatVal.substring(iChr, vDatVal.length));
}

function ConvertDefCase(vDatVal) {
   vDatOne = vDatTwo = "";

   if (vDatVal.length > 0) { 
     vDatOne = vDatVal.substring(0,1);
     vDatOne = vDatOne.toUpperCase(); }
   
   if (vDatVal.length > 1) { 
     vDatTwo = vDatVal.substring(1, vDatVal.length);
     vDatTwo = vDatTwo.toLowerCase(); }
   
   return (vDatOne + vDatTwo);
}

function VerifyForm(oForm) {
   vError =  "";
   vFlagOk = false;
   
   for (iDat = 0; iDat < aVerData.length; iDat ++) {
     oField = oForm.elements[aVerData[iDat][0]];

     if (oField.type == "text" || oField.type == "textarea") {
       oField.value = RemoveIniSpace(oField.value);

       if (Boolean(aVerData[iDat][1])) {
         if (IsEmpty(oField.value)) {
                                  vError += ("\n- " + aPopWin[0] + " " + aVerData[iDat][2]);
         } else {
             switch(aVerData[iDat][1]) {
               case "VerNumber":  vFlagOk = (!IsNumber(oField.value));  break;
               case "VerMail":    vFlagOk = (!IsMail(oField.value));    break;
               default:           vFlagOk = false;                      break;  } 
             if (vFlagOk == true) vError += ("\n- " + aPopWin[1] + " " + aVerData[iDat][2] + " \t [" + oField.value + "]");
         }
   } } }
                                 
   if (oForm.elements["DataOptPrivacy"][0].checked == false) {
                                  vError = (vError +"\n\n- " + aPrivacy[0] + "\n___________________________________________\n");
   }
                            
   if (vError != "") {
                                  vError = (aPopWin[2] + "\n___________________________________________\n" + vError);
     window.alert(vError);
     return (false);
   }
   return (true);
}

//-->
