/* --- JavaScript --- */
/* --- General --- */

function getCurrencyForMenus() {
	var myCurrency = readCookie("currencyint");
	return '?start=1&currency='+myCurrency;
	
}

function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  }
}

/* Cookie functions */
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	//return null;
	return '';
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}


/* --- add functions to onload event: addLoadEvent(functionName); --- */
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

/* --- createElement() --- */
function createElement(element) {
	if (typeof document.createElementNS != 'undefined') {
		return document.createElementNS('http://www.w3.org/1999/xhtml', element);
	}
	if (typeof document.createElement != 'undefined') {
		return document.createElement(element);
	}
	return false;
}

/* --- setAttributes() --- */
function setAttributes(element,attr) {	// format attr: [['class','actief'],['href','http://www.test.xx']]
	if (typeof element.setAttributeNS != 'undefined') {
		for (a=0; a<attr.length; a++) {
			element.setAttributeNS('http://www.w3.org/1999/xhtml',attr[a][0],attr[a][1]);
		}
	}
	if (typeof element.setAttribute != 'undefined') {
		for (a=0; a<attr.length; a++) {
			element.setAttribute(attr[a][0],attr[a][1]);
		}
	}
	return false;
}

/* --- add/remove className --- */
function addClass(thisNode,thisClass) {
	removeClass(thisNode,thisClass);	// make sure there won't be any doubles
	thisNode.className += " " + thisClass;
}

function removeClass(thisNode,thisClass) {
	if (thisNode.className.length == (thisClass.length)) {
		thisNode.className = thisNode.className.replace(thisClass,"");
	}
	else {
		thisNode.className = thisNode.className.replace(" " + thisClass,"");
	}
}

/* --- tell CSS JavaScript is on --- */
jsOn = function() {
	var container;
	if (!(container = document.getElementById('container'))) return false;
	addClass(container,"jsOn");
}

/* --- place labels over corresponding form field --- */
initSiteSearch = function() {
	var siteSearch, keywords, keywordsDiv, keywordsLabel;
	if (!(siteSearch = document.getElementById('siteSearch'))) return false;
	if (!(keywordsDiv = siteSearch.getElementsByTagName('div')[0])) return false;
	if (!(keywordsLabel = keywordsDiv.getElementsByTagName('label')[0])) return false;
	if (!(keywords = document.getElementById('keywords'))) return false;
	if (keywords.value === "") addClass(keywordsDiv,"inactive");	// make sure label is only placed on top of input in case it has no value which is not always the case after a reload
	if (document.all && navigator.userAgent.indexOf("Opera") == -1) {	// check if browser is old version of IE (<7), in order to fix a nasty rendering
		var temp = navigator.appVersion.split("MSIE");
		var version = parseFloat(temp[1]);
		if (version < 7) keywords.oldIE = true;
	}
	keywords.onfocus = function() {
		if (this.oldIE) addClass(this.parentNode.parentNode.parentNode,"oldIE");	// set class if browser <= IE6
		removeClass(this.parentNode,"inactive");
	};
	keywords.onblur = function() {
		if (this.value === "") {
			addClass(this.parentNode,"inactive");
		}
	};
	keywordsLabel.onclick = function() {	// needed for Safari
		var keywords = document.getElementById('keywords');
		keywords.focus();
	};
	var siteSearchSubmit;
	if (!(siteSearchSubmit = document.getElementById('siteSearchSubmit'))) return false;
	siteSearchSubmit.onmouseover = function() {
		addClass(this,"jsHover");
	}
	siteSearchSubmit.onmouseout = function() {
		removeClass(this,"jsHover");
	}
}

initNavHover = function() {
	var hoofdMenu, hoofdMenuItems, item;
	if (!(hoofdMenu = document.getElementById('hoofdMenu'))) return false;
	if (!(hoofdMenuItems = hoofdMenu.getElementsByTagName('li'))) return false;
	var images = {};
	for (i=0; i<hoofdMenuItems.length; i++) {
		var knop;
		item = hoofdMenuItems[i];
		if (hasClassName(item,"actief") || !(knop = item.getElementsByTagName('a')[0]) || item.id == "buyNow") continue;
		if (!(knop.image = knop.getElementsByTagName('img')[0])) continue;
		var hoverKnop = new Image();
		hoverKnop.src = appendFileName(knop.image.src,"_a");	// preload image
		images[knop.image.id] = {
			origSrc: knop.image.src,
			hoverSrc: hoverKnop.src
		}
		knop.onmouseover = function() {
			this.image.src = images[this.image.id].hoverSrc;
		}
		knop.onmouseout = function() {
			this.image.src = images[this.image.id].origSrc;
		}
	}
}

function hasClassName(thisNode,thisClass) {
	var nodeClass = thisNode.className;
	if (!thisClass && nodeClass != "") return true;
	if (thisClass && nodeClass.indexOf(thisClass) > -1) {	// match, but not exact
		var nodeClasses = nodeClass.split(/\s+/);	// seperate class names (devided by one or more whitespaces)
		for (c=0; c<nodeClasses.length; c++) {
			if (nodeClasses[c] == thisClass) return true
		}
	}
	return false;
}

function appendFileName(fileName,appendStr) {
	return fileName.substring(0,fileName.lastIndexOf('.')) + appendStr + fileName.substring(fileName.lastIndexOf('.'))
}


/* --- hide subSubMenuItems with class="overflow", insert showAll button and let it pass focus to the first item of the ones it shall reveal --- */
hideOverflow =function() {
	var subSubMenu,toggleOverflow;
	if (!findOverflowItem()) return false;
	document.getElementById('subSubMenu').innerHTML += '<a id="toggleOverflow" href="#"><img src="http://www.interrailnet.com/images/interrail/ico_showoverflow.gif" width="22" height="23" title="Show all items" alt="button: Show all items" /></a>';
	var toggleOverflow = document.getElementById('toggleOverflow');
	toggleOverflow.ico = toggleOverflow.getElementsByTagName('img')[0];
	toggleOverflow.hide = new Image();
	toggleOverflow.hide.src = "http://www.interrailnet.com/images/interrail/ico_hideoverflow.gif";	// preload image
	toggleOverflow.onclick = function(subSubItem) {
		if (toggleOverflow.ico.title == "Show all items") {
			var overflowItem = findOverflowItem().getElementsByTagName('a')[0];
			addClass(this.parentNode,"showAll");
			overflowItem.focus();
			toggleOverflow.showSrc = toggleOverflow.ico.src;
			toggleOverflow.ico.src = toggleOverflow.hide.src;
			toggleOverflow.ico.alt = toggleOverflow.ico.title = "Hide extra items";
		}
		else {
			removeClass(this.parentNode,"showAll");
			toggleOverflow.ico.src = toggleOverflow.showSrc;
			toggleOverflow.ico.alt = toggleOverflow.ico.title = "Show all items";
		}
		return false;
	}
}

function findOverflowItem() {
	var subSubMenu,subSubItems;
	if (!(subSubMenu = document.getElementById('subSubMenu'))) return false;
	if (!(subSubItems = subSubMenu.getElementsByTagName('li'))) return false;
	for (i=0; i<subSubItems.length; i++) {
		if (hasClassName(subSubItems[i],"overflow")) return subSubItems[i];
	}
	return false;
}


/* --- use <select> in travelMenu for navigation --- */
initTravelMenu = function() {
	var travelMenu,selectNav;
	if (!(travelMenu = document.getElementById('travelMenu'))) return false;
	if (!(selectNav = travelMenu.getElementsByTagName('select'))) return false;
	for (s=0; s<selectNav.length; s++) {
		selectNav[s].onchange = function() {
			var goUrl = this.options[this.options.selectedIndex].value;
			if (goUrl && goUrl != "") window.location.href = goUrl;
		}
	}
}


/* --- make the whole banner clickable, using the URL of header link --- */
clickableBanners = function() {
	var bnrs,banners,poll;
	if (!(bnrs = document.getElementById('banners') || document.getElementById('homeRight'))) return false;
	if (!(banners = bnrs.getElementsByTagName('div'))) return false;
	for (b=0; b<banners.length; b++) {
		var banner = banners[b];
		
		if (!hasClassName(banner,"banner") || hasClassName(banner,"containsPoll")) continue;
		var bannerUrl;
		if (!findBannerUrl(banner)) return false;
		banner.myLink = findBannerUrl(banner);
		banner.onclick = function() {
			//var bannerUrl;
			//if (!(bannerUrl = findBannerUrl(banner))) return false;
			//alert(bannerUrl);
			//window.location.href = bannerUrl;
			if (!this.myLink || this.myLink == "") return false;
			window.location.href = this.myLink;
		}
		banner.onmouseover = function() {
			addClass(this,"jsHover");
		}
		banner.onmouseout = function() {
			removeClass(this,"jsHover");
		}
	}
}

function findBannerUrl(banner) {
	if (!(banner.getElementsByTagName('a').length)) return false;
	var bannerUrl = banner.getElementsByTagName('a')[0].href;
	return (bannerUrl) ? bannerUrl : false; 
}


/* --- add submit() to onchange-event of <select> if class="valutaSelect" --- */
initValutaSelect = function() {
	var selects;
	if (!(selects = document.getElementsByTagName('select'))) return false;
	for (s=0; s<selects.length; s++) {
		var valutaSelect = selects[s];
		if (!hasClassName(valutaSelect,"valutaSelect")) continue;
		valutaSelect.onchange = function() {
			var selValue = this.options[this.options.selectedIndex].value;
			if (selValue && selValue != "") this.form.submit();
		}
	}
}


/* --- add buttons that are dependent of JavaScript --- */
jsButtons = function() {
	if (window.print) {
		var functieMenu;
		if (!(functieMenu = document.getElementById('functieMenu'))) return false;
		<!-- mp_trans_textjs_start -->
functieMenu.innerHTML = '<li><a href=\042#\042 onclick=\042window.print();\042>Stampa</a></li>' + functieMenu.innerHTML;
<!-- mp_trans_textjs_end -->
	}
}


/* --- call functions only if the used methods are supported --- */
if (document.getElementById && document.getElementsByTagName) {
	addLoadEvent(jsOn);
	if (cssSupport()) {
		addLoadEvent(initSiteSearch);
		addLoadEvent(hideOverflow);
	}
	addLoadEvent(initTravelMenu);
	addLoadEvent(clickableBanners);
	addLoadEvent(initValutaSelect);
	if (document.images) {
		addLoadEvent(initNavHover);
	}
	addLoadEvent(jsButtons);
}

function cssSupport() {
	if (!document.styleSheets) return false;	// styleSheets object is not supported
	var css = document.styleSheets;
	for (s=0; s<css.length; s++) {
		if (s == 0) {
			if (!(css[0].cssRules || css[0].rules)) return false;	// both methods (cssRules/rules) are not supported
		}
		if (!css[s].disabled) return true;	// at least one of the stylesheets is not disabled
	}
	return false;	// stylesheets are all disabled or not supported at all
}

function goTo(url) {
	document.location.href = url;
}

function checkPoll() {
	var pollForm, questionDivs, errorMsg;

	if (!(pollForm = document.getElementById('PollForm'))) return false;
	if (!(questionDivs = pollForm.getElementsByTagName('div'))) return false;
	errorMsg = "";
	for (i=0; i<questionDivs.length; i++) {
		var questionDiv, answers, answered;
		questionDiv	= questionDivs[i];
		answers = questionDiv.getElementsByTagName('input');
		answered = false;
		if (answers.length > 0 ) {
			if (answers[0].type == 'checkbox') {
				for (teller=0; teller<answers.length; teller++) {
					var answer;
					answer = answers[teller];
					if (answer.checked) answered = true;
				}
			}
			else {
				for (teller=0; teller<answers.length; teller++) {
					if (answers[teller].checked) answered = true;
				}
			}
		}
		if (!answered) errorMsg = "Rispondi a tutte le domande. Grazie.";		
	}
	if (errorMsg.length > 0) {
		alert(errorMsg);
		return false;
	}
	else {
		return true;
	}
}

/* jQuery functions*/
/*jQuery.noConflict();
jQuery(document).ready(function() {
	jQuery("select.styled").change(function() {
		window.location = jQuery(this).val();
	});
});*/
