//-------------------------------------------------------------
//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","ERF", "VIE", "BSL", "HHN");
var carParkMinDaysAhead = new Array(4,3,1,1,1);*/
var carParkMinDaysAheadCodes = new Array("DRS","SZG","AMS","ERF","VIE","BSL","HHN");
var carParkMinDaysAhead = new Array(1,0,0,3,1,0,1);
/*
var carParkMinDaysCodes = new Array("ERF","SZG", "HAJ", "BSL");
var carParkMinDays = new Array(7,3,0,2); */
var carParkMinDaysCodes = new Array("ERF","SZG","HAJ","BSL","AMS","DRS"); 
var carParkMinDays = new Array(7,0,0,0,0,0); 

//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 bitte unseren Kundenservice unter 01805 / 99 799 0599 (14 Cent pro Minute aus dem deutschen Festnetz, ggf. abweichende Tarife aus dem Mobilfunknetz) oder per E-Mail : service@abcholidayplus.de");

//-------------------------------------------------------------

$(document).ready(function() {
  	
  $('#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;
	}
  });
  
  $('#hotel_search').submit(function(skipSaveInfo){
   
	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;
	}
	});
});



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 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=/";
}

function WriteLayer(ID,parentID,sText)
{
	if (document.layers) { 
		var oLayer = (parentID)? eval('document.' + parentID + '.document.' + ID + '.document') : document.layers[ID].document;
		oLayer.open();
		oLayer.write(sText);
		oLayer.close();
	} else if (document.all) {
		document.all[ID].innerHTML = sText;
	} else if (parseInt(navigator.appVersion) >= 5 && navigator.appName=="Netscape") {
		document.getElementById(ID).innerHTML = sText;
	}
}
