﻿// jquery.Cookie
jQuery.cookie=function(key,value,options){if(arguments.length>1&&String(value)!=="[object Object]"){options=jQuery.extend({},options);if(value===null||value===undefined){options.expires=-1}if(typeof options.expires==='number'){var days=options.expires,t=options.expires=new Date();t.setDate(t.getDate()+days)}value=String(value);return(document.cookie=[encodeURIComponent(key),'=',options.raw?value:encodeURIComponent(value),options.expires?'; expires='+options.expires.toUTCString():'',options.path?'; path='+options.path:'',options.domain?'; domain='+options.domain:'',options.secure?'; secure':''].join(''))}options=value||{};var result,decode=options.raw?function(s){return s}:decodeURIComponent;return(result=new RegExp('(?:^|; )'+encodeURIComponent(key)+'=([^;]*)').exec(document.cookie))?decode(result[1]):null};
// jquery.Introducer
jQuery.fn.introducer = function (passedArgsObj) { var defaults = { width: 966, height: 356, marginLeft: '-502px', opacity: '0.75', cssClass: 'introducer' }; var args = jQuery.extend(defaults, passedArgsObj); var width = args.width; var height = args.height; var marginLeft = args.marginLeft; var opacity = args.opacity; var cssClass = args.cssClass; var cookieName = 'Haefele.Intro'; var $introducer = $('<div></div>').attr('id', 'introducer').css({ 'position': 'absolute', 'left': '50%', 'top': '157px', 'margin-left': marginLeft, 'width': width + 'px', 'height': height + 'px' }); var $introducerOverlay = $('<div></div>').attr('id', 'introducer-overlay').css({ 'width': '100%', 'height': $(document).height() + 'px', 'opacity': opacity }); init(); function init() { if ($.cookie(cookieName) == null) { $introducerOverlay.appendTo('body').fadeIn('fast'); var introducerContent = $('.' + cssClass).html(); $introducer.html(introducerContent).appendTo('body'); $('.close', $introducer).one('click', onIntroducerCloseClick); $.cookie(cookieName, 'seen', { expires: 365, path: '/' }) } } function onIntroducerCloseClick(e) { e.preventDefault(); $introducer.remove(); $introducerOverlay.remove() } };
// jquery.cross-slide
(function () { var d = jQuery, a = (d.fn.startAnimation ? "startAnimation" : "animate"), c = "pause plugin missing."; function e(h) { for (var g = 1; g < arguments.length; g++) { h = h.replace(new RegExp("\\{" + (g - 1) + "}", "g"), arguments[g]) } return h } function f() { arguments[0] = "CrossSlide: " + arguments[0]; throw new Error(e.apply(null, arguments)) } function b(i) { var g = 1; var h = i.replace(/^\s*|\s*$/g, "").split(/\s+/); if (h.length > 3) { throw new Error() } if (h[0] == "center") { if (h.length == 1) { h = ["center", "center"] } else { if (h.length == 2 && h[1].match(/^[\d.]+x$/i)) { h = ["center", "center", h[1]] } } } if (h.length == 3) { g = parseFloat(h[2].match(/^([\d.]+)x$/i)[1]) } var j = h[0] + " " + h[1]; if (j == "left top" || j == "top left") { return { xrel: 0, yrel: 0, zoom: g} } if (j == "left center" || j == "center left") { return { xrel: 0, yrel: 0.5, zoom: g} } if (j == "left bottom" || j == "bottom left") { return { xrel: 0, yrel: 1, zoom: g} } if (j == "center top" || j == "top center") { return { xrel: 0.5, yrel: 0, zoom: g} } if (j == "center center") { return { xrel: 0.5, yrel: 0.5, zoom: g} } if (j == "center bottom" || j == "bottom center") { return { xrel: 0.5, yrel: 1, zoom: g} } if (j == "right top" || j == "top right") { return { xrel: 1, yrel: 0, zoom: g} } if (j == "right center" || j == "center right") { return { xrel: 1, yrel: 0.5, zoom: g} } if (j == "right bottom" || j == "bottom right") { return { xrel: 1, yrel: 1, zoom: g} } return { xrel: parseInt(h[0].match(/^(\d+)%$/)[1]) / 100, yrel: parseInt(h[1].match(/^(\d+)%$/)[1]) / 100, zoom: g} } d.fn.crossSlide = function (i, k, l) { var g = this, j = this.width(), h = this.height(); if (g.length != 1) { f("crossSlide() must be called on exactly 1 element") } g.get(0).crossSlideArgs = [i, k, l]; k = d.map(k, function (m) { return d.extend({}, m) }); if (!i.easing) { i.easing = i.variant ? "swing" : "linear" } if (!l) { l = function () { } } (function (o) { var m = 0; function n(q, p) { p.onload = function (r) { m++; k[q].width = p.width; k[q].height = p.height; if (m == k.length) { o() } }; p.src = k[q].src; if (q + 1 < k.length) { n(q + 1, new Image()) } } n(0, new Image()) })(function () { if (!i.fade) { f("missing fade parameter.") } if (i.speed && i.sleep) { f("you cannot set both speed and sleep at the same time.") } var A = Math.round(i.fade * 1000); if (i.sleep) { var z = Math.round(i.sleep * 1000) } if (i.speed) { var o = i.speed / 1000, v = Math.round(A * o) } g.empty().css({ overflow: "hidden", padding: 0 }); if (!/^(absolute|relative|fixed)$/.test(g.css("position"))) { g.css({ position: "relative" }) } if (!g.width() || !g.height()) { f("container element does not have its own width and height") } if (i.shuffle) { k.sort(function () { return Math.random() - 0.5 }) } for (var t = 0; t < k.length; ++t) { var m = k[t]; if (!m.src) { f("missing src parameter in picture {0}.", t + 1) } if (o) { switch (m.dir) { case "up": m.from = { xrel: 0.5, yrel: 0, zoom: 1 }; m.to = { xrel: 0.5, yrel: 1, zoom: 1 }; var x = m.height - h - 2 * v; break; case "down": m.from = { xrel: 0.5, yrel: 1, zoom: 1 }; m.to = { xrel: 0.5, yrel: 0, zoom: 1 }; var x = m.height - h - 2 * v; break; case "left": m.from = { xrel: 0, yrel: 0.5, zoom: 1 }; m.to = { xrel: 1, yrel: 0.5, zoom: 1 }; var x = m.width - j - 2 * v; break; case "right": m.from = { xrel: 1, yrel: 0.5, zoom: 1 }; m.to = { xrel: 0, yrel: 0.5, zoom: 1 }; var x = m.width - j - 2 * v; break; default: f("missing or malformed dir parameter in picture {0}.", t + 1) } if (x <= 0) { f("impossible animation: either picture {0} is too small or div is too large or fade duration too long.", t + 1) } m.time_ms = Math.round(x / o) } else { if (!z) { if (!m.from || !m.to || !m.time) { f("missing either speed/sleep option, or from/to/time params in picture {0}.", t + 1) } try { m.from = b(m.from) } catch (w) { f('malformed "from" parameter in picture {0}.', t + 1) } try { m.to = b(m.to) } catch (w) { f('malformed "to" parameter in picture {0}.', t + 1) } if (!m.time) { f('missing "time" parameter in picture {0}.', t + 1) } m.time_ms = Math.round(m.time * 1000) } } if (m.from) { d.each([m.from, m.to], function (p, C) { C.width = Math.round(m.width * C.zoom); C.height = Math.round(m.height * C.zoom); C.left = Math.round((j - C.width) * C.xrel); C.top = Math.round((h - C.height) * C.yrel) }) } var s, y; y = s = d(e('<img src="{0}"/>', m.src)); if (m.href) { y = d(e('<a href="{0}"></a>', m.href)).append(s) } if (m.onclick) { y.click(m.onclick) } if (m.alt) { s.attr("alt", m.alt) } if (m.rel) { y.attr("rel", m.rel) } if (m.href && m.target) { y.attr("target", m.target) } y.appendTo(g) } delete o; function n(D, C) { var E = [0, A / (D.time_ms + 2 * A), 1 - A / (D.time_ms + 2 * A), 1][C]; return { left: Math.round(D.from.left + E * (D.to.left - D.from.left)), top: Math.round(D.from.top + E * (D.to.top - D.from.top)), width: Math.round(D.from.width + E * (D.to.width - D.from.width)), height: Math.round(D.from.height + E * (D.to.height - D.from.height))} } var u = g.find("img").css({ position: "absolute", visibility: "hidden", top: 0, left: 0, border: 0 }); u.eq(0).css({ visibility: "visible" }); if (!z) { u.eq(0).css(n(k[0], i.variant ? 0 : 1)) } var B = i.loop; function q(O, p) { if (O % 2 == 0) { if (z) { var E = O / 2, S = (E - 1 + k.length) % k.length, P = u.eq(E), M = u.eq(S); var L = function () { l(E, P.get(0)); M.css("visibility", "hidden"); setTimeout(p, z) } } else { var H = O / 2, S = (H - 1 + k.length) % k.length, R = u.eq(H), M = u.eq(S), F = k[H].time_ms, N = n(k[H], i.variant ? 3 : 2); var L = function () { l(H, R.get(0)); M.css("visibility", "hidden"); R[a](N, F, i.easing, p) } } } else { var D = Math.floor(O / 2), G = Math.ceil(O / 2) % k.length, Q = u.eq(D), C = u.eq(G), T = {}, K = { visibility: "visible" }, J = {}; if (G > D) { K.opacity = 0; J.opacity = 1; if (i.doubleFade) { T.opacity = 0 } } else { T.opacity = 0; if (i.doubleFade) { K.opacity = 0; J.opacity = 1 } } if (!z) { d.extend(K, n(k[G], 0)); if (!i.variant) { d.extend(T, n(k[D], 3)); d.extend(J, n(k[G], 1)) } } if (d.isEmptyObject(J)) { var L = function () { l(G, C.get(0), D, Q.get(0)); C.css(K); Q[a](T, A, "linear", p) } } else { if (d.isEmptyObject(T)) { var L = function () { l(G, C.get(0), D, Q.get(0)); C.css(K); C[a](J, A, "linear", p) } } else { var L = function () { l(G, C.get(0), D, Q.get(0)); C.css(K); C[a](J, A, "linear"); Q[a](T, A, "linear", p) } } } } if (i.loop && O == k.length * 2 - 2) { var I = L; L = function () { if (--B) { I() } } } if (O > 0) { return q(O - 1, L) } else { return L } } var r = q(k.length * 2 - 1, function () { return r() }); r() }); return g }; d.fn.crossSlideFreeze = function () { this.find("img").stop() }; d.fn.crossSlideStop = function () { this.find("img").stop().remove() }; d.fn.crossSlideRestart = function () { this.find("img").stop().remove(); d.fn.crossSlide.apply(this, this.get(0).crossSlideArgs) }; d.fn.crossSlidePause = function () { if (!d.fn.pause) { f(c) } this.find("img").pause() }; d.fn.crossSlideResume = function () { if (!d.fn.pause) { f(c) } this.find("img").resume() } })();
// jquery.inspirational
jQuery.fn.inspirational = function (passedArgsObj) { var defaults = { slides: null, controls: '#inspirational-controls', text: '#inspirational-text', sleep: 2, fade: 1, slideshow: true }; var args = jQuery.extend(defaults, passedArgsObj); var crossslider = $(this); var slidesetIndex = 0; var slides = args.slides; var $controls = $(args.controls); var $text = $(args.text); var sleep = args.sleep; var fade = args.fade; var slideshow = args.slideshow; init(); function init() { createControls(); crossSliderInit() } function createControls() { var list = $('<ul />'); for (var i = 0; i < slides.length; i++) { $('<li><a href="#"></a></li>').appendTo(list) } list.appendTo($controls); $('li:first', $controls).addClass('active'); $('li', $controls).bind('click', onSliderControlClick) } function crossSliderInit() { if (slideshow) { var allSlides = []; for (var i = 0; i < slides.length; i++) { allSlides.push(slides[i].slides[0]); allSlides.push(slides[i].slides[1]) } crossslider.crossSlide({ sleep: sleep, fade: fade }, allSlides, onCrossSliderChange); return false } crossslider.crossSlide({ sleep: sleep, fade: fade }, slides[slidesetIndex].slides) } function setActiveItems() { $('h2:first', $text).text(slides[slidesetIndex].text); $('a:first', $text).attr('href', slides[slidesetIndex].url); $('li', $controls).removeClass('active').eq(slidesetIndex).addClass('active') } function onSliderControlClick(e) { e.preventDefault(); crossslider.stop(); crossslider.crossSlideStop(); slidesetIndex = $(this).index(); setActiveItems(); slideshow = false; crossSliderInit() } function onCrossSliderChange(index) { if (slideshow) { slidesetIndex = Math.floor(index / 2); setActiveItems() } } };
// jquery.panelizer
jQuery.fn.panelizer = function (passedArgsObj) { var defaults = { panels: '.panel-container' }; var args = jQuery.extend(defaults, passedArgsObj); var $slideLinks = $(this); var $panels = $(args.panels); var $closeLinks = $('.close:first', $panels); var $searchStage = $('#stage .search'); var $searchPanel = $('#panel-search > div'); var $panelWishlist = $('#panel-wishlist'); var $panelSearch = $('#panel-search'); var $sendWishlistLink = $('#panel-wishlist .bottom .last'); var $removeWishlistLinsk = $('#panel-wishlist .remove'); var isHome = $searchStage.length > 0; init(); function init() { if (isHome) { copySearchFormTo("stage") } $slideLinks.bind('click', onOpenerLinkClick); $closeLinks.bind('click', onCloseLinkClick); $sendWishlistLink.bind('click', onSendWishlistToCarpenterClick); $removeWishlistLinsk.bind('click', onRemoveClick) } function onRemoveClick(e) { e.preventDefault(); var element = $(this); var type = $(this).attr('name'); var id = $(this).attr('rel'); var url = '/Async/wishlist_service.aspx?method=removeWishListItem&' + type + '=' + id; $.post(url, function (data) { if (data == '1') { element.parent().remove(); var $wishListCounters = $slideLinks.children('span'); var counter = parseInt($wishListCounters[0].innerHTML); $wishListCounters.text((counter - 1)) } }) } function onOpenerLinkClick(e) { e.preventDefault(); var rel = $(this).attr('rel'); $panelSearch.find('form').attr('action', '/Schreinersuche/3/'); $panelSearch.find('.wishlistText').remove(); if (rel == 'panel-wishlist') { $panelWishlist.toggle(); if ($panelSearch.css('display') == 'block') { $panelSearch.hide(); if (isHome) { copySearchFormTo('stage') } } } else if (rel == 'panel-search') { $panelWishlist.hide(); if ($panelSearch.css('display') == 'none') { $panelSearch.show(); if (isHome) { copySearchFormTo('panel') } } else { $panelSearch.hide(); if (isHome) { copySearchFormTo('stage') } } } } function onSendWishlistToCarpenterClick(e) { e.preventDefault(); $panelWishlist.hide(); $panelSearch.show(); if (isHome) { copySearchFormTo('panel') } $panelSearch.find('form').attr('action', '/Schreinersuche/Merkzettel/20/'); $('<p class="wishlistText">Sie können nun Ihren Merkzettel an einen Schreiner Ihrer Wahl schicken.</p>').insertAfter($panelSearch.find('p')) } function onCloseLinkClick(e) { e.preventDefault(); var id = $(this).parent().attr('id'); $(this).parent().find('a[rel="' + id + '"]').click() } function copySearchFormTo(direction) { if (direction == "stage") { $searchStage.html($searchPanel.children()); $('input.cbx_image', $searchStage).removeClass('black_border').addClass('white'); SetCheckboxImages(false) } else if (direction == "panel") { $searchPanel.html($searchStage.children()); $('input.cbx_image', $searchPanel).removeClass('white').addClass('black_border'); SetCheckboxImages(false) } } };

// old plugins
(function ($) { $.fn.closeDOMWindow = function (settings) { if (!settings) { settings = {} } var run = function (passingThis) { if (settings.anchoredClassName) { var $anchorClassName = $('.' + settings.anchoredClassName); $anchorClassName.fadeOut('fast', function () { if ($.fn.draggable) { $anchorClassName.draggable('destory').trigger("unload").remove() } else { $anchorClassName.trigger("unload").remove() } }); if (settings.functionCallOnClose) { settings.functionCallAfterClose() } } else { var $DOMWindowOverlay = $('#DOMWindowOverlay'); var $DOMWindow = $('#DOMWindow'); $DOMWindowOverlay.fadeOut('fast', function () { $DOMWindowOverlay.trigger('unload').unbind().remove() }); $DOMWindow.fadeOut('fast', function () { if ($.fn.draggable) { $DOMWindow.draggable("destroy").trigger("unload").remove() } else { $DOMWindow.trigger("unload").remove() } }); $(window).unbind('scroll.DOMWindow'); $(window).unbind('resize.DOMWindow'); if ($.fn.openDOMWindow.isIE6) { $('#DOMWindowIE6FixIframe').remove() } if (settings.functionCallOnClose) { settings.functionCallAfterClose() } } }; if (settings.eventType) { return this.each(function (index) { $(this).bind(settings.eventType, function () { run(this); return false }) }) } else { run() } }; $.closeDOMWindow = function (s) { $.fn.closeDOMWindow(s) }; $.fn.openDOMWindow = function (instanceSettings) { var shortcut = $.fn.openDOMWindow; shortcut.defaultsSettings = { anchoredClassName: '', anchoredSelector: '', borderColor: '#ccc', borderSize: '4', draggable: 0, eventType: null, fixedWindowY: 100, functionCallOnOpen: null, functionCallOnClose: null, height: 500, loader: 0, loaderHeight: 0, loaderImagePath: '', loaderWidth: 0, modal: 0, overlay: 1, overlayColor: '#000', overlayOpacity: '85', positionLeft: 0, positionTop: 0, positionType: 'centered', width: 500, windowBGColor: '#fff', windowBGImage: null, windowHTTPType: 'get', windowPadding: 10, windowSource: 'inline', windowSourceID: '', windowSourceURL: '', windowSourceAttrURL: 'href' }; var settings = $.extend({}, $.fn.openDOMWindow.defaultsSettings, instanceSettings || {}); shortcut.viewPortHeight = function () { return self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight }; shortcut.viewPortWidth = function () { return self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth }; shortcut.scrollOffsetHeight = function () { return self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop }; shortcut.scrollOffsetWidth = function () { return self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft }; shortcut.isIE6 = typeof document.body.style.maxHeight === "undefined"; var sizeOverlay = function () { var $DOMWindowOverlay = $('#DOMWindowOverlay'); if (shortcut.isIE6) { var overlayViewportHeight = document.documentElement.offsetHeight + document.documentElement.scrollTop - 4; var overlayViewportWidth = document.documentElement.offsetWidth - 21; $DOMWindowOverlay.css({ 'height': overlayViewportHeight + 'px', 'width': overlayViewportWidth + 'px' }) } else { $DOMWindowOverlay.css({ 'height': '100%', 'width': '100%', 'position': 'fixed' }) } }; var sizeIE6Iframe = function () { var overlayViewportHeight = document.documentElement.offsetHeight + document.documentElement.scrollTop - 4; var overlayViewportWidth = document.documentElement.offsetWidth - 21; $('#DOMWindowIE6FixIframe').css({ 'height': overlayViewportHeight + 'px', 'width': overlayViewportWidth + 'px' }) }; var centerDOMWindow = function () { var $DOMWindow = $('#DOMWindow'); if (settings.height + 50 > shortcut.viewPortHeight()) { $DOMWindow.css('left', Math.round(shortcut.viewPortWidth() / 2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindow.outerWidth()) / 2)) } else { $DOMWindow.css('left', Math.round(shortcut.viewPortWidth() / 2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindow.outerWidth()) / 2)); $DOMWindow.css('top', Math.round(shortcut.viewPortHeight() / 2) + shortcut.scrollOffsetHeight() - Math.round(($DOMWindow.outerHeight()) / 2)) } }; var centerLoader = function () { var $DOMWindowLoader = $('#DOMWindowLoader'); if (shortcut.isIE6) { $DOMWindowLoader.css({ 'left': Math.round(shortcut.viewPortWidth() / 2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindowLoader.innerWidth()) / 2), 'position': 'absolute' }); $DOMWindowLoader.css({ 'top': Math.round(shortcut.viewPortHeight() / 2) + shortcut.scrollOffsetHeight() - Math.round(($DOMWindowLoader.innerHeight()) / 2), 'position': 'absolute' }) } else { $DOMWindowLoader.css({ 'left': '50%', 'top': '50%', 'position': 'fixed' }) } }; var fixedDOMWindow = function () { var $DOMWindow = $('#DOMWindow'); $DOMWindow.css('left', settings.positionLeft + shortcut.scrollOffsetWidth()); $DOMWindow.css('top', +settings.positionTop + shortcut.scrollOffsetHeight()) }; var showDOMWindow = function (instance) { if (arguments[0]) { $('.' + instance + ' #DOMWindowLoader').remove(); $('.' + instance + ' #DOMWindowContent').fadeIn('fast', function () { if (settings.functionCallOnOpen) { settings.functionCallOnOpen() } }); $('.' + instance + '.closeDOMWindow').click(function () { $.closeDOMWindow(); return false }) } else { $('#DOMWindowLoader').remove(); $('#DOMWindow').fadeIn('fast', function () { if (settings.functionCallOnOpen) { settings.functionCallOnOpen() } }); $('#DOMWindow .closeDOMWindow').click(function () { $.closeDOMWindow(); return false }) } }; var urlQueryToObject = function (s) { var query = {}; s.replace(/b([^&=]*)=([^&=]*)b/g, function (m, a, d) { if (typeof query[a] != 'undefined') { query[a] += ',' + d } else { query[a] = d } }); return query }; var run = function (passingThis) { settings.windowSourceID = $(passingThis).attr('href') || settings.windowSourceID; settings.windowSourceURL = $(passingThis).attr(settings.windowSourceAttrURL) || settings.windowSourceURL; settings.windowBGImage = settings.windowBGImage ? 'background-image:url(' + settings.windowBGImage + ')' : ''; var urlOnly, urlQueryObject; if (settings.positionType == 'anchored') { var anchoredPositions = $(settings.anchoredSelector).position(); var anchoredPositionX = anchoredPositions.left + settings.positionLeft; var anchoredPositionY = anchoredPositions.top + settings.positionTop; $('body').append('<div class="' + settings.anchoredClassName + '" style="' + settings.windowBGImage + ';background-repeat:no-repeat;padding:' + settings.windowPadding + 'px;overflow:auto;position:absolute;top:' + anchoredPositionY + 'px;left:' + anchoredPositionX + 'px;height:' + settings.height + 'px;width:' + settings.width + 'px;background-color:' + settings.windowBGColor + ';border:' + settings.borderSize + 'px solid ' + settings.borderColor + ';z-index:10001"><div id="DOMWindowContent" style="display:none"></div></div>'); if (settings.loader && settings.loaderImagePath !== '') { $('.' + settings.anchoredClassName).append('<div id="DOMWindowLoader" style="width:' + settings.loaderWidth + 'px;height:' + settings.loaderHeight + 'px;"><img src="' + settings.loaderImagePath + '" /></div>') } if ($.fn.draggable) { if (settings.draggable) { $('.' + settings.anchoredClassName).draggable({ cursor: 'move' }) } } switch (settings.windowSource) { case 'inline': $('.' + settings.anchoredClassName + " #DOMWindowContent").append($(settings.windowSourceID).children()); $('.' + settings.anchoredClassName).unload(function () { $('.' + settings.windowSourceID).append($('.' + settings.anchoredClassName + " #DOMWindowContent").children()) }); showDOMWindow(settings.anchoredClassName); break; case 'iframe': $('.' + settings.anchoredClassName + " #DOMWindowContent").append('<iframe frameborder="0" hspace="0" wspace="0" src="' + settings.windowSourceURL + '" name="DOMWindowIframe' + Math.round(Math.random() * 1000) + '" style="width:100%;height:100%;border:none;background-color:#fff;" class="' + settings.anchoredClassName + 'Iframe" ></iframe>'); $('.' + settings.anchoredClassName + 'Iframe').load(showDOMWindow(settings.anchoredClassName)); break; case 'ajax': if (settings.windowHTTPType == 'post') { if (settings.windowSourceURL.indexOf("?") !== -1) { urlOnly = settings.windowSourceURL.substr(0, settings.windowSourceURL.indexOf("?")); urlQueryObject = urlQueryToObject(settings.windowSourceURL) } else { urlOnly = settings.windowSourceURL; urlQueryObject = {} } $('.' + settings.anchoredClassName + " #DOMWindowContent").load(urlOnly, urlQueryObject, function () { showDOMWindow(settings.anchoredClassName) }) } else { if (settings.windowSourceURL.indexOf("?") == -1) { settings.windowSourceURL += '?' } $('.' + settings.anchoredClassName + " #DOMWindowContent").load(settings.windowSourceURL + '&random=' + (new Date().getTime()), function () { showDOMWindow(settings.anchoredClassName) }) } break } } else { if (settings.overlay) { $('body').append('<div id="DOMWindowOverlay" style="z-index:10000;display:none;position:absolute;top:0;left:0;background-color:' + settings.overlayColor + ';filter:alpha(opacity=' + settings.overlayOpacity + ');-moz-opacity: 0.' + settings.overlayOpacity + ';opacity: 0.' + settings.overlayOpacity + ';"></div>'); if (shortcut.isIE6) { $('body').append('<iframe id="DOMWindowIE6FixIframe"  src="blank.html"  style="width:100%;height:100%;z-index:9999;position:absolute;top:0;left:0;filter:alpha(opacity=0);"></iframe>'); sizeIE6Iframe() } sizeOverlay(); var $DOMWindowOverlay = $('#DOMWindowOverlay'); $DOMWindowOverlay.fadeIn('fast'); if (!settings.modal) { $DOMWindowOverlay.click(function () { $.closeDOMWindow() }) } } if (settings.loader && settings.loaderImagePath !== '') { $('body').append('<div id="DOMWindowLoader" style="z-index:10002;width:' + settings.loaderWidth + 'px;height:' + settings.loaderHeight + 'px;"><img src="' + settings.loaderImagePath + '" /></div>'); centerLoader() } $('body').append('<div id="DOMWindow" style="background-repeat:no-repeat;' + settings.windowBGImage + ';overflow:auto;padding:' + settings.windowPadding + 'px;display:none;height:' + settings.height + 'px;width:' + settings.width + 'px;background-color:' + settings.windowBGColor + ';border:' + settings.borderSize + 'px solid ' + settings.borderColor + '; position:absolute;z-index:10001"></div>'); var $DOMWindow = $('#DOMWindow'); switch (settings.positionType) { case 'centered': centerDOMWindow(); if (settings.height + 50 > shortcut.viewPortHeight()) { $DOMWindow.css('top', (settings.fixedWindowY + shortcut.scrollOffsetHeight()) + 'px') } break; case 'absolute': $DOMWindow.css({ 'top': (settings.positionTop + shortcut.scrollOffsetHeight()) + 'px', 'left': (settings.positionLeft + shortcut.scrollOffsetWidth()) + 'px' }); if ($.fn.draggable) { if (settings.draggable) { $DOMWindow.draggable({ cursor: 'move' }) } } break; case 'fixed': fixedDOMWindow(); break; case 'anchoredSingleWindow': var anchoredPositions = $(settings.anchoredSelector).position(); var anchoredPositionX = anchoredPositions.left + settings.positionLeft; var anchoredPositionY = anchoredPositions.top + settings.positionTop; $DOMWindow.css({ 'top': anchoredPositionY + 'px', 'left': anchoredPositionX + 'px' }); break } $(window).bind('scroll.DOMWindow', function () { if (settings.overlay) { sizeOverlay() } if (shortcut.isIE6) { sizeIE6Iframe() } if (settings.positionType == 'centered') { centerDOMWindow() } if (settings.positionType == 'fixed') { fixedDOMWindow() } }); $(window).bind('resize.DOMWindow', function () { if (shortcut.isIE6) { sizeIE6Iframe() } if (settings.overlay) { sizeOverlay() } if (settings.positionType == 'centered') { centerDOMWindow() } }); switch (settings.windowSource) { case 'inline': $DOMWindow.append($(settings.windowSourceID).children()); $DOMWindow.unload(function () { $(settings.windowSourceID).append($DOMWindow.children()) }); showDOMWindow(); break; case 'iframe': $DOMWindow.append('<iframe frameborder="0" hspace="0" wspace="0" src="' + settings.windowSourceURL + '" name="DOMWindowIframe' + Math.round(Math.random() * 1000) + '" style="width:100%;height:100%;border:none;background-color:#fff;" id="DOMWindowIframe" ></iframe>'); $('#DOMWindowIframe').load(showDOMWindow()); break; case 'ajax': if (settings.windowHTTPType == 'post') { if (settings.windowSourceURL.indexOf("?") !== -1) { urlOnly = settings.windowSourceURL.substr(0, settings.windowSourceURL.indexOf("?")); urlQueryObject = urlQueryToObject(settings.windowSourceURL) } else { urlOnly = settings.windowSourceURL; urlQueryObject = {} } $DOMWindow.load(urlOnly, urlQueryObject, function () { showDOMWindow() }) } else { if (settings.windowSourceURL.indexOf("?") == -1) { settings.windowSourceURL += '?' } $DOMWindow.load(settings.windowSourceURL + '&random=' + (new Date().getTime()), function () { showDOMWindow() }) } break } } }; if (settings.eventType) { return this.each(function (index) { $(this).bind(settings.eventType, function () { run(this); return false }) }) } else { run() } }; $.openDOMWindow = function (s) { $.fn.openDOMWindow(s) } })(jQuery);
$.fn.semantictabs = function (passedArgsObj) { args = { panel: 'panel', head: 'h2', active: ':first', activate: false }; for (var argName in passedArgsObj) { args[argName] = passedArgsObj[argName] } if (args.activate) { return this.each(function () { var container = jQuery(this); container.find("." + args.panel).hide(); container.find("ul.tabs li").removeClass("active"); container.find("div." + args.panel + ":eq(" + args.activate + ")").show(); container.find("ul.tabs li:eq(" + args.activate + ")").addClass("active") }) } else { return this.each(function () { var container = jQuery(this); container.parent().find("." + args.panel).hide(); container.find("div." + args.panel + args.active).show(); container.prepend("<ul class=\"tabs semtabs\"></ul>"); container.find("." + args.panel).each(function () { var title = $(this).find(args.head).text(); this.title = title; container.find("ul.tabs").append("<li><a href=\"javascript:void(0);\">" + title + "</a></li>") }); container.find("ul li" + args.active).addClass("active"); container.find("ul.tabs li").click(function () { container.find("." + args.panel).hide(); container.find("ul.tabs li").removeClass("active"); if (($.browser.msie && $.browser.version.substr(0, 1) == '6')) { container.find("div." + args.panel + "[title='" + jQuery(this).text() + "']").css({ display: 'inline' }) } else { container.find("div." + args.panel + "[title='" + jQuery(this).text() + "']").show() } jQuery(this).addClass("active"); if (($('body').attr('id') == 'administration' && $.browser.msie && $.browser.version.substr(0, 1) == '7')) { jQuery('#carpenter div.grid_5, #carpenter div.grid_3').css({ 'margin-left': '0' }); jQuery('#overall_search div.grid_5').css({ 'margin-left': '0' }) } }); container.find("#remtabs").click(function () { container.find("ul.tabs").remove(); container.find("." + args.container + " ." + args.panel).show(); container.find("#remtabs").remove() }) }) } };
jQuery.fn.extend({ selectbox: function (options) { return this.each(function () { new jQuery.SelectBox(this, options) }) } }); if (!window.console) { var console = { log: function (msg) { } } } jQuery.SelectBox = function (selectobj, options) { var opt = options || {}; opt.inputClass = opt.inputClass || "selectbox"; opt.containerClass = opt.containerClass || "selectbox-wrapper"; opt.hoverClass = opt.hoverClass || "current"; opt.currentClass = opt.selectedClass || "selected"; opt.debug = opt.debug || false; var elm_id = selectobj.id; var active = -1; var inFocus = false; var hasfocus = 0; var $select = $(selectobj); var $container = setupContainer(opt); var $input = setupInput(opt); $select.hide().before($input).before($container); init(); $input.click(function () { if (!inFocus) { $container.toggle() } }).focus(function () { if ($container.not(':visible')) { inFocus = true; $container.show() } }).keydown(function (event) { switch (event.keyCode) { case 38: event.preventDefault(); moveSelect(-1); break; case 40: event.preventDefault(); moveSelect(1); break; case 13: event.preventDefault(); $('li.' + opt.hoverClass).trigger('click'); break; case 27: hideMe(); break } }).blur(function () { if ($container.is(':visible') && hasfocus > 0) { if (opt.debug) console.log('container visible and has focus') } else { hideMe() } }); function hideMe() { hasfocus = 0; $container.hide() } function init() { $container.append(getSelectOptions($input.attr('id'))).hide(); var width = $input.css('width'); $container.width(width) } function setupContainer(options) { var container = document.createElement("div"); $container = $(container); $container.attr('id', elm_id + '_container'); $container.addClass(options.containerClass); return $container } function setupInput(options) { var input = document.createElement("input"); var $input = $(input); $input.attr("id", elm_id + "_input"); $input.attr("type", "text"); $input.addClass(options.inputClass); $input.attr("autocomplete", "off"); $input.attr("readonly", "readonly"); $input.attr("tabIndex", $select.attr("tabindex")); return $input } function moveSelect(step) { var lis = $("li", $container); if (!lis) return; active += step; if (active < 0) { active = 0 } else if (active >= lis.size()) { active = lis.size() - 1 } lis.removeClass(opt.hoverClass); $(lis[active]).addClass(opt.hoverClass) } function setCurrent() { var li = $("li." + opt.currentClass, $container).get(0); var ar = ('' + li.id).split('_'); var el = ar[ar.length - 1]; $select.val(el); $input.val($(li).html()); return true } function getCurrentSelected() { if ($select.attr('id') == 'search_radius') { $select.val(escape($input.val()).split('%20km')[0]) } else { $select.val($input.val()) } return $select.val() } function getCurrentValue() { return $input.val() } function getSelectOptions(parentid) { var select_options = new Array(); var ul = document.createElement('ul'); $select.children('option').each(function () { var li = document.createElement('li'); li.setAttribute('id', parentid + '_' + $(this).val()); li.innerHTML = $(this).html(); if ($(this).is(':selected')) { $input.val($(this).html()); $(li).addClass(opt.currentClass) } ul.appendChild(li); $(li).mouseover(function (event) { hasfocus = 1; if (opt.debug) { console.log('over on : ' + this.id) } jQuery(event.target, $container).addClass(opt.hoverClass) }).mouseout(function (event) { hasfocus = -1; if (opt.debug) { console.log('out on : ' + this.id) } jQuery(event.target, $container).removeClass(opt.hoverClass) }).click(function (event) { var fl = $('li.' + opt.hoverClass, $container).get(0); if (opt.debug) { console.log('click on :' + this.id) } $('li.' + opt.currentClass).removeClass(opt.currentClass); $(this).addClass(opt.currentClass); setCurrent(); hideMe(); if ($(this).parents('#tag_form form, #sort_form form').size()) { getCurrentSelected(); $(this).parents('form').submit() } }) }); return ul } };
(function () { var $$; $$ = jQuery.fn.flash = function (htmlOptions, pluginOptions, replace, update) { var block = replace || $$.replace; pluginOptions = $$.copy($$.pluginOptions, pluginOptions); if (!$$.hasFlash(pluginOptions.version)) { if (pluginOptions.expressInstall && $$.hasFlash(6, 0, 65)) { var expressInstallOptions = { flashvars: { MMredirectURL: location, MMplayerType: 'PlugIn', MMdoctitle: jQuery('title').text()}} } else if (pluginOptions.update) { block = update || $$.update } else { return this } } htmlOptions = $$.copy($$.htmlOptions, expressInstallOptions, htmlOptions); return this.each(function () { block.call(this, $$.copy(htmlOptions)) }) }; $$.copy = function () { var options = {}, flashvars = {}; for (var i = 0; i < arguments.length; i++) { var arg = arguments[i]; if (arg == undefined) continue; jQuery.extend(options, arg); if (arg.flashvars == undefined) continue; jQuery.extend(flashvars, arg.flashvars) } options.flashvars = flashvars; return options }; $$.hasFlash = function () { if (/hasFlash\=true/.test(location)) return true; if (/hasFlash\=false/.test(location)) return false; var pv = $$.hasFlash.playerVersion().match(/\d+/g); var rv = String([arguments[0], arguments[1], arguments[2]]).match(/\d+/g) || String($$.pluginOptions.version).match(/\d+/g); for (var i = 0; i < 3; i++) { pv[i] = parseInt(pv[i] || 0); rv[i] = parseInt(rv[i] || 0); if (pv[i] < rv[i]) return false; if (pv[i] > rv[i]) return true } return true }; $$.hasFlash.playerVersion = function () { try { try { var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6'); try { axo.AllowScriptAccess = 'always' } catch (e) { return '6,0,0' } } catch (e) { } return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1] } catch (e) { try { if (navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin) { return (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1] } } catch (e) { } } return '0,0,0' }; $$.htmlOptions = { height: 240, flashvars: {}, pluginspage: 'http://www.adobe.com/go/getflashplayer', src: '#', type: 'application/x-shockwave-flash', width: 320 }; $$.pluginOptions = { expressInstall: false, update: true, version: '6.0.65' }; $$.replace = function (htmlOptions) { this.innerHTML = '<div class="alt">' + this.innerHTML + '</div>'; jQuery(this).addClass('flash-replaced').prepend($$.transform(htmlOptions)) }; $$.update = function (htmlOptions) { var url = String(location).split('?'); url.splice(1, 0, '?hasFlash=true&'); url = url.join(''); var msg = '<p>This content requires the Flash Player. <a href="http://www.adobe.com/go/getflashplayer">Download Flash Player</a>. Already have Flash Player? <a href="' + url + '">Click here.</a></p>'; this.innerHTML = '<span class="alt">' + this.innerHTML + '</span>'; jQuery(this).addClass('flash-update').prepend(msg) }; function toAttributeString() { var s = ''; for (var key in this) if (typeof this[key] != 'function') s += key + '="' + this[key] + '" '; return s }; function toFlashvarsString() { var s = ''; for (var key in this) if (typeof this[key] != 'function') s += key + '=' + encodeURIComponent(this[key]) + '&'; return s.replace(/&$/, '') }; $$.transform = function (htmlOptions) { htmlOptions.toString = toAttributeString; if (htmlOptions.flashvars) htmlOptions.flashvars.toString = toFlashvarsString; return '<embed ' + String(htmlOptions) + '/>' }; if (window.attachEvent) { window.attachEvent("onbeforeunload", function () { __flash_unloadHandler = function () { }; __flash_savedUnloadHandler = function () { } }) } })();
jQuery.fn.extend({ getUrlParam: function (strParamName) { strParamName = escape(unescape(strParamName)); var returnVal = new Array(); var qString = null; if ($(this).attr("nodeName") == "#document") { if (window.location.search.search(strParamName) > -1) { qString = window.location.search.substr(1, window.location.search.length).split("&") } } else { if ($(this).attr("src") != "undefined") { var strHref = $(this).attr("src"); if (strHref.indexOf("?") > -1) { var strQueryString = strHref.substr(strHref.indexOf("?") + 1); qString = strQueryString.split("&") } } else { if ($(this).attr("href") != "undefined") { var strHref = $(this).attr("href"); if (strHref.indexOf("?") > -1) { var strQueryString = strHref.substr(strHref.indexOf("?") + 1); qString = strQueryString.split("&") } } else { return null } } }; if (qString == null) { return null }; for (var i = 0; i < qString.length; i++) { if (escape(unescape(qString[i].split("=")[0])) == strParamName) { returnVal.push(qString[i].split("=")[1]) } }; if (returnVal.length == 0) { return null } else { if (returnVal.length == 1) { return returnVal[0] } else { return returnVal } } } });
jQuery.fn.delay = function (time, func) { this.each(function () { setTimeout(func, time) }); return this };
$(document).ready(function () {
    zIndexWorkaround();
    $('.noJS').removeClass('noJS');
    $('input#js_enabled').val('true');
    $('a.panel').panelizer();
    // FORMS
    // replace all dropdowns
    $('select.layer_input').selectbox();
    // set labels as default values for input text fields
    prepareInputFields();
    // init checkbox images
    SetCheckboxImages(true);
    /**
    * @subsection:    Image Grid
    */
    scaleGridImages(); //function: see below!
    /**
    * Carpenter search: Cookies
    */
    $('#search_carpenter_form').submit(function () {
        // close search panel if open and track carpenter search if has been used within panel
        if ($('#panel-search').css('display') == 'block') {
            // Google-Analytics
            pageTracker._trackEvent('Interaktion', 'Click', 'Flyout', 1);
            $('#panel-search').hide();
        }

        var __p = $(this).find('#postal_code').val();
        var __rTxt = $(this).find('#search_radius_input').val();
        var __rVal = $(this).find('#search_radius').val();
        var __cTxt = $(this).find('#search_country_input').val();
        var __cVal = $(this).find('#search_country').val();

        $.cookie('postal_code', __p, { path: '/' });
        $.cookie('search_radius', __rVal, { path: '/' });
        $.cookie('search_radius_txt', __rTxt, { path: '/' });
        $.cookie('search_country', __cVal, { path: '/' });
        $.cookie('search_country_txt', __cTxt, { path: '/' });

        // Save partner types in cookies
        $(this).find("input.cbx_image").each(function () {
            var cbx = $(this)[0];
            var cbxID = $(this).attr("id");
            $.cookie(cbx.id, cbx.checked, { path: '/' });
        });
    })
    if ($('#carpenter_search').size() != 0) {
        if ($.cookie('postal_code')) {
            $(this).find('#postal_code').val($.cookie('postal_code'));
            $(this).find('#search_radius_input').val($.cookie('search_radius_txt'));
            $(this).find('#search_radius').val($.cookie('search_radius'));
            $(this).find('#search_country_input').val($.cookie('search_country_txt'));
            $(this).find('#search_country').val($.cookie('search_country'));

            // Load partner types from cookies an display them
            $(".partner_types input.cbx_image").each(function () {
                var cbxType = $(this)[0];
                var cookieVal = $.cookie(cbxType.id);
                if (cookieVal == "true") {
                    $(cbxType).attr("checked", "checked");
                }
                else {
                    $(cbxType).removeAttr("checked");
                }
            });
        }
    }
    if (!($.browser.msie && $.browser.version.substr(0, 1) == '6')) {
        //$('#contact_message .submit, #become_partner_form .submit, #haefele_contact_form .submit, #haefele_home_order .submit, #partner_profile .submit').each(function(){
        $('div.submit').each(function () {
            var __button = $(this).find('input[type=submit]');
            $(__button).hide();
            $(this).append('<a class="gray_right_small" href="javascript:void(0);"><span>' + __button.val() + '</span></a>');
            $(this).find('.gray_right_small').click(function () {
                $(__button).click();
            })
        })
    }
    /**
    * @section:    Carpenter detail page
    * @subsection:    Tabs
    */
    $('#carpenter .tabs,#event_tabs').semantictabs();
    /**
    * @subsection:     Prepare forms
    */
    $('form #btn_send, input#btn_SendAFriend').click(function () {
        var error = false;
        $(this).parents('form').find('.required').each(function () {
            var _label = $(this).prev('label').text();
            var _val = $.trim($(this).val());
            var _type = $(this).attr("type");
            // Define regex rules
            var regex_email = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;

            // Validate textboxes
            if (_type != "checkbox" && this.tagName != "DIV" && (_val == '' || _val == _label)) {
                $(this).addClass('error').siblings('span.error').hide();
                $(this).siblings('span.error:not(.special)').fadeIn().css({ 'display': 'block' });
                error = true;
            }
            else if ($(this).hasClass('email') && !regex_email.test(_val)) {
                $(this).addClass('error').siblings('span.error').hide();
                $(this).siblings('span.error:not(.special)').fadeIn().css({ 'display': 'block' });
                error = true;
            }
            // Validate checkboxes
            else if (_type == "checkbox" && !$(this).is(':checked')) {
                $(this).addClass('error').siblings('span.error').fadeIn().css({ 'display': 'block' });
                error = true;
            }
            else if (this.tagName == "DIV" && $(this).hasClass('cbx_list') && $(this).find("input:checked").length <= 0) {
                $(this).siblings('span.error').fadeIn().css({ 'display': 'block' });
                error = true;
            }
            else {
                $(this).removeClass('error').siblings('span.error').hide();
                // Check length of input. Should be max. 100 signs for each field (out of textarea)
                if (this.tagName == "INPUT" && _val.length > 100) {
                    var spanError = $(this).next('span.error.special')[0];
                    // Set standard message
                    var errMsg = "Input have to be less then 100 signs.";
                    // Get language dependet message if available
                    if (typeof getMessagesByKey == 'function') {
                        errMsg = getMessagesByKey("FormInputToLong");
                    }
                    if (spanError == undefined && spanError == null) {
                        spanError = $("<span>").attr("class", "error special").css({ 'display': 'block' }).text(errMsg);
                        $(this).after(spanError);
                    }
                    else {
                        $(this).next('span.error.special').css({ 'display': 'block' }).html(errMsg);
                    }
                    $(this).addClass('error');
                    error = true;
                }
                // Check the length of the customer number which must be 7 signs
                else if (this.id == "customer_number" && _val.length != 7) {
                    var spanError = $(this).next('span.error.special')[0];
                    // Set standard message
                    var errMsg = "Customer number seems to be invalid";
                    // Get language dependet message if available
                    if (typeof getMessagesByKey == 'function') {
                        errMsg = getMessagesByKey("FormInputInvalidCustomer");
                    }
                    if (spanError == undefined && spanError == null) {
                        spanError = $("<span>").attr("class", "error special").css({ 'display': 'block' }).text(errMsg);
                        $(this).after(spanError);
                    }
                    else {
                        $(this).next('span.error.special').css({ 'display': 'block' }).html(errMsg);
                    }
                    $(this).addClass('error');
                    error = true;
                }
                else {
                    $(this).next('span.error').hide();
                }
            }
        });
        if (error == true) {
            $('input.error:first').focus();
            return false;
        }
        else {
            $(this).parents('form').find('input[type=text]:not(.required), textarea:not(.required)').each(function () {
                $(this).val("");
            });
        }
    });
    /**
    * @subsection: Lightboxes
    */
    $('#dialog_container_wantThis, #dialog_container_sendAFriend, #dialog_container_sendWishlist').hide();
    //generate close button
    var __dialogCloseImage = $('<img/>').css({ position: 'absolute', top: '8px', right: '8px', zIndex: '1000' }).attr('src', '/fe_assets/img/buttons/btn_TB_close.png');
    //generate closing link
    var __dialogCloseLink = $('<a/>').attr('href', '#').addClass('closeDOMWindow');
    //wrap link around button and prepend it to "lightbox" content
    __dialogCloseLink.append(__dialogCloseImage);
    $('#dialog_wantThis, #dialog_sendAFriend, #dialog_container_sendWishlist').prepend(__dialogCloseLink);
    $('#wantThis').click(function () {
        $.openDOMWindow({
            width: 472,
            height: 395,
            windowPadding: 0,
            borderSize: 4,
            borderColor: '#fff',
            windowSourceID: '#dialog_container_wantThis'
        });
        return false;
    });
    $('#sendAFriend').click(function () {
        $.openDOMWindow({
            width: 512,
            height: 700,
            windowPadding: 0,
            borderSize: '4',
            borderColor: '#fff',
            windowSourceID: '#dialog_container_sendAFriend'
        });
        return false;
    });
    // send a friend for smart functions
    $('a[rel=sendAFriend]').click(function (e) {
        e.preventDefault();
        // get func teaser
        var $func = $(this).parents('.teaser');
        var funcId = $(this).attr('name');
        var title = $('img:first', $func).attr('alt');
        // copy func data to lightbox
        $('h5:first', '#dialog_container_sendAFriend').text(title);
        var $img = $('<img />').attr('src', '/fe_httphandler/FuncImageHandler.ashx?funcID=' + funcId).attr('alt', title).attr('title', title);
        var $dialog = $('#dialog_container_sendAFriend');
        $('.image', $dialog).html($img);
        $('#funcId', $dialog).attr('value', funcId);
        $.openDOMWindow({
            width: 512,
            height: 700,
            windowPadding: 0,
            borderSize: '4',
            borderColor: '#fff',
            windowSourceID: '#dialog_container_sendAFriend'
        });
        return false;
    });
    $('#showroom_opener, div.subject_area_header div.image img').click(function () {
        $.openDOMWindow({
            width: 992,
            height: 650,
            windowPadding: 0,
            borderSize: '4',
            borderColor: '#fff',
            windowSourceID: '#showroom_container_flash'
        });
        return false;
    })
    // Need for IE6, IE7 they don't change markup, when forms will be replaced
    var tmpPostUrl;
    $('#wantThis').click(function () {
        // Get needed container
        var $searchPanel = $('#panel-search > div');
        var $lbSearch = $('.dialog_content #lb_carp_search');
        // Hide link which should be shown only when js is not activated
        $pAlternative = $('#lb_carp_search p').css("display", "none");
        if ($pAlternative) {
            $searchPanel.append($pAlternative);
        }
        // Insert original carpenter search form into lightbox "want this" and fake form into sidebar
        $lbSearch.html($searchPanel.children());
        // Get post URLs
        var postUrlWithObject = $('#lb_carp_search p a').attr("href");
        var $psForm = $('#lb_carp_search #search_carpenter_form');
        tmpPostUrl = $psForm.attr('action');
        $psForm.attr('action', postUrlWithObject);
        $('#dialog_wantThis .dialog_content').css({ height: '365px' })
    });
    $('#dialog_wantThis .closeDOMWindow img').click(function () {
        //Fading out the form
        $(this).delay(500, function () {
            var $searchPanel = $('#panel-search > div');
            var $lbSearch = $('.dialog_content #lb_carp_search');
            // Insert original form into search panel
            $lbSearch.find("#search_carpenter_form").attr('action', tmpPostUrl);
            $searchPanel.html($lbSearch.children());
        });
    });
    /**
    * @section:    Search results
    * @subsection: Tabs
    */
    $('.result_tabs').semantictabs();
    /**
    * Tabs SET ID
    */
    var __j = 1;
    $('.semtabs li a').each(function () {
        $(this).attr('id', 'tabbed_content_' + __j);
        __j++;
    })
    /**
    * Tabs GET ID and click!
    */
    var __t = $(document).getUrlParam('t');
    if (__t != '' && __t != 'undefined') {
        $('#tabbed_content_' + __t).click();
    }
    $('#carpenter .portrait a').click(function () {
        $('#tabbed_content_3').click();
        return false;
    })

    /**
    * Init roue planner
    */
    $("#route_planner #process_route").click(function (event) {
        // Validate fields
        var error = false;
        $(this).parents('#route_planner').find('.required').each(function () {
            var _val = $.trim($(this).val());
            if (_val == '') {
                $(this).addClass('error').siblings('span.error').fadeIn().css({ 'display': 'block' });
                error = true;
            }
            else {
                $(this).removeClass('error').next('span.error').hide();
            }
        });
        if (error == true) {
            $('input.error:first').focus();
        }
        else {
            // Get data for start
            var start = $("#start").val();
            var geocoder = new GClientGeocoder();
            geocoder.getLocations(start, function (response) {
                if (!response || response.Status.code != 200) {
                    ShowRoutePlannnerMessage(getMessagesByKey("StartNotFound"));
                    return;
                }
                else {
                    var placemarkStart = response.Placemark[0];
                    // Get data for aim
                    var aim = $("#aim").val();
                    var geocoder = new GClientGeocoder();
                    geocoder.getLocations(aim, function (response) {
                        if (!response || response.Status.code != 200) {
                            ShowRoutePlannnerMessage(getMessagesByKey("AimNotFound"));
                            return;
                        }
                        else {
                            // Clear last result if exist
                            $("#direction #current_route").empty();
                            $("#direction #current_route_temp").empty()
                            // Create request query
                            var localPlacemarkStart = placemarkStart;
                            var placemarkAim = response.Placemark[0];
                            var strStart = "from: " + localPlacemarkStart.Point.coordinates[1] + ", " + localPlacemarkStart.Point.coordinates[0];
                            var strAim = " to: " + placemarkAim.Point.coordinates[1] + ", " + placemarkAim.Point.coordinates[0];
                            var directionsPanel = document.getElementById("current_route_temp");
                            if (directions == undefined) {
                                directions = new GDirections(null, directionsPanel);
                                GEvent.addListener(directions, "error", HandleRoutePlannerErrors);
                                GEvent.addListener(directions, "load", function (response) {
                                    ShowRouteOnMap(response);
                                });
                            }
                            directions.load(strStart + strAim, { getPolyline: true });
                        }
                    });
                }
            });
        }
        event.preventDefault();
    });
    $("#switch_route").click(function () {
        var tmpStart = $("#start").val();
        $("#start").val($("#aim").val());
        $("#aim").val(tmpStart);
        $("#process_route").click();
    });
    $("#print_route").click(function (event) {
        window.print();
        event.preventDefault();
    });
});
function scaleGridImages() {
    $('.grid_cell').each(function () {
        var __x, __y, __width, __height;
        var __class = $(this).attr('class').split(' ')[1];
        switch (__class) {
            case "grid_size_120x80":
                __x = '8';
                __y = '5';
                __width = '120';
                __height = '80';
                break;
            case "grid_size_120x164":
                __x = '8';
                __y = '12';
                __width = '120';
                __height = '164';
                break;
            case "grid_size_244x164":
                __x = '8';
                __y = '6';
                __width = '244';
                __height = '164';
                break;
            case "grid_size_244x332":
                __x = '8';
                __y = '10';
                __width = '244';
                __height = '332';
                break;
            case "grid_size_368x248":
                __x = '8';
                __y = '5';
                __width = '368';
                __height = '248';
                break;
        }
        //strings to integers
        __x = parseInt(__x);
        __y = parseInt(__y);
        __width = parseInt(__width);
        __height = parseInt(__height);
        var __hoverWidth = __width + __x;
        var __hoverHeight = __height + __y;
        var __z = $(this).css('zIndex');
        var __d = $(this).children('.description');
        var __dH = __d.height();
        var __dW = __d.width();
        var __dP = 2 * (parseInt($(this).children('.description').css('paddingTop')));
        var __objI = $(this).children('img');
        var __img = $('<img />').attr('src', '/fe_assets/img/blank.gif').css({ // IE needs this image so the cells do not collapse on what IE thinks is a mouseout!
            position: 'absolute',
            top: '0',
            left: '0'
        });
        var __link = __d.find('a').attr('href');
        var __newLink = $('<a />').attr('href', __link);
        $(this).find('img').wrap(__newLink);
        $(this).children().css({
            cursor: 'pointer'
        }).click(function () {
            document.location.href = __link;
        })
        $(this).children().css({ cursor: 'pointer' });
        $(this).hover(function () {
            $(this).width(__hoverWidth).find('img').width(__hoverWidth);
            $(this).find('a').css({ zIndex: '1001' });
        }, function () {
            $(this).removeClass('hover').width(__width).find('img').width(__width);
            $(this).find('a').css({ zIndex: __z });
        })
    })
}
function MessageBox(p_type, p_message, p_id) {
    var type = p_type;
    var message = p_message;
    var cssClass;
    this.id = p_id;
    this.GetHtml = function () {
        var messageText = $("<p>");
        messageText.append(message);
        var messageContainer = $("<div>");
        messageContainer.attr("id", this.id);
        // Get css class 
        switch (type) {
            case "default":
                cssClass = "messagebox_info";
                break;
            case "error":
                cssClass = "messagebox_error";
                break;
            case "success":
                cssClass = "messagebox_success";
                break;
        }
        messageContainer.attr("class", cssClass);
        messageContainer.append(messageText);
        return messageContainer;
    }
}
function LoadingLayer() {
    var loadingLayer = $("<div>").addClass("ajax_preloader");
    var innerLayer = $("<div>").css({
        position: 'absolute',
        left: '50%',
        top: '50%',
        overflow: 'visible'
    })
    var imgLoading = $("<img>").attr("src", "/fe_assets/img/icons/ajax_preloader.gif").css({
        position: 'absolute',
        top: '-16px',
        left: '-16px'
    });
    innerLayer.append(imgLoading);
    loadingLayer.append(innerLayer);
    return loadingLayer;
}
function parseXml(xml) {
    //    if (jQuery.browser.msie) {
    //        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    //        xmlDoc.loadXML(xml);
    //        xml = xmlDoc;
    //    }
    return xml;
}
// Google Maps functions
var map;
var markers = [];
var routes = [];
var directions;
function ShowMap(containerID, lat, lng, zoom) {
    if (!GBrowserIsCompatible()) {
        return;
    }
    // Create location icon
    var locationIcon = new GIcon();
    locationIcon.image = "/fe_assets/img/search/el_gmapmarker_loc.png";
    locationIcon.iconSize = new GSize(21, 20);
    locationIcon.iconAnchor = new GPoint(10, 10);
    locationIcon.infoWindowAnchor = new GPoint(10, 10);
    // Show map
    var tmpMap = new GMap2(document.getElementById(containerID));
    tmpMap.setUIToDefault();
    tmpMap.removeMapType(G_PHYSICAL_MAP);
    tmpMap.addControl(new GMapTypeControl());
    tmpMap.setMapType(G_NORMAL_MAP);
    var point = new GLatLng(lat, lng);
    tmpMap.setCenter(point, zoom);
    var marker = new GMarker(new GLatLng(lat, lng), {
        icon: locationIcon,
        clickable: false
    });
    // Save marker in array
    markers["center"] = marker;
    tmpMap.addOverlay(marker);
    return tmpMap;
}
function ShowMapWithMarker(containerID, lat, lng, xmlInfoWindow, zoom) {
    if (!GBrowserIsCompatible()) {
        return;
    }
    // Show map
    map = new GMap2(document.getElementById(containerID));
    map.setUIToDefault();
    map.removeMapType(G_PHYSICAL_MAP);
    map.addControl(new GMapTypeControl());
    map.setMapType(G_NORMAL_MAP);
    var point = new GLatLng(lat, lng);
    map.setCenter(point, zoom);
    return ShowMarker(map, point, 1, xmlInfoWindow);
}
function ShowMarker(map, point, position, xmlInfoWindow) {
    var marker = new GMarker(point, {
        icon: getMapIcon(position),
        clickable: true
    });
    marker.infoWindowOutput = xmlInfoWindow;
    map.addOverlay(marker);
    GEvent.addListener(marker, "click", function () {
        this.openInfoWindowHtml(this.infoWindowOutput);
    });
    return marker;
}
function getMapIcon(pos) {
    var baseIcon = new GIcon(pos);
    baseIcon.image = "/fe_assets/img/search/gmapmarker_no" + pos + ".png";
    baseIcon.shadow = "/fe_assets/img/search/el_gmapmarker_shadow.png";
    baseIcon.iconSize = new GSize(20.0, 34.0);
    baseIcon.shadowSize = new GSize(34.0, 34.0);
    baseIcon.iconAnchor = new GPoint(10.0, 34.0);
    baseIcon.infoWindowAnchor = new GPoint(13.0, 34.0);
    return baseIcon;
}
function getRoutePlannerIcon(type) {
    var icon = new GIcon();
    icon.image = "/fe_assets/img/search/el_gmapmarker_" + type + ".png";
    icon.shadow = "/fe_assets/img/search/el_gmapmarker_shadow.png";
    icon.iconSize = new GSize(20.0, 34.0);
    icon.shadowSize = new GSize(34.0, 34.0);
    icon.iconAnchor = new GPoint(10.0, 34.0);
    return icon;
}
function ShowRoutePlannnerMessage(message) {
    $("#route_planner #js_msg_box").remove();
    var msgBox = new MessageBox("error", message, "js_msg_box");
    $("#route_planner").prepend(msgBox.GetHtml());
}
function ShowRouteOnMap() {
    $("#js_msg_box").remove();
    // Set headline
    $("#route_head").html(getMessagesByKey("DirectionsHead") + $("#aim").val());
    $("#route_head").show();
    // Reset last route if available
    DeleteRouteFromMap();
    //Get the poly line from the GDirections object
    var poly = directions.getPolyline();
    // moves the map to center
    var bounds = new GLatLngBounds();
    bounds.extend(poly.getVertex(0));
    bounds.extend(poly.getVertex(poly.getVertexCount() - 1));
    map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
    map.addOverlay(poly);
    routes["polyline"] = poly;
    //Draw icons
    var iconStart = getRoutePlannerIcon("A");
    var markerStart = new GMarker(poly.getVertex(0), iconStart);
    map.addOverlay(markerStart);
    routes["start"] = markerStart;
    var iconAim = getRoutePlannerIcon("B");
    var markerAim = new GMarker(poly.getVertex(poly.getVertexCount() - 1), iconAim);
    map.addOverlay(markerAim);
    routes["aim"] = markerAim;
    // Draw route description
    if (directions.getNumRoutes() > 0) {
        // Hide carpenter icon on carpenter detail
        if (markers["carpenter"] != undefined) {
            markers["carpenter"].hide();
        }
        // Draw headline of start
        var iconStart = $("<div>").attr("class", "icon").html("<span>A</span>");
        var h3Start = $("<h3>").html($("#start").val());
        var cntHeadStart = $("<div>").attr("class", "head").append(iconStart).append(h3Start);
        var cntRoute = $("#current_route");
        $(cntRoute).append(cntHeadStart);
        // Create short info about distance and duration
        var shortInfo = directions.getRoute(0).getDistance().html + " (" + directions.getRoute(0).getDuration().html + ")";
        $(cntRoute).append($("<div>").html(shortInfo).attr("id", "short_info"));
        // Create table with route steps
        var table = $("<table>").attr("class", "route_steps");
        for (var i = 0; i < directions.getRoute(0).getNumSteps(); i++) {
            var tdPos = $("<td>").html((i + 1) + ".").attr("class", "index");
            var tdDesc = $("<td>").html(directions.getRoute(0).getStep(i).getDescriptionHtml()).attr("class", "description");
            var tdDistance = $("<td>").html(directions.getRoute(0).getStep(i).getDistance().html).attr("class", "distance");
            var tr = $("<tr>");
            if (i + 1 == directions.getRoute(0).getNumSteps()) {
                $(tr).attr("class", "last");
            }
            $(tr).append(tdPos).append(tdDesc).append(tdDistance);
            $(table).append(tr);
        }
        $(cntRoute).append(table);
        // Draw headline of aim
        var iconAim = $("<div>").attr("class", "icon").html("<span>B</span>");
        var h3Aim = $("<h3>").html($("#aim").val());
        var cntHeadAim = $("<div>").attr("class", "head").append(iconAim).append(h3Aim);
        $(cntRoute).append(cntHeadAim);
        // Create copyright
        $(cntRoute).append($("<div>").html("©2010 Tele Atlas").attr("id", "copyright"));
        $("#direction").slideDown('slow');
    }
    else {
        ShowRoutePlannnerMessage(getMessagesByKey("RouteNotFound"));
    }
}
function DeleteRouteFromMap() {
    var test = routes["start"];
    if (routes["start"] != undefined) {
        routes["start"].remove();
        routes["polyline"].remove();
        routes["aim"].remove();
    }
}
function HandleRoutePlannerErrors() {
    if (directions.getStatus().code == G_GEO_UNKNOWN_DIRECTIONS) {
        ShowRoutePlannnerMessage(getMessagesByKey("RouteNotFound"));
    }
    else {
        ShowRoutePlannnerMessage(getMessagesByKey("UnknownRpSystemError"));
    }
}
function SetCheckboxImages(isInit) {
    $('input.cbx_image').each(function () {
        $(this).hide();
        var imgPathActive;
        var imgPathInactive;
        // Get icon type by class
        if ($(this).hasClass("grey")) {
            imgPathActive = "/fe_assets/img/icons/icon_checkbox_active_grey.png";
            imgPathInactive = "/fe_assets/img/icons/icon_checkbox_inactive_grey.png";
        }
        else if ($(this).hasClass("black")) {
            imgPathActive = "/fe_assets/img/icons/icon_checkbox_active_transparent_black.png";
            imgPathInactive = "/fe_assets/img/icons/icon_checkbox_inactive_transparent_black.png";
        }
        else if ($(this).hasClass("white")) {
            imgPathActive = "/fe_assets/img/icons/icon_checkbox_active_transparent_white.png";
            imgPathInactive = "/fe_assets/img/icons/icon_checkbox_inactive_transparent_white.png";
        }
        else if ($(this).hasClass("black_border")) {
            imgPathActive = "/fe_assets/img/icons/icon_checkbox_active_transparent_black_border.png";
            imgPathInactive = "/fe_assets/img/icons/icon_checkbox_inactive_transparent_black_border.png";
        }
        // Set image by checkbox status
        if ($(this)[0].checked != true) {
            imgPath = imgPathInactive;
        }
        else {
            imgPath = imgPathActive;
        }
        var img;
        if (isInit) {
            img = $("<img>");
            $(img).attr("src", imgPath);
            $(img).attr("height", "18");
            $(img).attr("width", "18");
            $(this).after(img);
        }
        else {
            img = $(this).next("img").attr("src", imgPath);
            $(img).unbind('click');
        }
        // Set click event on img
        $(img).click(function () {
            var cbx = $(this).prev()[0];
            cbx.checked = !cbx.checked;
            if (cbx.checked) {
                $(this).attr("src", imgPathActive);
            }
            else {
                $(this).attr("src", imgPathInactive);
            }
            $(cbx).change();
        })
    });
}
// send a friend for wishlist
function openSendWishlistDialog() {
    $.openDOMWindow({
        width: 512,
        height: 700,
        windowPadding: 0,
        borderSize: '4',
        borderColor: '#fff',
        windowSourceID: '#dialog_container_sendAFriend'
    });
}
function prepareInputFields(selector) {
    var parentSelector = document;
    if (selector !== undefined) {
        parentSelector = selector;
    }
    $('input[type=text]', parentSelector).each(function () {
        $element = $(this);
        // ignore dropdowns
        if (!$element.hasClass('selectbox')) {
            var $label = $("label[for='" + $element.attr('id') + "']");
            var labelText = $label.text();
            if ($element.val() == '') {
                $element.val(labelText);
            }
            $label.hide();
            $element.focus(function () {
                var $focusedElement = $(this);
                if ($focusedElement.val() == labelText) {
                    $focusedElement.val('');
                }
            }).blur(function () {
                var $blurredElement = $(this);
                if ($blurredElement.val() == '') {
                    $blurredElement.val(labelText);
                }
            });
        } else {
            $element.parent().find('label').hide();
        }
    });
}

function zIndexWorkaround() {
    // If the browser is IE,
    if (isIE()) {
        /*
        ** For each div with class menu (i.e.,
        ** the thing we want to be on top),
        */
        $("div.panel-container").parents().each(function () {
            var p = $(this);
            var pos = p.css("position");
            // If it's positioned,
            if (pos == "relative" ||
               pos == "absolute" ||
               pos == "fixed") {
                /*
                ** Add the "on-top" class name when the
                ** mouse is hovering over it, and remove
                ** it when the mouse leaves.
                */
                p.hover(function () {
                    $(this).addClass("on-top");
                });
            }
        });
    }
}
function isIE() {
    if (navigator.userAgent.match(/MSIE \d\.\d+/))
        return true;
    return false;
}
