var CONST_ERR_BG_COLOR = "#e30d49";
var CONST_ERR_FG_COLOR = "#FFFFFF";
// var CONST_STD_BG_COLOR = "window";
var CONST_STD_BG_COLOR = "#FFFFFF";
var CONST_STD_FG_COLOR = "#000000";

function decode_utf8(utftext) 
{
 var plaintext = ""; var i=0; var c=c1=c2=0;
 // while-Schleife, weil einige Zeichen uebersprungen werden
   while(i<utftext.length)
     {
     c = utftext.charCodeAt(i);
     if (c<128) {
         plaintext += String.fromCharCode(c);
         i++;}
     else if((c>191) && (c<224)) {
         c2 = utftext.charCodeAt(i+1);
         plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
         i+=2;}
     else {
         c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
         plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
         i+=3;}
     }
 return plaintext;
}

function encode_utf8(rohtext) {
// dient der Normalisierung des Zeilenumbruchs
             rohtext = rohtext.replace(/\r\n/g,"\n");
             var utftext = "";
             for(var n=0; n<rohtext.length; n++)
                 {
                 // ermitteln des Unicodes des  aktuellen Zeichens
                 var c=rohtext.charCodeAt(n);
                 // alle Zeichen von 0-127 => 1byte
                 if (c<128)
                     utftext += String.fromCharCode(c);
                 // alle Zeichen von 127 bis 2047 => 2byte
                 else if((c>127) && (c<2048)) {
                     utftext += String.fromCharCode((c>>6)|192);
                     utftext += String.fromCharCode((c&63)|128);}
                 // alle Zeichen von 2048 bis 66536 => 3byte
                 else {
                     utftext += String.fromCharCode((c>>12)|224);
                     utftext += String.fromCharCode(((c>>6)&63)|128);
                     utftext += String.fromCharCode((c&63)|128);}
                 }
             return utftext;
         }

/* trim Funktion für JavaScript von
http://www.js-examples.com/example/?ex=932
angepasst von csi, 15.05.03*/

// create the prototype on the String object
String.prototype.trim = function() {

 // skip leading and trailing whitespace
 // and return everything in between
  var x=this;
  x=x.replace(/^\s*(.*)/, "$1");
  x=x.replace(/\s*$/, "");
  return x;
}



function sendFormular(ptToDo, pbCheckForm, ptAction, ptRegexp ,pbAbfrage,ptAbfrageText, ptList, ptLinkToDisable)
/*
************************************************************************************
Sendet ein Formular zum Server. Vorher können
bestimmte Felder auf Plausibilität geprüft werden
-------------------------------------------------
ldi, 20.01.2005
rsv, 03.02.2005: Man kann jetzt auch bei Bedarf eine Action übergeben
mar, 08.04.2005: Sonderzeichencheck lässt sich nun abschalten
ldi, 14.04.2005: Über den Parameter Abfrage kann gesteuert 
                 werden ob vor dem versenden der User ptAbfragtext bestätigen muss
rsv, 15.04.2005: Kein Submit, wenn CheckFormulardaten == false
rsv, 06.06.2005: erlaubte Sonderzeichen können für verschiendene Seiten
                 unterschiedlich sein. Darum ptSonderzeichenCheck ersetzt durch den
                 entsprechenden regulären Ausdruck (ptRegexp).
                 Aus Kompatibilitätsgründen ist für ptRegexp auch der Typ Boolean möglich:
                 Bei ptRegexp == false wird keine Sonderzeichenprüfung vorgenommen.
                 Bei ptRegexp == null oder ptRegexp == true wird die
                 Standardsonderzeichnenprüfung (= CONST_REGEXP_ERLAUBTE_ZEICHEN_DEFAULT) verwendet
                 Ansonsten wird für die Sonderzeichenprüfung der reguläre Ausdruck
                 verwendet, der in ptRegexp steht.
rsv, 09.06.2005: Für Fehlermeldungen kann die Liste der erlaubten Sonderzeichen
                 gesondert mitgegeben werden
mar, 01.08.2007: Doppelklick Fix DisableEnableLinks(true);
************************************************************************************
*/
{	
		var loForm = document.forms[0];
		var ltActionBackup = loForm.action;
		/* Bei alphanumerischen PLZ müssen die Buchstaben gross geschriebe sein !*/
		try {
			if (loForm.txtPLZ.value != null && loForm.txtPLZ.value.length > 0)
			{	
				loNeuVal = loForm.txtPLZ.value.toUpperCase();
				loForm.txtPLZ.value = loNeuVal;
			}
			if (loForm.txtPLZZ.value != null && loForm.txtPLZZ.value.length > 0)
			{	
				loNeuVal = loForm.txtPLZZ.value.toUpperCase();
				loForm.txtPLZZ.value = loNeuVal;
			}
		} catch (e)
		{
			// Tue Nix wenn Variable nicht vorhanden.
		}
	
		if(ptAction != null) loForm.action = ptAction;
		
		if(ptRegexp == null)
		{
			ptRegexp = CONST_REGEXP_ERLAUBTE_ZEICHEN_DEFAULT;
		}
		else if (typeof ptRegexp == 'boolean')
		{
			if (ptRegexp)
			{
				ptRegexp = CONST_REGEXP_ERLAUBTE_ZEICHEN_DEFAULT;
			}
			else
			{
				ptRegexp = null;
			}
		}
	
		if (ptList == null)
		{
			ptList = CONST_SONDERZEICHEN_LIST_DEFAULT;
		}
	
	
		
		if (document.getElementById("todo"))
		{
			document.getElementById("todo").value=ptToDo;
			Substitution();
			
			
			// Soll die Form geprüft werden
			if (pbCheckForm)
			{	
				if(Sonderzeichen(ptRegexp, ptList))
				{
					if(CheckFormulardaten())
					{
						if (pbAbfrage)
						{
							if (confirm(ptAbfrageText))
							{
								if (FreezeScreen()) loForm.submit();
							}
						}
						else
						{
							if (FreezeScreen()) loForm.submit();
						}
					}
				}
			}
			else
			{
				if (pbAbfrage)
				{
					if (confirm(ptAbfrageText))
					{
						if (FreezeScreen()) loForm.submit();
					}
				}
				else
				{ 
					if (FreezeScreen()) loForm.submit();
				}
			}
		}
	
		loForm.action = ltActionBackup;
	return false;
}

function ShowError(id,ptFehlerText)
{
    var objFehler = document.getElementById(id);
    var ltFehlertext = document.createTextNode(ptFehlerText);   
    
    if (objFehler.hasChildNodes())
    {
        objFehler.replaceChild(ltFehlertext,objFehler.firstChild);
    }else
    {
        objFehler.appendChild(ltFehlertext);
    }
	
    if(document.getElementById('errorbox'))
    {
	   document.getElementById('errorbox').className = "cErrorbox";
    }

} 
function sucheAdresse(ptTODO, ptAdresstyp)
{
     //Startet die Adressuche für die jeweilige Anwendung
	
    if (document.getElementById("todo"))
    {
     document.getElementById("todo").value=ptTODO;
	 document.forms[0].action=encodeURL("../adressverwaltung/ADRSuche.jsp");
	 if (document.getElementById("txtIDAdressTyp"))
     {
        //alert(ptAdresstyp);
        document.getElementById("txtIDAdressTyp").value =  ptAdresstyp; 
     }
     document.forms[0].submit();   
    }
    return false;
}

function sucheAdresseReturn(ptTODO, ptAdresstyp)
{
     //Startet die Adressuche für die jeweilige Anwendung
	
    if (document.getElementById("todo"))
    {
     document.getElementById("todo").value=ptTODO;
	 if (document.getElementById("txtIDAdressTyp"))
     {
        //alert(ptAdresstyp);
        document.getElementById("txtIDAdressTyp").value =  ptAdresstyp; 
     }
     document.forms[0].submit();   
    }
    return false;
}


function setReset()
{
/*Alle Felder zurück setzen
LDI, 25.01.05   
*/
    var laStatus = new Array();
    
    //Input Felder Leeren
    laStatus = document.getElementsByTagName("input");
    
    for(var i = 0; i < laStatus.length; i++)
    {       
      laStatus[i].value = "";  
    }
    
    //Select Boxen zurück setzen
    laStatus = document.getElementsByTagName("select");
    
    for(var i = 0; i < laStatus.length; i++)
    {       
      laStatus[i].selectedIndex  = 0;  
    }
}

function setColor(pText)
{
   pText.style.backgroundColor="#000";
}

function checkEingabe(ptFehler,pbAnzeige) 
{
    
    var lbCheck= true; 
    var lbPruefen = false;
    
    if (document.getElementById("txtCheck"))
    {
        lbCheck = !(document.getElementById("txtCheck").value=='false');
        lbPruefen = !(document.getElementById("txtCheck").value=='false');
    }
    
    if(lbCheck)
    {
	    var laStatus = new Array();
	    var lbWarnung = false;
	    //Input Felder Leeren
	    laStatus = document.getElementsByTagName("input");
	    
	    for(var i = 0; i < laStatus.length; i++)
	    {
	    	if (lbPruefen || laStatus[i].name!="txtKontaktPerson" && laStatus[i].type!="hidden" && laStatus[i].type!="checkbox" && laStatus[i].type!="radio" && laStatus[i].type!="submit" && laStatus[i].value!="0" && laStatus[i].value!="00.00" && laStatus[i].value!="00,00" &&laStatus[i].value!="0.00" && laStatus[i].value!="0,00" && laStatus[i].value!="EUR" && laStatus[i].value!="DE" && laStatus[i].name!="txtWaehrung" && laStatus[i].id!="Z_land")
			{
				if (laStatus[i].value.length>0)
				{
					lbWarnung = true;
					break;
				}
			}  
			if (laStatus[i].name=="txtWarnung")
			{
				lbWarnung = true; 
				break;
			}     
		}

        //Textarea muss auch geprüft werden
		laStatus = document.getElementsByTagName("textarea");
		for(var i = 0; i < laStatus.length; i++)
		{       
			if (laStatus[i].value.length>0)
			{
				lbWarnung = true; 
				break;
			}
		}

		if (lbWarnung)
		{
			if (pbAnzeige)
			{
				//ptFehler = decode_utf8(ptFehler);
				if (confirm(ptFehler))
				{
					return true;
				}
				else
				{
					return false;
				}
			}
			else
			{
				if(document.getElementById("txtEingabe"))
				{
					document.getElementById("txtEingabe").value="true";
				}
			}
		}
		else
		{
			return true;
		}
	}
	else
	{
		// rsv, 16.01.2009: wegen redesign
		return true;
	}
	
	return false;
}

	// Setzt ein Element einer Selectbox, dessen value dem übergebenen entspricht
	// ade, 15.02.2005
	function setSelectboxValue(ptSelectbox, ptValue)
    {
    	
    	var loBox = document.getElementById(ptSelectbox);
    	if (loBox.selectedIndex==0 || loBox.selectedIndex==-1)
    	{
	    	for (var i=0; i<loBox.options.length; i++)
	    	{
	    		if (loBox.options[i].value==ptValue)
	    		{
	    			loBox.selectedIndex = i;
	    			break;
	    		}
	    	}
	    }
    }
    
    function setSelectboxText(ptSelectbox, ptValue)
    {

        var loBox = document.getElementById(ptSelectbox);
       
    	for (var i=0; i<loBox.options.length; i++)
    	{
    	    if (loBox.options[i].text==ptValue)
    		{
    	        loBox.selectedIndex = i;
    			break;
    		}
    	}
	 
    }
    
    
    
    
    
    
    // rsv, 01.06.2005: es werden nur noch input-felder des Typs "text" berücksichtigt.
    function SubstitutionHelper(paFelder, lbDoCutMaxLength)
    {

        var laZeichen = new Array("à","á","â","è","é","ê","ë","ï","í","ì","ô","û","ç","ü","ä","ö","ß","Ü","Ä","Ö","æ","ø","å","ð","Ð","õ","Õ","þ","Þ","Ø","Č","č","Š","š","Ž","DŽ","\r\n","\n");
        var laErsetzen = new Array("a","a","a","e","e","e","e","i","i","i","o","u","c","ue","ae","oe","ss","UE","AE","OE","ae","oe","aa","sh","sh","o","O","zh","Zh","U","C","c","S","s","z","dz"," ", " ");


        for(var j = 0; j < paFelder.length; j++)
        {       
			if (!paFelder[j].disabled && (paFelder[j].type == 'text' || paFelder[j].type == 'textarea')) 
			{
				paFelder[j].value = paFelder[j].value.trim();
				ltTemp = paFelder[j].name
				for (var i = 0; i < laZeichen.length; ++i)
				{
					if (paFelder[j].value.indexOf(laZeichen[i]) > -1)
					{
						var ltBeforRegexp = paFelder[j].value;
						var ltAktRegexp = new RegExp(laZeichen[i],"g");
						var ltAfterRegexp = ltBeforRegexp.replace(ltAktRegexp,laErsetzen[i]);
						
                        //auf max Länge beschränken
                        // funktioniert nur bei Input-Feldern
                        // und nicht bei Textarea-Feldern (diese haben keine maxlength-Angabe),
                        // darum Parameter lbDoCutMaxLength eingeführt
                        if (lbDoCutMaxLength)
                        {
	                        if (! paFelder[j].maxLength)
	                        {
	                        	alert("Feld " + paFelder[j].name + " hat kein maxLength!");
	                        }
	                        ltAfterRegexp = ltAfterRegexp.substring(0, paFelder[j].maxLength );
	                    }
                        
                        paFelder[j].value=ltAfterRegexp;
					}
				}
			}
		}
	}
    
    // rsv, 19.05.2005: Substitution jetzt auch für Textarea
	function Substitution()
	{
		SubstitutionHelper(document.getElementsByTagName("input"), true);
		SubstitutionHelper(document.getElementsByTagName("textarea"), false);
	}
    
	
	function SonderzeichenHelper(paFelder, ptRegexp, ptList)
	{
		for(var j = 0; j < paFelder.length; j++)
		{       
			if (!paFelder[j].disabled && (paFelder[j].type == 'text' || paFelder[j].type == 'textarea')) 
			{
				ltName = paFelder[j].name;
				if (ptRegexp.test(paFelder[j].value))
				{
					paFelder[j].style.backgroundColor=CONST_STD_BG_COLOR;
					paFelder[j].style.color=CONST_STD_FG_COLOR;
				}
				else
				{
					paFelder[j].style.backgroundColor=CONST_ERR_BG_COLOR;
					paFelder[j].style.color=CONST_ERR_FG_COLOR;
					paFelder[j].focus();
					ShowError("txtFehler", CONST_ERROR_SONDERZEICHEN + ptList);
					return false;
				}
			}
		}
		
		return true;
	}

    
    function Sonderzeichen(ptRegexp, ptList)
	{
		if (ptRegexp != null)
		{
	    	return (
	    		SonderzeichenHelper(document.getElementsByTagName("input"), ptRegexp, ptList) &&
	    		SonderzeichenHelper(document.getElementsByTagName("textarea"), ptRegexp, ptList)
	    	);
		}
		return true;
    }
    
   










function setFocus(ptFeld)
{
    if (document.getElementById(ptFeld))
    {
            document.getElementById(ptFeld).focus();
    }
}

function disabledDirektVersand(ptRadio)
{
	var lobj=document.frmMain.chkGTS;
	for (var i=0; i<lobj.length; i++) 
	{
		if (lobj[i].checked) 
		{
			if (lobj[i].value == 1)
			{
				
				 if (document.getElementById("lnkDirekt"))
				 {
				 	document.getElementById("lnkDirekt").style.visibility="hidden";
				 }
			}else
			{
				 if (document.getElementById("lnkDirekt"))
				 {
				 	document.getElementById("lnkDirekt").style.visibility="visible";
				 }
			}
		}
	}
}


function DisableEnableLinks(xHow){
	//alert(xHow);
  objLinks = document.links;
  for(i=0;i<objLinks.length;i++){
    objLinks[i].disabled = xHow;
    //link with onclick
    if(objLinks[i].onclick && xHow){  
        objLinks[i].onclick = new Function("return false;" + objLinks[i].onclick.toString().getFuncBody());
    }
    //link without onclick
    else if(xHow){  
      objLinks[i].onclick = "function(){return false;}"
    }
    //remove return false with link without onclick
    else if(!xHow && objLinks[i].onclick.toString().indexOf("function(){return false;}") != -1){            
      objLinks[i].onclick = null;
    }
    //remove return false link with onclick
    else if(!xHow && objLinks[i].onclick.toString().indexOf("return false;") != -1){  
      strClick = objLinks[i].onclick.toString().getFuncBody().replace("return false;","");
      objLinks[i].onclick = new Function(strClick);
    }
  }
  
  return true;
}


String.prototype.getFuncBody = function(){ 
  var str=this.toString(); 
  str=str.replace(/[^{]+{/,"");
  str=str.substring(0,str.length-1);   
  str = str.replace(/\n/gi,"");
  //if(!str.match(/\(.*\)/gi))str += ")";
  return str; 
} 

function FreezeScreen() {
      //scroll(0,0);
      var outerPane = document.getElementById('pane');
      if (outerPane) {
    	  outerPane.className = 'FreezePaneOn';
      }
      
      return true;
   }


