//-------------------------------------------------------------
//vars for Germany team. 
var maxDays = 99;
var minDays = 1;
var minDaysAhead = 0;


//add destinations in the carParkCodes here for min days/ release days arrays
var carParkMinDaysAheadCodes = new Array("DRS", "LEJ", "VIE", "BSL");
var carParkMinDaysAhead = new Array(4,2,1,1);

var carParkMinDaysCodes = new Array("HAM", "VIE", "BSL"); 
var carParkMinDays = new Array(1,1,2);

/* Unused after new embedded forms
//error messages
var errHBeforeToday = "Das von Ihnen ausgewählte Datum liegt in der Vergangenheit. Bitte überprüfen Sie Ihre Eingabe!";
var errPReturnBeforeArrive = "Ihr R\xFCckkehrdatum liegt vor dem Ankunftsdatum. Bitte \xFCberpr\xFCfen Sie Ihre Eingabe.";
var errPBeforeToday = "Das von Ihnen ausgewählte Datum liegt in der Vergangenheit. Bitte überprüfen Sie Ihre Eingabe!";
var errPMinDays = new Array("An diesem Flughafen bieten wir leider nur Parkplätze an, deren Mindestparkdauer "," Tag beträgt."," Tage beträgt.");
var errPDaysAhead = new Array("An diesem Flughafen bieten wir leider nur Parkplätze an, die mindestens ", " Tag im Voraus zu buchen sind.", " Tage im Voraus zu buchen sind.");
//var errPMaxDays = "";
var errPMaxDays = new Array("Buchungen bis "," Tage können Sie online selbst vornehmen. Bei Buchungen ab "," Tagen kontaktieren Sie uns bitte unter +49 (0)180 / 599 799 070 (14 Cent/ Minute aus dem dt. Festnetz, ggf. abweichende Tarife aus dem Mobilfunknetz) oder kundenservice@parkdiscounter.de");
Unused after new embedded forms */

//-------------------------------------------------------------
//Google tracking code
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-21425505-1']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_setAllowHash', false]);
_gaq.push(['_trackPageview']);
(function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
//Google tracking code

$(document).ready(function() {

  $("form").submit(function() {
    var errMsg = new Array();
    
    //Check if booked days are greater than 22 for hotels w parking
    if ($(":checked").val()=='ahp' && 
        days_between($("input[id=hxEmbeddA]").val(), $("input[id=hxEmbeddD]").val())>22) {
      errMsg[errMsg.length] = 'Hotelübernachtungen mit mehr als 21 Tagen Parkdauer können nicht online reserviert werden. Bitte wenden Sie sich an unseren Kundenservice unter der Telefonnummer 01805 / 997 990 70 (14 ct/Min. aus dem dt. Festnetz, max. 42 ct/Min. aus dem Mobilfunknetz)\n';
    }

    var errLength = errMsg.length;  	
  	//send out messages if any
  	if (errLength != 0)	{
  		var message = "";		
  		for (var x=0;x<errLength;x++)	{
  			message += errMsg[x];
  		}
  		alert(message);
  		return false;
  	} else	{
  		saveFormInfo("parking");
  		_gaq.push(['_link', 'https://secure.parkdiscounter.de/parkplatz/c/parkplaetze/']);
    	return true;
  	}
    
  });
  
  /*	Unused after new embedded forms
  $('#advanced').submit(function() {
    /*
    var FormDD = $("#day option:selected").text();
  	var FormMY = $("#my option:selected").text();
  	var iDate = $("#day option:selected").val() + $("#my option:selected").val(); 
  	$('#ArrivalDate').val(iDate);
  
  	var FormDD = $("#r_day option:selected").text();
  	var FormMY = $("#r_my option:selected").text();
  	var iDate = $("#r_day option:selected").val() + $("#r_my option:selected").val(); 
  	$('#DepartureDate').val(iDate);
    *-/	
  	
  	
  	var errMsg = new Array();
  	var today = new Date();
  	var today_date = today.getDate();
  	var today_month = today.getMonth();
  	var today_year = today.getFullYear();
  	var arr_date = $("#day option:selected").text();
  	var arr_month = $("#my option:selected").text().substr(0,3); 
  	var arr_year = $("#my option:selected").text();
  	var arr_start = ( $("#my option:selected").text().length - 4);
  	var arr_year = $("#my option:selected").text().substr(arr_start,4); 
  	arr_month = monthToNum(arr_month); 
  	
  	var ret_date = $("#r_day option:selected").text();
  	var ret_month = $("#r_my option:selected").text().substr(0,3); 
  	//substring 
  	//var ret_year = $("#r_my option:selected").text().substr(-4);
  	var ret_year = $("#r_my option:selected").text();
  	var ret_start = ( $("#r_my option:selected").text().length - 4);
  	var ret_year = $("#r_my option:selected").text().substr(ret_start,4); 
  	ret_month = monthToNum(ret_month);
     	
  	var today_num = dateToNum(today_date,today_month,today_year);
  	var arr_num = dateToNum(arr_date,arr_month,arr_year);
  	var ret_num = dateToNum(ret_date,ret_month,ret_year);
  	
  	//check if return date is before arrival date
  	if (ret_num < arr_num)	{
  		errMsg[errMsg.length] = errPReturnBeforeArrive;
  	}
  	//check if arrival date is before today
  	if (arr_num < today_num)	{
  		errMsg[errMsg.length] = errPBeforeToday;
  	}
	
		//check min stay days at respective destinations
  	minDays = setMinDays();
  	if (!isMinDays(arr_num,ret_num,minDays))	{
  	   minDays = Number(minDays)+ Number(1);
  	   errMsg[errMsg.length] = errPMinDays[0] + minDays + ((minDays<=1)?errPMinDays[1]:errPMinDays[2]);
  	}
  	
  	//check how many days ahead you need to book at respective destinations
  	daysAhead = setDaysAhead();
  	if (!isMinDaysAhead(today_num,arr_num,daysAhead))	{
  		errMsg[errMsg.length] = errPDaysAhead[0] + daysAhead + ((daysAhead<=1)?errPDaysAhead[1]:errPDaysAhead[2]);
  	}
  	
  	//check maximum stay days
  	if($("#Location option"))
     		selloc = $("#Location option:selected").val();
  	else
     		selloc = $("#Location").val();
     
  	if (selloc != "DRS")	
  		maxDays = 99;
  	else
  		maxDays = 28;
	
  	var overMaxDays = maxDays + 1;
  	if (!isWithinMaxDays(arr_num,ret_num,maxDays))	{
  		errMsg[errMsg.length] = errPMaxDays[0] + maxDays + errPMaxDays[1] + overMaxDays + errPMaxDays[2];
  	}
  	var length = errMsg.length;
  	
  	//send out messages if any
  	if (length != 0)	{
  		var message = "";		
  		for (var x=0;x<length;x++)	{
  			if (x>0)	{
  				message += "\n";
  			}
  			message += errMsg[x];
  		}
  		alert(message);
  		return false;
  	} else	{
  		saveFormInfo("parking");
  		return true;
  	}
  }); //form.onSubmit
  
  
  $('#hotel_search').submit(function(skipSaveInfo){
	//var frm = document.hotel_search;
	var FormDD = $("#dd option:selected").text();
	var FormMY = $("#hotel_my option:selected").text();
	var iDate = $("#dd option:selected").val() + $("#hotel_my option:selected").val(); 
	$('#hotel_ArrivalDate').val(iDate);
	
	    
	var errMsg = "";
	var today = new Date();
	var today_date = today.getDate();
	var today_month = today.getMonth();
	var today_year = today.getFullYear();
		
	var stay_date = $("#dd option:selected").text();
	var stay_month = $("#hotel_my option:selected").text().substr(0,3);
	var stay_year = $("#hotel_my option:selected").text();
	var stay_start = ( $("#hotel_my option:selected").text().length - 4);
	var stay_year = $("#hotel_my option:selected").text().substr(stay_start,4); 
	
	stay_month = monthToNum(stay_month);
	 
	var today_num = dateToNum(today_date,today_month,today_year);
	var stay_num = dateToNum(stay_date,stay_month,stay_year);
	if (stay_num < today_num)	{
		errMsg += errHBeforeToday;
	}
	if (errMsg != "")	{
		alert(errMsg);
		return false;
	}
	else	{
		if (!skipSaveInfo)	{
			saveFormInfo("hotels");
		}
		return true;
	}
	});
	Unused after new embedded forms */	
}); // doc.onLoad



function monthToNum(mName)	{
	mName = mName.substr(0,3).toUpperCase(); 
	var months = new Array("JAN","FEB","MÄR","APR","MAI","JUN","JUL","AUG","SEP","OKT","NOV","DEZ");
	for (i=0;i<months.length;i++)	{
		if (mName == months[i])	{ 
			return (i.toString());
		}
	}
}

function dateToNum(day,month,year)	{
	day = day.toString(10);
	month = month.toString(10);
	year = year.toString(10);
	
	if (day.length < 2)	{
		day = "0" + day;
	}
	if (month.length < 2)	{
		month = "0" + month;
	}
	if (year.length == 2)	{
		year = "20" + year;
	}
	var rDate = year+month+day;
	
	return parseInt(rDate,10);
}


function setMinDays()	{
	
	if($("#Location option")) 
    	cpCode = $("#Location option:selected").val();
	else
   		cpCode = $("#Location").val();
	
	for (i=0;i<=carParkMinDaysCodes.length;i++)	{
		if (cpCode.toUpperCase() == carParkMinDaysCodes[i])	{ 
			return (carParkMinDays[i]);
		}
	}
	return 0;
}

function isWithinMaxDays(arrDate,retDate,maxDays) {
	arrDate = arrDate.toString();
	retDate = retDate.toString();
	
	arrDate = new Date(arrDate.substr(0,4),arrDate.substr(4,2),arrDate.substr(6,2));
	retDate = new Date(retDate.substr(0,4),retDate.substr(4,2),retDate.substr(6,2));
	var dayDiff = (retDate.getTime() - arrDate.getTime()) / 86400000;
	return (dayDiff <= maxDays)?true:false;
}

function setDaysAhead()	{
	if($("#Location option")) 
    	cpCode = $("#Location option:selected").val();
	else
   		cpCode = $("#Location").val();
	
	for (i=0;i<=carParkMinDaysAheadCodes.length;i++)	{
		if (cpCode.toUpperCase() == carParkMinDaysAheadCodes[i]){
			return carParkMinDaysAhead[i];
		}
	}
	return 0;
}

function isMinDaysAhead(todayDate,arrDate,minDaysAhead)	{
	todayDate = todayDate.toString();
	arrDate = arrDate.toString();
	arrDate = new Date(arrDate.substr(0,4),arrDate.substr(4,2),arrDate.substr(6,2));
	todayDate = new Date(todayDate.substr(0,4),todayDate.substr(4,2),todayDate.substr(6,2));
	var dayDiff = (arrDate.getTime() - todayDate.getTime()) / 86400000;
	return(dayDiff >= minDaysAhead || minDaysAhead == 0)?true:false;
}

function isMinDays(arrDate,retDate,minDays)	{
	arrDate = arrDate.toString();
	retDate = retDate.toString();
	arrDate = new Date(arrDate.substr(0,4),arrDate.substr(4,2),arrDate.substr(6,2));
	retDate = new Date(retDate.substr(0,4),retDate.substr(4,2),retDate.substr(6,2));
	var dayDiff = (retDate.getTime() - arrDate.getTime()) / 86400000;
	
	return(dayDiff >= minDays || minDays == 0)?true:false;
}

function writeinfo() {
	if($("#Location option")) 
    	selloc = $("#Location option:selected").val();
	else
   		selloc = $("#Location").val();
   		
   			
	if(selloc == "DUS") {
		WriteLayer('info',null,'D&uuml;sseldorf Flughafen Parken<br>Mindestparkdauer von 5 Tagen<br>Vorausbuchungsfrist von 5 Tagen')
	}
	if(selloc == "FRA") {
		WriteLayer('info',null,'Frankf&uuml;rt Flughafen Parken<br>Mindestparkdauer von 3 Tagen')
	}
	if(selloc == "MUC") {
		WriteLayer('info',null,'M&uuml;nchen Flughafen Parken<br>Mindestparkdauer von 4 Tagen')
	}
	if(selloc == "SXF") {
		WriteLayer('info',null,'Berlin Sch&ouml;nefeld Flughafen Parken<br>Mindestparkdauer von 5 Tagen<br>Vorausbuchungsfrist von 2 Tagen')
	}
	if(selloc == "SZG") {
		WriteLayer('info',null,'Salzburg Flughafen Parken<br>Mindestparkdauer von 4 Tagen<br>Vorausbuchungsfrist von 5 Tagen')
	}
	if(selloc == "LEJ") {
		WriteLayer('info',null,'Leipzig Flughafen Parken<br>Mindestparkdauer von 8 Tagen<br>Vorausbuchungsfrist von 2 Tagen')
	}
	if(selloc == "TXL") {
		WriteLayer('info',null,'Berlin Tegel Flughafen Parken<br>Mindestparkdauer von 3 Tagen')
	}
}

function days_between(date1, date2) {
  // The number of milliseconds in one day
  var ONE_DAY = 1000 * 60 * 60 * 24;
  // Convert both dates to milliseconds
  var dateA = new Date();
  var dateB = new Date();
  dateA.setTime(Date.parse(date1.substr(3,2)+', '+date1.substr(0,2)+' 20'+date1.substr(6,2)+' 12:00:00'));
  dateB.setTime(Date.parse(date2.substr(3,2)+', '+date2.substr(0,2)+' 20'+date2.substr(6,2)+' 12:00:00')); 
  var dateA = dateA.getTime();
  var dateB = dateB.getTime();
  // Calculate the difference in milliseconds
  var difference_ms = Math.abs(dateA - dateB);
  // Convert back to days and return
  return Math.round(difference_ms/ONE_DAY);
}

function saveFormInfo(frmToSave)	{
	var startSel = 0;
	var endSel = 0;
	if (frmToSave == "parking")	{
		var frm = document.advanced;
	}
	else if (frmToSave == "hotels")	{
		var frm = document.hotel_search;
	}
	else if (frmToSave == "parkingNoLoc")	{
		var frm = document.advanced;
		startSel = 1;
	}
	else	{
		return false;
	}
	
	var selectsToSave = frm.getElementsByTagName("select");
	var cookieString = "";
	for (s=startSel;s<(selectsToSave.length-endSel);s++)	{
		if (s!=0)	{
			cookieString += "|";
		}
		cookieString += selectsToSave[s].selectedIndex;
	}
	createCookie(frmToSave,cookieString,30);
}

function createCookie(name,value,days)	{
	if (days)	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "";
		expires="; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
