	/*
		- Input validation
		- window sizing
		- UI state 
	*/

	function initUI ()
	{
	
		var searchDateDOJO = dijit.byId("searchDate");
		if (searchDateDOJO) searchDateDOJO.setValue(new Date());

		var txtQuery = dojo.byId("routetext");
		txtQuery.onkeyup = validateQuery;

		setFields();
	}

	// return true, if char is valid whithin callsign
	function validCSChar ( c ) 
	{
		return isAlphanum(c);
	}
	
	function checkParams ()
	{
		var qryString = dojo.byId("routetext").value;
		if ( qryString.length == 0) {
			alert ('Ihre Eingabe ist leer. Geben Sie ihre Route ein und versuchen es erneut.');
			return false;
		}
		
		var callsign = dojo.byId("idCallsign").value;
		if ( callsign.length == 0) {
			alert ('Geben Sie bitte ein Rufzeichen (Lfz-Kennung oder Flugnummer) aus max. sieben alphanumerischen Zeichen ein und versuchen Sie es erneut.');
			dojo.byId("idCallsign").focus();
			return false;
		}
		
		// strip illegal character
		var i;
		var checkName = "";
		for ( i=0; i<callsign.length; i++) {
			if ( validCSChar(callsign.charAt(i)) ) {
				checkName += callsign.charAt(i);
			}
		}
		checkName = checkName.toUpperCase();
		if ( checkName != callsign && checkName.length > 0 ) {
			callsign = checkName;
			dojo.byId("idCallsign").value = callsign;
		}
		
		// check length
		if ( callsign.length < 4 || callsign.length > 7 ) {
			alert ('Ihr Rufzeichen (Lfz-Kennung oder Flugnummer) muss mindestens 4 und darf höchstens 7 Zeichen lang sein. Korrigieren Sie Ihre Eingabe und versuchen es erneut.');
			dojo.byId("idCallsign").focus();
			return false;
		}

		return true;
	}
	
	// validate user input, request NOTAM
	function validateQuery( e )
	{
		e = (e)?e:((event)?event:null);
		
		var qryString = dojo.byId("routetext").value;
		if ( !qryString || qryString.lenght == 0) {
			// KL, clear route...
			if (myRoute) {
				myRoute.Clear();
			}
		}
		if ( e.keyCode == 13 ) {
			// KL, we hit the enter key
			requestNotamFromForm(true);
		}
	}
	
	function enableFields ( enable )
	{
		var btnSearch = dojo.byId("btnSearch");
		btnSearch.disabled = !enable;
	}
	
	//KL, set state of fields depending on the current state
	function setFields ( )
	{
		var useDate = dojo.byId("useDate");
		
		var searchDateDOJO = dojo.byId("searchDate");
		searchDateDOJO.disabled = !useDate.checked;

		// check for last used callsign 
		var allcookies = document.cookie;
		var pos = allcookies.indexOf("ckCallsign=");
		if ( pos != -1 ) {
			var start = pos + "ckCallsign=".length;
			var end = allcookies.indexOf(";", start);
			if ( end == -1 ) {
				end = allcookies.length;
			}
			var callsign = allcookies.substring(start, end);
			callsign = decodeURIComponent( callsign );

			dojo.byId("idCallsign").value = callsign;
		}
	}

	function buildQueryFromUserInput ()
	{
		var qryString = dojo.byId("routetext").value;
		var searchRadius = dojo.byId("D1").value;
	
		// Datum=5.3.2007
		var date2Use = "";
		var useDate = dojo.byId("useDate");
		if ( useDate.checked ) {
			var searchDate = dijit.byId("searchDate");
			
			date2Use = "Datum=" + dojo.date.locale.format(searchDate.get('value'),
				{datePattern: "yyyy-MM-dd", selector: "date"}) + ";";
			
//			date2Use = "Datum=" + searchDate.getValue() + ";";
		}
		return query = date2Use + "Radius=" + searchRadius + ";"+ qryString;
	}
	
	// build request string
	function requestNotamFromForm (zoomToRoute)
	{
		if ( !checkParams () ) {
			return;
		}
		myZoomToRoute = zoomToRoute;
		
		var callsign = dojo.byId("idCallsign").value;
		
		requestNotam ( buildQueryFromUserInput(), callsign, false ); 
		
		// save callsign for 30 days
		document.cookie = "ckCallsign="+encodeURIComponent(callsign)+";"+
						  "max-age="+(60*60*24*30)+";"+
						  "domain="+document.domain+";"+
						  "path="+"/;"
		
	}

	// create pdf with current setting's in new browser window
	function printNotam()
	{ 
		if ( !checkParams () ) {
			return;
		}
		// startet PDF-Generierung, GET-String muss korrekt gebaut werden ....
		var callsign = dojo.byId("idCallsign").value;
		var myPDFurl = '../pdf/getnotamPDF.php?query=' + escape(buildQueryFromUserInput())  + "&call_sign=" + callsign + "&src=W";
		window.open(myPDFurl,'_blank');
	}

	function ClearError() {
		dojo.byId("requestStatus").innerHTML = "";
		dojo.byId("requestError").innerHTML = "";
	}
	
	function ShowError(error) {
		dojo.byId("requestError").innerHTML = "Error:" + error.message + "<br>";
		dojo.byId("requestStatus").innerHTML = "";
	}
	
	var glbDD = null;
	function setStatusMsg ( msg )
	{
		if ( glbDD == null ) {
			glbDD = new Date().getTime();
		}
		var dd = new Date().getTime();
		console.log((dd-glbDD) + " " + msg);
		dojo.byId("requestStatus").innerHTML = msg;
		glbDD = dd;
	}

	function showNotamPane()
	{
		var container = dijit.byId('infoPages');
		var selTab = dijit.byId('pageTabNotam');
		container.selectChild(selTab);
	}

	function loadHTMLAsync ( urlHTML, idDiv )
	{
		dojo.xhrGet({
			url: urlHTML,
			load: function(data) {
				var contentText = dojo.byId(idDiv);
				contentText.innerHTML = data;
			},
			error: function(error){ 
				ShowError(error); 
			},
			handleAs: "text"
		});
	}
	
	function showContent(url_content) {

		var mainPane = dojo.byId('main_pane');
	
		var content = dojo.byId('help_pane');
		var contentBackground = dojo.byId('contentBackground');
		var contentText = dojo.byId('contentText');


		//HELP CONTENT
		content.style.display = "block";
		content.style.top = parseInt(getObjectTop(mainPane)) +10  + "px";
		content.style.left = parseInt(getObjectLeft(mainPane)) +10  + "px";
		content.style.width = parseInt(getObjectWidth(mainPane)) -20  + "px";
		content.style.height = parseInt(getObjectHeight(mainPane)) -20  + "px";

		contentBackground.style.height = parseInt(getObjectHeight(mainPane)) -20  + "px";
		contentText.style.height = parseInt(getObjectHeight(mainPane)) -65  + "px";
		contentText.style.width = parseInt(getObjectWidth(mainPane)) -50  + "px";
		
		loadHTMLAsync(url_content, 'contentText');
	}

	function hideContent() {
		var content = dojo.byId('help_pane');
		content.style.display = "none";
	}

