try {
  document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}

function togglePane(paneGroupId, paneId) {
	if(document.getElementById(paneGroupId)) {
		var paneCollection = document.getElementById(paneGroupId).getElementsByTagName('DIV');
		
		for(var i=0; i<paneCollection.length; i++) {
			paneCollection[i].style.display='none';
		}
	}
	
	if(document.getElementById(paneId)) {
		document.getElementById(paneId).style.display = 'block';
	}
}

function showTab(source, tabId) {
	var tabPanel = source.parentNode.parentNode.parentNode;
	
	for(var i=0; i<99; i++) {
		if(document.getElementById('tab'+i)) {
			document.getElementById('tab'+i).style.display = 'none';
		}
	}
	
	// Get all the ULs that exist in this tab panel control
	var tabButtonList = tabPanel.getElementsByTagName('UL');
	
	// Loop through them to find the one that is the button list
	for(var i=0; i<tabButtonList.length; i++) {
		// Found the button list
		if(tabButtonList[i].className == 'tabButtons') {
			// Find all the buttons in the list
			var tabButtons = tabButtonList[i].getElementsByTagName('LI');
			// Loop through all buttons and set them to be unselected
			for(var y=0; y<tabButtons.length; y++) {
				tabButtons[y].className = '';
			}
			break;
		}
	}
	
	document.getElementById('tab'+tabId).style.display = 'block';
	source.parentNode.className = 'selected';
}

function createMarker(point) {
	var baseIcon = new GIcon();
	baseIcon.iconSize = new GSize(20, 20);
	baseIcon.iconAnchor = new GPoint(9, 10);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
									
	// Create a lettered icon for this point using our icon class
	var customIcon = new GIcon(baseIcon);
	customIcon.image = "/images/icons/map.png";

	// Set up our GMarkerOptions object
	markerOptions = { icon:customIcon };
	var marker = new GMarker(point, markerOptions);
	
	return marker;
}

// getBrowserWidth is taken from The Man in Blue Resolution Dependent Layout Script
// http://www.themaninblue.com/experiment/ResolutionLayout/
function getBrowserWidth(){
	if (window.innerWidth){
		return window.innerWidth;}	
	else if (document.documentElement && document.documentElement.clientWidth != 0){
		return document.documentElement.clientWidth;	}
	else if (document.body){return document.body.clientWidth;}		
		return 0;
}

// dynamicLayout by Kevin Hale
function dynamicLayout(){
	// Does this page have the correct classes
	if(document.getElementById('pageBack')) {
		var browserWidth = getBrowserWidth();
		var page = document.getElementById('pageBack');
		
		//Load Thin CSS Rules
		if (browserWidth < 1200){
			page.className = 'pageThin';
		}
		else {
			page.className = 'pageWide';
		}
	}
}

function load() {
	onEvent.add(window, 'resize', dynamicLayout);
	dynamicLayout();
	
	if (document.getElementById("nav"))
	{
		navMenu.setup(document.getElementById('nav')); 
	}

	if(isDefined(window, 'sifrLoaded')) {
		
		/*var headingElement = document.getElementById('Heading');
		//var channelTitleLabel = document.getElementById('channelTitleLabel');
		
		var indie2 = new Font('indie.swf');
		if (headingElement){
			indie2.replaceElement(headingElement)
		}
		//if (channelTitleLabel){
		//	indie2.replaceElement(channelTitleLabel)
		//}
		
		var indie = new Font('indie.swf', {tags:'h1,h2,h3'});
		indie.replace()*/
		
		var indie = new Font('indie.swf', {
			tags:'h1,h2,h3,h4,h5,h6,span,div',
			classFilter:'yhaFont'
		});
		
		indie.replace();

		
	}
	
	if (document.getElementById("GoogleHostelMap"))
	{
		if (GBrowserIsCompatible()) {
			var map = new GMap2(document.getElementById("GoogleHostelMap"));
			map.addControl(new GSmallMapControl());
			
			drawMap(map);
		}
	}
}

function unLoad() {
	if (document.getElementById("GoogleHostelMap"))
	{
		if (GBrowserIsCompatible()) {
			GUnload();
		}
	}
}

function isDefined(object, variable)
{
	return (typeof(eval(object)[variable]) != 'undefined');
}

// ------------------------------- Drop down menus -----------------------------------------

// Holds information about which menu to hide
var parentMenuOff;
var parentMenuClassOff;
var childMenuOff;
var childMenuClassOff;

//Holds the menu to show after a delay
var parentMenuOn;
var parentMenuClassOn;
var childMenuOn;
var childMenuClassOn;

var menuDelay = 400;

var menuShowDelayTimer;
var childMenuHideDelayTimer;
var parentMenuHideDelayTimer;

var onEvent = {
	add: function(obj,type,fn) {
		if (obj.attachEvent) {
			obj['e'+type+fn] = fn;
			obj[type+fn] = function() { obj['e'+type+fn](window.event); }
			obj.attachEvent('on'+type,obj[type+fn]);
		} else
		obj.addEventListener(type,fn,false);
	},
	remove: function(obj,type,fn) {
		if (obj.detachEvent) {
			obj.detachEvent('on'+type,obj[type+fn]);
			obj[type+fn] = null;
		} else
		obj.removeEventListener(type,fn,false);
	}
}

var navMenu = {
	setup: function(menuElement) {
		if (!$(menuElement)) return;
		
		// Locate all child LI items
		var menuItems = menuElement.getElementsByTagName("li");

		// Loop children
		for (var i=0; i<menuItems.length; i++) {
			var menuItem = menuItems[i];
			
			// Check to see if menunitem has children
			if (menuItem.getElementsByTagName("ul").length > 0) {
				// Attach events
				onEvent.add(menuItem, 'mouseover', function() { navMenu.mouseover(this); });
				onEvent.add(menuItem, 'mouseout', function() { navMenu.mouseout(this); });
			}
		}
	},
	mouseover: function(menuItem) {
		// If top level menu then use the delay
		if(menuItem.parentNode.id=='nav') {
			// Cancel the timer delay that hides menus so it doesn't hide this current one
			if(parentMenuOn == menuItem || parentMenuOn == parentMenuOff) {
				clearTimeout(parentMenuHideDelayTimer);
			}
			parentMenuOn = menuItem
			parentMenuClassOn = menuItem.className+  " hover";
			menuShowDelayTimer = setTimeout("setParentMenuStateOn()", menuDelay);
		}
		else {
			if(childMenuOn == menuItem || childMenuOn == childMenuOff) {
				clearTimeout(childMenuHideDelayTimer);
			}
			childMenuOn = menuItem
			childMenuClassOn = "hover";
			menuShowDelayTimer = setTimeout("setChildMenuStateOn()", menuDelay);
		}
	},
	mouseout: function(menuItem) {
		if(menuItem.parentNode.id=='nav') {
			parentMenuOff = menuItem
			parentMenuClassOff = resetMenuClass(menuItem);
			parentMenuHideDelayTimer = setTimeout("setParentMenuStateOff()", menuDelay);
		}
		else {
			childMenuOff = menuItem
			childMenuClassOff = '';
			childMenuHideDelayTimer = setTimeout("setChildMenuStateOff()", menuDelay);
		}
	}
}

function setParentMenuStateOff() {
	parentMenuOff.className = parentMenuClassOff;
}

function setChildMenuStateOff() {
	childMenuOff.className = childMenuClassOff;
}

function setChildMenuStateOn() {
	if(childMenuOn.className.indexOf("hover") > -1) {
		return;
	}
	
	// Locate all child LI items
	var menuItems = childMenuOn.parentNode.getElementsByTagName("li");

	// Loop children and hide them if jnot current child menu
	for (var i=0; i<menuItems.length; i++) {
		var menuItem = menuItems[i];
		if(menuItem != childMenuOn) {
			menuItem.className = '';
		}
	}

	childMenuOn.className = childMenuClassOn;
}

function setParentMenuStateOn() {
	if(parentMenuOn.className.indexOf("hover") > -1) {
		return;
	}
	
	// Locate all child LI items
	var menuItems = document.getElementById('nav').getElementsByTagName("li");

	// Loop children
	for (var i=0; i<menuItems.length; i++) {
		var menuItem = menuItems[i];
		if(menuItem != parentMenuOn && menuItem.parentNode.id == 'nav') {
			menuItem.className = resetMenuClass(menuItem);
		}
	}
	
	parentMenuOn.className = parentMenuClassOn;
}

function resetMenuClass(menuItem) {
	var oldClass = new String(menuItem.className);
	if(oldClass.indexOf("current") > -1) {
		return 'current';
	}
	else {
		return '';
	}
}
