/*! $Id: inline-windows.js 6700 2009-10-21 18:26:57Z bhillebrand $ */
/* Scripts for Draw-Window - Windows in HTML-Page integrated */
/* Jan 2008 by k.schaefer */

/* ------------------------ */
/* HANDLE INLINE-WINDOWS    */
/* ------------------------ */
/*global $: false, window: false */
"use strict";

/* Script makes a div-overlay visible and toggles images. Can used global; used e.g. in Wallpapers-Screensavers Download */
function drawWindowOverlay(thisnode, mode) {
	var selectNodeImage = thisnode.getElementsByTagName("img"),
		//selectNodeOverlay,
		hoverImage1 = new Image(),
		hoverImage2 = new Image(),
		setMode;

	hoverImage1.src = selectNodeImage[0].src;
	hoverImage2.src = selectNodeImage[1].src;

	if (mode === "show") {
		setMode = "visible";
		selectNodeImage[0].src = hoverImage2.src;
		selectNodeImage[1].src = hoverImage1.src;
	} else {
		setMode = "hidden";
		selectNodeImage[0].src = hoverImage2.src;
		selectNodeImage[1].src = hoverImage1.src;
	}
	//selectNodeOverlay = thisnode.getElementsByTagName("div");
	//eval("selectNodeOverlay[0].style.visibility='" + setMode + "'");
	$('div:eq(0)', thisnode).css('visibility', setMode);
}

/* Global Inline-Functions */
function activateInlineWindow(windowId) {
	var windowInsideHeight,
		overlayHeight,
		docHeight = 0,
		yPos,
		yOffset,
		xPos = document.body.offsetWidth - 800,
		xOffset = xPos / 2;


	if (xOffset <= 0) {
		xOffset = 0;
	}
	if (document.documentElement.clientHeight) {
		docHeight = document.documentElement.clientHeight;
	}
	else if (document.body.offsetHeight) {
		docHeight = document.body.offsetHeight;
	}
	yPos = docHeight - $(document.getElementById(windowId)).height();
	yOffset = yPos / 2;
	if (yOffset <= 0) {
		yOffset = 0;
	}
	if (window.pageYOffset) {
		yOffset += window.pageYOffset;

	} else if (document.body.scrollTop) {
		yOffset += document.body.scrollTop;
	} else if (document.documentElement.scrollTop) {
		yOffset += document.documentElement.scrollTop;
	}
	xOffset += "px";
	yOffset += "px";
	if (!document.getElementById('inlinewindowOverlay')) {
		$(document.body).append("<div id='inlinewindowOverlay'></div>");
	}

	windowInsideHeight = window.innerHeight;
	if (window.scrollMaxY) {
		windowInsideHeight += window.scrollMaxY;
	}
	if (!windowInsideHeight) {
		windowInsideHeight = document.body.clientHeight;
	} // IE mode

	$(document.getElementById('inlinewindowOverlay')).show();
	if (document.getElementsByTagName('body')[0].scrollHeight < windowInsideHeight) {
		overlayHeight = windowInsideHeight;
	}
	else {
		overlayHeight = document.getElementsByTagName('body')[0].scrollHeight;
	}

	document.getElementById('inlinewindowOverlay').style.height = overlayHeight + "px";


	$('#' + windowId).show().css({
		"top": yOffset,
		"left": xOffset,
		"z-index": "1000"
	});
	/*
	* if (!document.getElementById('inlinewindowOverlay')) {
	 * $(document.body).append('<div id="inlinewindowOverlay"
	 * style="height:100%;"></div>');
	 *  }
	 */
}

function deactivateInlineWindow(windowId) {
	/*
	 * $(document.getElementById(windowId)).fadeOut("fast", function () {
	 * $(document.getElementById('inlinewindowOverlay')).slideUp("fast");
	 * document.getElementById('inlinewindowOverlay').style.display='none'; } );
	 */
	$('#inlinewindowOverlay').remove();
	$(document.getElementById(windowId)).hide();
	$(document.getElementById(windowId)).attr({
		style : "top:128px;left:119px;"
	});
}

/*$(document).ready(function () {
	$(".draggable").draggable()
});*/


/*
 * loads an external file into the inline window via Ajax if the link has the
 * additional class "iwLoader" reads from the "href" attribute
 */
function iwLoadElementsFromFile(ref, motherElement, elements, options) {
	var request = $.ajax({
		url : ref,
		beforeSend : function () {
			if (options) {
				if (options.preloader && options.preloaderElement) {
					var img = "<img src='" + options.preloader + "' />";
					$("#" + motherElement + " " + options.preloaderElement).html(img);
				}
			}
		},
		success : function (p) {
			var i;
			for (i in elements) {
				if (elements.hasOwnProperty(i)) {
					$("#" + motherElement + " ." + i).html($(request.responseText).find(elements[i]).html());
					activateInlineWindow(motherElement);
				}
			}
			if (options) {
				if (options.iwTitle) {
					$("#" + motherElement + " .titleHeadline").text(options.iwTitle);
				}
			}
		},
		error : function (p) {
			if (options) {
				if (options.preloaderElement) {
					$(options.preloaderElement).text(request.status);
				}
			}
		}
	});

}

$(document).ready(function () {
	var ref;
	$(".activateInlineWindow").click(function () {
		var iwID = 'inlineWindow_' + $(this).attr("id"), iwTitle;
		
		activateInlineWindow(iwID);
		if ($(this).hasClass('iwTitle')) {
			iwTitle = $(this).attr("title");
		}
		if ($(this).hasClass('iwLoader')) {
			ref = $(this).attr('href');
			iwLoadElementsFromFile(ref, iwID, {
				"titleHeadline": "#iwPageHeadline",
				"contentText": "#iwPageCopy"
			},
			{
				"preloader" : "/assets/images/global/ajax-loader.gif",
				"preloaderElement" : ".contentText",
				"iwTitle" : iwTitle
			});
		}
		return false;
	});
	$(".deactivateInlineWindow").click(function () {
			deactivateInlineWindow('inlineWindow_' + ($(this).attr("id").replace(/(\w[^\n\r$]+)_/, ''))); //WARNING: Insecure '^'.
		});

	$(".activateInlineWindow,.generateMousePointer").attr({style : "cursor:pointer"});

});

function browseContinents(element) {
	var country = $(element).attr("id").replace("activate", "");
	$(element).parent().siblings().children().removeClass("continentActive");
	$(element).addClass("continentActive");
	$(document.getElementById("iwWorldWide" + country)).siblings().hide();
	$(document.getElementById("iwWorldWide" + country)).show();
}