op.prefill=function( cookie ){
	//Add variables
	var hash;
	var x=0; //for children extra menu
	var y=0; //for bottom extra 
	var aairport;
	var dairport;
	var kinder=0;
	var erwachsene=0;
	var nChildren;
	var regionvalue;
	var checkbox;
	var region;
	var personen;
	var href      = window.location.href;
	var urlstring = cookie || '';
	var address;
	var destinationName;
	
	if(urlstring == ''){
		try {
			urlstring=decodeURI(href.slice(href.indexOf('?') + 1));
		} catch (error) {
			urlstring=unescape(href.slice(href.indexOf('?') + 1));
		}
	}else
	{
		//~ urlstring = ( ( href.indexOf('?') != '-1' ) ? href.slice(href.indexOf('?') + 1) : cookie ) || '';
		urlstring = cookie  + '&' + href.slice(href.indexOf('?') + 1);
		try {
			 urlstring=decodeURI(urlstring);
		} catch (error) {
			 urlstring=unescape(urlstring);
		}
	}
	
	// if urlstring empty and MPSPrefill ist set then use MPSPrefill!
	if(urlstring != '' && op.MPSprefill) {
		urlstring = op.MPSprefill;	
	}
	
	var hashes = urlstring.split('&');
	for(var i = 0; i < hashes.length; i++) 
    {
	
		hash = hashes[i].split('=');
		if(hash[0]=="departureAirportCode" || hash[0]=="arrivalAirportCode"){
			hash[1] = hash[1].toUpperCase();
		}
		if(hash[0]=="destinationName") {
			hash[1] = unescape(hash[1]);
			hash[1]=hash[1].replace(/\+/g, " ");
		}
		//rewrite the airport
		(hash[0]=="departureAirportCode") ?dairport=hash[1]:'';
		(hash[0]=="arrivalAirportCode") ?aairport=hash[1]:'';
		(hash[0]=="departureAirport") ?hash[1]='':'';
		(hash[0]=="arrivalAirport") ?hash[1]='':'';			
		//if there is a # at the end, it will be removed
		(i==hashes.length-1) ? (hash[1]) ?(hash[1].substr(hash[1].length-1)=="#") ? hash[1]=hash[1].substr(0,hash[1].length-1) :'' : '': '';
		//remove index from preferred Airlines
		(hash[0].substr(0,17)=='preferredAirlines') ? hash[0]='preferredAirlines' : '';
		
		// Switch for the type, select-one & text(normal), checkbox & special cases
		var type= $('#'+op.currentContentid+' [name='+hash[0]+']').attr('type');
		switch (type) {
			case "select-one":
			case"text":
				$('#'+op.currentContentid+' [name='+hash[0]+']').val(hash[1]).change();
				//adding the additional menue if needed
				switch(op.currentContentid){
					case  "dp-content":
					case  "flight-content":
						(hash[0].substr(0,9)=='childAges' && hash[1]!=-1) ? x++ : '';
						(hash[0]=='cabinType' && hash[1]!="") ? y++ : '';
					break;
					case "hotel-content":
						(hash[0].substr(0,9)=='childAges' && hash[1]!=-1) ? x++ : '';
						if(hash[0]=='destinationName')
						{
							destinationName=hash[1];
						}
						if(hash[0]=='address')
						{
							address=hash[1];
						}
					break;
					case "package-content":
							(hash[0].substr(0,5)=='alter' && hash[1]!=-1) ? x++: '';
					break;
					case  "car-content":			
						(hash[0]=="transmission" && hash[1]!="0")? y++:'';
						(hash[0]=="airConditioning" && hash[1]!="0")? y++:'';
						(hash[0]=="searchString") ? carSearch=hash[1]:'';						
						if(hash[0]=="age")
						{
							if(hash[1]<25){
								$('#'+op.currentContentid+' [name=age]').val("24").change();
							}else{
								$('#'+op.currentContentid+' [name=age]').val("35").change();
							}	
						}
					break;
				}
				
			break;
			case "checkbox":
				//adding the additional menue if needed
				switch(op.currentContentid){
					case  "package-content":
						(hash[1]=="0") ? y++ : (hash[1]=="1048576") ? y++ : '';
						(hash[1]=="0") ? checkbox=true : (hash[1]=="1048576") ? checkbox=true : '';
					break;
					default:
						(hash[1]==1) ? checkbox=true : (hash[1]=="true") ? checkbox=true : '';	
					break;
				}
				(checkbox)?$('#'+op.currentContentid+' [name='+hash[0]+']').attr('checked', "checked"):'';
			break;
			default:
				switch(op.currentContentid){
				//Add special cases here for each search
					case  "package-content":


						switch(hash[0]){
						//Special Case for persons
							case "personen":
								personen =  hash[1].split(';');
								for(var z = 0; z < personen.length; z++){
									if(personen[z]>16){
										(erwachsene<4)?erwachsene++:'';
									}else{
										(kinder<3)?kinder++:'';
										$('#'+op.currentContentid+' [name=alter'+kinder+']').val(personen[z]).change();
									}
								}
								$('#'+op.currentContentid+' [rel=erwachsene] input').val(erwachsene).change();
								if(kinder>0){
									$('#'+op.currentContentid+' #vis_lastMinuteShowChildren', op.context).removeClass('dn');
									$('#'+op.currentContentid+' #lastMinuteShowChildren').attr('checked', "checked");
									op.addDummyContentForIE(); 
								}
							break;
							case "erwachsene":
								personen =  hash[1].split('%3B');
								for(var z = 0; z < personen.length; z++){
									if(personen[z]>16){
										(erwachsene<4)?erwachsene++:'';
									}
								}
								$('#'+op.currentContentid+' [rel=erwachsene] input').val(erwachsene).change();
							break;
							
							//select the topregion via id from the dropdown
							case "topRegion":
							   $('#'+op.currentContentid+' #allGeo').find('option').each(function() { 
                                                                        //alert('test');
									region= $(this).val().split('|');
									(region[2]==hash[1]) ? regionvalue=region[0]+'|'+region[1]+'|'+region[2] :'';
								}); 
								regionvalue ? $('#'+op.currentContentid+' #allGeo').val(regionvalue).change() :'';
							break;
							//rewwrite the parameter
							case "sportmoeglichkeiten":
								$('#'+op.currentContentid+' [name=sportangebot]').val(hash[1]).change();
								(hash[1]>=0) ? y++: '' ;
							break;
						}
					break;

					case  "hotel-content":
					//rewwrite the parameters
						switch(hash[0]){
							case "numOfAdults":
								$('#'+op.currentContentid+' [rel=roomOccupancies[0].numberOfAdults] input').val(hash[1]).change();
							break;
							case "numberOfRooms":
								$('#'+op.currentContentid+' [rel=numberOfRooms] input').val(hash[1]).change();
							break;
							case "numOfChildren":
								nChildren=hash[1];
							break;
						}
					break;
					case  "car-content":
					//rewwrite the parameters
						switch(hash[0]){
							case "destination1":
								carDestination=hash[1];
							break;
						}
					break;
					case  "dp-content":
						switch(hash[0]){
						//rewwrite the parameters
							case "roomOccupancies[0].numberOfAdults":
								$('#'+op.currentContentid+' [rel=roomOccupancies[0].numberOfAdults] input').val(hash[1]).change();
							break;
							case "numberOfRooms":
								$('#'+op.currentContentid+' [rel=numberOfRooms] input').val(hash[1]).change();
							break;
							case"roomOccupancies[0].numberOfChildren":
								nChildren=hash[1];
							break;
							//adding preferred Airlines
							case "preferredAirlines":
								$('#'+op.currentContentid+' #dp_preferredAirlinesSelected [value='+hash[1]+']').attr('selected', "selected");
								y++;
							break;
						}

					break;

					case  "flight-content":
						switch(hash[0]){
						//rewwrite the parameters
							case "numberOfAdults":
								$('#'+op.currentContentid+' [rel=numberOfAdults] input').val(hash[1]).change();
							break;
							case "numberOfChildren":
								$('#'+op.currentContentid+' [rel=numberOfChildren] input').val(hash[1]).change();
							break;
							case "numberOfInfants":
								$('#'+op.currentContentid+' [rel=numberOfInfants] input').val(hash[1]).change();
							break;				
							//disable the returnfligt if oneway
							case "tripType":
								if(hash[1]=="O"){
									$('#'+op.currentContentid+' #trip-type-oneway').attr('checked', "checked")
									op.flightEnableOneway();
								}else{
									$('#'+op.currentContentid+' #trip-type-roundtrip').attr('checked', "checked")			
								}
							break;
							//adding preferred Airlines
							case "preferredAirlines":
								$('#'+op.currentContentid+' #flight_preferredAirlinesSelected [value='+hash[1]+']').attr('selected', "selected");
								y++;
							break;
						}
					break;
						
				}
				//fill hiddenfiels
				(type=="hidden")&& $('#'+op.currentContentid+' [name='+hash[0]+']')!='engine' ? $('#'+op.currentContentid+' [name='+hash[0]+']').val(hash[1]).change()  : '';
				(type=="hidden") ? (hash[0]=="destination1") ? $('#'+op.currentContentid+' [name=searchString]').val(hash[1]).change():'':'';
					
			break;
		}
    }
	//Show extra searchparameters if needed		
	switch(op.currentContentid){
		case  "package-content":
			if(y>=1)
				{
					$('#'+op.currentContentid+' .vis_lastMinuteShowMoreOptions',op.context).removeClass('dn');
					op.addDummyContentForIE();	
				}
			if(x>=1)
				{
					$('#'+op.currentContentid+' #vis_lastMinuteShowChildren', op.context).removeClass('dn');
					$('#'+op.currentContentid+' #lastMinuteShowChildren').attr('checked', "checked");
					op.addDummyContentForIE(); 
				}
		break;
		case  "flight-content":
			if(y>=1)
				{
					$('#'+op.currentContentid+' .vis_flightsShowMoreOptions',op.context).removeClass('dn');
					op.addDummyContentForIE();	
					op.moveSelectedItems("#flight_preferredAirlinesSelected", "#flight_preferredAirlines"); 
				}
				//select the airport if 3 Letter Code is available
			if(dairport){
					url = ( op.paths.flightsURL + '?query=' + dairport );		
					jQuery.get(url, function(data){
							data = eval(data);
							for( var k=0; k<data.length; k++ ) {
								(data[k][4]==dairport) ? $('#'+op.currentContentid+' [name=departureAirport]').val(data[k][2] + ', ' + data[k][1] + ', ' + data[k][3] + ' [' + data[k][4] + ']').change() :'';
							}
					}, 'html');
				}
			if(aairport){
					url = ( op.paths.flightsURL + '?query=' + aairport );		
					jQuery.get(url, function(data){
							data = eval(data);
							for( var k=0; k<data.length; k++ ) {
								(data[k][4]==aairport) ? $('#'+op.currentContentid+' [name=arrivalAirport]').val(data[k][2] + ', ' + data[k][1] + ', ' + data[k][3] + ' [' + data[k][4] + ']').change() :'';
							}
					}, 'html');
				}
		break;
		case  "hotel-content":
			if(destinationName){
					//do search for destination and adress
						url = ( op.paths.placesURL );
						$.ajaxSetup({
							contentType: 'application/x-www-form-urlencoded; charset=UTF-8'
						})                    
						jQuery.post(url, {                       
							textLocation: destinationName
						}, function(data){
							var id=$(data).find("li:first").attr('id');
							if(destinationName==$(data).find("li:first").text()){
								jQuery('[name=locationId]').val(id).change(); 
							//	if(op.initMapWithCode) {
							//		op.initMapWithCode('googleMap1',id);
							//	}

							}else{
								op.updateSuggestPlaces(data, $('input.inputbox'));
								//initAutocompleteClick();
							}
						}, 'html')
						$.ajaxSetup({
							contentType: 'application/x-www-form-urlencoded;'
						})     
			}
			if(x>=1)
				{
				
					$('#'+op.currentContentid+' [rel=roomOccupancies[0].numberOfChildren] input').val(nChildren).change();
					$('#'+op.currentContentid+' .vis_showHotelsChildren', op.context).removeClass('dn');
					$('#'+op.currentContentid+' #HotelshowHotelsChildren').attr('checked', "checked");
					op.addDummyContentForIE(); 
					op.updateRows(	$('#'+op.currentContentid+' .zimmerbelegung'));
			
				}
		break;
		case  "dp-content":
			if(x>=1)
				{
				
					$('#'+op.currentContentid+' [rel=roomOccupancies[0].numberOfChildren] input').val(nChildren).change();
					$('#'+op.currentContentid+' .vis_showHotelFlightChildren', op.context).removeClass('dn');
					$('#'+op.currentContentid+' #dpShowChildren').attr('checked', "checked");
					op.addDummyContentForIE(); 
					op.updateRows(	$('#'+op.currentContentid+' .zimmerbelegung'));
			
				}
			if(y>=1)
				{
				$('#'+op.currentContentid+' .vis_hotelFlightsShowMoreOptions',op.context).removeClass('dn');
				op.addDummyContentForIE();	
				op.moveSelectedItems("#dp_preferredAirlinesSelected", "#dp_preferredAirlines"); 
				}
			//select the airport if 3 Letter Code is available
			if(dairport){
					url = ( op.paths.flightsURL + '?query=' + dairport );		
					jQuery.get(url, function(data){
							data = eval(data);
							for( var k=0; k<data.length; k++ ) {
								(data[k][4]==dairport) ? $('#'+op.currentContentid+' [name=departureAirport]').val(data[k][2] + ', ' + data[k][1] + ', ' + data[k][3] + ' [' + data[k][4] + ']').change() :'';
							}
					}, 'html');
				}
			if(aairport){
					url = ( op.paths.flightsURL + '?query=' + aairport );		
					jQuery.get(url, function(data){
							data = eval(data);
							for( var k=0; k<data.length; k++ ) {
								(data[k][4]==aairport) ? $('#'+op.currentContentid+' [name=arrivalAirport]').val(data[k][2] + ', ' + data[k][1] + ', ' + data[k][3] + ' [' + data[k][4] + ']').change() :'';
							}
					}, 'html');
				}
		break;
		case  "car-content":
			if(y>=1)
				{
					$('#'+op.currentContentid+' .vis_carsShowMoreOptions',op.context).removeClass('dn');
					op.addDummyContentForIE();	
				}
			
				if(typeof(carSearch)!=="undefined" && cookie!=null&& carSearch.length!=3){
					var inp= [];
					var val =decodeURIComponent(carSearch.replace(/\+/g,  " "));
					$('#'+op.currentContentid+' [name=searchString]').val(val).change();	
					var valString=val.split(',');
					if(typeof(valString[1])!=="undefined"){
						valString[1]=valString[1].replace(/\+/g, " ");
						valString[1]=valString[1].replace(/%20/g, " ");
						valString[1]=op.helper.trim(valString[1]);
						valString[1]=encodeURIComponent(valString[1]);
					}
					if(typeof(valString[0])!=="undefined"){
						valString[0]=encodeURIComponent(valString[0]);
					}
					



					var url = ( op.paths.carLocationURL + '?type=location&age=32&locationType=Z&query=' + valString[1]+',%20'+ valString[0]);
					jQuery.get(
						url,
						function(data){
							data = eval(data);
							data = op.sortCarLocation(data);
							op.updateSuggestCarLocation(data, inp);
							op.selectSuggestcarLocation(jQuery('.autocompletecar p a[rel='+carDestination+']')); 
						},
						'html'
					);
				}
				if(typeof(carSearch)!=="undefined" && carSearch.length!=3&& $('#'+op.currentContentid+' [name=destination1]').val()==$('#'+op.currentContentid+' [name=searchString]').val()&& $('#'+op.currentContentid+' [name=destination1]').val()!=""&&$('#'+op.currentContentid+' [name=searchString]').val()!="")
				{
					cartown=$('#car-content .anmietung label.left:first').text();
					
					$('#car-content .anmietung label.left:first').text($('#car-content .selectedCarLocation label.left:first').text());
					$('#searchpod_pickup_location').bind('change', function() {
					$('#searchpod_pickup_location').unbind('change');
						$('#car-content .anmietung label.left:first').text(cartown);
					});
				}
		break;
	}
	
					
    return true;
};


//Prefill Date
op.prefillDate=function( cookie ){
	var hash;
	var preFrom;
	var preTo;
	var preTab;
	var preYearFrom;
	var preMonthFrom;
	var preDayFrom;
	var preYearTo
	var preMonthTo;
	var preDayTo;
	var preDate=new Date();
	var href      = window.location.href;
	var urlstring = cookie || '';
	
	if(urlstring == ''){
		try {
			urlstring=decodeURI(href.slice(href.indexOf('?') + 1));
		} catch (error) {
			urlstring=unescape(href.slice(href.indexOf('?') + 1));
		}
	}else
	{
		//~ urlstring = ( ( href.indexOf('?') != '-1' ) ? href.slice(href.indexOf('?') + 1) : cookie ) || '';
		urlstring = cookie  + '&' + href.slice(href.indexOf('?') + 1);
		try {
			 urlstring=decodeURI(urlstring);
		} catch (error) {
			 urlstring=unescape(urlstring);
		}
	}	
	
	var hashes = urlstring.split('&');;
	//Extract Date from Get Parameters
	for(var i = 0; i < hashes.length; i++) 
    {
		hash = hashes[i].split('=');
			switch(op.currentContentid){
				case "package-content":
					(hash[0]=="termin") ? preFrom = new Date(hash[1]*1000): '';
					(hash[0]=="ruecktermin") ? preTo = new Date(hash[1]*1000): '';
				break;
				case "flight-content":
				case "dp-content":
					(hash[0]=="departureMonth") ? preYearFrom=hash[1].substr(0, 4) :'';
					(hash[0]=="departureMonth") ? preMonthFrom=hash[1].substr(4, 2) :'';
					(hash[0]=="departureDay") ?  preDayFrom=hash[1]:'';
					(hash[0]=="returnMonth") ? preYearTo=hash[1].substr(0, 4) :'';
					(hash[0]=="returnMonth") ? preMonthTo=hash[1].substr(4, 2) :'';
					(hash[0]=="returnDay") ? preDayTo=hash[1]:'';
				break;
				case "hotel-content":
					(hash[0]=="checkInDate") ?preFrom= new Date(hash[1].substr(0, 4),hash[1].substr(4, 2),hash[1].substr(6, 2)):'';
					(hash[0]=="checkOutDate") ?preTo= new Date(hash[1].substr(0, 4),hash[1].substr(4, 2),hash[1].substr(6, 2)):'';
					(hash[0]=="checkInMonthYear") ? preYearFrom=hash[1].substr(0, 4) :'';
					(hash[0]=="checkInMonthYear") ? preMonthFrom=hash[1].substr(4, 2) :'';
					(hash[0]=="checkInDay") ?  preDayFrom=hash[1]:'';
					(hash[0]=="checkOutMonthYear") ? preYearTo=hash[1].substr(0, 4) :'';
					(hash[0]=="checkOutMonthYear") ? preMonthTo=hash[1].substr(4, 2) :'';
					(hash[0]=="checkOutDay") ? preDayTo=hash[1]:'';
				break;
				case "car-content":
					(hash[0]=="pickUpDateForm") ? preYearFrom=hash[1].substr(0, 4) :'';
					(hash[0]=="pickUpDateForm") ? preMonthFrom=hash[1].substr(4, 2) :'';
					(hash[0]=="pickUpDateForm") ?  preDayFrom=hash[1].substr(6, 2):'';
					(hash[0]=="dropOffDateForm") ? preYearTo=hash[1].substr(0, 4) :'';
					(hash[0]=="dropOffDateForm") ? preMonthTo=hash[1].substr(4, 2) :'';
					(hash[0]=="dropOffDateForm") ? preDayTo=hash[1].substr(6, 2):'';
				break;
			}
	}
	//Create Date if all parameters are available
	if(preYearFrom && preMonthFrom && preMonthFrom)
		{
			preFrom=new Date(preYearFrom, preMonthFrom-1, preDayFrom);
			
		}
	if(preYearTo && preMonthTo && preMonthTo)
		{
			preTo=new Date(preYearTo, preMonthTo-1, preDayTo);
		}







	//Write the value into the datepicker variable
	switch(op.currentContentid){
		case  "package-content":
			preTab="package";
			preFrom? op.forms.package.datepicker.fromPF=preFrom:'';
			preTo? op.forms.package.datepicker.toPF=preTo:'';
		break;
		case  "flight-content":
			preTab="flight";
			preFrom? op.forms.flight.datepicker.fromPF=preFrom:'';
			preTo? op.forms.flight.datepicker.toPF=preTo:'';
		break;
		case  "hotel-content":
			preTab="hotel";
			preFrom? op.forms.hotel.datepicker.fromPF=preFrom:'';
			preTo? op.forms.hotel.datepicker.toPF=preTo:'';
		break;
		case  "dp-content":
			preTab="dp";
			preFrom? op.forms.dp.datepicker.fromPF=preFrom:'';
			preTo? op.forms.dp.datepicker.toPF=preTo:'';
		break;
		case  "car-content":
			preTab="car";
			preFrom? op.forms.car.datepicker.fromPF=preFrom:'';
			preTo? op.forms.car.datepicker.toPF=preTo:'';
		break;
	}
	//Write the value into the datepicker input field
	preFrom?$('#'+op.currentContentid+' #'+preTab+'-from-trigger').val(op.dayNamesShort[preFrom.getDay()]+' | '+preFrom.getDate()+'. '+op.monthNamesShort[preFrom.getMonth()]+' '+preFrom.getFullYear()).change() : '';
	preTo?$('#'+op.currentContentid+' #'+preTab+'-to-trigger').val(op.dayNamesShort[preTo.getDay()]+' | '+preTo.getDate()+'. '+op.monthNamesShort[preTo.getMonth()]+' '+preTo.getFullYear()).change() : '';
		
	return true;
};

