function JLJS_AreaTopicsControl() {
	this.SELECT_BOX = "areaSelectBox";
	this.SELECT_IF = "areaSelectIF";
	this.SELECT_CONTENTS = "areaSelectContents"
	this.SELECT_BTN = "areaSelectBtn";
	this.SELECT_LINK = "areaSelectLink";
	this.WIN_WIDTH = 950;
	
	this.browserInfo = {msid : false, firefox : false, safari : false, netscape : false, version : -1};
	this.loadFlg = false;
}

JLJS_AreaTopicsControl.prototype = {
	
	setupTopTopics : function(code) {
		this.getBrowserInfo();
		
		var aeraSelectBox = document.createElement("div");
		aeraSelectBox.id = this.SELECT_BOX;
		aeraSelectBox.innerHTML = this.getAreaSelectHTML();
		if(this.browserInfo.msie) {
			if(this.browserInfo.version < 5.5) {
				var areaSelectBtn = document.getElementById(this.SELECT_BTN);
				if(areaSelectBtn) {
					areaSelectBtn.style.display = "none";
					return;
				}
			} else if(this.browserInfo.version < 7) {
				var iframe = document.createElement("iframe");
				JLJS.setAttr(iframe, "id", this.SELECT_IF);
				JLJS.setAttr(iframe, "src", "javascript:false;");
				aeraSelectBox.appendChild(iframe);
			}
		}
		document.body.appendChild(aeraSelectBox);
		
		var areaSelectLink = document.getElementById(this.SELECT_LINK);
		if(areaSelectLink) {
			JLJS.addEvent(
				areaSelectLink,
				"click",
				function(e) {
					JLJS_ATopicsCtrl.displayAreaSelect(e.currentTarget);
					e.preventDefault();
				});
			var imgElm = areaSelectLink.firstChild;
			this.preloadImage(imgElm);
			JLJS.addEvent(
				areaSelectLink,
				"mouseover",
				function(e) {
					JLJS_ATopicsCtrl.mouseoverImage(e.currentTarget.firstChild);
				});
			JLJS.addEvent(
				areaSelectLink,
				"mouseout",
				function(e) {
					JLJS_ATopicsCtrl.mouseoutImage(e.currentTarget.firstChild);
				});
		}
	},
	
	changeTopics : function(code) {
		var options = {};
		var date = new Date();
		date.setFullYear(date.getFullYear() + 1);
		var expires = date.toGMTString();
		options.expires = expires;
		options.path = "/en/";
		JLJS_CookieMgr.set("areaAirport_en", code, options);
		if(JLJS_DomTMCtrl_en){	
			JLJS_DomTMCtrl_en.setAreaData(code);
		}
		
		this.closeAreaSelect();
	},
	
	displayAreaSelect : function(target) {
		target.blur();
		var areaSelectBox = document.getElementById(this.SELECT_BOX);
		var imgElm = target.firstChild;
		if(this.getElementStyle(areaSelectBox, "display", "display") == "block") {
			areaSelectBox.style.display = "none";
			JLJS_ATopicsCtrl.clearImage(imgElm);
			return;
		}
		var browserWidth = window.innerWidth || document.documentElement.clientWidth ||	document.body.clientWidth;
		var browserHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
		var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
		var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
		var areaSelectBoxWidth = this.getElementStyle(areaSelectBox, "width", "width");
		if(areaSelectBoxWidth) {
			areaSelectBoxWidth = parseInt(areaSelectBoxWidth.replace("px", ""), 10);
		} else {
			areaSelectBoxWidth = 0;
		}
		var targetOffset = this.getPosition(imgElm);
		var top = targetOffset.top + imgElm.height;
		var left = targetOffset.left;
		if(left + areaSelectBoxWidth - scrollX > Math.min(browserWidth, this.WIN_WIDTH)) {
			var addWidth = 0;
			if(!this.browserInfo.msie) {
				addWidth = 1;
			}
			left = Math.max(scrollX, left - areaSelectBoxWidth + imgElm.width + addWidth, 0);
		}
		areaSelectBox.style.position = "absolute";
		areaSelectBox.style.top = top + "px";
		areaSelectBox.style.left = left + "px";
		areaSelectBox.style.display = "block";
		JLJS_ATopicsCtrl.activeImage(imgElm);
	},
	
	getAreaSelectHTML : function() {
			var areaSelectHTML = '<div class="area01" id="areaSelectContents">\
<div class="area01H clearfix">\
<h2 class="withIcon"><img src="/en/common_rn/img/icon_triangle_005.gif" alt="" height="6" width="8">Please select your nearest airport from the map below.</h2>\
<div class="close"><a href="javascript:void(0);" onclick="JLJS_ATopicsCtrl.closeAreaSelect(); return false;"><img src="/en/common_rn/img/icon_close_001.gif" alt="close" width="61" height="17"></a></div>\
</div>\
<div class="area01C clearfix">\
<p><img src="/en/common_rn/img/pic_areamap_001.gif" alt="" width="610" height="433" usemap="#area"></p>\
</div>\
</div>';
		return areaSelectHTML;
	},
	
	closeAreaSelect : function() {
		document.getElementById(this.SELECT_BOX).style.display = "none";
		var areaSelectLink = document.getElementById(this.SELECT_LINK);
		if(areaSelectLink) {
			var imgElm = areaSelectLink.firstChild;
			JLJS_ATopicsCtrl.clearImage(imgElm);
		}
	},
	
	getPosition : function(elm) {
		var targetEle = elm;
		var pos = {top : 0, left : 0}
		while(targetEle){
			pos.top += targetEle.offsetTop;
			pos.left += targetEle.offsetLeft;
			targetEle = targetEle.offsetParent;
			if((targetEle) && (JLJS.env.isIE)) {
				pos.left += (parseInt(this.getElementStyle(targetEle, "borderLeftWidth", "border-left-width"), 10) || 0);
				pos.top += (parseInt(this.getElementStyle(targetEle, "borderTopWidth", "border-top-width"), 10) || 0);
			}
		}
		if(JLJS.env.isGecko) {
			var bd = document.getElementsByTagName("BODY")[0];
			pos.left += 2 * (parseInt(this.getElementStyle(bd, "borderLeftWidth", "border-left-width"), 10) || 0);
			pos.top += 2 * (parseInt(this.getElementStyle(bd, "borderTopWidth", "border-top-width"), 10) || 0);
		}
		return pos;
	},
	
	getElementStyle : function(targetElm, IEStyleProp, CSSStyleProp) {
		var elem = targetElm;
		if (elem.currentStyle) {
			return elem.currentStyle[IEStyleProp];
		} else if (window.getComputedStyle) {
			var compStyle = window.getComputedStyle(elem,"");
			return compStyle.getPropertyValue(CSSStyleProp);
		}
	},
	
	getBrowserInfo : function() {
		if(JLJS.env.isIE) {
			this.browserInfo.msie = true;
			var version = navigator.userAgent.toLowerCase().match(/msie [0-9.]+/);
			if(version) {
				this.browserInfo.version = version[0].replace(/msie /g, "");
			}
		} else if(JLJS.env.isNN) {
			this.browserInfo.netscape = true;
			var version = navigator.userAgent.toLowerCase().match(/netscape\/[0-9.]+/);
			if(version) {
				this.browserInfo.version = version[0].replace(/netscape\//g, "")
			}
		} else if(JLJS.env.isGecko) {
			this.browserInfo.firefox = true;
			var version = navigator.userAgent.toLowerCase().match(/firefox\/[0-9.]+/);
			if(version) {
				this.browserInfo.version = version[0].replace(/firefox\//g, "");
			}
		} else if(JLJS.env.isSafari) {
			this.browserInfo.safari = true;
			var version = navigator.userAgent.toLowerCase().match(/safari\/[0-9.]+/);
			if(version) {
				this.browserInfo.version = version[0].replace(/safari\//g, "");
			}
		}				
	},
	
	preloadImage : function(imgElm) {
		var status = ["_n.", "_o.", "_s."];
		var defaultStatus = imgElm.src.match(/_n\.|_o\.|_s\./);
		if(defaultStatus) {
			for(var i=0; i<status.length; i++) {
				if(defaultStatus[0] != status[i]) {
					JLJS.preloadImage(imgElm.src.replace(/_n\.|_o\.|_s\./g,  status[i]));
				}
			}
		}
	},
	
	mouseoverImage : function(imgElm) {
		imgElm.src = imgElm.src.replace(/_n\./g, "_o.");
	},
	
	mouseoutImage : function(imgElm) {
		imgElm.src = imgElm.src.replace(/_o\./g, "_n.");
	},
	
	activeImage : function(imgElm) {
		imgElm.src = imgElm.src.replace(/_n\.|_o\./g, "_s.");
	},
	
	clearImage : function(imgElm) {
		imgElm.src = imgElm.src.replace(/_o\.|_s\./, "_n.");
	}	
}

var JLJS_ATopicsCtrl = new JLJS_AreaTopicsControl();

JLJS.addOnload(function(){JLJS_ATopicsCtrl.setupTopTopics();});

JLJS.addEvent(window, "unload", function(){});
