﻿


/* INIT */

$(function () {
	if ($.browser.msie && $.browser.version < 8) {
		$("input[type=submit]").addClass("submit");
		$("input[type=text]").addClass("text");
		enableRoundedCornersFallback();
		enableLastClassOnSelectedElements();
	}

	IAR.Search.init();
	
	enableLinkLists();
	enableTabs();
	enableAccordion();
	enableMegaMenu();
	enableExpandableTableRows();
	enableExpansionButtonsInProductNews();
	enableQuickLinks();
	enableSyntaxHighlighting();
	enableSuggestOnEmbeddedWorkbench();
	enableSlideshow();
	enableElasticIframe();
	enableZebraTables();
	enableTagCloud();
	enableButtonsInFooter();
	enableResourcesFilterHelper();
	//enableEventFilterHelper();
	enableLinkButtonOnContactPage();
	enableStartPageSlideshow();
	enableColumnMinHeightOnTargetPages();
	enableKeyFiguresTable();
	enableArticleContainerListing();
});

   var IAR = IAR || {};

   IAR.Search = {
   	init: function () {
   		var tabs = $('#search-tabs li');
   		var result = $('#search-results li');
   		tabs.each(function (i) {
   			var tab = $(this);
   			var span = tab.find('span');
   			if (i != 0) {

   				var f1 = '.' + tab.attr('class');
   				var c = result.filter(f1).length;
   				span.html(c);
   			}
   			else {
   				IAR.Search.toggleClass(tab);
   				span.html(result.length);
   			}

   			tab.click(function () {
   				IAR.Search.toggleClass(tab);
   				var f2 = '.' + $(tab).attr('class');

   				if (f2.indexOf(' ') != -1) f2 = f2.split(' ')[0];
   				
   				if (f2 != '.all') {
   					IAR.Search.reset();
   					result.filter(f2).toggle();
   				} else {
   					IAR.Search.all();
   				}
   			});
   		});
   	},
   	reset: function () {
   		var result = $('#search-results li');
   		result.each(function () {
   			var item = $(this);
   			item.hide();
   		});
   	},
   	all: function () {
   		var result = $('#search-results li');
   		result.each(function () {
   			var item = $(this);
   			item.show();
   		});
   	},
   	toggleClass: function (elm) {
   		var className = 'active';

   		var tabs = $('#search-tabs li');
   		tabs.each(function () {
   			$(this).removeClass(className);
   		});

   		var tab = $(elm);
   		if (tab.hasClass(className)) {
   			tab.removeClass(className);
   		}
   		else {
   			tab.addClass(className);
   		}
   	}
   };

   /* ENABLE ARTICLE CONTAINER LISTING */
function enableArticleContainerListing() {
	$("body.article-container #content-main").find("li:odd").addClass("item-odd").end().find(":even").addClass("item-even").end();
}

/* ENABLE COLUMN MIN HEIGHT ON TARGET PAGES */

function enableColumnMinHeightOnTargetPages(){
	$(window).load(function () {
		columnMinHeightOnTargetPages();
	});
}
function columnMinHeightOnTargetPages() {
	$("#content-related div.has-company-logo").each(function () {
		var column = $(this);
		var columnHeight = column.height();
		var mainColumn = $("#content-main");

		if (mainColumn.height() < columnHeight) {
			mainColumn.after('<div class="push" style="float:left;width:0px;overflow:hidden;height:' + columnHeight + 'px"></div>');
		}
	});
}


/* ENABLE KEY FIGURES TABLE */

function enableKeyFiguresTable() {
	var keyFiguresTableWrapper = $("#keyfigures-table");

	keyFiguresTableWrapper.find("*").removeAttr("width");

	keyFiguresTableWrapper.find("tr td:first-child").wrapInner("<div class=\"table-header-wrapper\"></div>");

	keyFiguresTableWrapper.children("div").css("width", ((keyFiguresTableWrapper.find("table tr:first").children().length - 1) * 78 + 198) + "px");

	if ($.browser.msie && $.browser.version < 8) {
		keyFiguresTableWrapper.height(keyFiguresTableWrapper.find("table").height() + 50);
	}

	var keyFiguresTableClone = keyFiguresTableWrapper.find("table").clone();

	keyFiguresTableClone.find("tr td:not(:first-child)").remove();

	$("<div></div>").attr("id", "keyfigures-overlay-table").append(keyFiguresTableClone).insertAfter(keyFiguresTableWrapper);

	$("body.key-figures ul.key-figures-link-list input[type=\"radio\"]").click(function () {
		location.href = $(this).siblings("a").attr("href");
	});
}



/* ENABLE EVENT FILTER HELPER */

function enableEventFilterHelper() {
	$("body.event-list-page").each(function () {
		var body = $(document.body);

		var allTypesCheckbox = body.find("div.form-elements div.column-1 input");

		var typeCheckboxes = body.find("ul.resource-types input");

		allTypesCheckbox.change(function () {
			if (allTypesCheckbox.attr("checked")) {
				typeCheckboxes.attr("checked", false);
			}
		});

		typeCheckboxes.change(function () {
			if (typeCheckboxes.filter(":checked").length == 0) {
				allTypesCheckbox.attr("checked", true);
			} else {
				allTypesCheckbox.attr("checked", false);
			}
		});
	});
}



/* enableLastClassOnSelectedElements */

function enableLastClassOnSelectedElements() {
	var elements = $("#sub-nav li, #corporate-governance-tree li");

	elements.filter(":last-child").addClass("last");
}
 



/* enableStartPageSlideshow */

function enableStartPageSlideshow() {
	$("body.start-page #startpage-slideshow").each(function () {
		var slideshowContainer = $(this);

		var imageList = slideshowContainer.children("ul.images");

		if (imageList.children().length < 2) {
			return;
		}

		var markerList = $('<ul class="markers"/>').appendTo(slideshowContainer);

		imageList.children("li").each(function () {
			var item = $(this);

			var marker = $('<li/>').appendTo(markerList);

			item.data("marker", marker);
		});
		
		markerList.children().first().addClass("ui-state-active");

		imageList.wrap('<div/>');

		imageList.parent().jCarouselLite({
			auto: 10000,
			speed: 500,
			visible: 1,
			btnGo: $("#startpage-slideshow ul.markers li"),
			afterEnd: function (element) {
				markerList.children().removeClass("ui-state-active")

				var marker = element.data("marker");

				if (marker) {
					marker.addClass("ui-state-active");
				} else {
					markerList.children().first().addClass("ui-state-active");
				}
			}
		});
	});
}



/* ENABLE ROUNDED CORNERS FALLBACK */

function enableRoundedCornersFallback() {
	function addCorner(element, arg1, arg2) {
		element.append('<span class="corner corner-' + arg1 + ' corner-' + arg2 + ' corner-' + arg1 + '-' + arg2 + '"></span>');
	}

	$("a.link-button, div.tabs > ul:not(.tabs-nav) li, div.teaser").each(function () {
		var element = $(this);

		element.css("position", "relative");

		addCorner(element, "n", "e");
		addCorner(element, "s", "e");
		addCorner(element, "n", "w");
		addCorner(element, "s", "w");
	});
}



/* ENABLE LINK BUTTON ON CONTACT PAGE */

function enableLinkButtonOnContactPage() {
	$("body.contact-page").each(function () {
		var select = $("#content-main select");
		var button = $("#content-main button");

		function makeNewButton() {
			return $("<a/>")
			.text(button.text())
			.addClass("button")
			.attr("href", "#")
			.insertBefore(button);
		}

		var newButton = makeNewButton();
		button.remove();
		button = newButton;

		select.change(function () {
			var value = select.val();

			var newButton = makeNewButton();
			button.remove();
			button = newButton;

			if (value != "") {
				button.attr("href", "http://supp.iar.com/Purchase/?CountryCode=" + value).attr("target", "_blank");
			}
		});
	});
}



/* ENABLE RESOURCES FILTER HELPER */

function enableResourcesFilterHelper() {
	$("body.resources-page").each(function () {
		var body = $("#resources-body");

		var allTypesCheckbox = body.find("div.form-elements div.column-1 input");

		var typeCheckboxes = body.find("ul.resource-types input");

		allTypesCheckbox.change(function () {
			if (allTypesCheckbox.attr("checked")) {
				typeCheckboxes.attr("checked", false);
			}
		});

		typeCheckboxes.change(function () {
			if (typeCheckboxes.filter(":checked").length == 0) {
				allTypesCheckbox.attr("checked", true);
			} else {
				allTypesCheckbox.attr("checked", false);
			}
		});
	});
}




/* ENABLE BUTTONS IN FOOTER */

function enableButtonsInFooter(){
	$("#footer-top").each(function () {
		var container = $(this);

		var print = $("<span/>").addClass("icon icon-print").attr("tabindex", -1).click(function () { window.print(); }).appendTo(container);

		var share = $("<span/>")
		.addClass("icon icon-share")
		.focus(function () {
			$(this).children().show();
		})
		.blur(function () {
			$(this).children().hide();
		})
		.attr("tabindex", -1)
		.hover(function () {
			$(this).children().show();
		}, function () {
			$(this).children().hide();
		})
		.append(
			$("<div/>").append(
				'<ul class="share-this"><li class="facebook"><a href="http://www.facebook.com/share.php?u=' + encodeURIComponent(location.href) + '" target="_blank" title="Facebook">Facebook</a></li><li class="delicious"><a href="http://del.icio.us/post?url=' + encodeURIComponent(location.href) + '" target="_blank" title="Delicious">Delicious</a></li><li class="twitter"><a href="http://twitter.com/share?original_referer=' + encodeURIComponent(location.href) + '&amp;url=' + encodeURIComponent(location.href) + '" target="_blank" title="Twitter">Twitter</a></li><li class="linkedin"><a href="http://www.linkedin.com/shareArticle?url=' + encodeURIComponent(location.href) + '" target="_blank" title="LinkedIn">LinkedIn</a></li></ul>'
			)
		)
		.appendTo(container);

		var email = $("<a/>").addClass("icon icon-email").attr("tabindex", -1).attr("href", "mailto:?subject=Tip%20about%20IAR%20%20Systems&body=" + encodeURI(location.href)).appendTo(container);
	});
}



/* ENABLE TAG CLOUD */

function enableTagCloud() {
	$("body.embedded-workbench-product-page #right-column-teasers").each(function () {
		var container = $(this);

		$("div.teaser-tag-cloud span")
		.attr("tabindex", -1)
		.click(function () {
			container.find("div.qs-field input").val($(this).text());
			container.find("div.qs-button input").click();
		});
	});
}



/* ENABLE EXPANSION BUTTONS IN PRODUCT NEWS */

function enableExpansionButtonsInProductNews() {
	var productNewsContainer = $("body.ew-product-news-listing-page #content-main div.product-news");

	productNewsContainer.find("li > a")
	.addClass("expansion expansion-expanded")
	.click(function (event) {
		var link = $(this);

		link.toggleClass("expansion-expanded");

		link.next("div.content").slideToggle();

		event.preventDefault();
	})
	.not(":first")
	.click();
}



/* ENABLE ZEBRA TABLES */

function enableZebraTables(){
	$("body.insiders-page #content-main table tbody tr").filter(function () {
		return ($(this).index() + 1) % 2;
	}).addClass("odd");
}




/* ENABLE ELASTIC IFRAME */

function enableElasticIframe() {
//    $("#my-iframe").each(function () {
//        var iframe = $(this);
//    });
}



/* ENABLE SLIDESHOW */

function enableSlideshow() {
	$("div.slideshow").each(function () {
		var container = $(this);

		if (container.children("ul").children().length > 1) {
			container.jCarouselLite({
				auto: 3000,
				speed: 1000,
				visible: 1
			});
		}
	});
}



/* ENABLE SUGGEST ON EMBEDDED WORKBENCH */

function enableSuggestOnEmbeddedWorkbench() {
	$("#content-related div.teaser-search div.quick-search div.qs-field input").autocomplete({
		source: window.searchHits
	});
}



/* ENABLE SYNTAX HIGHLIGHTING */

function enableSyntaxHighlighting() {
	$("#content-main p.code").addClass("cm-s-default").each(function () {
		$(this).html($(this).html().replace(/<br[ ]?[\/]?>/g, "\n"));
		CodeMirror.runMode($(this).text(), "text/x-c++src", this);
	});
}



/* ENABLE QUICK LINKS */

function enableQuickLinks(){
	if ($.browser.msie) {
		$.fn.setQuickLinksPosition = function (animate) {
			var width = $(window).width();
			var element = this;

			var setRight = animate ? function (value) { element.stop().animate({ "width": value + "px" }, 100); } : function (value) { element.css("width", value + "px"); };

			var setPosition = function (value) {
				if (value != element.data("right")) {
					element.data("right", value);
					setRight(value);
				}
			}

			if (width < 975) return setPosition(0);

			if (width < 1050) return setPosition(10);

			if (width < 1260) return setPosition(44);

			return setPosition(130);
		}

		var element = $("#quicklinks");

		element.setQuickLinksPosition();

		$(window).resize(function () {
			element.setQuickLinksPosition(true);
		});
		
		element.hover(function (event) {
			element.animate({ width: 130 }, 100).data("right", 130);
		}, function (event) {
			element.setQuickLinksPosition(true);
		});
	}
}


/* ENABLE ACCORDION */

function enableAccordion() {
	if ($(document.body).is(".ew-product-news-listing-page")) {
		$("div.accordion")
		.accordion({
			animated: true,
			active: ":first",
			header: "h2",
			autoHeight: false,
			collapsible: true
		});
	} else {
		$("div.accordion")
		.accordion({
			animated: true,
			active: false,
			header: "h2",
			autoHeight: false,
			collapsible: true
		});
	}
}



/* ENABLE LINK LISTS */

function enableLinkLists(){
	$("#content-main ul").each(function(){
		var list = $(this);
		var items = list.children();

		var onlyLinks = true;

		items.each(function(){
			var item = $(this);

			var contents = item.contents();

			if(contents.length > 1 || !contents.is("a")){
				onlyLinks = false;
			}
		});

		if(onlyLinks){
			list.addClass("links");
		}
	});
}




/* ENABLE TABS */

function enableTabs() {
	$("div.tabs")
	.tabs({
		fx: [
			{ opacity: "toggle", duration: "fast" },
			{ opacity: "toggle", duration: "fast" }
		]
	});
}



/* ENABLE EXPANDABLE TABLE ROWS */

function enableExpandableTableRows(){
	var table = $("#expandable-table table");

	var expansionButton = $("<span/>").addClass("expansion-button").click(function () {
		var button = $(this);
		var row = button.closest("tr");
		row.nextUntil(":not(.level-2)").toggle();
		button.toggleClass("expansion-button-expanded");
	});

	var levelTwoWrapper = $("<span/>").addClass("wrapper");

	table.find("tbody tr").each(function () {
		var row = $(this);

		if (row.hasClass("level-2")) {
			return;
		}

		var firstCellContent = row.children().first().text();

		var nextRow = row.next();

		if (firstCellContent == nextRow.children().first().text()) {
			var rowClone = row.clone();

			var numberOfColumns = rowClone.children().length;

			rowClone.children().not(":first").remove();
			rowClone.children().first().wrapInner(expansionButton).attr("colspan", numberOfColumns);
			rowClone.insertBefore(row);

			row.addClass("level-2").hide().children().first().empty();

			do {
				if (firstCellContent == nextRow.children().first().text()) {
					nextRow.addClass("level-2").hide().children().first().empty();
				} else {
					break;
				}
			} while (nextRow = nextRow.next());
		}


	});
}



/* ENABLE MEGA MENU */ 

function enableMegaMenu() {
	var megaMenus = $("#main-nav div.mega-menu");
	var deferredAction;

	megaMenus.find("li:first-child a").addClass("first");

	function defer(action, timeout) {
		if (deferredAction) {
			clearTimeout(deferredAction);
		}

		deferredAction = setTimeout(action, timeout);
	}

	function showMegaMenu(menuItem) {
		var megaMenu = menuItem.next("div.mega-menu");

		if (megaMenu.length == 0) {
			return;
		}

		megaMenus.not(megaMenu).stop().css("height", "").hide();

		megaMenu.not(":visible").show();
	}

	function deferredShowMegaMenu(menuItem) {
		defer(function () {
			showMegaMenu(menuItem);
		}, 300);
	}

	function hideMegaMenu() {
		megaMenus.stop().hide();
	}

	function deferredHideMegaMenu() {
		defer(function () {
			hideMegaMenu();
		}, 100);
	}

	$("#main-nav > li").hover(function () {
		var menuItem = $(this).children("a");

		if (menuItem.siblings("div.mega-menu").length == 0) {
			deferredHideMegaMenu();
			return;
		}

		menuItem.addClass("mega-menu-enabled");

		deferredShowMegaMenu(menuItem);
	}, function () {
		var menuItem = $(this).children("a");

		menuItem.removeClass("mega-menu-enabled");

		deferredHideMegaMenu();
	});
}
