fcTab={
	tabHash:false,
	tabTitle:'fcDetailTabs', // class name for tab section div and inner tab UL
	tabTop:'fcTabsTop', // link to top of tabs
	tabSelected:'selected', // classname to apply when the tab is selected
	tabPass:'fcTabsPass_', // used to pass in a switch request from a non-tab source

	/* initialise tabs */
	init:function() {
		/* do not proceed if dom not supported */
		if(!document.getElementById || !document.createTextNode){return;}
		fcTab.tabHash = fcTab.checkHash(); // check if a tab is to be preselected

		var ulElem = document.getElementsByTagName('ul');
		for(var i=0, x=ulElem.length; i < x; i++) {
			if(ulElem[i].className.indexOf(fcTab.tabTitle) != -1) {
				// ensure containing element has same classname as the unordered list
				if(ulElem[i].parentNode && (ulElem[i].parentNode.className.indexOf(fcTab.tabTitle) != -1)) {
					fcTab.initTabs(ulElem[i].parentNode, ulElem[i]);
					fcTab.assignSwitchEvents(ulElem[i].parentNode);
				}
			}
		}
	},
	
	/* assigns a switching event to other elements in the tabbed content section */
	assignSwitchEvents:function(elem) {
		var elemArr = elem.getElementsByTagName('*');
		for(var i=0,x=elemArr.length; i<x; i++) {
			if(elemArr[i].className && ( elemArr[i].className.indexOf(fcTab.tabPass) != -1)) {
				fcTab.addEvent(elemArr[i],'click',fcTab.passToSwitchTab,false);
			}
		}
	},

	/* create the tabbed section and apply onclick events */
	initTabs:function(container,listElem){

		var listButtons = listElem.getElementsByTagName('li');
		if(listButtons.length < 1) { return; }
		for(var i=0, x=listButtons.length; i<x; i++) {
			fcTab.addEvent(listButtons[i],'click',fcTab.switchTab,false);
		}
		/* default tab contents closed */
		var tabContents = container.getElementsByTagName('div');

		for(var i=0,x=tabContents.length;i<x;i++) {
			if(tabContents[i].parentNode.className.indexOf(fcTab.tabTitle) != -1) {
				tabContents[i].style.display = 'none';
				/* remove the links to top */
				var tmpLinks = tabContents[i].getElementsByTagName('a')
				for(var inc=0,count=tmpLinks.length; inc<count; inc++) {
					if(tmpLinks[inc].href.indexOf('#'+fcTab.tabTop) != -1) {
						tmpLinks[inc].parentNode.style.display='none';
					}
				}

				// remove main h2 when tabs are in use (h2 remains when js turned off to make navigation easier - allows h2 to exist in wrapper element
				if(tabContents[i].getElementsByTagName('h2').length > 0 && tabContents[i].getElementsByTagName('h2')[0].parentNode == tabContents[i]) {
					tabContents[i].getElementsByTagName('h2')[0].style.display = 'none';
				}
			}
		}
		
		fcTab.setInitialState(container);
	},
	
	/* sets which tab to initially display */
	setInitialState:function(elem){
		var elemArr = elem.getElementsByTagName('li');
		var passElem = elemArr[0];
		if(fcTab.tabHash) {
			for(var i=0,x=elemArr.length; i<x; i++) {
				if(elemArr[i].getElementsByTagName('a')[0] && elemArr[i].getElementsByTagName('a')[0].href.split('#')[1] == fcTab.tabHash) { passElem = elemArr[i]; }
			}
		}
		fcTab.switchTab('',passElem);
		if(fcTab.tabHash) { window.scrollTo(0,(fcTab.getYPos(elem)-10)); }
	},

	/* returns the vertical position of an element on the page */
	getYPos:function (inputElem) {
		var iReturnValue = 0;
		while(inputElem != null) {
			iReturnValue += inputElem.offsetTop;
			inputElem = inputElem.offsetParent;
		}
		return iReturnValue;
	},
	
	/* allows other elements in the page to switch tabs */
	passToSwitchTab:function(e) {

		var obj = (!e ? false : fcGetTargetElem(e));
		if(obj) {
			
			if(obj.className && (obj.className.indexOf(fcTab.tabPass) != -1)) {
				
				var tabPassArr = obj.className.split('_')[1];
				var ulElem = document.getElementsByTagName('ul');

				for(var i=0, x=ulElem.length; i < x; i++) {
					if(ulElem[i].className.indexOf(fcTab.tabTitle) != -1) {
						var liElem = document.getElementsByTagName('li');
						for(var inc=0, count=liElem.length; inc < count; inc++) {
							if(liElem[inc].getElementsByTagName('a')[0] && liElem[inc].getElementsByTagName('a')[0].hash.split('#')[1] == tabPassArr) {
								fcTab.switchTab('',liElem[inc]);
							}
						}
					}
				}
			}
			obj.blur();
		}
		if(e) { fcTab.cancelReturn(e); }
		return false;

	},
	
	
	/* switch to this tab when clicked if not already selected - accepts an event or an element directly as arguments */
	switchTab:function(e,elem) {
		
		var obj = (!e ? (!elem ? false : elem) : fcGetTargetElem(e));
		
		if(obj) {
			// ensure we target the list item level element or return false
			while(obj.nodeName.toLowerCase() != 'li') {
				obj = obj.parentNode;
			}
			if(obj.nodeName.toLowerCase() != 'li') { return false; }
			
			var inc = 0;
			var tmpElem = obj;
			
			// get the tabs for this tab set
			while(tmpElem.parentNode && inc < 20) {
				if(tmpElem.nodeName.toLowerCase() == 'ul' && tmpElem.className.indexOf(fcTab.tabTitle) != -1) { break; }
				tmpElem = tmpElem.parentNode;
				inc++
			}
			
			// get the parent container for this tab set
			var tmpParent = tmpElem.parentNode;
			while(tmpParent.parentNode && inc < 20) {
				if(tmpParent.className.indexOf(fcTab.tabTitle) != -1) { break; }
				tmpParent = tmpParent.parentNode;
				inc++
			}
			
			// set the correct tab to selected
			var tmpChild = tmpElem.getElementsByTagName('li');
			for(var i=0,x=tmpChild.length;i<x;i++) {
				if(tmpChild[i] == obj) { 
					if(obj.className.indexOf(fcTab.tabSelected) == -1) {
						obj.className = (obj.className == '' ? fcTab.tabSelected : ' '+fcTab.tabSelected);
					}
				} else {
					fcTab.setClass(tmpChild[i], tmpChild[i].className.split(' '), fcTab.tabSelected);
				}
			}
			
			// set the correct content to show
			var tmpContents = tmpParent.getElementsByTagName('div');
			for(var i=0,x=tmpContents.length;i<x;i++) {
				
				if(tmpContents[i].parentNode.className.indexOf(fcTab.tabTitle) != -1) {
					tmpContents[i].style.display = 'none';
					for(var inc=0,count=tmpContents[i].getElementsByTagName('a').length; inc<count; inc++) {
						if(tmpContents[i].getElementsByTagName('a')[inc].name == obj.getElementsByTagName('a')[0].hash.split('#')[1]) {
							tmpContents[i].style.display = 'block';
						}
					}
				}
			}
			
			obj.blur();
			if(e) { fcTab.cancelReturn(e); }
		}
		return false;
	},
	
	/* apply the new class to an existing element */
	setClass:function(elem, arr, repStr){
		var newClass = '';
		for(var i=0,x=arr.length; i<x; i++) {
			if(arr[i] != '' && arr[i] != repStr) { newClass += (i==0 ? arr[i] : ' ' + arr[i]); }
		}
		elem.className = newClass;
	},
	
	/* cancel return on events to stop links working as links */
	cancelReturn:function(e){
		if(!e) { e = window.event; }
		e.cancelBubble = true;
		e.returnValue = false;
		if(e.stopPropagation) {
			e.stopPropagation();
			e.preventDefault();
		}		
	},
	
	/* allows initial tab selection to be passed in via url hash */
	checkHash:function(){
		if(location.hash && (location.hash.split('#')[1] != '')) {
			return location.hash.split('#')[1];
		} else {
			return false;
		} 
	},
	
	/* attach event listener from here if addEvent is not defined in the main scripts yet */
	addEvent:function(elem, type, listener, useCapture){
		if (elem.addEventListener) {
			elem.addEventListener(type, listener, useCapture);
			return true;
		} else if (elem.attachEvent) {
			return elem.attachEvent('on' + type, listener);
		} else {
			elem['on' + evType] = fn;
		}
	}
	
}



function someTest(elem){

	return 'elem html = ' + elem.innerHTML;

}


/* find the target element for the event */
function fcGetTargetElem(e){
	var target = (window.event ? window.event.srcElement : (e ? e.target : null));
	if (!target){return false;}
	return target;
}


/* attach event listener from here if addEvent is not defined in the main scripts yet */
//addEvent:function(elem, type, listener, useCapture){
function fcAddEvent(elem, type, listener, useCapture){
	if (elem.addEventListener) {
		elem.addEventListener(type, listener, useCapture);
		return true;
	} else if (elem.attachEvent) {
		return elem.attachEvent('on' + type, listener);
	} else {
		elem['on' + evType] = fn;
	}
}

var fcAssetLevel = '';
/*
function fcCreateLoc() {

	if(!document.getElementById('fcDestinationPage') || !document.getElementById('fcAssetLevel')) { return; }
	fcAssetLevel = document.getElementById('fcAssetLevel').innerHTML;
	
	switch(fcAssetLevel) {
	
		case 'unit':
			//fcCreateLocUnit
			
			if(document.getElementById('fcAccomItinerary') && document.getElementById('fcAccomItinerary').hasChildNodes()) {
			
				var itinArr = document.getElementById('fcAccomItinerary');
				itinArr.className = 'fcAccomItinerary';
				
				var inc=0;
				
				for(var i=0,x=itinArr.childNodes.length; i<x; i++) {
				
					if(itinArr.childNodes[i].nodeName.toLowerCase() == 'li' && itinArr.childNodes[i].parentNode == itinArr) { 
						//itinArr[i]
						//itinArr.childNodes[i].className = 'fcAccomItinDay';
						itinArr.childNodes[i].style.backgroundImage='url(/images/accommodation/itinerary'+(inc+1)+'.gif)';
						inc++;
					}
				}
			}
		break;
		default:
		break;
	}
}
*/












fcBlink = {
	test:function(elem) {
		alert(someTest(elem));
	}
}


fcAddEvent(window, 'load', fcTab.init, false); // add any tab events to the page
/*fcAddEvent(window, 'load', fcCreateLoc, false); // set up location script elements*/

