// JavaScript Document 

var dagenInMaand = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var datum = new Date();
var currentDate = new Array(datum.getDate(),datum.getMonth()+1,datum.getFullYear());
var huidigeDatum = new Array();
huidigeDatum["Arrival"] = new Array();
huidigeDatum["Departure"] = new Array();
var startJaar = currentDate[2];

var prevElementIdArrival = '';
var prevElementIdDeparture = '';

function de(d) {
   return document.getElementById(d);
}

//function schrijfMaand(datum,t,d) {
//	if (!d) { 
//		d = currentDate[0];
//	} else {
//      d = parseInt(d); 
//   }
//	returnVar = "<table class=\"dagen\">";
//	datum = datum.split("-");
//	maand = datum[0];
//	if (maand.substr(0,1)=="0") { maand = maand.substr(1,2); }
//	maand = parseInt(maand);
//	jaar = parseInt(datum[1]);
//	dagen = dagenInMaand[maand-1];
//	if ((jaar%4)==0&&maand==2) { dagen++; } // SCHRIKKELJAAR

//	huidigeDatum[t][0] = maand;
//	huidigeDatum[t][1] = jaar;

//   var selectedDate = new Date(de(t+"Year").value, de(t+"Month").value-1, de(t+"Day").value);
//   var todayDate = new Date();
//   todayDate.setHours(0, 0, 0, 0);    // truncate
//   var calendarStartDate = new Date(jaar, maand - 1, 1);
//   var tmpDate = new Date(jaar, maand - 1, 1);
//   // TODO: adapt first day of week to proper culture
//   var firstDayOfWeek = 1;
//   var lastDayOfWeek= ((firstDayOfWeek + 6) % 7);
//   // Move date to 1st weekday
//   while (tmpDate.getDay() != firstDayOfWeek) {
//      tmpDate.setDate(tmpDate.getDate() - 1);
//   }
//	for (n=0;n<(6*7);n++) { // Maximum 6 week rows in a month)
//		if (tmpDate.getDay() == firstDayOfWeek) {
//			returnVar += "<tr>";
//		}
//		selected = (tmpDate == selectedDate);
//      if ((tmpDate >= todayDate) && (tmpDate.getMonth() == calendarStartDate.getMonth())) {
//         returnVar += "<td id=\"dateChosen"+t+"_"+(tmpDate.getDate())+"\" "+(selected?"class=\"selected\" ":"")+"onclick=\"choseDate('"+t+"',"+(tmpDate.getDate())+")\">"+(tmpDate.getDate())+"</td>";
//      } else {
//         returnVar += "<td class=\"disabled\">"+(tmpDate.getDate())+"</td>";
//		}		
//		if (tmpDate.getDay() == lastDayOfWeek) {
//			returnVar += "</tr>";
//         // moved beyond calendar month and row was completed
//         tmpDate.setDate(tmpDate.getDate() + 1);
//         if (tmpDate.getMonth() > calendarStartDate.getMonth()) {
//            break;
//         }
//      } else {
//         tmpDate.setDate(tmpDate.getDate() + 1);
//		}
//	}
//	returnVar += "</table>";

//	var monthNames = de("__Months").value.split("|");
//	
//	de(t+"Header").innerHTML = monthNames[maand-1]+" "+jaar;
//	de(t+"Dagen").innerHTML = returnVar;

//	de("dateChosen"+t+"_"+d).style.background = '#a2a510';
//	de("dateChosen"+t+"_"+d).style.color = '#FFF';

//	if (t=='Arrival') {
//		prevElementIdArrival = "dateChosen"+t+"_"+d;
//	}else{
//		prevElementIdDeparture = "dateChosen"+t+"_"+d;
//	}
//	
//}

//function nextMonth(t) {
//	huidigeDatum[t][0]++;
//	if (huidigeDatum[t][0]==13) { huidigeDatum[t][0] = 1; huidigeDatum[t][1]++; }
//	schrijfMaand(huidigeDatum[t][0]+"-"+huidigeDatum[t][1],t,0);
//}

//function previousMonth(t) {
//	huidigeDatum[t][0]--;
//	if (huidigeDatum[t][0]==0) { huidigeDatum[t][0] = 12; huidigeDatum[t][1]--; }
//	schrijfMaand(huidigeDatum[t][0]+"-"+huidigeDatum[t][1],t,0);
//}
//var kalShow = false;
//function showCalender() {
//	if (!kalShow) {
//		if (de("property")) { de("property").style.visibility = "hidden"; }
//		kalShow = true;
//		schrijfMaand(de("ArrivalMonth").selectedIndex+1+"-"+de("ArrivalYear").value,"Arrival",de("ArrivalDay").value);
//		schrijfMaand(de("DepartureMonth").selectedIndex+1+"-"+de("DepartureYear").value,"Departure",de("DepartureDay").value);
//		de("calender").style.display = "block";	
//	} else {
//		kalShow = false;
//		if (de("property")) { de("property").style.visibility = "visible"; }
//		de("calender").style.display = "none";			
//	}
//}

//function choseDate(t, a, deze) {

//	de(t+"Month").selectedIndex = huidigeDatum[t][0]-1;
//	de(t+"Day").selectedIndex = a-1;
//	de(t+"Year").selectedIndex = huidigeDatum[t][1]-startJaar;

//	if(t=='Arrival'){
//		// Geef de naam voor de ID op
//	   	elementIdName = 'Arrival';
//	
//		// bekijk of het element al eens is gebruikt en bewerkt.
//		if(prevElementIdArrival!=''){
//		    de(prevElementIdArrival).style.background = '';
//		    de(prevElementIdArrival).style.color = '';
//		}
//		prevElementIdArrival = "dateChosen"+elementIdName+"_"+a;
//	}else{
//		// Geef de naam voor de ID op
//	    	elementIdName = 'Departure';
//	
//		// bekijk of het element al eens is gebruikt en bewerkt.
//		if(prevElementIdDeparture!=''){
//		    de(prevElementIdDeparture).style.background = '';
//		    de(prevElementIdDeparture).style.color = '';
//		}
//		prevElementIdDeparture = "dateChosen"+elementIdName+"_"+a;	
//	}
//	
//	de("dateChosen"+elementIdName+"_"+a).style.background = '#a2a510';
//	de("dateChosen"+elementIdName+"_"+a).style.color = '#FFF';
//}

function hideDiv(d) {
	de(d).style.display = "none";	
}

function showDiv(d) {
	de(d).style.display = "block";	
}

function validDate() {
	
	var halt = false;
	
	var todayDate = new Date();	
	todayDate.setHours(0, 0, 0, 0); //truncate

   var arrivalYear = parseInt(de("ArrivalYear").selectedIndex) + startJaar;
   var arrivalMonth = parseInt(de("ArrivalMonth").selectedIndex);
   var arrivalDay = parseInt(de("ArrivalDay").selectedIndex + 1);
   var departureYear = parseInt(de("DepartureYear").selectedIndex) + startJaar;
   var departureMonth = parseInt(de("DepartureMonth").selectedIndex);
   var departureDay = parseInt(de("DepartureDay").selectedIndex + 1);
   
   var arrivalDate = new Date(arrivalYear, arrivalMonth, arrivalDay);
   var departureDate = new Date(departureYear, departureMonth, departureDay);

   // Check if date was wrapped around, indicating invalid ymd values
   if ((arrivalDate.getFullYear() != arrivalYear) || (arrivalDate.getMonth() != arrivalMonth) || (arrivalDate.getDate() != arrivalDay)) {
      halt = "Arrival date is not valid";
   }
   // Check if date was wrapped around, indicating invalid ymd values
   if (!halt) {
      if ((departureDate.getFullYear() != departureYear) || (departureDate.getMonth() != departureMonth) || (departureDate.getDate() != departureDay)) {
         halt = "Departure date is not valid";
      }
   }   
	if (!halt) {
      if (arrivalDate < todayDate) {	
         halt = "Arrival date can not be in the past";
      }
   }
	//JT adjust departure date to arrival date+1 if <= arrivaldate
	if (!halt) {
      if (departureDate <= arrivalDate) {
         departureDate.setFullYear(arrivalDate.getFullYear());
         departureDate.setMonth(arrivalDate.getMonth());
         departureDate.setDate(arrivalDate.getDate() + 1);
         // Update UI
         de("DepartureYear").selectedIndex = (departureDate.getFullYear() - startJaar);
         de("DepartureMonth").selectedIndex = departureDate.getMonth();
         de("DepartureDay").selectedIndex = (departureDate.getDate() - 1);
      }
   }
	if (halt) {
		alert("invalid date:\n\n"+halt);
      // Revert to default date values
		de("ArrivalYear").selectedIndex = (todayDate.getFullYear() - startJaar);
		de("ArrivalMonth").selectedIndex = todayDate.getMonth();
		de("ArrivalDay").selectedIndex = (todayDate.getDate() - 1);
      todayDate.setDate(todayDate.getDate() + 1);
		de("DepartureYear").selectedIndex = (todayDate.getFullYear() - startJaar);
		de("DepartureMonth").selectedIndex = todayDate.getMonth();
		de("DepartureDay").selectedIndex = (todayDate.getDate() - 1);
	}
}

function submitForm(f) {
	arr = requiredFields[f.name];
	var error = new Array();
	for (a=0;a<arr.length;a++) {
		if (!de(arr[a]).value) { 
			error.push(de(arr[a]).title);
		}
	}
	if (error.length) {
		alert("Missing fields:\n\n- "+error.join("\n- "));	
	} else {
		if (confirm("Are you sure you want to confirm your booking")) {
			f.submit();	
		}
	}
}

//function popupCalender()
//{
//  showCalender();
//  if (!kalShow)
//  {
//    validDate();
//  }
//}

function checkFields(f)
{
  arr = requiredFields["submitOrder"];
  var error = new Array();
  var firstItem=new Boolean();
  firstItem = true;
  for (a=0;a<arr.length;a++) {
  	  if (!de(arr[a]).value) { 
  	 	  error.push(de(arr[a]).title);  	 	  
  	 	  //set focus to the first incorrect field
  	 	  if (firstItem.valueOf() == true)
  	 	  { 
  	 	    de(arr[a]).focus();
  	 	  }
  	 	  firstItem=false;
  	}
  }
  if (error.length) {
  	alert("Missing fields:\n\n- "+error.join("\n- "));	
  }
}

//function PopupRates(var propertyCode, var rateType, var roomType, var arrivalDate, var departureDate, var adults, var children) 
//{//popupfunc.js
//    //var Param = reservation;
//    //var Param = new Array(propertyCode, rateType, roomType, arrivalDate, departureDate, adults, children);
//    var WinSettings = "center:yes;resizable:no;dialogHeight:300px"
//    //var MyArgs = window.showModalDialog("/popupRates.aspx", "", WinSettings);
//    var MyArgs = window.open("/popupRates.aspx");
//    
//}

function updateTable(sender, eventArgs) {

    var extraTable = document.getElementById("ExtrasTable");
    var rows = extraTable.rows;
    var TempExtraLinePrice = 0;
    var TempExtraTotalPrice = 0;

    for (i = 1; i < rows.length; i++) {
        var regelTotaalPrijs = 0;
        var TempNumberOfDays = 1;
        var n = "";
        if (i < 10) {
            n = "0" + i;
        } else {
            n = i;
        }

        var TempExtraNumber = document.getElementById("RepeaterExtraList_ctl" + n + "_ExtraNumber_Input");
        var TempStartDate = document.getElementById("RepeaterExtraList_ctl" + n + "_StartDate");
        var TempEndDate = document.getElementById("RepeaterExtraList_ctl" + n + "_EndDate");
        var TempExtraPrice = document.getElementById("RepeaterExtraList_ctl" + n + "_ExtraPrice");
        var TempExtraPriceLineTotal = document.getElementById("RepeaterExtraList_ctl" + n + "_ExtraPriceLineTotal");

        arrStartDate1 = TempStartDate.value.split("-");
        arrStartDate2 = new Array(3);
        arrStartDate2[0] = arrStartDate1[1];
        arrStartDate2[1] = arrStartDate1[2];
        arrStartDate2[2] = arrStartDate1[0];

        if (TempEndDate != null) {
            var arrEndDate1 = TempEndDate.value.split("-");
            var arrEndDate2 = new Array(3);
            arrEndDate2[0] = arrEndDate1[1];
            arrEndDate2[1] = arrEndDate1[2];
            arrEndDate2[2] = arrEndDate1[0];

            //alert(arrEndDate1.join("-"));
            //alert(arrStartDate1.join("-"));
            TempNumberOfDays = (Math.ceil(new Date(arrEndDate2.join("/"))) - (new Date(arrStartDate2.join("/")))) / 86400000;
        }
        var TempExtraNumberVal = parseFloat(TempExtraNumber.value);

        if (document.all) {
            ReservationCellTotal = document.getElementById("CellTotalInc").innerText;
        } else {
            ReservationCellTotal = document.getElementById("CellTotalInc").textContent;
        }

        //determine digit seperator
        var seperatorDecimal;
        var seperatorGroup;

        seperatorDecimal = document.getElementById("hiddenSeperator").value;
        seperatorGroup = document.getElementById("hiddenSeperator").value;

        seperatorDecimal = seperatorDecimal.substring(0, 1);
        seperatorGroup = seperatorGroup.substring(1, 2);

        if (document.all) {
            //ie
            var TempExtraPriceInner = TempExtraPrice.innerText;
            TempExtraPriceInner = TempExtraPriceInner.replace(/\,/g, '');
            TempExtraPriceInner = TempExtraPriceInner.replace(/\./g, '');
            TempExtraPriceInner = TempExtraPriceInner.replace(/\s/g, '');
            TempExtraPriceInner = parseFloat(TempExtraPriceInner) / 100;
            TempExtraPrice.innerText = parseFloat(TempExtraPriceInner).formatMoney(2, seperatorDecimal, seperatorGroup);
        } else 
        {
            //ff
            var TempExtraPriceInner = TempExtraPrice.textContent;
            TempExtraPriceInner = TempExtraPriceInner.replace(/\,/g, '');
            TempExtraPriceInner = TempExtraPriceInner.replace(/\./g, '');
            TempExtraPriceInner = TempExtraPriceInner.replace(/\s/g, '');
            TempExtraPriceInner = parseFloat(TempExtraPriceInner) / 100;
            TempExtraPrice.textContent = parseFloat(TempExtraPriceInner).formatMoney(2, seperatorDecimal, seperatorGroup);
        }
        
        if (TempNumberOfDays == 0) {
            TempNumberOfDays = 1;
        }

        TempExtraLinePrice = TempExtraNumberVal * TempNumberOfDays * TempExtraPriceInner;

        if (document.all) {
            TempExtraPriceLineTotal.innerText = TempExtraLinePrice.formatMoney(2, seperatorDecimal, seperatorGroup);
        } else 
        {
            TempExtraPriceLineTotal.textContent = TempExtraLinePrice.formatMoney(2, seperatorDecimal, seperatorGroup);
        }

        TempExtraTotalPrice = TempExtraTotalPrice + TempExtraLinePrice;
        var ReservationCellTotal;

        ReservationCellTotal = ReservationCellTotal.replace(/\,/g, '');
        ReservationCellTotal = ReservationCellTotal.replace(/\./g, '');
        ReservationCellTotal = ReservationCellTotal.replace(/\s/g, '');
        ReservationCellTotal = ReservationCellTotal/100;

        var TempTotalIncludingExtras;
        
        TempTotalIncludingExtras = parseFloat(ReservationCellTotal) + parseFloat(TempExtraTotalPrice);

        if (document.all) {
            document.getElementById("ExtraAllTotal").innerText = parseFloat(TempTotalIncludingExtras).formatMoney(2, seperatorDecimal, seperatorGroup);
        } else
        {
            document.getElementById("ExtraAllTotal").textContent = parseFloat(TempTotalIncludingExtras).formatMoney(2, seperatorDecimal, seperatorGroup);
        }
    }
}

Number.prototype.formatMoney = function(c, d, t) {
    var n = this,
        c = isNaN(c = Math.abs(c)) ? 2 : c,  //cijfers achter komma
        d = d == undefined ? "," : d,        //decimal seperator
        t = t == undefined ? "." : t,        //thousand seperator
        s = n < 0 ? "-" : "",
        i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "",
        j = (j = i.length) > 3 ? j % 3 : 0;
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}


