
var knfMessageInterval;
function knfMessage(msg, buttons, error) {
	var sep = '<div class="space"></div>' + "\n";
	var out = msg;

	if (buttons) {
		out += sep;
		for (var i = 0, c = buttons.length; i < c; i++) {
			out += '<a href="' + (buttons[i].href ? buttons[i].href : '#') + '" onclick="knfMessageHide(); ' + (buttons[i].click ? buttons[i].click : '') + (buttons[i].href ? '' : '; return(false);') + '" class="' + (buttons[i].cssclass ? buttons[i].cssclass : '') + '">' + buttons[i].title + '</a>' + "\n";
		}
	}
	out += '<div class="clear"></div>';
	$('#knfMessageContent').html(out);
	$('#knfMessage').toggleClass('knfMessageError', error ? true : false);
	$('#knfMessage').css('visibility', 'hidden');
	$('#knfMessage').css('display', 'block');
	knfMessagePositioner();
	
	if (is_facebook) {
		$('#knfMessage').css('top', Math.round((popY - ($('#knfMessage').outerHeight() / 2))) + 'px');
	} else {
		knfMessageInterval = window.setInterval('knfMessagePositioner();', 200);
	}
	
	$('#knfMessage').css('visibility', 'visible');
}

function knfMessageHide() {
	$('#knfMessage').css('display', 'none');
	window.clearInterval(knfMessageInterval);
}

function knfMessagePositioner() {
	$('#knfMessage').css('left', Math.round((($(window).width() - $('#knfMessage').outerWidth()) / 2) + $(window).scrollLeft()) + 'px');
	$('#knfMessage').css('top', Math.round((($(window).height() - $('#knfMessage').outerHeight()) / 2) + $(window).scrollTop()) + 'px');
}

function getText(element) {
  var text = "";
  if (typeof element.textContent == "string") {
    text = element.textContent;
  } else if (element.childNodes && element.childNodes.length) {
    for (var i = 0, l = element.childNodes.length; i < l; i++) {
      var child = element.childNodes[i];
      if (child) {
        if (child.nodeType === 1) {
          text += getText(child);
        } else if (child.nodeType === 3) {
          text += child.nodeValue;
        }
      }
    }
  } else if (typeof element.innerText) {
    text = element.innerText;
  }
  return text;
}

function setText(element, text) {
  if (typeof element.textContent == "string") {
    element.textContent = text;
  } else if (typeof element.innerText == "string") {
    element.innerText = text;
  } else if (isHostMethod(element, "removeChild") &&
             isHostMethod(element, "appendChild") &&
             isHostMethod(document, "createTextNode")) {
    while (element.firstChild) {
      element.removeChild(element.firstChild);
    }
    element.appendChild(document.createTextNode(text));
  }
}

function crmPopupSwitchProfiles(num) {
  var thumbs = jQuery(".crm-profiles-thumb");
  var blocks = jQuery(".crm-popup-profile");

	for (var i = 0, c = thumbs.length; i < c; i ++) {
		if (i == num) {
      jQuery(thumbs[i]).addClass("act");
      jQuery(blocks[i]).show();
		} else {
      jQuery(thumbs[i]).removeClass("act");
      jQuery(blocks[i]).hide();
		}
	}
}

var serializeForm = (function () {
  function urlencode(string) {
    return encodeURIComponent(string).replace(/%20/g, "+").replace(/(%0D)(.{0,3})/g, function (m, g1, g2) {
      return g1 + (g2 == "%0A" ? "" : "%0A") + g2;
    }).replace(/(.{0,3})(%0A)/g, function (m, g1, g2) {
      return g1 + (g1 == "%0D" ? "" : "%0D") + g2;
    });
  }

  var checkRegex = /^(?:checkbox|radio)$/;
  var textRegex = /^(?:hidden|password|text|textarea)$/;

  function serializeForm(form) {
    function add(name, value) {
      a[a.length] = name + "=" + urlencode(value);
    }

    var elements = form.elements;
    var a = [];
    var element;
    var name;
    var type;
    var option;
    for (var i = 0, l = elements.length; i < l; i++) {
      element = elements[i];
      name = element.name;
      if (name && !element.disabled) {
        type = element.type;
        if (!type.indexOf("select")) {
          if (type == "select-one" || element.multiple === false) {
            if (element.selectedIndex > -1) {
              add(element.name, element.options[element.selectedIndex].value);
            }
          } else {
            for (var j = 0, ll = element.options.length; j < ll; j++) {
              option = element.options[j];
              if (option.selected) {
                add(name, option.value);
              }
            }
          }
        } else if (checkRegex.test(type)) {
          if (element.checked) {
            add(name, element.value || "on");
          }
        } else if (textRegex.test(type)) {
          add(name, element.value);
        }
      }
    }
    return a.join("&");
  }

  return serializeForm;
})();

var PeopleInvite = (function () {
  var currentPage = 1;

  function successCallback(data) {
    var container = document.getElementById("searchResults");
    if (container && typeof container.innerHTML == "string") {
      container.innerHTML = data;
    }
    var e = document.getElementById("loaderImg");
    if (e) {
      e.style.visibility = 'hidden';
    }
  }

  function fetch(form, options) {
    var parameters = serializeForm(form);
    if (parameters.length) {
      parameters = [parameters, "page=1"].join("&");
    } else {
      parameters = "page=1";
    }

    var e = document.getElementById("loaderImg");
    if (e) {
      e.style.visibility = 'visible';
    }

    jQuery.ajax({
      url: form.action,
      data: parameters,
      success: successCallback
    });

    return false;
  }

  function fetchDirectly(url) {
    jQuery.ajax({
      url: url,
      success: successCallback
    });

    return false;
  }

  function onclickHandler(event, element) {
    if (!event) {
      event = window.event;
    }
    var target = event.target || event.srcElement;
    if (target && target.tagName.toLowerCase() == "img") {
      remove(element || this);
      return false;
    }
  }

  function updateCount(isNegative) {
    var counter = document.getElementById("userCounter");
    if (counter) {
      var count = parseInt(getText(counter), 10);
      if (isNaN(count)) {
        count = 0;
      }
      count += (isNegative ? -1 : +1);
      setText(counter, String(count));
      var e = document.getElementById("knf_btn_send");
      if (e) {
        e.value = (count > 1) ? 'Einladungen senden' : 'Einladung senden';
      }
    }
  }

  function doesExist(userId) {
    var form = document.getElementById("peopleInviteForm");
    var elements;
    var element;
    if (form && form.elements) {
      elements = form.elements["ids[]"];
      if (elements) {
        if (elements.length) {
          for (var i = 0, l = elements.length; i < l; i++) {
            element = elements[i];
            if (element.value == userId) {
              return true;
            }
          }
        } else {
          if (elements.value == userId) {
            return true;
          }
        }
      }
    }
    return false;
  }

  function add(userId, login) {
    var container = document.getElementById("alreadyInvited");
    if (container && !doesExist(userId)) {
      var element = document.createElement("div");
      element.onclick = onclickHandler;
      var link = document.createElement("a");
      link.href = "#";
      link.title = "Aus der Einladungsliste entfernen";
      var img = document.createElement("img");
      img.src = "/images/evo3x/symbols/delete.png";
      link.appendChild(img);
      element.appendChild(link);
      element.appendChild(document.createTextNode(" " + login));
      var input = document.createElement("input");
      input.type = "hidden";
      input.name = "ids[]";
      input.value = userId;
      element.appendChild(input);
      container.appendChild(element);

      updateCount();
    }
    return false;
  }

  function remove(element) {
    if (element && element.parentNode) {
      element.parentNode.removeChild(element);
    }
    updateCount(true);
  }

  return {
    fetchDirectly: fetchDirectly,
    submit: function (form) {
      return fetch(form);
    },
    add: add,
    remove: remove,
    onclick: onclickHandler
  };
})();

function ensureMax(form, event) {
  if (event) {
    var target = event.target || event.srcElement;
    if (target &&
        target.tagName.toLowerCase() == "input" &&
        target.checked) {
      var checkboxes = form.elements["importants[]"];
      if (checkboxes) {
        var i = checkboxes.length;
        var count = 0;
        while (i--) {
          if (checkboxes[i].checked) {
            count++;
          }
        }
        if (count > 3) {
					knfMessage('Du darfst nur 3 Fragen markieren!', [{title: 'OK', cssclass: 'bBlue bw70'}]);
          return false;
        }
      }
    }
  }
}

function ensureMin(form) {
  var checkboxes = form.elements["importants[]"];
  if (checkboxes) {
    var i = checkboxes.length;
    var count = 0;
    while (i--) {
      if (checkboxes[i].checked) {
        count++;
      }
    }
    if (!count) {
			knfMessage('Bitte markiere mindestens 1 Frage als wichtig', [{title: 'OK', cssclass: 'bBlue bw70 btn_blue'}]);
      return false;
    }
  }
}

var messageChooserTextBuffer;

function messageChooserBold()
{
  var e = document.getElementById("default_message");
  if (e) {
    e.style.fontWeight = '100';
  }
}

function messageChooserSetBuffer()
{
  var e = document.getElementById("free_message");
  if (e) {
    messageChooserTextBuffer = e.value;
    e.value = '';
  }
}

function messageChooserGetBuffer()
{
  var e = document.getElementById("default_message");
  if (e && e.selectedIndex != 0) {
    e = document.getElementById("free_message");
    if (e) {
      e.value = messageChooserTextBuffer;
    }
  }
}

function getMessageChooser()
{
	var tmp, message = '';
	if (tmp = document.getElementById('default_message')) {
		message = tmp.value;
	}
	if (tmp = document.getElementById('free_message')) {
		if (message.length < 1) {
			message = tmp.value;
		}
	}
	if (message && (message.length > 0)) {return (message);}
	else {return (false);}
}

function textErase (obj) {
	obj.value = '';
	obj.onfocus = null;
	obj.removeAttribute('onfocus');
	return (true);
}

(function (global) {
  function removeElement(element) {
    var e = element.parentNode;
    if (e && e.parentNode) {
      var n = jQuery(".mProf.hidden", e.parentNode);

      e.parentNode.removeChild(e);

      n.first().removeClass("hidden");
    }
  }

  function askConfirmation(element, id, text) {
    var params = "id=" + id;
    if (window.confirm(text)) {
      params += "&block=1";
    }
    jQuery.post("/user/block_list_user", params);
    removeElement(element);
  }

  global.removeVisit = function (id, element) {
    jQuery.ajax({
      type: "POST",
      url: "/user/remove_visit",
      data: "id=" + id,
      error: function (xhr, status, error) {
        askConfirmation(element, id, xhr.responseText);
      },
      success: function (data, status, xhr) {
        removeElement(element);
      }
    });
    return false;
  };

  global.removeNetworkUser = function (id, login, element) {
    jQuery.ajax({
      type: "POST",
      url: "/user/remove_network_user",
      data: "id=" + id,
      error: function (xhr, status, error) {
        askConfirmation(element, id, xhr.responseText);
      },
      success: function (data, status, xhr) {
        removeElement(element);
      }
    });
    return false;
  };
})(this);

function resizeMegaLive(size) {
  var e = document.getElementsByName("megaLive");
  if (e.length) {
    e[0].height = size;
  }
}

function isHostMethod(o, p) {
  var t = typeof o[p];
  return t == "function" ||
    !!(t == "object" && o[p]) || t == "unknown";
}

var Flash = {
  get: function (name) {
	try {
    //if (isHostMethod(document, "getElementsByName")) {
      var fo = document.getElementsByName(name);
      if (fo.length) {
        return fo[0];
      } else return null;
    //} else {
    //  return null;
    //}
	} catch (e) {
		return null;
	}
  }
};

function deleteTestimonial(testimonialId) {
	jQuery.ajax({
		url: "/testimonial/delete",
		data: { "id": testimonialId },
		complete : function() {
		  var element = document.getElementById("testimonial" + testimonialId);
		  if (element && element.style) {
			element.style.display = "none";
		  }
		}
	  }
	);
}

function publishTestimonial(testimonialId) {
	jQuery.ajax({
		url: "/testimonial/publish",
		data: { "id": testimonialId },
		success : function() {
		  var element = document.getElementById("testimonial" + testimonialId);
		  if (element) {
			Element.addClassName(element, "t_published");
		  }
		}
	  }
	);
}

function confirmDelete(id, old) {
  if (window.confirm('Willst du dieses Bild wirklich entfernen?')) {
    delete_profile_photo(id, old);
  }
}

// Major version of Flash required
var knf_requiredMajorFlashVersion = 10;
// Minor version of Flash required
var knf_requiredMinorFlashVersion = 0;
// Revision of Flash required
var knf_requiredFlashRevision = 0;

var jsReady = false;

function bodyHub(id) {
	jsReady = true;
}

function formHub(id) {

}

function selectHub(id) {

}

function buttonHub(buttonObject) {
	if (buttonObject.id=='elv_button_save') {
		try {
			document.getElementById('knf_pay_waiting').style.display='block';
			document.getElementById('knf_pay_elv').style.display='none';
		} catch(e) {
		}
	}
}

function colorMenu(li) {
  restoreMenu();
  var menu = li.parentNode;
  if (menu) {
    var lis = menu.childNodes,
        i = lis.length,
        temp;
    while (i--) {
      temp = lis[i];
      if (temp.nodeType === 1) {
        if (temp === li) {
          jQuery(li).addClass("highlight");
        } else {
          jQuery(temp).removeClass("highlight");
        }
      }
    }
  }
}

var id2class = {
  "j21p_nav_myprofile": "main_frame_purple",
  "j21p_nav_search": "main_frame_yellow",
  "j21p_nav_people": "main_frame_green",
  "j21p_nav_msgs": "main_frame_blue",
  "j21p_nav_myknf": "main_frame_red",
  "j21p_nav_partner": "main_frame_white"
};

var id2id = {
  "j21p_nav_myprofile": "j21p_sub_nav_myprofile",
  "j21p_nav_search": "j21p_sub_nav_search",
  "j21p_nav_people": "j21p_sub_nav_people",
  "j21p_nav_msgs": "j21p_sub_nav_msgs",
  "j21p_nav_myknf": "j21p_sub_nav_myknf",
  "j21p_nav_partner": "j21p_sub_nav_partner"
};

function resetMenu(elem, event, className) {
  restoreMenu();
  var relatedTarget = event.relatedTarget || event.toElement;
  var jo;
  if (relatedTarget) {
    var ancestor = relatedTarget.parentNode;
    while (ancestor && ancestor !== elem) {
      ancestor = ancestor.parentNode;
    }
    if (ancestor !== elem) {
      resetMenu.timeoutId = window.setTimeout(function () {
        jo = jQuery(elem);
        if (!jo.hasClass("active")) {
          jo.removeClass("highlight");
        }
        var main = document.getElementById("main_frame");
        if (main) {
          var rootMenu = document.getElementById("rootMenu"),
              items = rootMenu.childNodes,
              i = items.length,
              temp,
              activeSubId;
          while (i--) {
            temp = items[i];
            jo = jQuery(temp);
            if (temp.nodeType === 1 && jo.hasClass("active")) {
              activeSubId = temp.id;
              jo.addClass("highlight");
            }
          }

          if (id2class[activeSubId]) {
            main.className = "content-center " + id2class[activeSubId];
          } else {
            main.className = "content-center";
          }

          var subMenu = document.getElementById("subMenu"),
              subItems = subMenu.childNodes,
              activeSubItem = document.getElementById(id2id[activeSubId]),
              j = subItems.length,
              subItem;
          while (j--) {
            subItem = subItems[j];
            if (subItem.nodeType === 1) {
              subItem.style.display = (activeSubItem === subItem) ? "block" : "none";
            }
          }

        }
      }, 1000);
    }
  }
}

function resetMenu2(elem, event, className) {
  restoreMenu();
  var relatedTarget = event.relatedTarget || event.toElement;
  var jo;
  if (relatedTarget) {
    var ancestor = relatedTarget.parentNode;
    while (ancestor && ancestor !== elem) {
      ancestor = ancestor.parentNode;
    }
    if (ancestor !== elem) {
      resetMenu.timeoutId = window.setTimeout(function () {
        var rootMenu = document.getElementById("rootMenu"),
            items = rootMenu.childNodes,
            i = items.length,
            temp,
            activeSubId;
        while (i--) {
          temp = items[i];
          if (temp.nodeType === 1) {
            jo = jQuery(temp);
            if (jo.hasClass("active")) {
              activeSubId = temp.id;
              jo.addClass("highlight");
            } else {
              jo.removeClass("highlight");
            }
            if (id2id[temp.id]) {
              var subMenu = document.getElementById("subMenu"),
                  subItems = subMenu.childNodes,
                  j = subItems.length,
                  activeSubItem = document.getElementById(id2id[activeSubId]),
                  subItem;
              while (j--) {
                subItem = subItems[j];
                if (subItem.nodeType === 1) {
                  subItem.style.display = (activeSubItem === subItem) ? "block" : "none";
                }
              }
            }
          }
        }
        var main = document.getElementById("main_frame");
        if (main) {
          if (id2class[activeSubId]) {
            main.className = "content-center " + id2class[activeSubId];
          } else {
            main.className = "content-center";
          }
        }
      }, 1000);
    }
  }
}

function restoreMenu(className) {
  window.clearTimeout(resetMenu.timeoutId);
}


		var popY = 0;

		function setPopY (callingElement)
		{
			if (is_facebook) {
				popY = callingElement.offsetTop;
				var popPar = callingElement.offsetParent;
				while (popPar) {
					popY += popPar.offsetTop;
					popPar = popPar.offsetParent;
				}
			}
		}

		function hoverLtIE7 ()
		{
      jQuery(function () {
				var allDIVs = document.getElementsByTagName('div');
				for (var i = 0; i < allDIVs.length; i ++) {
					if ((allDIVs[i].className.substring(0, 8) == 'polaroid') || (allDIVs[i].className.substring(0, 4) == 'slot')) {
              jQuery(allDIVs[i]).mouseover(function () {this.className += ' hover';});
              jQuery(allDIVs[i]).mouseout(function () {this.className = this.className.replace(/ hover/, '');});
					}
				}
      });
		}

    function mailboxActivate(item_id) {
      var mbc = document.getElementById('mailbox_list');
      if (mbc) {
        mbc = mbc.childNodes;
        var s = 0, unread = false, active = false;

        for (var i = 0, c = mbc.length; i < c; i ++) {
          if (mbc[i].nodeName && (mbc[i].nodeName.toLowerCase() == 'div') && (mbc[i].className != 'clear')) {
            unread = mbc[i].className.indexOf('unread') >= 0;
            if (item_id != -1) {
              active = mbc[i].className.indexOf('active') >= 0;
            }
            mbc[i].className = 'item_' + (s % 2) + (unread ? ' unread' : '') + (active ? ' active' : '');
            s++;
          }
        }
      }

			if (item_id && document.getElementById('mbitem_' + item_id))
			{
				document.getElementById('mbitem_' + item_id).className = 'item_' + (c % 2) + ' active';
			}
		}

		function show_message_chooser ()
		{
			document.getElementById('message_chooser_link').style.display = 'none';
			document.getElementById('message_chooser_selects').style.display = 'none';
			document.getElementById('message_chooser').style.display = 'block';
		}

		function updateInOutBoxLinks (arg, outbox)
		{
			if (document.getElementById('j21p_nav_msgs')) {
				document.getElementById('j21p_nav_msgs').className += ' active';
			}
			document.getElementById('msgs-posteingang').href = '/user/' + arg;
			document.getElementById('msgs-postausgang').href = '/user/' + arg + '?outbox=true';
			if (outbox)
				document.getElementById('msgs-postausgang').className = 'active';
			else
				document.getElementById('msgs-posteingang').className = 'active';
			navi_show('j21p_sub_nav_msgs');
		}

		var chooser_selection = 2;
		function check_option ()
		{
			return (chooser_selection == 1);
		}

		function switch_premium_feature (arg)
		{
			switch (arg)
			{
				case 1:
					document.getElementById('knf_btn_send').style.display = 'none';
					document.getElementById('knf_btn_premium').style.display = '';
					break;
				case 2:
					document.getElementById('knf_btn_premium').style.display = 'none';
					document.getElementById('knf_btn_send').style.display = '';
			}
		}

		function switch_chooser (num)
		{
			switch (num)
			{
				case 1:
					document.getElementById('message_chooser_selects').style.display = 'none';
					document.getElementById('message_chooser').style.display = 'block';
					if (is_facebook) {
						document.getElementById('chooser_freitext').className = 'active';
						document.getElementById('chooser_auswahl').className = '';
					} else {
						document.getElementById('chooser_freitext').src = '/images/evolution/tab_freitext_a.png';
						document.getElementById('chooser_auswahl').src = '/images/evolution/tab_auswahl.png';
					}
					break;
				case 2:
					document.getElementById('message_chooser').style.display = 'none';
					document.getElementById('message_chooser_selects').style.display = 'block';
					if (is_facebook) {
						document.getElementById('chooser_auswahl').className = 'active';
						document.getElementById('chooser_freitext').className = '';
					} else {
						document.getElementById('chooser_auswahl').src = '/images/evolution/tab_auswahl_a.png';
						document.getElementById('chooser_freitext').src = '/images/evolution/tab_freitext.png';
					}
			}
			chooser_selection = num;
		}

		function switch_chooser_v2 (num)
		{
			switch (num)
			{
				case 1:
					document.getElementById('message_chooser_selects').style.display = 'none';
					document.getElementById('message_chooser').style.display = 'block';
					document.getElementById('chooser_freitext').className = 'active';
					document.getElementById('chooser_auswahl').className = '';
					break;
				case 2:
					document.getElementById('message_chooser').style.display = 'none';
					document.getElementById('message_chooser_selects').style.display = 'block';
					document.getElementById('chooser_auswahl').className = 'active';
					document.getElementById('chooser_freitext').className = '';
			}
			chooser_selection = num;
		}

		function delete_profile_photo(arg, old) {
      jQuery.ajax({
        url: "/photo/delete_photo",
        data: { id: arg},
        complete: function () {
          var e = document.getElementById('photo' + arg);
          if (e) {
            var par = e.parentNode;
            e.parentNode.removeChild(e);
            for (var i = par.childNodes.length - 1; i > 0; i--) {
              if (par.childNodes[i].className == 'clear') {
                par.removeChild(par.childNodes[i]);
              }
            }
            if (is_facebook) {
              par.innerHTML += '<a class="polaroid pic" href="/photo/uploadprofilephoto"><span>Lade ein Foto hoch!</span></a><div class="clear"></div>';
            } else if (old) {
              par.innerHTML += '<a class="empty" href="/photo/uploadprofilephoto"><span>Lade ein Foto hoch!</span></a><div class="clear"></div>';
            } else {
              par.innerHTML += '<div class="photoEditBox"><a class="photoEditEmpty" href="/photo/uploadprofilephoto">Foto hochladen</a></div><div class="clear"></div>';
            }
            if (typeof update_count === "function") {
              update_count(true);
            } else {
              window.location.reload(true);
            }
          }
        }
      });
		}

		function update_btn (btn, id)
		{
			btn = document.getElementById(btn);

			var addr = '/payment/changepackage';
			if (id)
				addr += '?partner=' + id;

			btn.onclick = null;
			btn.removeAttribute('onclick');

			if (btn.tagName == 'a')
			{
				btn.href = addr;
			}
			else
			{
				btn.setAttribute('onclick', "window.location.href='" + addr + "'; return(false);");
			}
		}

    function set_profilephoto(arg) {
      jQuery.ajax({
        url: "/photo/set_profilephoto",
        data: {id: arg},
        complete: function () {
          window.location.href = '/user/view?tab=gallery&edit_mode=true';
        }
      });
    }

		var env_check = new Array(); // global var for setChecks()
		function setChecks (check)
		{
			eArr = document.forms['mbForm'].elements;
			for (i = 0, c = eArr.length; i < c; i ++)
			{
				if (eArr[i].type == 'checkbox')
					eArr[i].checked = check;
			}
		}

		function showDelLink (arg)
		{
			document.getElementById('delin').style.display = 'none';
			document.getElementById('delout').style.display = 'none';
			document.getElementById('checkall_pipe').style.display = 'none';

			if (arg == "in")
			{
				do1 = "in";
				do2= "out";
			}
			else if (arg == "out")
			{
				do1 = "out";
				do2 = "in";
			}
			else
				return (false);

			eArr = document.forms[do1 + 'Form'].elements;
			for (i = 0, c = eArr.length; i < c; i ++)
			{
				if (eArr[i].checked == true)
				{
					document.getElementById('del' + do1).style.display = 'inline';
					document.getElementById('checkall_pipe').style.display = 'inline';
					break;
				}
			}

			document.getElementById('checki').checked = env_check[arg]
			document.getElementById('checkall_info').style.display = env_check[arg] ? 'none' : 'inline';
		}

		function knf_switch_inout (arg)
		{
			if (arg == "in")
			{
				document.getElementById("box_out").style.display = "none";
				document.getElementById("box_in").style.display = "block";
				document.getElementById("link_out").style.color = "#fff";
				document.getElementById("link_in").style.color = "#000";
			}
			else if (arg == "out")
			{
				document.getElementById("box_in").style.display = "none";
				document.getElementById("box_out").style.display = "block";
				document.getElementById("link_in").style.color = "#fff";
				document.getElementById("link_out").style.color = "#000";
			}
			showDelLink (arg);
		}

			function showPaymentPopup() {
				if (window.top!=window.self) {
					window.top.location.href='https://www.kissnofrog.com/payment/changepackage?fb=true';
				} else {
					document.location.href='/payment/changepackage';
				}
			}

			function showPaymentPopupForUser(userId) {
				if (window.top!=window.self) {
					window.top.location.href='https://www.kissnofrog.com/payment/changepackage?partner='+userId+'&fb=true';
				} else {
					document.location.href='/payment/changepackage?partner='+userId;
				}
			}

			function showPaymentPopupForUserWithTrigger(userId, trigger) {
				if (window.top!=window.self) {
					window.top.location.href='https://www.kissnofrog.com/payment/changepackage?partner='+userId+'&pt='+trigger+'&fb=true';
				} else {
					document.location.href='/payment/changepackage?partner='+userId+'&pt='+trigger;
				}
			}

			function showPop(source,width,height) {
			  var popWin = window.open("","knfPopWin","width="+width+",height="+height+",scrollbars=no");
			  popWin.document.write(
			    "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /><title>Bild anzeigen</title></head>"
			    + "<body bgcolor=\"#000000\" marginwidth=\"0\" marginheight=\"0\"><a href=\"javascript:window.close()\"><img src=\""+source+"\" border=\"0\" /></a></body>"
			    + "</html>"
			  );
			}

			function getOptionIndex(value,id) {
			  for (var i = 0; i < document.getElementById(id).options.length; i++) {
			    if (document.getElementById(id).options[i].value == value) {
			      return i;
			    }
			  }
			}

			function removeLoginValue(obj,val) {
			  if (obj.value == val) {
			    obj.value = "";
			  }
			}

			function toggle_checkboxes(except) {
			    var a = document.getElementsByTagName('input');
			    for (var i = 0, j = a.length; i < j; i++) {
			        if (a[i].id == 'select_all') {
			            continue;
			        }
			        a[i].checked = except.checked;
			    }
			}

			function initPhotoUpload(userID, bgc, cssoverride, signup, other) {
			  var requiredMajorVersion = knf_requiredMajorFlashVersion;
			  var requiredMinorVersion = knf_requiredMinorFlashVersion;
			  var requiredRevision = knf_requiredFlashRevision;
			  if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
			    var alternateContent = '';
			    document.write(alternateContent);  // insert non-flash content
			  } else {
			    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
			    if (hasRightVersion) {  // if we've detected an acceptable version
			      // embed the flash movie
			      AC_FL_RunContent(
			        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
			        'width', '600',
			        'height', '380',
			        'src', '/swf/WebcamSnapshotThumb',
			        'quality', 'high',
			        'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			        'align', 'middle',
			        'play', 'true',
			        'wmode', 'opaque',
			        'loop', 'true',
			        'scale', 'showall',
			        'devicefont', 'false',
			        'id', 'howto_movie',
			        'bgcolor', '#000000',
			        'name', 'howto_movie',
			        'menu', 'true',
			        'allowScriptAccess','sameDomain',
			        'allowFullScreen','false',
			        'movie', '/swf/WebcamSnapshotThumb',
			        'flashvars', 'user=' + userID + '&bgc=' + bgc + '&cssoverride=' + cssoverride + '&signup=' + signup + '&other=' + other,
			        'salign', ''
			        );
			    } else {  // flash is too old or we can't detect the plugin
			      // embed the flash movie
			      var alternateContent = 'Sie benötigen einen aktuellen Flash-Player für diese Funktion';
			      document.write(alternateContent);  // insert non-flash content
			    }
			  }
			}

			function runLiveFlirtTeaserFlash(gender) {
			  // Major version of Flash required
			  var requiredMajorVersion = knf_requiredMajorFlashVersion;
			  // Minor version of Flash required
			  var requiredMinorVersion = knf_requiredMinorFlashVersion;
			  // Revision of Flash required
			  var requiredRevision = knf_requiredFlashRevision;
			  if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
			    var alternateContent = '';
			    document.write(alternateContent);  // insert non-flash content
			  } else {
			    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
			    if (hasRightVersion) {  // if we've detected an acceptable version
			      // embed the flash movie
			      AC_FL_RunContent(
			        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
			        'width', '190',
			        'height', '230',
			        'src', '/swf/live_flirt_'+gender,
			        'quality', 'high',
			        'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			        'align', 'middle',
			        'play', 'true',
					'wmode', 'opaque',
			        'loop', 'true',
			        'scale', 'showall',
			        'devicefont', 'false',
			        'id', 'howto_movie',
			        'bgcolor', '#333333',
			        'name', 'howto_movie',
			        'menu', 'true',
			        'allowScriptAccess','sameDomain',
			        'allowFullScreen','false',
			        'movie', '/swf/live_flirt_'+gender,
			        'salign', ''
			        ); //end AC code
			    } else {  // flash is too old or we can't detect the plugin
			      // embed the flash movie
			      var alternateContent = '<a href="/user/live_flirt" title="Flirte, chatte oder spiele live mit neuen Leuten!"><img src="http://static.kissnofrog.com/images/evolution3/start/live_flirt_' + gender + '.jpg" alt="Flirte, chatte oder spiele live mit neuen Leuten!" /></a>';
			      document.write(alternateContent);  // insert non-flash content
			    }
			  }
			}

			function runUserTeaser(gender, premium, profilepic, pics, pscore_my, pscore_search, blinddate) {
			  // Major version of Flash required
			  var requiredMajorVersion = knf_requiredMajorFlashVersion;
			  // Minor version of Flash required
			  var requiredMinorVersion = knf_requiredMinorFlashVersion;
			  // Revision of Flash required
			  var requiredRevision = knf_requiredFlashRevision;
			  if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
			    var alternateContent = '';
			    document.write(alternateContent);  // insert non-flash content
			  } else {
			    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
			    if (hasRightVersion) {  // if we've detected an acceptable version
			      // embed the flash movie
			      AC_FL_RunContent(
			        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
			        'width', '190',
			        'height', '230',
			        'src', '/swf/userTeaser',
			        'quality', 'high',
			        'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			        'align', 'middle',
			        'play', 'true',
			        'wmode', 'opaque',
			        'loop', 'true',
			        'scale', 'showall',
			        'devicefont', 'false',
			        'id', 'howto_movie',
			        'bgcolor', '#333333',
			        'name', 'howto_movie',
			        'flashvars', 'gender=' + gender + '&premium=' + premium + '&profilepic=' + profilepic + '&pics=' + pics + '&pscore_my=' + pscore_my + '&pscore_search=' + pscore_search + '&blinddate=' + blinddate,
			        'menu', 'true',
			        'allowScriptAccess','sameDomain',
			        'allowFullScreen','false',
			        'movie', '/swf/userTeaser',
			        'salign', ''
			        ); //end AC code
			    } else {  // flash is too old or we can't detect the plugin
			      // embed the flash movie
			      var alternateContent = '<a href="/user/live_flirt" title="Flirte, chatte oder spiele live mit neuen Leuten!"><img src="http://static.kissnofrog.com/images/evolution3/start/live_flirt_' + gender + '.jpg" alt="Flirte, chatte oder spiele live mit neuen Leuten!" /></a>';
			      document.write(alternateContent);  // insert non-flash content
			    }
			  }
			}

			function runNewUserTeaser() {
			  // Major version of Flash required
			  var requiredMajorVersion = knf_requiredMajorFlashVersion;
			  // Minor version of Flash required
			  var requiredMinorVersion = knf_requiredMinorFlashVersion;
			  // Revision of Flash required
			  var requiredRevision = knf_requiredFlashRevision;
			  if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
			    var alternateContent = '';
			    document.write(alternateContent);  // insert non-flash content
			  } else {
			    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
			    if (hasRightVersion) {  // if we've detected an acceptable version
			      // embed the flash movie
			      AC_FL_RunContent(
			        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
			        'width', '190',
			        'height', '239',
			        'src', '/swf/user_start_box',
			        'quality', 'high',
			        'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			        'align', 'middle',
			        'play', 'true',
			        'wmode', 'opaque',
			        'loop', 'true',
			        'scale', 'showall',
			        'devicefont', 'false',
			        'id', 'howto_movie',
			        'bgcolor', '#333333',
			        'name', 'howto_movie',
			        'menu', 'true',
			        'allowScriptAccess','sameDomain',
			        'allowFullScreen','false',
			        'movie', '/swf/user_start_box',
			        'salign', ''
			        ); //end AC code
			    } else {  // flash is too old or we can't detect the plugin

			    }
			  }
			}

			function runHomepageScroller() {
			  // Major version of Flash required
			  var requiredMajorVersion = knf_requiredMajorFlashVersion;
			  // Minor version of Flash required
			  var requiredMinorVersion = knf_requiredMinorFlashVersion;
			  // Revision of Flash required
			  var requiredRevision = knf_requiredFlashRevision;
			  if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
			    var alternateContent = '';
			    document.write(alternateContent);  // insert non-flash content
			  } else {
			    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
			    if (hasRightVersion) {  // if we've detected an acceptable version
			      // embed the flash movie
			      AC_FL_RunContent(
			        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
			        'width', '944',
			        'height', '33',
			        'src', '/swf/homepage_scroller',
			        'quality', 'high',
			        'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			        'align', 'middle',
			        'play', 'true',
			        'loop', 'true',
					'wmode', 'opaque',
			        'scale', 'showall',
			        'devicefont', 'false',
			        'id', 'hp_scroller',
			        'bgcolor', '#ffffff',
			        'name', 'hp_scroller',
			        'menu', 'true',
			        'allowScriptAccess','always',
			        'allowFullScreen','false',
			        'movie', '/swf/homepage_scroller',
			        'salign', ''
			        ); //end AC code
			    }
			  }
			}

			// HomepageScroller for new homepage:
			function runHomepageScrollerNew() {
			  // Major version of Flash required
			  var requiredMajorVersion = knf_requiredMajorFlashVersion;
			  // Minor version of Flash required
			  var requiredMinorVersion = knf_requiredMinorFlashVersion;
			  // Revision of Flash required
			  var requiredRevision = knf_requiredFlashRevision;
			  if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
			    var alternateContent = '';
			    document.write(alternateContent);  // insert non-flash content
			  } else {
			    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
			    if (hasRightVersion) {  // if we've detected an acceptable version
			      // embed the flash movie
			      AC_FL_RunContent(
			        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
			        'width', '830',
			        'height', '18',
			        'src', '/swf/homepage_scroller',
			        'quality', 'high',
			        'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			        'align', 'middle',
			        'play', 'true',
			        'loop', 'true',
					'wmode', 'opaque',
			        'scale', 'showall',
			        'devicefont', 'false',
			        'id', 'howto_movie',
			        'bgcolor', '#6d696f',
			        'name', 'howto_movie',
			        'menu', 'true',
			        'allowScriptAccess','sameDomain',
			        'allowFullScreen','false',
			        'movie', '/swf/homepage_scroller_new',
			        'salign', ''
			        ); //end AC code
			    }
			  }
			}

			function runMiniLiveFlash(userId, nickname, gender, csstype) {
			  switch (csstype) {
			 	case "facebook":
					myWidth = 760;
					myHeight = 36;
					myBg = "#ffffff";
					break;
				default:
					myWidth = 860;
					myHeight = 36;
					myBg = "#333333";
					break;
			 }
			  // Major version of Flash required
			  var requiredMajorVersion = knf_requiredMajorFlashVersion;
			  // Minor version of Flash required
			  var requiredMinorVersion = knf_requiredMinorFlashVersion;
			  // Revision of Flash required
			  var requiredRevision = knf_requiredFlashRevision;
			  if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
			    var alternateContent = '';
			    document.write(alternateContent);  // insert non-flash content
			  } else {
			    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
			    if (hasRightVersion) {  // if we've detected an acceptable version
			      // embed the flash movie
			      AC_FL_RunContent(
			        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
			        'width', myWidth,
			        'height', myHeight,
			        'src', '/swf/miniLive?new=true',
			        'flashVars', 'user=' + userId + '&nickname=' + nickname + '&gender=' + gender + '&cssoverride=' + csstype,
			        'quality', 'high',
			        'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			        'align', 'middle',
			        'play', 'true',
			        'loop', 'true',
			        'scale', 'noorder',
			        'devicefont', 'false',
			        'id', 'miniLive',
			        'bgcolor', myBg,
			        'name', 'miniLive',
			        'menu', 'true',
			        'allowScriptAccess','always',
			        'allowFullScreen','false',
			        'movie', '/swf/miniLive?new=true',
			        'salign', ''
			        ); //end AC code
			    } else {  // flash is too old or we can't detect the plugin
			      // embed the flash movie
			      AC_FL_RunContent(
			        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
			        'width', myWidth,
			        'height', myHeight,
			        'src', 'http://static.kissnofrog.com/swf/expressInstall',
			        'quality', 'high',
			        'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			        'align', 'middle',
			        'play', 'true',
			        'loop', 'true',
			        'scale', 'showall',
			        'devicefont', 'false',
			        'id', 'expressInstall',
			        'bgcolor', myBg,
			        'name', 'miniLive',
			        'menu', 'true',
			        'allowScriptAccess','always',
			        'allowFullScreen','false',
			        'movie', 'http://static.kissnofrog.com/swf/expressInstall',
			        'salign', ''
			      ); //end AC code
			      var alternateContent = '';
			      document.write(alternateContent);  // insert non-flash content
			    }
			  }
			}

			function resizeMiniLive(size) {
				document.getElementsByName("miniLive")[0].height = size;
			}

			function runMegaLiveFlash(userId, nickname, gender, pref_gender, csstype) {
			  switch (csstype) {
			 	case "facebook":
					myBg = "#ffffff";
					break;
				default:
					myBg = "#333333";
					break;
			 }
			 myHeight = 45;
			 myWidth = (document.body.clientWidth || document.documentElement.clientWidth || window.innerWidth || 0);
			  // Major version of Flash required
			  var requiredMajorVersion = knf_requiredMajorFlashVersion;
			  // Minor version of Flash required
			  var requiredMinorVersion = knf_requiredMinorFlashVersion;
			  // Revision of Flash required
			  var requiredRevision = knf_requiredFlashRevision;
			  if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
			    var alternateContent = '';
			    document.write(alternateContent);  // insert non-flash content
			  } else {
			    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
			    if (hasRightVersion) {  // if we've detected an acceptable version
			      // embed the flash movie
			      AC_FL_RunContent(
			        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
			        'width', myWidth,
			        'height', myHeight,
			        'src', '/swf/megaLive',
			        'flashVars', 'user=' + userId + '&nickname=' + nickname + '&gender=' + gender + '&pref_sex=' + pref_gender + '&cssoverride=' + csstype,
			        'quality', 'high',
			        'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			        'align', 'middle',
			        'play', 'true',
			        'loop', 'true',
			        'scale', 'noorder',
			        'devicefont', 'false',
			        'id', 'miniLive',
			        'bgcolor', myBg,
			        'name', 'megaLive',
			        'menu', 'true',
			        'allowScriptAccess','always',
			        'allowFullScreen','false',
			        'movie', '/swf/megaLive',
			        'salign', ''
			        ); //end AC code
			    }
			  }
			}

      var startExecutor, restartExecutor, stopExecutor, startHeartBeat;
      (function () {
        var myExecutor;
        var myExecutorId;
        var exCounter = 1;
        var EXECUTOR_INTERVAL = 15 * 1000;

        function poll() {
          if (exCounter) {
            KNF.Popups.nextOne();
          } else {
            exCounter += 1;
          }
        }

        startExecutor = function (userId) {
          myExecutorId = userId;
          exCounter = 1;
          myExecutor = window.setInterval(function () {
            poll(myExecutorId);
          }, EXECUTOR_INTERVAL);
        };

        restartExecutor = function () {
          if (myExecutor) {
            stopExecutor();
            startExecutor(myExecutorId);
            exCounter = 0;
          }
        };

        stopExecutor = function () {
          window.clearInterval(myExecutor);
        };

        function heartBeat() {
          jQuery.get("/user/heartbeat");
        }

        startHeartBeat = function () {
          myExecutor = window.setInterval(heartBeat, EXECUTOR_INTERVAL);
        };
      })();

			function setCookie(data) {
        data += ";path=" + window.location.pathname;
			  document.cookie = "knfBCNF=" + data;
			}

			var peopleGridParameters = null;

			function setGridParameters(postcode, gender, lage, uage, country, nick, only_pic, only_online) {
			  peopleGridParameters = 'knfBCNF=1,'+postcode+','+gender+','+lage+','+uage+',none,'+only_online+','+only_pic+','+country+','+nick;
			}

			function sendJS() {
			  var data = document.cookie;
			  if (peopleGridParameters!=null) data = peopleGridParameters;
			  var temp = data.split("; ");
			  for (var i = 0; i < temp.length; i++) {
			    if (temp[i].indexOf("knfBCNF") != -1) {
			      data = temp[i];
			    }
			  }
			  if (data.indexOf("knfBCNF") != -1) {
			    data = data.replace(/knfBCNF=/, "");
			  } else {
			    data = preset;
			  }
			  document["peopleGrid"].sendJS(data);
			}

			function runFacesFlash(userId, w, h, bg, mode, isLoggedIn, hideView, csstype, transparent) {
			  switch (csstype) {
			 	case "facebook":
					bg = "#ffffff";
					break;
				default:
					break;
			 }
			  // Major version of Flash required
			  var requiredMajorVersion = knf_requiredMajorFlashVersion;
			  // Minor version of Flash required
			  var requiredMinorVersion = knf_requiredMinorFlashVersion;
			  // Revision of Flash required
			  var requiredRevision = knf_requiredFlashRevision;
			  if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
			    var alternateContent = '';
			    document.write(alternateContent);  // insert non-flash content
			  } else {
			    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
			    if(hasRightVersion) {  // if we've detected an acceptable version
			      // embed the flash movie
			      AC_FL_RunContent(
			        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
			        'width', w,
			        'height', h,
			        'src', '/swf/peopleGrid',
			        'flashVars', 'mode=' + mode + '&userId=' + userId + '&isLoggedIn=' + isLoggedIn + '&hideView=' + hideView + '&cssoverride=' + csstype + '&transparent=' + transparent,
			        'quality', 'high',
			        'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			        'align', 'middle',
			        'play', 'true',
			        'loop', 'true',
			        'scale', 'showall',
			        'wmode', (transparent ? 'transparent' : 'opaque'),
			        'devicefont', 'false',
			        'id', 'peopleGrid',
			        'bgcolor', bg,
			        'name', 'peopleGrid',
			        'menu', 'true',
			        'allowScriptAccess','sameDomain',
			        'allowFullScreen','false',
			        'movie', '/swf/peopleGrid',
			        'salign', ''
			        ); //end AC code
			    } else {  // flash is too old or we can't detect the plugin
			      var alternateContent = '';
			      document.write(alternateContent);  // insert non-flash content
			    }
			  }
			}

			function knf_removeInvitedUser(className) {
        jQuery("." + className).each(function () {
          if (this.parentNode) {
            this.parentNode.removeChild(this);
            var userCount = document.getElementById('userCount').value;
            var count = parseInt(userCount, 10) - 1;
            setText(document.getElementById('userCounter'), count);
            document.getElementById('userCount').value = count;
          }
        });
			}

      function addInvitedUser(response, userId) {
        var idsMap = {};
        var ids = [];
        jQuery(".user").each(function () {
          var id = this.id;
          idsMap[parseInt(id, 10)] = true;
          ids[ids.length] = parseInt(id, 10);
        });
        var userCount = document.getElementById("userCount");
        var count = parseInt(userCount.value, 10);
        var limit = 20;
        if (count < limit && ids.length < limit) {
          if (!idsMap[userId]) {
            count += 1;
            setText(document.getElementById("userCounter"), count);
            userCount.value = count;
            jQuery(response).appendTo("#alreadyInvited");
          }
        } else {
          alert("Du hast schon " + limit + " Leute eingeladen.");
        }
      }

      function inviteUser(id) {
        if (window.location.href.indexOf("/meeting/afterCreate") > -1) {
          var button = document.getElementById("knf_btn_send"),
          meetingId = document.getElementById("meetingId");
          if (meetingId) {
            if (button && !inviteUser.isButtonChanged) {
              button.value = "Versenden";
              inviteUser.isButtonChanged = true;
            }
            jQuery.ajax({
              url: "/meeting/invite/" + id,
              success: function (data) {
                addInvitedUser(data, id);
              }
            });
          }
        } else {
          jQuery.ajax({
            url: "/meeting/invite/" + id,
            success: function (data) {
              jQuery("#alreadyInvited").html(data);
            }
          });
        }
      }

			function mbNewMessage(arg)
			{
				document.getElementById('mbContent').style.display = 'none';
				document.getElementById('mbMessage').style.display = 'none';
				document.getElementById('mbOptions').style.display = 'none';
				document.getElementById('mbBack').style.display = 'block';
				document.getElementById('mbNewMessage').style.display = 'block';
				if (arg) {
					document.getElementById('message_recipient').value = arg;
				}
			}

			function mbClose()
			{
				try {document.getElementById('mbNewMessage').style.display = 'none';} catch(e) {}
				var e = document.getElementById('mbMessage');
				if (e && typeof e.style != "undefined" && e.style) {
				  e.style.display = 'none';
				}
				e = document.getElementById('mbBack');
				if (e && typeof e.style != "undefined" && e.style) {
				  e.style.display = 'none';
				}
				e = document.getElementById('mbContent');
				if (e && typeof e.style != "undefined" && e.style) {
				  e.style.display = 'block';
				}
				e = document.getElementById('mbOptions');
				if (e && typeof e.style != "undefined" && e.style) {
				  e.style.display = 'block';
				}
			}

      function mbLoadMessage(id) {
        jQuery.ajax({
          url: "/message/view",
          data: {id: id},
          success: function (data) {
            jQuery("#mbMessage").html(data);

            var e = document.getElementById("mbNewMessage");
            if (e && typeof e.style != "undefined" && e.style) {
              e.style.display = "none";
            }
            e = document.getElementById("mbContent");
            if (e && typeof e.style != "undefined" && e.style) {
              e.style.display = "none";
            }
            e = document.getElementById("mbOptions");
            if (e && typeof e.style != "undefined" && e.style) {
              e.style.display = "none";
            }
            e = document.getElementById("mbBack");
            if (e && typeof e.style != "undefined" && e.style) {
              e.style.display = "block";
            }
            e = document.getElementById("mbMessage");
            if (e && typeof e.style != "undefined" && e.style) {
              e.style.display = "block";
            }
          }
        });
      }

			function mbShowOldMessages()
			{
				var childs = document.getElementById('mbMessage').childNodes;
				for (var i = 0, c = childs.length; i < c; i ++) {
					if (childs[i].className == 'mbItem') {
						childs[i].style.display = '';
					}
				}
				document.getElementById('mbShowOldMessages').style.display = 'none';
			}

			function knf_loadMailbox (arg, id, title, height) {
				document.getElementById('mailbox_view').innerHTML = '<img src="http://static.kissnofrog.com/images/evolution3/symbols/indicator_mbox.gif" width="16" height="16" align="absmiddle" /> ' + title + ' wird geladen...';
				knf_resizeMailbox(height || 160);
        knf_mailboxMessageQuit();
        jQuery.ajax({
          url: arg,
          data: {id: id},
          success: function (data) {
            jQuery("#mailbox_view").html(data);
            mailboxActivate(-1);
            mailboxActivate(id);
          }
        });
			}

			function knf_mailboxMessageAnswer ()
			{
				knf_resizeMailbox (-1);
				document.getElementById('mailbox_view_content').style.height = '230px';
				document.getElementById('mailbox_MessageAnswer').style.display = 'none';
				document.getElementById('mb_messageAnswer').style.display = 'block';
			}

			function knf_mailboxNewMessage(to) {
				knf_resizeMailbox(160);
				document.getElementById('mailbox_view').style.display = 'none';
				document.getElementById('mailbox_newMessage').style.display = 'block';
        if (to) {
          var toField = document.getElementById("message_recipient");
          if (toField) {
            toField.value = to;
          }
        }
			}

			function knf_send_message(someForm) {
				jQuery.ajax({ 
					url: "/message/create", 
					type: "POST", 
					data: serializeForm(someForm), 
					error: function (xhr) {knfMessage('FEHLER: ' + xhr.responseText, [{title: 'OK', cssclass: 'bBlue bw70 btn_blue'}], 1);}, 
					success: function () { mbClose(); knfMessage('Die Nachricht wurde versendet.', [{title: 'OK', cssclass: 'bBlue bw70 btn_blue'}]); someForm.reset(); }
				}); 
				return false;
			}
			
			function knf_mailboxMessageQuit ()
			{
				knf_resizeMailbox (160);
				if (document.getElementById('mailbox_MessageAnswer'))
					document.getElementById('mailbox_MessageAnswer').style.display = 'block';
				if (document.getElementById('mailbox_newMessage'))
					document.getElementById('mailbox_newMessage').style.display = 'none';
				mailboxActivate(-1);
			}

			function knf_resizeMailbox (listH)
			{
				if (listH == -1) // hide list
				{
					document.getElementById('mailbox_list').style.display = 'none';
					document.getElementById('mailbox_list_header').style.display = 'none';
					document.getElementById('mailbox_view').style.display = 'block';
					document.getElementById('mailbox_view').style.height = '410px';
					document.getElementById('mailbox_view').style.marginTop = '0';
				}
				else if (listH == -2) // hide mailbox
				{
					document.getElementById('mailbox_view').style.display = 'none';
					document.getElementById('mailbox_list_header').style.display = 'block';
					document.getElementById('mailbox_list').style.display = 'block';
					document.getElementById('mailbox_list').style.height = '395px';
				}
				else
				{
					document.getElementById('mailbox_list_header').style.display = 'block';
					document.getElementById('mailbox_list').style.display = 'block';
					document.getElementById('mailbox_view').style.display = 'block';
					document.getElementById('mailbox_list').style.height = listH + 'px';
					document.getElementById('mailbox_view').style.height = (360 - listH) + 'px';
					document.getElementById('mailbox_view').style.marginTop = '20px';
				}
			}

if (typeof Ajax == "object" && Ajax && typeof Ajax.Responders == "object") {
			Ajax.Responders.register({
			  onCreate: function() {
			    if ($('indicator') && Ajax.activeRequestCount > 0) {
			      $('indicator').show();
			    }
			  },
			  onComplete: function() {
			    if ($('indicator') && Ajax.activeRequestCount == 0) {
			      $('indicator').hide();
			    }
			  }
			});
}

			function navi_show(id) {
			  navi_hide();
			  document.getElementById(id).style.display = "block";
				var color = null;
				switch (id)
				{
					case 'j21p_sub_nav_myknf': color = 'red'; break;
					case 'j21p_sub_nav_msgs': color = 'blue'; break;
					case 'j21p_sub_nav_people': color = 'green'; break;
					case 'j21p_sub_nav_search': color = 'yellow'; break;
					case 'j21p_sub_nav_myprofile': color = 'purple'; break;
					case 'j21p_sub_nav_partner': color = 'white'; break;
				};
			  var main = document.getElementById('main_frame');
				if (main) {
					main.className = 'content-center' + (color ? ' main_frame_' + color : '');
				}
			}

			function navi_hide() {
				try {
				  document.getElementById("j21p_sub_nav_myprofile").style.display = "none";
				} catch (e) {}
				try {
				  document.getElementById("j21p_sub_nav_search").style.display = "none";
				} catch (e) {}
				try {
				  document.getElementById("j21p_sub_nav_people").style.display = "none";
				} catch (e) {}
				try {
				  document.getElementById("j21p_sub_nav_msgs").style.display = "none";
				} catch (e) {}
				try {
				  document.getElementById("j21p_sub_nav_myknf").style.display = "none";
				} catch (e) {}
				try {
				  document.getElementById("j21p_sub_nav_partner").style.display = "none";
				} catch (e) {}
			}
			
      function knf_checkMeetingStartTime() {
        var now = new Date();
        now.setMinutes(now.getMinutes() + 1);
        var dateField = document.getElementById("datePicker");
        var startTime = new Date(dateField.value);
        startTime.setHours(parseInt(document.getElementById("calHour").value, 10));
        startTime.setMinutes(parseInt(document.getElementById("calMin").value, 10));
        if (isNaN(startTime) || startTime < now) {
					knfMessage('Startzeit muss mindestens 1 Minute in der Zukunft liegen.', [{title: 'OK', cssclass: 'bBlue bw70 btn_blue'}]);
          return false;
        } else {
          return true;
        }
      }

      function knf_ensureTextAreaLimit(textArea, limit) {
        var length = textArea.value.length;
        if (length > limit) {
          textArea.value = textArea.value.substring(0, limit);
        } else {
          var counter = document.getElementById('knf_counter');
          if (counter) {
            setText(counter, limit - length);
          }
        }
      }

			function knf_updateSessionImage(imagePath, imageId) {
			  document.getElementById('sessionImage').src = imagePath;
			  document.getElementById('sessionImageId').value = imageId;
			}

      function showMeetingList(isLoggedIn) {
        if (typeof meetings == "undefined") {
          return;
        }

        function show(e) {
          if (e && typeof e.style != "undefined" &&
              e.style &&
              typeof e.style.display == "string") {
            e.style.display = "block";
          }
        }
        var subscriptions = (typeof meetingSubscriptions == "object" && meetingSubscriptions) ?
          meetingSubscriptions : {};
        var applications = (typeof meetingApplications == "object" && meetingApplications) ?
          meetingApplications : {};

        var currentMillis = new Date().getTime() + serverTimeOffset;
        var pair, id, time, e;
        for (var i = 0, l = meetings.length; i < l; i++) {
          pair = meetings[i];
          id = pair[0];
          time = pair[2];

          if (!isLoggedIn) {
            e = document.getElementById("register-" + id);
            show(e);
          } else {
            if (time < currentMillis) {
              e = document.getElementById("join-" + id);
              show(e);
            } else {
              if (!subscriptions[id]) {
                e = document.getElementById("subscribe-" + id);
                show(e);
              } else {
                e = document.getElementById("unsubscribe-" + id);
                show(e);
              }
              if (!e) {
                if (!applications[id] && !subscriptions[id]) {
                  e = document.getElementById("apply-" + id);
                  show(e);
                } else {
                  e = document.getElementById("unapply-" + id);
                  show(e);
                }
              }
            }
          }
        }
      }

			function mtCreateSetType(val) {
			  switch (val) {
			    case "av":
			      document.getElementById("ct_txt_on").style.display = "none";
				  document.getElementById("ct_txt_off").style.display = "block";
			      document.getElementById("ct_av_on").style.display = "block";
				  document.getElementById("ct_av_off").style.display = "none";
			      document.getElementById("ct_type").value = val;
			      break;
			    case "t":
			      document.getElementById("ct_txt_on").style.display = "block";
				  document.getElementById("ct_txt_off").style.display = "none";
				  document.getElementById("ct_av_on").style.display = "none";
				  document.getElementById("ct_av_off").style.display = "block";
			      document.getElementById("ct_type").value = val;
			      break;
			  }
			}

			function mtCreateSetAllow(val) {
			  switch (val) {
			    case "0":
			      document.getElementById("ct_private_on").style.display = "none";
				  document.getElementById("ct_private_off").style.display = "block";
			      document.getElementById("ct_public_on").style.display = "block";
				  document.getElementById("ct_public_off").style.display = "none";
			      document.getElementById("ct_allow").value = val;
			      break;
			    case "1":
				  document.getElementById("ct_private_on").style.display = "block";
				  document.getElementById("ct_private_off").style.display = "none";
			      document.getElementById("ct_public_on").style.display = "none";
				  document.getElementById("ct_public_off").style.display = "block";
			      document.getElementById("ct_allow").value = val;
			      break;
			  }
			}

			var KNF = {};

			KNF.Countdown = (function () {
			  var ONE_MINUTE_IN_SECONDS = 60;
			  var ONE_HOUR_IN_MINUTES = 60;
			  var ONE_DAY_IN_MINUTES = ONE_HOUR_IN_MINUTES * 24;

			  var pluralize = function (count, singular, plural) {
			    count = Math.round(count);
			    var result = count + " ";
			    if (count == 1 || count == "1") {
			      result += singular;
			    } else if (plural) {
			      result += plural;
			    } else {
			      result += singular + "n";
			    }
			    return result;
			  };

        function show(element) {
          if (element && typeof element.style != "undefined" &&
              typeof element.style.display == "string") {
            element.style.display = "block";
          }
        }

        function hide(element) {
          if (element && typeof element.style != "undefined" &&
              typeof element.style.display == "string") {
            element.style.display = "none";
          }
        }

        var isLoggedIn = false;

        function displayJoinButton(id) {
          var element = document.getElementById("subscribe-" + id);
          hide(element);
          element = document.getElementById("unsubscribe-" + id);
          hide(element);
          element = document.getElementById("apply-" + id);
          hide(element);
          element = document.getElementById("unapply-" + id);
          hide(element);
          if (isLoggedIn) {
            element = document.getElementById("join-" + id);
            show(element);
          }
        }

        function updateTimes() {
          var now = new Date();
          if (typeof serverTimeOffset == "number") {
            now.setTime(now.getTime() + serverTimeOffset);
          }
          var pair, id, startTime, minutes, element, update, seconds;
          for (var i = 0, l = meetings.length; i < l; i++) {
            pair = meetings[i];
            if (pair) {
              id = pair[0];
              startTime = pair[1];
              if (id && startTime) {
                startTime = new Date(startTime);

                minutes = (startTime / 60000) - (now / 60000);
                if (minutes >= ONE_HOUR_IN_MINUTES) {
                  element = document.getElementById("knf_meeting_start_" + id);
                  if (element) {
                    show(element);
                  }
                } else {
                  update = "";
                  element = document.getElementById("knf_meeting_start_" + id);
                  if (element) {
                    hide(element);
                  }
                  element = document.getElementById("knf_countdown_" + id);
                  if (element) {
                    show(element);
                  }
                  seconds = Math.round((startTime / 1000) - (now / 1000));
                  if (seconds >= ONE_MINUTE_IN_SECONDS) {
                    update = pluralize(seconds / ONE_MINUTE_IN_SECONDS, "Minute");
                  } else if (seconds > 0) {
                    update = pluralize(seconds, "Sekunde");
                  } else {
                    update = "jetzt!";
                  }
                  if (seconds <= ONE_MINUTE_IN_SECONDS * 5) {
                    displayJoinButton(id);
                  }
                  element = document.getElementById("knf_countdown_" + id);
                  if (element) {
                    setText(element, update);
                  }
                }

              }
            }
          }
        }

        return {
          run: function (userIsLoggedIn) {
            isLoggedIn = userIsLoggedIn;
            if (typeof meetings != "undefined" && meetings) {
              window.setInterval(updateTimes, 1000);
            }
          }
			  };
			})();

			KNF.BlindDate = (function() {
				return {
					initiate: function(userId) {
						KNF.Popups.fetch("/popups/blinddate_invite?id=" + userId);
					},
					send: function (userId) {
						var tmp;
						var checks = document.getElementsByName('blind_date_invite_message'),
						message = '';
						for (var i = 0, c = checks.length; i < c; i++) {
							if (checks[i].checked) {
								message = checks[i].value;
								break;
							}
						}
						if (check_option()) {
							message = document.getElementById('message_chooser').value;
						}
						if ((tmp = getMessageChooser()) !== false) {message = tmp;}
						if (document.getElementById("knf_pc_addfriend")) document.getElementById("knf_pc_addfriend").style.display = "none";
						if (document.getElementById("knf_pc_addfriend_wait")) document.getElementById("knf_pc_addfriend_wait").style.display = "block";
            jQuery.ajax({
              url: "/user/game_after_invite",
              type: "POST",
              data: {
                "ids[]": userId,
                "mail_text[]": message
              },
              complete: function () {
                KNF.Popups.close();
								knfMessage('DateTest-Einladung wurde verschickt.', [{title: 'OK', cssclass: 'bBlue bw70 btn_blue'}]);
              }
            });
					}
				};
			})();

			KNF.Nudges = (function() {
			  var popup;
			  var doReload;

			  var sendNudge = function(id) {
			    var select = $("knf_flirtmsg");
			    var parameters = {
			      id : id,
			      message : select.options[select.selectedIndex].value
			    };
			    if (doReload) {
			      parameters["reload"] = true;
			    }
				jQuery.ajax({
					url: "/user/nudge",
					data: parameters,
					complete : function() {
			          hidePopup();
			          alert("Flirt wurde verschickt");
			        }
			      }
			    );
			  };

			  var sendMessage = function(id) {
			    var textarea = $("knf_flirtresponsemsg1");
				jQuery.ajax({
					url: "/message/send_message",
					data: {
			          to : id,
			          message : textarea.value
			        },
					complete : function() {
			          hidePopup();
			        }
			      }
			    );
			  };

			  var sendResponseNudge = function(id, parentId) {
			    var textarea = $("knf_flirtresponsemsg2");
			    var parameters = {
			      id : id,
			      nudge_id : parentId,
			      message : textarea.value
			    };
				jQuery.ajax({
					url: "/user/nudge",
					data: parameters,
					complete : function() {
			          hidePopup();
			        }
			      }
			    );
			  };

			  var cachedHandler = null;

			  var hidePopup = function() {
			    popup.hide();
			    popup.descendants().select(function(s) { return s.tagName == "textarea" }).each(function(s) { s.value = ""; });
			  };

			  var displayPopup = function() {
			    popup.show();
			    window.scrollTo(0, 0);
			  };

			  var FLIRT_HEADLINE = "Mit diesem Nutzer flirten?";
			  var FLIRT_TEXT = "Um deine Chancen zu erhöhen, wähle noch eine kurze Nachricht für deinen Flirt aus ...";

			  var preparePopup = function(userObject) {
			    var yesButton = popup.down("#knf_flirtyes");
			    if (cachedHandler) {
			      yesButton.stopObserving("click", cachedHandler);
			    }
			    cachedHandler = function(event) {
			      sendNudge(userObject["id"]);
			    };
			    yesButton.observe("click", cachedHandler);
			    popup.down("#knf_flirtno").observe("click", hidePopup);

			    yesButton.src = "http://static.kissnofrog.com/images/evolution/buttons/big_btn_flirten.png";

			    var userInfo = popup.down("#knf_mpr_cont_flirt");
			    userInfo.down("a").href = "/profile/" + userObject["login"];
			    userInfo.down("img").src = userObject["profileImageGridThumb"];
			    userInfo.down("p").update(userObject["login"]);

			    var cont = $("knf_flirtcont");
			    cont.down(".knf_popuphead p").update(FLIRT_HEADLINE);
			    cont.down(".knf_popuptext p").update(FLIRT_TEXT);

			    $("flirt_select").show();
			    $("flirt_textarea1").hide();
			    $("flirt_textarea2").hide();
			  };

			  var MESSAGE_HEADLINE = "Nachricht an Flirtpartner schreiben?";
			  var MESSAGE_TEXT = "Schreib eine kurze Nachricht ...";

			  var prepareTextAreaPopup = function(userObject) {
			    preparePopup(userObject);
			    var yesButton = popup.down("#knf_flirtyes");
			    if (cachedHandler) {
			      yesButton.stopObserving("click", cachedHandler);
			    }
			    cachedHandler = function(event) {
			      sendMessage(userObject["id"]);
			    };
			    yesButton.observe("click", cachedHandler);

			    yesButton.src = "http://static.kissnofrog.com/images/evolution/buttons/big_btn_senden.png";

			    var cont = $("knf_flirtcont");
			    cont.down(".knf_popuphead p").update(MESSAGE_HEADLINE);
			    cont.down(".knf_popuptext p").update(MESSAGE_TEXT);

			    $("flirt_select").hide();
			    $("flirt_textarea1").show();
			    $("flirt_textarea2").hide();
			  };

			  var RESPONSE_HEADLINE = "Flirt erwidern?";
			  var RESPONSE_TEXT = "Schreibe eine kurze Nachricht ...";

			  function prepareResponsePopup(userObject, parentId) {
			    preparePopup(userObject);
			    var yesButton = popup.down("#knf_flirtyes");
			    if (cachedHandler) {
			      yesButton.stopObserving("click", cachedHandler);
			    }
			    cachedHandler = function(event) {
			      sendResponseNudge(userObject["id"], parentId);
			    };
			    yesButton.observe("click", cachedHandler);

			    var cont = $("knf_flirtcont");
			    cont.down(".knf_popuphead p").update(RESPONSE_HEADLINE);
			    cont.down(".knf_popuptext p").update(RESPONSE_TEXT);

			    yesButton.src = "http://static.kissnofrog.com/images/evolution/buttons/big_btn_senden.png";

			    $("flirt_select").hide();
			    $("flirt_textarea1").hide();
			    $("flirt_textarea2").show();
			  }

        function acknowledge(id) {
          jQuery.ajax({
            url: "/nudge/acknowledge",
            type: "POST",
            data: {id: id}
          });
        }

			  return {
			    requite : function(userObject, parentId) {
			      popup = $("knf_flirtpopup");
			      if (popup) {
			        prepareResponsePopup(userObject, parentId);
			        displayPopup();
			      }
			    },
			    message : function(userObject) {
			      popup = $("knf_flirtpopup");
			      if (popup) {
			        prepareTextAreaPopup(userObject);
			        displayPopup();
			      }
			    },
			    initiate : function(userObject, reload) {
			      popup = $("knf_flirtpopup");
			      if (popup) {
			        doReload = !!reload;
			        preparePopup(userObject);
			        displayPopup();
			      }
			    },
          flirtLive: function (userId, isBlacklisted) {
            var flash = Flash.get("megaLive");
            if (flash) {
              var intervalId = window.setInterval(function () {
                arguments.callee.tries = (arguments.callee.tries || 0) + 1;
                if (arguments.callee.tries > 10) {
                  window.clearInterval(intervalId);
                  return;
                }
                var flash = Flash.get("megaLive");
                if (flash) {
                  try {
                    if (!isBlacklisted) {
                      flash.flirtLive(userId);
                    }
										knfMessage('Dein Live-Flirt wurde verschickt.', [{title: 'OK', cssclass: 'bBlue bw70 btn_blue'}]);
                    window.clearInterval(intervalId);
                  } catch (e) {}
                }
              }, 500);
            }
          },
			    connectLive : function (userId) {
					var flash = document.getElementsByName("megaLive");
					if (flash.length) {
						var intervalId = window.setInterval(function () {
							arguments.callee.tries = (arguments.callee.tries || 0) + 1;
							if (arguments.callee.tries > 10) {
								window.clearInterval(intervalId);
								flash = null;
								return;
							}
							try {
								flash[0].connectRequest(userId);
								window.clearInterval(intervalId);
								flash = null;
							} catch (e) {}
						}, 500);
					}
			    },
			    privateLiveChat : function (userId) {
			      var flash = document.getElementsByName("megaLive");
            if (flash.length) {
              var intervalId = window.setInterval(function () {
                arguments.callee.tries = (arguments.callee.tries || 0) + 1;
                if (arguments.callee.tries > 10) {
                  window.clearInterval(intervalId);
                  flash = null;
                  return;
                }
                try {
                  flash[0].requestPrivateLiveChat(userId);
                  window.clearInterval(intervalId);
                  flash = null;
                } catch (e) {}
              }, 500);
            }
			    },
          initiate2: function(userId, click_origin) {
			var clickParams = "&click_type=2";
			if (click_origin==-1) {
				clickParams = clickParams+"&click_origin="+click_origin;
			}
            KNF.Popups.fetch("/popups/sendflirt?id=" + userId + clickParams);
          },
          requite2: function(parentId) {
            KNF.Popups.fetch("/popups/flirt_respond?id=" + parentId);
          },
          send: function (userId, parentId) {
						var tmp;
						var checks = document.getElementsByName('friend_request_message'),
                message = '';
						for (var i = 0, c = checks.length; i < c; i++) {
							if (checks[i].checked) {
								message = checks[i].value;
								break;
							}
						}
						if (check_option()) {
							message = document.getElementById('message_chooser').value;
						}
						if ((tmp = getMessageChooser()) !== false) {message = tmp;}
            if (document.getElementById("knf_pc_addfriend")) document.getElementById("knf_pc_addfriend").style.display = "none";
            if (document.getElementById("knf_pc_addfriend_wait")) document.getElementById("knf_pc_addfriend_wait").style.display = "block";

            jQuery.ajax({
              url: "/user/nudge",
              type: "POST",
              data: {
                id: userId,
                nudge_id: parentId,
                message: message
              },
              complete: function () {
                KNF.Popups.fetch("/popups/flirt_sent");
              }
            });
          },
          acknowledge: acknowledge
			  };
			})();

      KNF.Spots = (function () {
        return {
          fadeIn: function (id) {
            var e = jQuery("#" + id);
            e.stop();
            e.fadeIn(1000);
          },
          fadeOut: function (id) {
            var e = jQuery("#" + id);
            e.stop();
            e.fadeOut(1000);
          },
          rewritePopups: function (meetingId) {
            jQuery(".small_popup_for_" + meetingId).each(function (i, e) {
              e = jQuery(e);
              if (!e.hasClass("small_popup_profile")) {
                e.addClass("small_popup_already_invited");
                e.html("<p class='small_popup_already_invited'>Du bist zu diesem Chat bereits verabredet.</p>");
              }
            });
          },
          reservationSucceeded: function (meetingId, isPrivate, startingSoon) {
            var action = isPrivate ? "apply" : "subscribe";
            jQuery("." + action + "-" + meetingId).hide();
            jQuery("." + action + "-box-" + meetingId).hide();
            if (!startingSoon) {
              jQuery(".un" + action + "-" + meetingId).show();
              jQuery(".un" + action + "-box-" + meetingId).show();
            }
          },
          reservationFailed: function (message) {
						knfMessage(message, [{title: 'OK', cssclass: 'bBlue bw70 btn_blue'}], 1);
          },
          showMeeting: function(id) {
            window.location.href = "/meeting/view/" + id;
          },
			    showPopup: function (element, popup) {
			      if (element) {
              popup = jQuery("#" + popup);
			        if (popup) {
			          var f = function (event) {
                  this.onmouseout = null;
			            popup.hide();
			          };
                element.onmouseout = f
                element = null;
			          popup.show();
			        }
			      }
			    },
			    switchImage : function(element, newImage) {
			      if (element && element.src) {
			        element = $(element);
			        var oldImage = element.src;
			        element.src = newImage;
			        var myFunction = function(event) {
			          element.stopObserving("mouseout", myFunction);
			          element.src = oldImage;
			        }
			        element.observe("mouseout", myFunction);
			      }
			    }
			  }
			})();

			function createCookie(name, value, days) {
			  var expires = "";
				if (days) {
					var date = new Date();
					date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
					expires = "; expires=" + date.toGMTString();
				}
				document.cookie = name + "=" + value + expires + "; path=/";
			}

			function readCookie(name) {
				var nameEQ = name + "=";
				var ca = document.cookie.split(";");
				for (var i = 0, len = ca.length; i < len; i++) {
			    var c = ca[i];
			    while (c.charAt(0) == " ") {
			      c = c.substring(1, c.length);
			    }
			    if (c.indexOf(nameEQ) == 0) {
			      return c.substring(nameEQ.length, c.length);
			    }
			  }
				return null;
			}

			function eraseCookie(name) {
			  createCookie(name, "", -1);
			}

			var Tabs = (function() {
			  return {
			    switchTabs : function(container, event) {
			      var div = event.target || event.srcElement;
			      var children = container.getElementsByTagName("div");
			      for (var i = 0, child; child = children[i]; i++) {
			        child = $(child);
			        if (child == div) {
			          child.removeClassName("profile_tab_off");
			          if (!child.hasClassName("profile_tab_on")) {
			            child.addClassName("profile_tab_on");
			          }
			          $$("." + child.id).invoke("show");
			        } else {
			          child.removeClassName("profile_tab_on");
			          if (!child.hasClassName("profile_tab_off")) {
			            child.addClassName("profile_tab_off");
			          }
			          $$("." + child.id).invoke("hide");
			        }
			      }
			    }
			  };
			})();

		KNF.Session = (function ()
		{
			function inviteUser (id)
			{
				KNF.Popups.fetch('/popups/session_invite?id=' + id, null);
			}

			function popupStep2 ()
			{
				var meets = document.getElementById('session_invite_meetings').getElementsByTagName('input');
				var sum = 0;
				for (var i = 0, c = meets.length; i < c; i ++)
				{
					if (meets[i].checked)
						sum ++;
				}
				if (sum)
				{
					document.getElementById('knf_btn_step2').style.display = 'none';
					document.getElementById('session_invite_meetings').style.display = 'none';
					document.getElementById('knf_btn_send').style.display = is_facebook ? 'inline' : 'block';
					document.getElementById('session_invite_message').style.display = is_facebook ? 'inline' : 'block';
				}
				else
					knfMessage('Du musst mindestens einen Chat auswählen!', [{title: 'OK', cssclass: 'bBlue bw70 btn_blue'}]);
			}

			function sendInvitation (uID)
			{
				var meetings = new Array(), tmp, message = '';
				var checks = document.getElementsByName('friend_request_message');
				for (var i = 0, c = checks.length; i < c; i++) {
					if (checks[i].checked) {
						message = checks[i].value;
						break;
					}
				}
				if (check_option()) {
					message = document.getElementById('message_chooser').value;
				}
				var meets = document.getElementById('session_invite_meetings').getElementsByTagName('input');
				for (var i = 0, c = meets.length; i < c; i ++)
				{
					if (meets[i].checked)
						meetings.push (meets[i].value);
				}
				if ((tmp = getMessageChooser()) !== false) {message = tmp;}
				KNF.Popups.close();
        jQuery.ajax({
          url: "/meeting/meetingInvitation",
          type: "POST",
          data: {invitedUserId: uID, 'meeting[]': meetings, invite_text: message},
          success: function () {
            KNF.Popups.fetch('/popups/session_invite_sent?id=' + uID, null);
          }
        });
			}

			return {
        "inviteUser" : inviteUser,
        "popupStep2" : popupStep2,
        "sendInvitation" : sendInvitation
      };
		})();

    KNF.Friends = (function () {
      function handleClick() {
        alreadySent();
        return false;
      }

      function checkForPopup(link, partnerId, freeText, clickTracking) {
        var url = "/popups/check_friend_request?id=" + partnerId;
        if (freeText) {
          url += "&text=true";
        }
        if (typeof clickTracking == "number") {
          url += "&click_origin=" + clickTracking;
        }
        KNF.Popups.fetch(url, function () {
          var btn_send = document.getElementById('knf_btn_send_friend_request')
          if (btn_send) {
            btn_send.onclick = function () {
							var tmp;
							if (document.getElementById("knf_pc_addfriend")) document.getElementById("knf_pc_addfriend").style.display = "none";
							if (document.getElementById("knf_pc_addfriend_wait")) document.getElementById("knf_pc_addfriend_wait").style.display = "block";
							var checks = document.getElementsByName("friend_request_message");
							var message = '';
							for (var i = 0, c = checks.length; i < c; i++) {
								if (checks[i].checked) {
									message = checks[i].value;
									break;
								}
							}
							if (check_option()) {
								message = document.getElementById("message_chooser").value;
							}
							if ((tmp = getMessageChooser()) !== false) {message = tmp;}
							var params = {id: partnerId};
							if (message) {
								params.friend_request_message = message;
							}
              jQuery.ajax({
                url: "/user/friend_request",
                type: "POST",
                data: params,
                complete: function () {
                  if (link) {
                    var e = jQuery(link);
                    e.removeClass("knf_profileactions_anfreunden");
                    e.addClass("knf_profileactions_anfreunden_pending");
                    link.onclick = handleClick;
                  }
                  KNF.Popups.fetch("/popups/addfriend_sent?id=" + partnerId);
                }
              });
              return false;
            };
          }
        });
      }

      function request(link, userId, freeText) {
        var url = "/popups/addfriend?id=" + userId;
        if (freeText) {
          url += "&text=true";
        }
        KNF.Popups.fetch(url, function () {
					var btn_send = document.getElementById('knf_btn_send_friend_request')
          if (btn_send) {
            btn_send.onclick = function () {
							var tmp;
							if (document.getElementById("knf_pc_addfriend")) document.getElementById("knf_pc_addfriend").style.display = "none";
							if (document.getElementById("knf_pc_addfriend_wait")) document.getElementById("knf_pc_addfriend_wait").style.display = "block";
							var checks = document.getElementsByName("friend_request_message");
							var message = '';
							for (var i = 0, c = checks.length; i < c; i++) {
								if (checks[i].checked) {
									message = checks[i].value;
									break;
								}
							}
							if (check_option()) {
								message = document.getElementById("message_chooser").value;
							}
							if ((tmp = getMessageChooser()) !== false) {message = tmp;}
							var params = { id : userId };
							if (message) {
								params.friend_request_message = message;
							}
              jQuery.ajax({
                url: "/user/friend_request",
                type: "POST",
                data: params,
                complete: function () {
                  if (link) {
                    var e = jQuery(link);
                    e.removeClass("knf_profileactions_anfreunden");
                    e.addClass("knf_profileactions_anfreunden_pending");
                    link.onclick = handleClick;
                  }
                  KNF.Popups.fetch("/popups/addfriend_sent?id=" + userId);
                }
              });
							return false;
            };
          }
        });
      }

      function alreadyDenied () {
        KNF.Popups.fetch("/popups/addfriend_denied");
      }

      function alreadySent() {
        KNF.Popups.fetch("/popups/addfriend_pending");
      }

      function accept(id) {
        handleFriendRequest(id, true);
      }

      function deny(id, suppressReload) {
        handleFriendRequest(id, false, suppressReload);
      }

      function handleFriendRequest(id, accept, suppressReload) {
        var params = { id : id };
				var tmp;
        if (accept) {
          params.accept = true;
        }
        var checks = document.getElementsByName("friend_request_message");
				var message = "";
				for (var i = 0, c = checks.length; i < c; i++) {
					if (checks[i].checked) {
						message = checks[i].value;
						break;
					}
				}
				if (check_option()) {
					message = document.getElementById("message_chooser").value;
				}
				if ((tmp = getMessageChooser()) !== false) {message = tmp;}
        if (message && accept) {
          params.friend_request_message = message;
        }
        jQuery.post("/user/handle_friend_request", params, function () {
          if (!suppressReload) {
            window.location.reload(true);
          }
        });
        KNF.Popups.close();
      }

      function markRead(id) {
        jQuery.post("/friend_request/read", {id: id});
      }

      function remove(id) {
        jQuery.post("/friend/remove", {id: id}, function () {
          window.location.reload(true);
        });
      }

      return {
        request: request,
        alreadyDenied: alreadyDenied,
        alreadySent: alreadySent,
        acceptRequest: accept,
        denyRequest: deny,
        markRead: markRead,
        remove: remove,
        checkForPopup: checkForPopup
      };
    })();

    KNF.Popups = (function () {
      var container;
      var popWidth;
      var popHeight;
      var popupPositionPE;

      function prepare() {
        if (!container) {
          container = document.getElementById("knf_pop_box_outer")
        }
      }

      function clear() {
        if (container) {
          while (container.firstChild) {
            container.removeChild(container.firstChild);
          }
        }
      }

      function hide() {
        prepare();
        if (container) {
          container.style.display = "none";
        }
				restartExecutor();
      }

			function show() {
				container.style.visibility = 'hidden';
				container.style.display = 'block';
				popWidth = container.offsetWidth;
				popHeight = container.offsetHeight;
				var posX = 0;
				var posY = document.all ? document.documentElement.scrollTop : pageYOffset;

				if (window.innerWidth) {
					posX = ((window.innerWidth - popWidth) / 2) - 100;
					posY += (window.innerHeight - popHeight) / 2;
				} else if (document.all) {
					posX = ((document.documentElement.clientWidth - popWidth) / 2) - 100;
					posY += (document.documentElement.clientHeight - popHeight) / 2;
				}
				if (is_facebook) {
					container.style.top = (Math.max(450, popY) - ((popHeight + 16) / 2)) + 'px';
					container.style.left = Math.max(0, (760 - popWidth - 8) / 2) + "px";
				} else {
					container.style.top = posY + "px";
					container.style.left = (posX + 100) + "px";
				}
				container.style.visibility = '';
				if (!is_facebook) {activatePE();}
			}

			function activatePE() {
				popupPositionPE = window.setInterval(function() {
					if (container.style.display != 'none') {
						popHeight = container.offsetHeight;
						var posY = document.all ? document.documentElement.scrollTop : pageYOffset;
						if (window.innerWidth) {
							posY += (window.innerHeight - popHeight) / 2;
						} else if (document.all) {
							posY += (document.documentElement.clientHeight - popHeight) / 2;
						}
						container.style.top = posY + 'px';
					}
				}, 100);
			}

			function deactivatePE() {
				if (popupPositionPE) {
					window.clearInterval(popupPositionPE);
				}
			}

      function nextOne() {
        prepare();
        if (container && container.style.display == "none") {
          fetch("/popups/next");
        }
      }

      function fetch(url, callback, sizeObj) {
        stopExecutor();
        jQuery.ajax({
          url: url,
          dataType: "html",
          beforeSend: function () {
            prepare();
            hide();
          },
          success: function (data) {
            clear();
            if (data) {
              container.innerHTML = data;
              show();
              if (document.getElementById("selfClosing")) {
                window.setTimeout(hide, 25 * 1000);
              }
              jQuery(container).html(data);
              if (typeof callback === "function") {
                callback();
              }
            }
          },
          error: hide
        });
      }

      function passChat(id) {
        jQuery.post("/meeting/pass", { id : id });
			  hide();
      }
      function acknowledgeChat(id) {
        jQuery.post("/private_chat/acknowledge", { id : id });
        hide();
      }

      function display(text) {
        prepare();
        clear();
        if (text) {
          container.innerHTML = text;
        }
        show();
      }

      return {
        nextOne: nextOne,
        close: function () {
          hide();
          var e = document.getElementsByName("megaLive");
          if (e.length && typeof e[0].restoreMegaLive != "undefined") {
            e[0].restoreMegaLive();
          }
        },
        fetch: fetch,
        passChatPopup: passChat,
        acknowledgeChat: acknowledgeChat,
        show: display,
        activatePE: activatePE,
        deactivatePE: deactivatePE
      };
    })();

    KNF.Invitations = (function () {
      function accept(id) {
        jQuery.post("/meeting_subscription/mark_notified", { id : id, accept : true });
      }

      function pass(id) {
        jQuery.post("/meeting_subscription/mark_notified", { id : id });
      }

      return {
        accept : accept,
        pass : pass
      };
    })();

    KNF.Forms = (function () {
      function ajaxify(form, prefix, hasMailbox) {
        Event.observe(form, "submit", function (event) {
          event.stop();
          ajaxSubmit(this, prefix, hasMailbox);
        });
      }

      function ajaxSubmit(form, prefix, hasMailbox) {
        form = Element.extend(form);
        form.request({
          onSuccess : function (xhr) {
            var ids = xhr.responseJSON || [];
            for (var i = 0, l = ids.length; i < l; i++) {
              var item = $(prefix + ids[i]);
              if (item) {
                var parent = item.up();
                item.remove();
                if (!parent.select(".mbItem").length) {
                  var emptyMessage = $("empty_inbox_message");
                  if (emptyMessage) {
                    emptyMessage.show();
                  }
                }
              }
            }
            if (hasMailbox) {
              mailboxActivate();
            }
          }
        });
      }

      function deleteMany(form, prefix, hasMailbox) {
        jQuery.post(form.action, serializeForm(form), function (ids) {
          var item, parent;
          for (var i = 0, l = ids.length; i < l; i++) {
            item = document.getElementById(prefix + ids[i]);
            if (item) {
              parent = item.parentNode;
              parent.removeChild(item);
              if (!jQuery(".mbItem", parent).length) {
                jQuery("#empty_inbox_message").show();
              }
            }
          }
          if (hasMailbox) {
            mailboxActivate();
          }
        }, "json");
        return false;
      }

      return {
        ajaxify: ajaxify,
        ajaxSubmit: ajaxSubmit,
        deleteMany: deleteMany
      };
    })();


    function trackClick(user, partner, type, origin, value) {
      var params = [
        "user=" + encodeURIComponent(user),
        "partner=" + encodeURIComponent(partner),
        "type=" + encodeURIComponent(type)
      ];
      if (origin != null) {
        params[params.length] = "origin=" + encodeURIComponent(origin);
      }
      if (value != null) {
        params[params.length] = "value=" + encodeURIComponent(value);
      }
      jQuery.get("/user/track_clicks", params.join("&"));
    }

		function infoToggleView (obj, force)
		{
			var myChilds = obj.parentNode.childNodes;

			for (var i = 0; i < myChilds.length; i ++) {
				var e = myChilds[i];
				if (((e.nodeName == 'DIV') && (e.className == 'info_cat_sub')) || (e.nodeName == 'P')) {
					if (e.style.display == 'none') {
						e.style.display = 'block';
					} else {
						e.style.display = 'none';
					}
					if (force == 'none') {
						e.style.display = 'none';
					} else if (force == 'block') {
						e.style.display = 'block';
					}
				}
			}
		}

		function flashClickTracking() {
		}
	