jQuery(function () {
  //sync content and submenu heights
  var contentHeight = jQuery("#container div.content").innerHeight(),
      submenuHeight = jQuery("#submenu").innerHeight();
  if (contentHeight < submenuHeight) {
    jQuery("#container div.content").height(submenuHeight);
  }
  initProducts();
  initdivisionsTable();
  initSearch();
  initDivisionFilter();
  initContactDataList();
  makeColoumnsFromList(".content div.paragraph > ul.alphabetic",2,"alphabetic");
  makeColoumnsFromList(".content div.paragraph > ul.sitemap",1,"sitemap");
  //make external links open in a new window/tab
  var externalLinks=jQuery("a[href^=http],#productLinks a").bind("click",function(){
    window.open(this.href,'','');
    return false;
  });
  //add input text fields niceness
  jQuery("form input[type='text']").bind("focus", function () {
    if (this.value === this.defaultValue) {
      this.value = "";
    }
  }).bind("blur", function () {
    if (this.value === "") {
      this.value = this.defaultValue;
    }
  });
});
//makeColoumnsFromList - SLUT//
function makeColoumnsFromList(selector,numberOfColoumns,className){
  if(jQuery(selector).length===0){return;}
  var jList=jQuery(selector),
    jListItems=jList.children(),
    jListItemsLength=jListItems.length,
      itemsPrColoumn=Math.floor(jListItemsLength/numberOfColoumns),
      arrColoumn=[],
      countColoumns=0,
      countColoumnItems=0;
  for(var i=0;i<numberOfColoumns;i++){
    arrColoumn[i]={
      items:itemsPrColoumn,
      newColounmList:jQuery("<ul />").addClass(className).css({
        width:jList.outerWidth(true)/numberOfColoumns,
        float:"left"
      })
    }
  }
  for(var i=0;i<Math.floor(((jListItemsLength / numberOfColoumns) - itemsPrColoumn)*numberOfColoumns); i++){
    arrColoumn[i].items++;
  }
  jListItems.each(function(index,domEl){
    arrColoumn[countColoumns].newColounmList.append(jQuery(domEl));
    countColoumnItems++;
    if(countColoumnItems==arrColoumn[countColoumns].items){
      countColoumns++;
      countColoumnItems=0;
    }
  });
  for(var i=0;i<numberOfColoumns;i++){
    jList.before(arrColoumn[i].newColounmList);
  }
  jList.remove();
}
//makeColoumnsFromList - SLUT//

//DivisionFilter - START//
var selectCountry,selectArea,selectProduct,jDivisionOffices;
function initDivisionFilter(){
	//intern side til print - START	
	var internCountry = jQuery("#DivisionFilterIntern select[name=country]");
	internCountry.bind("change", function(){
		if(this.selectedIndex!=0){
			jQuery("ul#Divisions li").css("display","none");
			jQuery("ul#Divisions li."+this.value).css("display","block");
		}
	});
	internCountry.parent().parent().parent().parent().parent().css("height","100%");
	//intern side til print - SLUT	
	jDivisionOffices=jQuery("#DivisionOffices li");
	if(jDivisionOffices.length===0){
		return;
	}
	defaultSelectOptionText=jQuery("#DivisionFilter select[name=country] option:first").text();
	jDivisionOffices.each(function(index,domEl){
		var classNameDivisionOffice=trimToClassName(jQuery(domEl).attr("title")+","+jQuery(domEl).attr("class"));
		jQuery(domEl).attr("class",classNameDivisionOffice);
	});
	selectCountry=jQuery("#DivisionFilter select[name=country] option:first").attr("selected","selected").parent();
	resetSelect("#DivisionFilter select");
	var alphaCountryArray=[];
	jQuery("#DivisionData > ul:first li").each(function(index,domEl){
		alphaCountryArray.push(jQuery(this).attr("title"));
	});
	jQuery.each(alphaCountryArray.sort(),function(index,domEl){
		if(selectCountry.find("option[value='"+alphaCountryArray[index]+"']").length===0){ selectCountry.append("<option value='"+alphaCountryArray[index]+"'>"+alphaCountryArray[index]+"</option>"); }
	});
	selectCountry.bind("change",function(){
		resetSelect("#DivisionFilter select:not([name=country])");
		jDivisionOffices.removeClass("activeOffice");
		if(this.selectedIndex!=0){
			jQuery("#DivisionData > ul:last > li").each(function(){
				selectArea.append("<option value='"+jQuery(this).attr("title")+"'>"+jQuery(this).attr("title")+"</option>");	
			});
		}
	})
	selectArea=jQuery("#DivisionFilter select[name=area]").bind("change",function(){
		resetSelect(selectProduct);
		jDivisionOffices.removeClass("activeOffice");
		if(this.selectedIndex!=0){
			jQuery("#DivisionData > ul:last > li[title='"+this.value+"'] ul li").each(function(){
				selectProduct.append("<option value='"+trimToClassName(jQuery(this).attr("title"))+"'>"+jQuery(this).attr("title")+"</option>");		
			});
		}
	})
	selectProduct=jQuery("#DivisionFilter select[name=product]").bind("change",function(){
		if(this.selectedIndex!=0){
			var activeOfficeClass=trimToClassName("."+selectCountry.val()+"."+selectProduct.val());
			jDivisionOffices.each(function(index,domEl){
				var jOffice=jQuery(this);
				jOffice.toggleClass("activeOffice",jOffice.is(activeOfficeClass));
			});
		}
	})
}
var defaultSelectOptionText;
function resetSelect(selector){
	jQuery(selector).each(function(){
		jQuery(this).empty().append("<option>"+defaultSelectOptionText+"</option>");
	});
}
function trimToClassName(str){
	return String(str).replace(/ /gi,"").replace(/,/gi," ").toLowerCase();
}
//ContactDataList - START//
var selectContactCountry,selectContactArea,selectContactProduct;
function initContactDataList(){
	selectContactCountry=jQuery(".content .paragraph form select[name=Project_country]");
	if(selectContactCountry.length===0){
		return;
	}
	defaultSelectOptionText=jQuery(".content .paragraph form table table select:first option:first").text();
	resetSelect(".content .paragraph form table table select");
	var alphaCountryArray=[];
	jQuery("#ContactDataList > ul:first li").each(function(index,domEl){
		alphaCountryArray.push(jQuery(this).attr("title"));
	});
	jQuery.each(alphaCountryArray.sort(),function(index,domEl){
		selectContactCountry.append("<option value='"+alphaCountryArray[index]+"'>"+alphaCountryArray[index]+"</option>");
	});
	selectContactCountry.find("option:first").attr("selected","selected");
	
	selectContactArea=jQuery(".content .paragraph form select[name=Area_of_intrest]");
	jQuery("#ContactDataList > ul:last > li").each(function(index,domEl){
		selectContactArea.append("<option value='"+jQuery(this).attr("title")+"'>"+jQuery(this).attr("title")+"</option>");
	});
	
	selectContactProduct=jQuery(".content .paragraph form select[name=Product]");
	selectContactArea.bind("change",function(){
		resetSelect(selectContactProduct);
		if(this.selectedIndex!=0){
			//alert(jQuery("#ContactDataList ul > li[title^='"+this.value+"'] ul li").length)
			jQuery("#ContactDataList ul > li[title^='"+this.value+"'] ul li").each(function(){
				selectContactProduct.append("<option value='"+jQuery(this).attr("title")+"'>"+jQuery(this).attr("title")+"</option>");		
			});
		}
	})
}
//ContactDataList - SLUT//

//DivisionFilter - SLUT//


// Giver dig en parameter fra urlen
function getURLParam(strParamName) {
  return getParameterFromLink(strParamName, window.location.href);
}
// Giver dig en parameter fra et link
function getParameterFromLink(strParamName, link) {
  var strReturn = "";
  var strHref = link;
  if (strHref.indexOf("?") > -1) {
    var strQueryString = strHref.substr(strHref.indexOf("?"));
    var aQueryString = strQueryString.split("&");
    for (var iParam = 0; iParam < aQueryString.length; iParam++) {
      if (aQueryString[iParam].indexOf(strParamName + "=") > -1) {
        var aParam = aQueryString[iParam].split("=");
        strReturn = aParam[1];
        break;
      }
    }
  }
  return unescape(strReturn);
}

function redirectToUrl(url) {
  window.location.href = (new RegExp("^/|^http://").test(url) ? "" : "/") + url;
}

function initProducts() {
  var productLinks = jQuery("#productLinks"), paging = jQuery("#productInformation .paging");
  if (productLinks[0]) {
    parseLinkTypes(productLinks.find("a"));
  }
  if (paging[0]) {

    var activeGroup = jQuery("#submenu li.active li.active"), prevGroup = activeGroup.prev(), nextGroup = activeGroup.next();
    if (prevGroup[0]) {
      paging.children(".prev").attr("href", prevGroup.children("a").attr("href")).css("display", "block");
    }
    if (nextGroup[0]) {
      paging.children(".next").attr("href", nextGroup.children("a").attr("href")).css("display", "block");
    }
  }
}

function parseLinkTypes(links) {
  if (links[0]) {
    links.each(function () {
      var jQLink = jQuery(this), linkstr = jQLink.attr("href")
      handleLink(jQLink, linkstr);
	  jQLink.attr("href",linkstr.replace(/^(\/filer\/)/i,"/files/filer/"));
    });
  }
}

/* CoR Pattern START*/

function handleLink(jQLink, linkstr) {
  var bgPosition = handleFlickr(jQLink, linkstr.toLowerCase());
  jQLink.parent().css("backgroundPosition", bgPosition);

}
//FLICKR
function handleFlickr(jQLink, linkstr) {
  if (linkstr.indexOf("flickr.com") > -1) {
    return "10px -877px";
  }
  return handleYouTube(jQLink, linkstr);
}
//YOUTUBE
function handleYouTube(jQLink, linkstr) {
  if (linkstr.indexOf("youtube.com") > -1) {
    return "10px -1560px";
  }
  return handleSlideShare(jQLink, linkstr);
}
//SLIDESHARE
function handleSlideShare(jQLink, linkstr) {
  if (linkstr.indexOf("slideshare.net") > -1) {
    return "10px -1334px";
  }
  return handlePDF(jQLink, linkstr);
}
//PDF
function handlePDF(jQLink, linkstr) {
  if (/.pdf$/.test(linkstr)) {
    return "10px -193px";
  }
  return handleDoc(jQLink, linkstr);
}
//DOC/DOCX
function handleDoc(jQLink, linkstr) {
  if (/.doc$/.test(linkstr) || /.docx$/.test(linkstr)) {
    return "10px -422px";
  }
  return handlePpt(jQLink, linkstr);
}
//PPT/PPTX
function handlePpt(jQLink, linkstr) {
  if (/.ppt$/.test(linkstr) || /.pptx$/.test(linkstr)) {
    return "10px -1795px";
  }
  return handleRSS(jQLink, linkstr);
}
//RSS
function handleRSS(jQLink, linkstr) {
  if (false) {
    return "10px -2023px";
  }
  return handleAnything(jQLink, linkstr);
}
//ANYTHING ELSE
function handleAnything(jQLink, linkstr) {
  return "10px -649px";
}
//428
/* CoR Pattern END*/

/* Divsions START */
String.prototype.trim = function () { return this.replace(/^\s+|\s+$/, ''); };

var divisionsTable, dataListCols, dataListCol1;
function initdivisionsTable() {
  divisionsTable = jQuery("#DivisionsTable");
  if (divisionsTable[0]) {
    dataListCols = divisionsTable.find(".dataListCol");
    dataListCol1 = dataListCols.filter("#DataListCol1");
    addGroupHeaders();
    splitDataList();
    finalizeDataList();
  }
}

function addGroupHeaders() {
  var lastGroupHeader = "";
  dataListCol1.children().each(function (i) {
    var thisDD = jQuery(this);
    if (lastGroupHeader !== thisDD.attr("productgroups")) {
      lastGroupHeader = thisDD.attr("productgroups");
      thisDD.before("<dt>" + lastGroupHeader + "</dt>");
    }
  });
}

function finalizeDataList() {
  var lastEles = [];
  dataListCols.each(function (i) {
    var thisCol = jQuery(this);

    if (thisCol.children(":first")[0].tagName.toLowerCase() === "dd") {
      var lastDT = null;
      for (var y = i - 1; y >= 0; y--) {
        lastDT = jQuery(dataListCols[y]).children("dt:last");
        if (lastDT[0]) {
          break;
        }
      }
      thisCol.prepend(lastDT.clone());
    }

    //lastEles.push(thisCol.children(":last"));
  });

  //  for (var i = 0; i < lastEles.length; i++) {
  //    alert(lastEles[i][0].tagName.toLowerCase());
  //    if (lastEles[i][0].tagName.toLowerCase() === "dt") {
  //      lastEles[i].remove();
  //    }
  //  };
}

function splitDataList() {
  var totalHeight = dataListCol1.height(), columnHeight = totalHeight / 3 + 35;
  for (var i = 0; i < dataListCols.length - 1; i++) {
    var currentChildren = jQuery("#" + dataListCols[i].id).children(), heightCounter = 0;
    for (var y = 0; y < currentChildren.length; y++) {
      var thisChild = jQuery(currentChildren[y]);
      heightCounter += thisChild.outerHeight();
      if (columnHeight < heightCounter) {
        var grabFrom = y - 1;
        if (thisChild[0].tagName === "DD" && currentChildren[y - 1].tagName === "DT") {
          grabFrom = y - 2;
        } else if (thisChild[0].tagName === "DD") {
          thisChild.addClass("topItem");
        }
        jQuery(dataListCols[i + 1]).append(currentChildren.filter(":gt(" + grabFrom + ")"));
        break;
      }
    }
  }
}
/* Divsions END */

function initSearch() {
  var searchResult = jQuery("#SearchResult");
  if (searchResult[0]) {

    searchResult.find("a.searchLink[href*=&ProductID]").click(function () {
      //alert(findGroupLink(jQuery(this).attr("groupID")));
      
      if (jQuery(this).attr("grandparentGroup") === "GROUP10") {
        //alert(jQuery(this).attr("grandparentGroup"));
        window.location.href = "/en-GB/Home/Contact.aspx";
        return false;
      }
      window.location.href = findGroupLink(jQuery(this).attr("groupID"));

      return false;
    });
  }

}

function findGroupLink(groupID){
  var completeMenu = jQuery("#CompleteMenu");
  //alert(groupID);
  return completeMenu.find("a[href*=GroupID=" + groupID + "]").attr("href");
}

jQuery(window).bind("load", function() {
  var map_canvas=jQuery('#map_canvas');
  if(map_canvas.length===1){
    var googleMapsProducts = jQuery("#GoogleMapsProducts .googleMapsProduct[googleMapsCoordinates!=]");
    var markers = [];
    map_canvas.googleMaps({
      latitude: 41.380485,
      longitude: 2.12159,
      depth: 2,
	  markers: markers
    });
	setTimeout(function(){
		googleMapsProducts.each(function (i) {
		  var thisProduct = jQuery(this);
		  var coords = thisProduct.attr("googleMapsCoordinates").split(',');
		  markers.push({
			latitude: coords[0],
			longitude: coords[1],
			info: {
			  layer: "#" + thisProduct.attr("id")
			}
		  });
		});
		map_canvas.googleMaps({
		  latitude: 41.380485,
		  longitude: 2.12159,
		  depth: 2,
		  markers: markers
		});
	},500);
  }
});

function googleTranslateElementInit() {
  new google.translate.TranslateElement({
    pageLanguage: 'auto',
    autoDisplay: false
  }, 'google_translate_element2');
}



