var urlPrefix;
this.location.href.indexOf("html") == -1 ? urlPrefix = "/" : urlPrefix = "";

var applicationCoreImagesPath = urlPrefix + "Templates/_layouts/DGNG/ApplicationCore/Images/";

var topLoginAreaInputelementsCleared = new Array(3);
topLoginAreaInputelementsCleared[0] = false;
topLoginAreaInputelementsCleared[1] = false;
topLoginAreaInputelementsCleared[2] = false;

function topLoginAreaClearElementValue(element) {
	var topLoginAreaInputelements = document.getElementById("topLoginArea").getElementsByTagName("input");
	
	for (var i=0; i<topLoginAreaInputelements.length; i++) {
		if (element == topLoginAreaInputelements[i] && topLoginAreaInputelementsCleared[i] == false) {
			element.value = "";
			topLoginAreaInputelementsCleared[i] = true;
			return
		}
	}
	
}

var flyoutTimeout = 0;
var arrayWithFlyouts, flyoutElement;

function topLoginAreaMouseevent(status, idOfFlyoutElement) {
    clearTimeout(flyoutTimeout);
    allDivs = document.getElementById("rightAligned").parentNode.getElementsByTagName("div");
    arrayWithFlyouts = getDivsFromArrayFilteredBy(allDivs, idIsPartOf, "flyout", "pnlErrorMessage");
    flyoutElement = getDivsFromArrayFilteredBy(arrayWithFlyouts, idIsEquals, idOfFlyoutElement)[0];
	
    if (flyoutElement.style.display == "block" && status == 0) {
	    if (arguments.length > 2)
			setFlyoutTimeout(arguments[2]);
		else
			setFlyoutTimeout(400);
    } else if (status == 1) {
        resetDisplayOfFlyouts(arrayWithFlyouts);
        flyoutElement.style.display = "block";
    }
}

function getSubDivs(containerElement) {
    var container = document.getElementById(containerElement);

    if (container == null)
        return;

    return container.getElementsByTagName("div");
}

function getDivsFromArrayFilteredBy(arrayOfDivs, filterFunction) {
    var result = [];
    var resultIndex = 0;

    for (var i = 0; i < arrayOfDivs.length; i++) {
        for (var argumentNumber = 2; argumentNumber < arguments.length; argumentNumber++) {
            if (filterFunction(arrayOfDivs[i], arguments[argumentNumber])) {
                result[resultIndex++] = arrayOfDivs[i];
                break;
            }
        }
    }

    return result;
}

function setFlyoutTimeout(milliseconds){
	flyoutTimeout = setTimeout(topLoginAreaHideMouseoverFlyouts, milliseconds);
}

function idIsPartOf(elementToFilter, filter) {
    return elementToFilter.id.indexOf(filter) > -1;
}

function idIsEquals(elementToFilter, filter) {
    return elementToFilter.id == filter;
}

function resetDisplayOfFlyouts(arrayOfFlyoutDivs) {
    executeActionForEachElement(arrayOfFlyoutDivs, setDisplayTo, "none");
}

function executeActionForEachElement(arrayOfElements, action, actionArgument) {
    for (var i = 0; i < arrayOfElements.length; i++)
        action(arrayOfElements[i], actionArgument);
}

function setDisplayTo(div, value) {
    if (div != null)
        div.style.display = value;
}

function topLoginAreaHideMouseoverFlyouts() {
    flyoutElement.style.display = "none";
    var filteredResult = getDivsFromArrayFilteredBy(arrayWithFlyouts, idIsPartOf, "pnlErrorMessage");

    if (filteredResult != null && filteredResult.length > 0)
        filteredResult[0].style.display = "block";
}

function topNavigationAreaMouseevent(element, status) {

	if (navigator.userAgent.indexOf("MSIE 6") == -1) {
		return;
	}
	
	var listElements = element.parentNode.childNodes; //This will only work with IE, see browser detection above
	var typoImageElement = element.getElementsByTagName("img")[0];
	flyoutElement = element.getElementsByTagName("div")[0];
	
	if (listElements.length == 0 || typoImageElement == "undefined" || flyoutElement == "undefined") {
		return;
	}
	
	var elementBaseCssClass = element.className.split(" ")[0];
	
	if (flyoutElement.style.display == "block" && status == 0) {
		topNavigationAreaHideMouseoverFlyouts(element);
	} else if (status == 1) {
		flyoutElement.style.display = "block";
		element.className = elementBaseCssClass + " " + elementBaseCssClass + "hover";
	}
	
}

function topNavigationAreaHideMouseoverFlyouts(element) {
	var capsuleLinkElement = element.getElementsByTagName("a")[0];
	var elementBaseCssClass = element.className.split(" ")[0];
	var capsuleLinkUrlSubstrings = capsuleLinkElement.href.split("/");
	var currentUrlSubstrings = top.location.href.split("/");
	element.getElementsByTagName("div")[0].style.display = "none";
	
	//comparison of main site names
	if (capsuleLinkUrlSubstrings[4] != currentUrlSubstrings[4]) {
		element.className = elementBaseCssClass;
	} else {
		element.className = elementBaseCssClass + " " + elementBaseCssClass + "highlighted";
	}
	
}

function shopListingElementInfobutton(element, box1, box2, box3) {

    element.parentNode.className == "listingBox" ? element.parentNode.className = "listingBox listingBoxInfotext" : element.parentNode.className = "listingBox";
    var hiddenField1 = document.getElementById(box1);
    var hiddenField2 = document.getElementById(box2);
    var label = document.getElementById(box3);
		
    if (hiddenField1.value.toLowerCase().trim() == label.innerHTML.toLowerCase().trim()) {
        label.innerHTML = hiddenField2.value;
        return;
    }

    if (hiddenField2.value.toLowerCase().trim() == label.innerHTML.toLowerCase().trim()) {
        label.innerHTML = hiddenField1.value;
        return;
    } 
}

function shopIncreaseDecreaseFieldValue(element, direction) {
	var inputElement = element.parentNode.getElementsByTagName("input")[0];
	var inputElementValue = parseInt(inputElement.value, 10);
	
	if (((inputElementValue + "").match(/\d/) == null && direction == -1) || (inputElementValue <= 0 && direction == -1)) {
		inputElement.value = 0;
		return;
	}
	
	if ((inputElementValue + "").match(/\d/) == null && direction == 1) {
		inputElement.value = 1;
		return;
	}
	
	inputElement.value = (inputElementValue + direction);
}

function initializeImageCheckboxElements(areaId) {
	var checkboxOnclickAction = "checkboxOnclick(this)";
	var allInputElements = document.getElementById(areaId).getElementsByTagName("input");
	var imageNode, checkboxStatus;
	
	for (var i = 0; i < allInputElements.length; i++) {
		
		if (allInputElements[i].type == "checkbox") {
			allInputElements[i].style.display = "none";
			imageNode = document.createElement("img");
			allInputElements[i].checked ? checkboxStatus = "checked" : checkboxStatus = "neutral";
			imageNode.src = applicationCoreImagesPath + "form_replacementicon_checkbox_" + checkboxStatus + ".gif";
			imageNode.className = "checkboxImage";
			imageNode.alt = "";
			imageNode.onclick = new Function(checkboxOnclickAction);
			allInputElements[i].parentNode.insertBefore(imageNode, allInputElements[i]);
			if (allInputElements[i].nextSibling)
			    allInputElements[i].nextSibling.nodeName.toLowerCase() == "label" ? allInputElements[i].nextSibling.onclick = new Function(checkboxOnclickAction) : false;
		}
		
	}
	
}

function checkboxOnclick(element) {
	var checkboxImageElement, inputElement;
	
	if (element.nodeName.toLowerCase() == "img") {
		inputElement = element.nextSibling;
		checkboxImageElement = element;
	} else if (element.nodeName.toLowerCase() == "label") {
		inputElement = element.previousSibling;
		checkboxImageElement = inputElement.previousSibling;
	}
	
	if (inputElement.checked) {
		(element.nodeName.toLowerCase() == "label" && !document.all) ? false : inputElement.checked = false;
		checkboxImageElement.src = applicationCoreImagesPath + "form_replacementicon_checkbox_neutral.gif";
	} else {
		(element.nodeName.toLowerCase() == "label" && !document.all) ? false : inputElement.checked = true;
		checkboxImageElement.src = applicationCoreImagesPath + "form_replacementicon_checkbox_checked.gif";
	}
	
}

var areaIdForSelectboxElements;

function initializeSelectboxElements(areaId) {
	var IE6;
	(navigator.userAgent.indexOf("MSIE 6") != -1) ? IE6 = true : IE6 = false;
	areaIdForSelectboxElements = areaId;
	var documentOnclickAction = "selectboxCloseAll(this)";
	document.onclick = new Function(documentOnclickAction);
	var selectboxOnclickAction = "selectboxOnClick(this)";
	var allSelectboxElements = document.getElementById(areaId).getElementsByTagName("select");
	var listNode, listElementNode, anchorNode, textNode, divElementNode1, divElementNode2;
	
	for (var i = 0; i < allSelectboxElements.length; i++) {
		
		allSelectboxElements[i].style.display = "none";
		
		listNode = document.createElement("ul");
		
		for (var j = 0; j < allSelectboxElements[i].length; j++) {
			textNode = document.createTextNode(allSelectboxElements[i][j].text);
			anchorNode = document.createElement("a");
			listElementNode = document.createElement("li");
			listElementNode.onclick = new Function(selectboxOnclickAction);

			anchorNode.appendChild(textNode);
			listElementNode.appendChild(anchorNode);
			listNode.appendChild(listElementNode);
			
			if (listElementNode.previousSibling == null) {
				listElementNode.className = "firstListElement";
				listElementNode.firstChild.firstChild.replaceData(0, listElementNode.firstChild.firstChild.nodeValue.length, allSelectboxElements[i][allSelectboxElements[i].selectedIndex].text);
				j--;
				
				if (IE6) {
					listElementNode.className = listElementNode.className + " firstListElementIE6";
					anchorNode = document.createElement("a");
					anchorNode.className = "buttonLinkElement";
					listElementNode.appendChild(anchorNode);
				}
				
			} else {
				listElementNode.style.display = "none";
			}

		}
		
		divElementNode1 = document.createElement("div");
		divElementNode1.className = "cornerleft";
		divElementNode2 = document.createElement("div");
		divElementNode2.className = "cornerright";
		listElementNode = document.createElement("li");
		listElementNode.className = "borderbottom";
		listElementNode.appendChild(divElementNode1);
		listElementNode.appendChild(divElementNode2);
		listNode.appendChild(listElementNode);
		listNode.style.zIndex = (100 - i) + "";
		listNode.style.marginBottom = "0px";
		
		if (allSelectboxElements[i].nextSibling != null && allSelectboxElements[i].nextSibling.nodeName == "#text") {
			allSelectboxElements[i].parentNode.removeChild(allSelectboxElements[i].nextSibling);
		}
		
		allSelectboxElements[i].parentNode.appendChild(listNode);
	}
	
}

function selectboxOnClick(element) {
	var allListElements = element.parentNode.getElementsByTagName("li");
	var displayValue = "none";
	var marginBottom = "0px";
	
	if (element.parentNode.childNodes[0] == element && element.parentNode.style.marginBottom == "0px") {
		displayValue = "block";
		marginBottom = ((allListElements.length - 2) * -20) + "px";
	} else {
		selectboxSelectElement(element);
	}
	
	selectboxCloseAll(element);
	
	for (var i = 1; i < allListElements.length - 1; i++) {
		allListElements[i].style.display = displayValue;
	}
	
	element.parentNode.style.marginBottom = marginBottom;
}

function selectboxSelectElement(element) {
	var listElements = element.parentNode.childNodes;
	var selectElement = element.parentNode.previousSibling;
	
	for (var i = 1; i < listElements.length - 1; i++) {
		
		if (listElements[i] == element) {
			selectElement[i - 1].selected = true;
			listElements[0].firstChild.firstChild.replaceData(0, listElements[0].firstChild.firstChild.nodeValue.length, selectElement[selectElement.selectedIndex].text);
		}
	}
	
}

var selectboxClicked = false;

function selectboxCloseAll(element) {
	
	if (element.nodeName.toLowerCase() == "li") {
		selectboxClicked = true;
	} else {
	
		if (selectboxClicked) {
			selectboxClicked = false;
			return;
		}
		
	}

	var allUnorderedList = document.getElementById(areaIdForSelectboxElements);

	if (allUnorderedList == null)
	    return;

	var allUnorderedListElements = allUnorderedList.getElementsByTagName("ul");
	var allListElements;
	
	for (var i = 0; i < allUnorderedListElements.length; i++) {

	    if (allUnorderedListElements[i].previousSibling != null) {
	        if (allUnorderedListElements[i].previousSibling.nodeName.toLowerCase() == "select") {
	            allUnorderedListElements[i].style.marginBottom = "0px";
	            allListElements = allUnorderedListElements[i].getElementsByTagName("li");

	            for (var j = 1; j < allListElements.length - 1; j++) {
	                allListElements[j].style.display = "none";
	            }

	        }
	    }
		
	}
	
}

function initializeFAQs() {
	var contentColumnElement = document.getElementById("contentColumn");
	var areaHeadlines = contentColumnElement.getElementsByTagName("h2");
	var areaHeadlineLink, linkElement;
	
	for (var i = 0; i < areaHeadlines.length; i++) {
		areaHeadlineLink = areaHeadlines[i].getElementsByTagName("a")[0];
		linkElement = document.createElement("a");
		linkElement.className = "linkList";
		linkElement.href = "#" + areaHeadlineLink.id;
		linkElement.appendChild(document.createTextNode(areaHeadlineLink.firstChild.nodeValue));
		contentColumnElement.insertBefore(linkElement, contentColumnElement.getElementsByTagName("h2")[0]);
	}
	
	if (i < 8) {
		var spacerElement = document.createElement("div");
		spacerElement.style.height = (((7 - i) * 22) + 8) + "px";
		contentColumnElement.insertBefore(spacerElement, contentColumnElement.getElementsByTagName("h2")[0]);
	}
	
}

function changeExpandableTeaserStatus(element) {
	var elementDynamicTeaserBody = element.parentNode.parentNode.getElementsByTagName("div")[2];
	
	if (elementDynamicTeaserBody.style.display == "block") {
		elementDynamicTeaserBody.style.display = "none";
		element.className = "";
	} else {
		elementDynamicTeaserBody.style.display = "block";
		element.className = "expanded";
	}
}

//Bugfix to avoid execution of name.dll (from init.js)
function _dgngBodyOnLoadWrapper() {
    //Bugfix to avoid execution of name.dll (from init.js)
    EnsureIMNControl = function() {
        if (!bIMNControlInited) {
            IMNControlObj = null;
            bIMNControlInited = true;
        }
        return IMNControlObj;
    }
}

function autofocus(field, limit, next, evt) {
	evt = (evt) ? evt : event;
	
	var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
	  ((evt.which) ? evt.which : 0));

	if (evt.ctrlKey || evt.shiftKey || evt.altKey) {
		return;
	}
	
	if (charCode == 8 || charCode == 9 || charCode == 13 || charCode == 16 || charCode == 17 || charCode == 35 || charCode == 36 || charCode == 37 || charCode == 38 || charCode == 39 || charCode == 40 || charCode == 46) {
		return;
    }

    if (isTextSelected(field)) {
        return;
    }
	
	if (field.value.length == limit) {
	    field.form.elements[next].focus();
	    field.form.elements[next].select();
	}
}

// Bugfix to examine whether the test is selected
function isTextSelected(field) {
    var selectedText;
    // IE version
    if (document.selection != undefined) {
        field.focus();
        var sel = document.selection.createRange();
        selectedText = sel.text;
    }
    // Mozilla version
    else if (field.selectionStart != undefined) {
        var startPos = field.selectionStart;
        var endPos = field.selectionEnd;
        selectedText = field.value.substring(startPos, endPos)
    }
    if (selectedText != "") {
        return true;
    }
    return false;
}

//Bugfix to avoid page scrolling when using the mousewheel over a flash movie
function onMouseEntersFlash() {
	window.onscroll = function() {
		window.scrollTo(0, 0);
		return false;
	}
}

function onMouseLeavesFlash() {
	window.onscroll = function() {
		return false;
	}
}

var timeoutShowPdfLink = 0;
function showAjaxLoaderOnCLick(clickedElement) {

    if (timeoutShowPdfLink > 0) {
        clearTimeout(timeoutShowPdfLink);
        containerNode.style.display = "none";
        clickedElementGlobal.style.display = "block";
    }

    clickedElementGlobal = clickedElement;
    containerNode = document.createElement("div");
    containerNode.className = "ajaxLoaderImageContainer";
    var imageNode = document.createElement("img");
    imageNode.src = document.getElementById("ajaxLoaderPreloader").src;
    imageNode.title = "";
    imageNode.alt = "";
    containerNode.appendChild(imageNode);
    clickedElement.parentNode.insertBefore(containerNode, clickedElement);
    clickedElementGlobal.style.display = "none";
    timeoutShowPdfLink = setTimeout("containerNode.style.display = 'none'; clickedElementGlobal.style.display = 'block';", 8000);
}