// ----------------------------------------------------------------------------------------------------
/*
   Program: a1villa_general.js

   Author:  James Whitfield
   Date:    3 March 2009

   Description:
   General functions and stuff

   Amendments:

   06/07/09  JJW  Included 'FormatStayPeriod'.
   14/05/10  JJW  Included 'AllMandatoryFieldsEntered' for template administration.

*/
// ----------------------------------------------------------------------------------------------------


var months= "January|February|March|April|May|June|July|August|September|October|November|December".split("|");
var daysofweek= "Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday".split("|");

// ====================================================================================================

function WriteTodaysDate(showyear) {
  var strShortMonths = "Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Oct/Nov/Dec".split("/");
  var dtToday = new Date();
  if ( showyear == "Y" ) {
     var intYear = dtToday.getFullYear()
     cellTodayYear = document.getElementById('idTodayYear');
     cellTodayYear.innerHTML = intYear.toString();
   } else {
     var intDay = dtToday.getDate();
     var intMonth = dtToday.getMonth();
     cellToday = document.getElementById('idTodayDay');
     cellToday.innerHTML = intDay.toString() + " " + strShortMonths[intMonth];
  };
}

// ====================================================================================================

function OpenPage(newurl, openmode) {
  if ( openmode == "new" ) { newpage= window.open(newurl) }
   else
   if ( openmode == "asurl" ) { 
      urlparms= location.search.substring(1,99).replace("compare=y",'');
      if (( urlparms.substring(0,1) == "&" ) && ( newurl.indexOf("?") == -1 )) { urlparms= "?" + urlparms.substring(1,99) }
       else if ( urlparms != "" ) { urlparms= "&" + urlparms };
      newpage= window.location.assign(newurl + urlparms) }
    else
    { newpage= window.location.assign(newurl) };
  return false;
};

// ====================================================================================================

function FormatStayPeriod(arrivaldate, noofnights)
{
  var formatteddate= daysofweek[arrivaldate.getDay()] + ", " + 
                     arrivaldate.getDate() + " " + months[arrivaldate.getMonth()] + " " + arrivaldate.getFullYear();
   
  if (noofnights > 0) { formatteddate= formatteddate + " for " + noofnights + " nights" };

  return formatteddate
}

// ====================================================================================================

function GetVillaName(villacode)
{
   switch (villacode) {
     case "E" : 
       villaname = "villa: Elegant";
       break;
     case "L" : 
       villaname = "villa: Lakeside";
       break;
     default:
       villaname = villacode;
   }
   return villaname;
}

// ====================================================================================================
// Slide and hide div
// ====================================================================================================

function SlideAndHide(divname, heightCurrent, heightTarget, modeRun) {

  var divid= document.getElementById(divname);
  var rerun= "N";
  var heightIncrement= 15;
  var timedelayms= 0;

  if ( heightCurrent == 0 ) {
     if ( divid.style.display == "none" ) { modeRun= "S"; window.status= "Opening..."; }
      else { modeRun= "X" };
   };

  if (( modeRun == "S" ) && ( heightCurrent <= heightTarget )) {
     divid.style.visibility= 'visible';
     divid.style.display= 'block';
     heightCurrent= heightCurrent + heightIncrement;
     rerun= "Y";
   } else if (( modeRun == "H" ) || ( modeRun == 'X' )) {

        if ( modeRun == "X" ) {
           modeRun= "H";
           window.status= "Hiding...";
           heightCurrent= divid.style.height.replace(/px/g,'');
        };

        if ( heightCurrent <= heightIncrement )  {
           divid.style.height= 0;
           divid.style.display= 'none';
         } else {
           heightCurrent= heightCurrent - heightIncrement;
           rerun= "Y";
        };

     };

  if ( rerun == "Y" ) {
     divid.style.height= heightCurrent + "px";
     setTimeout('SlideAndHide("' + divname + '",' + heightCurrent + ',' + heightTarget + ',"' + modeRun + '")', timedelayms);
  };

}


// ====================================================================================================
// Slide and hide div
// ====================================================================================================



function fade(eid){
// -2 == initial state for fading in
//  1 == fading in
 

  var element = document.getElementById(eid);
  if (element == null) return;

  if ((element.FadeState == undefined) || (element.FadeState == null)){ element.FadeState = -2 }

  if (element.FadeState == 1 || element.FadeState == -1){
     element.FadeState = (element.FadeState == 1 ? -1 : 1);
   } else {
     element.FadeState = (element.FadeState == 2 ? -1 : 1);
  };
 element.style.width = '100%';
 setTimeout("animateFade(5,'" + eid + "')", 10);
}
 

function animateFade(lastTick, eid){
 
  var browserName= navigator.appName; 
  var element = document.getElementById(eid);

  if (lastTick <= 1){
     element.style.opacity = (element.FadeState == 1 ? '1' : '0');

     if (browserName == "Netscape") {
        element.style.filter = 'alpha(opacity = '+ (element.FadeState == 1 ? '100' : '0') + ')';
      } else {
        element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + (element.FadeState == 1 ? '100' : '0') + ')';
     };

     element.FadeState = (element.FadeState == 1 ? 2 : -2);
     if (element.FadeState == -2) { 
         element.style.display = 'none';
         element.className= '';
      }
     return;

    } else {
     if (element.FadeState == 1) {
        element.className= 'bkg_border_gold';
        element.style.display = '';
        element.style.width = '';
      }
   }

 
  lastTick -= 1;
  var newOpVal = lastTick / 5;
  if (element.FadeState == 1) { newOpVal = 1 - newOpVal };
 
  element.style.opacity = newOpVal;
  if (browserName == "Netscape") {
     element.style.filter  = 'alpha(opacity = ' + parseInt(newOpVal*100) + ')';
   } else {
     element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + parseInt(newOpVal*100) + ')';
  };

  setTimeout("animateFade(" + lastTick + ",'" + eid + "')", 10);

}

// ====================================================================================================

function AllMandatoryFieldsEntered(thisform) {

  var mandmsg = "";

  for ( var i=0; i < thisform.elements.length; i++) {
        var elementid= thisform.elements[i];
        if ((elementid.getAttribute("mandatory")) && (elementid.value == "")) { 
           mandmsg= mandmsg + "* " + elementid.getAttribute("mandatory") + chr(13) };
  };

  if ( mandmsg != "" ) {
     mandmsg= "The following fields are mandatory and must have details entered:" + chr(13) + chr(13) + mandmsg +
              chr(13) + "No changes have been saved.";
     window.alert(mandmsg);
     return (false);
   } else {
     return (true);
  };

};