﻿var myCalendar = new k4tCalendar();
		
var myMonths = new Array();
myMonths[1]  = "Jan";
myMonths[2]  = "Fev";
myMonths[3]  = "Mar";
myMonths[4]  = "Abr";
myMonths[5]  = "Mai";
myMonths[6]  = "Jun";
myMonths[7]  = "Jul";
myMonths[8]  = "Ago";
myMonths[9]  = "Set";
myMonths[10] = "Out";
myMonths[11] = "Nov";
myMonths[12] = "Dez";

var myWeek = new Array();
myWeek[0] = "Dom";
myWeek[1] = "Seg";
myWeek[2] = "Ter";
myWeek[3] = "Qua";
myWeek[4] = "Qui";
myWeek[5] = "Sex";
myWeek[6] = "Sáb";

function InitializeMonthsWeeksArrays()
{
    myMonths[1]  = document.getElementById("month1").value;
    myMonths[2]  = document.getElementById("month2").value;
    myMonths[3]  = document.getElementById("month3").value;
    myMonths[4]  = document.getElementById("month4").value;
    myMonths[5]  = document.getElementById("month5").value;
    myMonths[6]  = document.getElementById("month6").value;
    myMonths[7]  = document.getElementById("month7").value;
    myMonths[8]  = document.getElementById("month8").value;
    myMonths[9]  = document.getElementById("month9").value;
    myMonths[10] = document.getElementById("month10").value;
    myMonths[11] = document.getElementById("month11").value;
    myMonths[12] = document.getElementById("month12").value;

    myWeek[0] = document.getElementById("Day1").value;
    myWeek[1] = document.getElementById("Day2").value;
    myWeek[2] = document.getElementById("Day3").value;
    myWeek[3] = document.getElementById("Day4").value;
    myWeek[4] = document.getElementById("Day5").value;
    myWeek[5] = document.getElementById("Day6").value;
    myWeek[6] = document.getElementById("Day7").value;
}

function CalendarConfig() {
	myCalendar.Id = 'myCalendar';
	myCalendar.containerId = 'CalSpan';
	myCalendar.onSelectDate = EventSelectDate;
	myCalendar.UseTooltipHeader = true;
	myCalendar.UseTooltipDays = true;
	myCalendar.UseTooltipFooter = true;
	myCalendar.minDate = new Date();
	myCalendar.maxDate = null;
	myCalendar.width = "195px";
	myCalendar.height = "150px";
    myCalendar.startingWeekDay = 1; // 0 para Domingo, 1 para Segunda, 2 para terça...
    myCalendar.specialDays = "5,6";  // Dias Correspondentes ao Fim de Semana, após aplicar a deslocação de startingWeekDay ( em cima ). 
    // Se for aplicado uma deslocação de 1 dia ( Segunda-Feira passa a ser o 1º dia da semana ) à variável de configuração startingWeekDay, domigo passa para a posição 6 e sábado para a posição 5 ( Atenção que a posição do 1º dia da semana no calendário corresponde a 0 ).

    InitializeMonthsWeeksArrays();
       
	myCalendar.monthDesc = myMonths;
	myCalendar.weekDesc = myWeek;
	
	myCalendar.CloseText = document.getElementById("cerrarCalendary").value;
	
	myCalendar.ToolTipPreviousYearText = document.getElementById("anoAntC").value;
	myCalendar.ToolTipPreviousMonthText = document.getElementById("mesAntC").value;
	myCalendar.ToolTipNextYearText = document.getElementById("anoProxC").value;
	myCalendar.ToolTipNextMonthText = document.getElementById("mesProxC").value;
	myCalendar.ToolTipCloseText = document.getElementById("cerrarC").value;
	
	myCalendar.Draw();
	myCalendar.Hide();
}

function K4TCalendarOnLoad() 
{
	CalendarConfig();
	chkCalendarVisibility(myCalendar);
}

function ShowCalendar(obj) 
{
    ShowCalendarInPosition(obj, 10, -5);
}

function ShowCalendarInPosition(obj, distX, distY) 
{
    
	myCalendar.Show(obj, distX, distY);
	obj.select();
	
}

function UpdateCalendar(obj, distX, distY) 
{
	myCalendar.Show(obj, distX, distY);
}


// ########################################
// ############ Added/Changed #############
// ########################################


// default parameters --------------
// Type Index: {0 - Hotel} {1 - Air} {2 - AirHotel}
var typeDays = new Array();
typeDays[0] = 0; // default air days
typeDays[1] = 1; // default hotel days
typeDays[2] = 1; // default airhotel days
// ---------------------------------

function DateToString(myDate)
{
    var myDay = myDate.getDate();
    var myMonth = myDate.getMonth()+1;
    var myYear = myDate.getFullYear();

    myDay = addBeginZero(myDay);
    myMonth = addBeginZero(myMonth);
    
    return myDay + myCalendar.dateSpliter + myMonth + myCalendar.dateSpliter + myYear;
}

function EventSelectDate() {

	var myDate = this.SelectedDate();

	this.caller.value = DateToString(myDate);
	
	this.caller.onchange();

	this.Hide();
}

function HideCalendar() {
	myCalendar.Hide();
}

function SetMinDate(dateStr,typeIdx)
{
    if(dateStr == 'now')
    {
        myCalendar.minDate = new Date();
        myCalendar.maxDate = null;
    }
    else
    {
        var arrDate = dateStr.split('/');
        var date = new Date(arrDate[2], arrDate[1]-1, arrDate[0]);
       
        date.setDate( date.getDate() + typeDays[typeIdx]); // add default days
        
        myCalendar.minDate = date;
        
        myCalendar.maxDate = null;
        
    }
}

// 
function Update2ndDate(objVal1, objVal2, idxObj, typeIdx)
{
    var tmpStr = objVal1.value.split('/');
    var date1 = new Date(new Number(tmpStr[2]),new Number(tmpStr[1]-1),new Number(tmpStr[0]));
   
    tmpStr = objVal2.value.split('/');
    var date2 = new Date(new Number(tmpStr[2]),new Number(tmpStr[1]-1),new Number(tmpStr[0]));
    
    if (idxObj == 1)
    {    
        if (date1 >= date2)
        {
           
            var myDate = date1;
            myDate.setDate( myDate.getDate() + typeDays[typeIdx] );
            
            objVal2.value = DateToString(myDate);
        }
    }       
    
    if (idxObj == 2)
    {
        if (date1 >= date2)
        {
           
            var myDate1 = date2;
            var myDate2 = date2;
            myDate1.setDate( myDate1.getDate() );
            myDate2.setDate( myDate2.getDate() + typeDays[typeIdx] );
            
            objVal1.value = DateToString(myDate1);
            objVal2.value = DateToString(myDate2);
        }    
    }         
}

//  txtAirEngineDepartDate
function AEDTOnChange(element){
      var result=true
       if (!isValidDate(element.value, "DMY"))
       {
         //onLoadDepartureDate
         element.value=element.form.serverDate.value;
        result=false;
       }
       
  
      if (dateDif(element,element.form.serverDate) < 1){
          //onLoadDepartureDate 
          element.value=element.form.serverDate.value;
         result=false;
       }
       Update2ndDate(element, document.getElementById('txtAirEngineArrivalDate'), 1, 0);
       return result;
       }

//  txtAirEngineArrivalDate
function AEATOnChange(element){
      var result=true
       if (!isValidDate(element.value, "DMY"))
       {
          //onLoadReturnDate
         element.value=element.form.serverReturnDate.value;
         result=false;
       }
    
      
       if (dateDif(element,element.form.txtAirEngineDepartureDate) < 1){
         //onLoadReturnDate
         element.value=element.form.txtAirEngineDepartureDate.value;
         //element.value=addDay(element.value);
         result=false;
       }
       Update2ndDate(document.getElementById('txtAirEngineDepartureDate'), element, 2, 0);
       return result;
       }



 //Calculate difference btw the two dates, and convert to days
function dateDif(element,minRangeElement) {
    var tmpStr = minRangeElement.value.split('/');
    var date1 = new Date(new Number(tmpStr[2]),new Number(tmpStr[1]-1),new Number(tmpStr[0]));
   
    tmpStr = element.value.split('/');
    var date2 = new Date(new Number(tmpStr[2]),new Number(tmpStr[1]-1),new Number(tmpStr[0]));
    var one_day=1000*60*60*24
    //Calculate difference btw the two dates, and convert to days
    return Math.ceil((date2.getTime()-date1.getTime())/(one_day))
}

function addDayDepartureDate(value)
{

if (!ValidateAirEngine()) return;
element=document.forms['frmAirEngine'].txtAirEngineDepartureDate;
if (value==null) element.value=addDay(element.value);
if (value!=null) element.value=addDay(value);
//if (AEDTOnChange(element))  SubmitAirEngine();
element.onchange();
myCalendar.Hide();
SubmitAirEngine();
}

function addDayReturnDate(value)
{

if (!ValidateAirEngine()) return;
element=document.forms['frmAirEngine'].txtAirEngineArrivalDate;
if (value==null) element.value=addDay(element.value);
if (value!=null) element.value=addDay(value);
//element.value=addDay(element.value);
element.onchange();
myCalendar.Hide();
SubmitAirEngine();
}


function removeDayDepartureDate(value)
{

if (!ValidateAirEngine()) return;
element=document.forms['frmAirEngine'].txtAirEngineDepartureDate;
if (value==null) element.value=removeDay(element.value);
if (value!=null) element.value=removeDay(value);
//element.value=removeDay(element.value);
element.onchange();
myCalendar.Hide();
SubmitAirEngine();
}

function removeDayReturnDate(value)
{

if (!ValidateAirEngine()) return;
element=document.forms['frmAirEngine'].txtAirEngineArrivalDate;
if (value==null) element.value=removeDay(element.value);
if (value!=null) element.value=removeDay(value);
//element.value=removeDay(element.value);
element.onchange();
myCalendar.Hide();
SubmitAirEngine();
}

function addDay(value) {
    
    var tmpStr = value.split('/');
    var day=new Number(tmpStr[0])
    var month=((new Number(tmpStr[1]))-1)
    var year=new Number(tmpStr[2])
    var myDate = new Date(year,month,day);
    myDate.setTime(myDate.getTime() + 86400000);
    year=myDate.getFullYear();
    month=myDate.getMonth()+1;
    day=myDate.getDate();
    if (month<10) month="0"+month
    if (day<10) day="0"+day
    return day+"/"+month+"/"+year;
}

function removeDay(value) {
    var tmpStr = value.split('/');
    var day=new Number(tmpStr[0])
    var month=((new Number(tmpStr[1]))-1)
    var year=new Number(tmpStr[2])
    var myDate = new Date(year,month,day);
    //alert (year);
    //alert (month);
    //alert (day);
     //alert(myDate);
    myDate.setTime(myDate.getTime() - 86400000);
    //alert(myDate);
    year=myDate.getFullYear();
    month=myDate.getMonth()+1;
    day=myDate.getDate();
    //alert (year)
    //alert (month)
    //alert (day)
    if (month<10) month="0"+month
    if (day<10) day="0"+day
    return day+"/"+month+"/"+year;
}


// Hotel functions

function SetNumNightsDate(objSelect, objVal1, objVal2)
{
    if(objSelect.selectedIndex != 0) // force days != 0
    {
        var tmpStr = objVal1.value.split('/');
        var date1 = new Date(new Number(tmpStr[2]),new Number(tmpStr[1]-1),new Number(tmpStr[0]));
        date1.setDate(date1.getDate()+objSelect.selectedIndex);
        
        objVal2.value = DateToString(date1);
    }
    else
    {
        objSelect.selectedIndex = 1;
        SetNumNightsDate(objSelect,objVal1, objVal2);
    }
}

function SetNumNights(objSelect, objVal1, objVal2)
{
    //Set 1 day in milliseconds
    var one_day=1000*60*60*24

    var tmpStr = objVal1.value.split('/');
    var date1 = new Date(new Number(tmpStr[2]),new Number(tmpStr[1]-1),new Number(tmpStr[0]));
    tmpStr = objVal2.value.split('/');
    var date2 = new Date(new Number(tmpStr[2]),new Number(tmpStr[1]-1),new Number(tmpStr[0]));
    
    // get num days
    objSelect.selectedIndex = Math.ceil((date2.getTime()-date1.getTime())/(one_day));
}

// update date values to use in checkout
function ExtractDateValues(dayId, monthId, yearId, value)
{
    var tmpStr = value.split('/');
    document.getElementById(dayId).value = new Number(tmpStr[0]);
    document.getElementById(monthId).value = new Number(tmpStr[1]);
    document.getElementById(yearId).value = new Number(tmpStr[2]);
}


function isValidDate(dateStr, format) {
   if (format == null) { format = "MDY"; }
   format = format.toUpperCase();
   if (format.length != 3) { format = "MDY"; }
   if ( (format.indexOf("M") == -1) || (format.indexOf("D") == -1) || (format.indexOf("Y") == -1) ) { format = "MDY"; }
   if (format.substring(0, 1) == "Y") { // If the year is first
      var reg1 = /^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
      var reg2 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
   } else if (format.substring(1, 2) == "Y") { // If the year is second
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/
   } else { // The year must be third
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
   }
   // If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
   if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) { return false; }
   var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
   // Check to see if the 3 parts end up making a valid date
   if (format.substring(0, 1) == "M") { var mm = parts[0]; } else 
      if (format.substring(1, 2) == "M") { var mm = parts[1]; } else { var mm = parts[2]; }
   if (format.substring(0, 1) == "D") { var dd = parts[0]; } else 
      if (format.substring(1, 2) == "D") { var dd = parts[1]; } else { var dd = parts[2]; }
   if (format.substring(0, 1) == "Y") { var yy = parts[0]; } else 
      if (format.substring(1, 2) == "Y") { var yy = parts[1]; } else { var yy = parts[2]; }
   if (parseFloat(yy) <= 50) { yy = (parseFloat(yy) + 2000).toString(); }
   if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }
   var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
   if (parseFloat(dd) != dt.getDate()) { return false; }
   if (parseFloat(mm)-1 != dt.getMonth()) { return false; }
   return true;
}



/*
function effects(){
this.opacity= function (id, opacStart, opacEnd, millisec) {
	//speed for each frame
	var speed = Math.round(millisec / 100);
	var timer = 0;

	//determine the direction for the blending, if start and end are the same nothing happens
	if(opacStart > opacEnd) {
		for(i = opacStart; i >= opacEnd; i--) {
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	} else if(opacStart < opacEnd) {
		for(i = opacStart; i <= opacEnd; i++)
			{
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	}
}

//change the opacity for different browsers
this.changeOpac=function(opacity, id) {
	var object = document.getElementById(id).style; 
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}

this.shiftOpacity=function(id, millisec) {
	//if an element is invisible, make it visible, else make it ivisible
	if(document.getElementById(id).style.opacity == 0) {
		opacity(id, 0, 100, millisec);
	} else {
		opacity(id, 100, 0, millisec);
	}
}

this.blendimage=function(divid, imageid, imagefile, millisec) {
	var speed = Math.round(millisec / 100);
	var timer = 0;
	
	//set the current image as background
	document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")";
	
	//make image transparent
	changeOpac(0, imageid);
	
	//make new image
	document.getElementById(imageid).src = imagefile;

	//fade in image
	for(i = 0; i <= 100; i++) {
		setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed));
		timer++;
	}
}

this.currentOpac=function(id, opacEnd, millisec) {
	//standard opacity is 100
	var currentOpac = 100;
	
	//if the element has an opacity set, get it
	if(document.getElementById(id).style.opacity < 100) {
		currentOpac = document.getElementById(id).style.opacity * 100;
	}

	//call for the function that changes the opacity
	opacity(id, currentOpac, opacEnd, millisec)
}
}*/