/* OPENWINDOW functions */
function centerWindowV (winHeight, menubar, status, directories, toolbar, location) {
	scrHeight = screen.availHeight;
	titlesize		= 31;
	menubarsize		= 48;
	statussize		= 20;
	directoriessize	= 29;
	toolbarsize		= 29;
	locationsize	= 29;
	winHeight += titlesize;
	if (menubar)		winHeight += menubarsize;
	if (status)			winHeight += statussize;
	if (directories)	winHeight += directoriessize;
	if (toolbar)		winHeight += toolbarsize;
	if (location)		winHeight += locationsize;
	winTop	= ((scrHeight-winHeight)/2);
	return winTop;
}

function centerWindowH (winWidth) {
	scrWidth  = screen.availWidth;
	windowBorders	=  12;
	winWidth		+= windowBorders;
	winLeft 		=  ((scrWidth-winWidth)/2);
	return winLeft;
}

function oCenterWin(url,title,winWidth,winHeight,menubar,status,directories,toolbar,location,scrollbars,resizable) {
	winTop	= centerWindowV (winHeight,menubar,status,directories,toolbar,location);
	winLeft = centerWindowH (winWidth);
	if (typeof winHandle != "undefined" && !winHandle.closed) winHandle.close();
	winHandle=top.open(url,title,'location='+(location?'yes':'no')+',toolbar='+(toolbar?'yes':'no')+',directories='+(directories?'yes':'no')+',status='+(status?'yes':'no')+',scrollbars='+(scrollbars?'yes':'no')+',menubar='+(menubar?'yes':'no')+',resizable='+(resizable?'yes':'no')+',width='+winWidth+',height='+winHeight+',height='+winHeight+',top='+winTop+',left='+winLeft);
	winHandle.focus();
}

function openSitemap(url) {
	winWidth	= 910;
	winHeight	= 730;
	oCenterWin(url, "SITEMAP", winWidth, winHeight, false, true, false, false, false, true, true);
}

function openExternalLink(url) {
	winWidth	= 800;
	winHeight	= 600;
	oCenterWin(url, "EXTERNALWIN", winWidth, winHeight, true, true, true, true, true, true, true);
}

/* Redirect POPUP */
function callRedirectPopup(url, height, width, toolbar, herkunftID, aktionsCode) {
	if (herkunftID==null)	herkunftID = '-1';
	if (aktionsCode==null)	aktionsCode = '';

	var Args = eval("'"+"width="+width+", height="+height+", toolbar="+toolbar+", location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1"+"'");
	m_window = window.open('../../menu/-1_eAXAWEB-POPUP-REDIRECT/index.html?ID='+url+'&HERKUNFTID='+herkunftID+'&AKTIONSCODE='+aktionsCode, 'm_window', Args);
	m_window.focus;
	if (m_window.opener == null) {
		m_window.opener = self;
		m_window.focus;
	}
}

function checkBrowser() {
	var BrowserName = navigator.appName;
	if (BrowserName == 'Microsoft Internet Explorer')
		return 'IE';
	else if (BrowserName == 'Netscape')
		return 'FF';
	else if (BrowserName == 'Opera')
		return 'OP';
	else
		return 'unknown';
}

function callVideoPopup(url, height, width, toolbar, herkunftID, aktionsCode) {
	if (herkunftID==null)	herkunftID = '-1';
	if (aktionsCode==null)	aktionsCode = '';

	var Args = eval("'"+"width="+width+", height="+height+", toolbar="+toolbar+", location=0,directories=0,modal=1,status=1,menubar=0,scrollbars=1,resizable=1"+"'");
	m_window = window.open(url, 'm_window', Args);
	m_window.focus;
	if (m_window.opener == null) {
		m_window.opener = self;
		m_window.focus;
	}
}

/* allgemein zum Formular oeffnen*/
function callFormularPopup(menuid, width, height, name, params ) {
    var url = "../../menu/"+menuid+"_yno/index.html"+params;
    window.open(url, name, "width="+width+",height="+height+",resizable=yes,scrollbars=yes,location=no,dependent=yes,menubar=no,status=no,toolbar=no");
    }

/* Menu POPUP */
function callMenuPopup(menuid, height, width, toolbar, aflaechenid, refframe, herkunftID, title) {
	var flaeche = "";
	if (aflaechenid!="" && aflaechenid!=null && aflaechenid!='undefined') {
		flaeche = "&aFlaechenID="+aflaechenid;
	}

	if (herkunftID==null) herkunftID = '-1';
	if (title==null) title='';
	var Args = eval("'"+"width="+width+", height="+height+", toolbar="+toolbar+", location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1"+"'");
	window.open("../../menu/"+menuid+"/index.html?HERKUNFTID="+herkunftID+flaeche, title, Args);
}



/* Kontakt POPUP */
function callKontaktPopup(menuid, testmodus, aflaechenid, refframe) {
	var flaeche = "";
	if (aflaechenid!="" && aflaechenid!=null && aflaechenid!='undefined') {
		flaeche = "&aFlaechenID="+aflaechenid;
	}
	window.open("../../menu/"+menuid+"/index.html?test="+testmodus+flaeche, "KontaktWin", "width=660,height=710,resizable=yes,scrollbars=yes,location=no,dependent=yes,menubar=no,status=yes,toolbar=no");
}

/* Kontakt POPUP Neu */
function callKontaktPopup2(menuid, testmodus, aflaechenid, refframe) {
	var flaeche = "";
	if (aflaechenid!="" && aflaechenid!=null && aflaechenid!='undefined') {
		flaeche = "&aFlaechenID="+aflaechenid;
	}
	window.open("../../menu/"+menuid+"/index.html?test="+testmodus+flaeche, "KontaktWin", "width=700,height=700,resizable=yes,scrollbars=yes,location=no,dependent=yes,menubar=no,status=yes,toolbar=no");
}

/* Kontakt POPUP fuer Antraege */
function callAntragPopup(menuid, testmodus, aflaechenid, refframe) {
    var flaeche = "";
    if (aflaechenid!="" && aflaechenid!=null && aflaechenid!='undefined') {
        flaeche = "&aFlaechenID="+aflaechenid;
    }
    window.open("../../menu/"+menuid+"/index.html?test="+testmodus+flaeche, "KontaktWin", "width=660,height=700,resizable=yes,scrollbars=yes,location=no,dependent=yes,menubar=no,status=yes,toolbar=no");
}


// Funktion fuer den Aufruf der Kontaktformular
function callKontaktPopupRefFrame(menuid) {
	window.open("../../menu/"+menuid+"/index.html?test=false", "KontaktWin", "width=630,height=600,resizable=yes,scrollbars=yes,location=no,dependent=yes,menubar=no,status=no,toolbar=no");
}

// Print-Vorschau
function printView(url, offline) {
    if (offline) {
		alert("Diese Funktion steht in der Offline-Version nicht zur Verfuegung.");
	} else {
		pop_up(url,'printview','650','550','yes','no');
	}
}

// Selectboxen URL-Jump Functions
function jumpQuickNavi (which) {
	url = which.options[which.selectedIndex].value;
	if (url!="#") {
		top.location.href=url;
	} else {
		which.selectedIndex = 0;
	}
}

function jumpPresseArchiv(which) {
	archivForm = which.form;
	year = which.options[which.selectedIndex].value;
	if (year!='0') {
		archivForm.submit();
	}
	which.selectedIndex = 0;
}

function submitStellenForm() {
	suchForm = document.suchform;
	if (suchForm.suchbegriffe.value.length > 0) {
		suchForm.companynames.selectedIndex = 0;
	}
	suchForm.submit();
}


/* POP UP OPENER functions */
/*	open urls in opener window */
function sendLinkToOpener(url) {
	try {
		if (window.opener) {
			if (window.opener.closed) {
				openExternalLink(url);
			} else {
				window.opener.location.href=url;
			}
			self.close();
		} else {
			openExternalLink(url);
		}
	} catch (e) {
	}
}

/* MAIL Popups */
function mailWin(url,title,sizeH,sizeV,scrollbars,noFocus) {
      if (scrollbars == null) scrollbars = 'yes';
      else scrollbars = 'no';
      winHandle = top.open(url,title,'toolbar=no,directories=no,status=yes,menubar=no,scrollbars=' + scrollbars + ',resizable=yes,width='+sizeH+',height='+sizeV);
      if (noFocus != true && navigator.appVersion.indexOf("MSIE 3",0) == -1) id = setTimeout('winHandle.focus()',1000);
}

function subMailto(to,id,subject,sublock)
	{
	 var surl="../../menu/-1_eAXAWEB-MAILTO_pneu/index.html?sendto="+to;
	 var sizeV=550;
	 var sizeH=640;
	 /*
	 if (to.toLowerCase()=='service@axa.de'){
	 	surl="../../menu/-1_eAXAWEB-MAILTO_pservice/index.html?sendto="+to;
	 	sizeV=720;
	 }
	 */

	 if (id!=null){
	    surl=surl+"&fromid="+id;
	 }
	 if (subject!=null){
	    surl=surl+"&subject="+subject;
	 }
	 if (sublock!=null){
	    surl=surl+"&sublock="+sublock;
	 }
	oCenterWin(surl, "SendMail", sizeH, sizeV, false, true, false, false, false, true, true);
}

// Hide Subject:
function subMailto2(to,id,subject,subhidden)
	{
	 var surl="../../menu/-1_eAXAWEB-MAILTO/index.html?sendto="+to;
	 var sizeV=550;
	 if (to.toLowerCase()=='service@axa.de'){
	 	surl="../../menu/-1_eAXAWEB-MAILTO_pservice/index.html?sendto="+to;
	 	sizeV=720;
	 }

	 if (id!=null){
	    surl=surl+"&fromid="+id;
	 }
	 if (subject!=null){
	    surl=surl+"&subject="+subject;
	 }
	 if (subhidden!=null){
	    surl=surl+"&subhidden="+subhidden;
	 }
	oCenterWin(surl, "SendMail", 630, sizeV, false, true, false, false, false, true, true);
}

// Hide Mailto:
function subMailto3(to,id,subject,mailtohidden)
	{
	 var surl="../../menu/-1_eAXAWEB-MAILTO/index.html?sendto="+to;
	 var sizeV=550;
	 if (to.toLowerCase()=='service@axa.de'){
	 	surl="../../menu/-1_eAXAWEB-MAILTO_pservice/index.html?sendto="+to;
	 	sizeV=720;
	 }

	 if (id!=null){
	    surl=surl+"&fromid="+id;
	 }
	 if (subject!=null){
	    surl=surl+"&subject="+subject;
	 }
	 if (subhidden!=null){
	    surl=surl+"&mailtohidden="+mailtohidden;
	 }
	oCenterWin(surl, "SendMail", 630, sizeV, false, true, false, false, false, true, true);
}

// Hide Mailto and Subject:
function subMailto4(to,id,subject,mailtohidden,subhidden)
	{
	 var surl="../../menu/-1_eAXAWEB-MAILTO/index.html?sendto="+to;
	 var sizeV=550;
	 if (to.toLowerCase()=='service@axa.de'){
	 	surl="../../menu/-1_eAXAWEB-MAILTO_pservice/index.html?sendto="+to;
	 	sizeV=720;
	 }

	 if (id!=null){
	    surl=surl+"&fromid="+id;
	 }
	 if (subject!=null){
	    surl=surl+"&subject="+subject;
	 }
	 if (mailtohidden!=null){
	    surl=surl+"&mailtohidden="+mailtohidden;
	 }
     if (subhidden!=null){
	    surl=surl+"&subhidden="+subhidden;
	 }
	oCenterWin(surl, "SendMail", 630, sizeV, false, true, false, false, false, true, true);
}

/* Seite weiterempfehlen */
function sendToFriend(id,subject)
	{
	 var surl="../../menu/-1_eAXAWEB-EMPFEHLUNG/index.html?fromid="+id;
	 var sizeV=550;

     if (subject!=null){
        surl=surl+"&subject="+subject;
     } else {
	    surl=surl+"&subject=Seite Weiterempfehlen";
     }

	oCenterWin(surl, "SendMail", 630, sizeV, false, true, false, false, false, true, true);
}

/* Seite weiterempfehlen: KFZ-Special */
function sendToFriendKfz(id,subject)
	{
	 var surl="../../menu/-1_eAXAWEB-KFZSPECIAL-EMPFEHLUNG/index.html?fromid="+id;
	 var sizeV=550;

     if (subject!=null){
        surl=surl+"&subject="+subject;
     } else {
	    surl=surl+"&subject=Seite Weiterempfehlen";
     }

	//oCenterWin(surl, "SendMail", 630, sizeV, false, true, false, false, false, true, true);
    window.location.href = surl;
}

// fuer Zurueck-Links, falls Anker in der URL springe 2 zurueck
function jumpHistoryBack() {
	if (window.location.hash)
		history.go(-2);
	else
		history.back();
}

// MY AXA Functions
function myaxa_win()
{
  self.name = "AxaPortal";
  myAxaWindow = window.open("../../menu/-1_eAXAWEB-POPUP-REDIRECT/index.html?ID=MyAxa", "MyAxa", "location=0,status=1,scrollbars=1,toolbar=0,resizable=1,width=1024,height=768");
  if (document.images) setTimeout("myAxaWindow.focus();",1000);
}

function myaxa_reg_win()
{
  self.name = "AxaPortal";
  myAxaWindow = window.open("../../menu/-1_eAXAWEB-POPUP-REDIRECT/index.html?ID=MyAxaRegister", "MyAxa", "location=0,status=1,scrollbars=1,toolbar=0,resizable=1,width=1024,height=768");
  if (document.images) setTimeout("myAxaWindow.focus();",1000);
}


/* copied from popup.js */
// -> diese Variable wird bei Aufruf eines Fensters immer zwischen 1 und 0 getauscht
// und ggf. an den Fensternamen angeh&auml;ngt, damit niemals derselbe Fenstername
// hintereinander aufgerufen wird
var WinNum;

// Definiert und Oeffnet ein Popup-Fenster, wechselt die Nummer des Fensters zwischen
// 0 und 1 und setzt falls m&ouml;glich den Focus -> wird von untenstehder Funktion aufgerufen
function neues_popup_definieren(url,name,breit,hoch,scroll,menubar) {
	var fname = name+WinNum;
	fenster = window.open(url,fname,'width='+breit+',height='+hoch+',toolbar=no,location=no,directories=no,status=no,menubar='+menubar+',scrollbars='+scroll+',resizable=yes,copyhistory=yes');
	if (WinNum==0) { WinNum=1; } else { WinNum=0; }
	if (typeof fenster != "undefined") { fenster.focus(); }
}

// Funktion zum Oeffnen eines EINZELNEN Popup-Fensters
// Existiert bereits ein Fenster UND ist dieses offen wird das bestehende
// Fenster zuerst geschlossen
function pop_up(url,name,breit,hoch,scroll,menubar) {
	if (typeof fenster == "undefined" || fenster.closed) {
		neues_popup_definieren(url,name,breit,hoch,scroll,menubar);
	} else {
		fenster.close();
		neues_popup_definieren(url,name,breit,hoch,scroll,menubar);
	}
}
// Standard-Popup mit fixer Größe und Namen
function std_pop_up(url) {
	pop_up(url,'axacontext','650','550','yes','no');
}

//PopUpfunktion mit fixen Windowname
function pop_up_name(url,name,breit,hoch,scroll,menubar) {
	fenster=window.open(url,name,'width='+breit+',height='+hoch+',toolbar=no,location=no,directories=no,status=no,menubar='+menubar+',scrollbars='+scroll+',resizable=yes,copyhistory=yes');
	fenster.focus();
}

// fullscreen on explorer
function launchFull(adress) {
	window.open(adress, "assistant", "fullscreen=1, left=0, top=0, menubar=no, resizable=no, status=no, scrollbars=no");
}



/* copied from changeclass.js */
onerror = stopError;
function stopError() {
	return true;
}

// aenderung der klassen wenn der browser DOM-faehig ist
function changeID(id,name) {
	if (document.getElementById)	{
		document.getElementById(id).className = name;
	}
}

function changeHIDE(){
	if (CH = 1) {
		changeID('tblist2','toolboxcontent-V');
		changeID('tb-nav2','toolboxnav-M');
    }
}

function restore()	{
	changeID('tblist1','toolboxcontent-H');
	changeID('tblist2','toolboxcontent-H');
	changeID('tb-nav1','toolboxnav');
	changeID('tb-nav2','toolboxnav');
}

function changeToolbox (suffix) {
	// aenderung der klassen wenn der browser DOM-faehig ist
	if (document.getElementById) {
		headlineClassName = document.getElementById("tb-nav"+suffix).className;
		if (headlineClassName.indexOf("-M")!=-1) {
			document.getElementById("tb-nav"+suffix).className	= "toolboxnav";
			document.getElementById("tblist"+suffix).className	= "toolboxcontent-H";
		} else {
			document.getElementById("tb-nav"+suffix).className	= "toolboxnav-M";
			document.getElementById("tblist"+suffix).className	= "toolboxcontent-V";
		}
	}
}

function changeSitemapLayer (suffix) {
	// aenderung der klassen wenn der browser DOM-faehig ist
	if (document.getElementById) {
		headlineClassName = document.getElementById("slayer"+suffix).className;
		if (headlineClassName.indexOf("-hide")!=-1) {
			document.getElementById("slayer"+suffix).className	= document.getElementById("slayer"+suffix).className.replace("-hide", "");
			document.getElementById("slayer-link"+suffix).className = document.getElementById("slayer-link"+suffix).className + "-hi";
			document.getElementById("slayer-arrow"+suffix).className = document.getElementById("slayer-arrow"+suffix).className + "-hi";
		} else {
			document.getElementById("slayer"+suffix).className	= document.getElementById("slayer"+suffix).className + "-hide";
			document.getElementById("slayer-link"+suffix).className = document.getElementById("slayer-link"+suffix).className.replace("-hi", "");
			document.getElementById("slayer-arrow"+suffix).className = document.getElementById("slayer-arrow"+suffix).className.replace("-hi", "");
		}
	}
}


// ------------------------------
// -- Test String Chars/Length --
// ------------------------------
function testString(string, check, lang)
{
  if (lang)
    if ((string.length)<lang)
      return false;

  for (i=0; i<string.length; i++)
  {
    if (check.indexOf(string.charAt(i))==-1)
    return false;
  }
  return true;
}

function testNaN(str)
{
  if(navigator.appVersion.indexOf("MSIE 3",0)==-1)
    return isNaN(str);
  else
  {
    for(i=0;i<str.length;i++)
      if(str.charAt(i)<'0' || str.charAt(i)>'9') return true;
    return false;
  }
}

// ----------------------------------
// -- Trim Leading/Trailing Spaces --
// ----------------------------------
function trimSpaces(string)
{
  while (string.charAt(0)==' ')
    string = string.substring(1);
  while (string.charAt(string.length-1)==' ')
    string = string.substring(0,string.length-1);
  return string;
}
// ------------------------------
// -- test valid Email         --
// ------------------------------
function isEMail(field) {
  	var string = getValue(field);
  	var atloc,dotloc,i,ch;

  	if (string.length<6)
  		return false;
  	atloc = string.indexOf('@');
  	dotloc = string.lastIndexOf('.');

  	if (atloc==-1 || dotloc==-1 || atloc>dotloc || (string.length-3)<dotloc) {
     	return false;
	}

  	if (string.indexOf('@',atloc+1)!=-1) {
  		return false;
  		}

  	for(i=0; i<string.length; i++) {
    	ch = string.charAt(i);
    	if (!((i<dotloc  && ch>='0' && ch<='9') || (ch>='A'   && ch<='Z') || (ch>='a'   && ch<='z') ||
    		(i<=dotloc && (ch=='.' || ch=='@' || ch=='-' || ch=='_' || ch=='+')))) {
      	return false;
      	}
  }

  return true;
}
// ------------------------------
// -- Return Integer Value     --
// ------------------------------
function pnParseInt(str)
{
  var i;
  for(i=0;i<str.length;i++)   // numeric?
    if(str.charAt(i)<'0' || str.charAt(i)>'9') return(null);
  while(str.charAt(0)=='0')   // trim leading zeros
    str = str.substring(1);
  if(str=="") return(0);      // empty string -> 0
  return(eval(str));          // parse value
}
// uses: pnParseInt
// ------------------------------
// -- Valid Date ?             --
// ------------------------------


function isDate(string)
{
  var i,d,m,y,dd,mm;
  if(string.length != 10) return false;
  for(i=0; i<10; i++)
  {
    if(i==2||i==5)
    {
      if(string.charAt(i)!='.') return false;
    }
    else
    {
      if(string.charAt(i)<'0' || string.charAt(i)>'9') return false;
    }
  }
  d = pnParseInt(string.substring(0,2));
  m = pnParseInt(string.substring(3,5));
  y = pnParseInt(string.substring(6));

  if(d==null||d<1||d>31) return false;
  if(m==null||m<1||m>12) return false;
  if(y==null||y<1850||y>2200) return false;

  var today = new Date("August 9, 1971 12:00:00");
  today.setYear(y);
  today.setDate(d);
  today.setMonth(m-1);
  dd = today.getDate();
  mm = today.getMonth()+1;

  if ((y%4==0) && (d==29) && (m==2)) return true;
  if ((y%4!=0) && (d==29) && (m==2)) return false;
  if ((d!=dd) || (m!=mm)) return false;
  return true;
}

// ------------------------------
// -- Create Assignable Date   --
// ------------------------------
function dateAssign(dateStr)
{
  if (dateStr)
  {
    var dd = dateStr.substring(0,2);  // extract day
    var mm = dateStr.substring(3,5);  // extract month
    var yy = dateStr.substring(6);    // extract year
    return yy+ ', ' +mm+ '-1, ' +dd;
  }
  else return '';
}
// uses: dateAssign
function higherDate(dateStr)
{
  var today = new Date();
  var dateStr = eval("new Date(" +dateAssign(dateStr)+ ", 23, 59, 59);");
  if (dateStr.getTime()<=today.getTime()) return false;
  else return true;
}

function trimTA(which,len)
{
  if (which.value.length>len) which.value = which.value.substring(0,len);
}


// ---------------------------------------
// -- Auswerten des Typs eines Objekts: --
// ---------------------------------------
function getType (obj)
    {
	typ = obj.type;

	if (typ != 'text'
    && typ != 'textarea'
    && typ != 'select-one'
    && typ != 'select-multiple'
    && typ != 'checkbox'
    && typ != 'hidden')
		{
		if (obj.length > 0)
			typ = obj[0].type;
		}
	return typ;
	}

// -----------------------------------------
// -- Auswerten des Wertes eines Objekts: --
// -----------------------------------------
function getValue (obj)
	{
   var i = 0;
    if (obj == null)
		return null;

	typ = getType(obj);
	if (typ == 'text')			return obj.value;
	if (typ == 'textarea')		return obj.value;
	if (typ == 'hidden')			return obj.value;
	if (typ == 'checkbox')		return obj.value;
	if (typ == 'select-one'	||
		typ == 'select-multiple')
		{
		if (obj.selectedIndex >= 0)
			return obj[obj.selectedIndex].value;
		}

	if (typ == 'radio')
		{
		for (i=0; i<obj.length; i++)
			{
			if (obj[i].checked)
				return obj[i].value;
			}
		}
	return null;
	}


// -----------------------------------------
// Check functions
function checkField(which,msg)
{
  if (which.type=='select-one')    return checkSelect(which,msg);
  else if (which.type=='text')     return checkText(which,msg);
  else if (which.type=='textarea') return checkText(which,msg);
  //else if (which.type=='checkbox') return checkCheck(which,msg);
  else if (which[0].type=='radio') return checkRadio(which,msg);
}

// Check for formfield value
function checkSelect(which,msg)
{
  if (which.selectedIndex==0)
  {
    alert(msg);
    which.focus();
    return false;
  }
  return true;
}

function checkText(which,msg)
{
  //alert("Check Text: "+which.name);
  if (!trimSpaces(which.value))
  {
    alert(msg);
    which.focus();
    return false;
  }
  return true;
}

function checkRadio(which,msg)
{
  var dummy = false;
  for (var i=0;i<which.length;i++)
    if (which[i].checked) dummy = true;
  if (!dummy)
  {
    alert(msg);
    which[0].focus();
    return false;
  }
  return true;
}

function checkPLZ(which,req)
{
  // which = formfield object; req = required? (true/false)
  if (!req) req = false;
  if (req && !which.value)
  {
    alert('Bitte geben Sie Ihre Postleitzahl an!');
    which.focus();
    return false;
  }
  else if (which.value && !testString(which.value,'0123456789',5))
  {
    alert('Bitte achten Sie auf die korrekte Form der Postleitzahl!');
    which.focus();
    return false;
  }
  return true;
}

function checkVorwahl(which,req)
{
  // which = formfield object; req = required? (true/false)
  if (!req) req = false;
  if (req && !which.value)
  {
    alert('Bitte geben Sie Ihre Vorwahl an!');
    which.focus();
    return false;
  }
  else if (which.value && !testString(which.value,'0123456789'))
  {
    alert('Bitte verwenden Sie nur Zahlen für die Angabe der Vorwahl!');
    which.focus();
    return false;
  }
  else if (which.value && which.value.length<3)
  {
    alert('Bitte achten Sie darauf, daß die angegebene Vorwahl mindestens 3-stellig ist!');
    which.focus();
    return false;
  }
    else if (which.value && which.value.charAt(0)!='0')
  {
    alert('Bitte achten Sie darauf, daß die angegebene Vorwahl mit der Ziffer "0" beginnt!');
    which.focus();
    return false;
  }
  return true;
}

function checkNummer(which,req,msg)
{
  // which = formfield object; req = required? (true/false)
  if (!msg) msg = 'Bitte verwenden Sie nur Zahlen für die Angabe der Rufnummer!';
  if (!req) req = false;
  if (req && !which.value)
  {
    alert('Bitte geben Sie Ihre Rufnummer an!');
    which.focus();
    return false;
  }
  else if (which.value && !testString(which.value,'0123456789'))
  {
    alert(msg);
    which.focus();
    return false;
  }
  return true;
}

function checkEmail(which,req)
{
  // which = formfield object; req = required? (true/false)
  if (!req) req = false;
  if (req && !which.value)
  {
    alert('Bitte geben Sie Ihre E-Mail Adresse an!');
    which.focus();
    return false;
  }
  else if (which.value && !isEMail(which))
  {
    alert('Bitte achten Sie auf die korrekte Form der E-Mail Adresse!');
    which.focus();
    return false;
  }
  return true;
}

function checkEmail2(which,req)
{
  // which = formfield object; req = required? (true/false)
  if (!req) req = false;
  if (req && !which.value)
  {
    alert('Bitte geben Sie die E-Mail Adresse des Empfängers an!');
    which.focus();
    return false;
  }
  else if (which.value && !isEMail(which))
  {
    alert('Bitte achten Sie auf die korrekte Form der E-Mail Adresse!');
    which.focus();
    return false;
  }
  return true;
}

function checkDatum(which,msg,req)
{
  // which = formfield object; req = required? (true/false)
  if (!req) req = false;
  if (req && !which.value)
  {
    alert(msg);
    which.focus();
    return false;
  }
  else if (which.value && !isDate(which.value))
  {
    alert('Bitte geben Sie ein korrektes Datum im Format TT.MM.JJJJ an!');
    which.focus();
    return false;
  }
  return true;
}

function checkFile(which,msg,req)
{
  if (!req) req = false;
  if (req && !which.value)
  {
    alert(msg);
    which.focus();
    return false;
  }

  var stest = which.value.toLowerCase();

  if (stest.length == 0) {
  	return true;
  }
  if (stest.length < 3) {
     alert("Geben sie den Dateinmane (mit Pfad) an, oder benutzen sie den Durchsuchen-Dialog" );
     return false;
  }
  var endung = stest.substr(stest.length-3,3);
  var sMime3 = " pdf doc";
  if (sMime3.indexOf(endung) < 0) {
      alert("Es können nur Dateien mit den Endungen " + sMime3 + " beigefügt werden" );
      return false;
   }
   sTemp = checkFileName(stest)
   if (sTemp != '') {
      alert("Ungültiger Dateiname!\nDas Zeichen '" + sTemp + "' ist nicht zulässig!");
      return false;
   }
   return true;
}

// -----------------------------------
// Dateiname auf Sonderzeichen prüfen
// -----------------------------------
function checkFileName(strg)
        {
        var i        = 0;
        var sTemp    = "";
        var sGueltig = "1234567890" +
                       "abcdefghijklmnopqrstuvwxyz" +
                       "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
                       "äöüÄÖÜß" +
                       " /-_.:@";


        for (i; i<strg.length;i++)
                {
                sTemp = strg.substring(i, i+1);

                if (sGueltig.indexOf(sTemp) == -1)
					{
                        if (sTemp != "\\")
                                return sTemp;
					}
                }

        return "";
        }



function checkKennzeichen(which,req)
{
  if (!req) req = false;
  if (req && !trimSpaces(which.value))
  {
    alert('Bitte geben Sie das Kennzeichen an!');
    which.focus();
    return false;
  }
  else if (!testOccurance(trimSpaces(which.value),'-',1) || !testString(trimSpaces(which.value),' ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-0123456789',4))
  {
    alert('Bitte achten Sie auf die korrekte Form des Kennzeichens!');
    which.focus();
    return false;
  }
  return true;
}

function formatMoney(which)
{

    dummy = cleanChars(which.value,'.');
    dummy = cleanChars(dummy,',','.');
    dummy = eval(dummy);
    dummy = Math.round(dummy*100);
    dummy = dummy.toString();
    if (dummy == '0')
      dummy = '000';
    dummy = dummy.substring(0,dummy.length-2) + ',' + dummy.substring(dummy.length-2);
    dummy = tausenderPunkt(dummy);
    if (dummy.charAt(0) == ',')
      dummy = '0'+dummy;
    which.value = dummy;

}

// valid without komma or with 2 digits after komma
function checkBetrag(which,req)
{
  var check ='0123456789';
  var status = true;
  var komma = false;
  var i;
  var vorkomma;
  var nachkomma;

  if (!req) req = false;
  if (req && !trimSpaces(which.value))
  {
    alert('Bitte geben Sie einen Betrag an!');
    which.focus();
    return false;
  }

  if (which.value.length > 0)
  {
    i = which.value.indexOf(',');
	if (i!=-1)
	    {
		vorkomma = which.value.substring(0,i);
		nachkomma = which.value.substring(i+1,which.value.length);
		if (vorkomma.length == 0)
			status=false;
        else
		 if (!testString(vorkomma,'0123456789'))
			status=false;
		 else
		  if (nachkomma.length < 2 || nachkomma.length > 2)
		    	status=false;
          else
		    if (!testString(nachkomma,'0123456789'))
			   status=false;
		}
	else
		{
		if (which.value && !testString(which.value,'0123456789'))
			status=false;
		}
  }
  if (!status)
  {
    alert('Bitte verwenden Sie das Format 0,00 für die Eingabe des Betrages!');
    which.focus();
  }

  return status;
}

// valid without komma or with 2 digits after komma, points are ignored
// (e.g. 1.200.300,40 as is in EvfpAngebotBauherren)
function checkBetrag2(which,req)
{
  var check ='0123456789';
  var status = true;
  var komma = false;
  var i;
  var vorkomma;
  var nachkomma;

  if (!req) req = false;
  if (req && !trimSpaces(which.value))
  {
    alert('Bitte geben Sie einen Betrag an!');
    which.focus();
    return false;
  }

  if (which.value.length > 0)
  {
    i = which.value.indexOf(',');
	if (i!=-1)
	    {
		vorkomma = which.value.substring(0,i);
		nachkomma = which.value.substring(i+1,which.value.length);
		if (vorkomma.length == 0)
			status=false;
        else
		 if (!testString(vorkomma,'0123456789.'))
			status=false;
		 else
		  if (nachkomma.length < 2 || nachkomma.length > 2)
		    	status=false;
          else
		    if (!testString(nachkomma,'0123456789'))
			   status=false;
		}
	else
		{
		if (which.value && !testString(which.value,'0123456789'))
			status=false;
		}
  }
  if (!status)
  {
    alert('Bitte verwenden Sie das Format 0,00 für die Eingabe des Betrages!');
    which.focus();
  }

  return status;
}

// valid without komma or with 1 digit after komma
function checkWert(which,req)
{
  var check ='0123456789';
  var status = true;
  var komma = false;
  var i;
  var vorkomma;
  var nachkomma;

  if (!req) req = false;
  if (req && !trimSpaces(which.value))
  {
    alert('Bitte geben Sie einen Wert an!');
    which.focus();
    return false;
  }

  if (which.value.length > 0)
  {
    i = which.value.indexOf(',');
	if (i!=-1)
	    {
		vorkomma = which.value.substring(0,i);
		nachkomma = which.value.substring(i+1,which.value.length);
		if (vorkomma.length == 0)
			status=false;
        else
		 if (!testString(vorkomma,'0123456789'))
			status=false;
		 else
		  if (nachkomma.length != 1)
		    	status=false;
          else
		    if (!testString(nachkomma,'0123456789'))
			   status=false;
		}
	else
		{
		if (which.value && !testString(which.value,'0123456789'))
			status=false;
		}
  }
  if (!status)
  {
    alert('Bitte verwenden Sie das Format 0,0 für die Eingabe des Wertes!');
    which.focus();
  }

  return status;
}

// valid Timeformat 00:00
function checkTime(which,req)
{
  var check ='0123456789';
  var status = false;

  if (!req) req = false;

  if (req && !trimSpaces(which.value))
  {
    alert('Bitte geben Sie die Uhzeit an!');
    which.focus();
    return false;
  }

  if (which.value.length == 0 && !req)
     return true;

  if (which.value.length = 5)
    if (which.value.indexOf(':') == 2)
	    if (testString(which.value.substring(0,2),'0123456789'))
		   if (testString(which.value.substring(3,5),'0123456789'))
				status=true;


  if (!status)
  {
    alert('Bitte verwenden Sie das Format 00:00 für die Eingabe der Uhrzeit!');
    which.focus();
  }

  return status;
}

// ------------------------------
// -- Clean Illegal Characters --
// ------------------------------
function cleanChars(string,chars,subst)
{
  if (!subst)
	  subst = '';
  for (i=0; i<chars.length; i++)
    while (string.indexOf(chars.charAt(i))!=-1)
      string = string.substring(0,string.indexOf(chars.charAt(i))) + subst + string.substring(string.indexOf(chars.charAt(i))+1,string.length);
  return string;
}

// uses: insertChar
// ------------------------------
// --  Set Tausender Punkt     --
// ------------------------------
function tausenderPunkt(string)
{
  count = 0;
  start = string.lastIndexOf(',');
  if (start!=-1)
  {
    for (i=1;i<=start;i++)
    {
      count++;
      if (count==3)
      {
        count = 0;
        if (start-i!=0)
          string = insertChar(string,'.',start-i+1);
      }
    }
    return string;
  }
}

// ------------------------------
// --   Insert Character At    --
// ------------------------------
function insertChar(string,val,loc)
{
  return string.substring(0,loc-1) + val + string.substring(loc-1);
}

//uses: testString, testOccurance, cleanChars, tausenderPunkt
// ------------------------------
// --  Check Money             --
// ------------------------------
function checkMoney(which)
{
   if (which.value)
   {
       if (!testString(which.value,'0123456789,.'))
       {
           alert('Bitte geben Sie nur Zahlen im folgenden Format ein:\n1000 oder 1.000 oder 1.000,00');
           which.value='';
           which.focus();
       } //else if (!testOccurance(which.value,',',1)) {alert("das endere");}
       else
       {
         dummy = cleanChars(which.value,'.');
         dummy = cleanChars(dummy,',','.');
         dummy = eval(dummy);
         dummy = Math.round(dummy*100);
         dummy = dummy.toString();
         if (dummy == '0')
           dummy = '000';
         dummy = dummy.substring(0,dummy.length-2) + ',' + dummy.substring(dummy.length-2);
         dummy = tausenderPunkt(dummy);
         if (dummy.charAt(0) == ',')
           dummy = '0'+dummy;
         which.value = dummy;
       }
   }
}

function checkMoney2(which,msg,req)
{
   if (which.value)
   {
       if (!testString(which.value,'0123456789.'))
       {
           alert('Bitte geben Sie nur ganze Zahlen im folgenden Format ein:\n1000 oder 1.000');
           which.value='';
           which.focus();
           return false;
       }
   }
   else if (req)
   {
     alert(msg);
     which.focus();
     return false;
   }
   return true;
}

function getAge(today,born)
{
  var todayYY = today.getYear();
  if (todayYY<1900) todayYY+=1900;
  var bornYY  = born.getYear();
  if (bornYY<1900) bornYY+=1900;
  var years = todayYY-bornYY;
  if (born.getMonth()>today.getMonth()) years--;
  else if (born.getMonth()==today.getMonth() && born.getDate()>today.getDate()) years--;
  return years;
}

function checkVollj(which)
{
  var today = new Date();
  var born  = eval("new Date(" +dateAssign(which.value)+ ", 12, 00, 00);");
  if (getAge(today,born)<18)
  {
    alert('Der Antragsteller muß mindestens 18 Jahre alt sein!');
    which.focus();
    return false;
  }
  return true;
}

function testVBeginn(which)
{
  var today = new Date();
  today.setHours(12);
  today.setMinutes(0);
  today.setSeconds(0);
  var begin = eval("new Date(" +dateAssign(which.value)+ ", 12, 00, 00);");
  var born  = eval("new Date(" +dateAssign( VersNehmerGebDatum )+ ", 12, 00, 00);");
  today.setTime(today.getTime()+(86400000*3));
  beginMin = Math.floor(today.getTime()/1000);
  today.setTime(today.getTime()+(86400000*57));
  beginMax = Math.floor(today.getTime()/1000);
  beginIs  = Math.floor(begin.getTime()/1000);
  if (beginIs<beginMin)
  {
    alert('Der frühest mögliche Versicherungsbeginn ist in 3 Tagen!');
    which.focus();
    return false;
  }
  else if (beginIs>beginMax)
  {
    alert('Der spätest mögliche Versicherungsbeginn ist in 60 Tagen!');
    which.focus();
    return false;
  }
  else if (getAge(begin,born)>65)
  {
    alert('Der Versicherungsnehmer darf bei Versicherungsbeginn max. 65 Jahre alt sein!');
    which.focus();
    return false;
  }
  return true;
}

function checkDatumVonBis(which,msg,required)
{
  var isOk = true;
  if (required && which.value=='') isOk = false;
  else if (which.value!='')
  {
    if (which.value.charAt(2)!='.'&&which.value.charAt(7)!='-'&&which.value.charAt(10)!='.') isOk = false;
    if ( !testString(which.value.substring(0,2),'0123456789')&&!testString(which.value.substring(3,7),'0123456789')&&!testString(which.value.substring(8,10),'0123456789')&&!testString(which.value.substring(11),'0123456789') ) isOk = false;
    if ( pnParseInt(which.value.substring(0,2))<1||pnParseInt(which.value.substring(0,2))>12||pnParseInt(which.value.substring(8,10))<1||pnParseInt(which.value.substring(8,10))>12 ) isOk = false;
  }

  if (!isOk)
  {
    alert(msg);
    which.focus();
    return false;
  }
  return true;
}

function openTags() {
	document.getElementById("tagcloud").style.display = "block";
}

function closeTags() {
	document.getElementById("tagcloud").style.display = "none";
}

// #############################################################################

/**
 * Extracts the current menu id from the url and returns it
 */
var pageMenuId = '';
function extractMenuId() {
    // MenuId der Seite
    if (pageMenuId == '') {
        pageMenuId = window.location.href.match(/[0-9]{7}/)[0];
    }

    return pageMenuId;
}

/**
 * Extracts the current page name from breadcrumb navigation
 */
var pageName    = '';
function extractPageName() {
    if (pageName == '') {
        pageName = $('#brot span:last-child').text();
    }

    // breadcrumb not available => get pageName from main navigation
    if (pageName == '') {
        pageName = $('#subsubmarker').text();
    }

    if (pageName == '') {
        pageName = $('#submarker, #submarkerlast').text();
    }

    if (pageName == '') {
        pageName = $('#marker, #markerlast').text();
    }

    return pageName;
}


/**
 * Gibt die debug-Nachricht aus
 *
 * @param message debug-Nachricht
 */
var printDebug              = function(message) {
    if (false) {
        if (typeof message == "Array") {
            var text  = "";
            for (var i = 0; i < message.length; ++i) {
                text += message[i];
            }

            message = text;
        }

        alert(message);
    }
}

/**
 * Liefert alle geoeffneten Contentboxen des aktuellen Reiters, der mit der
 * Reiternummer identifiziert wird.
 *
 * @param reiterNummer die Nummer des aktuellen Reiters
 * @returns Array die geoeffneten Contentboxen
 */
function getOpenContentBlocks(reiterNummer) {
    var openBlocks = $('#reitercontainer-' + reiterNummer).find('.opener_closer_open');

    /**
     * Extrahiere die Headline einer Contentbox in Reiter
     *
     * @param contentbox    Contentbox-Element, das unterhalb der Headline angezeigt wird
     */
    var getContentblockHeadline   = function (contentblock) {

        if (contentblock == null || typeof contentblock == 'undefined') {
            printDebug('contentblock is undefined');
        }
        return $(contentblock).siblings('.headline').text().replace(/^\s+/, '')
            .replace(/\s+$/, '');
    }

    var getHeadlines  = function() {
        var headlines   = '';
        $(openBlocks).each(function() {
            headlines   += (',' + getContentblockHeadline(this));
        });

        return headlines.substr(1);
    }

    this.cb_headlines  = getHeadlines();

    printDebug(openBlocks);

    return this;
}

/**
 * Liefert bestimmten Reiter mit Namen und Nummer zurueck
 *
 * Wenn der uebergebene Parameter element nicht gesetzt ist, wird der
 * aktuell geoeffnete Reiter zurueckgegeben. Dieser wird anhand der Klasse
 * ".highTab" als Kindelement von ".reiternavi" identifiziert.
 *
 * Name und Nummer des Reiters koennen ueber die oeffentlichen Variablen
 * rt_name und rt_nummer ausgelesen werden.
 *
 * <code>
 *   var currentReiter  = getReiter();
 *   var reiterName     = currentReiter.rt_name;
 *   var reiterNummer   = currentReiter.rt_nummer;
 * </code>
 *
 * @param element Reiternavigationselement
 * @returns Reiterobject
 */
function getReiter(element) {
    var reiter;

    if (typeof element == 'undefined') {
        reiter = $('.reiternavi').find('.highTab');
    } else {
        reiter = $(element);
    }

    /**
     * Extrahiert die Nummer des Reiters auf dem id-Attribut.<b>
     *
     * Die Nummer des Reiters steht nach dem letztem "-"
     *
     * @param reiter Reiterelement (Tabellenzelle: .highTab)
     * @return Nummer des Reiters
     */
    var getReiterNummer  = function (reiter) {
        var reiterid    = $(reiter).attr('id');
        
        if ( reiterid == undefined )
        	return;
        
        // hole Counter des Reiters: Zeichen nach "-"
        var limiterpos  = reiterid.lastIndexOf('-');

        return reiterid.substring(limiterpos + 1);
    }

    this.rt_nummer = getReiterNummer(reiter);
    this.rt_name   = $(reiter).find('.tabText').text().replace(/^\s+/, '')
        .replace(/\s+$/, '');

    printDebug('[getReiter] ' + this.rt_nummer + ": " + this.rt_name);

    return this;
}

/**
 * Liefert bestimmten Contentblock mit Id und Namen zurueck.
 *
 * Der uebergebene Parameter element ist der HeadlineContainer des Contentblocks
 *
 * Name und Id des Contentblocks koennen ueber die oeffentlichen Variablen
 * cb_name und cb_id ausgelesen werden.
 *
 * <code>
 *   var contentblock       = getContentblock(headlinecontainer);
 *   var contentblockId     = contentblock.cb_id;
 *   var contentblockName   = contentblock.cb_name;
 * </code>
 *
 *
 * @param element .headlinecontainer des Contentblocks
 * @returns Contentblockobjekt
 */
function getContentblock(element) {
    var contentblock    = $(element).parents('.toggleablebox')[0];

    this.cb_id     = '';
    this.cb_name   = '';

    if (typeof contentblock == 'undefined') { return this; }

    this.cb_id     = $(contentblock).attr('id');
    this.cb_name   = $(contentblock).children('.headlinecontainer')
        .children('.headline').text().replace(/^\s+/, '').replace(/\s+$/, '');

    return this;
}

/**

*/
function writePNG(id, url, width, height){
	var aktionsboxKennzeichen = document.getElementById(id);
	aktionsboxKennzeichen.style.width = width;
	aktionsboxKennzeichen.style.height = height;

	aktionsboxKennzeichen.style.backgroundRepeat="no-repeat";
	if (navigator.appName == 'Microsoft Internet Explorer') {
		aktionsboxKennzeichen.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+url+"')";
	}
	else {
		aktionsboxKennzeichen.style.backgroundImage="url('"+url+"')";
	}
}


