var hTimer = null;
var sTimer = null;
var slideTime = 5000;
var fadeTime = 1000;
var ownurlpatt = /hm.edu/;  // local URL where no external window should open NOW
var inSubNav = false;
var measures = 0;
var spreader = 357; // Divider for Timstamps to further improve spamprotection

jQuery(document).ready(function() {
  //Timestamp when site is loaded. Needed for spamprotection
  measures = new Date().getTime() / spreader;    
  // do not display input form which is responsible for spam protection
  $("p[class*=msgcheck]").css("display","none");

  //read cookie to set up display of header
  if($.cookie('HM_HEADER')=='small' || $.cookie('HM_HEADER2')=='small') {
    toggleHeader(0); // function in mimimize_Header
  }

	//$("div[id^=content-nav] ul li div.subnav").hide();
	//$("div[id^=content-nav] ul li a").removeClass("selected");
	//$("#main-nav div.main-nav-layer").hide();
	$("#randomTeaser div[id^='rt'][id!='rt0']").hide();
	
// Manipulating external links to open in new window
// and adds extra information for the title to indicate opening in an external window
	$("a[@href^=http]")
		.not("[@href*='hm.edu']")
		.not("[@href*='fh-muenchen']")
		.bind("click", function() {
			$(this).attr("target", "_blank");
		})
		.attr("title", function() {
			return "external link - new window: " + $(this).attr("title");
		}
	);
	
	$("a[@href^=http][@href*='w3-o']")
		.bind("click", function() {
			$(this).attr("target", "_blank");
		})
		.attr("title", function() {
			return "external link - new window: " + $(this).attr("title");
		}
	);
	
	$("a[class*=zoomable]")
		.bind("click", function() {
			$(this).attr("target", "_blank");
		})
		.attr("title", function() {
			return "external link - new window: " + $(this).attr("title");
		}
	);
	
// Clears Search field when clicked, if default text is displayed
	$("input[@class=search-input]").click(
		function() {
			if($(this).attr("value")=="Suchbegriff" || $(this).attr("value")=="search term"){
				$(this).attr("value", "");
			}
		}
	);
	
// Add interaction to billboard-entries
  $("div[class='list-sort border-bottom'] select option").bind("click", function() {
    document.location.href=$(this).attr("value");
    });
  $("div[class='list-sort border-bottom'] select").bind("change", function() {
    document.location.href=$(this).attr("value");
    });


// SHORTCUT NAVIGATION
// show Layer
	$("#main-nav ul li a.main").mouseover(
		function () {
			// removes potentially remaining layers
			$("#main-nav div.main-nav-layer").hide();
			$("#main-nav ul li a[@class*=main ]").removeClass("selected");
			$("#main-nav ul li a[@class*=main ]").removeClass("selected-zweizeilig");


			if(hTimer != null){
			  window.clearTimeout(hTimer);
			  hTimer = null;

			}
			$(this).parents("li").find("div.main-nav-layer").show();
			$(this).toggleClass("selected");
		}
	);
	
	// if two rows
	/* unified to main, therefor not needed anymore
	$("#main-nav ul li a[@class=main-nav-image-zweizeilig]").mouseover(
		function () {
			// removes potentially remaining layers
			$("#main-nav div.main-nav-layer").hide();
			$("#main-nav ul li a[@class*=main-nav-image ]").removeClass("selected");
			$("#main-nav ul li a[@class*=main-nav-image-zweizeilig ]").removeClass("selected-zweizeilig");
			
			if(hTimer != null){
			  window.clearTimeout(hTimer);
			  hTimer = null;

			}
			$(this).parents("li").find("div.main-nav-layer").show();
			$(this).toggleClass("selected-zweizeilig");
		}
	); */
	
// hide layers when leaving navi
	$("#main-nav ul li a[@class*=main]").mouseout(
		//if($(this).parents("li").find("div.main-nav-layer").;
		function () {
			obj = $(this);

			hTimer = window.setTimeout(function(){obj.parents("li").find("div.main-nav-layer").hide(); obj.removeClass("selected"); obj.removeClass("selected-zweizeilig");}, 50);

		}
	);
	
	// if two rows
	/* unified to main, therefor not needed anymore
	$("#main-nav ul li a[@class=main-nav-image-zweizeilig]").mouseout(

		function () {
			obj = $(this);

			hTimer = window.setTimeout(function(){obj.parents("li").find("div.main-nav-layer").hide(); obj.removeClass("selected"); obj.removeClass("selected-zweizeilig");}, 50);

		}
	); */
	
// show layer
	$("#main-nav ul li div.main-nav-layer").mouseover(
		function () {
			if(hTimer != null){
			  window.clearTimeout(hTimer);
			  hTimer = null;

			}
		}
	);
	
// hide layers when leaving layer  (one and two rows)
	$("#main-nav ul li div.main-nav-layer").mouseout(
		function () {
			obj = $(this);
			hTimer = window.setTimeout(function(){obj.hide(); $("#main-nav ul li a[@class*=main]").removeClass("selected"); $("#main-nav ul li a[@class*=main]").removeClass("selected-zweizeilig");}, 50);

		}
	);

// PRIMARY NAVIGATION	
// show Layer
	$("div[id^=content-nav] ul li a").mouseover(
		function () {
			// if(hTimer != null){
		      // window.clearTimeout(hTimer);
		      // hTimer = null;
		    // }
			if(!inSubNav) {
				$("div.subnav").hide();
			}
			$(this).parent().find("div.subnav").show();
			//$(this).toggleClass("selected");
		}
	);
	
	// alternative for mouseleave
	// $("div[id^=content-nav] ul li").hover(
		// function() {}, // do nothing, when "over"
		// function() {
			// $(this).find("div.subnav").hide(); // hide when leaving <li>
		// }
	// );
	
// hide layers when leaving navi; using "mouseleave" instead of mouseout, cause latter is also fired when entering a child element
	$("div[id^=content-nav] ul").bind("mouseleave",
		function () {
			if(!inSubNav) {
				$(this).find("div.subnav").hide();
			}
			//$("div[id^=content-nav] div.subnav").hide();  //should be enough to vanish also when mouseout the subnav, cause it is a child
			//$("div[id^=content-nav] ul li a").removeClass("selected");
		}
	);
	
	// funtions for entering and leaving the submenu eincluding setting a flag for the ul not to hide submenus, when inside one of them
	$("div.subnav").mouseover(
		function() {
			inSubNav = true;
		}
	);
	
	$("div.subnav").bind("mouseleave", 
		function() {
			inSubNav = false;
			$(this).hide();
		}
	);
// show layer
	// $("div[id^=content-nav] ul li div.subnav").mouseover(
		// function () {
		    // if(hTimer != null){
		      // window.clearTimeout(hTimer);
		      // hTimer = null;
		    // }
		// }
	// );
// hide layers when leaving layer  
	// $("div[id^=content-nav] ul li div.subnav").mouseout(
		// function () {
		// //$("div[id^=content-nav] ul li div.subnav").hide();
		// //$("div[id^=content-nav] ul li a").removeClass("selected");
		// }
	// );	
//No Spam E-Mail links
    $('.emailLink').nospam({ replaceText: false });
	
//Random Teaser
	$("#randomTeaser").each(function() {
		rtArr = $(this).find("div[id^='rt']").get();
		sTimer = window.setTimeout(function(){divSlide(rtArr, 0);}, slideTime);
	});
	
// FS4search replace prepare search form
	$("#search form").append('<input type="button" class="search-submit" value="" onclick="replaceSearchString();"/>');
	$("input[class*='search-input']").keydown(function(event) {
		switch (event.keyCode) {
			case 13:
				replaceSearchString();
				break;
		}
	});
	
	// when loading (Result)Page replace created SearchTerm with entered one
	truncateSearchResult();
	
});

// Replaces value of search field for fs4search
function replaceSearchString() {
	basicStr = $("input[class*='search-input']").attr("value");
	resultStr = "keywords:"+basicStr+" description:"+basicStr+" title:"+basicStr+" content:"+basicStr;
	$("input[class*='search-input']").attr("value", resultStr);
	$("#search form").submit();
}

// truncate search result to hide generated string
function truncateSearchResult() {
	orgStr = ""+$("div[class='search-hits']").html();
	searchTerm = orgStr.substring(orgStr.indexOf("keywords:")+9, orgStr.indexOf("description:"));
	firstPart = orgStr.substring(0, orgStr.indexOf("keywords:"));
	lastPart = orgStr.substring(orgStr.lastIndexOf("content:")+8+searchTerm.length, orgStr.length);
	newStr = firstPart+" "+searchTerm+" "+lastPart;
	$("div[class='search-hits']").html(newStr);
}

// Functions for random Teaser slide show
function divSlide(rtDiv,pos) {
	var newPos = pos;
	if(pos < rtDiv.length-1) {
		crossFade($(rtDiv[pos]), $(rtDiv[pos+1]));
		newPos = pos+1;
	}
	else if (pos == rtDiv.length-1) {
		crossFade($(rtDiv[pos]), $(rtDiv[0]));
		newPos = 0;
	}
	sTimer = window.setTimeout(function(){divSlide(rtDiv, newPos);}, slideTime);
}

function crossFade(elem1, elem2) {
	elem1.fadeOut(fadeTime);
	elem2.fadeIn(fadeTime);
}

// if currentTime minus timestamp of site when loaded smaller then 10 secs set to false. For spam protection
function checkTimes(currTime) {
  if((currTime / spreader) - measures < (10000/spreader)) {
    return false;
  } else return true;
}