/**
 * Allgemeine JavaScript-Funktionen
 * @author ag
 * @version 2007-07-02
 */
function ly_functions()
{
	var app = this;

	/* Quelle für addEvent und removeEvent: http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html */
	app.addEvent = function(obj, type, fn)
	{
		if (obj.addEventListener)
		{
			obj.addEventListener(type, fn, false);
		}
		else if (obj.attachEvent)
		{
			obj["e"+type+fn] = fn;
			obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
			obj.attachEvent("on"+type, obj[type+fn]);
		}
	}

	app.removeEvent = function(obj, type, fn)
	{
		if (obj.removeEventListener)
		{
			obj.removeEventListener(type, fn, false);
		}
		else if (obj.detachEvent)
		{
			obj.detachEvent("on"+type, obj[type+fn]);
			obj[type+fn] = null;
			obj["e"+type+fn] = null;
		}
	}

	app.removeClass = function(old, remove)
	{
		var classes;
		var i;
		var f = null;

		if (!old) old = '';
		classes = old.split(' ');
		for (i = 0; i < classes.length; i++)
		{
			if (classes[i] == remove) f = i;
		}
		if (f != null) classes.splice(f, 1);
		return(classes.join(' '));
	}

	app.replaceClass = function(old, toreplace)
	{
		var classes;
		var i;
		var f = null;

		if (!old) old = '';
		classes = old.split(' ');
		for (i = 0; i < classes.length; i++)
		{
			if (classes[i] == toreplace) f = i;
		}
		if (f != null) classes[f] = toreplace;
		return(classes.join(' '));
	}

	app.addClass = function(old, toadd)
	{
		var classes;
		var i;
		var f = null;

		if (!old) old = '';
		classes = old.split(' ');
		for (i = 0; i < classes.length; i++)
		{
			if (classes[i] == toadd) f = i;
		}
		if (f == null) classes.push(toadd);
		return(classes.join(' '));
	}

	app.hasClass = function(classname, classes)
	{
		var class_strings;
		var i;

		if (!classes) classes = '';
		class_strings = classes.split(' ');
		for (i = 0; i < class_strings.length; i++)
		{
			if (class_strings[i] == classname) return(true);
		}
		return(false);
	}

	app.replaceImage = function(elem_id, img_src)
	{
		if (document.getElementById)
		{
			var elem = document.getElementById(elem_id);
			if (elem)
			{
				elem.src = img_src;
			}
		}
	}

	app.hideElem = function(elemName)
	{
		var elem;
		if (document.getElementById)
		{
			elem = document.getElementById(elemName);
			if (elem) elem.style['display'] = 'none';
		}
	}

	app.disable_element = function(name, mode)
	{
		var elem;

		if (mode == null) mode = true;
		elem = document.getElementById(name);

		if (elem)
		{
			elem.disabled = mode;
		if (mode == true && app.hasClass('text', elem.className))
			elem.className = app.addClass(elem.className, 'disabled');
		else
			elem.className = app.removeClass(elem.className, 'disabled');
		}
	}

	app.str_replace = function (QuellText, SuchText, ErsatzText)
	{
		if ((QuellText == null) || (SuchText == null)) { return null; }
		if ((QuellText.length == 0) || (SuchText.length == 0)) { return QuellText; }

		if ((ErsatzText == null) || (ErsatzText.length == 0)) { ErsatzText = ""; }

		var LaengeSuchText = SuchText.length;
		var LaengeErsatzText = ErsatzText.length;
		var Pos = String(QuellText).indexOf(SuchText, 0);

		while (Pos >= 0)
		{
			QuellText = QuellText.substring(0, Pos) + ErsatzText + QuellText.substring(Pos + LaengeSuchText);
			Pos = QuellText.indexOf(SuchText, Pos + LaengeErsatzText);
		}

		return QuellText;
	}

	app.parseFloat = function(value)
	{
		if (value)
		{
			value = app.str_replace(value, '.', '');
			value = app.str_replace(value, ',', '.');
			value = parseFloat(value);
		}
		return(value);
	}

	app.parseInt = function(value)
	{
		if (value)
		{
			value = app.str_replace(value, '.', '');
			value = app.str_replace(value, ',', '.');
			value = parseInt(value);
		}
		return(value);
	}

	app.intval = function(value)
	{
		if (!value) value = '';
		value = String(value);
		value.replace(/\./gi, '');
		value.replace(/\,/gi, '.');
		value = parseInt(value);
		if (isNaN(value)) value = 0;
		return(value);
	}

	// Number Format
	app.number_format = function (number, laenge, sep, th_sep)
	{
		var pre = "";

		if(number < 0)
		{
			pre = "-";
			number *= (-1)
		}

		number = Math.round( number * Math.pow(10, laenge) ) / Math.pow(10, laenge);
		var str_number = number+"";
		var arr_int = str_number.split(".");

		if(!arr_int[0]) arr_int[0] = "0";
		if(!arr_int[1]) arr_int[1] = "";
		if(arr_int[1].length < laenge)
		{
			nachkomma = arr_int[1];
			for(i=arr_int[1].length+1; i <= laenge; i++){	nachkomma += "0";	}
			arr_int[1] = nachkomma;
		}

		if(th_sep != "" && arr_int[0].length > 3)
		{
			var Begriff = arr_int[0];
			arr_int[0] = "";

			for(var j = 3; j < Begriff.length ; j+=3)
			{
				var Extrakt = Begriff.slice(Begriff.length - j, Begriff.length - j + 3);
				arr_int[0] = th_sep + Extrakt +  arr_int[0] + "";
			}

			var str_first = Begriff.substr(0, (Begriff.length % 3 == 0)?3:(Begriff.length % 3));
			arr_int[0] = str_first + arr_int[0];
		}

		return pre+arr_int[0]+sep+arr_int[1];
	}

	app.getOffsetTop = function(elem)
	{
		if (elem == null) return(null);
		if (elem.offsetParent == null)
			return(elem.offsetTop);
		else
			return(elem.offsetTop +app.getOffsetTop(elem.offsetParent));
	}

	app.getOffsetLeft = function(elem)
	{
		if (elem == null) return(null);
		if (elem.offsetParent == null)
			return(elem.offsetLeft);
		else
			return(elem.offsetLeft +app.getOffsetLeft(elem.offsetParent));
	}
}