
/* functions for link-generators and stand-alone search-masks */

function getTeaserLinkToLastMinuteIbe(formElements, teaserLinkServerName) {
	// requestType=3: search in TT and GoBucher
	return getTeaserLinkToLastMinuteAndHotelIbe(formElements, teaserLinkServerName, "lastMinute", 3);
}
function getTeaserLinkToHotelIbe(formElements, teaserLinkServerName) {
	// requestType=1: search only in TT
	return getTeaserLinkToLastMinuteAndHotelIbe(formElements, teaserLinkServerName, "hotel", 1);
}
function getTeaserLinkToLastMinuteAndHotelIbe(formElements, teaserLinkServerName, ibeName, requestType) {
	var teaserLink = teaserLinkServerName;
	var params = "?";
	if (document.getElementsByName("regionId")[0].value == "" || document.getElementsByName("regionId")[0].value == "-1") {
		params += "ibe_pagename=teaserSearchRegions.do";
	}
	else {
		params += "ibe_pagename=teaserSearchHotels.do";
	}

	for (var i = 0; i < formElements.length; i++) {
        if (formElements[i].name == "startDate") {
   	        if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
				params += "&";
   	    	}
            params += formElements[i].name + "=";
	        params += formElements[i].value.replace(/\//g, ".");
        }
   	    else if (formElements[i].name == "endDate") {
       	    if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
				params += "&";
           	}
        	params += formElements[i].name + "=";
   	    	params += formElements[i].value.replace(/\//g, ".");
        }
   	    else if (formElements[i].name == "countryId") {
           	if (formElements[i].value != "-1") {
       	    	if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
					params += "&";
           		}
        		params += "country" + "=";
   	    		params += formElements[i].value;
   	    	}
        }
   	    else if (formElements[i].name == "regionId") {
           	if (formElements[i].value != "-1") {
	       	    if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
					params += "&";
        	   	}
        		params += "region" + "=";
   	    		params += formElements[i].value;
   	    	}
        }
   	    else if (formElements[i].name == "ttDepartureAirportId") {
           	if (formElements[i].value != "") {
       	    	if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
					params += "&";
           		}
        		params += "airport" + "=";
   	    		params += formElements[i].value;
   	    	}
        }
   	    else if (formElements[i].name == "durationRange") {
           	if (formElements[i].value != "ANY") {
	       	    if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
					params += "&";
           		}
        		params += "duration" + "=";
        		if (formElements[i].value == "RANGE_1TO4") {
        			params += "9";
        		}
        		else if (formElements[i].value == "RANGE_5TO8") {
        			params += "10";
        		}
        		else if (formElements[i].value == "ONE_WEEK") {
        			params += "1";
        		}
        		else if (formElements[i].value == "RANGE_9TO12") {
        			params += "7";
        		}
        		else if (formElements[i].value == "RANGE_13TO16") {
        			params += "15";
        		}
        		else if (formElements[i].value == "TWO_WEEK") {
        			params += "3";
        		}
        		else if (formElements[i].value == "RANGE_16TO22") {
        			params += "12";
        		}
        		else if (formElements[i].value == "THREE_WEEK") {
        			params += "4";
        		}
        		else if (formElements[i].value == "ABOVE_22") {
        			params += "13";
        		}
   	    	}
        }
   	    else if (formElements[i].name == "childAge1") {
           	if (formElements[i].value != "") {
	       	    if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
					params += "&";
        	   	}
        		params += "child1Age" + "=";
   	    		params += formElements[i].value;
   	    	}
        }
   	    else if (formElements[i].name == "childAge2") {
           	if (formElements[i].value != "") {
	       	    if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
					params += "&";
        	   	}
	        	params += "child2Age" + "=";
   	    		params += formElements[i].value;
   	    	}
        }
   	    else if (formElements[i].name == "childAge3") {
           	if (formElements[i].value != "") {
	       	    if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
					params += "&";
	           	}
        		params += "child3Age" + "=";
   	    		params += formElements[i].value;
   	    	}
        }
   	    else {
   	    	if (formElements[i].name != "ibe_pagename") {
	    	    if (formElements[i].type != "checkbox" || (formElements[i].type == "checkbox" && formElements[i].checked != "")) {
					if (formElements[i].value && formElements[i].value.length > 0 && formElements[i].value != "-1" && formElements[i].value != "0") {
						if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
							params += "&";
						}
						params += formElements[i].name + "=";
						params += formElements[i].value;
					}
	        	}
	        }
   	    }
    }

	if (ibeName == "hotel") {
		params += "&ibename=HOTEL_ONLY";
	}
	else {
		params += "&requestType=" + requestType;
	}

	// have to replace ' ' with '+'.
	teaserLink += params.replace(/ /g, "+");
	return teaserLink;
}

function getTeaserLinkToLastMinuteIbeForQuickSearchForm(formElements, teaserLinkServerName) {
	var teaserLink = teaserLinkServerName;
	var params = "?";

      var offerSearch = false;
      var dateTypeByInterval = false;
      for (var i = 0; i < formElements.length; i++) {
	        if (formElements[i].name == "dateTypeSelect") {
    	    	if (formElements[i].value == "byDate" && formElements[i].checked != "") {
	        		dateTypeByInterval = false;
    	    	}
        		else if (formElements[i].value == "byInterval" && formElements[i].checked != "") {
	        		dateTypeByInterval = true;
    	    	}
	        }
	  }
	  if (document.getElementsByName("giataID")[0].disabled == false || document.getElementById("iffCode").disabled == false || document.getElementsByName("iffList")[0].disabled == false) {
			if(document.getElementsByName("giataID")[0].value != "" || document.getElementById("iffCode").value != "" ||
      				(document.getElementsByName("iffList")[0].id == "iffCode" && document.getElementsByName("iffList")[0].value != "")){
				offerSearch = true;
			}
      }
      if(document.getElementsByName("hotelKey")[0].disabled == false && document.getElementsByName("hotelKey")[0].value != ""){
			offerSearch = true;
      }
	  if (offerSearch == false) {
			if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
				params += "&";
			}
			if (document.getElementsByName("region")[0].value == "" || document.getElementsByName("region")[0].value == "-1") {
				params += "ibe_pagename=teaserSearchRegions.do";
			}
			else {
				params += "ibe_pagename=teaserSearchHotels.do";
			}
      }
      else {
			if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
				params += "&";
			}
			params += "ibe_pagename=teaserSearchOffers.do";
      }
      for (var i = 0; i < formElements.length; i++) {
		if (formElements[i].name == "startDateOffset") {
			if (dateTypeByInterval) {
	            if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
    	          params += "&";
        	    }
            	params += formElements[i].name + "=";
            	params += formElements[i].value;
            }
        }
        else if (formElements[i].name == "dateDuration") {
			if (dateTypeByInterval) {
	            if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
    	          params += "&";
        	    }
	            params += formElements[i].name + "=";
    	        params += formElements[i].value;
            }
        }
        else if (formElements[i].name == "startDate") {
			if (!dateTypeByInterval) {
	            if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
    	          params += "&";
        	    }
	            params += formElements[i].name + "=";
    	        params += formElements[i].value.replace(/\//g, ".");
            }
        }
        else if (formElements[i].name == "endDate") {
			if (!dateTypeByInterval) {
	            if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
              	params += "&";
            	}
            	params += formElements[i].name + "=";
            	params += formElements[i].value.replace(/\//g, ".");
            }
        }
        else {
	        if (formElements[i].type != "checkbox" || (formElements[i].type == "checkbox" && formElements[i].checked != "")) {
    	    	if (formElements[i].name != "dateTypeSelect" && formElements[i].name != "dataSourceTT" && formElements[i].name != "dataSourceCSGoBucher") {
					if (formElements[i].disabled == false && formElements[i].value && formElements[i].value.length > 0 && formElements[i].value != "-1" && formElements[i].value != "0") {
						if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
							params += "&";
						}
						params += formElements[i].name + "=";
						params += formElements[i].value;
					}
				}
	        }
        }
  	  }

	  // add data-source-type ('requestType'-parameter)
	  var dataSourceTTChecked = document.getElementById("dataSourceTT").checked;
	  var dataSourceCSGoBucherChecked = document.getElementById("dataSourceCSGoBucher").checked;
      if(dataSourceTTChecked && !dataSourceCSGoBucherChecked) {
			if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
				params += "&";
			}
			params += "requestType=1";
      }
      else if(!dataSourceTTChecked && dataSourceCSGoBucherChecked) {
			if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
				params += "&";
			}
			params += "requestType=2";
      }
      else {
			if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
				params += "&";
			}
			params += "requestType=3";
      }

	// have to replace ' ' with '+'.
	teaserLink += params.replace(/ /g, "+");
	return teaserLink;
}

function getTeaserLinkToHotelIbeForQuickSearchForm(formElements, teaserLinkServerName) {
	var teaserLink = teaserLinkServerName;
	var params = "?";

      var offerSearch = false;
      var dateTypeByInterval = false;
      for (var i = 0; i < formElements.length; i++) {
	        if (formElements[i].name == "dateTypeSelect") {
    	    	if (formElements[i].value == "byDate" && formElements[i].checked != "") {
	        		dateTypeByInterval = false;
    	    	}
        		else if (formElements[i].value == "byInterval" && formElements[i].checked != "") {
	        		dateTypeByInterval = true;
    	    	}
	        }
	  }
      if(document.getElementsByName("giataID")[0].value != "" ||
      			(document.getElementsByName("iffList")[0].id == "iffCode" && document.getElementsByName("iffList")[0].value != "")){
			offerSearch = true;
      }
	  if (offerSearch == false) {
			if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
				params += "&";
			}
			if (document.getElementsByName("region")[0].value == "" || document.getElementsByName("region")[0].value == "-1") {
				params += "ibe_pagename=teaserSearchRegions.do";
			}
			else {
				params += "ibe_pagename=teaserSearchHotels.do";
			}
      }
      for (var i = 0; i < formElements.length; i++) {
		if (formElements[i].name == "startDateOffset") {
			if (dateTypeByInterval) {
	            if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
    	          params += "&";
        	    }
            	params += formElements[i].name + "=";
            	params += formElements[i].value;
            }
        }
        else if (formElements[i].name == "dateDuration") {
			if (dateTypeByInterval) {
	            if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
    	          params += "&";
        	    }
	            params += formElements[i].name + "=";
    	        params += formElements[i].value;
            }
        }
        else if (formElements[i].name == "startDate") {
			if (!dateTypeByInterval) {
	            if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
    	          params += "&";
        	    }
	            params += formElements[i].name + "=";
    	        params += formElements[i].value.replace(/\//g, ".");
            }
        }
        else if (formElements[i].name == "endDate") {
			if (!dateTypeByInterval) {
	            if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
              	  params += "&";
            	}
            	params += formElements[i].name + "=";
            	params += formElements[i].value.replace(/\//g, ".");
            }
        }
        else {
			if ((formElements[i].name == "hotelname" || formElements[i].name == "giataID" || (formElements[i].name == "iffList" && formElements[i].id == "iffCode"))
					&& formElements[i].value != "") {
				if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
					params += "&";
				}
				params += "ibe_pagename=teaserSearchOffers.do";
			}
	        if (formElements[i].type != "checkbox" || (formElements[i].type == "checkbox" && formElements[i].checked != "")) {
    	    	if (formElements[i].name != "dateTypeSelect") {
					if (formElements[i].value && formElements[i].value.length > 0 && formElements[i].value != "-1" && formElements[i].value != "0") {
						if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
							params += "&";
						}
						params += formElements[i].name + "=";
						params += formElements[i].value;
					}
				}
	        }
        }
  	  }
	if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
		params += "&";
	}
	params += "ibename=";
	params += "HOTEL_ONLY";

	// have to replace ' ' with '+'.
	teaserLink += params.replace(/ /g, "+");
	return teaserLink;
}

function getTeaserLinkToFlightIbe(formElements, teaserLinkServerName) {
	var teaserLink = teaserLinkServerName;
	var params = "?";
	params += "ibe_pagename=searchFlightByDeepLink.do";

	for (var i = 0; i < formElements.length; i++) {
        if (formElements[i].name == "startDate" && formElements[i].value.length > 0) {
   	        if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
				params += "&";
   	    	}
            params += formElements[i].name + "=";
	        params += formElements[i].value.replace(/\//g, ".");
        }
   	    else if (formElements[i].name == "endDate" && formElements[i].value.length > 0) {
       	    if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
				params += "&";
           	}
        	params += formElements[i].name + "=";
   	    	params += formElements[i].value.replace(/\//g, ".");
        }
   	    else {
    	    if (formElements[i].type != "checkbox" || (formElements[i].type == "checkbox" && formElements[i].checked != "")) {
				if (formElements[i].value && formElements[i].value.length > 0 && formElements[i].value != "-1" && formElements[i].value != "0") {
					if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
						params += "&";
					}
					params += formElements[i].name + "=";
					params += formElements[i].value;
				}
	        }
   	    }
    }

	// have to replace ' ' with '+'.
	teaserLink += params.replace(/ /g, "+");
	return teaserLink;
}

function getTeaserLinkToRentalCarIbe(formElements, teaserLinkServerName) {
		var teaserLink = teaserLinkServerName;
		var params = "?ibe_pagename=searchRentalCarByDeepLink.do";
		for (var i = 0; i < formElements.length; i++) {
			if (formElements[i].value != "") {
				if (formElements[i].name == "destination") {
					params += "&";
	    	        params += formElements[i].name + "=";
    	    	    params += formElements[i].value;
	            }
				if (formElements[i].name == "airport") {
	        	    var airportField = document.getElementById("ibeDestination");
	        	    for (var j=0; j < airportField.childNodes.length; j++) {
	        	    	var child = airportField.childNodes[j];
	        	    	if (child.nodeName == "OPTION" && child.selected) {
			        	    for (var k=0; k < child.childNodes.length; k++) {
			        	    	var airportDesc = "" + child.childNodes[k].nodeValue;
			        	    	if (airportDesc.indexOf("(") >= 0) {
			        	    		var parts = airportDesc.split("(");
			        	    		var airportDesc = parts[1];
			        	    		parts = airportDesc.split(")");
			        	    		var airportCode = parts[0];
									params += "&";
	        					    params += formElements[i].name + "=";
									params += airportCode;
			        	    	}
			        	    }
	        	    	}
	        	    }
	            }
				if (formElements[i].name == "startDate") {
					params += "&";
	        	    params += "pickupDate" + "=";
					var parts = formElements[i].value.split(".");
					params += parts[2];
					params += parts[1];
					params += parts[0];
            	}
				if (formElements[i].name == "pickUpTime") {
					params += "&";
	    	        params += "pickupTime" + "=";
    	    	    params += formElements[i].value.replace(/:/g, "");
	            }
				if (formElements[i].name == "endDate") {
					params += "&";
	        	    params += "handinDate" + "=";
					var parts = formElements[i].value.split(".");
					params += parts[2];
					params += parts[1];
					params += parts[0];
            	}
				if (formElements[i].name == "handInTime") {
					params += "&";
	    	        params += "handinTime" + "=";
    	    	    params += formElements[i].value.replace(/:/g, "");
	            }
				if (formElements[i].name == "carSupplier") {
					if (formElements[i].value != "Mietwagen-Anbieter" && formElements[i].value != "Mietwagenanbieter") {
						params += "&";
	        	    	params += "supplier" + "=";
	    	        	params += formElements[i].value;
	    	        }
    	        }
				if (formElements[i].name == "carOccupancy") {
					if (formElements[i].value != "Belegung" && formElements[i].value != "Belegung") {
						params += "&";
	            		params += "numAdults" + "=";
	    	        	params += formElements[i].value;
	    	        }
    	        }
				if (formElements[i].name == "extcall") {
					if (formElements[i].value && formElements[i].value.length > 0) {
						params += "&";
	            		params += "extcall" + "=";
	    	        	params += formElements[i].value;
	    	        }
    	        }
            }
        }

	// have to replace ' ' with '+'.
	teaserLink += params.replace(/ /g, "+");
	return teaserLink;
}

function getTeaserLinkToCityIbe(formElements, teaserLinkServerName) {
	var teaserLink = teaserLinkServerName;
	var params = "?";
	params += "ibe_pagename=teaserSearchCities.do";

	for (var i = 0; i < formElements.length; i++) {
        if (formElements[i].name == "startDate") {
   	        if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
				params += "&";
   	    	}
            params += formElements[i].name + "=";
	        params += formElements[i].value.replace(/\//g, ".");
        }
   	    else if (formElements[i].name == "endDate") {
       	    if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
				params += "&";
           	}
        	params += formElements[i].name + "=";
   	    	params += formElements[i].value.replace(/\//g, ".");
        }
   	    else {
    	    if (formElements[i].type != "checkbox" || (formElements[i].type == "checkbox" && formElements[i].checked != "")) {
				if (formElements[i].value && formElements[i].value.length > 0 && formElements[i].value != "-1" && formElements[i].value != "0") {
					if (params.substring(params.lenght-1) != "?") { // doesn't end with '?'
						params += "&";
					}
					params += formElements[i].name + "=";
					params += formElements[i].value;
				}
	        }
   	    }
    }

	// have to replace ' ' with '+'.
	teaserLink += params.replace(/ /g, "+");
	return teaserLink;
}

/* 
   Function for external search form city/flight/mw ibe. In the external search forms, we
   cannot display error messages. So this function returns the doorpage url with 
   the set parameters if not all required parameters,
   are set.
*/
function getSearchFormUrl(doorpageName, serverName){
        var theStartDate = $('#ibeStartDate').get(0).value;
        theStartDate = theStartDate.replace(/\//g, "%2F");
        var theEndDate = $('#ibeEndDate').get(0).value;
        theEndDate = theEndDate.replace(/\//g, "%2F");
         
        var searchFormUrl = serverName;
        searchFormUrl = searchFormUrl.replace(/ibe_ergebnis.jsp/ , doorpageName)
        searchFormUrl += "?";
        if(doorpageName == "staedte.jsp"){
          searchFormUrl += "countryId=";
          searchFormUrl += $('#ibeDestination').get(0).value;
          searchFormUrl += "&regionId=";
          searchFormUrl += $('#ibeRegion').get(0).value;
          searchFormUrl += "&ttDepartureAirportId=";
          searchFormUrl += $('#ttDepAirport').get(0).value;
          searchFormUrl += "&durationRange=";
          searchFormUrl += $('#duration').get(0).value;
        }
        if(doorpageName == "flug.jsp"){
          searchFormUrl += "departureAirport=";
          searchFormUrl += $('#departureAirport').get(0).value;
          searchFormUrl += "&destination=";
          searchFormUrl += $('#destinationAirport').get(0).value;
          searchFormUrl += "&duration=";
          searchFormUrl += $('#duration').get(0).value;
        }
        if(doorpageName == "mietwagen.jsp"){
          searchFormUrl += "destination=";
          searchFormUrl += $('#country').get(0).value;
          searchFormUrl += "&airport=";
          searchFormUrl += $('#ibeDestination').get(0).value;
          
          var thePickUpTime = $('#ibePickupTime').get(0).value;
          thePickUpTime = thePickUpTime.replace(/:/g, '%3A');
          var theHandInTime = $('#ibeReturnTime').get(0).value;
          theHandInTime = theHandInTime.replace(/:/g, '%3A');
          
          searchFormUrl += "&pickUpTime=";
          searchFormUrl += thePickUpTime;
          searchFormUrl += "&handInTime=";
          searchFormUrl += theHandInTime;
        }
        searchFormUrl += "&startDate=";
        searchFormUrl += theStartDate;
        searchFormUrl += "&endDate=";
        searchFormUrl += theEndDate;
        
          searchFormUrl += "&numAdults=";
          searchFormUrl += $('#ibePerson').get(0).value;
          searchFormUrl += "&childAge1=";
          searchFormUrl += $('#ibeFirstChild').get(0).value;
          searchFormUrl += "&childAge2=";
          searchFormUrl += $('#ibeSecondChild').get(0).value;
          searchFormUrl += "&childAge3=";
          searchFormUrl += $('#ibeThirdChild').get(0).value;
        
        return searchFormUrl;
} /*
destination=ES
&airport=322&
startDate=06%2F05%2F2009&
pickUpTime=10%3A00&
endDate=13%2F05%2F2009&
handInTime=10%3A00
*/
/*       
departureAirport=DUS
&destination=HRG&
startDate=06%2F05%2F2009&
endDate=13%2F05%2F2009&
duration=&
numAdults=2&
childAge1=&
childAge2=&
childAge3=
*/
