// Browser Detect Script
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

// Funktion zum erstellen der Kalender
function buildDatepickers(arrivalId, departureId, shortYear) {
	var arrivalObj = document.getElementById(arrivalId);
	var departureObj = document.getElementById(departureId);
	if(!arrivalObj || !departureObj) return;
	
	var time = new Date();
	var now = time.getTime();
	var day = time.getDay();
	var rest = 6-day;
	if (rest <= 0) rest += 7;
	var startDate = now+(1000*60*60*24*rest);
	if (arrivalObj.value == '')
	{
		time.setTime(startDate);
		var newday = ((time.getDate() < 10) ? "0" : "")+(time.getDate());
		var newmonth = ((time.getMonth()+1 < 10) ? "0" : "")+(time.getMonth()+1);
		var newyear = time.getFullYear()+'';
		if (shortYear) newyear = newyear.substr(2);
		arrivalObj.value = newday+'/'+newmonth+'/'+newyear;
	}
	
	var endDate = time.getTime()+(1000*60*60*24*7);
	if (departureObj.value == '')
	{
		time.setTime(endDate);
		var newday = ((time.getDate() < 10) ? "0" : "")+(time.getDate());
		var newmonth = ((time.getMonth()+1 < 10) ? "0" : "")+(time.getMonth()+1);
		var newyear = time.getFullYear()+'';
		if (shortYear) newyear = newyear.substr(2);
		departureObj.value = newday+'/'+newmonth+'/'+newyear;
	}
	
	var dateFormat = 'dd/mm/yy';
	if (shortYear) dateFormat = 'dd/mm/y';
	
	var dates = $('#'+arrivalId+', #'+departureId).datepicker({
		showWeek: true,
		dateFormat: dateFormat,
		showOn: "both",
		buttonImage: "../layout/images/icons/calendar.gif",
		buttonImageOnly: true,
		buttonText: '',
		numberOfMonths: 1,
		showButtonPanel: false,
		showOtherMonths: true,
		selectOtherMonths: true,
		minDate: "+0D",
		maxDate: "+3Y",
		duration: 0,
		onSelect: function(selectedDate) {
			if (this.id.search(/arrival/) != -1)
			{
				var d = getDateFromString(selectedDate);
				$('#'+departureId).datepicker('setDate', new Date(d[2], d[1], d[0]+7));
				$('#'+departureId).datepicker('option', 'minDate', new Date(d[2], d[1], d[0]+1));
			}
		}
	});
	$.datepicker.setDefaults($.datepicker.regional[la]);
}

// Funktion zum parsen einer String-Datumsangabe
function getDateFromString(datestring) {
	if (typeof(datestring) != 'string' || datestring == '')
	{
		return false;
	}
	var value = datestring.split('/');
	if (value.length != 3)
	{
		return false;
	}
	if (value[0].substr(0,1) == '0')
	{
		var day = parseInt(value[0].substr(1,1));
	}
	else
	{
		var day = parseInt(value[0]);
	}
	if (!isFinite(day) || day < 1 || day > 31)
	{
		return false;
	}
	if (value[1].substr(0,1) == '0')
	{
		var month = parseInt(value[1].substr(1,1))-1;
	}
	else
	{
		var month = parseInt(value[1])-1;
	}
	if (!isFinite(month)|| month < 0 || month > 11)
	{
		return false;
	}
	if (value[2].length == 2)
	{
		value[2] = '20'+value[2];
	}
	var year = parseInt(value[2]);
	if (year < 100)
	{
		year += 2000;
	}
	if (year <  1900 || year > 3000)
	{
		return false;
	}
	return new Array(day,month,year);
}

function menuHover(id)
{
	// auf IE6 prüfen
	if (BrowserDetect.browser != 'Explorer' || BrowserDetect.version != 6) return;
	var obj = document.getElementById(id);
	if (!obj) return false;
	var liobjs = obj.getElementsByTagName('li');
	if (!liobjs || liobjs.length <= 0) return;
	for (var i = 0; i < liobjs.length; i++)
	{
		var elem = liobjs[i].getElementsByTagName('UL');
		if (elem && elem[0])
		{
			liobjs[i].onmouseover = function()
			{
				var elem = this.getElementsByTagName('UL')[0].style.visibility = 'visible';
			}
			liobjs[i].onmouseout = function()
			{
				var elem = this.getElementsByTagName('UL')[0].style.visibility = 'hidden';
			}
		}
	}
}

function setMenuStatus(id)
{
	var obj = document.getElementById(id);
	if (!obj) return false;
	var href = window.location.href.split('/');
	var href = href[href.length-1];
	var aobjs = obj.getElementsByTagName('a');
	for (var i in aobjs)
	{
		if (!aobjs[i] || !aobjs[i].href) continue;
		var thishref = aobjs[i].href.split('/');
		thishref = thishref[thishref.length-1];
		if (thishref == href)
		{
			aobjs[i].className = 'active';
			var subliobj = aobjs[i].parentNode.parentNode;
			while (subliobj.parentNode)
			{
				if (subliobj.tagName.toLowerCase() != 'li')
				{
					subliobj = subliobj.parentNode;
				} else if (!subliobj || subliobj.tagName.toLowerCase() != 'li') {
					 return;
				} else {
					subliobj.getElementsByTagName('a')[0].className = 'open';
					break;
				}
			}
		}
	}
}

function setMenuDropUp(id, itemHeight, additionalHeight)
{
	var obj = document.getElementById(id);
	if (!obj) return false;
	var ulobjs = obj.getElementsByTagName('ul');
	if (!ulobjs || ulobjs.length <= 0) return;
	var mainul = ulobjs[0];
	for (var i = 0; i < mainul.childNodes.length; i += 1)
	{
		if (!mainul.childNodes[i] || !mainul.childNodes[i].tagName) continue;
		if (mainul.childNodes[i].tagName.toLowerCase() == 'li')
		{
			var ulobjs = mainul.childNodes[i].getElementsByTagName('ul');
			if (!ulobjs || ulobjs.length <= 0) continue;
			var ulobj = ulobjs[0];
			var items = 0;
			for (var a = 0; a < ulobj.childNodes.length; a += 1)
			{
				if (!ulobj.childNodes[a] || !ulobj.childNodes[a].tagName) continue;
				if (ulobj.childNodes[a].tagName.toLowerCase() == 'li')
				{
					items += 1;
				}
			}
			ulobj.style.marginTop = '-'+(itemHeight*items+additionalHeight)+'px';
		}
	}
}
