/* Copyright: mindphuel llc 2008 - today */
var poly;
var wxpoly;
var count = 0;
var iconstart;
var icon_url ="pix/";
var tooltip;
var lineColor = "#0000af";
var lineWeight = 3;
var lineOpacity = .8;
var polyOptions = {geodesic:true};
var fillOpacity = .2;
var LeftClickListener;
var TooltipListener;
var toff;
var reserve;
var tripfuel;
var restfuel;
var eet;
var g_core_id;
var w_core_id;
var t_core_id;
var searchCrftTimer;
var searchAutoTimer;
var searchWpTimer;
var bgc;
var recc;

function spliceMarker(n)
{
		markers.splice(n, 1);
		if(markers.length == 0) {
				count = 0;
		} else {
				count = markers[markers.length-1].content;
				drawOverlay();
		}
		recc = 1;
}

function removeMrkrDB(n)
{
		var fp_id = $('uniqid').value;
		var olAjax = new Ajax.Request('src/fp_xdlt_mrkr.php?fp_id='+fp_id+'&mrkr='+n,{
			method: 'get',
			onSuccess:function (resp) {
					var elm = $('mrkrs');
					elm.innerHTML = resp.responseText;
					var numi = parseFloat($('initval').value)-1;
					$('initval').value = numi;
					spliceMarker(n);
					resortMrkrs();
			}
		});
}

function removeThisMarker(n) {
		map.removeOverlay(markers[n]);
		removeMrkrDB(n);
}

function removeMarker(marker)
{
		for(var n = 0; n < markers.length; n++) {
				if(markers[n] == marker) {
						map.removeOverlay(markers[n]);
						removeMrkrDB(n);
						break;
				}
		}
}

function showTooltip(marker) {

		tooltip.className="tooltip";

		if (tooltip.style.display == "block")
		{
				tooltip.style.display = "none";
		}
		else
		{
				tooltip.style.display = "block";
				var currtype = map.getCurrentMapType().getProjection();
				var point= currtype.fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
				var offset= currtype.fromLatLngToPixel(marker.getLatLng(),map.getZoom());
				var anchor = marker.getIcon().iconAnchor;
				var width = marker.getIcon().iconSize.width + 6;
				var height = 10;
				var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y - height));
				pos.apply(tooltip);
				tooltip.innerHTML = "loading...";
				var fp_id = $('uniqid').value;
				var u_id = $('u_id').value;

				for(var n = 0; n < markers.length; n++) {
						if(markers[n] == marker) {
								var elm = $('mrkr_'+n);
								elm.style.backgroundColor = "#ebebbb";
								break;
						}
				}

				GDownloadUrl('src/tooltip.php?fp_id='+fp_id+'&mrkr='+n, function(response, status){
						if (response == null || status == -1 ) {
							tooltip.innerHTML = '<span>ERROR: Cannot display waypoint details.</span>';
						} else {
							tooltip.innerHTML = response;
							var ttcom = $('mrkrTtDsc'+n);
							if (ttcom) ttcom.focus();
						}
				});

				if(typeof(tooltip.style.filter) == "string")
				{
					tooltip.style.filter = "alpha(opacity:70)";
				}

				GEvent.removeListener(LeftClickListener);
				TooltipListener = GEvent.addListener(map, "click", removeTooltip);
		}
}

function reCenter(mrkr) {
	map.panTo(markers[mrkr].getLatLng());
}

function dec2hi(dec){
		Hours = Math.floor(Math.abs(dec));
		Minutes = ((Math.abs(dec) - Hours)*60).toFixed(3);
		return Hours+'°'+Minutes+'&acute;';
}

function checkEnter(e) {
	var cCode;
  if (!e)
    e = window.event;
  if (e.which) {
    cCode = e.which;
  } else if (e.keyCode) {
    cCode = e.keyCode;
  }
	if(cCode == 13) {
			return true;
	}	else {
			return false;
	}
}

function initMarker(map,loadFP,loadTrk) {

		tooltip = document.createElement("div");
		tooltip.className="tooltip";
		map.getPane(G_MAP_MARKER_PANE).appendChild(tooltip);

		var gicons = getGicons();

		markers.length = 0;

		if (loadFP != '-1') {

			for(var i = 0; i < loadFPmrkrsPos.length; i++) {
				var pos = loadFPmrkrsPos[i];
				var lat = loadFPmrkrsLat[i];
				var lng = loadFPmrkrsLon[i];
				var point = new GLatLng(lat,lng);
				loadMrkr(pos,point);
				bounds.extend(point);
				count++;
			}

			var mZL = map.getBoundsZoomLevel(bounds);
			map.setCenter(bounds.getCenter());
			map.setZoom(mZL);
			drawOverlay();

		}

		if (loadTrk!="-1") {
				$('fname').value = loadTrk;
				drawGPX();
		}

		LeftClickListener = GEvent.addListener(map, "click", leftClick);

		GEvent.addListener(map, "mousemove", function(point){
			if (point.lat()>=0) var latNS = 'N'; else var latNS = 'S';
			if (point.lng()>=0) var lonEW = 'E'; else var lonEW = 'W';
			var currentPosition = 'lat: ' + point.lat().toFixed(5) + ', lon: ' + point.lng().toFixed(5) + '&nbsp;&nbsp;&nbsp;<==>&nbsp;&nbsp;&nbsp;'+dec2hi(point.lat())+latNS+', '+dec2hi(point.lng())+lonEW;
			$('currentPosition').innerHTML = currentPosition;
		});

}

function removeTooltip(overlay, point) {
		tooltip.style.display = "none";
		GEvent.removeListener(TooltipListener);
		LeftClickListener = GEvent.addListener(map, "click", leftClick);
		for(var n = 0; n < markers.length; n++) {
				if ($('mrkr_'+n))
					$('mrkr_'+n).style.backgroundColor = "#ffffff";
		}
}

function updtMrkrPos(marker, point)
{
		for(var n = 0; n < markers.length; n++) {
				if(markers[n] == marker) {
						var fp_id = $('uniqid').value;
						var u_id = $('u_id').value;
						var olAjax = new Ajax.Request('src/fp_updt_mrkrPos.php?fp_id='+fp_id+'&u_id='+u_id+'&mrkr='+n+'&lat='+point.lat().toFixed(6)+'&lon='+point.lng().toFixed(6),{
							method: 'get',
							onSuccess:function (resp) {
									$('mrkr_'+n).innerHTML = resp.responseText;
									resortMrkrs();
							}
						});
						recc = 1;
						break;
				}
		}
}

function addCoord(point) {
				count++;
				
				var gicons = getGicons();

				var marker = new GMarker(point, {icon:gicons['std'], draggable:true, dragCrossMove:true});
				map.addOverlay(marker);
				marker.content = count;
				markers.push(marker);

				var mIndex = markers.length-1;
				fireNewMarker(mIndex,point.lat().toFixed(6),point.lng().toFixed(6));

				marker.tooltip = " ";

				GEvent.addListener(marker, "click", function() {
						showTooltip(marker);
				});

				GEvent.addListener(marker, "drag", function() {
					tooltip.style.display= "none";
					drawOverlay();
				});

				GEvent.addListener(marker, "dragend", function(point) {
						updtMrkrPos(marker, point);
				});

				GEvent.addListener(marker, "dblclick", function() {
						tooltip.style.display = "none";
						GEvent.removeListener(TooltipListener);
						LeftClickListener = GEvent.addListener(map, "click", leftClick);

						removeMarker(marker);
				});
				drawOverlay();
				resetSaveFPas();
}

function leftClick(overlay, point) {
		if(point) {
			addCoord(point);
		}
}

function insrtMrkr(pos) {
		var gicons = getGicons();
		var mrkrNext = markers[pos];
		var mrkrPoint = mrkrNext.getLatLng();
		var insrtPos = new GLatLng((mrkrPoint.lat()-(1/(map.getZoom()*map.getZoom()))), (mrkrPoint.lng()- (1/(map.getZoom()*map.getZoom()))));
		var marker = new GMarker(insrtPos, {icon:gicons['std'], draggable:true, dragCrossMove:true});
		map.addOverlay(marker);
		marker.content = count;
		markers.splice(pos,0,marker);

		fireInsrtMarker(pos,insrtPos.lat().toFixed(6),insrtPos.lng().toFixed(6));

		GEvent.addListener(marker, "click", function() {
				showTooltip(marker);
		});

		GEvent.addListener(marker, "drag", function() {
			tooltip.style.display= "none";
			drawOverlay();
		});

		GEvent.addListener(marker, "dragend", function(point) {
						updtMrkrPos(marker, point);
		});

		GEvent.addListener(marker, "dblclick", function() {
				tooltip.style.display = "none";
				GEvent.removeListener(TooltipListener);
				LeftClickListener = GEvent.addListener(map, "click", leftClick);

				removeMarker(marker);
		});

		drawOverlay();
		recc = 1;
}

function insertWp(lat,lon,wp_id) {
		var gicons = getGicons();
		var pos = markers.length;
		var insrtPos = new GLatLng(lat, lon);
		var marker = new GMarker(insrtPos, {icon:gicons['std'], draggable:true, dragCrossMove:true});
		map.addOverlay(marker);
		map.panTo(insrtPos);
		marker.content = pos;
		markers.push(marker);

		fireInsrtWp(lat,lon,wp_id);

		marker.tooltip = " ";

		GEvent.addListener(marker, "click", function() {
				showTooltip(marker);
		});

		GEvent.addListener(marker, "drag", function() {
			tooltip.style.display= "none";
			drawOverlay();
		});

		GEvent.addListener(marker, "dragend", function(point) {
						updtMrkrPos(marker, point);
		});

		GEvent.addListener(marker, "dblclick", function() {
				tooltip.style.display = "none";
				GEvent.removeListener(TooltipListener);
				LeftClickListener = GEvent.addListener(map, "click", leftClick);

				removeMarker(marker);
		});

		drawOverlay();
		recc = 1;
}

function loadMrkr(pos,point) {
		hideMrkrWx();
		var gicons = getGicons();
		var insrtPos = point;
		var marker = new GMarker(insrtPos, {icon:gicons['std'], draggable:true, dragCrossMove:true});
		map.addOverlay(marker);
		marker.content = pos;
		markers.push(marker);

		marker.tooltip = " ";

		GEvent.addListener(marker, "click", function() {
				showTooltip(marker);
		});

		GEvent.addListener(marker, "drag", function() {
			tooltip.style.display= "none";
			drawOverlay();
		});

		GEvent.addListener(marker, "dragend", function(point) {
						updtMrkrPos(marker, point);
		});

		GEvent.addListener(marker, "dblclick", function() {
				tooltip.style.display = "none";
				GEvent.removeListener(TooltipListener);
				LeftClickListener = GEvent.addListener(map, "click", leftClick);

				removeMarker(marker);
		});

}

function zeroPad(num,count){
	var numZeropad = num + '';
	while(numZeropad.length < count) {
		numZeropad = "0" + numZeropad;
	}
	return numZeropad;
}

function m2hi(fraction){
		fraction = fraction.toFixed(2);
		Hours = Math.floor(fraction);
		Minutes = Math.round((fraction - Hours)*60);
		return Hours+':'+zeroPad(Minutes,2);
}

function drawFuelbar(){

		var toff_pix = Math.round(Math.ceil(crft_ffph/6)/crft_tgal*256); 
		var reserve_pix = Math.round(crft_ffph*0.75/crft_tgal*256); /* reserve: 45mins */
		var trip_pix = 256-toff_pix-reserve_pix; /* trip fuel */
		var trip_pix_start = toff_pix;
		var reserve_pix_start = toff_pix-1+trip_pix+1;

		$('toff_pix').style.width = toff_pix+'px';
		$('toff_pix').style.height = '8px';
		$('trip_pix').style.left = trip_pix_start+'px';
		$('trip_pix').style.width = trip_pix+'px';
		$('reserve_pix').style.left = reserve_pix_start+'px';
		$('reserve_pix').style.width = reserve_pix+'px';
}

function setFuelbarmeter(n,fpDist){

		toff = Math.ceil(crft_ffph/6);
		tripfuel = fpDist/crft_tas*crft_ffph;

		restfuel = crft_tgal-toff-tripfuel;

		var fbmarkerpos = Math.max(1,Math.min(256,Math.ceil(256/crft_tgal*(toff+tripfuel))));

		if (n>0) $('fbmarker').style.left = fbmarkerpos+'px';
		$('fuelmeter').innerHTML = restfuel.toFixed(1)+' gallons left in tank';

}

function reverseTrack() {
		markers.reverse();
		var fp_id = $('uniqid').value;
		var olAjax = new Ajax.Request('src/fp_reverse_mrkr.php?fp_id='+fp_id,{
			method: 'get',
			onSuccess:function (resp) {
				$('mrkrs').innerHTML = resp.responseText;
				var numi = $('initval').value;
				numi.value = (numi-1);
				resortMrkrs();
				drawOverlay();
			}
		});
		recc = 1;
}

function drawOverlay() {
		hideMrkrWx();
		hideFcastWx();

		if(poly) { map.removeOverlay(poly); }
		points.length = 0;

		for(i = 0; i < markers.length; i++) {
			points.push(markers[i].getLatLng());
			if (i==0) {

				var sIconUrl = icon_url +"mm_20_red.png";
				markers[i].setImage(sIconUrl) ;
			}
			else {
				var sIconUrl = icon_url +"mm_20_purple.png";
				markers[i].setImage(sIconUrl) ;
			}

		}

		var report= $("report");
		poly = new GPolyline(points, lineColor, lineWeight, lineOpacity, polyOptions);
		var length = poly.getLength()/1852;
		eet = length/crft_tas;

		report.innerHTML = "Total track distance: " + length.toFixed(1) + 'nm, EET: '+m2hi(eet);
		setFuelbarmeter(markers.length,length);

		map.addOverlay(poly);

		if (markers.length > 1) $('takeoff').style.display="block"; else $('takeoff').style.display="none";
}

function getWindowHeight() {
	if (window.self && self.innerHeight) {
		return self.innerHeight;
	}
	if (document.documentElement && document.documentElement.clientHeight) {
		return document.documentElement.clientHeight;
	}
	return 0;
}

function resizeMapNow() {
	var height = getWindowHeight();
	height -= 3;
	var map_height = Math.min(650,height - 100 - 60);
	$('map').style.height = Math.max(250, map_height) + "px";
}

function resizeMap() {
	window.setTimeout("resizeMapNow()", 700);
}

function ChildKiller(killEl) {
		if ($(killEl) != null) {
				var elToKill = $(killEl);
				elToKill.parentNode.removeChild(elToKill);
		}
}

function editColor(elm) {
	elm.style.color = '#4f93cf';
}

function lockColor(elm) {
	elm.style.color = '#1d1d41';
}

function highlight(elm) {
		elm.style.backgroundColor = "#ebebbb";
}

function lowlight(elm) {
		elm.style.backgroundColor = "#ffffff";
}

function deleteContent() {
	var olAjax = new Ajax.Request('src/fp_delete_content.php',{
		method: 'post',
		parameters: {f: $('uniqid').value, u: $('u_id').value },
		onSuccess:function (resp) {
			if (resp.responseText == 1)
				window.location.href = 'flight-plan_'+$('u_id').value+'.html';
		}
	});
}

function stopRcmd(i)
{
	var olAjax = new Ajax.Request('src/fp_stop_recommend.php',{
		method: 'post',
		parameters: {f: $('uniqid').value, u: $('u_id').value, i: i },
		onSuccess:function (resp) {
			$('recResponseBox').innerHTML = resp.responseText;
		}
	});
}

function stopFs(i)
{
	var olAjax = new Ajax.Request('src/fp_stop_flightshare.php',{
		method: 'post',
		parameters: {f: $('uniqid').value, u: $('u_id').value, i: i },
		onSuccess:function (resp) {
			$('recResponseBox').innerHTML = resp.responseText;
		}
	});
}

function delCrft(i)
{
	var olAjax = new Ajax.Request('src/crft_delete.php',{
		method: 'post',
		parameters: {u: $('u_id').value, i: i },
		onSuccess:function (resp) {
			if (resp.responseText == "1")
				window.location.href = 'pilots_'+$('u_id').value+'_'+$('u_id').value+'.html';
			else
				alert(resp.responseText);
		}
	});
}

function resetButton(core_id) {
			clearTimeout(delXTimer);
			if ($('del2'+core_id) != null)
					$('del2'+core_id).style.display = 'none';
			if ($('del1'+core_id) != null)
					$('del1'+core_id).style.display = 'block';
}

function deleteCoreTimeout(core_id) {
		delXTimer = setTimeout(function(){resetButton(core_id)},4000);
}

function delMrkr1(core_id) {
		if (g_core_id!=null) { resetButton(g_core_id); }
		deleteCoreTimeout(core_id);
		var chgEl1 = $('del1'+core_id);
		chgEl1.style.display = 'none';
		var chgEl2 = $('del2'+core_id);
		chgEl2.style.display = 'block';
		g_core_id = core_id;
}

function delMrkr2(core_id) {
		clearTimeout(delXTimer);
		g_core_id = null;
		var marker = markers[core_id];
		removeMarker(marker);
}

function resetDelButton(core_id) {
			clearTimeout(delWpTimer);
			if ($('delWp2'+core_id) != null)
					$('delWp2'+core_id).style.display = 'none';
			if ($('delWp1'+core_id) != null)
					$('delWp1'+core_id).style.display = 'block';
}

function deleteWpTimeout(core_id) {
		delWpTimer = setTimeout(function(){resetDelButton(core_id)},4000);
}

function delWp1(core_id) {
		if (w_core_id!=null) { resetDelButton(w_core_id); }
		deleteWpTimeout(core_id);
		var chgEl1 = $('delWp1'+core_id);
		chgEl1.style.display = 'none';
		var chgEl2 = $('delWp2'+core_id);
		chgEl2.style.display = 'block';
		w_core_id = core_id;
}

function delWp2(core_id) {
		clearTimeout(delWpTimer);
		w_core_id = null;
		var olAjax = new Ajax.Request('src/fp_remove_wp.php?wp='+core_id,{
			method: 'get',
			onSuccess:function (resp) {
						ChildKiller('selWp'+core_id);
			}
		});
}

function addWp(mrkr) {
		var olAjax = new Ajax.Request('src/fp_add_wp.php?fp_id='+$('uniqid').value+'&u_id='+$('u_id').value+'&mrkr='+mrkr,{
			method: 'get',
			onSuccess:function (resp) {
				$('addWp'+mrkr).style.display = 'none';
				if ($('wpSel').style.display=='block') initSearchWp();
			}
		});
}

function hR_1(respText) {
				var parentElm = $('mrkrs');
				var numi = $('initval');
				var numNew = numi.value;
				numi.value = (numNew-1+2);
				var newdiv = document.createElement('div');
				var divIdName = 'mrkr_'+numNew;
				newdiv.setAttribute('id',divIdName);
				parentElm.appendChild(newdiv);
				newdiv.className = 'panelMrkr';
				newdiv.innerHTML = respText;
				resortMrkrs();
}


function fireNewMarker(mrkr,lat,lon) {
		var olAjax = new Ajax.Request('src/fp_add_mrkr.php?fp_id='+$('uniqid').value+'&u_id='+$('u_id').value+'&mrkr='+mrkr+'&lat='+lat+'&lon='+lon+'&wp_src=0&wp_id=0',{
			method: 'get',
			onSuccess:function (resp) {
					hR_1(resp.responseText);
			}
		});
}

function fireInsrtWp(lat,lon,wp_id) {
		var olAjax = new Ajax.Request('src/fp_add_mrkr.php?fp_id='+$('uniqid').value+'&u_id='+$('u_id').value+'&mrkr='+$('initval').value+'&lat='+lat+'&lon='+lon+'&wp_src=1&wp_id='+wp_id,{
			method: 'get',
			onSuccess:function (resp) {
					hR_1(resp.responseText);
			}
		});
}

function fireInsrtMarker(mrkr,lat,lon) {
		var olAjax = new Ajax.Request('src/fp_insert_mrkr.php?fp_id='+$('uniqid').value+'&u_id='+$('u_id').value+'&mrkr='+mrkr+'&lat='+lat+'&lon='+lon+'&wp_src=0&wp_id=0',{
			method: 'get',
			onSuccess:function (resp) {
				var elm = $('mrkrs');
				$('mrkrs').innerHTML = resp.responseText;
				var numi = $('initval');
				var numNew = numi.value;
				numi.value = (numNew-1+2);
				resortMrkrs();
			}
		});
}

function saveFP(neu) {
		var fplabel = "";
		if ($('saveFPlabelVal')) fplabel = $('saveFPlabelVal').value;

		if (neu==1 && fplabel.length==0)
		{
			$('lblSaveAsEr').style.color = "#f00";
			$('saveFPlabelVal').focus();
			return false;
		}
		
		var fp_id = $('uniqid').value;
		var crft_id = $('crft_id').value;
		var initval = markers.length;
		var no_fp = 1;
		var no_trk = 1;

		if (initval>0) {
				var mrkrPos = markers[0].getLatLng();
				var fplat = mrkrPos.lat().toFixed(6);
				var fplon = mrkrPos.lng().toFixed(6);
				no_fp = 0;

		} else {
				var fplat = -1;
				var fplon = -1;
		}

		var permfname = "-1"; 
		if ($('permfname')) permfname = $('permfname').value;
		if (permfname != -1) {
			var orgfname = $('orgfname').value;
			var trklen = $('trklen').value;
			var trkdur = $('trkdur').value;
			var trklat = $('trklat').value;
			var trklon = $('trklon').value;
			no_trk = 0;
		} else {
			var orgfname = "-1";
			var trklen = "";
			var trkdur = "";
			var trklat = "";
			var trklon = "";
		}

		var df = "";
		if (neu==1) df = 'src/fp_saveasnew_mrkrs_v2.php'; else df = 'src/fp_save_mrkrs_2.php';
		if (no_fp == 0 || no_trk == 0) {
			var olAjax = new Ajax.Request(df,{
				method: 'post',
				parameters: { fp_id: fp_id, u: $('u_id').value, permfname: permfname, crft_id: crft_id
										, initval: initval, orgfname: orgfname, trklen: trklen, trkdur: trkdur
										, trklat: trklat, trklon: trklon, fplat: fplat, fplon: fplon, fplabel: fplabel },
				onSuccess:function (resp) {
						$('saveboxbuttons').innerHTML = resp.responseText;
						resetSaveFPas();
						blinkHandler('fptitlehdr');
				}
			});
		} else {
			cancelSave();
		}
}

function resetSaveFPas() {
		if ($('savebox2')) $('savebox2').style.display = "none";
		if ($('saveFPas')) $('saveFPas').style.display = "block";
		if ($('saveFP')) $('saveFP').style.display = "block";
}

function toggleSave() {
	$('savebox2').style.display = "block";
	$('lblSaveAsEr').style.color = "#000";
	$('saveFPlabelVal').value = "";
	$('saveFPas').style.display = "none";
	if ($('saveFP')) $('saveFP').style.display = "none";
	$('saveFPlabelVal').focus();
}

function cancelSave() {
	$('savebox2').style.display = "none";
	$('saveFPas').style.display = "block";
}

function initAuto(o) {
		if (searchAutoTimer>0) clearTimeout(searchAutoTimer);
		searchAutoTimer = setTimeout(function(){searchAuto(o)},300);
}

function searchAuto(o) {
		var sstr = encodeURIComponent($(o).value); var f;
		if ($('f')) f = $('f').value; else f = -1;
		if (sstr.length > 0) {
				var olAjax = new Ajax.Request('src/auto_'+o+'.php',{
					method: 'post',
					parameters: { sstr: sstr, u: $('u_id').value, f: f },
					onSuccess:function (resp) {
						$('ac_content').innerHTML = resp.responseText;
						$('ac_sb').show();
						
						var divOffset = findDivPos($(o));
						var xOff = divOffset[0];
						var yOff = parseFloat(divOffset[1]+24);

						$('ac_sb').style.top  = yOff + 'px';
						$('ac_sb').style.left = xOff + 'px';
						
					}
				});
		} else {
				if ($('ac_sb').style.display=='block') $('ac_sb').hide();
		}
}

function chgSearchSel(elm) {
		if (elm.value!='-1') elm.style.backgroundColor='#ebebbb'; else elm.style.backgroundColor='#fff';
		runSearchRt();
}

function radioValue(rObj) {
		for (var i=0; i<rObj.length; i++) if (rObj[i].checked) return rObj[i].value;
		return false;
}

function skipMy(p) {
		$('my_count').toggle();
		$('my_tgl_w').toggle();
		var olAjax = new Ajax.Request('idx_my_skip.php?u_id='+$('u_id').value+'&p='+p,{
			method: 'get',
			onSuccess:function (resp) {
				$('my').innerHTML = resp.responseText;
			}
		});
}

function startSearchRt(ent,wert) {
		var olAjax = new Ajax.Request('idx_search.php?'+ent+'='+wert+'&u_id='+$('u_id').value,{
			method: 'get',
			onSuccess:function (resp) {
				$('idx_search_frame').innerHTML = resp.responseText;
			}
		});
		$('search_count').toggle();
		$('search_tgl_w').toggle();
}

function initSearchCrft() {
		if (searchCrftTimer>0) clearTimeout(searchCrftTimer);
		searchCrftTimer = setTimeout(function(){searchCrft()},300);
}

function searchCrft() {
		var olAjax = new Ajax.Request('src/sel_aircraft.php',{
			method: 'post',
			parameters: {u: $('u_id').value, i: $('crftSearchBox').value},
			onSuccess:function (resp) {
				$('crftSelResult').innerHTML = resp.responseText;
			}
		});
}

function changeCrft(aid) {
		toggleCrftSel();
		var olAjax = new Ajax.Request('src/new_aircraft.php?aid='+aid,{
			method: 'get',
			onSuccess:function (resp) {
				$('aircraft').innerHTML = resp.responseText;
				crft_tgal = $('crft_tgal').value;
				crft_ffph = $('crft_ffph').value;
				crft_tas = $('crft_tas').value;
				drawFuelbar();
				drawOverlay();
				go4events();
				recc = 1;
			}
		});
}

function initSearchWp() {
		if (searchWpTimer>0) clearTimeout(searchWpTimer);
		searchWpTimer = setTimeout(function(){searchWp()},300);
}

function searchWp() {
		var elm = $('WpSearchBox');
		var sstr = elm.value;
		var wpsrc = -1; if ($('wpsrc0').checked) wpsrc = 0; else wpsrc = 1;
		if (wpsrc == 1) {
				$('WpCtry').style.display = 'block';
				$('aEditWpPix').style.display='none';
		} else {
				$('WpCtry').style.display = 'none';
				$('aEditWpPix').style.display='block';
				$('editWpPix').src = 'pix/edit30x15.png';
		}
		var wptp0 = 0; if ($('wptp0').checked) wptp0 = 1;
		var wptp3 = 0; if ($('wptp3').checked) wptp3 = 1;
		var ctry = $('iso3').value;
		var olAjax = new Ajax.Request('src/sel_waypoint.php',{
			method: 'post',
			parameters: {sstr: sstr, u_id: $('u_id').value, wpsrc:wpsrc, wptp0: wptp0, wptp3: wptp3, c: ctry },
			onSuccess:function (resp) {
				$('WpSelResult').innerHTML = resp.responseText;
			}
		});
}

function editWp() {
		var pix = $('editWpPix').src;
		if (pix.search(/lock30x15/) > 0) {
			searchWp();
		} else {
				var olAjax = new Ajax.Request('src/edit_user_waypoint.php?u_id='+$('u_id').value,{
					method: 'get',
					onSuccess:function (resp) {
						$('WpSelResult').innerHTML = resp.responseText;
						$('editWpPix').src = 'pix/lock30x15.png';
					}
				});
		}
}

function updtMrkr(elm) {
		var fp_id = $('uniqid').value;
		var mrkr = elm.id.match(/\d+/);
		var ComDsc = (elm.id.search(/Com/)>0)?'mrkrCom':'mrkrDsc';
		var ComDscFrm = (elm.id.search(/Tt/)>0)?'mrkrFrmTt_':'mrkrFrm_';
		var ulAjax = new Ajax.Request('src/fp_updt_mrkr.php?fp_id='+fp_id+'&mrkr='+mrkr+'&fld='+ComDsc,{
			method: 'post',
			parameters: $(ComDscFrm+mrkr).serialize(),
			onSuccess:function (resp) {
				document.forms['mrkrFrm_'+mrkr].elements[ComDsc+mrkr].value = resp.responseText;
				$(ComDsc+mrkr).value = resp.responseText;
				$(ComDsc+mrkr).style.color = '#1d1d41';
				recc = 1;
			}
		});
}

function pAltitude(elm) {
		recc = 1;
		var mn = elm.id.match(/\d+/);
		var ulAjax = new Ajax.Request('src/fp_updt_alt.php',{
			method: 'post',
			parameters: { fp_id: $('uniqid').value
									, mrkr: mn
									, palt: elm.value
									, u_id: $('u_id').value
									}
		});
}

function pAltitudeU(elm) {
		recc = 1;
		var ulAjax = new Ajax.Request('src/fp_updt_alt_unit.php',{
			method: 'post',
			parameters: { fp_id: $('uniqid').value
									, mrkr: elm.id.match(/\d+/)
									, paltu: elm.value
									, u_id: $('u_id').value
									}
		});
}

function updtWp(elmid) {
		var elm = $('uWp'+elmid);
		var newComment = encodeURIComponent(elm.value);
		var olAjax = new Ajax.Request('src/fp_updt_wpCom.php?poi_id='+elmid+'&newComment='+newComment,{
			method: 'get',
			onSuccess:function (resp) {
					$('uWp'+elmid).style.color = '#1d1d41';
					$('uWp'+elmid).value = resp.responseText;
					recc = 1;
			}
		});
}

function resortMrkrs() {
	if (markers.length > 0) $('wxfcastbox').style.display="block"; else $('wxfcastbox').style.display="none";
	Sortable.create('mrkrs',{
			tag:'div'
		,	onUpdate:function(){
				var neworder = Sortable.sequence('mrkrs');
				var markers_copy = new Array();
				var j;
				for(i = 0; i < neworder.length; i++) {
					j = neworder[i];
					markers_copy[i] = markers[j];
				}
				markers = markers_copy;
				drawOverlay();
				recc = 1;
				new Ajax.Request('src/mrkr_sortorder.php' , {
						method: "post"
					,	parameters: {data:Sortable.serialize('mrkrs'), fp_id:$('uniqid').value}
					, onSuccess: function() {
							new Ajax.Request('src/mrkr_sortorder_updtpanel.php' , {
									method: "get"
								,	parameters: {fp_id:$('uniqid').value}
								, onSuccess: function(transport) {
										$('mrkrs').innerHTML = transport.responseText;
										resortMrkrs();
									}
						});
					}
				});
		}
	});
}

function fpSmallMaps() {
	var dMap = new Array();
	for(var i = 0; i < loadLat.length; i++) {
		dMap[i] = new google.maps.Map2($('map_'+i));
		var zL = 12; if (i==0) zL=13; if (i==(loadLat.length-1)) zL=13;
		dMap[i].setCenter(new google.maps.LatLng(loadLat[i], loadLon[i]), zL);
		dMap[i].setMapType(G_PHYSICAL_MAP);
		dMap[i].setUIToDefault();
		drawRoute(dMap[i]);
		createSrt('navlist'+i,i,0);
		createSrt('comlist'+i,i,0);
	}
	loadGarminXfer();
}

function calcFp(s) {
		var u = $('u_id').value;
		var f = $('uniqid').value;
		var c = $('crft').value;
		var r = $('recc').value;
		var olAjax = new Ajax.Request('src/dir_calculate.php?fp_id='+f+'&u_id='+u+'&crft_id='+c+'&s='+s+'&recalc='+r,{
			onSuccess:function (resp) {
					if (s=='m')
					{
							$('main').innerHTML = resp.responseText;
							recc = 0;
							fpSmallMaps();
					}
					else
					{
							$('main').innerHTML = resp.responseText;
							for(var i = 0; i < loadLat.length; i++) {
								createSrt('navlist'+i,i,1);
								createSrt('comlist'+i,i,1);
							}
							recc = 0;
							loadGarminXfer();
					}
			}
		});
}

function drawRoute(xMap){
		var xPoints = new Array();
		for(var i = 0; i < loadLat.length; i++) {
			var point = new GLatLng(loadLat[i], loadLon[i]);
			xPoints.push(point);
		}
		var xPoly;
		xPoly = new GPolyline(xPoints, lineColor, lineWeight, lineOpacity, polyOptions);
		xMap.addOverlay(xPoly);
}

function loadGarminXfer() {
	var display = new Garmin.DeviceDisplay("garminDisplay", {
		 pathKeyPairsArray:      ["http://www.govfr.com","17672bb7f4f06a13f8dc4c82eadf810e"]
		,showStatusElement: true
		,showReadDataElement: false
		,hideIfBrowserNotSupported: true
		,autoFindDevices: false
		,findDevicesButtonText: "Send Flightplan"
		,showCancelFindDevicesButton: false
		,autoSelectFirstDevice: true
		,autoReadData: false
		,autoWriteData: true
		,getWriteData: function() { return $("dataString").value;  }
		,afterFinishWriteToDevice: function() { alert("Flightplan transferred successfully!");}
	});
}

function getNextRecordsC(dest,elm) {
		$(dest+elm+'_tgl_x').hide();
		$(dest+elm+'_tgl_w').show();
		var olAjax = new Ajax.Request('src/'+dest+'_boxes_'+elm+'.php',{
			method: 'post',
			parameters: $('frmnrec'+dest+elm).serialize() ,
			onSuccess:function (resp) {
				$('appendix'+dest+elm).remove();
				$('resultBox'+dest+elm).insert(resp.responseText);
				var n_tot = $$('div.ncount'+dest+elm);
				$('n_count_'+dest+elm).innerHTML = n_tot.length;
				if (n_tot.length==$('n_tot_'+dest+elm).value)
				{
					$('nRetNext'+dest+elm).hide();
				}
				else
				{
					$(dest+elm+'_tgl_x').show();
					$(dest+elm+'_tgl_w').hide();
				}
			}
		});
}

function tgl(elm) {
	if ($(elm).style.display=="none") $(elm).style.display="block"; else $(elm).style.display="none";
}

function toggleMap(oof) {
			var elmMap = $('map');
			var elmPanel = $('fpmPanel');

		if (oof>0) {
			elmPanel.style.visibility = 'hidden';
			elmMap.className = "fpmPanelStart_0 fpmPanelMarginEnd_0";
			map.checkResize();

		} else {
			elmPanel.style.visibility = 'visible';
			elmMap.className = "fpmPanelStart fpmPanelMarginEnd";
			map.checkResize();

		}
}

function crftInfoIn() {
	var elm = $('crftinfo');
	elm.style.display = "block";
}
function crftInfoOut() {
	var elm = $('crftinfo');
	elm.style.display = "none";
}

function toggleCrftSel() {
		var elm = $('crftSel');
		var bar = $('crftLabelBar');
		var pix = $('crftSelPix');
		if (elm.style.display == "block") {

				elm.style.display = "none";
				pix.src = 'pix/open20x20.png';

				if (bar.addEventListener){
						bar.addEventListener ("mouseover",crftInfoIn,false);
						bar.addEventListener ("mouseout",crftInfoOut,false);
				} else if (bar.attachEvent) {
						bar.attachEvent ("onmouseover",crftInfoIn);
						bar.attachEvent ("onmouseout",crftInfoOut);
				}

		} else {

				elm.style.display = "block";
				pix.src = 'pix/close20x20.png';
				crftInfoOut();

				if (bar.addEventListener){
						bar.removeEventListener('mouseover',crftInfoIn,false);
						bar.removeEventListener('mouseout',crftInfoOut,false);
				} else if (bar.attachEvent) {
						bar.detachEvent ("onmouseover",crftInfoIn);
						bar.detachEvent ("onmouseout",crftInfoOut);
				}

		}
}

function toggleWpSel() {
		var elm = $('wpSel');
		var pix = $('wpSelPix');
		if (elm.style.display == "block") {

				elm.style.display = "none";
				pix.src = 'pix/open20x20.png';

		} else {

				elm.style.display = "block";
				pix.src = 'pix/close20x20.png';

		}
}

function toggleFpSel(fix,elmn) {
		var elm = $(elmn);
		var pix = $(fix+'SelPix');
		if (elm.style.display == "block") {

				elm.style.display = "none";
				pix.src = 'pix/open20x20.png';

		} else {

				elm.style.display = "block";
				pix.src = 'pix/close20x20.png';

		}
}

function go4events() {

		var bar = $('crftLabelBar');

		if (navigator.appName == "Microsoft Internet Explorer")
				 bar.attachEvent   ("onmouseover",crftInfoIn);
		else bar.addEventListener("mouseover",crftInfoIn,false);

		if (navigator.appName == "Microsoft Internet Explorer")
				 bar.attachEvent   ("onmouseout",crftInfoOut);
		else bar.addEventListener("mouseout",crftInfoOut,false);

}

function remove(theVar){
	var theParent = theVar.parentNode;
	theParent.removeChild(theVar);
}

function addEvent(obj, evType, fn){
	if(obj.addEventListener)
	    obj.addEventListener(evType, fn, true);
	if(obj.attachEvent)
	    obj.attachEvent("on"+evType, fn);
}

function removeEvent(obj, type, fn){
	if(obj.detachEvent){
		obj.detachEvent('on'+type, fn);
	}else{
		obj.removeEventListener(type, fn, false);
	}
	if ($('fname'))
		check4GPX();
}

function isWebKit(){
	return RegExp(" AppleWebKit/").test(navigator.userAgent);
}

function ajaxUpload(form,url_action,id_element,id_show_loading,html_show_loading,html_error_http,afterload){

	var detectWebKit = isWebKit();

	form = typeof(form)=="string"?$(form):form;

	var erro="";

	if(form==null || typeof(form)=="undefined"){

		erro += "The form of 1st parameter does not exists.\n";

	} else if(form.nodeName.toLowerCase()!="form"){

		erro += "The form of 1st parameter its not a form.\n";
	}

	if($(id_element)==null){

		erro += "The element of 3rd parameter does not exists.\n";

	}

	if(erro.length>0){
		alert("Error in call ajaxUpload:\n" + erro);
		return;
	}

	var iframe = document.createElement("iframe");

	iframe.setAttribute("id","ajax-temp");
	iframe.setAttribute("name","ajax-temp");
	iframe.setAttribute("width","0");
	iframe.setAttribute("height","0");
	iframe.setAttribute("border","0");
	iframe.setAttribute("style","width: 0; height: 0; border: none;");

	form.parentNode.appendChild(iframe);

	window.frames['ajax-temp'].name="ajax-temp";

	var doUpload = function(){

		removeEvent($('ajax-temp'),"load", doUpload);
		var cross = "javascript: ";
		cross += "window.parent.$('"+id_element+"').innerHTML = document.body.innerHTML; void(0);";
		$(id_element).innerHTML = html_error_http;

		$('ajax-temp').src = cross;

		if(detectWebKit){
        	remove($('ajax-temp'));
    } else {
        	setTimeout(function(){ remove($('ajax-temp'))}, 250);
    }

    setTimeout(function(){ eval(afterload + '()'); }, 50);
  }

	addEvent($('ajax-temp'),"load", doUpload);

	form.setAttribute("target","ajax-temp");
	form.setAttribute("action",url_action);
	form.setAttribute("method","post");
	form.setAttribute("enctype","multipart/form-data");
	form.setAttribute("encoding","multipart/form-data");
	form.submit();

	if(html_show_loading.length > 0){
		$(id_show_loading).innerHTML = html_show_loading;
	}

}

function resetGpxFrm() {
	$('gpxFrmInput').value='';
}

function resetKmlFrm() {
	$('kmlFrmInput').value='';
	$('upload_area').innerHTML='';	
	filterThis('all','kml');
}

function resetPixFrm() {
	tgl('uploadpix');
	if ($('upload_area')) $('upload_area').innerHTML = "";
	if ($('upload_area_com')) $('upload_area_com').innerHTML = "";
	if ($('comFrmInput')) $('comFrmInput').value = "";
	if ($('gpxFrmInput')) $('gpxFrmInput').value = "";
	initLightbox();
}

function deletepix(rec,u,a,target) {
	var ulAjax = new Ajax.Request('src/delete_pix.php',{
		method: 'post',
		parameters: { att: rec, u: u, a: a , trgt: target },
		onSuccess:function (resp) {
		void(0);
			$('pixbar').innerHTML = resp.responseText;
			initLightbox();
    }
	});
}

function addFpComment() {
	var u = $('u_id').value;
	var f = $('uniqid').value;
	var c = $('usercomment').value;
	var ulAjax = new Ajax.Request('src/fp_add_user_comment.php',{
		method: 'post',
		parameters: { u: u, f: f , c: c },
		onSuccess:function (resp) {
			$('discbox').innerHTML = resp.responseText;
			initLightbox();
			var ulAjax = new Ajax.Request('imageboxes3.php',{
				method: 'get',
				onSuccess:function (resp) {
					$('pixbar').innerHTML = resp.responseText;
				}
			});
    }
	});
}

function drawGPX() {
	bounds = new GLatLngBounds();
	var gicons = getGicons();

	var gpxfile = 'user/trks/'+$('fname').value;

	XMLrequest2 = GXmlHttp.create();
	XMLrequest2.open("GET", gpxfile, true);
	XMLrequest2.onreadystatechange = function() {
		if(XMLrequest2.readyState == 4) {

		if (trkmarkers.length > 0) {
				for(var n = 0; n < trkmarkers.length; n++) {
								map.removeOverlay(trkmarkers[n]);
				}
				trkmarkers.length = 0;
		}

			var xmlDoc = GXml.parse(XMLrequest2.responseText);
			var trks = xmlDoc.documentElement.getElementsByTagName("trk");
			var startPt = 0;
			var trklen = 0;
			for (i = 0; i<trks.length; i++) {

				var trkPoints = trks[i].getElementsByTagName("trkpt");
				var pts = new Array(0);

				for (j = 0; j<trkPoints.length; j++) {

					pts[j] = new GLatLng(parseFloat(trkPoints[j].getAttribute("lat")),
						parseFloat(trkPoints[j].getAttribute("lon")));
					bounds.extend(pts[j]);
					if (startPt==0) { var startMrkr = new GMarker(pts[j],gicons['start']);
														map.addOverlay(startMrkr);
														trkmarkers.push(startMrkr);
														$('trklat').value = parseFloat(trkPoints[j].getAttribute("lat"));
														$('trklon').value = parseFloat(trkPoints[j].getAttribute("lon"));
													}
					startPt++;

				}

				polytrk = new GPolyline(pts,'#FF0000','3','0.9');
				trklen += polytrk.getLength();
				map.addOverlay(polytrk);
				trkmarkers.push(polytrk);

			}
			$('trklen').value = Math.round(trklen);
			var stopMrkr = new GMarker(pts[j-1],gicons['stop']);
			map.addOverlay(stopMrkr);
			trkmarkers.push(stopMrkr);
			var mZL = map.getBoundsZoomLevel(bounds);
			map.setCenter(bounds.getCenter());
			map.setZoom(mZL);

		}
	}
	$('upload_area').innerHTML = 'finished';
	if ($('uplx')) $('uplx').innerHTML = '';
	$('fname').value = -1;
	XMLrequest2.send(null);
	$('dTrkFrm').toggle();

}

function check4GPX() {
	if ($('fname').value == -1) setTimeout(function(){ check4GPX() }, 500);
	else drawGPX();
}

function toggleGPX() {
		if (trkmarkers.length > 0) {
				for(var n = 0; n < trkmarkers.length; n++) {
						if (trkmarkers[n].isHidden()) trkmarkers[n].show(); else trkmarkers[n].hide();
				}
		}
}

function toggleMrkr() {
		if (markers.length > 0) {
				for(var n = 0; n < markers.length; n++) {
						if (markers[n].isHidden()) markers[n].show(); else markers[n].hide();
				}
				if (poly.isHidden()) poly.show(); else poly.hide();
		}
}

function toggleWx() {
		if (wxmarkers.length > 0) {
				for(var n = 0; n < wxmarkers.length; n++) {
						if (wxmarkers[n].isHidden()) wxmarkers[n].show(); else wxmarkers[n].hide();
				}
				if (wxpoly.isHidden()) wxpoly.show(); else wxpoly.hide();
		}
}

function resetDelTrkButton(core_id) {
			clearTimeout(delTrkTimer);
			if ($('delTrk2'+core_id) != null)
					$('delTrk2'+core_id).style.display = 'none';
			if ($('delTrk1'+core_id) != null)
					$('delTrk1'+core_id).style.display = 'block';
}

function deleteTrkTimeout(core_id) {
		delTrkTimer = setTimeout(function(){resetDelTrkButton(core_id)},4000);
}

function delTrk1(core_id) {
		if (t_core_id!=null) { resetDelTrkButton(t_core_id); }
		deleteTrkTimeout(core_id);
		var chgEl1 = $('delTrk1'+core_id);
		chgEl1.style.display = 'none';
		var chgEl2 = $('delTrk2'+core_id);
		chgEl2.style.display = 'block';
		t_core_id = core_id;
}

function delTrk2(core_id) {
		clearTimeout(delTrkTimer);
		t_core_id = null;
		if (trkmarkers.length > 0) {
				for(var n = 0; n < trkmarkers.length; n++) {
								map.removeOverlay(trkmarkers[n]);
				}
				trkmarkers.length = 0;
		}
		$('upload_area').innerHTML = '';
		$('status_msg').innerHTML =  '<input id="fname" value="-1" type="hidden">'+
																	'<input id="permfname" type="hidden" value="-1"/>'+
																	'<input id="orgfname" type="hidden" value=""/>'+
																	'<input id="trklen" type="hidden" value=""/>'+
																	'<input id="trkdur" type="hidden" value=""/>'+
																	'<input id="trklat" type="hidden" value=""/>'+
																	'<input id="trklon" type="hidden" value=""/>';
	$('dTrkFrm').toggle();
}

function gotoCheckout() {
		var fp_id = $('uniqid').value;
		var crft_id = $('crft_id').value;
		var u_id = $('u_id').value;
		window.location.href = 'checkout_'+u_id+'_'+fp_id+'_'+crft_id+'_'+recc+'.html';
}

function openFp(fp_id) {
		var u_id = $('u_id').value;
		window.location.href = 'flight-plans_'+u_id+'_'+fp_id+'.html';
}

function openCrft(a) {
		var u_id = $('u_id').value;
		window.location.href = 'aircraft_'+u_id+'_'+a+'.html';
}

function openPilot(a) {
		var u_id = $('u_id').value;
		window.location.href = 'pilots_'+u_id+'_'+a+'.html';
}

function createSrt(parentEl,i,p) {
		Sortable.create(parentEl,{
						tag:'div'
					,	onUpdate:function(){
								var newSeq = Sortable.sequence(parentEl);
								var topSel = newSeq[0];
								$(parentEl+'_top').innerHTML = $(parentEl+'_'+topSel).innerHTML;
								if (p==1) {
										if ($(parentEl+'_k'+topSel) != null) ChildKiller(parentEl+'_k'+topSel);
										if ($(parentEl+'_l'+topSel) != null) ChildKiller(parentEl+'_l'+topSel);
								}
								new Ajax.Request('src/fp_saves_updt.php' , {
												method: "post"
											,	parameters: {data:Sortable.serialize(parentEl), fp_id:$('uniqid').value, u_id:$('u_id').value}
											, onSuccess: function() {
													var xxx = 0;
												}
								});
						}
		});
}

function tglNavlist(mnr,si) {
		if ($('navlist'+mnr).style.display=='block') {
				$('navlist'+mnr).style.display='none';
				$('movenav'+mnr).style.display='none';
				$('navlist'+mnr+'_top').style.display='block';
				$('tgl'+mnr).src='pix/open'+si+'x'+si+'.png';
		} else {
				$('navlist'+mnr).style.display='block';
				$('movenav'+mnr).style.display='block';
				$('navlist'+mnr+'_top').style.display='none';
				$('tgl'+mnr).src='pix/close'+si+'x'+si+'.png';
		}
}
function tglcomlist(mnr,si) {
		if ($('comlist'+mnr).style.display=='block') {
				$('comlist'+mnr).style.display='none';
				$('movecom'+mnr).style.display='none';
				$('comlist'+mnr+'_top').style.display='block';
				$('tglcom'+mnr).src='pix/open'+si+'x'+si+'.png';
		} else {
				$('comlist'+mnr).style.display='block';
				$('movecom'+mnr).style.display='block';
				$('comlist'+mnr+'_top').style.display='none';
				$('tglcom'+mnr).src='pix/close'+si+'x'+si+'.png';
		}
}
function tglmap(mnr) {
		if ($('map_'+mnr).style.display=='block') {
				$('map_'+mnr).style.display='none';
				$('omap_'+mnr).style.display='block';
				$('mapspc_'+mnr).style.height='5px';
				$('tglmap_'+mnr).src='pix/open20x20.png';
				$('bigblock'+mnr).style.width='370px';
		} else {
				$('bigblock'+mnr).style.width='600px';
				$('omap_'+mnr).style.display='none';
				$('map_'+mnr).style.display='block';
				$('mapspc_'+mnr).style.height='60px';
				$('tglmap_'+mnr).src='pix/close20x20.png';
		}
}

function tglAllMps() {

		if ($('tglAllMaps').src.match(/close/)) {

			/* closem */
			for(var i = 0; i < loadLat.length; i++) {
				$('map_'+i).style.display='none';
				$('omap_'+i).style.display='block';
				$('mapspc_'+i).style.height='5px';
				$('tglmap_'+i).src='pix/open20x20.png';
				$('bigblock'+i).style.width='370px';
			}
			$('tglAllMaps').src = 'pix/open20x20.png';

		} else {

			/* openem */
			for(var i = 0; i < loadLat.length; i++) {
				$('bigblock'+i).style.width='600px';
				$('omap_'+i).style.display='none';
				$('map_'+i).style.display='block';
				$('mapspc_'+i).style.height='60px';
				$('tglmap_'+i).src='pix/close20x20.png';
			}
			$('tglAllMaps').src = 'pix/close20x20.png';

		}
}

function mbTgl(elm) {
	$(elm+'_1').toggle();
	if ($(elm+'_2'))
		$(elm+'_2').toggle();
}

function restateClps(elm) {
	$(elm+'_xtnd').innerHTML="";
	$(elm+'_tgl_w').toggle();
	$(elm+'_tgl_x').toggle();
}
function cLps(elm) {
	$(elm+'_tgl_c').toggle();
	$(elm+'_tgl_w').toggle();
	Effect.BlindUp(elm+'_xtnd', { duration: 1.0 });
	delXpand = setTimeout(function(){restateClps(elm)},1000);
}

function showRegister() {
	$('ul').style.display='none';
	$('ur').style.display='block';
}

function uClear(elm) {
	elm.value='';
}

function mChk() {
	if (checkEmail($('u_mail').value))
	{
		$('u_mail').style.border='1px solid #3CAD00';
		return true;
	}
	else
	{
		alert("Please provide a valid e-mail address!");
		$('u_mail').style.border='1px solid #ff0000';
		return false;
	}
}

function uChk() {
	var ulAjax = new Ajax.Request('src/register_uname_check.php',{
		method: 'post',
		parameters: $('regFrm').serialize(),
		onSuccess:function (resp) {
			$('chk_u_name').value = resp.responseText;
			if ($('chk_u_name').value==0) {
				alert('Username not available!');
				$('u_name').style.border='1px solid #ff0000';
				return false;
			} else {
				$('u_name').style.border='1px solid #3CAD00';
				return true;
			}
		}
	});
}

function _pChk() {
	if ($('u_pw2').value.length==0) {
			alert('Password may not be empty!');
			$('u_pw2').style.border='1px solid #ff0000';
			return false;
	} else if ($('u_pw2').value != $('u_pw1').value) {
			alert('Passwords must be equal!');
			$('u_pw2').style.border='1px solid #ff0000';
			$('u_pw1').style.border='1px solid #ff0000';
			$('u_pw1').focus();
			return false;
	}	else {
			$('u_pw1').style.border='1px solid #3CAD00';
			$('u_pw2').style.border='1px solid #3CAD00';

			if ($('chk_u_name').value==1 && mChk($('u_mail'))) {

				if (!$('agb').checked) {
					alert('Please accept our terms and conditions.');
					$('agb').focus();
					return false;
				} else {

					var ulAjax = new Ajax.Request('src/register.php',{
						method: 'post',
						parameters: $('regFrm').serialize(),
						onSuccess:function (resp) {
							if (parseInt(resp.responseText)>0)
								window.location.href = 'pilots_'+resp.responseText+'_'+resp.responseText+'.html';
							else 
								$('login').innerHTML = resp.responseText;
						}
					});

				}
			} else {
					alert('Please provide valid username.');
					$('u_name').style.border='1px solid #ff0000';
					$('u_name').focus();
			}
	}
}

function pChk(e,fn) 
{
	if (checkEnter(e))
	{
		var tmpFn = new Function(fn);
		tmpFn();
		return false;
	}
	else
	return true;
}

function blink(elm) {
	elm.style.visibility = (elm.style.visibility != 'hidden' ? 'hidden' : 'visible' );
}

function blinkHandler(o) {
	o = typeof(o)=="string"?$(o):o;
	for(var i=900; i < 2700; i=i+900) {
		timer1 = setTimeout(function(){blink(o)},i);
		timer2 = setTimeout(function(){blink(o)},i+450);
	}
}

function chkLogin() {
	var ulAjax = new Ajax.Request('/src/login_check.php',{
		method: 'post',
		parameters: $('loginFrm').serialize(),
		onSuccess:function (resp) {
			if (resp.responseText.match("Login failed"))
				$('login').innerHTML = resp.responseText;
			else
				window.location.href = '/pilots_'+resp.responseText+'_'+resp.responseText+'.html';
    }
	});
}

function blendInInfo(i)
{
	bgc = $('info'+i).style.backgroundColor;
	$('info'+i).style.backgroundColor = "#eeeeee";
	if ($('by'+i)) $('by'+i).show();
}

function blendOutInfo(i)
{
	$('info'+i).style.backgroundColor = bgc;
	if ($('by'+i)) $('by'+i).hide();
}

function subByEnter(e) {
	if (checkEnter(e)) chkLogin();
}

function showWpTooltip(marker) {

		var orgid = marker.content;

		tooltip.style.display = "block";
		tooltip.innerHTML = "loading...";

		GDownloadUrl('src/tooltip_wp.php?mrkr='+orgid, function(response, status){

				if (response == null || status == -1 ) {
					tooltip.innerHTML = '<span>ERROR: Cannot display waypoint details.</span>';
				} else {
					tooltip.innerHTML = response;
				}
		});

		/* Tooltip transparency specially for IE */
		if(typeof(tooltip.style.filter) == "string") {
			tooltip.style.filter = "alpha(opacity:70)";
		}

		var currtype = map.getCurrentMapType().getProjection();
		var point= currtype.fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
		var offset= currtype.fromLatLngToPixel(marker.getLatLng(),map.getZoom());
		var anchor = marker.getIcon().iconAnchor;
		var width = marker.getIcon().iconSize.width + 6;
		var height = 10;
		var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y - height));
		pos.apply(tooltip);
}

function closeWpTooltip(marker) {
		tooltip.style.display = "none";
}

function getGicons() {
	var gicons = [];
	 	
	gicons["std"] = new GIcon();
		gicons["std"].image = icon_url +"mm_20_purple.png";
		gicons["std"].shadow= icon_url + "mm_20_shadow.png";
		gicons["std"].iconSize = new GSize(12, 20);
		gicons["std"].shadowSize = new GSize(22, 20);
		gicons["std"].iconAnchor = new GPoint(6, 20);
		gicons["std"].infoWindowAnchor = new GPoint(5, 1);
		
	gicons["stdr"] = new GIcon();
		gicons["stdr"].image = icon_url +"mm_20_red.png";
		gicons["stdr"].shadow= icon_url + "mm_20_shadow.png";
		gicons["stdr"].iconSize = new GSize(12, 20);
		gicons["stdr"].shadowSize = new GSize(22, 20);
		gicons["stdr"].iconAnchor = new GPoint(6, 20);
		gicons["stdr"].infoWindowAnchor = new GPoint(5, 1);

	gicons["stdb"] = new GIcon();
		gicons["stdb"].image = icon_url +"mm_20_blue.png";
		gicons["stdb"].shadow= icon_url + "mm_20_shadow.png";
		gicons["stdb"].iconSize = new GSize(12, 20);
		gicons["stdb"].shadowSize = new GSize(22, 20);
		gicons["stdb"].iconAnchor = new GPoint(6, 20);
		gicons["stdb"].infoWindowAnchor = new GPoint(5, 1);

	gicons["start"] = new GIcon();
		gicons["start"].image = icon_url +"rocket40x48.png";
		gicons["start"].iconSize = new GSize(40, 48);
		gicons["start"].iconAnchor = new GPoint(20, 48);

	gicons["stop"] = new GIcon();
		gicons["stop"].image = icon_url +"para60x60.png";
		gicons["stop"].iconSize = new GSize(60, 60);
		gicons["stop"].iconAnchor = new GPoint(30, 60);

	gicons["wx"] = new GIcon();
		gicons["wx"].image = icon_url +"wx25x19.png";
		gicons["wx"].iconSize = new GSize(25, 19);
		gicons["wx"].iconAnchor = new GPoint(12, 10);

	gicons["0"] = new GIcon();
		gicons["0"].image = icon_url +"prt1_21x21.png";
		gicons["0"].iconSize = new GSize(21, 21);
		gicons["0"].iconAnchor = new GPoint(10, 10);

	gicons["2"] = new GIcon();
		gicons["2"].image = icon_url +"mil1_21x21.png";
		gicons["2"].iconSize = new GSize(21, 21);
		gicons["2"].iconAnchor = new GPoint(10, 10);

	gicons["3"] = new GIcon();
		gicons["3"].image = icon_url +"vor21sq.png";
		gicons["3"].iconSize = new GSize(21, 21);
		gicons["3"].iconAnchor = new GPoint(10, 10);

	gicons["6"] = new GIcon();
		gicons["6"].image = icon_url +"ndb21sq.png";
		gicons["6"].iconSize = new GSize(21, 21);
		gicons["6"].iconAnchor = new GPoint(10, 10);

	gicons["7"] = new GIcon();
		gicons["7"].image = icon_url +"dme21sq.png";
		gicons["7"].iconSize = new GSize(21, 21);
		gicons["7"].iconAnchor = new GPoint(10, 10);

	gicons["8"] = new GIcon();
		gicons["8"].image = icon_url +"dvor21sq.png";
		gicons["8"].iconSize = new GSize(21, 21);
		gicons["8"].iconAnchor = new GPoint(10, 10);

	gicons["4"] = new GIcon();
		gicons["4"].image = icon_url +"hel1_21x21.png";
		gicons["4"].iconSize = new GSize(21, 21);
		gicons["4"].iconAnchor = new GPoint(10, 10);

	gicons["5"] = new GIcon();
		gicons["5"].image = icon_url +"wp1_21x21.png";
		gicons["5"].iconSize = new GSize(21, 21);
		gicons["5"].iconAnchor = new GPoint(10, 10);
	return gicons;
}

function addWpMrkr(pts,icn,orgid,iso3) {
	var gicons = getGicons();

	var wpMrkr = new GMarker(pts,gicons[icn]);
	wpMrkr.content = orgid;
	wpMrkr.iso = iso3;
	wpmarkers.push(wpMrkr);
	wpMrkr.tooltip = " ";
	GEvent.addListener(wpMrkr, "click", function() {
			insertWp(pts.lat(),pts.lng(),orgid);
	});
	GEvent.addListener(wpMrkr, "mouseover", function() {
			showWpTooltip(wpMrkr);
	});
	GEvent.addListener(wpMrkr, "mouseout", function() {
			closeWpTooltip(wpMrkr);
	});
	return wpMrkr;
}

function addUserMrkr(pts,icn,orgid) {
	var gicons = getGicons();

	var userMrkr = new GMarker(pts,gicons[icn]);
	userMrkr.content = orgid;
	usermarkers.push(userMrkr);
	userMrkr.tooltip = " ";
	GEvent.addListener(userMrkr, "click", function() {
			insertWp(pts.lat(),pts.lng(),orgid);
	});
	GEvent.addListener(userMrkr, "mouseover", function() {
			showWpTooltip(userMrkr);
	});
	GEvent.addListener(userMrkr, "mouseout", function() {
			closeWpTooltip(userMrkr);
	});
	return userMrkr;
}

function removeWpOl(o,iso) {
	for (i = 0; i<wpmarkers.length; i++) {
		if(wpmarkers[i].iso == iso) {
			map.removeOverlay(wpmarkers[i]);
		}
	}
	o.parentNode.remove();
}

function removeUserOverlay() {
			for (i = 0; i<usermarkers.length; i++)
			{
					map.removeOverlay(usermarkers[i]);
			}
			$('olUserWpRemove').style.display = "none";
			$('olUserWpAdd').style.display = "block";
}

function removeCtrOl(o,iso) {
	for (i = 0; i<ctroverlays.length; i++) {
		if(ctroverlays[i].iso == iso) {
			map.removeOverlay(ctroverlays[i]);
		}
	}
	o.parentNode.remove();
}

function removeKmlOl(o,kmlfile) {
	for (i = 0; i<ctroverlays.length; i++) {
		if(ctroverlays[i].kmlfile == kmlfile) {
			map.removeOverlay(ctroverlays[i]);
		}
	}
	o.parentNode.remove();
}

function addUserOverlay() {
	var u = $('u_id').value;
	if (u<0)
	{
		alert('No personal waypoints as guest user. Please login or register.');
	}
	else
	{
		var gpxfile = 'OverlayUserWp-'+u+'.gpx';
		XMLrequest3 = GXmlHttp.create();
		XMLrequest3.open("GET", gpxfile, true);
		XMLrequest3.onreadystatechange = function() {
				if(XMLrequest3.readyState == 4) {

						var xmlDoc = GXml.parse(XMLrequest3.responseText);
						var wpts = xmlDoc.documentElement.getElementsByTagName("wpt");

						for (i = 0; i<wpts.length; i++) {

								var pts = new GLatLng(parseFloat(wpts[i].getAttribute("lat")),parseFloat(wpts[i].getAttribute("lon")));
								var orgid = parseFloat(wpts[i].getAttribute("orgid"));
								var icn = parseFloat(wpts[i].getAttribute("poi_tp"));
								var userMrkr = addUserMrkr(pts,icn,orgid);
								map.addOverlay(userMrkr);
						}

						$('olUserWpAdd').style.display = "none";
						$('olUserWpRemove').style.display = "block";
				}
		}
		XMLrequest3.send(null);
	}
}

function addWpOverlay() {

	var iso3 = $('wpolctry').value;

	var gpxfile = 'infra/waypoints/wp'+iso3+'.gpx';
	XMLrequest3 = GXmlHttp.create();
	XMLrequest3.open("GET", gpxfile, true);
	XMLrequest3.onreadystatechange = function() {
			if(XMLrequest3.readyState == 4) {

					var xmlDoc = GXml.parse(XMLrequest3.responseText);
					var wpts = xmlDoc.documentElement.getElementsByTagName("wpt");

					for (i = 0; i<wpts.length; i++) {

							var pts = new GLatLng(parseFloat(wpts[i].getAttribute("lat")),parseFloat(wpts[i].getAttribute("lon")));
							var orgid = parseFloat(wpts[i].getAttribute("orgid"));
							var icn = parseFloat(wpts[i].getAttribute("poi_tp"));
							var wpMrkr = addWpMrkr(pts,icn,orgid,iso3);
							map.addOverlay(wpMrkr);
					}

					var olAjax = new Ajax.Request('src/fp_overlays.php?iso3='+iso3,{
						method: 'get',
						onSuccess:function (resp) {
							$('OlWpResult').insert(resp.responseText);
							drawOverlay();
						}
					});

			}
	}
	XMLrequest3.send(null);
}

function addCtrOverlay() {
	var iso3 = $('ctrolctry').value;
	ctr = new GGeoXml("http://www.govfr.com/infra/ctr/"+iso3+'.kmz');
	ctr.iso = iso3;
	ctroverlays.push(ctr);
	map.addOverlay(ctr);
	drawOverlay();

	var olAjax = new Ajax.Request('src/fp_overlays_ctr.php?iso3='+iso3,{
		method: 'get',
		onSuccess:function (resp) {
			$('OlCtrResult').insert(resp.responseText);
		}
	});
}

function addKmlOverlay() {
	var kmlfile = $('kmlol').value;
	ctr = new GGeoXml("http://www.govfr.com/"+kmlfile);
	ctr.kmlfile = kmlfile;
	ctroverlays.push(ctr);
	map.addOverlay(ctr);
	drawOverlay();

	var olAjax = new Ajax.Request('src/fp_overlays_kml.php',{
		method: 'post',
		parameters: { k: kmlfile },
		onSuccess:function (resp) {
			$('OlKmlResult').insert(resp.responseText);
		}
	});
}

function writeObj(obj) {
  var details = "";
  var fieldContents;
  for (var field in obj) {
    fieldContents = obj[field];
    if (typeof(fieldContents) == "function" ) {
      fieldContents = "(function)";
    }
    details += "  " + field + ": " + fieldContents + "\n";
  }
  alert(details);
}

function navhelp(elm,msg) {
	var sMsg = "";
	switch (msg) {
		case "RegisterUsername":
			sMsg = "Please insert a username. It will be visible to the public.";
		break;
		case "RegisterUmail":
			sMsg = "Please insert a valid e-mail. It will NOT be visible to the public.";
		break;
		case "RegisterPW1":
			sMsg = "Please insert a password.";
		break;
		case "RegisterPW2":
			sMsg = "Please confirm the password.";
		break;
	}
	$(elm).innerHTML = sMsg;
}

function leerer(elm) {
	$(elm).innerHTML = "";
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function charCount(o, cntLbl, n) {
	if (null != o) {
		var n_chars = n - o.value.length;
		$(cntLbl).innerHTML = n_chars;
	}
}

function saveBio(src) {
	var ulAjax = new Ajax.Request('src/save'+src+'bio.php',{
		method: 'post',
		parameters: $(src+'bio').serialize(),
		onSuccess:function (resp) {
			if (resp.responseText == 1) {
				blinkHandler('biosave');
			}
    }
	});
}

function resetRequest(itemAsk,itemConfirm) {
		clearTimeout(delTimer);
		$(itemAsk).style.display = 'block';
		$(itemConfirm).style.display = 'none';
}

function delTimeout(itemAsk,itemConfirm) {
		delTimer = setTimeout(function(){resetRequest(itemAsk,itemConfirm)},2000);
}

function delAsk(itemAsk,itemConfirm) {
		delTimeout(itemAsk,itemConfirm);
		$(itemAsk).style.display = 'none';
		$(itemConfirm).style.display = 'block';
}

function delConfirm(fn) {
		clearTimeout(delTimer);
		var tmpFn = new Function(fn);
		tmpFn();
}

function check4num(elm) {
	if (elm.value.length>0) {
		var gotnum = elm.value.match(/^-?\d*(\.\d*)?$/);
		if (gotnum == null) {
			elm.value = "";
			alert('Only numbers from 0-9 and a dot (".") as decimal separator');
		}
	}
}

function check4mobile(elm) {
	if (elm.value.length>0) {
		var gotnum = elm.value.match(/^([0-9 ]){1,18}$/);
		if (gotnum == null) {
			elm.value = elm.value.substr(0,elm.value.length-1);
			alert('Only numbers from 0-9 and spaces (" ")');
		}
		else if (elm.value.substr(0,1)=='1')
		{
			alert('Sorry, service only available outside the USA.');
		}
	}
}

function check4coord(o) {
	if (o.value.length>0) {
		var gotnum = o.value.match(/^-?(\d*\s)?(\d*)?(\.\d*)?$/);
		if (gotnum == null) {
				o.value = "";
				alert('Only coordinates as follows: ddd.dddddd or dd mm.mmmm');
		}
	}
}

function showTooltipWx(marker,wx) {
	tooltip.className="tooltipwx";
	GEvent.clearListeners(map,"click");
	tooltip.style.display = "block";
	var currtype = map.getCurrentMapType().getProjection();
	var point= currtype.fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
	var offset= currtype.fromLatLngToPixel(marker.getLatLng(),map.getZoom());
	var anchor = marker.getIcon().iconAnchor;
	var width = marker.getIcon().iconSize.width;
	var height = 10;
	var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y - height));
	pos.apply(tooltip);
	tooltip.innerHTML = "loading metar/taf...<br/>please wait";
	var fp_id = $('uniqid').value;
	var u_id = $('u_id').value;

	GDownloadUrl('src/fp_mrkrWx_2_metartaf.php?u='+u_id+'&icao='+wx, function(response, status){
			if (response == null || status == -1 ) {
				tooltip.innerHTML = '<span>ERROR: Cannot display weather details.</span>';
			} else {
				tooltip.innerHTML = response;
			}
	});
}

function addWxMrkr(pts,icn,orgid,msg) {
	var wxicons = new GIcon();
	wxicons.image = icon_url + "/wx/" + icn;
	wxicons.iconSize = new GSize(80, 50);
	wxicons.iconAnchor = new GPoint(40, 25);
	var wxMrkr = new GMarker(pts, {icon:wxicons, draggable:false});
	wxMrkr.content = orgid;
	wxmarkers.push(wxMrkr);

	GEvent.addListener(wxMrkr,"click", function() {
		showTooltipWx(wxMrkr,orgid);
	});
	GEvent.addListener(wxMrkr,"dblclick", function() {
		removeWxMrkr(orgid,false);
	});
	return wxMrkr;
}

function closeTooltipWx() {
		tooltip.style.display = "none";
		LeftClickListener = GEvent.addListener(map, "click", leftClick);
}

function getMrkrWx(o,mrkr) {
	if (!Object.isElement(o))
	{
		o = $(o);
	}
	var divOffset = findDivPos(o);
	var xOff = parseFloat(o.style.width.match(/\d+/)) + divOffset[0] + 15;

	$('WxMrkrBoxWorking').style.display = "block";
	$('WxMrkrBoxContent').style.display = "none";

	$('WxMrkrBox').style.top  = divOffset[1] - 3 + 'px';
	$('WxMrkrBox').style.left = xOff + 'px';
	$('WxMrkrBox').style.display = "block";
	var mrkrPoint = markers[mrkr].getLatLng();
	var ulAjax = new Ajax.Request('src/fp_mrkrWx_1_metartaf.php',{
		method: 'post',
		parameters: { u: $('u_id').value, m: mrkr, lat: mrkrPoint.lat().toFixed(6), lon: mrkrPoint.lng().toFixed(6) },
		onSuccess:function (resp) {
				$('WxMrkrBoxWorking').style.display = "none";
				$('WxMrkrBoxContent').style.display = "block";
				$('WxMrkrBoxContent').innerHTML = resp.responseText;

				removeWxMrkr($('metaricao').value,false);

				var pts = new GLatLng($('metarlat').value,$('metarlon').value);
				var orgid = $('metaricao').value;
				var icn = $('metarimg').value;
				var wxMrkr = addWxMrkr(pts,icn,orgid,resp.responseText);
				map.addOverlay(wxMrkr);
				map.panTo(pts);

				var wxpoints = new Array();
				wxpoints.push(markers[mrkr].getLatLng());
				wxpoints.push(pts);
				wxpoly = new GPolyline(wxpoints, "#ff0000", 2, lineOpacity, polyOptions);
				map.addOverlay(wxpoly);

    }
	});

}

function removeWxMrkr(id,all)
{
	closeTooltipWx();
	if(wxpoly) { map.removeOverlay(wxpoly); }
	if(all)
	{
		for(var n = 0; n < wxmarkers.length; n++) {
						map.removeOverlay(wxmarkers[n]);
						GEvent.clearListeners(wxmarkers[n],"click");
						wxmarkers.splice(n, 1);
		}
	}
	else
	{
		for(var n = 0; n < wxmarkers.length; n++) {
				if(wxmarkers[n].content == id) {
						map.removeOverlay(wxmarkers[n]);
						GEvent.clearListeners(wxmarkers[n],"click");
						wxmarkers.splice(n, 1);
						break;
				}
		}
	}
}

function hideMrkrWx() {
	$('WxMrkrBoxContent').innerHTML = "";
	$('WxMrkrBox').style.display = "none";
	$('WxMrkrBoxWorking').style.display = "block";
}

function hideFcastWx() {
	if ($('wxFcastTbl'))
		$('wxFcastTbl').innerHTML = "";
	if ($('wxfcastsub'))
		$('wxfcastsub').style.display = "block";
	if ($('wxfcastsubX'))
		$('wxfcastsubX').style.display = "block";
}

function showTT(o, s) {
	var ulAjax = new Ajax.Request('src/getToolTip.php',{
		method: 'post',
		parameters: { s: s },
		onSuccess:function (resp) {
				$('ToolTipBox').style.display = "block";
				$('ToolTipBoxContent').innerHTML = resp.responseText;

				var divOffset = findDivPos(o);
				var xOff = parseFloat(o.style.width.match(/\d+/)) + divOffset[0] + 15;

				$('ToolTipBox').style.top  = divOffset[1] - 3 + 'px';
				$('ToolTipBox').style.left = xOff + 'px';
    }
	});
}

function hideTT() {
	$('ToolTipBoxContent').innerHTML = "";
	$('ToolTipBox').style.display = "none";
}

function findDivPos(obj)
{
	var curleft = curtop = 0;
	if (obj.offsetParent)
	{
		do {
					curleft += obj.offsetLeft;
					curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
		return [curleft,curtop];
	}
}

function convertCoord(coord)
{
	var retc = "";
	var coordparts = coord.split(" ");
	if (coordparts.length>0)
	{
		if (coordparts.length==2) 
		{
			retc = parseFloat(coordparts[0])+parseFloat(coordparts[1]/60);
		}
		else
			retc = parseFloat(coordparts[0]);			
	}
	return retc;
}

function insertCoordWp() {
	var lat = convertCoord($('coordWpLat').value);
	var lon = convertCoord($('coordWpLon').value);
	if  (!isNaN(lat) && !isNaN(lon))
	{
			var newpt = new GLatLng(lat, lon);
			addCoord(newpt);
	}			
}

function zeigen(elm) {
	$(elm).style.display = "block";
}

function verstecken(elm) {
	$(elm).style.display = "none";
}

function showSingleWp(id) {
			var gpxfile = '';
		if  (isNaN(id*1))
		{
			/* search by icao*/
			gpxfile = 'OverlayICAO-'+id+'.gpx';
		}
		else
		{
			/* search by orgid*/
			gpxfile = 'OverlayID-'+id+'.gpx';
		}
		XMLrequest3 = GXmlHttp.create();
		XMLrequest3.open("GET", gpxfile, true);
		XMLrequest3.onreadystatechange = function() {
				if(XMLrequest3.readyState == 4) {

						var xmlDoc = GXml.parse(XMLrequest3.responseText);
						var wpts = xmlDoc.documentElement.getElementsByTagName("wpt");

						for (i = 0; i<wpts.length; i++) {

								var pts = new GLatLng(parseFloat(wpts[i].getAttribute("lat")),parseFloat(wpts[i].getAttribute("lon")));
								var orgid = parseFloat(wpts[i].getAttribute("orgid"));
								var icn = parseFloat(wpts[i].getAttribute("poi_tp"));
								var userMrkr = addUserMrkr(pts,icn,orgid);
								map.addOverlay(userMrkr);
						}

						$('olUserWpAdd').style.display = "none";
						$('olUserWpRemove').style.display = "block";
				}
		}
		XMLrequest3.send(null);
}

function init_fs_map(t,i) {
		var gpxfile = '/gpxFlightPlan_'+i+'.gpx';
		XMLrequest3 = GXmlHttp.create();
		XMLrequest3.open("GET", gpxfile, true);
		XMLrequest3.onreadystatechange = function() {
				if(XMLrequest3.readyState == 4) {

						var gicons = getGicons();
						recmap[t] = new google.maps.Map2(document.getElementById(t));
						recmap[t].addControl(new GSmallZoomControl3D());

						var bounds = new GLatLngBounds();
						var xmlDoc = GXml.parse(XMLrequest3.responseText);
						var wpts = xmlDoc.documentElement.getElementsByTagName("wpt");
						var rtepts = new Array();
						var smlMrkr;
							
						for (i = 0; i<wpts.length; i++) {
								var pts = new GLatLng(parseFloat(wpts[i].getAttribute("lat")),parseFloat(wpts[i].getAttribute("lon")));
								rtepts.push(pts);
								if (i==0) smlMrkr = new GMarker(pts,gicons['stdr']);
								else smlMrkr = new GMarker(pts,gicons['std']);
								recmap[t].addOverlay(smlMrkr);
								bounds.extend(pts);
						}
						smlMrkr = new GMarker(pts,gicons['stdb']);
						recmap[t].addOverlay(smlMrkr);
						var mZL = recmap[t].getBoundsZoomLevel(bounds);
						recmap[t].setCenter(bounds.getCenter());
						recmap[t].setZoom(mZL);
						var poly = new GPolyline(rtepts, lineColor, lineWeight, lineOpacity, polyOptions);
						recmap[t].addOverlay(poly);

				}
		}
		XMLrequest3.send(null);
}

function init_sml_map(frm) {
	if ($('rec_fp'))
	{
		var i = $('rec_fp').value;
		if (i>0) init_fs_map('recFrmMap',i);
	}
}

function hidePreviewBox()
{
	$('previewBoxContent').innerHTML ="";
	$('previewBoxWorking').show();
	$('previewBox').hide();
}

function openPreviewBox(o,t,i)
{
	$('previewBox').show();
	$('previewBoxContent').innerHTML ="";
	$('previewBoxWorking').show();
	
	var divOffset = findDivPos(o);
	var xOff = divOffset[0] + 60;

	$('previewBox').style.top  = divOffset[1] - 10 + 'px';
	$('previewBox').style.left = xOff + 'px';
	
	var ulAjax = new Ajax.Request('/src/src_boxes_preview_'+t+'.php',{
		method: 'post',
		parameters: { orgid: i, u: $('u_id').value },
		onSuccess:function (resp) {
				$('previewBoxWorking').hide();
				$('previewBoxContent').insert('<div id="#{id}"></div>'.interpolate({id:t+i}));
				if ($(t+i))
					$(t+i).innerHTML = resp.responseText;
				if (t=='rec' || t=='fs' || t=='fp') init_fs_map('previewFrmMap'+i,$('fs_fp').value);
    }
	});
}

function clearIf(o,str)
{
	if (o.value == str) o.value='';
}
function resetTo(o,str)
{
	if (o.value == '') o.value=str;
}

function getShareList(i)
{
	if($('shareInfo'+i).getStyle('display') == 'none')
	{
		var ulAjax = new Ajax.Request('src/getShareList.php',{
			method: 'post',
			parameters: { f: i, u:$('u_id').value },
			onSuccess:function (resp) {
					$('shareInfo'+i).show();
					$('shareInfo'+i).innerHTML = resp.responseText;
			}
		});	
	}
	else
		$('shareInfo'+i).hide();
	
}

function checkEmail(str)
{
	var filter = /^([a-zA-Z0-9._%+-])+@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}$/;
	if (!filter.test(str)) return false;
	else return true;
}

function submitBooking()
{
	var _form = $('frmBooking');
	var sEr = "Missing fields:\n";
	var iEr = 0;

	if (!checkEmail(_form.bkmail.value)) {
		_form.bkmail.style.border = "1px solid red";
		_form.bkmail.focus();
		sEr += "No Valid E-mail Address\n";
		iEr++;
	}
	else
	{
		_form.bkmail.style.border = "1px solid #444";
	}
	
	if (_form.bkname.value.length<3) {
		_form.bkname.style.border = "1px solid red";
		_form.bkname.focus();
		sEr += "No Valid Name\n";
		iEr++;
	}
	else
	{
		_form.bkname.style.border = "1px solid #444";
	}
	
	if (iEr>0)
	{
		alert(sEr);
		return false;
	}
	else
	{
		_form.submit();
	}
}

function fnMngBooking(f,b,s) 
{
	var ulAjax = new Ajax.Request('src/fs_mng_bookings.php',{
		method: 'get',
		parameters: {u:$('u_id').value, f:f, b:b, s:s },
		onSuccess:function (resp) {
				$('mngrbox').innerHTML = resp.responseText;
		}
	});
}

function fnMobileChange(xn) 
{
	var o = $('frmMobileReg').parentNode;
	var ulAjax = new Ajax.Request('src/my_mobile_box.php?xn='+xn,{
		method: 'post',
		parameters: $('frmMobileReg').serialize(),
		onSuccess:function (resp) {
				o.innerHTML = resp.responseText;
		}
	});
}

function checkRecurrence(o)
{
	if (o.value==0)
	{
		$('xtimes').hide();
	}
	else
	{
		$('xtimes').show();
	}
}

function openSmsSub(o,frm)
{
	var pars = Form.serialize(frm);
	pars += '&smsSubID2='+$('uniqid').value;
	Modalbox.show(o.href, {title: o.title, params: pars, width:700 }); 
	return false;
}

function chkFrmSubWx(dest)
{
	var _form = $('frmSmsServiceAdd');
	var sEr = "Error In Form:\n";
	var iEr = 0;

	if ($('mobileactive').value!=1) 
	{
		sEr += "No Valid Phone Number\n";
		sEr += "Please Register Your Mobile\n\n";
		iEr++;
	}
	var now = new Date();
	var dt = new Date();
	var d = _form.fexdt.value;
	var d_ = d.split("-");
	dt.setUTCFullYear(d_[0]);
	dt.setUTCMonth(parseInt(d_[1])-1);
	dt.setUTCDate(d_[2]);
	dt.setUTCHours(parseInt(_form.fexh.value));
	dt.setUTCMinutes(parseInt(_form.fexm.value));
	dt.setUTCSeconds(0);
	dt.setSeconds(dt.getSeconds() - _form.offset.value);

	if (dt-now<60000) {
		sEr += "Please Choose An Execution Date In The Future\n";
		iEr++;
	}
	
	if (iEr>0)
	{
		alert(sEr);
		return false;
	}
	else
	{
		var ulAjax = new Ajax.Request('src/sub_register_'+dest+'.php',{
			method: 'post',
			parameters: _form.serialize(),
			onSuccess:function (resp) {
				$('subbox').innerHTML = resp.responseText;
				setTimeout(function(){Modalbox.hide()},2000);
			}
		});
	}	
}

function chkSmsWxCombo(n)
{
	var _form = $('frmSmsServiceAdd');
	var _felm = _form.elements["smsSubTypeCombo"+n]
	if (_form.elements["smsSubTypeCombo"+n].checked == true) {
    var turner = true;
  } else {
    var turner = false;
  }
	_form.elements["smsSubTypeValW"+n].disabled = turner;
	_form.elements["smsSubTypeValW"+n].checked = false;
	_form.elements["smsSubTypeValT"+n].disabled = turner;
	_form.elements["smsSubTypeValT"+n].checked = false;
	_form.elements["smsSubTypeValQ"+n].disabled = turner;
	_form.elements["smsSubTypeValQ"+n].checked = false;
}

function aircollectShowInPanel(t,u,s,p)
{
	var ulAjax = new Ajax.Request('/src/'+t+'_selected.php',{
		method: 'get',
		parameters: {u: u, s: s, p: p },		
		onSuccess:function (resp) {
			$('col3').innerHTML = resp.responseText;
			bgc = "#c6c6c6";
			var oi = $$('div.ncount');
			if (oi.length>0)
			{
				for (var n=0; n<oi.length; n++) 
				{
					if (oi[n].id != 'info'+s) oi[n].style.backgroundColor = "#ffffff";
				}
			}
			$('info'+s).style.backgroundColor = "#c6c6c6";
			init_fs_map('map',p);
		}
	});
}

function aircollectFilter()
{
	var u = $('initu').value;
	var p = $('filter_pilot').value;
	var r = $('filter_region').value;
	var c = $('filter_ctry').value;
	var a = $('dt_a').value;
	var z = $('dt_z').value;
	var ctp = $('ctp').value;
	var so_v = $('so_v').value;
	var so_d = $('so_d').value;
	var h = radioValue(document.getElementsByName('ctype'));
	var ulAjax = new Ajax.Request('/src/aircollect_index_content.php',{
		method: 'post',
		parameters: {u: u, p: p, r: r, c: c, h: h, a: a, z: z, so_v: so_v, so_d: so_d, ctp: ctp },		
		onSuccess:function (resp) {
			$('content').innerHTML = resp.responseText;
			if ($('initfs'))
			{
				aircollectShowInPanel(u,$('initfs').value,$('initfp').value);
			}
		}
	});
}

function recommendationsFilter()
{
	var u = $('initu').value;
	var p = $('filter_pilot').value;
	var c = $('filter_ctry').value;
	var ctp = $('ctp').value;
	var so_v = $('so_v').value;
	var so_d = $('so_d').value;
	var h = radioValue(document.getElementsByName('ctype'));
	var ulAjax = new Ajax.Request('/src/recommendations_content.php',{
		method: 'post',
		parameters: {u: u, p: p, c: c, h: h, so_v: so_v, so_d: so_d, ctp: ctp },		
		onSuccess:function (resp) {
			$('content').innerHTML = resp.responseText;
			if ($('initfs'))
			{
				aircollectShowInPanel('recommendations',u,$('initfs').value,$('initfp').value);
			}
		}
	});
}



