<style>
html,
body {

  -webkit-tap-highlight-color: transparent;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

* {
  box-sizing: inherit;
  cursor: inherit;
  transition-duration: 0.2s;
  transition-property: none;
  transition-timing-function: cubic-bezier(0.42, 0, 0.58, 1);
}

label.field {
  border-radius: 2px;
  color: black;
  display: block;
  margin: 0px;
  max-width: 100%;
  min-width: 100%;
  padding: 8px;
  opacity: 0;
  position: relative;
  transition-property: opacity;
  z-index: 1;
}
label.field span {
  color: inherit;
  display: block;
  font-size: 16px;
  height: 20px;
  line-height: 20px;
  left: 9px;
  pointer-events: none;
  position: absolute;
  top: 32px;
  transform: scale(1) translateY(0);
  transition-property: color, font-size, top;
  z-index: 1;
}
label.field span.required::after {
  color: inherit;
  content: "*";
  display: block;
  height: 20px;
  left: -20px;
  line-height: 20px;
  position: absolute;
  text-align: center;
  top: 0;
  width: 20px;
}
.error label.field span {
  color: #F02318;
}
label.field .psuedo_select {
  background: rgba(255, 255, 255, 0);
  position: relative;
  border-color: black;
  border-style: solid;
  border-width: 0 0 1.2px 0;
  color: black;
  cursor: pointer;
  font-size: 14px;
  height: 24px;
  line-height: 24px;
  margin: 28px 0px 0 0;
  min-width: 250px;
  width: 100%;
  padding-top: 24px;
  outline: 0;
  z-index: 1;
}
label.field .psuedo_select::after {
  background: url("data:image/svg+xml;utf8,<svg fill='#666' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'> <path d='M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z'/> <path d='M0-.75h24v24H0z' fill='none'/> </svg>"), no-repeat;
  content: "";
  height: 24px;
  width: 24px;
  position: absolute;
  top: 0;
  right: 0;
  transition-property: background;
}
label.field .psuedo_select .selected {
  height: 24px;
  left: 1px;
  line-height: 24px;
  opacity: 0;
  position: absolute;
  top: 0;
  transform: translateY(24px);
  transition-property: opacity, transform;
  will-change: transform;
}
label.field .psuedo_select ul {
  background: #fff;
  box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);
  display: block;
  height: 0;
  list-style: none;
  margin-top: 2px;
  opacity: 0;
  overflow: hidden;
  padding: 0px 10px 10px 10px;
  pointer-events: none;
  transition-property: height, opacity;
  width: 100%;
  z-index: 2;
}
label.field .psuedo_select ul li {
  height: 32px;
  padding: 8px 8px 8px 8px;
}
label.field .deselect {
  height: 100vh;
  left: 0;
  position: fixed;
  top: 0;
  width: 100vw;
  z-index: -1;
}
label.field.focused {
  color: black;
}
label.field.focused .psuedo_select {
  border-color: black;
}
label.field.focused .psuedo_select::after {
  background: url("data:image/svg+xml;utf8,<svg fill='#007BED' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'> <path d='M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z'/> <path d='M0-.75h24v24H0z' fill='none'/> </svg>"), no-repeat;
}
label.field.focused .psuedo_select ul {
  opacity: 1;
  pointer-events: all;
}

  ul#img_category_options {
    min-height: 166px;
}

  label#img_category_label {
    min-width: 100%;
}
  
</style>



<label id="img_category_label" class="field" for="img_category" data-value="">
	<span>Aktivitet</span>
	<div id="img_category" class="psuedo_select" name="img_category">
		<span class="selected"></span>
		<ul id="img_category_options" class="options">
			<li class="option" data-value="*">Alle</li>
			<li class="option" data-value="Frokostmøte">Frokostmøte</li>
 			<li class="option" data-value="Temamøte">Temamøte</li>
			<li class="option" data-value="Møtebørs">Møtebørs</li>
			<li class="option" data-value="Turer">Turer</li>

		</ul>
	</div>
</label>


<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/3.0.6/isotope.pkgd.min.js"></script>
<script>
$(document).ready(function() {
  // Initialize Isotope
  var $grid = $('.aktivitet-grid').isotope({
    itemSelector: '.aktivitet-item',
    layoutMode: 'vertical'
  });

  // Function to create and manage filter display
  function manageFilterDisplay(filterValue, selectedText) {
    // Select elements by class instead of ID
    var $filterDisplayContainers = $('.filterDisplayContainer');
    // Clear previous filter display in all containers
    $filterDisplayContainers.each(function() {
      $(this).empty();
    });

    if (filterValue !== '*') {
      var $filterDisplay = $('<button class="filter-display">' + selectedText + ' <span class="remove-filter">×</span></button>');

      // Append the filter display button to each container
      $filterDisplayContainers.each(function() {
        $(this).append($filterDisplay.clone(true)); // Clone with events using .clone(true)
      });

      // Click event to remove filter, now set directly on the button
      $filterDisplay.on('click', '.remove-filter', function() {
        // Reset Isotope filter to show all
        $grid.isotope({ filter: '*' });
        // Reset the pseudo-select display
        $('#img_category .selected').text('Alle'); // or your default text
        // Clear all filter display containers
        $filterDisplayContainers.empty();
      });
    }
  }

  // Custom dropdown event handling
  $('#img_category_options').on('click', '.option', function() {
    var filterValue = $(this).attr('data-value');
    var selectedText = $(this).text();
    
    // Apply the filter to Isotope
    $grid.isotope({ filter: filterValue === '*' ? '*' : '[data-category="' + filterValue + '"]' });
    // Update the displayed selected value in the pseudo-select
    $('#img_category .selected').text(selectedText);

    // Manage filter display
    manageFilterDisplay(filterValue, selectedText);
  });
});
  
</script>


<script>

var util = {
		f: {
			addStyle: function (elem, prop, val, vendors) {
				var i, ii, property, value;
				if (!util.f.isElem(elem)) {
					elem = document.getElementById(elem);
				}
				if (!util.f.isArray(prop)) {
					prop = [prop];
					val = [val];
				}
				for (i = 0; i < prop.length; i += 1) {
					var thisProp = String(prop[i]),
						thisVal = String(val[i]);
					if (typeof vendors !== "undefined") {
						if (!util.f.isArray(vendors)) {
							vendors.toLowerCase() == "all"
								? (vendors = ["webkit", "moz", "ms", "o"])
								: (vendors = [vendors]);
						}
						for (ii = 0; ii < vendors.length; ii += 1) {
							elem.style[vendors[i] + thisProp] = thisVal;
						}
					}
					thisProp = thisProp.charAt(0).toLowerCase() + thisProp.slice(1);
					elem.style[thisProp] = thisVal;
				}
			},
			cssLoaded: function (event) {
				var child = util.f.getTrg(event);
				child.setAttribute("media", "all");
			},
			events: {
				cancel: function (event) {
					util.f.events.prevent(event);
					util.f.events.stop(event);
				},
				prevent: function (event) {
					event = event || window.event;
					event.preventDefault();
				},
				stop: function (event) {
					event = event || window.event;
					event.stopPropagation();
				}
			},
			getSize: function (elem, prop) {
				return parseInt(elem.getBoundingClientRect()[prop], 10);
			},
			getTrg: function (event) {
				event = event || window.event;
				if (event.srcElement) {
					return event.srcElement;
				} else {
					return event.target;
				}
			},
			isElem: function (elem) {
				return util.f.isNode(elem) && elem.nodeType == 1;
			},
			isArray: function (v) {
				return v.constructor === Array;
			},
			isNode: function (elem) {
				return typeof Node === "object"
					? elem instanceof Node
					: elem &&
							typeof elem === "object" &&
							typeof elem.nodeType === "number" &&
							typeof elem.nodeName === "string" &&
							elem.nodeType !== 3;
			},
			isObj: function (v) {
				return typeof v == "object";
			},
			replaceAt: function (str, index, char) {
				return str.substr(0, index) + char + str.substr(index + char.length);
			}
		}
	},
	//////////////////////////////////////
	// ok that's all the utilities      //
	// onto the select box / form stuff //
	//////////////////////////////////////
	form = {
		f: {
			init: {
				register: function () {
					console.clear(); // just cuz codepen
					var child,
						children = document.getElementsByClassName("field"),
						i;
					for (i = 0; i < children.length; i += 1) {
						child = children[i];
						util.f.addStyle(child, "Opacity", 1);
					}
					children = document.getElementsByClassName("psuedo_select");
					for (i = 0; i < children.length; i += 1) {
						child = children[i];
						child.addEventListener("click", form.f.select.toggle);
					}
				},
				unregister: function () {
					//just here as a formallity
					//call this to stop all ongoing timeouts are ready the page for some sort of json re-route
				}
			},
			select: {
				blur: function (field) {
					field.classList.remove("focused");
					var child,
						children = field.childNodes,
						i,
						ii,
						nested_child,
						nested_children;
					for (i = 0; i < children.length; i += 1) {
						child = children[i];
						if (util.f.isElem(child)) {
							if (child.classList.contains("deselect")) {
								child.parentNode.removeChild(child);
							} else if (child.tagName == "SPAN") {
								if (!field.dataset.value) {
									util.f.addStyle(child, ["FontSize", "Top"], ["16px", "32px"]);
								}
							} else if (child.classList.contains("psuedo_select")) {
								nested_children = child.childNodes;
								for (ii = 0; ii < nested_children.length; ii += 1) {
									nested_child = nested_children[ii];
									if (util.f.isElem(nested_child)) {
										if (nested_child.tagName == "SPAN") {
											if (!field.dataset.value) {
												util.f.addStyle(
													nested_child,
													["Opacity", "Transform"],
													[0, "translateY(24px)"]
												);
											}
										} else if (nested_child.tagName == "UL") {
											util.f.addStyle(nested_child, ["Height", "Opacity"], [0, 0]);
										}
									}
								}
							}
						}
					}
				},
				focus: function (field) {
					field.classList.add("focused");
					var bool = false,
						child,
						children = field.childNodes,
						i,
						ii,
						iii,
						nested_child,
						nested_children,
						nested_nested_child,
						nested_nested_children,
						size = 0;
					for (i = 0; i < children.length; i += 1) {
						child = children[i];
						util.f.isElem(child) && child.classList.contains("deselect")
							? (bool = true)
							: null;
					}
					if (!bool) {
						child = document.createElement("div");
						child.className = "deselect";
						child.addEventListener("click", form.f.select.toggle);
						field.insertBefore(child, children[0]);
					}
					for (i = 0; i < children.length; i += 1) {
						child = children[i];
						if (util.f.isElem(child) && child.classList.contains("psuedo_select")) {
							nested_children = child.childNodes;
							for (ii = 0; ii < nested_children.length; ii += 1) {
								nested_child = nested_children[ii];
								if (util.f.isElem(nested_child) && nested_child.tagName == "UL") {
									size = 0;
									nested_nested_children = nested_child.childNodes;
									for (iii = 0; iii < nested_nested_children.length; iii += 1) {
										nested_nested_child = nested_nested_children[iii];
										if (
											util.f.isElem(nested_nested_child) &&
											nested_nested_child.tagName == "LI"
										) {
											size += util.f.getSize(nested_nested_child, "height");
											console.log("size: " + size);
										}
									}
									util.f.addStyle(nested_child, ["Height", "Opacity"], [size + "px", 1]);
								}
							}
						}
					}
				},
				selection: function (child, parent) {
					var children = parent.childNodes,
						i,
						ii,
						nested_child,
						nested_children,
						time = 0,
						value;
					if (util.f.isElem(child) && util.f.isElem(parent)) {
						parent.dataset.value = child.dataset.value;
						value = child.innerHTML;
					}
					for (i = 0; i < children.length; i += 1) {
						child = children[i];
						if (util.f.isElem(child)) {
							if (child.classList.contains("psuedo_select")) {
								nested_children = child.childNodes;
								for (ii = 0; ii < nested_children.length; ii += 1) {
									nested_child = nested_children[ii];
									if (
										util.f.isElem(nested_child) &&
										nested_child.classList.contains("selected")
									) {
										if (nested_child.innerHTML) {
											time = 1e2;
											util.f.addStyle(
												nested_child,
												["Opacity", "Transform"],
												[0, "translateY(24px)"],
												"all"
											);
										}
										setTimeout(
											function (c, v) {
												c.innerHTML = v;
												util.f.addStyle(
													c,
													["Opacity", "Transform", "TransitionDuration"],
													[1, "translateY(0px)", ".1s"],
													"all"
												);
											},
											time,
											nested_child,
											value
										);
									}
								}
							} else if (child.tagName == "SPAN") {
								util.f.addStyle(child, ["FontSize", "Top"], ["12px", "8px"]);
							}
						}
					}
				},
				toggle: function (event) {
					util.f.events.stop(event);
					var child = util.f.getTrg(event),
						children,
						i,
						parent;
					switch (true) {
						case child.classList.contains("psuedo_select"):
						case child.classList.contains("deselect"):
							parent = child.parentNode;
							break;
						case child.classList.contains("options"):
							parent = child.parentNode.parentNode;
							break;
						case child.classList.contains("option"):
							parent = child.parentNode.parentNode.parentNode;
							form.f.select.selection(child, parent);
							break;
					}
					parent.classList.contains("focused")
						? form.f.select.blur(parent)
						: form.f.select.focus(parent);
				}
			}
		}
	};
window.onload = form.f.init.register;

  
</script>

Kommende aktiviteter.
Bygg relasjoner - skap business!

<script>

document.addEventListener('DOMContentLoaded', function() {
  const buttons = document.querySelectorAll('.calendar-button');
  buttons.forEach(button => {
    button.addEventListener('click', () => {
      const config = {
        name: button.getAttribute('data-name'),
        description: button.getAttribute('data-description'),
        startDate: button.getAttribute('data-startDate'),
        startTime: button.getAttribute('data-startTime'),
        endDate: button.getAttribute('data-endDate'),
        endTime: button.getAttribute('data-endTime'),
        timeZone: button.getAttribute('data-timeZone'),
        location: button.getAttribute('data-location'),
        organizer: button.getAttribute('data-organizer'),
        options: JSON.parse(button.getAttribute('data-options')),
        listStyle: button.getAttribute('data-listStyle'),
        language: button.getAttribute('data-language')
      };
      atcb_action(config, button);
    });
  });
});

</script>

30.05.2024

Møtebørs

Ullevaal Stadion, Oslo

Vi arrangerer møtebørs inntil 6 ganger i året. Her avholder vi effektive speed-møter, hvor du møter 8 bedrifter på 2 timer.

Påmelding
<script type="application/javascript">
  const config = {
    styleLight: "--overlay-cursor: default;",
    name: "Møtebørs",
    description: "Info",
    hideBranding: true,
    startDate: "2024-05-30",
    startTime: "09:00",
    endDate: "2024-05-30",
    endTime: "11:00",
    timeZone: "Europe/Oslo",
    location: "Ullevaal Stadion, Oslo",
    organizer: "Forretningsnettverket|thomas@forretningsnettverket.no",
    options: ["Apple", "Google", "iCal", "Outlook.com", "Yahoo", "Microsoft365"],
    listStyle: "overlay",
    language: "no"
  };

  document.addEventListener('DOMContentLoaded', function() {
    const buttons = document.querySelectorAll('.calendar-button');
    buttons.forEach(button => {
      button.addEventListener('click', () => atcb_action(config, button));
    });
  });
</script>

04.06.2024

Frokostmøte

Scandic Hotell, Solli, Oslo

Ønsker du business uten å måtte ta «cold calls»? Vi holder frokostmøter i Oslo, Follo og Moss, og her møter du ulike bedrifter fra de fleste bransjer.
Bli med som gjest og bli kjent med nye og spennende bedrifter!

Påmelding
<script type="application/javascript">
  const config = {
    styleLight: "--overlay-cursor: default;",
    name: "Frokostmøte",
    description: "Info",
    hideBranding: true,
    startDate: "2024-06-04",
    startTime: "07:00",
    endDate: "2024-06-04",
    endTime: "09:00",
    timeZone: "Europe/Oslo",
    location: "Scandic Hotell, Solli, Oslo",
    organizer: "Forretningsnettverket|thomas@forretningsnettverket.no",
    options: ["Apple", "Google", "iCal", "Outlook.com", "Yahoo", "Microsoft365"],
    listStyle: "overlay",
    language: "no"
  };

  document.addEventListener('DOMContentLoaded', function() {
    const buttons = document.querySelectorAll('.calendar-button');
    buttons.forEach(button => {
      button.addEventListener('click', () => atcb_action(config, button));
    });
  });
</script>

05.06.2024

Frokostmøte

Storebaug Hotell & Kro, Moss

Ønsker du business uten å måtte ta «cold calls»? Vi holder frokostmøter i Oslo, Follo og Moss, og her møter du ulike bedrifter fra de fleste bransjer.
Bli med som gjest og bli kjent med nye og spennende bedrifter!

Påmelding
<script type="application/javascript">
  const config = {
    styleLight: "--overlay-cursor: default;",
    name: "Frokostmøte",
    description: "Info",
    hideBranding: true,
    startDate: "2024-06-05",
    startTime: "07:00",
    endDate: "2024-06-05",
    endTime: "09:00",
    timeZone: "Europe/Oslo",
    location: "Storebaug Hotell & Kro, Moss",
    organizer: "Forretningsnettverket|thomas@forretningsnettverket.no",
    options: ["Apple", "Google", "iCal", "Outlook.com", "Yahoo", "Microsoft365"],
    listStyle: "overlay",
    language: "no"
  };

  document.addEventListener('DOMContentLoaded', function() {
    const buttons = document.querySelectorAll('.calendar-button');
    buttons.forEach(button => {
      button.addEventListener('click', () => atcb_action(config, button));
    });
  });
</script>

11.06.2024

Frokostmøte

The Well, Follo

Ønsker du business uten å måtte ta «cold calls»? Vi holder frokostmøter i Oslo, Follo og Moss, og her møter du ulike bedrifter fra de fleste bransjer.
Bli med som gjest og bli kjent med nye og spennende bedrifter!

Påmelding
<script type="application/javascript">
  const config = {
    styleLight: "--overlay-cursor: default;",
    name: "Frokostmøte",
    description: "Info",
    hideBranding: true,
    startDate: "2024-06-11",
    startTime: "07:00",
    endDate: "2024-06-11",
    endTime: "09:00",
    timeZone: "Europe/Oslo",
    location: "The Well, Follo",
    organizer: "Forretningsnettverket|thomas@forretningsnettverket.no",
    options: ["Apple", "Google", "iCal", "Outlook.com", "Yahoo", "Microsoft365"],
    listStyle: "overlay",
    language: "no"
  };

  document.addEventListener('DOMContentLoaded', function() {
    const buttons = document.querySelectorAll('.calendar-button');
    buttons.forEach(button => {
      button.addEventListener('click', () => atcb_action(config, button));
    });
  });
</script>

28.05.2024

{acf_tittel}

The Well, Follo

Ønsker du business uten å måtte ta «cold calls»? Vi holder frokostmøter i Oslo, Follo og Moss, og her møter du ulike bedrifter fra de fleste bransjer.
Bli med som gjest og bli kjent med nye og spennende bedrifter!

Bli med som gjest

23.05.2024

{acf_tittel}

Epicenter Oslo, Oslo

Ønsker du business uten å måtte ta «cold calls»? Vi holder frokostmøter i Oslo, Follo og Moss, og her møter du ulike bedrifter fra de fleste bransjer.
Bli med som gjest og bli kjent med nye og spennende bedrifter!

Bli med som gjest

10.12.2024

{acf_tittel}

The Well, Follo

Ønsker du business uten å måtte ta «cold calls»? Vi holder frokostmøter i Oslo, Follo og Moss, og her møter du ulike bedrifter fra de fleste bransjer.
Bli med som gjest og bli kjent med nye og spennende bedrifter!

Bli med som gjest

ForretningsBloggen

Post 1

Dynamisk Data