function c5_noop() {}

function c5_FX_DURATION() { return 400; }
function c5_BORDERBUFFER() { return 5; }

function c5_getLeft(refObj) {
	xPos=refObj.offsetLeft;
	parentObj=refObj.offsetParent;
	while(parentObj != null) {xPos +=parentObj.offsetLeft;parentObj=parentObj.offsetParent}
	return xPos;
}

function c5_getTop(refObj) {
	yPos=refObj.offsetTop;
	parentObj=refObj.offsetParent;
	while(parentObj != null) {yPos +=parentObj.offsetTop;parentObj=parentObj.offsetParent}
	return yPos;
}

function c5_addClass(element, value) {
	if (!element.className) {
		element.className = value;
	}
	else {
		var newClassName = element.className;
		newClassName += " ";
		newClassName += value;
		element.className = newClassName;
	}
}

function c5_printR(o, alertIt, indent) {
	if (typeof indent == "undefined")
		indent = "";
	var res = "";
	if (typeof o == "undefined")
		res = "undefined";
	else {
		var t = $type(o);
        var xDef = new Class({
		    initialize: function(str){
		        this.res = str;
		    }
		});
		var x = new xDef('');
		if (t=="array" || t=="object" || t=="collection") {
			o.each(function(elem,i) {
				var t2 = $type(elem);
				if (t2=="array" || t2=="object" || t2=="collection" || t2=="element") {
					this.res += (indent+"["+i+"] ***"+t2+"***\n");
					this.res += c5_printR(elem, false, indent+"    ");
				}
				else {
					this.res += (indent+"["+i+"] "+elem+"\n");
				}
			}, x);
			res = x.res;
		}
		else
			res = ""+o;
	}
	if (alertIt)
		alert(res);
	else
		return res;
}

function c5_getPreviousElementFromDOM(referenceObj, mustHaveTagname/*=true*/) {
	if (typeof mustHaveTagname == "undefined")
		mustHaveTagname = true;
	var c;
	var prevObj;
	var parentObj = referenceObj.parentNode;
	for (c=0;c<parentObj.childNodes.length;c++) {
		if (mustHaveTagname && typeof parentObj.childNodes[c].tagName=="undefined")
			continue;
		if (parentObj.childNodes[c].id==referenceObj.id) {
			return prevObj;
		}
		prevObj = parentObj.childNodes[c];
	}
	return null;
}

function c5_getNextElementFromDOM(referenceObj, mustHaveTagname/*=true*/) {
	if (typeof mustHaveTagname == "undefined")
		mustHaveTagname = true;
	var c;
	var realc = 0;
	var f = -1;
	var nextObj = null;
	var parentObj = referenceObj.parentNode;
	for (c=0;c<parentObj.childNodes.length;c++) {
		if (mustHaveTagname && typeof parentObj.childNodes[c].tagName=="undefined")
			continue;
//alert(parentObj.childNodes[c] + " | " + parentObj.childNodes[c].tagName + " | " + parentObj.childNodes[c].className)
		if (parentObj.childNodes[c].id==referenceObj.id)
			f = realc+1;
		if (realc==f)
			nextObj = parentObj.childNodes[c];
		realc++;
	}
	if (f==-1)
		return null;
	else
		return nextObj;
}

function c5_debugTrace(str) {
	$('c5debugSpecial').innerHTML = str;
}

function c5_debugTraceAdd(str) {
	$('c5debugSpecial').innerHTML = $('c5debugSpecial').innerHTML+"<br>"+str;
}

function c5_encode(str) {
	var res = encodeURIComponent(str);
	res = res.replace("'", "%27");
	return res;
}

function c5_resizeLayerInWindow(layerName, minHeight, lowerOffset) {
	if (typeof(minHeight)=='undefined')
		minHeight = 100;
	if (typeof(lowerOffset)=='undefined')
		lowerOffset = 15;
	var ws = window.getSize();
	var oc = $(layerName).getCoordinates();
	var newHeight = Math.max(minHeight, ws.y - oc.top - lowerOffset);
	$(layerName).setStyle('height', newHeight);
}

/****************************************************************************************************
* LINK-POPUP FUNCS
****************************************************************************************************/

var c5_removeLinkPopupTimeout = -1;
function c5_generateLinkPopup(contentId) {
	if (c5_removeLinkPopupTimeout!=-1) {
		clearTimeout(c5_removeLinkPopupTimeout);
		c5_removeLinkPopupTimeout = -1;
		return;
	}
	if ($chk($('c5globalLinkPopup')))
		Element.destroy($('c5globalLinkPopup'));
	var e = document.createElement("div");
	e.id = "c5globalLinkPopup";
	e.style.zIndex = 32000;
	e.style.position = 'absolute';
	e.style.display = 'none';
	e.innerHTML = $('c5content_'+contentId).innerHTML;
	document.body.appendChild(e);
	c5_repositionLinkPopup();
	stm_showLayer2('c5globalLinkPopup', c5_FX_DURATION()/2);
}

function c5_setPopupContent(contentId) {
	if (!$chk($('c5globalLinkPopup')))
		return;
	$('c5globalLinkPopup').innerHTML = $('c5content_'+contentId).innerHTML;
}

function c5_repositionLinkPopup() {
	if (!$chk($('c5globalLinkPopup')))
		return;
	var OFF = 10;
	$('c5globalLinkPopup').setStyles({
		'left':	(mouseX+OFF)+"px",
		'top': (mouseY+OFF)+"px"
	});
}

function c5_removeLinkPopup() {
	if (!$chk($('c5globalLinkPopup')))
		return;
	if (c5_removeLinkPopupTimeout!=-1) {
		clearTimeout(c5_removeLinkPopupTimeout);
		c5_removeLinkPopupTimeout = -1;
	}
	c5_removeLinkPopupTimeout = setTimeout('c5_removeLinkPopup2()', c5_FX_DURATION()/2+100);
}

function c5_removeLinkPopup2() {
	c5_removeLinkPopupTimeout = -1;
	stm_hideLayer2('c5globalLinkPopup', c5_FX_DURATION()/2);
}

var MAX_DUMP_DEPTH = 10;
function c5_dumpObj(obj, name, indent, depth) {
	if (typeof indent == "undefined")
		indent = "";
	if (typeof depth == "undefined")
		depth = 0;
	if (typeof name == "undefined")
		name = obj.id;
	if (depth > MAX_DUMP_DEPTH) {
		return indent + name + ": <Maximum Depth Reached>\n";
	}
	if (typeof obj == "object") {
		var child = null;
		var output = indent + name + "\n";
		indent += "   ";
		for (var item in obj)
		{
			try {
				child = obj[item];
			} catch (e) {
				child = "<Unable to Evaluate>";
			}
			if (typeof child == "object") {
				output += c5_dumpObj(child, item, indent, depth + 1);
			} else {
				output += indent + item + ": " + child + "(" + typeof(child) + ")\n";
			}
		}
		return output;
	} else {
		return obj;
	}
}

/****************************************************************************************************
* C5-AJAX-LOADING
****************************************************************************************************/

var c5_ajaxLoadCounter = 0;
var c5_ajaxLoadCounterUpdated = 0;
var c5_ajaxLoadTimeout = -1;
function c5_showAjaxLoad() {
	if (c5_ajaxLoadTimeout!=-1)
		return;
	c5_ajaxLoadTimeout = 1;
	c5_showAjaxLoadRun();
}

function c5_showAjaxLayer() {
	c5_ajaxLoadCounter += 1;
	c5_showAjaxLoad();
}

function c5_hideAjaxLayer() {
	setTimeout("c5_hideAjaxLayer2()", 1000);
}

function c5_hideAjaxLayer2() {
	c5_ajaxLoadCounter -= 1;
}

function c5_showAjaxLoadRun() {
	setTimeout("c5_showAjaxLoadRun()", 200);
	if (c5_ajaxLoadCounter==0 && c5_ajaxLoadCounterUpdated==c5_ajaxLoadCounter)
		return;
	if (c5_ajaxLoadCounter<=0) {
		$('c5_ajax_loading').style.display = "none";
	}
	else {
		$('c5_ajax_loading').style.display = "block";
		$('c5_ajax_loading').style.top = document.body.scrollTop + 10;
	}
	c5_ajaxLoadCounterUpdated = c5_ajaxLoadCounter;
}

/****************************************************************************************************
* activeX activator
****************************************************************************************************/

function c5_enableActiveX () {
	if (c5_getInternetExplorerVersion () != -1) {
		$each($$('.flash2activate'), function(e) {
			var html = e.innerHTML;
			e.innerHTML = html; // Write html back to container
		});
	}
}

function c5_getInternetExplorerVersion() {
	var rv = -1; // Return value assumes failure
	if (navigator.appName == 'Microsoft Internet Explorer') {
		var ua = navigator.userAgent;
		var re = new RegExp ("MSIE ([0-9]{1,}[\.0-9]{0,})");
		if (re.exec (ua) != null) {
			rv = parseFloat (RegExp.$1);
		}
	}
	return rv;
}
