// **********************************************************************
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;
}

/* ******************************************************************** */
// highlightMenu
function highlightMenu(id) {
	var el = dojo.byId(id);
	if(el!=null) {
		//alert("highlight " + id);
		el.className = "hlistselected";
	} else {
		// try to find another one
		// TODO
	}
}

/* ******************************************************************** */
// displaySubMenu
var activeTimer;
var subMenuArr = new Array();
function displaySubMenu(idStr, menuEl) {
	//alert(idStr);
	//alert(menuEl);
	var ids = idStr.split(",");
	var coord = dojo.coords(menuEl);
	var currentTop = (coord.y + coord.h);
	var currentLeft = coord.x;

	// Clear Timer
	if(activeTimer) {
		window.clearTimeout(activeTimer);
	}

	// hide all currently opened submenus
	hideAllSubs();
	
	// display all submenus connected with this menu-entry
	for(counter=0; counter < ids.length; counter++) {
		var id = 'subMenu_' + ids[counter];
		//alert(id);
		var el = dojo.byId(id);
		if(el!=null) {
			subMenuArr.push(id);
			
			//alert("displaySubMenu " + id);
			el.style.position = "absolute";
			el.style.left = currentLeft + "px";
			el.style.top = currentTop + "px";
			el.style.zIndex = 9999;

			// connect event
			dojo.connect(el, 'onmouseover', 'stayDisplayed');

			//el.style.display = "block";
			//statt dessen
			dojo.fx.wipeIn({
	            node: id,
	            duration: 200
	        }).play();

			// increase currentLeft
			var tmpCoord = dojo.coords(el);
			currentLeft += tmpCoord.w;
		}
	}
}

/* ******************************************************************** */
// hideAllSubs
function hideAllSubs() {
	for(counter=0; counter < subMenuArr.length; counter++) {
	
		var el = dojo.byId(subMenuArr[counter]);
		if(el!=null) {
			el.style.display = "none";
		}
	}
	
	
}

/* ******************************************************************** */
// hideAllSubsTimer
function hideAllSubsTimer() {
	activeTimer = window.setTimeout("hideAllSubs()", 1000);
}

/* ******************************************************************** */
// stayDisplayed
function stayDisplayed(e) {
	//alert("stayDisplayed:" + e.currentTarget.id);
	var el = dojo.byId(e.currentTarget.id);
	el.style.display = "block";
	
	// Clear Timer
	if(activeTimer) {
		window.clearTimeout(activeTimer);
	}
	
	// connect event
	//dojo.connect(el, 'onmouseout', 'hideAllSubsTimer');
}

/* ******************************************************************** */
// hideSubMenu
function hideSubMenu(idStr, menuEl) {
	activeTimer = window.setTimeout("hideSubMenuInner('"+idStr+"')", 500);
}

/* ******************************************************************** */
// hideSubMenuInner
function hideSubMenuInner(idStr) {
	var ids = idStr.split(",");

	for(counter=0; counter < ids.length; counter++) {
		var id = 'subMenu_' + ids[counter];
		//alert(id);
		var el = dojo.byId(id);
		if(el!=null) {
			//alert("hideSubMenuInner " + id);
			//el.style.display = "none";
			//statt dessen
			dojo.fx.wipeOut({
	            node: id,
	            duration: 300
	        }).play();
		}
	}
}

/* ******************************************************************** */
// setHeaderBgImage
function setHeaderBgImage(urla) {
	var el = dojo.byId("header");
	if(el!=null) {
		//alert(urla);
		//el.style.backgroundImage = urla;
		el.style.backgroundImage = "url('"+urla+"')"
	}
}

/* ******************************************************************** */
// openDialogReject
function openDialogReject(dialogId) {
	dijit.byId(dialogId).show();
}

/* ******************************************************************** */
// attachListValue2TextField
function attachListValue2TextField(targetId, sourceId) {
	//alert(targetId + "," + sourceId );
	var textEl = dojo.byId(targetId);
	var listEl = dojo.byId(sourceId);

	if (textEl.value=="") {
		textEl.value = listEl.value;
	} else {
		textEl.value = textEl.value + ";" + listEl.value;
	}
	
}

/* ******************************************************************** */
// 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?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;
}

/* ******************************************************************** */
// toggleDiv
function toggleDiv(id, mode) {
	//alert(id);
	var el = dojo.byId(id);
	
	if(el!=null) {
		el.style.display = mode;
		//alert(mode);
	}
	return true;
}

/* ******************************************************************** */
// 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;
}

/* ******************************************************************** */
// openKontaktAnfrage
function openKontaktAnfrage() {
	var urla = getDBURL() + "/Kontaktanfrage?OpenAgent";
	//alert(urla);
	location.href=urla;
}

/* ******************************************************************** */
// openPWDReminderDialog	
function openPWDReminderDialog(PWDReminderDialogID) {
	dijit.byId(PWDReminderDialogID).show();
}

/* ******************************************************************** */
// doPWDReminder	
function doPWDReminder(dialogFields) {
	if (dialogFields.email == "") {
		alert("Bitte geben Sie Ihre Email-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 (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);
		} 
	});	
	}
}

/* *********************************************************************
 * 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;
	}

	//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);
			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";
	//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 doRegistration(idEmail, idPWD, idPWDWDH, idVorname, idNachname, idAccept) {
	
	if (!checkKlick()) {
		return false;
	}
	
	//alert("Register");
	
	var email 		= dojo.byId(idEmail).value; 
	var password 	= dojo.byId(idPWD).value; 
	var passwordWDH	= dojo.byId(idPWDWDH).value; 
	var firstname 	= dojo.byId(idVorname).value; 
	var lastname 	= dojo.byId(idNachname).value; 
	var accept 		= dojo.byId(idAccept).checked;
	//alert(accept); 
	
	// Check PWD's
	//if(password!=passwordWDH) {
	//	alert("Passwort und Passwort-Widerholung sind nicht identischt!");
	//	return false;
	//}
	
	// CALL AGENT
	// Agent URL
	var url = getDBURL() + "/register?OpenAgent&internetaddress=" + email 
		+ "&password=" + password 
		+ "&passwordWDH=" + passwordWDH
		+ "&firstname=" + firstname
		+ "&lastname=" + lastname
		+ "&accept=" + accept;

	//alert(url);
	// Redirect to 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");
			}
		}
	}
}

/* *********************************************************************
 * 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));
}

/* ******************************************************************** */
// 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){
            location.href = readURL;
        },
        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");
	}
)
