var jlib = {};



/************************************************************
 * add stylesheet
 */

jlib.addStyleSheet = function (href, media) {
	if (!href) {
		return;
	}
	href = ' href="' + href + '"';
	media = (media) ? ' media="' + media + '"' : '';
	document.writeln('<link rel="stylesheet" type="text/css"' + media + href + '>');
};



/************************************************************
 * switch lang
 */

jlib._findLang = function (str, findFirst) {
	var matches;
	if (str == null) {
		return '';
	}
	matches = str.toString().replace(/^\/+|\/+$/g, '').split('/');
	return (findFirst) ? matches[0] : matches[matches.length - 1];
};


jlib.switchLangInit = function (root) {
	var _findLang, href, dir, els, a, i;
	if (!root) {
		return;
	}
	_findLang = jlib._findLang;
	href = location.href.toString();
	dir = '/' + _findLang(location.pathname, true) + '/';
	els = root.getElementsByTagName('a');
	for (i = els.length - 1; i >= 0; i--) {
		a = els[i];
		if (a.rel.indexOf('switch_lang') > -1) {
			a.href = href.replace(dir, '/' + _findLang(a.href, false) + '/');
		}
	}
};



/************************************************************
 * select menu from ul
 */

jlib._createSelectMenuOption = function (el, val) {
	var option, i;
	if (!el) {
		return null;
	}
	option = document.createElement('option');
	if (typeof el == 'string') {
		option.appendChild(document.createTextNode(el));
	} else {
		option.innerHTML = el.innerHTML;
		option.value = el.href;
		option.isNewWindow = (el.rel && el.rel.indexOf('external') > -1);
	}
	return option;
};

jlib._selectMenuChange = function () {
	var option = this.options[this.selectedIndex];
	var href = option.value;
	if (!href) {
		return;
	}
	if (option.isNewWindow) {
		window.open(href, '', '');
	} else {
		location.href = href;
	}
	if (this.blur) {
		this.blur();
	}
	this.selectedIndex = 0;
};

jlib.selectMenuInit = function (root) {
	var _createSelectMenuOption, select, els, i;
	if (!root) {
		return;
	}
	_createSelectMenuOption = jlib._createSelectMenuOption;
	select = document.createElement('select');
	select.id = root.id;
	select.className = root.className;
	select.onchange = jlib._selectMenuChange;
	if (root.title) {
		select.appendChild(_createSelectMenuOption(root.title));
	}
	els = root.getElementsByTagName('a');
	for (i = 0; i < els.length; i++) {
		select.appendChild(_createSelectMenuOption(els[i]));
	}
	select.root = root;
	root.parentNode.replaceChild(select, root);
};

jlib.selectMenuUninit = function (select) {
	var els, i;
	if (!select) {
		return;
	}
	els = select.options;
	for (i = els.length - 1; i >= 0; i--) {
		els[i].showEl = null;
	}
	select.parentNode.replaceChild(select.root, select);
	select.onchange = null;
	select.root = null;
};



/************************************************************
 * image rollover
 */

jlib._rolloverHandler = function (e) {
	var target;
	if (!e) {
		e = window.event;
	}
	target = e.target || e.srcElement;
	if (!target || !target.offSrc || !target.onSrc) {
		return;
	}
	target.src = (e.type == 'mouseover') ? target.onSrc : target.offSrc;
};

jlib.rolloverInit = function (root) {
	var _rolloverHandler, els, img, src, preload, i;
	if (!root) {
		return;
	}
	_rolloverHandler = jlib._rolloverHandler;
	els = root.getElementsByTagName('img');
	for (i = els.length - 1; i >= 0; i--) {
		img = els[i];
		src = img.title || img.src;	
		img.removeAttribute('title');
		if (img.className.indexOf('rollover') > -1 && src.indexOf('_off.') > -1) {
			img.offSrc = src;
			img.onSrc = src.replace('_off.', '_over.');
			preload = document.createElement('img');
			preload.src = img.onSrc;
			img.preload = preload;
		
		}
	}
		root.onmouseover = _rolloverHandler;
		root.onmouseout = _rolloverHandler;
};

jlib.rolloverUninit = function (root) {
	var els, img, i;
	if (!root) {
		return;
	}
	els = root.getElementsByTagName('img');
	for (i = els.length - 1; i >= 0; i--) {
		img = els[i];
		if (img.preload) {
			img.src = img.offSrc;
			img.preload = null;
		}
	}
	root.onmouseover = null;
	root.onmouseout = null;
};



/************************************************************
 * image submit rollover
 */

/* for image rollover for input type of submit */
jlib.imageButtonRolloverInit = function (root) {
	var _rolloverHandler, inputs, input, src, preload, i;
	if (!root) {
		return;
	}
	_rolloverHandler = jlib._rolloverHandler;
	inputs = root.getElementsByTagName('input');
	for (i = inputs.length - 1; i >= 0; i--) {
		input = inputs[i];
		src = input.src;
		if (input.className.indexOf('rollover') > -1 && src.indexOf('_off.') > -1) {
			input.offSrc = src;
			input.onSrc = src.replace('_off.', '_over.');
			input.onmouseover = _rolloverHandler;
			input.onmouseout = _rolloverHandler;
		}
	}
};

jlib.imageButtonRolloverUninit = function (root) {
	var inputs, input, i;
	if (!root) {
		return;
	}
	inputs = root.getElementsByTagName('input');
	for (i = inputs.length - 1; i >= 0; i--) {
		input = inputs[i];
		input.onmouseover = null;
		input.onmouseout = null;
	}
};



/************************************************************
 * tab list (shop listing)
 */

jlib._tabListOnMouseOverHandler = function (e) {	
	if (this != jlib._active) {
		if (!(this.parentNode.className.indexOf('_over') > -1)) {
			this.parentNode.className = this.parentNode.className + "_over";
		}
	}
};

jlib._tabListOnMouseOutHandler = function (e) {
	if (this != jlib._active) {
		this.parentNode.className = this.parentNode.className.replace("_over", "");
	}
};

jlib._tabListOnClickHandler = function (e) {
	if(jlib._active == null) {
		jlib._active = tab_links[0];
	}
	if (this != jlib._active) {
		jlib._active.parentNode.className = jlib._active.parentNode.className.replace("_active", "");
		jlib._active.div.style.display = 'none';

		jlib._active = this;
		jlib._active.parentNode.className = jlib._active.parentNode.className.replace("_over", "_active");

		jlib._active.div.style.display = 'block';

		hideMap();
		jlib._forceRedraw();
	}
	return false;
};

jlib.tabListInit = function (root) {
	var _tabListOnClickHandler, _tabListOnMouseOverHandler, _tabListOnMouseOutHandler, div, tab_link, i, href, activeElement, preload, j;
	var tab_links = [];
	var image_preload = [];
	if (!root) {
		return;
	}
	_tabListOnClickHandler = jlib._tabListOnClickHandler;
	_tabListOnMouseOverHandler = jlib._tabListOnMouseOverHandler;
	_tabListOnMouseOutHandler = jlib._tabListOnMouseOutHandler;
	
	tab_links = root.getElementsByTagName('a');
	
	for (i = tab_links.length - 1; i >= 0; i--) {
		if (tab_links[i].href.indexOf('#')) {
			tab_link = tab_links[i]; 
			href = tab_link.href.substring(tab_link.href.indexOf('#') + 1);
			div = document.getElementById(href);
			
			tab_link.div = div;
			tab_link.onclick = _tabListOnClickHandler;
			tab_link.onmouseover = _tabListOnMouseOverHandler;
			tab_link.onmouseout = _tabListOnMouseOutHandler;
			tab_link.onfocus = _tabListOnMouseOverHandler;
			tab_link.onblur = _tabListOnMouseOutHandler;
		}
	}
	
	for (j=1 ; j<=6; j++){
		preload1 = document.createElement('img');
		preload1.src = "/images/mall/tabs/row_" + j + "_over.gif";
		image_preload.push(preload1); 	
		preload2 = document.createElement('img');	
		preload2.src = "/images/mall/tabs/row_" + j + "_on.gif";
		image_preload.push(preload2);
	};
	jlib._image_preload = image_preload;
	
	activeElement = tab_links[0]; 
	activeElement.parentNode.className = activeElement.parentNode.className + "_active";
	activeElement.div.style.display = 'block';
	
	jlib._active = activeElement;
	
};



/************************************************************
 * open external pages in new window, popups, print button
 */

jlib._getWindowOpenFunc = function (href, width, height, doScroll) {
	return function () {
		var left = Math.floor((screen.availWidth - width) / 2);
		var top = Math.floor((screen.availHeight - height) / 2);
		window.open(href, '', 'width=' + width + ', height=' + height + ', left=' + left + ', top=' + top + ' resizable=0, scrollbars=' + doScroll);
		return false;
	};
};

jlib.externalLinkInit = function (root) {
	var _getWindowOpenFunc = jlib._getWindowOpenFunc;
	var anchors = root.getElementsByTagName('a');
	var a, rel;

	if (anchors.length < 1) {
		return;
	}

	for(var i = 0; i < anchors.length; i++) {
		a = anchors[i];
		rel = a.rel;
		// not every anchor has rel, so better check if it has rel first
		if (!rel) {
			continue;
		}

		if (rel.indexOf('external') > -1) {
			a.onclick = function() {
				window.open(this.href, '', '');
				return false;
			};
		} else if (rel.indexOf('ontop') > -1) {
			a.onclick = (a.href.indexOf('/mall/floor-plans/') > -1) ? _getWindowOpenFunc(a.href, 902, 472, 0) : _getWindowOpenFunc(a.href, 918, 465, 1);

		} else if (rel.indexOf('fp_popup') > -1) {
			a.onclick = _getWindowOpenFunc(a.href, 900, 470, 0);

		} else if (rel.indexOf('location_map') > -1) {
			a.onclick = function() {
				if (document.getElementById('interactivemap')) {
					openMap();
				} else {
					_getWindowOpenFunc(this.href, 928, 470, 1)();
				}
				return false;
			};

		} else if (rel.indexOf('print') > -1) {
			a.onclick = function() {
				window.print();
				return false;
			};
		}
	}
};

jlib.externalLinkUninit = function (root) {
	var anchors = root.getElementsByTagName('a');
	if (anchors.length < 1) {
		return;
	}
	for(var i = 0; i < anchors[i].length; i++) {
		if(anchors[i] && anchors[i].rel.indexOf('external') > -1) {
			anchors[i].onclick = null;
		}
	}
};



/************************************************************
 * conference room list, apartment suite list, offices list rollover highlight
 */

jlib._roomListOnMouseOverHandler = function (e) {
	if (this != jlib._active) {
		if (!((this.parentNode.className.indexOf('over') > -1) || (this.parentNode.className.indexOf('active') > -1))) {
			this.parentNode.className = this.parentNode.className + "over";
		}
	}
};
jlib._roomListOnMouseOutHandler = function (e) {
	if (this != jlib._active) {
		this.parentNode.className = this.parentNode.className.replace("over", "");
	}
};
jlib.roomListInit = function (root) {
	var roomList_link, i, _roomListOnMouseOverHandler, _roomListOnMouseOutHandler;
	var roomList_links = [];

	if (!root) {
		return;
	}

	_roomListOnMouseOverHandler = jlib._roomListOnMouseOverHandler;
	_roomListOnMouseOutHandler = jlib._roomListOnMouseOutHandler;

	roomList_links = root.getElementsByTagName('a');

	for (i = roomList_links.length - 1; i >= 0; i--) {
		if (roomList_links[i].href.indexOf('#')) {
			roomList_link = roomList_links[i]; 
			roomList_link.onmouseover = _roomListOnMouseOverHandler;
			roomList_link.onmouseout = _roomListOnMouseOutHandler;
			roomList_link.onfocus = _roomListOnMouseOverHandler;
			roomList_link.onblur = _roomListOnMouseOutHandler;
		}
	}
};



/************************************************************
 * conference room seating layout
 */

jlib._seatingLayoutBtnOnClickHandler = function (e) {
	var els, els_j, els_btn, btn, i, j, k, div_layout_btn;
	if (jlib._activeRoomType == null) {
		jlib._activeRoomType = roomType_links[0];
	}

	if (this != jlib._activeRoomType) {
		jlib._activeRoomType.div.className = jlib._activeRoomType.div.className.replace("active", "jshide");
		els = jlib._activeRoomType.parentNode.parentNode.getElementsByTagName('img');
		for (i = els.length-1; i >=0; i--){
			if (els[i].id.indexOf(jlib._activeRoomType.div.id) > -1 ) {
				els[i].className = els[i].className.replace("show", "hide");
			}
		}
		jlib._activeRoomType = this;
		jlib._activeRoomType.div.className = jlib._activeRoomType.div.className.replace("jshide", "active");
		els_j = jlib._activeRoomType.parentNode.parentNode.getElementsByTagName('img');
		for (j = els_j.length-1; j >=0; j--){
			if (els_j[j].id.indexOf(jlib._activeRoomType.div.id) > -1 ) {
				els[j].className = els[j].className.replace("hide", "show");
			}
		}
		div_layout_btn = document.getElementById('layout_btn').getElementsByTagName('img');
		for (k = div_layout_btn.length-1; k>=0; k--) {
			div_layout_btn[k].src = div_layout_btn[k].src.replace("on.", "off.");
		}
		els_btn = document.getElementById('btn_' + jlib._activeRoomType.div.id);
		els_btn.src = els_btn.src.replace('over.', 'on.');
		div_layout_btn = document.getElementById('layout_btn').getElementsByTagName('img');
		hideMap();
	}
	return false;
};
jlib.seatingLayoutBtnInit = function (root) {
	var roomType_link, roomTypeRollOver_link, i, _seatingLayoutBtnOnMouseOverHandler, _seatingLayoutBtnOnMouseOutHandler, _seatingLayoutBtnOnClickHandler, href, div, activeElement, activeElementRollOver;
	var roomType_links = [];
	var roomTypeRollOver_links = [];
	if (!root) {
		return;
	}
	_seatingLayoutBtnOnClickHandler = jlib._seatingLayoutBtnOnClickHandler;
	_seatingLayoutBtnOnMouseOverHandler = jlib._seatingLayoutBtnOnMouseOverHandler;
	_seatingLayoutBtnOnMouseOutHandler = jlib._seatingLayoutBtnOnMouseOutHandler;
	roomType_links = root.getElementsByTagName('a');
	roomTypeRollOver_links = root.getElementsByTagName('a');

	for (i = roomType_links.length - 1; i >= 0; i--) {
		if (roomType_links[i].href.indexOf('#')) {
			roomType_link = roomType_links[i];
			roomTypeRollOver_link = roomTypeRollOver_links[i];
			href = roomType_link.href.substring(roomType_link.href.indexOf('#') + 1);
			div = document.getElementById(href);

			roomType_link.div = div;
			roomTypeRollOver_link.div = div;
			roomTypeRollOver_link.onmouseover = _seatingLayoutBtnOnMouseOverHandler;
			roomTypeRollOver_link.onfocus = _seatingLayoutBtnOnMouseOverHandler;
			roomTypeRollOver_link.onmouseout = _seatingLayoutBtnOnMouseOutHandler;
			roomTypeRollOver_link.onblur = _seatingLayoutBtnOnMouseOutHandler;
			roomType_link.onclick = _seatingLayoutBtnOnClickHandler;
		}
	}
	activeElement = roomType_links[0];
	activeElementRollOver = roomTypeRollOver_links[0];
	jlib._activeRoomType = activeElement;
	jlib._activeRoomTypeRollOver = activeElementRollOver;
};

jlib._seatingLayoutBtnOnMouseOverHandler = function (e) {
	jlib._activeRoomTypeRollOver = this;
	document.getElementById('btn_' + jlib._activeRoomTypeRollOver.div.id).src = document.getElementById('btn_' + jlib._activeRoomTypeRollOver.div.id).src.replace('off.', 'over.');
};

jlib._seatingLayoutBtnOnMouseOutHandler = function (e) {
	document.getElementById('btn_' + jlib._activeRoomTypeRollOver.div.id).src = document.getElementById('btn_' + jlib._activeRoomTypeRollOver.div.id).src.replace('over.', 'off.');
};



/************************************************************
 * show/hide conference/apartment floor plan comparison table
 */

jlib.floorPlanFigureInit = function (root) {
	var fpfigure_link, i, href, _compareRoomOnClickHandler, _floorPlanOnClickHandler; 
	var fpfigure_links = [];
	if (!root || !(document.getElementById('compare_all_rooms'))) {
		return;
	}
	_compareRoomOnClickHandler = jlib._compareRoomOnClickHandler;
	_floorPlanOnClickHandler = jlib._floorPlanOnClickHandler;

	fpfigure_links = root.getElementsByTagName('a');
	for (i = fpfigure_links.length - 1; i >= 0; i--) {
		if (fpfigure_links[i].href.indexOf('#')) {
			fpfigure_link = fpfigure_links[i];			
			href = fpfigure_link.href.substring(fpfigure_link.href.indexOf('#') + 1);
			if (href == "compare_all_rooms"){
				fpfigure_link.onclick = _compareRoomOnClickHandler;
			}
			else if (href == "fp_intro"){
				fpfigure_link.onclick = _floorPlanOnClickHandler;
			}
		}
	}
	_floorPlanOnClickHandler();
	if (document.getElementById('layout_btn')){
		document.getElementById('arrow_boardroom').className = 'show';
		document.getElementById('arrow_classroom').className = 'hide';
		document.getElementById('arrow_theatre').className = 'hide';
		document.getElementById('arrow_u-shaped').className = 'hide';
	}
};

jlib._compareRoomOnClickHandler = function (e) {
	document.getElementById('fp_intro').className = 'hide';
	document.getElementById('fp_figure').className = 'hide';
	if (document.getElementById('fp_layout')) {
		document.getElementById('fp_layout').className = 'hide';
	}
	document.getElementById('compare_all_rooms').className = 'show';

	hideMap();
	jlib._forceRedraw();
	return false;
};
jlib._floorPlanOnClickHandler = function (e) {
	document.getElementById('fp_intro').className = 'show';
	document.getElementById('fp_figure').className = 'show';
	if (document.getElementById('fp_layout')) {
		document.getElementById('fp_layout').className = 'show';
	}
	document.getElementById('compare_all_rooms').className = 'hide';

	if (document.body.className.indexOf('loaded') > -1) {
		hideMap();
	}
	jlib._forceRedraw();
	return false;
};



/************************************************************
 * highlight current suite in apartment floor plan table
 */

jlib.fpCompareTable = function (root) {
	if (!root) {
		return;
	}
	var el, pathArray, highlightItem, thisTable, thisTr, i;
	el = document.getElementById('fp_left_selection');
	
	pathArray = window.location.pathname.split( '/' );
	if (pathArray[2]!='hong-kong-apartments')
	{
		return;
	}
	highlightItem = pathArray[5].replace('.html',''); // get section name 
	thisTable = document.getElementById('table_compare');
	thisTr = thisTable.getElementsByTagName('tr');
	for (i = thisTr.length - 1; i >= 0; i--) {
		thisTr[i].className = thisTr[i].className.replace(highlightItem, 'highlight');
	}
};



/************************************************************
 * use on image in subnav for current page
 */

jlib.subnavInit = function (root) {
	var els, i, subnavHref, section, pathArray, strHref;
	if (!root) {
		return;
	}
	var pathArray = window.location.pathname.split( '/' );
	var strHref = window.location.href;
	section = pathArray[3]; // get section name
	
	try{
		section = section.toLowerCase(); 
	}
	catch(err){}
	
	els = root.getElementsByTagName('a');
	
	for (i = els.length - 1; i >= 0; i--) {
		subnavHref = els[i].href;
		if (subnavHref.indexOf(section) > -1) {
			els[i].firstChild.src = els[i].firstChild.src.replace('_off.', '_on.');
			if (els[i].firstChild.style.filter) {
				els[i].firstChild.style.filter = els[i].firstChild.style.filter.replace('_off.', '_on.');
				els[i].firstChild.className = els[i].firstChild.className.replace('rollover', '');
			}
		}
	}
};



// for flash localconnection
var flashConnectionId = (new Date()).getTime() + '-' + Math.random();
var homeflashswf;
/************************************************************
 * homepage
 */

jlib.homeSectionInit = function (root) {
	var href = location.href.toLowerCase();
	var hasAnchor = (location.href.indexOf('#') > -1);
	if (!root || hasAnchor){
		return;
	}


	var lang, SWFObj;
	var sectionName = '';
	var SWFObj;
	var elementQueryStr = location.search.split('&');
	
	if (href.indexOf('/sc/') > -1){
		lang = 'sc';
		SWFObj = '/media/home_sc.swf';
	}
	else if (href.indexOf('/tc/') > -1){
		lang = 'tc';
		SWFObj = '/media/home_tc.swf';
	}
	else {
		lang = 'en';
		SWFObj = '/media/home.swf';
	}
	
	for (var i=0; i<elementQueryStr.length; i++) {
		if (elementQueryStr[i].indexOf('section=') > -1) {
			sectionName = elementQueryStr[i].split('section=')
			sectionName = sectionName[1];
		}
	}
	var randomnumber = Math.floor(Math.random()*11);
	SWFObj += '?num=' + randomnumber;

	isIE6 = (jQuery.browser.msie && jQuery.browser.version < 7);

	var fo = new SWFObject(SWFObj, "homeflashswf", "100%", "100%", "9.0.28", "#1e1108");
	fo.addParam("scale", "noscale");
	fo.addParam("quality", "high");
	fo.addParam("align", "middle");
	fo.addParam("allowScriptAccess", "sameDomain");
	fo.addParam("wmode", "transparent");
	fo.addParam("menu", "false");
	fo.addVariable("landingurl", "/media/xml/" + lang + "/landing.xml?num=" + randomnumber);
	fo.addVariable("logourl", "/images/global/pp_homepage_logo.png");
	fo.addVariable("imagepath", "/images/global/");
	fo.addVariable("pageID", flashConnectionId);

	if (sectionName.length > 1) {
		fo.addVariable("section", sectionName);
	}

	var hidden = document.getElementById('hidden');
	if(hidden==null)
		fo.write("content");

	homeflashswf = document.getElementById('homeflashswf');
	if (homeflashswf) {
		document.body.className += ' flash';
	}
	else if (sectionName.length > 1) {
		sectionName = sectionName.replace("-", "_");
		window.location.href = '#home_' + sectionName;
	}

	// in ie, the document doesn't receive any click events from the flash
	// so use a little hackery to close the footer dropdown when the user clicks the flash
	if (homeflashswf && homeflashswf.attachEvent) {
		homeflashswf.attachEvent('onactivate', function () { $(document).click(); });
	}

	if (isIE6 && homeflashswf) {
		window.attachEvent('onresize', ie6MinWidthHeight);
		ie6MinWidthHeight();
	}
};

function pauseHome(){
	homeflashswf.pause();
}

function resumeHome(){
	homeflashswf.resume();
}

var isIE6 = false;
var minHeight = 800;
var minWidth = 961;

function setMinHeight(h) {
	minHeight = (h < 800) ? 800 : h + 100;
	document.getElementById('container').style.minHeight = minHeight + 'px';
	if (isIE6) {
		ie6MinWidthHeight();
	}
}

function ie6MinWidthHeight() {
	var container = document.getElementById('container');
	var content = document.getElementById('content');
	var cw, ch, w, h;

	container.style.width = '';
	container.style.height = '';

	cw = container.offsetWidth;
	ch = container.offsetHeight;
	w = ((cw < minWidth) ? minWidth : cw) + 'px';
	h = ((ch < minHeight) ? minHeight : ch) + 'px';

	container.style.width = w;
	content.style.width = w;
	homeflashswf.style.width = w;

	container.style.height = h;
	content.style.height = h;
	homeflashswf.style.height = h;
}



/************************************************************
 * location map
 */

jlib.showMapInit = function (root) {
	var href = location.href.toLowerCase();
	if (!root) {
		return;
	}

	var randomnumber = Math.floor(Math.random()*11);
	var lang, fo;
	if (href.indexOf('/sc/') > -1){
		lang = 'sc';
		fo = new SWFObject("/media/location_map_sc.swf?num=" + randomnumber, "interactivemap", "961", "590", "9.0.28", "#000000");
	}
	else if (href.indexOf('/tc/') > -1){
		lang = 'tc';
		fo = new SWFObject("/media/location_map_tc.swf?num=" + randomnumber, "interactivemap", "961", "590", "9.0.28", "#000000");
	}
	else {
		lang = 'en';
		fo = new SWFObject("/media/location_map.swf?num=" + randomnumber, "interactivemap", "961", "590", "9.0.28", "#000000");
	}
	
	var textMapPrefix = '/' + lang + '/hong-kong-map';

	fo.addParam("scale", "noscale");
	fo.addParam("quality", "high");
	fo.addParam("align", "middle");
	fo.addParam("allowScriptAccess", "sameDomain");
	fo.addParam("wmode", "transparent");
	fo.addParam("menu", "false");
	fo.addVariable("textMapLocationUrl", textMapPrefix + "/pacific-place-location/");
	fo.addVariable("textMapComplexUrl", textMapPrefix + "/pacific-place-complex/");
	fo.addVariable("textMapCityUrl", textMapPrefix + "/from-the-city/");
	fo.addVariable("textMapAirportUrl", textMapPrefix + "/airport-to-pacific-place/");
	fo.addVariable("xmlpath", "/media/xml/" + lang + "/map/location_map.xml?num=" + randomnumber);
	fo.addVariable("pageID", flashConnectionId);
	fo.write("map");
};

//call this function to open map
function openMap() {
	var map = document.getElementById("interactivemap");
	if (!map) {
		return;
	}
	if (map.openMap) {
		map.openMap();
	} else if (map.SetVariable) {
		map.SetVariable('mapHandler', 'open');
	}
}

//call this function to close map
function hideMap() {
	var map = document.getElementById("interactivemap");
	if (!map) {
		return;
	}
	if (map.closeMap) {
		map.closeMap();
	} else if (map.SetVariable) {
		map.SetVariable('mapHandler', 'close');
	}
}

// called by flash when map is fully closed
function mapClose(s) {
	window.onresize = null;
}

// called by flash when map is fully opened
function mapExpand(s) {
	if (s == 'end') {
		window.onresize = repositionMap;
	}
}

var mapProgress;

//mapExpanding function called by flash, argument = 0 - 100 (0:collapsed, 100:expanded)
function mapExpanding(n) {
	mapProgress = n;
	repositionMap();
}
function repositionMap() {
	var winWidth = document.body.clientWidth;
	document.getElementById('map').style.width = (mapProgress == 0) ? '39px' : '961px';
	document.getElementById('map').style.right = ((winWidth > 961) ? (winWidth - 961) / 2 * (mapProgress / 100) : 0) + 'px';
}



/************************************************************
 * resize cinema iframe to fit content
 */

jlib.fixMovieHeight = function (h) {
	var iframe = document.getElementById('cinema_iframe');
	if (!iframe) {
		return;
	}
	iframe.style.height = (h + 1) + 'px';
};



/************************************************************
 * force redraw to fix initial drawing issues
 */

jlib._forceRedraw = function () {
	var body = document.body;
	var footerContainer = document.getElementById('footerContainer');
	var cinema_iframe = document.getElementById('cinema_iframe');

	if (!footerContainer) {
		footerContainer = { style: {} };
	}

	body.style.paddingBottom = '1px'; // redraw bottom gradient in firefox
	footerContainer.style.bottom = '1px'; // update footer position in ie6 and safari 2

	setTimeout(function () {
			body.style.paddingBottom = '';
			footerContainer.style.bottom = '';
			if (cinema_iframe) {
				try {
					cinema_iframe.contentWindow.forceRedraw();
				} catch (e) {}
			}
		}, 0);
};


jlib.formUninit = function (root) {
	if (!root) {
		return;
	}
	jlib.formUninitHandler();
};

/************************************************************
 * onload
 */

window.onload = function () {
	// general
	jlib.showMapInit(document.getElementById('map'));
	jlib.externalLinkInit(document.body);
	jlib.subnavInit(document.getElementById('subnav'));
	jlib.rolloverInit(document.body);
	jlib.switchLangInit(document.getElementById('footernav'));

	// shopping
	jlib.tabListInit(document.getElementById('category'));

	// cinema
	jlib.imageButtonRolloverInit(document.getElementById('movie'));

	// floor plans
	jlib.roomListInit(document.getElementById('fp_left_selection'));
	jlib.seatingLayoutBtnInit(document.getElementById('layout_btn'));
	jlib.floorPlanFigureInit(document.getElementById('fp_content_container'));
	jlib.fpCompareTable(document.getElementById('fp_content_container'));

	// contact us
	jlib.selectMenuInit(document.getElementById('select_contact_form_selection'));
	if (jlib.labelInit) {
		jlib.labelInit(document.getElementById('form_under_title'));
	}
	if (jlib.imageButtonInit) {
		jlib.imageButtonInit(document.getElementById('form_under_title'));
	}
	if (jlib.contactUsInit) {
		jlib.contactUsInit();
	}

	// home
	jlib.selectMenuInit(document.getElementById('select_home_hotels'));
	if (document.getElementById('select_home_hotels')) {
		$('#select_home_hotels').selectbox({
			selectboxWidth: "280",
			listboxMaxSize: "3"
		});
	}
	jlib.homeSectionInit((document.body.className.indexOf('home') > -1)); //jlib.homeSectionInit(document.getElementById('home_new_visions'));
	jlib.selectMenuInit(document.getElementById('homeFooterList'));
	if (document.getElementById('homeFooterList')) {
		$('#homeFooterList').selectbox_up({
			selectboxWidth: "296",
			listboxMaxSize: "10"
		});
	}

	document.body.className += ' loaded';
	jlib._forceRedraw();
};

window.onunload = function () {
	jlib.externalLinkUninit(document.body);
	jlib.rolloverUninit(document.body);
	if (jlib.imageButtonUninit) {
		jlib.imageButtonUninit(document.getElementById('form_under_title'));
	}
	// contact us
	jlib.formUninit(document.getElementById('form_under_title'));
};
