/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getElementsByClassName/
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

var _blocklinks = {
	special: ['external','anchor','download'],
	init: function () {
		var lists = getElementsByClassName('block-link');
		for (var i=0;i<lists.length;i++) {

			var ul = lists[i].parentNode;
			if (!ul.done) {
				ul.className += ' js-active';
				ul.done = true;
			}
			var classes = lists[i].className;
			var classesHover = classes + ' hover';
			for (var j=0;j<this.special.length;j++) {
				if (classes.indexOf(this.special[j]) != -1) {
					classesHover = classes.replace(this.special[j],this.special[j]+'hover');
					break;
				}
			}
			lists[i].origClass = classes;			
			lists[i].hoverClass = classesHover;
			lists[i].onmouseover = function () {
				this.className = this.hoverClass;
			}
			lists[i].onmouseout = function () {
				this.className = this.origClass;
			}
			lists[i].onclick = function () {
				//Use onclick code if available, otherwise, use the href
				if(this.getElementsByTagName('a')[0].onclick){
					this.getElementsByTagName('a')[0].onclick();
				}else{
					var href = this.getElementsByTagName('a')[0].href;
					location.href = href;
				}
				return false;
			}
		}
	}
}


var inits = [
	'blocklinks'
];

function initializeAll() {
	for (var i=0;i<inits.length;i++) {
		if (window[inits[i]])
			window[inits[i]].init();
	}
}


/* DOMCONTENTREADY */
function ContentReady() {
	// quit if this function has already been called
	if (arguments.callee.done) return;

	// flag this function so we don't do the same thing twice
	arguments.callee.done = true;

	// kill the timer
	if (_timer) clearInterval(_timer);

	// do stuff
	initializeAll();
};

/* for Mozilla/Opera9 */
if (document.addEventListener) {
	document.addEventListener("DOMContentLoaded", ContentReady, false);
}

/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
	document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
	var script = document.getElementById("__ie_onload");
	script.onreadystatechange = function() {
		if (this.readyState == "complete") {
			ContentReady(); // call the onload handler
		}
	};
/*@end @*/

/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
	var _timer = setInterval(function() {
		if (/loaded|complete/.test(document.readyState)) {
			ContentReady(); // call the onload handler
		}
	}, 10);
}

/* for other browsers */
window.onload = ContentReady;

$(document).ready(function() {

	$(".hide-js").hide();
	$(".only-js").show();
	$(".form-field-info-message").hide();
	$('a.form-field-info-message-hint').css({'display':'block'});
	$('a.form-field-info-message-close').show({'display':'block'});
	
	/* custom div-dialog */
	$(".open-dialog").click(function(event){
		event.preventDefault();
		$("#dialog").show();
		$(".dialog-bg").show();
	});
	
	$(".dialog-bg").click(function(){
		$("#dialog").hide();
		$(".dialog-bg").hide();
	});
	
	$(".close-dialog").click(function(event){
		event.preventDefault();
		$("#dialog").hide();
		$(".dialog-bg").hide();
	});
	
	// open links in new window for xhtml compliance
	$('a.new-window').click(function(){        
		window.open(this.href);        
		return false;    
	});
	
	if ($('.toolbox').length) {
		$('#tool-print-page').click(function(e){
			e.preventDefault();
			window.print();      
			return false;    
		});
		$('.toolbox').show();
	}
	
	$('.widget').each(function(){        
		$(this).addClass("toggleable");    
	});
	
	$('.widget.toggleable h3').click(function(){
		$(this).next(".content").slideToggle("fast");
		$(this).toggleClass("collapsed");
	});
	
	// show hints for form
	$('a.form-field-info-message-hint').click(function(){        
		$(this).parent("div").next(".form-field-info-message").slideToggle();      
		return false;
	},
	function(){
			
			$(this).parent("div").next(".form-field-info-message").slideToggle();      
			return false;
			
	});
	
	// close hint box form
	$('a.form-field-info-message-close').click(function(){        
		$(this).parents(".form-field-info-message").slideToggle();      
		return false;    
	});
	

});
