﻿function ToggleMoreOptionsDisplay(strMoreOptionsId, strMoreOptionsLinkId){
	var objToggle;
	var objToggleLink;
	try{
		objToggle = document.getElementById(strMoreOptionsId);
		objToggleLink = document.getElementById(strMoreOptionsLinkId);
		if(objToggle.style.display == "none"){
			objToggle.style.display = "block";
			objToggleLink.innerHTML = "Färre val";
		}else{
			objToggle.style.display = "none";
			objToggleLink.innerHTML = "Fler val";
		}
	}catch(er){
	}
		
}

function ToggleDivState(strToggleDivId, strToggleLinkId, strLinkCollapseText, strLinkExpandText){
	var objToggle;
	var objToggleLink;

	if (!strLinkCollapseText || strLinkCollapseText == '') {
		strLinkCollapseText = "Hide";
	}

	if (!strLinkExpandText || strLinkExpandText == '') {
		strLinkExpandText = "Read more";
	}

	try{
		objToggle = document.getElementById(strToggleDivId);
		objToggleLink = document.getElementById(strToggleLinkId);
		if(objToggle.style.display == "none"){
			objToggle.style.display = "block";
			objToggleLink.innerHTML = strLinkCollapseText;
		}else{
			objToggle.style.display = "none";
			objToggleLink.innerHTML = strLinkExpandText;
		}
	}catch(er){
	}
		
}

function ToggleMoreOptionsDisplayBoxBooking(strMoreOptionsTextId, strMoreOptionsLinksId){
	var objToggle;
	var objToggleLink;
	try{
		objToggle = document.getElementById(strMoreOptionsTextId);
		objToggleLink = document.getElementById(strMoreOptionsLinksId);
		if(objToggle.style.display == "none"){
			objToggle.style.display = "block";
			objToggleLink.innerHTML = "Hide";
		}else{
			objToggle.style.display = "none";
			objToggleLink.innerHTML = "More info";
		}
	}catch(er){
	}
		
}

function ToggleMoreOptionsDisplayBoxActivity(strToggleDivId, strToggleLinkId, strLinkCollapseText, strLinkExpandText){
	var objToggle;
	var objToggleLink;

	if (!strLinkCollapseText || strLinkCollapseText == '') {
		strLinkCollapseText = "Hide";
	}

	if (!strLinkExpandText || strLinkExpandText == '') {
		strLinkExpandText = "Read more";
	}

	try{
		objToggle = document.getElementById(strToggleDivId);
		objToggleLink = document.getElementById(strToggleLinkId);
		if(objToggle.style.display == "none"){
			objToggle.style.display = "block";
			objToggleLink.innerHTML = strLinkCollapseText;
		}else{
			objToggle.style.display = "none";
			objToggleLink.innerHTML = strLinkExpandText;
		}
	}catch(er){
	}
		
}

function ToggleMoreOptionsDisplayBoxPhone(strMoreOptionsTextPhoneId, strMoreOptionsLinksPhoneId){
	var objToggle;
	var objToggleLink;
	try{
		objToggle = document.getElementById(strMoreOptionsTextPhoneId);
		objToggleLink = document.getElementById(strMoreOptionsLinksPhoneId);
		if(objToggle.style.display == "none"){
			objToggle.style.display = "block";
			objToggleLink.innerHTML = "Hide";
		}else{
			objToggle.style.display = "none";
			objToggleLink.innerHTML = "Read more";
		}
	}catch(er){
	}
		
}

function ToggleMoreOptionsDisplayBoxGroup(strMoreOptionsTextGroupId, strMoreOptionsLinksGroupId){
	var objToggle;
	var objToggleLink;
	try{
		objToggle = document.getElementById(strMoreOptionsTextGroupId);
		objToggleLink = document.getElementById(strMoreOptionsLinksGroupId);
		if(objToggle.style.display == "none"){
			objToggle.style.display = "block";
			objToggleLink.innerHTML = "Hide";
		}else{
			objToggle.style.display = "none";
			objToggleLink.innerHTML = "Read more";
		}
	}catch(er){
	}
		
}

function ToggleMoreOptionsDisplayBoxMember(strMoreOptionsTextMemberId, strMoreOptionsLinksMemberId){
	var objToggle;
	var objToggleLink;
	try{
		objToggle = document.getElementById(strMoreOptionsTextMemberId);
		objToggleLink = document.getElementById(strMoreOptionsLinksMemberId);
		if(objToggle.style.display == "none"){
			objToggle.style.display = "block";
			objToggleLink.innerHTML = "Hide";
		}else{
			objToggle.style.display = "none";
			objToggleLink.innerHTML = "Read more";
		}
	}catch(er){
	}
		
}

function ToggleMoreOptionsDisplayBoxMessage(strMoreOptionsTextMessageId, strMoreOptionsLinksMessageId){
	var objToggle;
	var objToggleLink;
	try{
		objToggle = document.getElementById(strMoreOptionsTextMessageId);
		objToggleLink = document.getElementById(strMoreOptionsLinksMessageId);
		if(objToggle.style.display == "none"){
			objToggle.style.display = "block";
			objToggleLink.innerHTML = "Hide text";
		}else{
			objToggle.style.display = "none";
			objToggleLink.innerHTML = "Read more";
		}
	}catch(er){
	}
		
}

function ToggleChildAges(strChdAgesId, strContainerId){
	var intChildren = document.getElementById(strChdAgesId).value;
	var objContainer = document.getElementById(strContainerId);
	var arrAges = objContainer.getElementsByTagName("SELECT");
	if(intChildren > 0){
		objContainer.style.display = "block";
		for(var i = 0; i < arrAges.length; i++){
			if(i < intChildren){
				arrAges[i].style.display = "inline";
				arrAges[i].disabled = false;
			}else{
				arrAges[i].style.display = "none";
				arrAges[i].disabled = true;
			}
		}
	}else{
		for(var i = 0; i < arrAges.length; i++){
			arrAges[i].disabled = true;
		}
		objContainer.style.display = "none";
	}
}
function ValidateFlightSearch(){
	// When parseInt is served a string that begins with "0" it handles the number as an octal.
	// This results in that the inputs "08" and "09" return "0". To handle the input as a decimal number we need to start the input with 1-9.
	// Therefor we start by adding a "1" to the beginning of the string to be parsed and then subtracting the result with 100.
	// ie "08" becomes "108" which return the integer 108. By subtracting 100 we get 8.
	var intDeparureYear = 2000 + parseInt("1" + document.getElementById("FlightSearchDepartureMonth").value.substr(4,2)) - 100;
	var intDeparureMonth = (document.getElementById("FlightSearchDepartureMonth").value.substr(1,2)) - 1;
	var intDeparureDay =  (document.getElementById("FlightSearchDepartureDay").value);
	var intReturnYear = 2000 + parseInt("1" + document.getElementById("FlightSearchReturnMonth").value.substr(4,2)) - 100;
	var intReturnMonth = (document.getElementById("FlightSearchReturnMonth").value.substr(1,2)) - 1;
	var intReturnDay =  (document.getElementById("FlightSearchReturnDay").value);
	var dtmDepartureDate = new Date(intDeparureYear, intDeparureMonth, intDeparureDay);
	var dtmReturnDate = new Date(intReturnYear, intReturnMonth, intReturnDay);
	var dtmToday = new Date();
	var dtmFirstBookableDate = new Date(dtmToday.getFullYear(), dtmToday.getMonth(), dtmToday.getDate() + 2)
	//var dtmLastBookableDate = new Date(dtmToday.getFullYear(), dtmToday.getMonth(), dtmToday.getDate() + 330)
	
	// Due to a bug in Safari we have extended the date object in order to be able to add mor days than 127.
	var dtmLastBookableDate = dtmToday;
	dtmLastBookableDate.addDays(330);

	if(document.FlightSearch.DestCity.value != ''){
		var strFromCity;
		if(document.FlightSearch.FromCity[0].disabled == false){
			strFromCity = document.FlightSearch.FromCity[0].options[document.FlightSearch.FromCity[0].options.selectedIndex].value;
		}else{
			strFromCity = document.FlightSearch.FromCity[1].value;
		}
		SetCookie("FromCity", strFromCity, 365);
		SetCookie("DestCity", document.FlightSearch.DestCity.value, 365);
		//alert(intDeparureYear + ", " + intDeparureMonth + ", " + intDeparureDay + "\n" + intReturnYear + ", " + intReturnMonth + ", " + intReturnDay)
			if(dtmDepartureDate.getTime() < dtmFirstBookableDate.getTime()){
				alert("Du kan inte boka flygbiljetter mindre än två dagar före avresa");
				return false;
			}else if( (dtmDepartureDate.getTime() > dtmLastBookableDate.getTime()) || ( document.getElementById("FlightSearchReturnDay").disabled == false && dtmReturnDate.getTime() > dtmLastBookableDate.getTime() ) ){
				alert("Du kan boka flygbiljetter max 331 dagar framåt i tiden");
				//alert("dtmFirstBookableDate: " + dtmFirstBookableDate + "\ndtmLastBookableDate: " + dtmLastBookableDate);
				return false;
			}else{
				if(dtmDepartureDate.getTime() > dtmReturnDate.getTime()){
					if(document.getElementById("FlightSearchReturnDay").disabled == false){
						alert("Hemresedagen får inte vara före avresedagen");
						return false;
					}else{
						return true;
					}
				}else{
					return true;	
				}
			}
	}else{
		alert("Du måste fylla i avreseort och destination");
		return false;
	}
}
function ToggleHotelRoomDisplay(){
	try{
		var objContainer = document.getElementById("room2_container");
		var objChdSelectRoom2 = document.getElementById("ckdr2");
		var arrSelects = objChdSelectRoom2.getElementsByTagName("SELECT");
		if(objContainer.style.display == "none"){
			objContainer.style.display = "block";
			for(var i = 0; i < arrSelects.length; i++){
				arrSelects.disabled = false;
			}
		}else{
			objContainer.style.display = "none";
			objChdSelectRoom2.value = "0";
			for(var i = 0; i < arrSelects.length; i++){
				arrSelects.disabled = true;
			}
			ToggleChildAges('ckdr2', 'ckdr2_container');
		}
	}catch(er){
	}
	
}
function ToggleChildAgeInputTip(strInputTipId){
	try{
		var objInputTip = document.getElementById(strInputTipId);
		if(objInputTip.style.visibility == "hidden"){
			objInputTip.style.visibility = "visible";
		}else{
			objInputTip.style.visibility = "hidden";
		}
	}catch(er){
	}
}
function ValidateContactForm(){
	var strError
	strError = ""
	
	if(document.Contact.Name.value ==""){
		strError = strError + "Namn måste fyllas i\n"
	}
	
	if(document.Contact.Email.value == ""){
		strError = strError + "Du måste fylla i din e-postadress\n";
	}else if(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.Contact.Email.value) == false){
		strError = strError + "E-postadressen du angav verkar inte vara korrekt\n";
	}

	if(document.Contact.Message.value ==""){
		strError = strError + "Meddelande måste fyllas i\n"
	}
	
	if(strError != ""){
		alert(strError)
		return false
	}else{
		return true
	}

}

function ToggleOneWay(blnOneWayEnabled){
	try{
		if(blnOneWayEnabled){
			document.getElementById("FlightSearchReturnDay").disabled = true;
			document.getElementById("FlightSearchReturnMonth").disabled = true;
			document.getElementById("FlightSearchReturnTime").disabled = true;
		}else{
			document.getElementById("FlightSearchReturnDay").disabled = false;
			document.getElementById("FlightSearchReturnMonth").disabled = false;
			document.getElementById("FlightSearchReturnTime").disabled = false;
		}
	}catch(er){
	}
}

function SetCookie(strKey, strValue, intDuration){
	var strExpire;
	var dtmExpire;
	if(!isNaN(intDuration)){
		dtmExpire = new Date();
		dtmExpire.setTime(dtmExpire.getTime() + (intDuration*24*3600*1000));
		strExpire = dtmExpire.toGMTString();
	}else{
		strExpire = ""
	}
	document.cookie = strKey + "=" + escape(strValue) + "; domain=travelpartner.se; expires=" + strExpire;
}

function GetCookie(strKey){
	var intKeyStart
	var intKeyEnd
	if(document.cookie.length > 0){
		intKeyStart = document.cookie.indexOf(strKey + "=");
		if(intKeyStart != -1){
			intKeyStart = intKeyStart + strKey.length + 1;
			intKeyEnd = document.cookie.indexOf(";", intKeyStart)
			if(intKeyEnd == -1){
				intKeyEnd = document.cookie.length;
			}
			return unescape(document.cookie.substring(intKeyStart, intKeyEnd));
		}
	}
	return null;
	
}

// This extends the date object with a function to add a number of days to any given date.
// Normally this can be done with the setDate() method but unfortunatly there is a bug in Safari which doesn't allow values higer than 127. 
Date.prototype.addDays = function(days) {
  var test = new Date(2000, 0, 1);
  if (test.setDate(128) > (new Date(2000, 0, 1)).valueOf()) {
    this.setDate(this.getDate() + days);
    return this;
  }
  if (days < 0) {
    for (var i = -97; days < i; days -= i) {
      this.setDate(this.getDate() + i);
    }
  } else {
    for (var i = 96; days > i; days -= i) {
      this.setDate(this.getDate() + i);
    }
  }
  this.setDate(this.getDate() + days);
  return this;
}

