// **********************************************************************
var nn=(document.layers)?true:false;
var ie=(document.all)?true:false;

// Doppelklick verhindern
var count_last_click = 0;

/* ******************************************************************** */
// checkKlick - Doppelklick verhindern
function checkKlick() {
	var now = new Date();
	if (now.getTime() < count_last_click + 2000) {
		// alert("Bitte nicht Doppelklicken !!!")
		return false;
	}
	count_last_click = now.getTime();
	
	return true;
}

/* ******************************************************************** */
// validateImmoSave
function validateImmoSave(buttonId) {
	//alert(buttonId);
	
	// Go 2 up, because we are in a subcontrol
	var baseId = leftBack(leftBack(buttonId, ":"), ":");  
	
	//alert(baseId + ":inputTextAnbieter");
	var elAnbieter 	= dojo.byId(baseId + ":inputTextAnbieter");
	var elObjektTyp = dojo.byId(baseId + ":ObjectType");
	var elStandort 	= dojo.byId(baseId + ":comboBoxStandort");
	
	//alert(elAnbieter.value);
	//alert(elObjektTyp.value);
	//alert(elStandort.value);
	
	if (elObjektTyp.value=="") {
		alert("Objekttyp muss angegeben werden!");
		elObjektTyp.focus();
		return false;
	}
	
	if (elStandort.value=="") {
		alert("Standort muss angegeben werden!");
		elStandort.focus();
		return false;
	}
	
	if (elAnbieter.value=="") {
		alert("Anbieter muss angegeben werden!");
		elAnbieter.focus();
		return false;
	}
}

/* ******************************************************************** */
// openDialogReject
function openDialogReject(dialogId) {
	dijit.byId(dialogId).show();
}

/* ******************************************************************** */
// doDialogReject
function doDialogReject(arg, noteid, user, unid) {
	// URL zum Auruf des Agents
	var agentUrl = getDBURL() + "/(XPImmoHttpRequest)?OpenAgent";
	
	// URL dieser Seite im Readmode
	var readURL = getDBURL() + "/immobilieRead.xsp?action=openDocument&unid="+unid;
	
	// Send this Content
	var content = new Object();
	content["comment"] = arg.dialogRejectReason;
	content["nid"] = noteid;
	content["state"] = "9";
	content["user"] = user;
	
	dojo.xhrPost( {
        url: agentUrl,
		handleAs:"text",
        load: function(response){
            location.href = readURL;
        },
        error: function(data){
                alert("xhrPost Error: " + data);
        },
        timeout: 2000,
        content: content
	}
	);
	return true;
}

/* ******************************************************************** */
// openDialogReject	
function openDialogDelete(dialogId) {
	dijit.byId(dialogId).show();
}

/* ******************************************************************** */
// doDialogDelete	
function doDialogDelete(arg, noteid, user, unid) {
	// URL zum Auruf des Agents
	var agentUrl = getDBURL() + "/(XPImmoHttpRequest)?OpenAgent";
	
	// URL dieser Seite im Readmode
	var readURL = getDBURL() + "/meinportal.xsp";
		
	// Send this Content
	var content = new Object();
	content["nid"] = noteid;
	content["state"] = arg.DialogDeleteReason;
	content["user"] = user;
	
	dojo.xhrPost( {
        url: agentUrl,
		handleAs:"text",
        load: function(response){
            location.href = readURL;
        },
        error: function(data){
                alert("xhrPost Error: " + data);
        },
        timeout: 2000,
        content: content
	}
	);
	return true;
}

/* ******************************************************************** */
//@Left equivalent
function strLeft(sourceStr, keyStr){
	return (sourceStr.indexOf(keyStr) == -1 | keyStr=='') ? '' : sourceStr.split(keyStr)[0];
}

/* ******************************************************************** */
//@Right equivalent
function strRight(sourceStr, keyStr){
	idx = sourceStr.indexOf(keyStr);
	return (idx == -1 | keyStr=='') ? '' : sourceStr.substr(idx+ keyStr.length);
}

/* ******************************************************************** */
//@RightBack equivalent
function rightBack(sourceStr, keyStr){
	arr = sourceStr.split(keyStr);
	return (sourceStr.indexOf(keyStr) == -1 | keyStr=='') ? '' : arr.pop()
}

/* ******************************************************************** */
//@LeftBack equivalent
function leftBack(sourceStr, keyStr){
	arr = sourceStr.split(keyStr)
	arr.pop();
	return (keyStr==null | keyStr=='') ? '' : arr.join(keyStr)
}

/* ******************************************************************** */
//@Middle equivalent
function middle(sourceStr, keyStrLeft, keyStrRight){
	return strLeft(strRight(sourceStr,keyStrLeft), keyStrRight);
} 

/* ******************************************************************** */
//@trim
function trim(sourceStr){
	//alert(sourceStr);
	//alert(dojo.query(".newskey")[0].innerHTML);
	return sourceStr.replace(/^\s+|\s+$/g, "");
} 

/* ******************************************************************** */
//@fulltrim
function fulltrim(sourceStr){
	return sourceStr.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,"").replace(/\s+/g,"");
}

/* ******************************************************************** */
// trimNonNumeric
function trimNonNumeric(sourceStr) {
	var value = fulltrim(sourceStr);
	value = value.replace(/[^0-9]/g, '');
	return value;
}

/* ******************************************************************** */
// trimNonNumericExcept
function trimNonNumericExceptKomma(sourceStr) {
	//var value = fulltrim(sourceStr);
	var value = sourceStr.replace(/[^0-9,',']/g, '');
	return value;
}

/* ******************************************************************** */
// toggleCheckBoxGroupTeilflaechen
function toggleCheckBoxGroupTeilflaechen(baseId) {
	//alert(baseId);
	var checkBoxEl = dojo.byId(baseId + ":Teilflaechennutzung");
	var checkBoxes = dojo.query("input", checkBoxEl);
	var el = null;
	//alert(checkBoxes.length);
	var counter = 0;
	for (counter=0; counter < checkBoxes.length; counter++) {
		//alert(baseId + ":panel" + checkBoxes[counter].value);
		el = dojo.byId(baseId + ":panel" + checkBoxes[counter].value)
		if (checkBoxes[counter].checked) {
			// display
			el.style.display = "inline";
		} else {
			// hide
			el.style.display = "none";
		}
	}
}

/* ******************************************************************** */
// stat: adds user to the statistik
// @param: type - immobilie, standort
// @param: key - immobilie: the O_NR, standort: the AGS
function stat(type, key){
	var seed = strRight("" + Math.random(), ".");
	var statUrl = "/immostat.nsf/(stat)?OpenAgent&type=" + type + "&key=" + key + "&random=" + seed;
	
	// alert(statUrl);
	
	dojo.xhrGet ({
    	// Location of the HTML content we want to grab
    	url: statUrl,

    	// Called when the page loaded successfully
    	load: function (data) {
    		//nothing
        },

        // Called if there was an error (such as a 404 response)
        error: function (data) {
    		//nothing
        }
    });
	
	return false;
}

/* ******************************************************************** */
// unid
function toggleMerkzettel(unidFieldId, merkzettelLinkId) {
	//alert(unidFieldId);
	var unidField = dojo.byId(unidFieldId);
	var linkEl = dojo.byId(merkzettelLinkId);
	var unid = unidField.innerHTML;
	var previousLink = linkEl.innerHTML;
	
	//alert(unid);
	//alert(previousLink);
	//linkEl.innerHTML = '<img src="/' + getDBURL() + '/loading.gif" />';
	linkEl.innerHTML = '<img src="./loading.gif" />';
	//alert(linkEl.innerHTML);
	
	// Ajax Call
	var urla = getDBURL() + "/(Merkzettel)?OpenAgent&unid=" + unid;
		dojo.xhrPost({
		url: urla,
		content: {
		},
		load: function(data) {
				linkEl.innerHTML = data;
		},
		error: function(data) {
			alert("Error: " + data);
			linkEl.innerHTML = previousLink;
		} 
	});	
}

/* ******************************************************************** */
// unid
function removeFromMerkzettel(unid) {
	//alert(unid);
	
	// Ajax Call
	var urla = getDBURL() + "/(Merkzettel)?OpenAgent&unid=" + unid;
		dojo.xhrPost({
		url: urla,
		content: {
		},
		load: function(data) {
			// Reload Page
			location.reload();
		},
		error: function(data) {
			// Reload Page
			location.reload();
		} 
	});		
}

/* ******************************************************************** */
// deleteDocument, deletes the given Document
// only if user is allowed to
function deleteDocument(unid) {
	var redirectTo = location.href; // remember the current URL
	location.href = getDBURL()+"/(DeleteDocument)?OpenAgent&unid="+unid+"&redirectTo="+redirectTo;
}

/* ******************************************************************** */
// toggleStandortSelect4Status
function toggleStandortSelect4StatusIDS(comboID, selectMultipleID, selectSinlgeID) {
	var val = document.getElementById(comboID).value;
	
	//alert(val);
	
	// Ab Kommunen-User
	if (val > "2") {
		document.getElementById(selectMultipleID).style.display="block";
		document.getElementById(selectSinlgeID).style.display="none";
	} else {
		document.getElementById(selectMultipleID).style.display="none";
		document.getElementById(selectSinlgeID).style.display="block";
	}
}

/* ******************************************************************** */
// openKontaktAnfrage
function openKontaktAnfrage() {
	var urla = getDBURL() + "/Kontaktanfrage?OpenAgent";
	//alert(urla);
	location.href=urla;
}

/* ******************************************************************** */
// validateMeMakler	
function validateMeMakler(standortId) {
	var standort = dojo.byId(standortId).value;
	// alert(standort)
	if(standort=="") {
		alert("Bitte w\u00E4hlen Sie Ihren Standort aus.");
		return false;
	}
	
	return true;
}

/* ******************************************************************** */
// openMakeMeMakler	
function openMakeMeMakler(unid, standortId) {

	var standort = dojo.byId(standortId).value;
	// alert(standort)
	if(standort=="") {
		alert("Bitte w\u00E4hlen Sie Ihren Standort aus.");
		return false;
	}
	
	var urla = getDBURL() + "/MakeMeMakler?OpenAgent&unid=" + unid + "&standort=" + standort;
	//alert(urla);
	location.href=urla;
}

/* ******************************************************************** */
// openMakeMeMakler	
function openGiveMaklerStatus(unid, status) {
	var urla = getDBURL() + "/PersonSetStatus?OpenAgent&unid=" + unid + "&status=" + status;
	//alert(urla);
	location.href=urla;
}

/* ******************************************************************** */
// openStandortLinkAssistant	
function openStandortLinkAssistant(dialogId) {
	dijit.byId(dialogId).show();
}

/* ******************************************************************** */
// openPWDReminderDialog	
function openPWDReminderDialog(PWDReminderDialogID) {
	dijit.byId(PWDReminderDialogID).show();
}

/* ******************************************************************** */
// doPWDReminder	
function doPWDReminder(dialogFields) {
	if (dialogFields.email == "") {
		alert("Bitte geben Sie Ihre E-Mail-Adresse an!");
	} else {
		var urla = getDBURL() + "/(PWDReminderEmail)?OpenAgent&internetaddress=" + dialogFields.email;
		dojo.xhrPost({
		url: urla,
		content: {
		},
		load: function(data) {
			alert(data);
		},
		error: function(data) {
			alert("Error: " + data);
		} 
	});	
	}
}

/* ******************************************************************** */
// openPWDChangeDialog	
function openPWDChangeDialog(PWDChangeDialogID) {
	dijit.byId(PWDChangeDialogID).show();
}

/* ******************************************************************** */
// doPWDChange	
function doPWDChange(dialogFields) {
	if (! checkPWD(dialogFields.newpw)) {
		// handled in checkPWD
	} else if (dialogFields.confirmpw != dialogFields.newpw) {
		alert("Passw\u00F6rter stimmen nicht \u00FCberein, Passwort wird nicht ge\u00E4ndert!");
	} else {
		var urla = getDBURL() + "/(PWDSetNew)?OpenAgent&newPWD=" + dialogFields.newpw;
		dojo.xhrPost({
		url: urla,
		content: {
		},
		load: function(data) {
			alert(data);
		},
		error: function(data) {
			alert("Error: " + data);
		} 
	});	
	}
}

/* ******************************************************************** */
// doFillStandortData
// @param: standortKennziffer, die StandortKennziffer
// Bef\u00FCllt an Hand der Auswahl des Standortes, die VerkehrsFelder, 
// durch Aufruf der Funktion doFillStandortData
function doFillStandortData(standortKennziffer) {
	//alert(standortKennziffer);
	
	// List containing all the items, that should be updated
	//var urla = "http://notesdev5.fn.atbits.de/immoportal.nsf/StandortByKennziffer?ReadViewEntries&Count=1&StartKey=" + standortKennziffer; 
	var urla = getDBURL() + "/StandortByKennziffer?ReadViewEntries&Count=1&StartKey=" + standortKennziffer;
	//alert(urla);
	
	// do the xhr
	dojo.xhrPost({
		url: urla,
		handleAs: "xml",
		content: {
		},
		load: moveValuesVerkehr,
		error: function(data) {
			//alert("Error: " + data);
		} 
	});	
}

/* ******************************************************************** */
// doFillStandortData
// @param: date, die xml-Daten
// Bef\u00FCllt die Verkehrsfelder
function moveValuesVerkehr(data, ioArgs) {
	//alert(data);

	//var verkehrnode = dojo.query("text", data)[1];
	var verkehrnode = data.getElementsByTagName("text")[1];
	//alert(verkehrnode.firstChild.nodeValue);
	
	/*
		@Text(EntfernungAutobahn) + "~~" +
		@Text(EntfernungBundesstrasse) + "~~" +
		@Text(EntfernungBahnhof) + "~~" +
		@Text(EntfernungGueterbahnhof) + "~~" +
		@Text(EntfernungOPNV) + "~~" +
		@Text(EntfernungHafen) + "~~" +
		@Text(EntfernungFlughafen)
	*/
	var verkehrsInfo = verkehrnode.firstChild.nodeValue;
	var verkehrsArray = verkehrsInfo.split("~~");
	//alert(verkehrsArray);
	
	var nodes = dojo.query(".selectorVerkehr");
	for(counter=0; counter < nodes.length; counter++) {
		var vId = rightBack(nodes[counter].id, ":");
		switch (vId) {
		case "EntfernungAutobahn":
		  dojo.byId(nodes[counter].id).value = verkehrsArray[0];
		  break;
		case "EntfernungBundesstrasse":
		  dojo.byId(nodes[counter].id).value = verkehrsArray[1];
		  break;
		case "EntfernungBahnhof":
		  dojo.byId(nodes[counter].id).value = verkehrsArray[2];
		  break;
		case "EntfernungGueterbahnhof":
		  dojo.byId(nodes[counter].id).value = verkehrsArray[3];
		  break;
		case "EntfernungOPNV":
		  dojo.byId(nodes[counter].id).value = verkehrsArray[4];
		  break;
		case "EntfernungHafen":
		  dojo.byId(nodes[counter].id).value = verkehrsArray[5];
		  break;
		case "EntfernungFlughafen":
		  dojo.byId(nodes[counter].id).value = verkehrsArray[6];
		  break;
		}
	}	
} 

/* *********************************************************************
 * Does a Login in the Background via Dojo - Ajax
 * 
 * Login in 2 Schritten: 
 *						1. Validierung von User und PWD
 *						2. Anmeldung
 */
var doLogin_erg = ""
function doLogin(userNameId, passwordId){

	var urla = getDBURL() + "/(ValidateLogin)?OpenAgent&username=" + dojo.byId(userNameId).value + "&password=" + dojo.byId(passwordId).value;
	doLogin_erg = ""
	//alert(urla + "&" + dojo.byId(userNameId).value + "&" + dojo.byId(passwordId).value);
	dojo.xhrPost({
		url: urla,
		content: {
			// tut hier nicht ???
			username: dojo.byId(userNameId).value, 
			password: dojo.byId(passwordId).value
		},
		load: function(data) {
			//alert("Success:" + data);
			doLogin_erg = trim(data);
			//window.location.href = window.location.href;
			doLoginPhase2(userNameId, passwordId);
		},
		error: function(data) {
			//alert("Error: " + data);
			doLogin_erg = trim(data);
			//window.location.href = window.location.href;
		} 
	});	
}

function doLoginPhase2(userNameId, passwordId){
	// Wenn die Passwort Validierung fehlschl\u00E4gt, dann beenden
	if (doLogin_erg!="OK") {
		alert(doLogin_erg);
		return;
	}

	// CMS Dyna-EditMode ausschalten
	if (dojo.cookie.isSupported()) {
		dojo.cookie("cms.dynaEditMode", "0");
	}

	//alert("doLogin=" + dojo.byId(userNameId).value + "," + dojo.byId(passwordId).value);
	var urli = getDBURL() + "/names.nsf?login";
	//alert(urli);
	dojo.xhrPost({
		url: urli,
		content: {
			username: dojo.byId(userNameId).value, 
			password: dojo.byId(passwordId).value
		},
		load: function(data) {
			//alert("Success:" + data);
			// check if we should redirect after login
			var redirectTo = rightBack(window.location.href, "redirectTo=");
			//alert(redirectTo)
			if (redirectTo != "") {
				//alert("redirect now");
				window.location.href=redirectTo; // do the redirect
			} else {
				window.location.href = window.location.href;
			}			
		},
		error: function(data) {
			//alert("Error: " + data);
			window.location.href = window.location.href;
		} 
	});
	
	return false;
}

/* *********************************************************************
 * Returns the URL to the database
 */
function getDBURL(){
	var dbname = strLeft(document.location.href, ".nsf") + ".nsf";
	if (dbname=="" || dbname=="/") {
		dbname = atb_dbname;
		alert(dbname);
	}
	return dbname;
}

/* *********************************************************************
 * Does a Logout in the Background via Dojo - Ajax
 */
function doLogout(userNameId, passwordId){
	var url = document.location.href;
	//document.location.href = getDBURL() + "?Logout&redirectto=" + url
	//alert(getDBURL() + "?Logout&redirectto=" + getDBURL());
	document.location.href = getDBURL() + "?Logout&redirectto=" + getDBURL();
	return true;
}

// **********************************************************************
function getKeyPressed(e) {
	var evt = window.event? event : e;
	var iKey = (evt.charCode)?evt.charCode: ((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0));
	return iKey;
}

/* ******************************************************************** */
function validateRegistration() {
	
	var content = getAllFieldsAndValues();
	
	// E-Mail	
	if (! isValidEmail(content.internetaddress)) {
		alert("Bitte geben Sie eine gltige E-Mail-Adresse ein!");
		return false;
	}
	
	// Vorname
	if (trim(content.firstname) == "") {
		alert("Bitte geben Sie Ihren Vornamen ein!");
		return false;
	}

	// Nachname
	if (trim(content.lastname) == "") {
		alert("Bitte geben Sie Ihren Nachnamen ein!");
		return false;
	}

	// HTTPPassword_clearText
	if (! checkPWD(content.HTTPPassword_clearText)) {
		return false;
	}

	// Str
	if (trim(content.OfficeStreetAddress) == "") {
		alert("Bitte geben Sie Ihre Strasse ein!");
		return false;
	}
		
	// Hausnummer
	if (trim(content.OfficeNumber) == "") {
		alert("Bitte geben Sie Ihre Hausnummer ein!");
		return false;
	}
	
	// PLZ
	if (trim(content.OfficeZIP) == "") {
		alert("Bitte geben Sie Ihre PLZ ein!");
		return false;
	}

	// Ort
	if (trim(content.OfficeCity) == "") {
		alert("Bitte geben Sie Ihre Ort ein!");
		return false;
	}

	// checkBoxBestatigung
	//alert(content.checkBoxBestatigung);
	if( content.checkBoxBestatigung != true ) {
		alert("Sie m\u00FCssen die Rechtlichen Regelungen und den Haftungsausschluss best\u00E4tigen!");
		return false;
	}

	// Makler werden
	if (content.radioInserierenJa == true) {
		// alert(content.atb_standort);
		if(content.atb_standort=="") {
			alert("Bitte w\u00E4hlen Sie einen Standort aus, der Verantwortliche f\u00FCr diesen Standort muss Ihrer Registrierung zustimmen!");
			// dijit.byId("registrationDialog").hide();
			return false;
		}
	}

	dijit.byId("registrationDialog").show();
	
	if (!checkKlick()) {
		dijit.byId("registrationDialog").hide();
		return false;
	}

	return true;
}

/* ******************************************************************** */
// checkPWD
function checkPWD(pwd) {
	
	// PWD leer
	if (trim(pwd) == "") {
		alert("Bitte geben Sie ein Passwort ein!");
		return false;
	}
	
	// PWD < 6 Zeichen
	if (pwd.length < 6) {
		alert("Bitte geben Sie ein Passwort mit mindestens 6 Zeichen ein!");
		return false;
	}
	
	// PWD +
	if (pwd.indexOf("+") > -1) {
		alert("Bitte verwenden Sie kein + Zeichen im Passwort!");
		return false;
	}

	// PWD *
	if (pwd.indexOf("*") > -1) {
		alert("Bitte verwenden Sie kein * Zeichen im Passwort!");
		return false;
	}

	// PWD |
	if (pwd.indexOf("|") > -1) {
		alert("Bitte verwenden Sie kein | Zeichen im Passwort!");
		return false;
	}


	// PWD Wiederholung 
	/*
	if (trim(passwdWDH) == "") {
		alert("Bitte geben Sie ein Passwort-Wiederholung ein!");
		return false;
	}
	if (pwd!=passwdWDH) {
		alert("Passwort und Passwort-Wiederholung sind nicht identisch!");
		return false;
	}
	*/

	return true;
}

/* ******************************************************************** */
function doRegistration(idEmail, idPWD, idVorname, idNachname, idAccept, idInserieren, idStandort) {
	
	dijit.byId("registrationDialog").show();
	
	if (!checkKlick()) {
		dijit.byId("registrationDialog").hide();
		return false;
	}
	
	//alert("Register");
	
	var email 		= dojo.byId(idEmail).value; 
	var password 	= dojo.byId(idPWD).value; 
	var firstname 	= dojo.byId(idVorname).value; 
	var lastname 	= dojo.byId(idNachname).value; 
	var accept 		= dojo.byId(idAccept).checked;
	var becomeMakler = dojo.byId(idInserieren).checked;	
	var standort 	= dojo.byId(idStandort).value;	
	
	//alert(accept); 
	
	if(becomeMakler==true || becomeMakler=="true") {
		if(standort=="") {
			alert("Bitte w\u00E4hlen Sie einen Standort aus, der Verantwortliche fr diesen Standort muss Ihrer Registrierung zustimmen!");
			dijit.byId("registrationDialog").hide();
			return false;
		}
	}
	
	var url = getDBURL() + "/register?OpenAgent&internetaddress=" + email 
		+ "&password=" + password 
		+ "&firstname=" + firstname
		+ "&lastname=" + lastname
		+ "&accept=" + accept
		+ "&standort=" + standort
		+ "&becomeMakler=" + becomeMakler;
		
	//alert(url);
		
	location.href = url;
}

/* *********************************************************************
 * viewPostLoadRT
 * PostLoad RichText via Dojo - Ajax
 */
function viewPostLoadRT(unid){
	var rturl = getDBURL() + "/(rtBody)/" + unid + "?OpenDocument";
	var id = "itRow" + unid;
	
	dojo.xhrGet ({
    	// Location of the HTML content we want to grab
    	url: rturl,

    	// Called when the page loaded successfully
    	load: function (data) {
			//alert(rturl);
    		//alert(data);
    		//alert(id);
    		//alert(dojo.byId(id).innerHTML);
            //dojo.byId(id).innerHTML = data;
            //dojo.byId(id).innerHTML = "<div>...</div>";
            var newDiv = document.createElement("div");
            newDiv.innerHTML = data;
            var obj = dojo.byId(id);
            obj.removeChild(obj.firstChild);
            obj.appendChild(newDiv);
        },

        // Called if there was an error (such as a 404 response)
        error: function (data) {
            console.error('Error: ', data);
        }
    });
	
	return false;
}

/* *********************************************************************
 * cmsActivateDynaEditMode
 */
function cmsActivateDynaEditMode(itemname) {
	if (dojo.cookie.isSupported()) {
		// toggleDynaEditMode
		if (dojo.cookie("cms.dynaEditMode") != "1") {
			dojo.cookie("cms.dynaEditMode", "1");
		} else {
			dojo.cookie("cms.dynaEditMode", "0");
		}
		dojo.byId(itemname).innerHTML = cmsDynaEditModeLabel();
	}
}

/* *********************************************************************
 * cmsDynaEditModeLabel
 */
function cmsDynaEditModeLabel() {
	if (dojo.cookie.isSupported()) {
		// toggleDynaEditMode
		if (dojo.cookie("cms.dynaEditMode") == "1") {
			return ("CMS DynaEditMode (on)");
		} else {
			return ("CMS DynaEditMode (off)");
		}
	}
}

/* *********************************************************************
 * isLoggedIn, checks a field set serverside if the user is logged in
 */
function isLoggedIn() {
	var el = dojo.query(".isLoggedIn")[0];
	//alert("isLoggedIn=" + el.innerHTML);
	if(el!=null) {
		return eval(el.innerHTML); // makes "true" to true
	} else {
		return false;
	} 
}

/* *********************************************************************
 * cmsStartDynaEditModeIfActivated
 */
function cmsStartDynaEditModeIfActivated() {

	//alert(! isLoggedIn());
	if ( ! isLoggedIn() ) {
		// Leave here if the user is not logged in
		return;
	}

	if (dojo.cookie == null) {
		// not loaded? load now
		dojo.require("dojo.cookie");
	}
	
	if (dojo.cookie != null) {
		if (dojo.cookie.isSupported()) {
			if (dojo.cookie("cms.dynaEditMode") == "1") {
				//alert(dojo.cookie("cms.dynaEditMode"));
				var elements = dojo.query(".cmsSelector");
				var elementsIcons = dojo.query(".cmsSelectorEditIcon");
				//alert(elements.length);
				elements.addClass("cmsDynaEditBox");
				elementsIcons.style("display", "block");
			}
		}
	}
}

/* *********************************************************************
 * initExpandableBoxes
 */
function initExpandableBoxes() {

	//alert("initExpandableBoxes");

	var elementsH = dojo.query(".boxedExpandable h2");
	elementsH.addClass("boxedExpandableExpand");

	var elementsP = dojo.query(".boxedExpandable p");
	//alert(elementsP.length);
	elementsP.style("display", "none");
	
	if (dojo.cookie == null) {
		// not loaded? load now
		dojo.require("dojo.cookie");
	}
	
	if (dojo.cookie != null) {
		if (dojo.cookie.isSupported()) {
			//alert(dojo.cookie("expandableBoxes.expandableBoxErweiterteEinstellungen"));
			if (dojo.cookie("expandableBoxes.expandableBoxErweiterteEinstellungen") == "1") {
				toggleExpandableBox("expandableBoxErweiterteEinstellungen");
			}
		}
	}
}

/* *********************************************************************
 * validateFileName
 */
function validateFileName(id, imagesOnly) {
	//alert(id);
	var el = dojo.byId(id);
	var resetField = false;
	
	// NUR Bilder
	if (imagesOnly) {
		var filename = el.value.toLowerCase();
		var endung = rightBack(filename, ".");
		//alert(endung);
		if ( (filename!="") && (endung!="jpg") && (endung!="jpeg") && (endung!="gif") && (endung!="png")) {
			alert("Sie d\u00FCrfen nur Bilder hochladen, Bilder sind Dateien der Endungen .jpg, .jpeg, .gif, .png!");
			resetField = true;
		}
	}	
	
	// G\u00FCltiger Dateiname
	var Ergebnis = el.value.search(/[^a-zA-Z0-9_\u00DF\u00C4\u00D6\u00DC\u00E4\u00F6\u00FC\.\-\ \\\:]/g);
	
	if(Ergebnis>-1) {
		alert("Sie d\u00FCrfen in Dateinamen KEINE SONDERZEICHEN wie , ( ) etc. verwenden!");
		resetField = true;
	}
	
	// Feld leeren
	if (resetField==true) {
		// alert("Reset Field");
		el.value = "";
		var par = el.parentNode;
		while(par.id == null) {
			par = par.parentNode;
		} 
		
		//alert(par.innerHTML);
		par.innerHTML = par.innerHTML;
		
		el = dojo.byId(id);
		var func = "validateFileName('" + id + "', "+imagesOnly+")"; 
		el.onchange = function() {
			eval(func);
		}
		//alert(el.onchange);
		//el.focus();
		//alert("cleared 2");
	} else {
		var func = "validateFileName('" + id + "', "+imagesOnly+")"; 
		el.onblur = function() {
			eval(func);
		}
	}
}

/* *********************************************************************
 * toggleExpandableBox
 */
function toggleExpandableBox(theBoxId) {
	//alert(theBoxId);
	var queryString = "#" + theBoxId; 
    //alert(queryString + " p");
    var childs = dojo.query(queryString + " div");
    //alert(childs.length);
	var elementsH = dojo.query(queryString + ".boxedExpandable h2");
    //alert(elementsH.length);

    if (childs.style("display")[0] == "block") {
    	childs.style("display", "none");
		elementsH.addClass("boxedExpandableExpand");
		elementsH.removeClass("boxedExpandableCollapse");
		dojo.cookie("expandableBoxes." + theBoxId, "01");
    } else {
    	childs.style("display", "block");
		elementsH.addClass("boxedExpandableCollapse");
		elementsH.removeClass("boxedExpandableExpand");
		dojo.cookie("expandableBoxes." + theBoxId, "1");
    }
    //alert(dojo.cookie("expandableBoxes." + theBoxId));
}

/* *********************************************************************
 * toggleExpandableBox
 */
function onChangeInserierenRadio(radioButton) {
	var key = rightBack(radioButton, ":")
	//alert(key);
	
	if ( key == "radioInserierenNein" ) {
		dojo.byId("hintInserierenJa").style.display = "none";
		dojo.byId("hintInserierenNein").style.display = "block";
	} else if ( key == "radioInserierenJa" ) {
		dojo.byId("hintInserierenJa").style.display = "block";
		dojo.byId("hintInserierenNein").style.display = "none";
	}
}

//========================================================================================== 
function getRadioValue(name) { 
        var form = document.forms[0]; 
        var field = document.getElementsByName(name); //form.elements[name]; 
        var xle = field.length; 

        t=""; 
        for (var i=0;i<xle;i++) { 
                if(field[i].checked) { 
                        t= field[i].value; 
                } 
        } 
        return t; 
} 

//========================================================================================== 
function getCheckboxValue(name) { 
        var form = document.forms[0]; 
        var field = document.getElementsByName(name); //form.elements[name]; 
        var xle = field.length; 
        // alert(xle) 
        t=""; 
        for (var i=0;i<xle;i++) { 
                // alert(field[i].value); 
                if(field[i].checked) { 
                        if(t=="") { 
                                t=field[i].value; 
                        } else { 
                                t+=","+field[i].value; 
                        } 
                } 
        } 
        return t; 
} 

//========================================================================================== 
function getSelectValue(name) { 
        var form = document.forms[0]; 
        i= form.elements[name].selectedIndex; 
        if ( i==-1) { 
                return ""; 
        } else { 
                t = form.elements[name].options[i].value; 
                return t; 
        } 
}

/* ******************************************************************** */
// doTransferDocument
//
// Transfers all the fields of a Document via an AJAX-Post
// Data are tranferd to Agent: agentName
// after Agent-Call we redirect to targetPage
//
// Caution is not working with Attachments
function doTransferDocument(agentName, targetPage) {
	// URL zum Auruf des Agents
	var agentUrl = getDBURL() + "/" + agentName + "?OpenAgent";
	
	// URL dieser Seite im Readmode
	var readURL = getDBURL() + "/" + targetPage;
	var counter = 0;
		
	// Send the Content of all fields to the agent
	var content = getAllFieldsAndValues();
	
	// call the agent and transfer the values
	dojo.xhrPost( {
        url: agentUrl,
		handleAs:"text",
        load: function(response){
        	// alert(response);
           	var ret = strLeft(response, ":");
        	// alert(ret);
        	if (ret=="ERROR") {
        		alert(strRight(response, ":"));
        		var dlg = dijit.byId("registrationDialog");
        		if(dlg) {
        			dlg.hide();
        		}
        	} else {
        		location.href = readURL;
        	}
        	//alert(response);
            // 
        },
        error: function(data){
                alert("xhrPost Error: " + data);
        },
        timeout: 6000,
        content: content
	}
	);
	
	return true;
}

/* ******************************************************************** */
// retrieves all fields an vaues of an document
function getAllFieldsAndValues() {
	// Send the Content of all fields to the agent
	var content = new Object();

	// Input Fields
	var fields = dojo.query("input");
	for (counter=0; counter < fields.length; counter++) {
		content[rightBack(fields[counter].id, ":")] =  fields[counter].value;
	}
	
	// Text-Area Fields
	var fields = dojo.query("textarea");
	for (counter=0; counter < fields.length; counter++) {
		content[rightBack(fields[counter].id, ":")] =  fields[counter].value;
	}
	
	// Select Fields (Drop-Down)
	var fields = dojo.query("select");
	for (counter=0; counter < fields.length; counter++) {
		content[rightBack(fields[counter].id, ":")] =  fields[counter].value;
	}
	
	// DoubleSelectFields
	// 2 Select Fields, move values from source to target
	// all options in target-select field are to transfer
	// marked with css-class "doubleSelect"
	var fields = dojo.query("select.doubleSelect");
	var arr = null;
	var subCounter = 0;
	for (counter=0; counter < fields.length; counter++) {
		arr = fields[counter].options
		for(subCounter=0; subCounter < arr.length; subCounter++) {
			content[rightBack(fields[counter].id, ":")] += arr[subCounter].text + ";";
		}
	}
	
	// Checkboxes
	var fields = dojo.query("input[type=checkbox]");
	for (counter=0; counter < fields.length; counter++) {
		//alert(rightBack(fields[counter].id, ":") + "==" + fields[counter].checked);
		content[rightBack(fields[counter].id, ":")] = fields[counter].checked;
	}
	
	// Radio
	var fields = dojo.query("input[type=radio]");
	for (counter=0; counter < fields.length; counter++) {
		content[rightBack(fields[counter].id, ":")] =  fields[counter].checked;
	}
	
	return content;
}

/* ******************************************************************** */
// isValidEmail
function isValidEmail(str) {

	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	
	if (str.indexOf(at)==-1){
	   //alert("Invalid E-Mail ID")
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   //alert("Invalid E-Mail ID")
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    //alert("Invalid E-Mail ID")
	    return false;
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    //alert("Invalid E-Mail ID")
	    return false;
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    //alert("Invalid E-Mail ID")
	    return false;
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    //alert("Invalid E-Mail ID")
	    return false;
	 }
	
	 if (str.indexOf(" ")!=-1){
	    //alert("Invalid E-Mail ID")
	    return false;
	 }

	 return true;
}

/* *********************************************************************/
/* *********************************************************************/
/* *********************************************************************
 * DoJo onLoad
 */
dojo.addOnLoad(function() { // no linebreak here, because IE doesn't like that
		//alert("onLoad");
		cmsStartDynaEditModeIfActivated();
		initExpandableBoxes();
		dojo.require("dijit.Tooltip");
	}
)
