var lindab;
var override = false;

if(typeof(isIE6) == "undefined") {
  isIE6 = false;
}
if(typeof(isIE7) == "undefined") {
  isIE7 = false;
}
if(typeof(isIE8) == "undefined") {
  isIE8 = false;
}

// Protect your $
(function($)
{
  // Lindab specific functions
  lindab = $.lnd = {
    
    // VARS
    vars: {
      list: {},
      set: function(key, fn) {
        this.list[key] = fn;
      },
      get: function(key) {
        return this.list[key];
      }
    },
    
    // STATES
    states: {
      list: {},
      set: function(key, fn) {
        this.list[key] = fn;
      },
      get: function(key) {
        return this.list[key];
      }
    },
    
    // UTILS
    utils: {
      /*
       * 
       */
      isString: function(rule, value) {
        var rules = {
          empty: function(val) {
            return !(val && val != '') || false;
          }  
        };
        if(rule == 'EMPTY') {
          return rules.empty(value);
        } else if(rule = 'NOT_EMPTY') {
          return !rules.empty(value);
        }
      },
      /*
       * 
       */
      log: function() {
        if(!lindab.states.get('debug')) return;
        if(typeof(console) != "undefined") {
	        console.log(arguments);
				}
      }
    },
    
    // BOOKMARKS
    bookmark: {
      hash: function(prefix, data) {
        
        return prefix + this.serialize(data);
      },
      serialize: function(data) {
        var arr = [];
        var seperator = ':';
        $.each(data, function(key, val) {
          arr.push(key + seperator + val)
        }); 
        return arr.join(';');
      },
      unSerialize: function(prefix, hash) {
        hash = hash.replace(prefix, '');
        var data = {};
        var arr = hash.split(';');
        $.each(arr, function(index, key) {
          var item = key.split(':');
          data[item[0]] = item[1]; 
        });
        return data;
      },
      add: function(container, item) {
        
        var bookmarkData = container.metadata().bookmarkData;
        var itemBookmarkData = item.metadata().bookmarkData;
        var hash = this.hash(bookmarkData.prefix, itemBookmarkData);
        
        jQuery.history.load(hash);
        
      }
    },
    // AJAX
    ajax: {
      events: {
        list: {},
        set: function(key, fn) {
          this.list[key] = fn;
        },
        get: function(key) {
          return this.list[key];
        }
      },
      /*
       * 
       */
      request: function(data) {
        
        // setup default values for a ajax request 
        var defaults = {
            type: 'get',
            data: {},
            dataType: 'json',
            url: '',
            callback: null,
            element: null
        };
        
        // get metadata from element and extend default options
        var options = $.extend(defaults, data);
				
        // if no valid url is passed return.
        if(lindab.utils.isString('EMPTY',options.url)) return;
        
        // exec ajax request
        $.ajax({
          data: options.data,
          dataType: options.dataType,
          type: options.type,
          url: options.url,
          success: function(response) {
            // Debug request
            lindab.utils.log('ajax.linkHandler','Request sucessful', options, response);
            
            // if callback is a string look for it in the callback list.
						if(typeof(lindab.ajax.events.get(options.callback)) == "function") {
	            if(options.callback) {
                lindab.ajax.events.get(options.callback).call(this, options, response);
              }
              
            }
            
          }
        });
      }
    },
    
    guides: {
			stripListHTML: function(html) {
				var tmp = document.createElement("DIV");
				tmp.innerHTML = html;
				return tmp.textContent || tmp.innerText;
			},
    	parseGuideList: function() {
    		var chunk = $($(".guide-view-content").outerHtml());
    		var output = '';
    		
    		$.each($("*",chunk), function(key,val) {
    			val = $(val);
    			if(val.is("tbody tr")) {
		    		var image = val.find(".image").html();
		    		var name = val.find(".name").html();
		    		var code = val.find(".code").html();
		    		var num = val.find(".num").html();
		    		if(name) {
		    			output += $.trim(name);
		    		}
		    		if(code) {
		    			output += ' - ' + $.trim(code);
		    		}
		    		if(num) {
		    			output += ': ' + $.trim(num);
		    		}
		    		if(image) {
		    			output += '<br />' + $.trim(image) + '<br /><br />';	
		    		}
    			} else if(val.is("h3")) {
    				output += '<h2>' + $.trim(val.text()) + '</h2><br /><br />';
    			}
    		});
    		
    		var price = chunk.find(".estimated-cost");
    		if(price.exists()) {
    			output += '<h2>' + price.find("span:first").text() + '</h2><br />';
    			output += price.find("h2:first").text();
    		}
    		
    		return output;
    	}
    },
    
//    // Search
//    autocomplete: {
//      
//      config: {
//        cache: {},
//        timer: false,
//        interval: 500,
//        limit: 2,
//        index: false
//      },
//      
//      init: function() {
//        
//        var self = this;
//        
//        this.loadingImage = $('<img class="lnd-loading-image" src="' + lindab.vars.get('guipath') + 'img/loader-anim-16x16-blue.gif"/>').hide();
//        this.closeImage = $('<img class="lnd-close-image" src="' + lindab.vars.get('guipath') + 'img/icon-close-small.gif"/>').hide();
//        $('#lnd-quicksearch').append(this.loadingImage, this.closeImage);
//        
//        self.bind();
//       
//      },
//      bind: function() {
//        var input = document.getElementById("lnd-quicksearch-field");
//        var search = $(input);
//        var fieldset = $('#lnd-quicksearch');
//        var submitbutton = fieldset.find(".lnd-input-submit input");
//        var self = this;
//        var timer;
//        var interval = self.config.interval;
//        var limit = self.config.limit;
//        var lastVal;
//        search.attr('autocomplete', 'off');

//        this.closeImage.click(function() {
//          self.close();
//        });
//        
//        search.bind("submitForm",function() {
//          var field = $(this);
//          var options = field.metadata();
//          var url = options.searchurl;
//          var param = options.param;
//          var inputval = field.val();
//          if(inputval == input.defaultValue) {
//            return false;
//          } else if(!inputval || inputval == "" || inputval == null) {
//            return false;
//          }
//          var val = $.trim(field.val());
//          $.gotoURL(url + "?" + param + "=" + val);
//        });
//        
//        submitbutton.click(function() {
//          search.trigger("submitForm");
//          return false;
//        });

//        $(window).click(function(event) {
//          var target = event.target;
//          if( $(target).parents('#lnd-quicksearch:eq(0)').length == 0 ) self.close();          
//        });
//        fieldset.keydown(function(event) {
//          var keyCode = event.which;
//          var key = {
//              27: {
//                name: 'ESCAPE'
//              },
//              13: {
//                name: 'ENTER'
//              },
//              38: {
//                name: 'UP'
//              },
//              40: {
//                name: 'DOWN'
//              }
//          }
//          if(keyCode in key) {
//            return self.handleKeys(key[keyCode]);
//          }
//        });
//        search.keyup(function(event) {
//          var val = $.trim(search.val());
//          var length = val.length;
//          // clear timeout
//          clearTimeout(timer);
//          if(length < limit) {
//            self.clear();
//          } else if(length >= limit) {
//            timer = setTimeout(function() {
//              if(val != lastVal) self.search(val);
//              lastVal = val;
//            }, interval);
//          }
//        });
//      },
//      close: function() {
//        $('#lnd-quiksearch-autocomplete').slideUp();
//        if(this.closeImage.is(':visible')) this.closeImage.hide();
//      },
//      show: function() {
//        var container = $('#lnd-quiksearch-autocomplete');
//        if(container.is(':hidden')) container.slideDown();
//        if(this.closeImage.is(':hidden')) this.closeImage.fadeIn();
//      },
//      clear: function() {
//        this.render('');
//        this.close();
//      },
//      search: function(term) {
//        var data = $('#lnd-quicksearch-field').metadata();
//        var url = data.url; //'/ajax/ajax-autocomplete.php';
//        var key = data.param;
//        var self = this;
//        var cache = self.config.cache;
//        // show loading animation
//        self.closeImage.hide();
//        self.loadingImage.fadeIn();
//        // check for term in search cache, if found render and return
//        if(term in cache) {
//          self.render(cache[term]);
//          return;
//        }
//        var params = {};
//        params[key] = term;
//        // term is not found in cache, make the json call and render results
//        $.getJSON(url, params, function(data) {
//          cache[term] = data.html;
//          self.render(data.html);
//        });
//        
//      },
//      render: function(html) {
//        var self = this;
//        var target = $('#lnd-quiksearch-autocomplete');
//        if(!target.is(".abort")) {
//	        target.html(html);
//	        this.config.index = false;
//	        this.listItems = $('#lnd-quiksearch-autocomplete').find('li:not(.header)');
//	        this.listItems.hover(function() {
//	          $(this).addClass('selected');
//	          self.config.index = $(this).index();
//	        },
//	        function() {
//	          $(this).removeClass('selected');
//	        }).click(function() {
//	          var link = $(this).find('a:first');
//	          $.gotoURL(link.attr("href"));
//	          return false;
//	        });
//	        this.loadingImage.hide();
//	        this.show();
//        }
//      },
//      
//      getNextIndex: function(key, index, length) {
//        var first = 0;
//        var last = (length - 1)
//        if(key == 'UP') {
//          if(index === false) return last;
//          index--;
//          if(index < 0) index = last;
//        } else {
//          if(index === false) return first;
//          index++;
//          if(index == length) index = first;
//        }
//        return index;
//      },
//      
//      handleKeys: function(key) {
//        if(key.name == 'ENTER') {
//          var selecteditem = $('#lnd-quiksearch-autocomplete .selected');
//          if(selecteditem.exists()) {
//            var link = selecteditem.find('a:first');
//            $.gotoURL(link.attr("href"));
//          } else {
//          	$('#lnd-quiksearch-autocomplete').addClass("abort");
//            $('#lnd-quicksearch-field').trigger("submitForm");
//          }
//          return false;
//          //return;
//        } else if(key.name == 'ESCAPE') {
//          this.close();
//          return;
//        } else {  
//          var index = this.getNextIndex(key.name, this.config.index,  this.listItems.length);
//          this.listItems.removeClass('selected');
//          this.listItems.eq(index).addClass('selected');
//          this.config.index = index;
//        }
//        return false;
//      }
//    },
//    
//    // Map
//    maps: {
//      
//      load: function(locale) {
//          
//          //return;
//        
//          var script = document.createElement("script");
//          script.type = "text/javascript";
//          script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=lindab.maps.init";
//          $(function() {
//            $('body').prepend(script);
//          });
//          
//      },
//      
//      init: function() {
//        
//        var parent = $("#lnd-finddealer");
//        var search = $("#dealersearch-term");
//        search.attr("autocomplete","off");
//        
//        this.imagePath;
//        var myLatlng = new google.maps.LatLng(0,0);
//        var initvalue = parent.metadata().initView;
//        
//        this.options = {
//          scrollwheel: false,
//          zoom: 1,
//          mapTypeId: google.maps.MapTypeId.ROADMAP
//        }

//        if(!initvalue) {
//          this.options.center = myLatlng;
//        }
//        
//        this.map = new google.maps.Map(document.getElementById("mapCanvas"), this.options);
//        var gmap = this.map;
//        
//        if(initvalue) {
//          
//          this.geocoder = new google.maps.Geocoder();
//          
//          this.geocoder.geocode({'address':initvalue}, function(results,status) {
//            if(status == google.maps.GeocoderStatus.OK) {
//              gmap.setCenter(results[0].geometry.location);
//            } else { 
//              //alert("Geocode was not successful for the following reason: " + status); 
//            }
//          });
//          
//        }
//        
//        
//        // bind search  button
//        this.search.bind();
//        
//        lindab.maps.list.init('#mapList');
//        //lindab.maps.zoomToMarkerBounds();
//    
//      },
//      
//      search: {
//        bind: function() {
//          
//          var self = this;
//          
//          lindab.ajax.events.set('mapslist-init', function(options, data) {
//            
//            var mapList = $('#mapList').empty();
//            
//            mapList.removeClass("maplist-loading");
//            mapList.html(data.html);
//            
//            lindab.maps.overlay.close();
//            lindab.maps.list.init('#mapList');
//          
//          });
//          
//          
//          var submit = $('#dealersearch-submit').click(function() {
//            
//            var parent = $("#lnd-finddealer");
//            var target = $("#mapList");
//            var input = document.getElementById("dealersearch-term");

//            var val = $(input).val();
//            
//            if(target.is(".maplist-loading")) { 
//              return false;
//            } else if(input.value == input.defaultValue) {
//              return false;
//            } else if(!val || val == null || val == "") {
//              return false;
//            }
//            
//            var drop = $("#dealersearch-category").val();
//            var url = parent.metadata().url; // '/ajax/ajax-finddealer-list.php';
//            var term = parent.metadata().term;
//            
//            target.addClass("maplist-loading");
//            var loader = $('<div class="lnd-contentsloader"><span>'+lindab.ui.translation.getTranslation("loading")+'...</span></div>');
//            
//            target.prepend(loader);
//            
//            var data = {
//              category: drop
//            };
//            data[term] = val;
//            
//            lindab.ajax.request({
//              url: url,
//              callback: 'mapslist-init',
//              data: data
//            });
//          
//            return false;
//          });
//          
//          $('#dealersearch-term').keydown(function(e) {
//            if(e.which == 13) {
//              submit.trigger('click');
//              return false;
//            }
//          });
//          
//        }
//      },
//      
//      findAddress: function(address, callback) {
//        var self = this;
//        this.geocoder.geocode( { 'address': address}, function(results, status) {
//          if (status == google.maps.GeocoderStatus.OK) {
//            var location = results[0].geometry.location;
//            callback.apply(self, location);
//          } else {
//            //alert("Geocode was not successful for the following reason: " + status);
//          }
//        });
//      },
//      /*
//      geocode: function() {
//        
//      }
//      */
//      
//      point: function(lat,lng) {
//        return new google.maps.LatLng(lat, lng);
//      },
//      
//      panToPoint: function(point) {
//        this.map.panTo(point);
//      },
//      
//      zoomToMarkerBounds: function(list) {
//        var bounds = new google.maps.LatLngBounds();
//        var self = this;
//        
//        if(!list) list = self.marker.list;
//        
//        $.each(list, function(index, data) {
//          bounds.extend(data.point);
//        });
//        
//        this.map.fitBounds(bounds);
//        
//      },
//      
//      overlay: {
//        render: function(elem) {
//          var overlay = $('#mapOverlay').empty();
//          overlay.html(
//              $(elem).html()
//          );
//          overlay.fadeIn();
//        },
//        close: function() {
//          var overlay = $('#mapOverlay');
//          overlay.hide();
//        }
//      }, 
//      
//      list: {
//        init: function(container) {
//          var self = this;
//          var locations = $(container).find('.location');
//          var headers = $(container).find('.header');
//          
//          lindab.maps.marker.clearAll();
//          
//          if($(container).find('.location').exists()) {
//            self.bind(locations);
//            lindab.maps.zoomToMarkerBounds();
//          }
//          
//          headers.find("a").click(function() {
//            var elem = $(this);
//            
//            self.clearSelected();
//            
//            var list = elem.parents('.group:eq(0)').find('.location');
//            var pointList = [];
//            list.each(function() {
//              pointList.push({point: $(this).data('point')});
//            });
//            
//            lindab.maps.zoomToMarkerBounds(pointList);
//            
//            return false;
//          });
//          
//        },
//        
//        bind: function(list) {
//          var last;
//          var self = this;
//          list.each(function() {
//            var elem = $(this);
//            var data = elem.metadata();
//            var point = lindab.maps.point(data.lat, data.lng);
//            // add marker on map
//            var marker = lindab.maps.marker.add(point, data.official, elem);
//            
//            var icon = marker.getIcon();
//            //bind events  
//            
//            elem.data('point', point);
//            
//            elem.data('marker', marker);
//            
//            elem.data('icon', icon);
//            
//            elem.click(function(e, cancelPan) {
//              
//              if(elem.hasClass('selected')) return;
//              
//              self.clearSelected();
//              self.scrollTo(elem);
//              lindab.maps.overlay.render(this);
//              //if(!cancelPan) 
//              lindab.maps.panToPoint(point);
//              if(data.official) {
//                marker.setIcon(lindab.vars.get('guipath') + 'img/maps/marker-official-marked.png');
//              } else {
//                marker.setIcon(lindab.vars.get('guipath') + 'img/maps/marker-marked.png');             
//              }
//              elem.addClass('selected');
//              
//            });
//            
//            /*
//            
//            elem.mouseleave(function(e) {
//             
//            });
//            */
//          });
//        },
//        clearSelected: function() {
//          $('#mapList .selected').each(function() {
//            var elem = $(this);
//            lindab.maps.overlay.close();
//            elem.data().marker.setIcon(elem.data().icon);
//            elem.removeClass('selected');
//          });
//        },
//        scrollTo: function(elem) {
//          var list = $('#mapList');
//          var height = list.height();
//          var scrollTop = list.scrollTop();
//          var min = scrollTop;
//          var max = min + height;
//          var top = min + elem.position().top;
//          if(top < min || top > max) {
//            list.scrollTop(top);
//          }
//        }
//      },
//      
//      
//      marker: {
//        list: [],
//        add: function(point, official, listElement) {
//          var map = lindab.maps.map;
//          var guipath = lindab.vars.get('guipath');
//          if(typeof(guipath) == "undefined") {
//          	guipath = LND_GUIPATH;
//          }
//          var path = guipath + 'img/maps/';
//          var image = (official) ? 'marker-official.png': 'marker.png';
//          var marker = new google.maps.Marker({
//              position: point,
//              map: map,
//              icon: path + image
//          });
//          // assign event.
//          google.maps.event.addListener(marker, 'click', function() {
//            listElement.trigger('click', [true]);
//          });
//          this.list.push({marker: marker, point: point});
//          return marker;
//        },
//        addFromList: function(list) {
//          var self = this;
//          $.each(list, function(index, data) {
//            self.add(data.point, data.official, data.listElement);
//          });
//        },
//        
//        clearAll: function() {
//          var self = this;        
//          $.each(self.list, function(index, data) {
//            data.marker.setMap(null);
//          });
//          self.list = [];
//        }
//      }
//      
//      
//      
//      
//      
//      
//    },
//    
    // USER INTERFACE
    ui: {
			translation: {
				getTranslation: function(string) {
					return lndTranslations[lndLanguage][string];
				}
			},
			animation: {
				animateResultModules: function(mods,count) {
			    if(!count) {
			      count = 0;
			    }
			    var ml = mods.length;
			    var mod = $(mods[count]);
			    count++;
			    mod.fadeIn(120,"easeOutCubic",function() {
			      lindab.ui.animation.animateResultModules(mods,count);
			    });
				}
			},
      tools: {
        minitip: function(elem) {
          var parent = elem;
          var tip = $('<div id="lnd-minitip" class="lnd-minitip"><p class="lnd-tipcontents"></p></div>');
          var ppos = null;
          var showMiniTip = function() {
            ppos = parent.offset();
            if(parent.data("minitip")) {
              tip = parent.data("minitip");
            } else {
              var tiptext = parent.metadata().tiptext;
              tip.find(".lnd-tipcontents").html(tiptext);
              tip.css("top",(ppos.top+27));
              parent.data("minitip",tip);
            }
            $("#document").append(tip);
            var tw = tip.width();
            tip.css("left",(ppos.left-tw)+27);
          }
          var hideMiniTip = function() {
            tip.remove();
          }
          parent.hover(function() {
            showMiniTip();
          },function() {
            hideMiniTip();
          });
        },
        stockinfo: function(elem) {
          var parent = elem;
          
          if(!parent.exists()) { 
            return false;
          } 
          
          var metaurl = parent.metadata().stockURL;
          lindab.ajax.request({
            url: metaurl,
            callback: 'stockdata-callback',
            element: parent
          });
        },
        areaselector: function(elem) {
          var parent = elem;
          
          var areas = parent.find(".lnd-areas");
          var tabs = parent.find(".lnd-areatabs");
          var arrow = tabs.find(".lnd-area-arrow");
          var links = tabs.find(".lnd-selector .lnd-link");
          
          var slidetime = 5000; 
          
          var singleInit = function() {
            setTimeout(function() {
              parent.hide().removeClass("lnd-module-areaselector-init").fadeIn(1000);
            }, 1000);
          }
          
          var moveArrow = function(color) {
            arrow.find(".lnd-area-arrow-inner").css("background-color",color);
            tabs.find(".lnd-selector-active").prepend(arrow);
          };
          
          var initSelector = function() {
            var time = parent.metadata().slideTimeoutSeconds;
            if(time) {
              slidetime = (time*1000);
            } else {
              slidetime = 8000;
            }
            var count = areas.find(".lnd-area").length;
            if(count > 1) {
							setTimeout(function() {
	              var random = (Math.floor(Math.random()*count+1)-1);
	              parent.addClass("lnd-module-areaselector-loop");
	              tabs.find(".lnd-selector:eq("+random+") .lnd-link").trigger("triggerClick");
            	}, 1000);
            }
          }
          
          var nextArea = function() {
            if(parent.is(".lnd-module-areaselector-loop")) {
              var count = (areas.find(".lnd-area").length-1);
              var position = tabs.find(".lnd-selector-active").index();
              if((position+1) > count) {
                tabs.find(".lnd-selector:first .lnd-link").trigger("triggerClick");
              } else {
                tabs.find(".lnd-selector-active").next().find(".lnd-link").trigger("triggerClick");
              }
							return false;
            }
          }
          
          parent.hover(function() {
          	$(this).addClass("lnd-module-areaselector-pause");
          }, function() {
          	$(this).removeClass("lnd-module-areaselector-pause");
          });
          
          links.click(function() {
          	parent.removeClass("lnd-module-areaselector-loop lnd-module-areaselector-pause");
            if(parent.hasClass("inmotion")) {
            	return false;
            }
            var innerparent = $(this).parent();
            if(innerparent.is(".lnd-selector-active")) { return false; }
            parent.addClass("inmotion");
            $(this).trigger("triggerClick");
            return false;
          });
          
          links.bind("triggerClick",function() {
          	if(!parent.is(".lnd-module-areaselector-pause:not('.lnd-module-areaselector-init')")) {
          		
	          	var ah = areas.outerHeight();
	          	var th = tabs.outerHeight();
	          	var oh = ah + th;
	          	parent.css("height",oh);
	            var link = $(this);
	            var color = link.metadata().color;
	            var bordercolor = "#E0E0E0";
	            if(!color) {
	              color = "#1E83D7";
	            }
	            var areatarget = ".lnd-area-" + $(this).metadata().target;
	            var tabtarget = ".lnd-selector-" + $(this).metadata().target;
	
							var newarea = areas.find(areatarget);
							var currentarea = areas.find(".lnd-area-active"); 
							
							// First run
	            if(parent.is(".lnd-module-areaselector-init")) {
	            	parent.hide().removeClass("lnd-module-areaselector-init").fadeIn(1000);
		            areas.find(".lnd-area-active").removeClass("lnd-area-active");
		            areas.find(areatarget).addClass("lnd-area-active");
	            } else {
	            	// Looping
	            	newarea.addClass("lnd-area-onnext").css("opacity",1.0);
		            currentarea.css("opacity",1.0).fadeTo(400,0,function() {
			            newarea.removeClass("lnd-area-onnext").addClass("lnd-area-active");
		            	currentarea.removeClass("lnd-area-active");
			            parent.removeClass("inmotion");
		            });
	            }
	
	            tabs.find(".lnd-selector-active").removeClass("lnd-selector-active").css("border-top-color",bordercolor).css("border-right-color",bordercolor).css("border-left-color","#FFF");
	            tabs.find(".lnd-selector-first").css("border-left-color",bordercolor);
	            tabs.find(tabtarget).addClass("lnd-selector-active").css("border-top-color",color).css("border-color",color);
	
	            links.css("background-color","transparent");
	            link.css("background-color",color);
	
	            moveArrow(color);
          	}

            if(parent.is(".lnd-module-areaselector-loop")) {
		          setTimeout(function() {
		            nextArea();
		          },slidetime);
	          }
	          return false;
          });
          
          if(parent.exists()) { 
						if(parent.is(".lnd-module-areaselector-one")) {
            	singleInit();
          	} else {
          		initSelector();
          	}
          }
          return false;
	        
        },
        mediatabs: function(elem) {
          if(elem.exists()) {
            var elem = elem;
            var options = elem.metadata();
            var tabshtml = $('<ul class="lnd-mediatabs"></ul>');
            var inittabs = function() {
              var tabsinner = '';
              if(options.rotateSWF) {
                tabsinner += '<li class="lnd-mediatab lnd-mediatab-rotate"><a href="#" class="lnd-media-rotate">'+lindab.ui.translation.getTranslation("rotate")+'</a></li>';
              }
              if(options.videoSWF) {
                tabsinner += '<li class="lnd-mediatab lnd-mediatab-video"><a href="#" class="lnd-media-video">'+lindab.ui.translation.getTranslation("video")+'</a></li>';
              }
              tabsinner += '<li class="lnd-mediatab lnd-mediatab-images"><a href="#" class="lnd-media-images lnd-media-active">'+lindab.ui.translation.getTranslation("images")+'</a></li>';
              tabshtml.html(tabsinner);
              tabshtml.find(".lnd-mediatab:first").addClass("lnd-mediatab-first");
              tabshtml.find(".lnd-mediatab:last").addClass("lnd-mediatab-last");
              bindClickEvents();
              elem.wrapInner('<div class="imagemedia"></div>');
              elem.prepend(tabshtml);
            }
            var bindClickEvents = function() {
  
              var defaultwidth = 700;
              var defaultheight = 394;
              var flashversion = "9";
              var teaser = lindab.vars.get('guipath') + "img/asset-movieoverlay.gif";
              
              tabshtml.find("a").click(function() {
                
                if($(this).is(".lnd-media-active")) { 
                  return false; 
                } else {
                  elem.find(".lnd-media-active").removeClass("lnd-media-active");
                  $(this).addClass("lnd-media-active");  
                }
                
                var flashvars = {};
                var params = {};
                var attributes = {};

                if($(this).is(".lnd-media-images")) {
                  // IMAGES
                  elem.removeClass("lnd-module-mediatabs-active");
                  elem.find(".flashmedia").remove().end().find(".imagemedia").show();
                  return false;
                } else if($(this).is(".lnd-media-rotate")) {
                  // ROTATE
                  elem.find(".imagemedia").hide().end().find(".flashmedia").remove();
                  elem.append($('<div class="rotatemedia flashmedia"><div id="rotatemedia"></div></div>'));
                  var movietarget = "rotatemedia";
                  
                  var movieheight = options.rotateSWF["height"];
                  if(!movieheight) {
                    movieheight = defaultheight;
                  }
                  var moviewidth = options.rotateSWF["width"];
                  if(!moviewidth) {
                    moviewidth = defaultwidth;
                  }
                  
                  flashvars.mediaURL = options.rotateSWF["url"];
                  
                } else {
                  // VIDEO
                  elem.find(".imagemedia").hide().end().find(".flashmedia").remove();
                  elem.append($('<div class="videomedia flashmedia"><div id="videomedia"></div></div>'));
                  var movietarget = "videomedia";
                  
                  var movieheight = options.videoSWF["height"];
                  if(!movieheight) {
                    movieheight = defaultheight;
                  }
                  var moviewidth = options.videoSWF["width"];
                  if(!moviewidth) {
                    moviewidth = defaultwidth;
                  }
                  
                  flashvars.mediaURL = options.videoSWF["url"];
                }

                flashvars.controlColor = "0x0776d3";
                flashvars.showTimecode = "false";
                flashvars.showScalingButton = "false";
                flashvars.controlBackColor = "0xFFFFFF";
                flashvars.teaserURL = teaser;
                flashvars.autoPlay = "true";
                flashvars.defaultVolume = "50";
                flashvars.controlsEnabled = "true";
                
                params.wmode = "transparent";
                
                if(moviewidth < 700 || movieheight < 394) {
                  flashvars.teaserURL = lindab.vars.get('guipath') + "img/asset-movieoverlay-small.gif"
                  var target = elem.find(".flashmedia");
                  var moviepos = $('<div class="moviepos"></div>');
                  moviepos.css("height",movieheight);
                  moviepos.css("width",moviewidth);
                  moviepos.css("margin-left",0-(moviewidth/2));
                  moviepos.css("margin-top",0-(movieheight/2));
                  target.addClass("flashmedia-small").wrapInner(moviepos);
                }
                
                elem.addClass("lnd-module-mediatabs-active");
                if(swfobject.hasFlashPlayerVersion(flashversion)) {
                  swfobject.embedSWF(lindab.vars.get('guipath') + "swf/NonverBlaster.swf", movietarget, moviewidth, movieheight, flashversion, lindab.vars.get('guipath') + "swf/expressinstall.swf", flashvars, params, attributes);
                } else {
                  var fallback = $('<p class="lnd-noflash"></p>');
                  fallback.html(lindab.ui.translation.getTranslation("needflash"));
                  $("#" + movietarget).html(fallback);
                }
                return false;
              });
            }
            inittabs();
          }
        },
        inlineFormHandler: function(elem) {
          var validate = elem.metadata().validate;
          var performvalidation = false;
          var validateEmail = function(string) {
            // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
            return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(string);
          };
          var validateEmpty = function(string) {
            if(lindab.utils.isString('EMPTY',string)) {
              return false;
            } else {
              return true;
            }
          };
          var validateForm = function(modalform) {
            if(!modalform) {
              modalform = false;
            }
            var sendform = true;
            var messages = elem.metadata().errors;
            var errorelem = $('<p class="lnd-formerror-message"></p>)');
            elem.find(".lnd-formelement-validate").each(function() {
              var type = $(this).metadata().validation;
              if(type) {
                if(type == "email") {
                  if(validateEmail($(this).val())) {
                    $(this).removeClass("lnd-formelement-error");
                    $(this).parent().removeClass("lnd-formrow-error").find(".lnd-formerror-message").remove();
                  } else {
                    sendform = false;
                    if(!$(this).parent().is(".lnd-formrow-error")) {
                      var message = errorelem.html(messages[type]).clone();
                      $(this).addClass("lnd-formelement-error").after(message).parent().addClass("lnd-formrow-error");
                    }                  
                	}
                } else if(type == "empty") {
                  if(validateEmpty($(this).val())) {
                    $(this).removeClass("lnd-formelement-error");
                    $(this).parent().removeClass("lnd-formrow-error").find(".lnd-formerror-message").remove();
                  } else {
                    sendform = false;
                    if(!$(this).parent().is(".lnd-formrow-error")) {
                      var message = errorelem.html(messages[type]).clone();
                      $(this).addClass("lnd-formelement-error").after(message).parent().addClass("lnd-formrow-error");
                    }
                  }
                }
              }
            });
            if(modalform) {
              var sm = $.modal;
              sm.setContainerDimensions();
            }
            return sendform;
          };
          
          // init, fire
          elem.find(".lnd-button-submit").click(function() {
            var options = elem.metadata();
            var forminput = elem.find(".lnd-formelement").serialize();
            options.element = elem;
            options.data = forminput;
            if(options.sendtype) {
	            options.type = options.sendtype;
            }
            if(validate) {
              performvalidation = true;
            }
            var modalform = false;
            elem.parents(".lnd-module-modalcontents").exists(function() {
              modalform = true;
            });
            if(performvalidation) {
              if(validateForm(modalform)) {
                lindab.ajax.request(options);  
              }
            } else {
              lindab.ajax.request(options);
            }
          });
        },
        colorpicker: function(elem) {
          elem.find(".lnd-list-colors li").hover(function() {
            $(this).addClass("lnd-hover");
          }, function() {
            $(this).removeClass("lnd-hover");
          }).click(function() {
            $(this).find("a").click();
          }).find("a").click(function() {
            if($(this).parent().is(".lnd-active")) { return false; }
            var target = $(this).attr("href");
            target = ".lnd-" + target.replace("#","");
            elem.find(".lnd-color-active").removeClass("lnd-color-active").end().find(target).addClass("lnd-color-active");
            elem.find(".lnd-active").removeClass("lnd-active");
            $(this).parent().addClass("lnd-active");
            return false;
          });
        }
      },
      navigation: {
        searchfilters: function(elem) {
          var moduleparent = elem;
          var targetparent = $("#lnd-searchresult");
          var targetparentinner = targetparent.find(".lnd-group-search");
          
          // type filters
          moduleparent.find(".lnd-searchfilters-type .lnd-link").live("click",function() {
            var linkparent = $(this).parent();
            moduleparent.find(".lnd-searchfilters-type li").removeClass("lnd-active");
            linkparent.addClass("lnd-active");
            var typefilter = $(this).metadata().typefilter;
            if(typefilter) {
              targetparentinner.find(".lnd-searchgroup").addClass("lnd-searchgroup-hidden");
              targetparentinner.find(".lnd-searchgroup-" + typefilter).removeClass("lnd-searchgroup-hidden");
            } else {
              typefilter = "";
              targetparentinner.find(".lnd-searchgroup-hidden").removeClass("lnd-searchgroup-hidden");
            }
            moduleparent.data("typefilter",typefilter);
            return false;
          });
          
          // category filters
          moduleparent.find(".lnd-searchfilters-category .lnd-link").bind("activestate",function() {
            var linkparent = $(this).parent();
            $("#lnd-searchfilters").find(".lnd-searchfilters-category li").removeClass("lnd-active");
            linkparent.addClass("lnd-active");
          });
          
        },
        modalwindow: function(elem) {
          var openModal = function() {
            var options = elem.metadata();
            options.dataType = "html";
            options.element = elem;
            // perform
            lindab.ajax.request(options);
          };
          openModal();
          return false;
        },
        topselect: function(elem) {
          var parent = $("#lnd-topselectors");
          var sub = parent.find(".lnd-holder-topselectors");
          var arrow = parent.find(".lnd-arrow");
          var closer = parent.find(".lnd-close");
          
          var openSelector = function(elem,callback) {
            if(lindab.states.get('browser-capable')) {
            if(elem.is(".lnd-link-topselect-open")) {
              // CLOSES THE BOX - HIDES THE INNER
              var select = elem.metadata().selector;
              parent.slideUp(500,"easeOutCubic",function() {
                parent.removeClass("lnd-holder-topselectors-open");
                elem.removeClass("lnd-link-topselect-open");
                sub.removeClass("lnd-holder-topselectors-section lnd-holder-topselectors-language");
                  callback.call();
              });              
              }
              else {
              if(parent.is(".lnd-holder-topselectors-open")) {
                // KEEPS THE BOX OPEN - CHANGES INNER
                $(".lnd-link-topselect-open").removeClass("lnd-link-topselect-open");
                elem.addClass("lnd-link-topselect-open");
                var select = elem.metadata().selector;
                sub.removeClass("lnd-holder-topselectors-section lnd-holder-topselectors-language").addClass("lnd-holder-topselectors-" + select);
                var sh = sub.outerHeight();
                parent.animate({
                  'height': sh
                },500,"easeOutCubic",function() {
                    callback.call();
                });
                }
                else {
                // OPENS THE BOX - SHOWS INNER
                elem.addClass("lnd-link-topselect-open");
                var select = elem.metadata().selector;
                sub.removeClass("lnd-holder-topselectors-section lnd-holder-topselectors-language").addClass("lnd-holder-topselectors-" + select);
                parent.css("height","auto").addClass("lnd-holder-topselectors-open").slideDown(500,"easeOutCubic", function(){
                  var sh = sub.outerHeight();
                  parent.css("height",sh);
                     callback.call();
                  });
                }
              }
            }
            // IE 6 & 7
            else {
              if(elem.is(".lnd-link-topselect-open")) {
                // CLOSES THE BOX - HIDES THE INNER
                var select = elem.metadata().selector;
                parent.hide(0,function(){
                  parent.removeClass("lnd-holder-topselectors-open");
                  elem.removeClass("lnd-link-topselect-open");
                  sub.removeClass("lnd-holder-topselectors-section lnd-holder-topselectors-language");
                });
              }
              else {
                if (parent.is(".lnd-holder-topselectors-open")) {
                  // KEEPS THE BOX OPEN - CHANGES INNER
                  $(".lnd-link-topselect-open").removeClass("lnd-link-topselect-open");
                  elem.addClass("lnd-link-topselect-open");
                  var select = elem.metadata().selector;
                  sub.removeClass("lnd-holder-topselectors-section lnd-holder-topselectors-language").addClass("lnd-holder-topselectors-" + select);
                }
                else {
                  // OPENS THE BOX - SHOWS INNER
                  elem.addClass("lnd-link-topselect-open");
                  var select = elem.metadata().selector;
                  sub.removeClass("lnd-holder-topselectors-section lnd-holder-topselectors-language").addClass("lnd-holder-topselectors-" + select);
                  parent.addClass("lnd-holder-topselectors-open").show(0,function(){
                  });
                }
              }
              
            }
          }
          
          closer.click(function() {
            $(".lnd-link-topselect-open").click();
          });
          
          var positionArrow = function() {
            
            if($(".lnd-holder-topselectors").is(".lnd-holder-topselectors-section")) {
              var menu = $(".lnd-topbar .lnd-menu-left");
            } else {
              var menu = $(".lnd-topbar .lnd-menu-right");
            }

            var position = menu.position();
            position = position.left;
            if(menu.is(".lnd-menu-left")) {
              position = (menu.width() - 14); 
            } else if(menu.is(".lnd-menu-right")) {
              position = (position-20);
            }
            arrow.show().css("left",position);
          }
          
          var hideArrow = function() {
            arrow.hide();
          }
          
          elem.click(function() {
            hideArrow();
            var callback = function() {
              hideArrow();
              positionArrow();
            }
            openSelector(elem,callback);
            return false;
          });
          
          if(parent.is(".lnd-topselectors-open")) {
            positionArrow();
          }
        },
        autocut: function(elem) {
          var words = elem.metadata().words;
          var dots = '...';
          var par = elem.find('.lnd-paragraph-cut:first');
          var org = par.html();
          var spaces = org.split(" ");
          var count = 0;
          var newtxt = "";
          $.each(spaces,function(key,val) {
            newtxt += val;
            count++;
            if(count > words) {
              newtxt += dots; 
              return false;
            } else {
              newtxt += " ";
            }
          });

          par.html(newtxt);
          elem.data("contents",{'org':org,'shorts':newtxt});
          //elem.prepend(newtxt);
          
          elem.find(".lnd-cutlink").live("click",function()
          {
            if($(this).is(".lnd-link-expandable-open")) {
              // close
              $(this).removeClass("lnd-link-expandable-open").html($(this).data('fliptitle'));
              par.html(elem.data().contents.shorts);
            } else {
              // open
              $(this).data("fliptitle",$(this).html());
              $(this).addClass("lnd-link-expandable-open").html(elem.metadata().fliptitle);
              par.html(elem.data().contents.org);
            }
            return false;
          });
        },
        contactselect: {
          updateHTML: function(obj) {
            var contacttmpl = $('<div class="lnd-contact-person"><div class="lnd-column lnd-left"><img class="lnd-contactimage" src="" alt=""/></div><div class="lnd-column lnd-right"><h6 class="lnd-heading lnd-heading-box lnd-contactname"></h6><p class="lnd-contacttitle"></p><p class="lnd-contactphone"></p><div class="lnd-tools"><a href="#" class="lnd-link lnd-contactemail"><span>E-mail</span></a><a href="#" class="lnd-link lnd-contactvcard"><span>Download v-card</span></a></div></div></div>');
            var output = $("<div></div>");
            var counter = 0;
            $.each(obj,function() {
              var contact = this;
              var contacthtml = contacttmpl.clone();
              
              if(counter == 0) {
                contacthtml.addClass("lnd-contact-person-active");
              }
              
              if(contact.image) {
                contacthtml.removeClass("lnd-no-contact-image").find(".lnd-contactimage").attr("src",contact.image);         
              } else {
                contacthtml.addClass("lnd-no-contact-image").find(".lnd-contactimage").remove();
              }
              if(contact.name) {
                contacthtml.find(".lnd-contactname").html(contact.name);         
              } else {
                contacthtml.find(".lnd-contactname").remove();
              }
              if(contact.title) {
                contacthtml.find(".lnd-contacttitle").html(contact.title);
              } else {
                contacthtml.find(".lnd-contacttitle").remove();
              }
              if(contact.phone) {
                contacthtml.find(".lnd-contactphone").html(contact.phone);
              } else {
                contacthtml.find(".lnd-contactphone").remove();
              }
              if(contact.email) {
                contacthtml.find(".lnd-contactemail").attr("href","mailto:" + contact.email);
              } else {
                contacthtml.find(".lnd-contactemail").remove();
              }
              if(contact.vcard) {
                contacthtml.find(".lnd-contactvcard").attr("href",contact.vcard);
              } else {
                contacthtml.find(".lnd-contactvcard").remove();
              }
              output.append(contacthtml);
              counter++;
            });
            var returndata = {
              html: output.html(),
              count: counter
            }
            return returndata;
          },
          buildContacts: function(elem,id,obj) {
            var select = elem;
            var htmldata = select.data('html');
            if(typeof(htmldata) != "undefined") {
              if(typeof(htmldata[id]) != "undefined") {
                var returndata = htmldata[id];
              } else {
                var returndata = lindab.ui.navigation.contactselect.updateHTML(obj);
              }
            } else {
              var returndata = lindab.ui.navigation.contactselect.updateHTML(obj);
            }
            var storedata = {};
            storedata[id] = returndata;
            var old = select.data('html');
            var newd = $.extend(old,storedata);
            select.data('html',newd);
            return returndata;
          }
        },
				getMainContents: function(data)
				{
					var $loader = $('<div class="lnd-contentsloader"><span>'+lindab.ui.translation.getTranslation("loading")+'...</span></div>');
					var $parent = $("#lnd-maincontents");
					$parent.prepend($loader);
					$parent.find(".lnd-maincontents").addClass("lnd-loading");
	        lindab.ajax.request({
	          url: data.contentsData.url,
	          callback: 'maincontents-loader'
	        }); 
				},        
        topMenuHover: function(state, element) {
          var elem = element;
          var li = elem.parents('li:first');
          var ul = li.parents('ul:first');
          var img = elem.find('img');
          
					if(li.is(".lnd-listitem-menu-drilldown-active")) { return; }
          
          if(state == 'over') { 
            li.addClass("hover");
            if(!li.is(".active")) {
              li.addClass("active");
              li.animate({
                opacity: 0.8
              },250,function() {
                img.css("margin-top","-50px");
                elem.css("background-position","right -50px");
                li.animate({
                  opacity: 1
                }, 250, function() {
                  li.removeClass("active");
                });
              });
            }
          } else if(state == 'out') {
            
            img.css("margin-top","0");
            li.stop().css("opacity","1");
            elem.css("background-position","right 0");
            li.removeClass("hover").removeClass("active");
          }
        },
        /*
         * 
         */
        drilldown: function(action, element) {
					
          var $drilldown = $("#lnd-drilldown");
          var $menuitem = $(element);
          var $item = $("a",$menuitem);
					
					if($menuitem.is(".lnd-listitem-menu-drilldown-progress")) { return false; }
					
					if(action == "open") {
						if($menuitem.is(".lnd-listitem-menu-drilldown-active")) { return false; }
						$menuitem.addClass("lnd-listitem-menu-drilldown-progress");
            $menuitem.removeClass("hover").removeClass("active").removeClass("lnd-listitem-menu-drilldown-loading");
            $menuitem.addClass("lnd-listitem-menu-drilldown-active");
            $drilldown.show();
            //$drilldown.find(".lnd-holder-drilldown").hide();
            //$("img",$item).css("margin-top","-150px");
            //$item.stop().css("opacity","1");
            //$item.css("background-position","right -150px");
            $drilldown.find(".lnd-holder-drilldown").slideDown(500,"easeOutCubic",function() {
							$menuitem.removeClass("lnd-listitem-menu-drilldown-progress");
              if(!$drilldown.is(".lnd-drilldown-init")) {
                var ddh = $drilldown.find(".lnd-holder-drilldown");
                if(ddh.is(".lnd-holder-drilldown-ba3") || !ddh.is(".lnd-holder-drilldown-flex")) {
                  $drilldown.addClass("lnd-drilldown-init");
                  var drillheight = 0;
                  $.each($drilldown.find(".lnd-level-1 li"),function() {
                    drillheight = drillheight + $(this).outerHeight(true);
                  });
                  $drilldown.data("drillheight",drillheight);
                  $drilldown.find(".lnd-level").css("height",drillheight+1);
                  $drilldown.find(".lnd-holder-drilldown").css("height",drillheight-2);
                }
              }
						});
            
            // remove breadcrumb
            lindab.ui.navigation.breadcrumb.disable();
            
					} else {
						$menuitem.addClass("lnd-listitem-menu-drilldown-progress");
            //$("img",$item).css("margin-top","0");
            //$item.stop().css("opacity","1");
            //$item.css("background-position","right 0");
            $menuitem.removeClass("lnd-listitem-menu-drilldown-active");
            $(".lnd-holder-drilldown",$drilldown).slideUp(500,"easeOutCubic",function() {
              $drilldown.hide();
							$menuitem.removeClass("lnd-listitem-menu-drilldown-progress");
            });
            
            
            // generate breadcrumb
            lindab.ui.navigation.breadcrumb.construct();
            
            
					}
					
          return false;
        },
        slideshow: function(elem) {
					// slideshow-elements exists
					if(elem.exists()) {
	          var titleholder = elem.find(".lnd-image-description-holder");
						// handle the image description
	          var checkTitle = function() {
	            var current = elem.find(".lnd-item-active img");
	            var title = current.attr("title");
	            titleholder.append('<p class="lnd-image-description">' + title + '</p>');
	            titleholder.find(".lnd-image-description").show();
	            if(title.length > 0) {
	              titleholder.removeClass("empty");
	              if(!titleholder.is(".loaded")) {
	                titleholder.addClass("loaded").show();
	              } else {
	                titleholder.slideDown(250,"easeOutCubic");
	              }
	            } else {
	              titleholder.addClass("empty");
	            }
	          }
						// update the counter
	          var updateCount = function(count) {
	            var target = elem.find(".lnd-image-activeslide");
	            target.html(count);
	          }
						// trigger next image when clicking anywhere inside the slide
	          elem.find(".lnd-item-active").live("click",function() {
	            elem.find(".lnd-slide-navigation-next").click();
	          });
						// show and hide image description on mouse over and out
	          elem.hover(function() {
	            if(!elem.is(".sliding") && !titleholder.is(".empty")) {
	              elem.addClass("sliding");
	              titleholder.slideDown(function() {
	                elem.removeClass("sliding");
	              });
	            }
	          },function() {
	            if(!elem.is(".sliding") && !titleholder.is(".empty")) {
	              elem.addClass("sliding");
	              titleholder.slideUp(function() {
	                elem.removeClass("sliding");
	              });
	            }
	          });
						// slide the images
	          elem.find(".lnd-slide-navigation").click(function() {
	            if(elem.is(".slide-active")) { return false; }
	            titleholder.hide().find(".lnd-image-description").remove();
	            elem.addClass("slide-active");
	            var dir = $(this).is(".lnd-slide-navigation-next") ? 'left' : 'right';
	            var count = ((elem.find(".lnd-item").length)-1);
	            var counter = elem.data("counter");
	            if(typeof(counter) == "undefined") {
	              counter = 0;
	              elem.data("counter",counter);
	            }
	            var active = elem.find(".lnd-item-active");
	            if(dir == "left") {
	              counter++;
	              if(counter > count) {
	                counter = 0;
	                var image = elem.find(".lnd-item:first");
	              } else {
	                var image = active.next(".lnd-item");
	              }
	              var nextclass = "lnd-item-next-left";
	            } else {
	              counter--;
	              if(counter < 0) {
	                counter = count;
	                var image = elem.find(".lnd-item:last");
	              } else {
	                var image = active.prev(".lnd-item");
	              }
	              var nextclass = "lnd-item-next-right";
	            }
	
	            image.addClass("lnd-item-next " + nextclass );
	            var aw = active.width();
	            var nw = image.width();
	            
	            if(dir == "left") {
	              active.animate({
	                'left': 0-aw
	              },500,"easeOutCubic",function() {
	                active.removeClass("lnd-item-active").removeAttr("style");
	              });
	              image.animate({
	                'right': 0
	              },500,"easeOutCubic",function() {
	                image.removeClass("lnd-item-next lnd-item-next-left").addClass("lnd-item-active").removeAttr("style");
	                elem.removeClass("slide-active");
	                checkTitle();
	              });
	            } else {
	              active.animate({
	                'left': 0+aw 
	              },500,"easeOutCubic",function() {
	                active.removeClass("lnd-item-active").removeAttr("style");
	              });
	              image.animate({
	                'left': 0
	              },500,"easeOutCubic",function() {
	                image.removeClass("lnd-item-next lnd-item-next-right").addClass("lnd-item-active").removeAttr("style");
	                elem.removeClass("slide-active");
	                checkTitle();
	              });
	            }
	            updateCount(counter+1);
	            elem.data("counter",counter);
	            return false;
	          });
						// start with checking the image title
	          checkTitle();
					}
        },
        tabs: function(container) {
          var activeCssClass = 'active';
          container.find("li a:not('.lnd-link-taboverride')").live("click",function() {
            var elem = $(this);
            var ul = elem.parents('ul.lnd-tabs:eq(0)');
            ul.find('li.active').removeClass(activeCssClass);
            elem.parent().addClass(activeCssClass);
						if(elem.attr("href") != "#") {
							var parent = elem.parents(".lnd-module-tabs:first");
							var target = $(elem.attr("href"));
							target.exists(function() {
								parent.find(".lnd-tabcontents").hide();
							  target.show();
							});
							return false;
						}
          });
        },
        breadcrumb: {
          template: '<div class="lnd-breadcrumb"><div class="lnd-group lnd-group-breadcrumb"><div id="lnd-breadcrumb" class="lnd-holder lnd-holder-breadcrumb"><ul>{{each Items}}<li class="${cssClass}"><a href="${url}">${title}</a>{{/each}}</li></ul><span class="lnd-shadow-breadcrumb"></span></div></div></div>',
          loadDrilldown: function() {
						var breadcrumb = $('#lnd-breadcrumb');
						var options = {
							url: breadcrumb.metadata().url,
							callback: breadcrumb.metadata().callback
						};
	          lindab.ajax.request(options);
					},
					activate: function() {
						
						var breadcrumb = $('#lnd-breadcrumb');
            var inner = breadcrumb.find("ul:first");
						
            breadcrumb.click(function() {
              var trigger = $('li.lnd-listitem-menu-drilldown',$("#lnd-topmenu"));
              trigger.addClass("lnd-listitem-menu-drilldown-loading");
							lindab.ui.navigation.breadcrumb.loadDrilldown();
              return false;
            });
            
            breadcrumb.hoverIntent(function() {
              lindab.ui.navigation.breadcrumb.hoverTrigger("over");
            }, function() {
              lindab.ui.navigation.breadcrumb.hoverTrigger("out");
            });
					},
					render: function(items) {
						
						if(items.length > 0) {
            
	            var breadcrumb = $.tmpl(this.template, {Items: items});
              var inner = breadcrumb.find("ul:first");
	            //breadcrumb.hide();
	            
	            //lindab.ui.navigation.breadcrumb.disable();
	            
              $('.lnd-breadcrumb').remove();
              $('#lnd-topmenu').after(breadcrumb);
              breadcrumb.hide().slideDown();
              
	            breadcrumb.click(function() {
	              breadcrumb.slideUp();
                var trigger = $('li.lnd-listitem-menu-drilldown');
                var state = trigger.is(".lnd-listitem-menu-drilldown-active") ? 'close' : 'open';
                lindab.ui.navigation.drilldown(state, trigger);
	              return false;
	            });
							
							breadcrumb.hoverIntent(function() {
								lindab.ui.navigation.breadcrumb.hoverTrigger("over");
							}, function() {
								lindab.ui.navigation.breadcrumb.hoverTrigger("out");
							});

						}
            
          },
          disable: function() {
            $('#lnd-breadcrumb').unbind().stop().slideUp(function() {
              $('.lnd-breadcrumb').remove();
            });
          },
          construct: function() {
            
            var data = $('#lnd-drilldown').find('a.lnd-levelitem-parent-active, a.lnd-levelitem-active');
            var arr = []
            var dataLength = data.length;
            data.each(function(index) {
              var css = (index == 0) ? 'home' : (index >= (dataLength - 1)) ? 'last' : '';
              var elem = $(this); 
              arr.push({
                cssClass: css,
                title: elem.text(),
                url: elem.attr('href')
              });
            });
            // render html and append to document.
            this.render(arr);
            
          },
					hoverTrigger: function(state) {
						var elem = $('#lnd-breadcrumb');
						if(!elem.data("loaded")) {
							var eh = elem.height();
							elem.data("heights",{'org':eh,'to':(eh+5)}).data("loaded",true);
						}
						if(state == "over") {
							elem.stop().delay(1000).animate({
								height: elem.data("heights").to
							},{
								duration: 250,
								queue: false
							},function() {
								elem.addClass("lnd-breadcrumb-down");
							});
						} else {
              elem.stop().animate({
                height: elem.data("heights").org
              },{
								duration: 250,
								queue: false
							},function() {
								elem.removeClass("lnd-breadcrumb-down");
							});
						}
					}
        },
        inlineExpandable: function(elem) {
          elem.find(".lnd-shareurl").live("click",function() {
            $(this).focus().select();
          });
          elem.find(".lnd-expandtrigger").live("click",function() {
            if(elem.is(".lnd-listitem-expandable-open")) {
              // close
              elem.removeClass("lnd-listitem-expandable-open").find(".lnd-hidden").hide();
            } else {
              // open
              elem.addClass("lnd-listitem-expandable-open").find(".lnd-hidden").show(0,function() {
                elem.find(".lnd-shareurl").click();
              });
            }
            return false;
          });
        }
      }
    },
    
    // FUNCTIONS (EXTENDED TO $)
    functions:
    {
    	guideToolsLink: function(elem) {
    		if(elem.is(".print")) {
    			window.print();
    			return false;
    		} else if(elem.is(".share")) {
    			lindab.ui.navigation.modalwindow(elem);
    			return false;
    		}
    	},
      triggerLayouts: function(scope) {
        if(!scope) {
          var scope = $(document);
        }
        $(".lnd-maincontents-home:not('.lnd-maincontents-guides') .lnd-column-right",scope).css("display","block");
      },
      setupPrint: function() {
			 	var ps = $("#lnd-printsetup");
				if(ps.exists()) {
					var meta = $("#lnd-printsetup").metadata({type:'elem',name:'script'}).printdata;
			 		if(meta) {
			   		var printelement = $('<div id="lnd-printheader" class="lnd-printheader"></div>');
			 			var printheader = meta.printHeader;
						var printurl = $('<p class="lnd-printurl"><strong>' + lindab.ui.translation.getTranslation("printurl") + ':</strong> <span class="lnd-url">' + meta.printURL + '</span></p>');
						var printlogo = $('<div class="lnd-printlogo"><img src="'+meta.printLogo+'" width="200" height="48" alt="Lindab" title="Lindab" /></div>');
						printelement.html('<h2 class="lnd-heading lnd-heading-print">'+printheader+'</h2>');
						printelement.prepend(printlogo);
						printelement.append(printurl);
					 	$("body").prepend(printelement);
			 		}
				}
      },
      gotoURL: function(url) {
        document.location = url;
        return false;
      },
      bindLindabEvents: function(scope) {
        if(!scope) {
          var scope = $(document);
        }
        $(".lnd-autocut",scope).autocut();
        $(".lnd-image-rc",scope).lndRoundedCorners();
        $(".lnd-listitem-expandable",scope).inlineExpandable();

        // Inline form handler
        $(".lnd-module-inlineform",scope).inlineForm();
        
        // Slideshow handler
        $('div.lnd-module-slideshow',scope).slideshow();
        
        // Contact navigation
        $(".lnd-module-box .lnd-contact .lnd-contact-navigation",scope).lindabContactNavigation();
        
        if($.isBrowserIE() != false) {
          $.bindMSIEEvents(scope);
        }
        
      },
      isBrowserIE: function()
      {
        var browser = false;
        if(isIE6)
        {
          browser = "6";
        } else if(isIE7)
        {
          browser = "7";
        } else if(isIE8)
        {
          browser = "8";
        }
        return browser;
      },
      bindMSIEEvents: function(scope)
      {
        if(!scope) {
          var scope = $(document);
        }
				var version = $.isBrowserIE();
        switch(version)
        {
          case "9":
          case "8":
						lindab.states.set('browser-capable',true);
          break;
          case "7":
            lindab.states.set('browser-capable',false);
          break;
          case "6":
            lindab.states.set('browser-capable',false);
            // Trigger layout to column for proper rendering
            $.triggerLayouts(scope);
            // Try and eliminate background-flickering in MSIE6
            try {
              document.execCommand('BackgroundImageCache', false, true);
            } catch(e) {}
          break;
          default:
            lindab.states.set('browser-capable',true);
          break;
        }
      }
      
    },
    
    // EXTENSIONS (EXTENDS AS PLUGINS, CHAINABLE)
    extensions:
    {
      lindabContactNavigation: function() {
        return this.each(function() {
          var nav = $(this);
          var parent = nav.parents(".lnd-contact");
          
          $(".lnd-nav",nav).click(function() {
            var active = $(".lnd-contact-person-active",parent);
            var contacts = $(".lnd-contact-person",parent);
            var count = contacts.length-1;
            var index = $(".lnd-contact-person-active",parent).index();
            var current = index+1;
            if($(this).is(".lnd-nav-next")) {
              if((index+1) > count) {
                var next = $(".lnd-contact-person",parent).eq(0);
                current = 1;
              } else {
                var next = active.next();
                current = current+1;
              }
              active.removeClass("lnd-contact-person-active");
              next.addClass("lnd-contact-person-active");
            } else {
              if((index-1) < 0) {
                var next = $(".lnd-contact-person",parent).eq(count);
                current = count+1;
              } else {
                var next = active.prev();
                current = current-1;
              }
              active.removeClass("lnd-contact-person-active");
              next.addClass("lnd-contact-person-active");
            }
            
            $(".lnd-nav-track-current",nav).html(current);
            return false;
          });
        });
      },
      lindabMiniTip: function() {
        return this.each(function() {
          lindab.ui.tools.minitip($(this));
        });
      },
      inlineExpandable: function() {
        return this.each(function() {
          lindab.ui.navigation.inlineExpandable($(this));
        });
      },
      outerHtml: function()
      {
        return $('<div></div>').append(this.eq(0).clone()).html();
      },
      exists: function(fn) {
	      var l = this.length;
	      if($.isFunction(fn)) {
	        if(l > 0) fn.apply(this);
	        return this;
	      } else {
	        return (l > 0) ? true : false;
	      }
	    },
      ajaxLink: function() {
        
          $(this).live('click', function() {
            var elem = $(this);
            var options = elem.metadata();
            options.element = elem;
						// check for a precall function and execute it
						if(options.precall) {
							if(typeof(lindab.ajax.events.get(options.precall)) == "function") {
								lindab.ajax.events.get(options.precall).call(this, options);
							}
            } else {
	            // perform the ajax-request
	            lindab.ajax.request(options);
						}
            // cancel standard click event
            return false;
          });
        
      },
      lindabTrackLink: function() {
        
          $(this).live('click', function() {
            var elem = $(this);
            var options = elem.metadata();
            options = options.trackingData;
            var trackurl = options.trackingURL;
            var callback = options.trackingCallback;
            if(callback) {
              if(typeof(window[callback]) == "function") {
                window[callback].call(this, trackurl);
              } else {
                if(typeof(_gaq) != "undefined") {
                  _gaq.push(['_trackPageview'], trackurl);  
                }
              }
            } else {
              if(typeof(_gaq) != "undefined") {
                _gaq.push(['_trackPageview'], trackurl);
              }
            }
          });
        
      },
      slideshow: function() {
        return this.each(function()
        {
          lindab.ui.navigation.slideshow($(this));
        });
      },
			lndRoundedCorners: function()
			{
				return this.each(function()
				{
					var $parent = $(this);
					var setCorners = function()
					{
						
						var $wrap = $("a",$parent);
						var $top = $('<span class="border-top"></span>');
						var $bottom = $('<span class="border-bottom"></span>');
            var bottomheight = $("img",$wrap).height();
            if(!bottomheight) {
              bottomheight = "160";
            }
						$bottom.height(bottomheight);
						$wrap.append($top,$bottom);
					}
					setCorners();
					if($.isBrowserIE() == "6")
					{
						$parent.hover(function()
						{
							$(this).addClass("image-hover");
						}, function()
						{
							$(this).removeClass("image-hover");
						});
					}
				});
			},
      inputMemory: function()
      {
        return this.each(function()
        {
          $(this).focus(function()
          {
            if(this.value == this.defaultValue)
            {
             this.value = "";
            }       
          }).blur(function()
          {
            if(!this.value.length)
            {
              this.value = this.defaultValue;
            }
          });
        });
      },
			lndTopMenu: function()
			{
				return this.each(function()
				{
					var ul = $parent = $(this);
					//ul.removeClass("lnd-list-topmenu-std");
					/*
					ul.find('li a').hover(function() {
					  lindab.ui.navigation.topMenuHover('over', $(this));
					}, function() {
					  lindab.ui.navigation.topMenuHover('out', $(this));
					});
					*/
					ul.find('li.lnd-listitem-menu-drilldown').click(function() {
						var bc = $(".lnd-breadcrumb .lnd-holder-breadcrumb");
						if(bc.exists()) {
							bc.click();
						} else {
						  var state = $(this).is(".lnd-listitem-menu-drilldown-active") ? 'close' : 'open';
						  lindab.ui.navigation.drilldown(state, this);
						}
					  return false;
					});
					
				});
			},
      autocut: function() {
        return this.each(function() {
          lindab.ui.navigation.autocut($(this));
        });
      },
      lindabTopSelect: function() {
        return this.each(function() {
          lindab.ui.navigation.topselect($(this));
        });
      },
      searchFilters: function() {
        return this.each(function() {
          lindab.ui.navigation.searchfilters($(this));
        });
      },
      inlineForm: function() {
        return this.each(function() {
          lindab.ui.tools.inlineFormHandler($(this));
        });
      }
    }       
  };

  // Extend the Lindab specific functions into the $-scope
  $.extend($.lnd.functions);
  $.fn.extend($.lnd.extensions);
  
  
  // events callbacks.
	lindab.ajax.events.set('maincontents-loader', function(options, data) {
		var $parent = $("#lnd-maincontents");
		$('#lnd-drilldown').data("active",false);
		$parent.find(".lnd-contentsloader").fadeOut(250,function() {
			$parent.empty().append(data.maincontentshtml);
      $.bindLindabEvents($parent);
		});
	});
  
  lindab.ajax.events.set('areaselector-item', function(options, data) {
    override = true;

    var item = options.element;
    var html = data.drilldownhtml;
    
    var drilldown = $('#lnd-drilldown');
    var holder = drilldown.find('.lnd-holder-drilldown');
    holder.find('ul').remove();
    holder.prepend(html);
    
    lindab.ui.navigation.drilldown('open', $('li.lnd-listitem-menu-drilldown'));
    
    lindab.bookmark.add(drilldown, item);
    
    if(data) {
      if(data.contentsData) {
        lindab.ui.navigation.getMainContents(data);
      }
    }
    
  });
	
  lindab.ajax.events.set('categoryheader-item', function(options, data) {
    override = true;

    var item = options.element;
    var html = data.drilldownhtml;
    
    var drilldown = $('#lnd-drilldown');
		var holder = drilldown.find('.lnd-holder-drilldown');
    holder.find('ul').remove();
		holder.prepend(html);
    
    lindab.ui.navigation.drilldown('open', $('li.lnd-listitem-menu-drilldown'));
		
		lindab.bookmark.add(drilldown, item);
		
    if(data) {
      if(data.contentsData) {
				lindab.ui.navigation.getMainContents(data);
      }
    }
    
  });
  
  lindab.ajax.events.set('categoryheader-item-home-callback', function(options, data) {
    override = true;

    var item = options.element;
    //var html = data.drilldownhtml;
    
    //var holder = drilldown.find('.lnd-holder-drilldown');
    //holder.find('ul').remove();
    //holder.prepend(html);
    
    //lindab.ui.navigation.drilldown('open', $('li.lnd-listitem-menu-drilldown'));
    
    var drilldown = $('#lnd-drilldown');
    lindab.bookmark.add(drilldown, item);
    
    if(data) {
      if(data.contentsData) {
        lindab.ui.navigation.getMainContents(data);
      }
    }
    
  });
//  
//  lindab.ajax.events.set('breadcrumb-item', function(options, data) {
//    override = true;

//    var item = options.element;
//    var html = data.drilldownhtml;
//    
//    var drilldown = $('#lnd-drilldown');
//		var holder = drilldown.find('.lnd-holder-drilldown');
//    holder.find('ul').remove();
//		holder.prepend(html);
//    
//    var trigger = $('li.lnd-listitem-menu-drilldown');
//    var state = trigger.is(".lnd-listitem-menu-drilldown-active") ? 'close' : 'open';
//    lindab.ui.navigation.drilldown(state, trigger);

//    //lindab.ui.navigation.drilldown('open', trigger);
//    
//  });
//	
//  lindab.ajax.events.set('drilldown-precall', function(options) {
//    var item = $(this);
//    var level = item.parents(".lnd-level");
//    var drilldown = $('#lnd-drilldown');

//    if(!drilldown.data("active")) {
//      item.addClass("lnd-levelitem-loading");
//      drilldown.data("active",true);
//      // perform the ajax-request
//      lindab.ajax.request(options);

//      level.nextAll(".lnd-level").remove();
//      level.find(".lnd-levelitem").removeClass("lnd-levelitem-active lnd-levelitem-parent-active");
//      $("#lnd-drilldown .lnd-levelitem-active").addClass("lnd-levelitem-parent-active").removeClass("lnd-levelitem-active");
//      item.addClass("lnd-levelitem-active");
//      
//    }
//      
//  });
//	
//  lindab.ajax.events.set('drilldown-item', function(options, data) {
//		override = true;
//		
//    var item = options.element;
//    var level = item.parents(".lnd-level");
//		
//		if(data) {
//			if(data.drilldownhtml) {
//	      var html = data.drilldownhtml;
//	      level.after(html);
//				item.removeClass("lnd-levelitem-loading");
//			} else {
//				item.removeClass("lnd-levelitem-loading");
//			}
//		}
//    
//		// store to history
//    var container = $('#lnd-drilldown');
//    lindab.bookmark.add(container, item);
//		
//    if(data) {
//	  	if(data.contentsData) {
//				lindab.ui.navigation.getMainContents(data);
//			} else {
//				container.data("active",false);
//			}
//    } else {
//			container.data("active",false);
//		}
//		
//  });
//  
//  lindab.ajax.events.set('drilldown-bookmark', function(options, data) {
//    var html = data.drilldownhtml;
//    
//    var parent = $('#lnd-drilldown');
//    
//    if(parent.is(".lnd-drilldown-home")) {
//      
//    } else {
//    
//      var drilldown = parent.find('.lnd-holder-drilldown');
//      drilldown.find('ul').remove();
//      drilldown.prepend(html);
//      
//      lindab.ui.navigation.drilldown('open', $('li.lnd-listitem-menu-drilldown'));

//    }
//    
//    if(data) {
//      if(data.contentsData) {
//				lindab.ui.navigation.getMainContents(data);
//      }
//    }
//  });
//	
//  lindab.ajax.events.set('productcategory-tabs-precall', function(options) {
//    var elem = $(this);
//		if(!elem.parent().is(".active")) {
//			if(!elem.is(".lnd-tabcontents-loaded")) {
//				var $parent = $("#lnd-tabs-body");
//				var $loader = $('<div class="lnd-contentsloader"><span>'+lindab.ui.translation.getTranslation("loading")+'...</span></div>');
//				$parent.find(".lnd-tabcontents").addClass("lnd-loading");
//				$parent.prepend($loader);
//	      // perform the ajax-request
//	      lindab.ajax.request(options);
//			} else {
//		    var $parent = $("#lnd-tabs-body");
//		    $parent.find(".lnd-tabcontents").hide();
//		    $parent.find("." + options.tab).show();
//			}
//		}
//      
//  });
//	
//  lindab.ajax.events.set('productcategory-tabs-callback', function(options,data) {
//		var elem = options.element;
//		elem.addClass("lnd-tabcontents-loaded");
//		$html = $('<div class="lnd-tabcontents"></div>');
//		$html.html(data.tabshtml).addClass(options.tab);
//    var $parent = $("#lnd-tabs-body");
//    $parent.append($html);
//		$loader = $parent.find(".lnd-contentsloader");
//		$loader.fadeOut(250,function() {
//			$loader.remove();
//	    $parent.find(".lnd-tabcontents").removeClass("lnd-loading").hide();
//	    $parent.find("." + options.tab).show();
//	    //$(".lnd-image-rc",$parent).lndRoundedCorners();
//      $.bindLindabEvents($parent);
//		});
//  });
//	
//  lindab.ajax.events.set('productcategory-expand-precall', function(options) {
//    var elem = options.element;
//		if(elem.is(".lnd-expandable-loading")) { return false; }
//		elem.addClass("lnd-expandable-loading");
//		if(typeof(elem.data("url")) != "undefined") {
//			options.url = elem.data("url");
//		}
//		options.data = { 'url': options.url };
//    // perform the ajax-request
//    lindab.ajax.request(options);
//  });
//	
//  lindab.ajax.events.set('productcategory-expand-callback', function(options,data) {
//    var elem = options.element;
//		var parent = elem.parents(".lnd-row:first");
//    if(data) {
//      if(data.morehtml) {
//				var html = $(data.morehtml);
//				html.find(".lnd-module").hide();
//			  parent.before(html);
//				var modules = html.find(".lnd-module");
//				lindab.ui.animation.animateResultModules(modules);
//				//$(".lnd-image-rc",html).lndRoundedCorners();
//        $.bindLindabEvents(html);
//			}
//      if(data.nexturl) {
//				elem.data("url",data.nexturl);
//	    } else {
//				elem.remove();
//			}
//    }
//		elem.removeClass("lnd-expandable-loading");
//  });
//	
//  lindab.ajax.events.set('searchresult-products-expand-precall', function(options) {
//    var elem = options.element;
//    if(elem.is(".lnd-expandable-loading")) { return false; }
//    elem.addClass("lnd-expandable-loading");
//    if(typeof(elem.data("url")) != "undefined") {
//      options.url = elem.data("url");
//    }
//    options.data = { 'url': options.url };
//    // perform the ajax-request
//    lindab.ajax.request(options);
//  });
//  
//  lindab.ajax.events.set('searchresult-products-expand-callback', function(options,data) {
//    var elem = options.element;
//    var parent = elem.parents(".lnd-row:first");
//    if(data) {
//      if(data.morehtml) {
//        var html = $(data.morehtml);
//        html.find(".lnd-module").hide();
//        parent.before(html);
//        var modules = html.find(".lnd-module");
//        lindab.ui.animation.animateResultModules(modules);
//        //$(".lnd-image-rc",html).lndRoundedCorners();
//        $.bindLindabEvents(html);
//      }
//      if(data.nexturl) {
//        elem.data("url",data.nexturl);
//      } else {
//        elem.remove();
//      }
//    }
//    elem.removeClass("lnd-expandable-loading");
//  });
//  
//  lindab.ajax.events.set('documentlist-sort-precall', function(options) {
//    var elem = options.element;
//    var parent = elem.parents(".lnd-row-resulttable:first");
//    var namelink = parent.find(".lnd-sortorder-name:first");
//    var createdlink = parent.find(".lnd-sortorder-created:first");
//    if(options.sortcol == "name") {
//      if(typeof(namelink.data("nameurl")) != "undefined") {
//        options.url = namelink.data("nameurl");
//      }
//    } else if(options.sortcol == "created") {
//      if(typeof(createdlink.data("createdurl")) != "undefined") {
//        options.url = createdlink.data("createdurl");
//      }
//    }
//    options.data = { 'url': options.url };
//    // perform the ajax-request
//    lindab.ajax.request(options);
//  });
//  
//  lindab.ajax.events.set('documentlist-sort-callback', function(options,data) {
//    var elem = options.element;
//    var parent = elem.parents(".lnd-row-resulttable:first");
//    if(data) {
//      if(data.resulthtml) {
//        parent.html(data.resulthtml);
//      }
//    }
//  });
//  
//  lindab.ajax.events.set('documentlist-expand-precall', function(options) {
//    var elem = options.element;
//    if(elem.is(".lnd-expandable-loading")) { return false; }
//    elem.addClass("lnd-expandable-loading");
//    if(typeof(elem.data("url")) != "undefined") {
//      options.url = elem.data("url");
//    }
//    options.data = { 'url': options.url };
//    // perform the ajax-request
//    lindab.ajax.request(options);
//  });
  
//  lindab.ajax.events.set('documentlist-expand-callback', function(options,data) {
//    var elem = options.element;
//    var parent = elem.parents(".lnd-row-resulttable:first");
//    var namelink = parent.find(".lnd-sortorder-name:first");
//    var createdlink = parent.find(".lnd-sortorder-created:first");
//    var target = parent.find(".lnd-module-table-documents tbody:first");
//    if(data) {
//      if(data.morehtml) {
//        target.append(data.morehtml);
//      }
//      if(data.nameurl) {
//        namelink.data("nameurl",data.nameurl);
//      }
//      if(data.createdurl) {
//        createdlink.data("createdurl",data.createdurl);
//      }
//      if(data.nexturl) {
//        elem.data("url",data.nexturl);
//      } else {
//        elem.remove();
//      }
//    }
//    elem.removeClass("lnd-expandable-loading");
//  });
//  
//  lindab.ajax.events.set('searchresult-filter-precall', function(options) {
//    var elem = options.element;
//    var parent = $("#lnd-searchfilters");
//    var htmltarget = $("#lnd-searchresult .lnd-group-search");

//    if(elem.parent().is(".lnd-active")) { return false; }
//    
//    elem.trigger("activestate");

//    var typefilter = parent.data("typefilter");
//    if(!typefilter) {
//      typefilter = "all";
//    }
//    
//    var loader = $('<div class="lnd-contentsloader"><span>'+lindab.ui.translation.getTranslation("loading")+'...</span></div>');
//    htmltarget.addClass("lnd-loading");
//    $("#lnd-searchresult").prepend(loader);
//    
//    //options.url = elem.data("url");
//    options.data = { 'type' : typefilter };
//    
//    // perform the ajax-request
//    lindab.ajax.request(options);
//  });
//  
//  lindab.ajax.events.set('searchresult-filter-callback', function(options,data) {
//    var elem = options.element;
//    var htmltarget = $("#lnd-searchresult .lnd-group-search"); 

//    var loader = $("#lnd-searchresult").find(".lnd-contentsloader");
//    
//    loader.fadeOut(250,function() {
//      loader.remove();
//      htmltarget.html(data.searchhtml).removeClass("lnd-loading");
//      $.bindLindabEvents(htmltarget);
//    });
//  });
//  
//  lindab.ajax.events.set('stockdata-callback', function(options,data) {
//    var elem = options.element;
//    if(data) {
//      if(data.html) {
//        elem.prepend(data.html);
//      }
//    }
//  });
//  
//  lindab.ajax.events.set('inlineform-submit-callback', function(options,data) {
//    var elem = options.element;
//    if(data) {
//      if(data.resulthtml) {
//        elem.html(data.resulthtml);
//      }
//    }
//  });
//  
//  lindab.ajax.events.set('modalopen-callback', function(options,data) {
//    var elem = options.element;
//    if(data) {
//      $.modal(data,
//      {
//        'appendTo': "#document",
//        'closeHTML': '<a href="#" class="lnd-close">'+lindab.ui.translation.getTranslation("close")+'</a>',
//        'autoResize': true,
//        'overlayClose': true,
//        'minHeight': 300,
//        'maxHeight': 500,
//        'minWidth': 300,
//        'maxWidth': 500,
//        'onOpen': function(dialog)
//        {
//          dialog.overlay.fadeIn('fast', function() {
//            var modaltitle = $('<div class="lnd-modalheader"><h2 class="lnd-heading"></h2></div>');
//            modaltitle.find("h2").html(options.modaltitle); 
//            dialog.container.prepend(modaltitle);
//            dialog.container.show();
//            dialog.data.show();
//            $.bindLindabEvents(dialog.data);
//          });
//        },
//        'onClose': function(dialog)
//        {
//          dialog.data.hide();
//          dialog.container.hide();
//          dialog.overlay.fadeOut('fast', function () {
//            $.modal.close();
//          });
//        }
//      });
//    }
//  });
//  
//  lindab.ajax.events.set('modalopen-guide-callback', function(options,data) {
//    var elem = options.element;
//    if(data) {
//      $.modal(data,
//      {
//        'appendTo': "#document",
//        'closeHTML': '<a href="#" class="lnd-close">'+lindab.ui.translation.getTranslation("close")+'</a>',
//        'autoResize': true,
//        'overlayClose': true,
//        'minHeight': 300,
//        'maxHeight': 500,
//        'minWidth': 300,
//        'maxWidth': 500,
//        'onOpen': function(dialog)
//        {
//          dialog.overlay.fadeIn('fast', function() {
//            var modaltitle = $('<div class="lnd-modalheader"><h2 class="lnd-heading"></h2></div>');
//            modaltitle.find("h2").html(options.modaltitle); 
//            dialog.container.prepend(modaltitle);
//            dialog.container.show();
//            dialog.data.show();
//            $.bindLindabEvents(dialog.data);
//            var slhtml = lindab.guides.parseGuideList();
//            var html = $('<div class="lnd-formrow"><textarea class="lnd-formelement lnd-formelement-hidden" id="input-sl" name="input-sl">' + slhtml +'</textarea></div>');
//            dialog.data.find(".lnd-inlineform-fields").append(html);
//          });
//        },
//        'onClose': function(dialog)
//        {
//          dialog.data.hide();
//          dialog.container.hide();
//          dialog.overlay.fadeOut('fast', function () {
//            $.modal.close();
//          });
//        }
//      });
//    }
//  });
//  
//  lindab.ajax.events.set('newslist-expand-precall', function(options) {
//    var elem = options.element;
//    if(elem.is(".lnd-expandable-loading")) { return false; }
//    elem.addClass("lnd-expandable-loading");
//    if(typeof(elem.data("url")) != "undefined") {
//      options.url = elem.data("url");
//    }
//    options.data = { 'url': options.url };
//    // perform the ajax-request
//    lindab.ajax.request(options);
//  });
//  
//  lindab.ajax.events.set('newslist-expand-callback', function(options,data) {
//    var elem = options.element;
//    var parent = elem.parents(".lnd-newslist:first").find(".lnd-module-newslist ul:first");
//    if(data) {
//      if(data.morehtml) {
//        parent.append(data.morehtml);
//      }
//      if(data.nexturl) {
//        elem.data("url",data.nexturl);
//      } else {
//        elem.remove();
//      }
//    }
//    elem.removeClass("lnd-expandable-loading");
//  });
//	
//  lindab.ajax.events.set('productcategory-home-tabs-precall', function(options) {
//    var elem = $(this);
//    if(!elem.parent().is(".active")) {
//      if(!elem.is(".lnd-tabcontents-loaded")) {
//        var $parent = $("#lnd-tabs-body");
//        var $loader = $('<div class="lnd-contentsloader"><span>'+lindab.ui.translation.getTranslation("loading")+'...</span></div>');
//        $parent.find(".lnd-tabcontents").addClass("lnd-loading");
//        $parent.prepend($loader);
//        // perform the ajax-request
//        lindab.ajax.request(options);
//      } else {
//        var $parent = $("#lnd-tabs-body");
//        $parent.find(".lnd-tabcontents").hide();
//        var target = $parent.find("." + options.tab);
//        if(target.is(".lnd-tabcontents-guides")) {
//          $(".lnd-column-right").hide();
//          $(".lnd-maincontents-home .lnd-row-4col").removeClass("lnd-row-hide"); 
//        } else {
//          $(".lnd-column-right").show();
//          $(".lnd-maincontents-home .lnd-row-4col").addClass("lnd-row-hide");
//        }
//        target.show();
//      }
//    }
//      
//  });
  
//  lindab.ajax.events.set('productcategory-home-tabs-callback', function(options,data) {
//    var elem = options.element;
//    elem.addClass("lnd-tabcontents-loaded");
//    if(elem.is(".lnd-link-guides")) {
//      var $html = $('<div class="lnd-tabcontents lnd-tabcontents-guides"></div>');
//    } else {
//      var $html = $('<div class="lnd-tabcontents"></div>');
//    }
//    $html.html(data.tabshtml).addClass(options.tab);
//    var $parent = $("#lnd-tabs-body");
//    $parent.append($html);
//    $loader = $parent.find(".lnd-contentsloader");
//    $loader.fadeOut(250,function() {
//      $loader.remove();
//      $parent.find(".lnd-tabcontents").removeClass("lnd-loading").hide();
//      var target = $parent.find("." + options.tab);
//      if(target.is(".lnd-tabcontents-guides")) {
//        $(".lnd-column-right").hide();
//        $(".lnd-maincontents-home .lnd-row-4col").removeClass("lnd-row-hide"); 
//      } else {
//        $(".lnd-column-right").show();
//        $(".lnd-maincontents-home .lnd-row-4col").addClass("lnd-row-hide");
//      }
//      //$(".lnd-image-rc",$parent).lndRoundedCorners();
//      $.bindLindabEvents($parent);
//      target.show();
//    });
//  });
//  
//  lindab.ajax.events.set('subitem-home-precall', function(options) {
//    var elem = $(this);
//    if(!elem.parent().is(".active")) {
//      if(!elem.is(".lnd-tabcontents-loaded")) {
//        var $parent = $("#lnd-tabs-body");
//        var $loader = $('<div class="lnd-contentsloader"><span>'+lindab.ui.translation.getTranslation("loading")+'...</span></div>');
//        $parent.find(".lnd-tabcontents").addClass("lnd-loading");
//        $parent.prepend($loader);
//        // perform the ajax-request
//        lindab.ajax.request(options);
//      } else {
//        var $parent = $("#lnd-tabs-body");
//        $parent.find(".lnd-tabcontents").hide();
//        var target = $parent.find("." + options.tab);
//        if(target.is(".lnd-tabcontents-guides")) {
//          $(".lnd-column-right").hide();
//          $(".lnd-maincontents-home .lnd-row-4col").removeClass("lnd-row-hide"); 
//        } else {
//          $(".lnd-column-right").show();
//          $(".lnd-maincontents-home .lnd-row-4col").addClass("lnd-row-hide");
//        }
//        target.show();
//      }
//    }
//      
//  });
//  
//  lindab.ajax.events.set('subhome-item-callback', function(options,data) {
//    var elem = options.element;
//    elem.addClass("lnd-tabcontents-loaded");
//    if(elem.is(".lnd-link-guides")) {
//      var $html = $('<div class="lnd-tabcontents lnd-tabcontents-guides"></div>');
//    } else {
//      var $html = $('<div class="lnd-tabcontents"></div>');
//    }
//    $html.html(data.tabshtml).addClass(options.tab);
//    var $parent = $("#lnd-tabs-body");
//    $parent.append($html);
//    $loader = $parent.find(".lnd-contentsloader");
//    $loader.fadeOut(250,function() {
//      $loader.remove();
//      $parent.find(".lnd-tabcontents").removeClass("lnd-loading").hide();
//      var target = $parent.find("." + options.tab);
//      if(target.is(".lnd-tabcontents-guides")) {
//        $(".lnd-column-right").hide(); 
//        $(".lnd-maincontents-home .lnd-row-4col").addClass("lnd-row-hide");
//      } else {
//        $(".lnd-column-right").show();
//        $(".lnd-maincontents-home .lnd-row-4col").addClass("lnd-row-hide");
//      }
//      //$(".lnd-image-rc",$parent).lndRoundedCorners();
//      $.bindLindabEvents($parent);
//      target.show();
//    });
//  });
//  
//  lindab.states.set('debug',false);
//  lindab.states.set('document','loading');

  // Document ready
  $(function()
  {
    
    // Set GUI PATH
    if(typeof(LND_GUIPATH) != "undefined") {
      lindab.vars.set('guipath', LND_GUIPATH);
    } else {
      lindab.vars.set('guipath', '/');
    }

    // If Browser is MSIE, bind specific events
		if($.isBrowserIE() != false) {
		  $.bindMSIEEvents();
		} else {
      lindab.states.set('browser-capable',true);
		}

    // Bind events (those that will need re-binding after AJAX-inserting)
    $.bindLindabEvents();
    
    // Print Handler
    $.setupPrint();
    
    // Search navigation/filtering events
		$("#lnd-searchfilters").searchFilters();
    
		// Trigger Breadcrumb events if it's present in DOM onload
		lindab.ui.navigation.breadcrumb.activate();

		// Bind Guide Tools
		$("#guide-tools a").live("click",function() {
			$.guideToolsLink($(this));
		});
		
    // Bind Topmenu events		
    $("#lnd-topmenu .lnd-list").lndTopMenu();
		
		// General Ajax link handler
		$("a.lnd-ajaxlink").ajaxLink();
		
		// Tabs-handler
		lindab.ui.navigation.tabs($('ul.lnd-tabs'));
		
    // Print handler
    $(".lnd-link-print").live("click",function() {
      window.print();
      return false;
    });
    
    // Top link selector handlers
    $(".lnd-link-topselect").lindabTopSelect();
		
    // Input mem for Search bar
    $(".lnd-formelement-memory, #lnd-quicksearch-field:not('.lnd-input-search-nomem')").inputMemory();
    
    // Search autocomplete handlers
    //lindab.autocomplete.init();
    
//    // Modal events
//    $(".lnd-link-modal").live("click",function() {
//      lindab.ui.navigation.modalwindow($(this));
//      return false;
//    });
    
//    // Contact-selector
//    $(".lnd-module-box .lnd-contact .lnd-select-contact").live("change",function() {
//      var select = $(this);
//      var parent = select.parents(".lnd-contact");
//      var contacts = parent.metadata().contacts;
//      var id = 'contact-area-' + select.val();
//      var data = lindab.ui.navigation.contactselect.buildContacts(select,id,contacts[id]);
//      parent.find(".lnd-contact-details").html(data.html);
//      
//      $(".lnd-contact-navigation .lnd-nav-track-current",parent).html("1");
//      $(".lnd-contact-navigation .lnd-nav-track-total",parent).html(data.count);
//      if(data.count > 1) {
//        $(".lnd-contact-navigation",parent).addClass("lnd-contact-navigation-active");
//      } else {
//        $(".lnd-contact-navigation",parent).removeClass("lnd-contact-navigation-active");
//      }
//      return false;
//    });
//    
//    // New window handler    
//    $('a.lnd-link-external').live("click",function() {
//			$(this).attr("target","_blank");
//		});
//    
//    // Video tabs
//    lindab.ui.tools.mediatabs($(".lnd-module-mediatabs"));
//    
//    // Color picker events
//    lindab.ui.tools.colorpicker($(".lnd-colorpicker"));
//				
//    // Area selector handler
//    lindab.ui.tools.areaselector($(".lnd-module-areaselector"));
//    
//    // Lindab Stock info - fetches HTML from backend
//    lindab.ui.tools.stockinfo($("#lnd-stockinfo"));
//    
//    // Lindab Mini-tip - binds events to display minimal tooltip
//    $(".lnd-link-minitip").lindabMiniTip();
//    
//    // Tracking links
//    $(".lnd-tracklink").lindabTrackLink();

//		// history plugin init - check for hash and load ajax-contents depening on the bookmark
//		$.history.init(function(hash){
//      if(hash != "") {
//        // initialize your app
//        lindab.utils.log('jquery.history', 'found hash at load at document load', hash);
//        var bookmarkData = $('#lnd-drilldown').metadata().bookmarkData;
//        var data = lindab.bookmark.unSerialize(bookmarkData.prefix, hash);
//        
//				if(!override) {
//			  	lindab.ajax.request({
//			  		url: bookmarkData.url,
//			  		callback: 'drilldown-bookmark',
//			  		data: data
//			  	});
//  		  }
//        override = false;
//      }
//    },
//    { unescape: true });
//    
//    // Set state to ready - used internally
		lindab.states.set('document','ready');
		
  });
})(jQuery);
var lndTranslations =
{
  'global': {
    'loading': 'Loading',
    'close': 'Close',
    'needflash': 'You need to install Adobe Flash version 9 or later to see this movie.',
    'rotate': 'Rotate',
    'video': 'Video',
    'images': 'Images',
    'printurl': 'Web address'
  },
	'en': {
		'loading': 'Loading',
    'close': 'Close',
    'needflash': 'You need to install Adobe Flash version 9 or later to see this movie.',
    'rotate': 'Rotate',
    'video': 'Video',
    'images': 'Images',
    'printurl': 'Web address'
	},
	'sv': {
    'loading': 'Laddar',
    'close': 'Stäng',
    'needflash': 'Du måste installera Adobe Flash version 9 eller senare för att kunna se denna film.',
    'rotate': 'Rotera',
    'video': 'Video',
    'images': 'Bilder',
    'printurl': 'Webbadress'
	}
};
