// $Date: 2008/06/30 04:02:08 $
// $Name: ukconcept_v1_r67 $
// $Revision: 1.3 $
// $State: Exp $

function lp_changeSelectedSubNav(area) {
    // reset other sections
    var navSection = ("nav_" + area);
    var divSection = ("section_" + area);

    var aAnchors = document.getElementsByTagName( "li" )
    var nAnchors = aAnchors.length;
    var eAnchor;
    for( var i=0; i<nAnchors; i++ )
    {
        eAnchor = aAnchors[ i ];
        if( eAnchor.getAttribute( "lpRelateChange" ) ) {
            var sAnchorID = eAnchor.getAttribute( "id" );
            var sDivSectionID = sAnchorID.replace( "nav_", "section_" );
            var eDivSection = document.getElementById( sDivSectionID );
            eAnchor.className = 'navNonSelectedSubSection';
            if (eDivSection) {
                eDivSection.scrollTop = '0';
                eDivSection.className = 'inactive_section';
                var quirk = eDivSection.scrollTop;
            }
        }
    }

    for( var j=0; j<nAnchors; j++ )
    {
        eAnchor = aAnchors[ j ];
        if( eAnchor.getAttribute( "lpRelateChange" ) ) {
            var sAnchorID = eAnchor.getAttribute( "id" );
            var sDivSectionID = sAnchorID.replace( "nav_", "section_" );
            var eDivSection = document.getElementById( sDivSectionID );
            if (sAnchorID == navSection) {
                eAnchor.className = 'navSelectedSubSection';
                if (eDivSection) {
                    eDivSection.scrollTop = '0';
                    eDivSection.className = 'active_section';
                }
            }
        }
    }

}

function lp_getTagCollection( sType )
{
   return window.oTagCollections ? ( window.oTagCollections[ sType ] || null ) : [];	
}

function setCustomOmnitureValues(){
	var guideName=""
	// Get Url and strip out guide name
	var url=window.location.href;
    var aUrlParts=url.split("/");
	for (n=0;n < aUrlParts.length ;n++ )
	{
		if (aUrlParts[n].indexOf("view-guide")>-1)
		{
			guideName=aUrlParts[n-1];
			break;
		}
	}

	if (guideName != "")
	{
		s.prop2=guideName;
	}
}



/* Javascript for Crumbler - browse-down/selector navigation for travel guides */

/* Global Variables / General stuff */

var sAgent=navigator.userAgent.toLowerCase();
var oSelectedRegion = null;
var oSelectedCountry = null;
var oSelectedCity = null;
var viewMenu;
// Controls "stickiness"
var clearDelay=1500;
// Controls scrolling behaviour
if (sAgent.indexOf('msie')>-1){
	var menuScrollSpeed=5;
	var menuScrollAmt=5;
}else{
	var menuScrollSpeed=2;
	var menuScrollAmt=5;
}
var scrollThreshold=8;
var menuScrollObject;
var menuScrolling;
var menuScrollPos;
var menuScrollMax;
var arrowImg="http://cdn.digitalcity.com/aoluk/travel_portal/lpguides/ch_arrow.gif";


/* Start-up Code */


function menuInit(bTrue){
    lp_addEventHandlers();
}

function lp_addEventHandlers(){
	oRegionsMenu=document.getElementById('menu_1');
	for(var i=0; i<oRegionsMenu.childNodes.length; i++){
       	lp_attachItemEvent(oRegionsMenu.childNodes[i]);
    }
	
	lp_attachMenuEvent(document.getElementById('wrapper_1'));
	lp_attachMenuEvent(document.getElementById('wrapper_2'));
	lp_attachMenuEvent(document.getElementById('wrapper_3'));
	
	lp_attachScrollEvent(document.getElementById('scrollup_2'));	
	lp_attachScrollEvent(document.getElementById('scrolldown_2'));
	lp_attachScrollEvent(document.getElementById('scrollup_3'));	
	lp_attachScrollEvent(document.getElementById('scrolldown_3'));
}


/* Event Handlers (Block 1: FF,Block 2: IE) */

function lp_attachScrollEvent(elem){
	if(elem.addEventListener){
		elem.addEventListener("mouseout",stopMenuScroll,false);
		elem.addEventListener("mouseover",startMenuScroll,false);
	}else{
		elem.attachEvent("onmouseout",stopMenuScroll);
		elem.attachEvent("onmouseover",startMenuScroll);
	}

}
function lp_attachMenuEvent(elem){
	if(elem.addEventListener){
		elem.addEventListener("mouseout",menuMouseOut,false);
		elem.addEventListener("mouseover",menuMouseOver,false);
	}else{
		elem.attachEvent("onmouseout",menuMouseOut);
		elem.attachEvent("onmouseover",menuMouseOver);
	}
}
function lp_attachItemEvent(elem){
	if(elem.addEventListener){
		elem.addEventListener("mouseover",mouseOver,false);
		elem.addEventListener("click",navigate,false);
	}else{
		elem.attachEvent("onmouseover",mouseOver);
		elem.attachEvent("onclick",navigate);
	}
}


function navigate(e){
	
	oSrc=getTarget(e);
	var sUrlDomain=window.location.href.split('/'); 
	sUrlDomain.length=3;
	sUrlDomain=sUrlDomain.join('/');
	navUrl=sUrlDomain+'/'+isHarmonize[0]+'/'
	// via flyouts	
	if(oSelectedRegion != null && oSelectedRegion.destName != ""){
		if(Right(oSrc.parentNode.id,1)==1){
			navUrl=navUrl+getItemPart(oSrc.id,"region")+isHarmonize[1]+'/';	
		}else{
			if(oSelectedCountry != null && oSelectedCountry.destName != ""){
				navUrl=navUrl+oSelectedRegion.destName+isHarmonize[2]+'/'+oSelectedCountry.destName+isHarmonize[1]+'/';
				if(oSelectedCity != null && oSelectedCity.destName != ""){
					navUrl=navUrl+oSelectedCity.destName+'/';
				}
				navUrl=navUrl+'view-guide/overview';
			}	
		}
	// direct access (drop-down style) OR region nav
	}else{
		sRegion=getItemPart(oSrc.id,"region");
		sCity=getItemPart(oSrc.id,"city");
		sCountry=getItemPart(oSrc.id,"country");
		var strMatch = sRegion.match(isHarmonize[2]);
		var strAppend = "";
		if (strMatch!=isHarmonize[2]) {
			var sRegion = sRegion.split("_");
			var sRegion = sRegion[0];
			var strAppend = isHarmonize[2];
		}
		if (sCountry){
			navUrl=navUrl+sRegion+strAppend+'/';
			navUrl=navUrl+sCountry+isHarmonize[1]+'/';
			if(sCity){
				navUrl=navUrl+sCity+'/';
			}
			navUrl=navUrl+'view-guide/overview';
		}else{
			navUrl=navUrl+sRegion;
		}
	}
	window.location=navUrl;
}

// Build a menu
function buildMenu(iSourceId,menuIndex,parentName,regionName){
	deleteRows(menuIndex);
	aValues=getRelatedElements(iSourceId);
	var aMenuItems=new Array();
	aMenuItems=buildArray(aValues,parentName,regionName);
	populateMenu(aMenuItems,'menu_'+menuIndex);
	if(aMenuItems.length > scrollThreshold){
		enableScrolling(menuIndex);
	}else{
		disableScrolling(menuIndex);
	}
}

function buildDropDownMenuRegion(lpRegionId,menuIndex,regionName){
	deleteRows(menuIndex);
	aValues=getRelatedElements(lpRegionId);
	var aMenuItems=new Array();
	var aCityItems=new Array();
	
	aMenuItems=buildArray(aValues);
	nValues=aMenuItems.length;
	for( var j=0; j<nValues; j++)
	{
		temp=getRelatedElements(aMenuItems[j].id);
		var tempArray=new Array();
		tempArray=buildArray(temp,aMenuItems[j].urlName,regionName);
		if(tempArray.length > 0){
			aCityItems=aCityItems.concat(tempArray);
		}
	}

	aCityItems.sort(sortByName);
	
	populateMenu(aCityItems,'menu_'+menuIndex);

	if(aCityItems.length > scrollThreshold){
		enableScrolling(menuIndex);
	}else{
		disableScrolling(menuIndex);
	}
}


function buildDropDownMenuFull(level,menuIndex){

	deleteRows(menuIndex);

	var regionList=new Array();
	regionList=getRegionList();
	if (level=="country"){
		aFullItems=buildFullCountryArray(regionList);
	} else if (level=="city"){
		aFullItems=buildFullCityArray(regionList);
	} else {
		return false;
	}
	
	aFullItems.sort(sortByName);
	
	populateMenu(aFullItems,'menu_'+menuIndex);

	if(aFullItems.length > scrollThreshold){
		enableScrolling(menuIndex);
	}else{
		disableScrolling(menuIndex);
	}
}

function buildFullCityArray(regionList){
	var aValues=new Array();
	var aFullItems=new Array();

	for (var j=0;j<regionList.length;j+=2)
	{
		aValues=getRelatedElements(regionList[j]);
		var tempArray=new Array();
		tempArray=buildArray(aValues,regionList[j+1]);
		if(tempArray.length > 0){
			for (var k=0;k<tempArray.length;k++)
			{
				aCityValues=getRelatedElements(tempArray[k].id);
				tempCityArray=buildArray(aCityValues,tempArray[k].urlName,regionList[j+1])
				aFullItems=aFullItems.concat(tempCityArray);
			}
		}
	}

	return aFullItems;
}

function buildFullCountryArray(regionList){
	
	var aValues=new Array();
	var aFullItems=new Array();

	for (var j=0;j<regionList.length;j+=2)
	{
		aValues=getRelatedElements(regionList[j]);
		var tempArray=new Array();
		tempArray=buildArray(aValues,regionList[j+1]);
		if(tempArray.length > 0){
				aFullItems=aFullItems.concat(tempArray);
		}
	}
	return aFullItems;
}

// Element mouseOver function 
function mouseOver(e){

	oSrc=getTarget(e);

	if(oSrc.parentNode.id=='menu_1'){
		sChildMenu='menu_2';
	    childMenuIndex='2'; 
		if(oSelectedRegion != null){oSelectedRegion.className=oSelectedRegion.className.replace("rollover","");}	
		
	    iSourceId=getItemPart(oSrc.id,"id");
		regionName=getItemPart(oSrc.id,"region");
		parentName="";
		buildMenu(iSourceId,childMenuIndex,parentName,regionName);	
	
		oSrc.className=oSrc.className+" rollover";		
		oSelectedRegion=oSrc;
		oSelectedRegion.destName=getItemPart(oSrc.id,"region");
		showMenu(childMenuIndex);
		doHideMenu('3');
		oSelectedCity=null;


	} else if(oSrc.parentNode.id=='menu_2'){

		sChildMenu='menu_3';
		childMenuIndex='3';
		if(oSelectedCountry != null){oSelectedCountry.className=oSelectedCountry.className.replace("rollover","");}

		oSrc.className=oSrc.className+" rollover";		
		
		iSourceId=getItemPart(oSrc.id,"id");
		regionName=getItemPart(oSrc.id,"region");
   		parentName=getItemPart(oSrc.id,"country");
		buildMenu(iSourceId,childMenuIndex,parentName,regionName);	

		oSelectedCountry=oSrc;
		oSelectedCountry.destName=parentName;

		if(aValues.length>2){
			showMenu('3');
		} else if(oSelectedCountry != null && oSrc.innerHTML==oSelectedCountry.destName){ 
			doHideMenu('3');
			oSelectedCity=null;
		} else {
			doHideMenu('3');
			oSelectedCity=null;
		}

		
	} else if(oSrc.parentNode.id=='menu_3'){
		if(oSelectedCity != null){oSelectedCity.className=oSelectedCity.className.replace("rollover","");}
		oSrc.className=oSrc.className+" rollover";
		oSelectedCity=oSrc;
		oSelectedCity.destName=getItemPart(oSrc.id,"city");

	} else {
		return false;
	}
}

function showDropDown(index){
	if(index==2){
		//alert(oSelectedRegion)
		if(oSelectedRegion==null){
			if (lpRegionId != ""){
				buildMenu(lpRegionId,index,"",sPageRegion);
				showMenu(index);
			}else{
				//buildDropDownMenuFull("country",index)
				//showMenu(index);
			}
		}
	}else if(index==3){
		//alert(oSelectedRegion)
		if(oSelectedRegion==null && oSelectedCountry==null){
            if (lpCountryId != ""){
				buildMenu(lpCountryId,index,lpCountryName,sPageRegion);
				showMenu(index);
            } else if (lpRegionId != ""){
				buildDropDownMenuRegion(lpRegionId,index,sPageRegion);
				showMenu(index);
			} else{
				//buildDropDownMenuFull("city",index)
				//showMenu(index);
			}

		}
	}
}



function menuMouseOver(e){
	oSrc=getTarget(e);
	// Source isn't always menu div
	menuIndex=getMenuIndex(oSrc);
	showMenu(menuIndex);
	viewMenu=1;
}

function menuMouseOut(e){

	oSrc=getTarget(e);
	// Source isn't always menu div
	menuIndex=getMenuIndex(oSrc);
	viewMenu=-1;	
	hideCrumbler();
}




/* Population / Data handling */

function getRelatedElements(id)
{
	var sSelectedValue = id;
	var oRelatedLists = oCategoryDescriptions;
	var sPrefix = oRelatedLists.prefix;
	var sDelimiter = oRelatedLists.delimiter || "|";
	sSelectedValue = ( sPrefix + sSelectedValue );
    var aValues = ( oRelatedLists[  sSelectedValue ] || "" ).split( sDelimiter );
	return aValues;
}

// menuItem object
function menuItem(longName,id,urlName,isParent,parentName,regionName){
	this.longName=longName;
	this.id=id;
	this.urlName=urlName;
	this.isParent=isParent;
	this.parentName=parentName;
	this.regionName=regionName;
}

// build sorted Array function
function buildArray(aValues,parentName,regionName) {
	var aMenuItems=new Array();
	var nValues = aValues.length;
	for( var j=2,k=0; j<nValues; j+=4,k++ ){
		aMenuItems[k]=new menuItem(aValues[ j ],aValues[ j + 1 ],aValues[j+2],aValues[j+3],parentName,regionName);
	}
	aMenuItems.sort(sortByName);
	return aMenuItems;
}

// Custom sort function
function sortByName(a,b){
  if (a.longName<b.longName) return -1;
  if (a.longName>b.longName) return 1;
  return 0;
}

function populateMenu(aMenuItems,menu){

	document.getElementById("menu_"+getMenuIndex(document.getElementById(menu))).style.top=0;
	
	var nValues = aMenuItems.length;     
    // Process menu item objects
	for( var j=0; j<nValues; j++ )
	{
		addElementToMenu(aMenuItems[j],menu);
	}

}

function addElementToMenu(menuItem,menu)
{
	tmpNode=addNode(menu,menuItem.longName,'','menu_item',menuItem.id,menuItem.urlName,menuItem.parentName,menuItem.isParent,menuItem.regionName);
	lp_attachItemEvent(tmpNode);
}

// Add the nodes to the drop-down divs
function addNode(id,label,url,className,i,destName,parentName,isParent,regionName){

	var parentDiv=document.getElementById(id);

	var newDiv=document.createElement("div");

	var newText=document.createTextNode(label);

	if(isParent==1){

		var newImg=document.createElement('img');

		newImg.src=arrowImg;

		newImg.className='child_arrow';

		newDiv.appendChild(newImg);

	}

	newDiv.appendChild(newText);

	parentDiv.appendChild(newDiv);

	newDiv.className=className;

	if(regionName && regionName != ""){
		i=i+"|"+regionName;
	}

	if(parentName && parentName != ""){
		newDiv.id=i+"|"+parentName+"|"+destName
	}else{
		newDiv.id=i+"|"+destName
	}
	
	newDiv.href=url;

	return newDiv

}


/* Scrolling functions */

function enableScrolling(menuIndex){
	oScrollDown=document.getElementById('scrolldown_'+menuIndex);
	oScrollDown.style.visibility='visible';
}

function disableScrolling(menuIndex){
	oScrollDown=document.getElementById('scrolldown_'+menuIndex);
	oScrollDown.style.visibility='hidden';
	oScrollUp=document.getElementById('scrollup_'+menuIndex);
	oScrollUp.style.visibility='hidden';
}

function startMenuScroll(e){
	oSrc=getTarget(e);
	menuIndex=getMenuIndex(oSrc);
	if(oSrc.id.indexOf('down')!=-1){
		sDir='down';
	}else if(oSrc.id.indexOf('up')!=-1){
		sDir='up';
	}else{
		return false;
	}
	menuScroll(menuIndex,sDir);
	sClass=oSrc.className;
	oSrc.className=sClass+" active_scroll"+sDir;
 }

function stopMenuScroll(e){
	clearInterval(menuScrolling);
	sClass=oSrc.className;
	if(sClass.indexOf('active_scrollup')!= -1){
		oSrc.className=sClass.replace(' active_scrollup','');
	}else{
		oSrc.className=sClass.replace(' active_scrolldown','');
	}
}

function menuScroll(id,sDir){

	menuScrollObject=document.getElementById('menu_'+id);

	menuScrollMax = document.getElementById('filter_'+id).offsetHeight-menuScrollObject.offsetHeight;
	
	if(menuScrollMax>0){menuScrollMax=0;}
	menuScrollPos=menuScrollObject.style.top.replace('px','');
	if(menuScrollPos==''||menuScrollPos>=0){menuScrollPos=0;}
	if(menuScrollPos<menuScrollMax){menuScrollPos=menuScrollMax-menuScrollAmt;}
	var scrollThis='doMenuScroll('+id+',"'+sDir+'")';

	menuScrolling=setInterval(scrollThis,menuScrollSpeed);	

	menuScrollObject.style.top=menuScrollPos;

}

function doMenuScroll(id,sDir){

	// Bottom of box
   if((menuScrollPos < menuScrollMax) && (sDir!="up")){

		menuScrollObject.style.top=menuScrollMax;

		stopMenuScroll();
		document.getElementById('scrolldown_'+id).style.visibility='hidden';
		return;
	}
	// Top of box
	if(menuScrollPos > 0){
		stopMenuScroll();
		document.getElementById('scrollup_'+id).style.visibility='hidden';
		document.getElementById('scrolldown_'+id).style.visibility='visible';
		return;

	// Middle of box
	} else {
		document.getElementById('scrollup_'+id).style.visibility='visible';
		document.getElementById('scrolldown_'+id).style.visibility='visible';
	}

	if(sDir=='down'){
		menuScrollPos=parseInt(menuScrollPos)-parseInt(menuScrollAmt);
	} else if(sDir=='up'){
		menuScrollPos=parseInt(menuScrollPos)+parseInt(menuScrollAmt);
	}

	menuScrollObject.style.top=menuScrollPos+'px';

}

/* Visibility */

function showMenu(menuIndex){
	id=getWrapperId(menuIndex);
	try{
		document.getElementById(id).style.visibility='visible';
		if(getBrowser()=='safari'){
			document.getElementById("flashcontent").style.visibility='hidden';
		}
	}catch (e){}		
}

function doHideMenu(menuIndex){
	disableScrolling(menuIndex);
	id=getWrapperId(menuIndex);
	document.getElementById(id).style.visibility='hidden';
	
	if(menuIndex>1){
		deleteRows(menuIndex);
	}
}

function hideMenu(id){
	setTimeout("doHideMenu('"+id+"')",clearDelay);
	
}

function hideCrumbler(){
	setTimeout("doHideCrumbler()",clearDelay);
}

function doHideCrumbler(){
	if(viewMenu < 0){
		for(n=3;n>0;n--){doHideMenu(n);}
		// Also clean up objects (as we no longer _have_ selected values)
		if(oSelectedRegion!=null){oSelectedRegion.className="";}
		oSelectedRegion=null;
		oSelectedCountry=null;
		oSelectedCity=null;
		// Fix for layers over Flash flickering
		if(getBrowser()=='safari'){
			document.getElementById("flashcontent").style.visibility='visible';
		}
	}
}

// Takes menu index value and removes all contents from that menu
function deleteRows(menuIndex){
	var thisDiv = document.getElementById('menu_'+menuIndex);
	while(thisDiv.firstChild){
		thisDiv.removeChild(thisDiv.firstChild);
	}
}

/* Utility Functions */

// Returns either id or destination url name for a given id
function getItemPart(id,part){
	var aIdString=id.split("|");
	if(part=="id"){
		return aIdString[0];
	}else if(part=="region"){
		return aIdString[1];
	}else if(part=="country" && aIdString.length>2){
		return aIdString[2];
	}else if(part=="city" && aIdString.length>3){
		return aIdString[3];
	}else{
		return false;
	}	
}

function getRegionList(){
	var regionList=new Array();
	oRegionsMenu=document.getElementById('menu_1');
	var j=0;
	for(var i=0; i<oRegionsMenu.childNodes.length; i++){
		if((oRegionsMenu.childNodes[i].id != undefined) && (oRegionsMenu.childNodes[i].id.indexOf('|')>-1)){
			regionList[j]=getItemPart(oRegionsMenu.childNodes[i].id,"id");
			regionList[j+1]=getItemPart(oRegionsMenu.childNodes[i].id,"region");
			j+=2;
		}
	}
	return regionList;
}

function getMenuIndex(oItem){
	if(oItem.id.indexOf('wrapper')!=-1 || oItem.id.indexOf('menu')!=-1){
		iMenuIndex=Right(oItem.id,1);
		return iMenuIndex;
	}else{
		oMenu=oItem.parentNode;
		if(oMenu.id.indexOf('wrapper')!=-1 || oMenu.id.indexOf('menu')!=-1){
			iMenuIndex=Right(oMenu.id,1);
			return iMenuIndex;
		}else{
			return false;
		}
	}
}

function getWrapperId(menuIndex){
	sWrapperId='wrapper_'+menuIndex;
	return sWrapperId;
}

function getTarget(e){
	var targ;
	try
	{
		if (e.target){ targ = e.target;}
		else if (e.srcElement) {targ = e.srcElement;}
		if (targ.nodeType == 3) {// defeat Safari bug
			targ = targ.parentNode;
		}
	}
	catch (e){}
	return targ;
}

function Right(str,n){
	if(n<=0){
		return "";
	}

	else if (n > String(str).length){
		return str;
	}
	else{
		var iLen=String(str).length;
		return String(str).substring(iLen,iLen-n);
	}
}


