// FrameManager.js -- Must be added in Hosting window
var FrameManager = {
	currentFrameId : '',
	currentFrameHeight : 0,
	lastFrameId : '',
	lastFrameHeight : 0,
	resizeTimerId : null,

	init : function() {
		if (FrameManager.resizeTimerId == null) {
			FrameManager.resizeTimerId = window.setInterval(FrameManager.resizeFrames, 500);
		}
	},
	resizeFrames : function() {
		FrameManager.retrieveFrameIdAndHeight();
		if ((FrameManager.currentFrameId != FrameManager.lastFrameId) || (FrameManager.currentFrameHeight != FrameManager.lastFrameHeight)) {
			var iframe = document.getElementById(FrameManager.currentFrameId.toString());
			if (iframe == null) return;
			iframe.style.height = FrameManager.currentFrameHeight.toString() + "px";
			FrameManager.lastFrameId = FrameManager.currentFrameId;
			FrameManager.lastFrameHeight = FrameManager.currentFrameHeight;
			window.location.hash = '';
		}
		window.setTimeout("window.clearInterval(FrameManager.resizeTimerId)", 5000);
	},
	retrieveFrameIdAndHeight : function() {
		if (window.location.hash.length == 0) return;
		var hashValue = window.location.hash.substring(1);
		if ((hashValue == null) || (hashValue.length == 0)) return;
		var pairs = hashValue.split('&');
		if ((pairs != null) && (pairs.length > 0)) {
			for(var i = 0; i < pairs.length; i++) {
				var pair = pairs[i].split('=');
				if ((pair != null) && (pair.length > 0)) {
					if (pair[0] == 'frameId') {
						if ((pair[1] != null) && (pair[1].length > 0)) {
							FrameManager.currentFrameId = pair[1];
						}
					} else if (pair[0] == 'height') {
						var height = parseInt(pair[1]);
						if (!isNaN(height)) {
							FrameManager.currentFrameHeight = height;
							FrameManager.currentFrameHeight += 15;
						}
					}
				}
			}
		}
	},
	registerFrame : function(frame) {
		var currentLocation = location.href;
		var hashIndex = currentLocation.indexOf('#');
		if (hashIndex > -1) {
			currentLocation = currentLocation.substring(0, hashIndex);
		}
		frame.contentWindow.location = frame.src + '?frameId=' + frame.id + '#' + currentLocation;
	}
};
window.setTimeout(FrameManager.init, 300);

/*--- E-Mail Spam Protect ----------------------------------------------------*/

			// decrypt helper function
		function decryptCharcode(n,start,end,offset)	{
			n = n + offset;
			if (offset > 0 && n > end)	{
				n = start + (n - end - 1);
			} else if (offset < 0 && n < start)	{
				n = end - (start - n - 1);
			}
			return String.fromCharCode(n);
		}
			// decrypt string
		function decryptString(enc,offset)	{
			var dec = "";
			var len = enc.length;
			for(var i=0; i < len; i++)	{
				var n = enc.charCodeAt(i);
				if (n >= 0x2B && n <= 0x3A)	{
					dec += decryptCharcode(n,0x2B,0x3A,offset);	// 0-9 . , - + / :
				} else if (n >= 0x40 && n <= 0x5A)	{
					dec += decryptCharcode(n,0x40,0x5A,offset);	// A-Z @
				} else if (n >= 0x61 && n <= 0x7A)	{
					dec += decryptCharcode(n,0x61,0x7A,offset);	// a-z
				} else {
					dec += enc.charAt(i);
				}
			}
			return dec;
		}
			// decrypt spam-protected emails
		function linkTo_UnCryptMailto(s)	{
			location.href = decryptString(s,-2);
		}
