// -----------------------------------------------------------------------------------
// Funktionen beim Login: InitLogin() und LastPage()
// -----------------------------------------------------------------------------------
function InitLogin() {
	// Diese Funktion prüft, ob Javascript aktiviert
	// ist (implizit, da der Aufruf ja bereits durch
	// Javascript erfolgt) sowie die richtige Version
	// des Browsers.
	
	if (! is_ie5up && ! is_nav6up) {
		return;
	}

	document.getElementById("Info").style.visibility="hidden";
		
	var doc = window.CookieFrame.document;
	setCookie(doc,"intOSIRIS!Cookies","true");
	var c = getCookie(doc,"intOSIRIS!Cookies");				
	if (! c || c.length == 0) {
		document.getElementById("Cookie").style.visibility="visible";
		return;
	}
	
	// Checkboxen nach Cookie setzen:
	var c = getCookie(doc,"intOSIRIS!ClientsettingsV3");
	var vis = document.getElementById("withLayers").checked;
	var info = document.getElementById("withSelection").checked;
	var saved = document.getElementById("useSavedSettings").checked;
	
	// Gibt es einen Anmeldemodus?
	var anmeldung = 0;
	if (document.getElementById("LoginMode") != null) {
		for (var i = 0; i < Anmeldemodi.length; i++) {
			if (document.LoginMode[i].checked == true)
			anmeldung = i;
		}
	}
	if (! c || c.length < 3) {
		// Cookie neu erzeugen:
		var cStr = "";
		if (vis == true) {
			cStr = "t";
		}
		else { 
			cStr = "f";
		}
		if (info == true) {
			cStr += "t";
		}
		else {
			cStr += "f";
		}
		
		if (saved == true) {
			cStr += "t";
		}
		else {
			cStr += "f";
		}
		cStr += anmeldung;				
		setCookie(doc,"intOSIRIS!ClientsettingsV3",cStr,92);
	}
	else {
		document.getElementById("withLayers").checked = (c.substring(0,1)=='t');
		document.getElementById("withSelection").checked = (c.substring(1,2)=="t");
		document.getElementById("useSavedSettings").checked = (c.substring(2,3)=="t");
		if (document.getElementById("LoginMode") != null) {
			var ix = parseInt(c.substring(3,4));
			if (! ix || ix == Number.NaN) ix = 0;
				document.LoginMode[ix].checked = true;
		}
	}

	document.getElementById("Login").style.visibility="visible";
	login_mode_changed();
	
	if (document.getElementById("loginButton") != null) {
		try {
			document.getElementById("loginButton").focus();
		} catch(er) {}
	}
	else {
		try {
			document.getElementById("username").focus();
		} catch(er) {}
	}
	
	client_options_changed();
	checkSavedSettings();
	set_cursor("default");
}
function checkSavedSettings() {
	// Prüft, ob für den User gespeicherte Einstellungen vorhanden sind
	
	var username="System";
	if (document.getElementById("username") != null &&
	    document.getElementById("username").value.replace(/^\s*|\s*$/g,"") != "")
		username = document.getElementById("username").value.replace(/^\s*|\s*$/g,"");
	try {
		var doc = window.CookieFrame.document;
	} catch(err) {
		return;
	}
	
	var c = getCookie(doc,"OSIRIS!"+username);

	if (c != null && c.length > 0) {
		document.Options.useSavedSettings.disabled=false;
	}
	else {
		document.Options.useSavedSettings.disabled=true;
	}	
}
function startLogin() {
	// Startet das Login beim GIS

	document.loginForm.SavedSettings.value = "";
	if (document.Options.useSavedSettings.disabled == false &&
	    document.Options.useSavedSettings.checked == true) {

		var username="System";
		if (document.getElementById("username") != null &&
		    document.getElementById("username").value.replace(/^\s*|\s*$/g,"") != "")
			username = document.getElementById("username").value.replace(/^\s*|\s*$/g,"");
	
		var doc = window.CookieFrame.document;
		var c = getCookie(doc,"OSIRIS!"+username);
		if (c != null && c.length > 0)
			document.loginForm.SavedSettings.value = c;
		
		// eventuell existieren noch weitere Cookies
		var count = 1;
		c = getCookie(doc,"OSIRIS!"+username+count);
		while (c != null) {
            document.loginForm.SavedSettings.value += c;
            count++;
            c = getCookie(doc,"OSIRIS!"+username+count);
        }
	}

	var wait_el = document.getElementById("WaitLogin");
	if (wait_el != null) {
		if (document.loginForm.loginButton != null) {
			try {
				document.loginForm.loginButton.focus();
			} catch(er) {}
		}
		if (document.getElementById("Login") != null) 
			document.getElementById("Login").style.visibility="hidden";
		if (document.getElementById("UserLogin") != null) 
			document.getElementById("DirectLogin").style.visibility="hidden";
		if (document.getElementById("DirectLogin") != null) 
			document.getElementById("UserLogin").style.visibility="hidden";
		
		document.getElementById("WaitLogin").style.visibility="visible";
	}	
	set_cursor('wait','Aktiv...');
	return true;
}

function LastPage() {
	// Springt zurück zur letzten Seite. Wird benutzt
	// bei einer fehlerhaften Anmeldung
	document.location.href="../index.jsp";
	return true;
}
function client_options_changed() {
	// Callback für die Checkboxen bei der Anmeldung
	// Diese bestimmen das Aussehen der Client-Applikation
	var vis = document.getElementById("withLayers").checked;
	var info = document.getElementById("withSelection").checked;
	var saved = document.getElementById("useSavedSettings").checked;
	
	var start_page = "html/Application.jsp";
	var anmeldung = 0;
	if (document.getElementById("LoginMode") != null) {
		for (var i = 0; i < Anmeldemodi.length; i++) {
			if (document.LoginMode[i].checked == true) {
				anmeldung = i;
				start_page = Anmeldemodi[i][3];
			}
		}
	}	
	if (vis == true) {
		if (info == true)
			if (is_ie5up || is_opera5up) 
				document.getElementById("OnSuccess").value= start_page + "?navigation=true&browser=true&mozilla=false";
			else
				document.getElementById("OnSuccess").value= start_page + "?navigation=true&browser=true&mozilla=true";
		else
			if (is_ie5up || is_opera5up) 
				document.getElementById("OnSuccess").value= start_page + "?navigation=true&browser=false&mozilla=false";
			else
				document.getElementById("OnSuccess").value= start_page + "?navigation=true&browser=false&mozilla=true";
	}
	else {
		if (info == true)
			if (is_ie5up || is_opera5up) 
				document.getElementById("OnSuccess").value= start_page + "?navigation=false&browser=true&mozilla=false";
			else
				document.getElementById("OnSuccess").value= start_page + "?navigation=false&browser=true&mozilla=true";
		else
			if (is_ie5up || is_opera5up) 
				document.getElementById("OnSuccess").value= start_page + "?navigation=false&browser=false&mozilla=false";
			else
				document.getElementById("OnSuccess").value= start_page + "?navigation=false&browser=false&mozilla=true";
	}

	var doc = window.CookieFrame.document;
	var cStr = "";
	if (vis == true) {
		cStr = "t";
	}
	else { 
		cStr = "f";
	}
	if (info == true) {
		cStr += "t";
	}
	else {
		cStr += "f";
	}
	if (saved == true) {
		cStr += "t";
	}
	else {
		cStr += "f";
	}

	cStr += anmeldung;				
	
	setCookie(doc,"intOSIRIS!ClientsettingsV3",cStr,92);

        // Wenn es einen Eintrag für Edit gibt, dann muss der zugehörige 
        // Parameter weitergereicht werden an die OnSuccessMethode
        if ((document.getElementById("edit") != null) && document.getElementById("edit").value != "") {
            
            var call = document.getElementById("OnSuccess").value;
            document.getElementById("OnSuccess").value = call+"&edit="+document.getElementById("edit").value+"&";
        }
}
function withSelectionChanged() {
	var checked = ! document.Options.withSelection.checked;
	document.Options.withSelection.checked = checked;
	client_options_changed();	
}
function withLayersChanged() {
	var checked = ! document.Options.withLayers.checked;
	document.Options.withLayers.checked = checked;
	client_options_changed();
}
function useSavedSettingsChanged() {
	if (document.Options.useSavedSettings.disabled == true)
		return;
	var checked = ! document.Options.useSavedSettings.checked;
	document.Options.useSavedSettings.checked = checked;
	client_options_changed();
}

function login_mode_changed() {
	// Callback, wenn sich der Anmeldemodus verändert hat
	if (! document.getElementById("LoginMode"))
		return;
	
	var anmelde_mode = 0;
	for (var i = 0; i < Anmeldemodi.length; i++) {
		if (document.LoginMode[i].checked == true)
			anmelde_mode = i;
	}
	
	var def_user = Anmeldemodi[anmelde_mode][1];
	var anmeldung = null;
	if (def_user == "" && Anmeldemodi[anmelde_mode][0].indexOf("Passwort") > 0)
		anmeldung = true;
	else
		anmeldung = false;

	if (anmeldung == true) {
		if (cached_user != "")
		      	document.loginForm.username.value = cached_user;
		else
			document.loginForm.username.value = "";

		if (cached_pwd != "")
			document.loginForm.password.value = cached_pwd;
		else
		      document.loginForm.password.value = "";
			      
		document.getElementById("DirectLogin").style.visibility = "hidden";
		document.getElementById("UserLogin").style.visibility = "visible";
		document.getElementById("UserLogin").style.display = "block";
		checkSavedSettings();
		try {
			document.loginForm.username.focus();
		} catch(er) {}
		client_options_changed();
		return;
	} 	
	
	var new_user = true;
	var user = document.loginForm.username.value;
	var new_pwd = true;
	var pwd = document.loginForm.password.value;

	for (var i = 0; i < Anmeldemodi.length; i++) {
		if (Anmeldemodi[i][1] == user) new_user = false;
		if (Anmeldemodi[i][2] == pwd) new_pwd = false;
		
	}
	if (user != "" && new_user == true) {
		cached_user = document.loginForm.username.value;
	      	cached_pwd = document.loginForm.password.value;
	}
	document.loginForm.username.value = Anmeldemodi[anmelde_mode][1];
	document.loginForm.password.value = Anmeldemodi[anmelde_mode][2];
	document.getElementById("DirectLogin").style.visibility = "visible";
	document.getElementById("UserLogin").style.visibility = "hidden";
	checkSavedSettings();
	document.loginForm.loginButton.value=Anmeldemodi[anmelde_mode][4];
	try {
		document.loginForm.loginButton.focus();
	} catch(er) {}
	client_options_changed();
}

		
function getCookie(doc,name)
{
    if (! doc)
	doc = document;

    var c = new Object();
    var i = 0;
    var clen = doc.cookie.length;
    while (i < clen)
    {
         var endstr = doc.cookie.indexOf (";", i);
         if (endstr == -1) endstr = doc.cookie.length;

         var v = unescape(doc.cookie.substring(i, endstr));
         var key = v.substring(0, v.indexOf("=", 0));
         var val = v.substring(v.indexOf("=") + 1);
         c[key] = val;
         i = endstr + 2; // Leerzeichen nach ; überspringen
    }
    if(name) return c[name];
    return c;
}

function setCookie(doc,name, value, days)
{
    if (! doc)
	doc = document;

    var cookieStr = name + "=" + escape(value);

    if (days != null) {
	var expire = new Date();
	expire.setTime(expire.getTime() + 86400000 * days);
	cookieStr += "; expires=" + expire.toGMTString();
    }
    doc.cookie = cookieStr+ ";";
}

function standard_onload() {
	// Dummy-Funktion beim Starten einer
	// Standard-Seite, die "html/standard_top.jsp" inkludiert
}
function submitenter(myfield,e) {
	// Führt die Login-Form auch mit der Enter-Taste aus 

  var keycode;
  if (window.event) keycode = window.event.keyCode;
  else if (e) keycode = e.which;
  else return true;

  if (keycode == 13) {
      myfield.form.onsubmit();
      myfield.form.submit();
      return false;
  }
  else
  return true;
}

