/**
	extended javascript methods
	BDL Computer+Software Systemhaus GmbH
	Author: Nguyen Dai Duong
*/

if (Array.push == null) {
	Array.prototype.push = function(elem) {
		this[this.length] = elem;
	}
}
if (Array.pop == null) {
	Array.prototype.pop = function() {
		this.length--;
	}
}
if (Array.indexOf == null) {
	Array.prototype.indexOf = function(value) {
		for (var i=0; i<this.length; i++)
		if (this[i] == value) return i;
		return -1;
	}
}
if (Array.lastIndexOf == null) {
	Array.prototype.lastIndexOf = function(value) {
		for (var i=this.length-1; i>=0; i--)
		if (this[i] == value) return i;
		return -1;
	}
}
function arrColumnValues(Array2D, colno, skipNull) {
	if (skipNull==null) skipNull=false;
	var values=new Array();
	for (var i=0; i<Array2D.length; i++)
	if (Array2D[i][colno]==null) {
		if (!skipNull) values.push(null);
	} else {
		values.push(Array2D[i][colno])
	}
	return values;
}

if (String.trim == null) {
	String.prototype.trim = function(tleft, tright) {
		var st = this;
		if (tleft==null || tleft==true) {
			var i = 0;
			while (i<st.length && st.charCodeAt(i)<=32) i++;
			st = (i<st.length)?st.substr(i):"";
		}
		if (tright==null || tright==true) {
			i = st.length-1;
			while (i>=0 && st.charCodeAt(i)<=32) i--;
			st = (i>=0)?st.substr(0,i+1):"";
		}
		return st;
	}
}

function getParam(parname){
	var param=window.location.search;
	if (param!="") {
		param = param.substring(1).split("&");
		var p;
		for (var i=0; i<param.length; i++) {
			p = param[i].indexOf("=");
			if (p<0) p=param[i].length;
			if (param[i].substr(0, p)==parname) {
				return unescape(param[i].substr(p+1));
			}
		}
	}
	return null;
}

function isEmail(value) {
	if (window.RegExp) {
		var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
		var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
		var reg1 = new RegExp(reg1str);
		var reg2 = new RegExp(reg2str);
		return (!reg1.test(value) && reg2.test(value));
	} else {
		var a=value.indexOf("@");
		var p=value.lastIndexOf(".");
		var len=value.length;
		return (a>0 && a<p && p<len-2 && p>=len-4);
	}
}

function isDate(value, sep) {
	var monlen="0:31:28:31:30:31:30:31:31:30:31:30:31".split(":");
	if (sep==null) sep=".";
	var DateParts=value.split(sep);
	if (DateParts.length!=3) return false;
	for (var i=0; i<3; i++)
	if (isNaN(DateParts[i])) return false; else DateParts[i] = Number(DateParts[i]);
	if (DateParts[0]<1 || DateParts[0]>31) return false;
	if (DateParts[1]<1 || DateParts[1]>12) return false;
	if (DateParts[2]<1900 || DateParts[2]>2999) return false;
	if (DateParts[2]%4==0 && (DateParts[2]%100!=0 || DateParts[2]%400==0)) monlen[2]=29;
	return (DateParts[0]<=monlen[DateParts[1]]);
}
function isNumber(value, fpointchar) {
	if (fpointchar=="") fpointchar=",";
	var nvalue = (fpointchar==null || fpointchar==".")?value:eval("value.replace(/\\"+fpointchar+"/, '.')");
	if (nvalue.indexOf(".")==0 || (fpointchar==null && value.indexOf(".")>=0)) return false;
	return (!isNaN(nvalue));
}

function isFieldTrue(value) {
	var TRUE_VALUES=".true.wahr.y.yes.j.ja.1.-1.";
	return (Number(value)>0 || TRUE_VALUES.indexOf(("."+value+".").toLowerCase())>=0);
}
function isTime(objField){
	var fvalue=objField.value;
	var Err="";
	if (fvalue=="") {
		return true;
	}
	if (fvalue.length>5) Err="Prüffen Sie die Zeiteingabe!";
	fvalue=fvalue.replace(/\D/g,":");
	var zeit=fvalue.split(":");
	if (zeit[1]=="" || zeit[1]==null) zeit[1]="0";
	if (zeit[0]=="" || isNaN(zeit[1]) || isNaN(zeit[0])) Err+="Die Zeit soll im Format 'hh:mm' eingegeben werden!\n";
	zeit[0]=Number(zeit[0]);
	zeit[1]=Number(zeit[1]);
	if (zeit[1]>60 || zeit[0]>24) Err="Prüfen Sie die Korektheit der Zeiteingabe!\n";
	if (Err!="") {
		return false;
	}
	fvalue=(zeit[0]<10?"0":"")+zeit[0]+":"+(zeit[1]<10?"0":"")+zeit[1];
	objField.value=fvalue;
	return true;	
}
function openPopUp(theASP, aspName, features) {
		var win = window.open(theASP, aspName, features);
		win.focus();
		return win;
}
function convertNumberField(field, fieldtip, CommaToPoint){
	var Err="";
	if (CommaToPoint==null) CommaToPoint=true;
	var changed=false;
	var fvalue = field.value;
	if (fvalue=="") {
		Err += "Füllen Sie bitte das Feld "+fieldtip+" aus!\n";
		return Err;
	}
	var pos = fvalue.indexOf(",");
	if (pos>0) {
		fvalue=fvalue.replace(",",".");
		changed = true;
	}
	var pos = fvalue.indexOf(".");
	if (pos==0) {
		fvalue = "0"+fvalue;
		changed = true;
	}
	if (isNaN(fvalue)) {
		Err +="Prüffen Sie bitte das Feld "+fieldtip+"!\n";
		return Err;
	}
	if (!CommaToPoint) fvalue=fvalue.replace(".", ",");
	if (changed) field.value = fvalue;
	return "";
}
function getCurrPath() {
	var path = window.location.pathname;
	path = path.replace(/\\/g, "/");
	if (path.lastIndexOf("/")>0) {
		return path.substr(0, path.lastIndexOf("/"));
	}
	else
		return "";
}
function formatDate(adate) {
	if (adate==null) adate=new Date();
	var d=adate.getDate();
	var m=adate.getMonth()+1;
	return (d<10?"0":"")+d + "." + (m<10?"0":"")+m + "."+adate.getFullYear();
}
function DateFormat(textfeld){
	if (textfeld=="") return "";
	textfeld=textfeld.split(".");
	return textfeld[0]=(textfeld[0]<10?"0"+textfeld[0]:textfeld[0])+"."+(textfeld[1]<10?"0"+textfeld[1]:textfeld[1])+"."+textfeld[2];
}
function mathPower(base, expo) {
	return (base<=0)?0:(expo==0)?1:Math.exp(expo*Math.log(base));
}
function formatNumber(anumber, frac, commasign) {
	if (frac==null) { frac=0; commasign="";};
	if (commasign==null) commasign=",";
	if (anumber!=null && commasign!=".") anumber = (anumber+"").replace(commasign, ".");
	if (anumber==null || anumber=="" || isNaN(anumber)) anumber = "0"; 
	if (anumber==0) {
		if (frac>0) {
			anumber += ",";
			for (var i=0;i<frac;i++) anumber += "0";
		}
		return anumber;
	}
	var result = Math.round(Number(anumber)*mathPower(10, frac))+"";
	var len = result.length;
	return (len==frac?"0":"")+result.substr(0, len-frac)+commasign+result.substr(len-frac);
}