function importPorts() {
	//Ports is loaded only once so check to see if the layer is registered AND there's NO markers in it
	if(!hasMarkersbyOverlay(tnzoverlays.ports.id)){

		showLoader(tnzoverlays.ports.id);
		runSearch("travel.cfcs.port"
						,"getPorts"
						,handlePorts
						,{lang : lang}
						);
		registerOverlay(tnzoverlays.ports);
	}
}
				
function handlePorts(data,status){
	var overlayid = tnzoverlays.ports.id;
	var searchtype = tnzoverlays.ports.searchtype;
	var markerIcon = tnzoverlays.ports.icon;
	
	if(status == 'success'){
		for(var i = 0; i < data.ROWCOUNT; i++) {

			if(getMarkerbyOverlayID(data.DATA.PORT_ID[i],tnzoverlays.ports.id) == null){

				var thismarker = new GMarker(new GLatLng(data.DATA.LATITUDE[i],data.DATA.LONGITUDE[i]),{title:data.DATA.PORT_NAME[i],icon:markerIcon});
	
				thismarker.markerid = data.DATA.PORT_ID[i];
				thismarker.overlay = overlayid;
				thismarker.searchtype = searchtype;
				thismarker.title = data.DATA.PORT_NAME[i];
				thismarker.url = '/travel';
				if(lang!="en"){
					thismarker.url = thismarker.url+'/'+lang;
				}
				thismarker.url = thismarker.url+data.DATA.URL[i];
				thismarker.detailsloaded = false;

				//Preload image
				$("<img>").attr("src",data.DATA.IMAGE_URL[i]);

				GEvent.addListener(thismarker, 'click', function() {
					document.location = this.url;
				});
				
				GEvent.addListener(thismarker, 'mouseover', function() {
					getPortDetail(this);
				});
				
				if($("#"+overlayid).attr("checked")!=true){
					thismarker.hide();
				}
				
				gMarkers.push(thismarker);	
				
				manager.addMarker(thismarker,minZoom);
			}				
		}
		if(data.ROWCOUNT){hideLoader(overlayid);}
	}else{
		alert('Error occured running Port search');
	}
}

function getPortDetail(marker){
	if(!marker.detailsloaded){
		var sResult = $.TNZCFC.invoke({
				component 			: "travel.cfcs.port",
				method 				: "getPort",
				args 				: {
										port_id:	marker.markerid
										,lang:		lang
										},
				dataType			: "json",
				type 				: "GET",
				serializeQueryByColumns: true,
				resultHandler 		: renderPortDetail,
				errorResultHandler 	: renderPortDetail,
				maintainContext 	: false
				});
	}else{
		openPortWindow(marker)
	}
}

function renderPortIntro(data){
	var thismarker = getMarkerbyTypeID(data.DATA.PORT_ID[0],tnzoverlays.ports.searchtype);
	var title = data.DATA.PORT_NAME[0];
	switch (lang){
		case "ja":
			title = title + ' (<span class="english">'+data.DATA.PORT_NAME_EN[0]+'</span>)'
		break;
		default:
		
	}
	var image = data.DATA.IMAGE_URL[0];
	if(image && image.length){
		image = '<a href="' + thismarker.url + '"><img class="detail" src="' + image + '" border="0"></a>'
	}
	more = '<a href="' + thismarker.url + '">';
	switch (lang){
		case "en":
			more = more + 'Read More';
		break;
		case "de":
			more = more + 'Weiter';
		break;
		case "ja":
			more = more + 'さらに詳しく';
		break;
		case "ko":
			more = more + '더 자세히 읽기';
		break;
		case "zhs":
			more = more + '详情';
		break;
	}
	more = more + '</a>&nbsp;&rsaquo;';
	return [ ''
			,'<div class="introContainer">'
			,'<h1 class="intro">'
				,title
			,'</h1>'
			,'<p class="intro">'
				,image
				,data.DATA.SHORT_DESCRIPTION[0]
			,'</p>'
			,'<p class="intro">'
				,more
			,'</p>'
			,'</div>'
	    	].join('');
}

function renderPortDetail(data,status){
	if(status == 'success'){
		var thismarker = getMarkerbyTypeID(data.DATA.PORT_ID[0],tnzoverlays.ports.searchtype);
		thismarker.intro = renderPortIntro(data);
		thismarker.detailsloaded = true;
		openPortWindow(thismarker)
	}
}

function openPortWindow(marker){
	marker.openInfoWindowHtml(marker.intro,
	{
	maxWidth:		400
	});
}


			