﻿/* ---------------------------------------------------------------------------- */
/* ---------------------------- VALIDATION ------------------------------------ */
/* ---------------------------------------------------------------------------- */

var bAllOk = true;
var objLastField = null;
var lastszdatatype = "";
var lastbisnullable = false;

  function ValidateLastFields()
  {  
    if(objLastField != null)
        ValidateFields(objLastField, lastszdatatype, lastbisnullable, true);
  }
  
  function ValidateEmptySection(arrayoffields, message)
  {
      var bok = true;
      var ctl;            
      for (var i = 1; i < arrayoffields.length; i++)
      {  
         ctl = document.getElementById(arrayoffields[i]);
         if (ctl)
         {
            
            bok = (bok && ctl.value.length > 0);
            if (!bok)
              ctl.style.borderColor = "#AD0000";
            else
              ctl.style.borderColor = "#6786BD";
         }
      }
      if (!bok)
      {
        ctl = document.getElementById(arrayoffields[0]);
        ShowErrorMsg(ctl, message);
        return false;
      }      
  }
      
  function ValidateEqualFields(ctl, ctl1, message)
  {
     var ctl1 = document.getElementById(ctl1);
     if (ctl1)
     {
        if (ctl.value != ctl1.value)
        {     
           ctl.style.borderColor = "#AD0000";
           ctl1.style.borderColor = "#AD0000";
           ShowErrorMsg(ctl, message);
        }
        else
        {
           ctl.style.borderColor = "#6786BD";
           ctl1.style.borderColor = "#6786BD";
           HideErrorMsg();
        }
     }
  }  
    
  function ValidateFields(ctl, szdatatype, bisnullable, bDisplayTheError)
  { 
    var szrecheckdate = /^(?=\d)(?:(?!(?:(?:0?[5-9]|1[0-4])(?:\.|-|\/)10(?:\.|-|\/)(?:1582))|(?:(?:0?[3-9]|1[0-3])(?:\.|-|\/)0?9(?:\.|-|\/)(?:1752)))(31(?!(?:\.|-|\/)(?:0?[2469]|11))|30(?!(?:\.|-|\/)0?2)|(?:29(?:(?!(?:\.|-|\/)0?2(?:\.|-|\/))|(?=\D0?2\D(?:(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:\d\d)(?:[02468][048]|[13579][26])(?!\x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)\x20BC))))))|2[0-8]|1\d|0?[1-9])([-.\/])(1[012]|(?:0?[1-9]))\2((?=(?:00(?:4[0-5]|[0-3]?\d)\x20BC)|(?:\d{4}(?:$|(?=\x20\d)\x20)))\d{4}(?:\x20BC)?)(?:$|(?=\x20\d)\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2}(?:\x20[aApP][mM]))|(?:[01]\d|2[0-3])(?::[0-5]\d){1,2})?$/;
    var szrecheckint = /^(\+|-)?\d+$/;
    var szrecchecknumber = /^((\d?)|(([-+]?\d+\.?\d*)|([-+]?\d*\.?\d+))|(([-+]?\d+\.?\d*\,\ ?)*([-+]?\d+\.?\d*))|(([-+]?\d*\.?\d+\,\ ?)*([-+]?\d*\.?\d+))|(([-+]?\d+\.?\d*\,\ ?)*([-+]?\d*\.?\d+))|(([-+]?\d*\.?\d+\,\ ?)*([-+]?\d+\.?\d*)))$/;    
    var szreccheckmail = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$/;
    var bOK = false;
    var szerrmsg;
    var szvalue = ctl.value;
    lastszdatatype = szdatatype;
    lastbisnullable = bisnullable;

    if (szdatatype == 'System.String') {
      bOK = true;
    }

    if (szdatatype == 'System.Boolean') {
      bOK = true;      
    }
    
    if (szdatatype == 'Indeca.Mail') {     
      
      bOK = szreccheckmail.test(szvalue);
      szerrmsg = "Ihre Eingabe <val> hat kein gültiges E-Mail Format.<br /> E-Mail bitte im Format postfach@provider.de eingeben.";
    }
    
    if (szdatatype == 'System.DateTime') {
      bOK = szrecheckdate.test(szvalue)
      szerrmsg = "Ihre Eingabe <val> hat kein gültiges Datumsformat.<br /> Datum bitte im Format dd.mm.yyyy (z.B. 1.8.2007 oder 30.11.2006) eingeben."      
    }
    
    if (szdatatype == 'System.DateTime.Volljaehrigkeit') {
        bOK = szrecheckdate.test(szvalue)
        szerrmsg = "Ihre Eingabe <val> hat kein gültiges Datumsformat.<br /> Datum bitte im Format dd.mm.yyyy (z.B. 1.8.2007 oder 30.11.2006) eingeben."

        if (bOK == true)  {
            bOK = VolljaehrigkeitPruefen(szvalue)
            szerrmsg = "Es sind Fehler bei der Altersprüfung aufgetreten.<br />Bitte überprüfen Sie das eingegebene Datum."
        }
    }
    
    if (szdatatype == 'System.Int16' || szdatatype == 'System.Int32' || szdatatype == 'System.Int64') {
      bOK = szrecheckint.test(szvalue)
      szerrmsg = "Ihre Eingabe <val> hat kein gültiges Nummernformat.<br /> Wert bitte im Format nnn (z.B. 80 oder 827) eingeben."
    }

    if (szdatatype == 'System.Decimal' || szdatatype == 'System.Single' || szdatatype == 'System.Double') {
      bOK = szrecchecknumber.test(szvalue)
      szerrmsg = "Ihre Eingabe <val> hat kein gültiges Nummernformat.<br /> Wert bitte im Format nnn,nn (z.B. 100,39 oder 100) eingeben."
    }

    if (szvalue.length > 0) 
    {
      if (bOK) 
      {
        if(bDisplayTheError) {
            ctl.style.borderColor = "#6786BD";        
            HideErrorMsg();        
            }
        objLastField = null;
      } 
      else
      {
        if(bDisplayTheError) {
            ctl.style.borderColor = "#AD0000";
            ShowErrorMsg(ctl, szerrmsg);        
            }
        objLastField = ctl;
        bAllOk = false;
      }
    } 
    else
    {
      if (bisnullable)
      {          
        if(bDisplayTheError) {      
            ctl.style.borderColor = "#999";
            HideErrorMsg();        
            }
        objLastField = null;
      }
      else
      {
        if(bDisplayTheError) {
            ctl.style.borderColor = "#AE0E1B";
            ShowErrorMsg(ctl, "Dieses Feld ist ein Mussfeld, bitte geben Sie einen Wert ein!");        
            }
        objLastField = ctl;
        bAllOk = false;
      }
    }
    
  }
  
  
  function DescribeFields(addMessage, ctl, szdatatype, bisnullable)
  {  
    var szerrmsg = "";
    var szvalue = ctl.value;
    
    if (szdatatype == 'System.String') {
    }

    if (szdatatype == 'System.Boolean') {      
    }
    
    if (szdatatype == 'Indeca.Mail') {
      szerrmsg = "Bitte eine <u>gültige</u> E-Mail Adresse eingeben (z.B. info@mustermann.de).<br />"
    }
    
    if (szdatatype == 'System.DateTime') {
      szerrmsg = "Bitte Datum eingeben (z.B. 01.8.2007 oder 30.11.2006).<br />"
    }
        
    if (szdatatype == 'System.Int16' || szdatatype == 'System.Int32' || szdatatype == 'System.Int64') {
      szerrmsg = "Bitte ganze Zahlen eingeben (z.B. 80 oder 827).<br />"
    }

    if (szdatatype == 'System.Decimal' || szdatatype == 'System.Single' || szdatatype == 'System.Double') {
      szerrmsg = "Bitte Kommazahlen eingeben (z.B. 100,39 oder 100).<br />"
    }

    if(addMessage + szerrmsg != "")
    {
      if (bisnullable)
      {          
        ShowDescMsg(ctl, addMessage + szerrmsg);
      }
      else
      {
        ShowDescMsg(ctl, addMessage + szerrmsg + "Dieses Feld ist ein Mussfeld!<br />");
      }
  }
    
  }  

  function ValidateKeyPress(firedevent, type, control)
  {
  HideDescMsg();
  try{
   var code = alertkey(firedevent);
    switch (type)   
    {
        case "System.Int16":
        case "System.Int32":
        case "System.Int64":       
            if ((code > 47 && code < 58) || (code > 95 && code < 106) || code == 46 || code == 16 || code == 37 || code ==39 || code == 8 || code == 189 || code == 9)
            { }
            else
               window.event.returnValue = false;           

            break;
        case "System.Decimal":
        case "System.Single":
        case "System.Double":
            if ( (code > 47 && code < 58) || (code > 95 && code < 106) || code == 46 || code == 16 || code == 37 || code ==39 || code == 110 || code == 190 || code == 188 || code == 189 || code == 8 || code == 9)
            { }
            else
               window.event.returnValue = false;           

            break;
        case "System.DateTime":
            if (!( (code > 47 && code < 58) || (code > 95 && code < 106) || code ==32 || code == 46 || code == 16 || code == 37 || code ==39 || code == 110 || code == 190 || code == 8 || code == 9))
               window.event.returnValue = false;
            else
            {           
               if (code == 190 && control.value.length == 1)
               {
                  control.value = "0"+control.value;
                  window.event.returnValue = false;              
               }
               if (code == 190 && control.value.length == 4)
               {
                  part1 = control.value.substr(0, 3);
                  part2 = control.value.substr(3);
                  control.value = part1 + "0" + part2;
                  window.event.returnValue = false;
               }
               if (code == 190 && ( control.value.length == 2 || control.value.length == 5))
                  window.event.returnValue = false;
               if ((code == 32 || code == 9) && control.value.length == 8)
               {
                  part1 = control.value.substr(0, 6);                                          
                  part2 = control.value.substr(6);
                  control.value = part1 + "20" + part2;
                  if (code == 32)
                     window.event.returnValue = false;
               }
               if ((control.value.length == 2 || control.value.length == 5) && code != 8)
                  control.value += ".";
               if (control.value.length == 10 && code != 8 && code != 9)
                  window.event.returnValue = false;
               //if ((control.value.length == 13 || control.value.length == 16) && code != 8 && code != 190)
               //   control.value += ":";           
            }
            break;
        case "System.String":
            //alert(code);
            if ((code != 8)&&(code != 9)&&(code != 16)&&(code != 192)&&(code != 222)&&(code != 186)&&(code != 37)&&(code != 38)&&(code != 39)&&(code != 40)&&(code != 219)&&(code != 189)&&(code != 190))
            {
                var testregex = /[^a-zA-Z \-ß\d]/g;  // NICHT Wort (a-zA-Z) und NICHT Whitespace (Leerzeichen) sowie nicht -
                if (testregex.test(String.fromCharCode(code))==true && code!=96)
                {
                    window.event.returnValue = false;
                }
            }
            break;
        default:               
        break;
    }         
    }
    catch(err){  }      
    //window.event.returnValue  = window.event.returnValue         
  }      
  

/* ---------------------------------------------------------------------------- */
/* ---------------------------- KEYPRESS -------------------------------------- */
/* ---------------------------------------------------------------------------- */

  function alertkey(e) {
    if( !e ) {
      if( window.event ) {
       //Internet Explorer
        return window.event;
      } else {
        return;
      }
    }
    
    if( typeof( e.keyCode ) == 'number'  ) {
      //DOM
        return e.keyCode;
    } else if( typeof( e.which ) == 'number' ) {
      //NS 4 compatible
        return e.which;
    } else if( typeof( e.charCode ) == 'number'  ) {
      //also NS 6+, Mozilla 0.9+
        return e.charCode;
    } else {
      //total failure, we have no way of obtaining the key code
      return null;
    }
    
  }
  
function ValidateAllFields(arrObjects)
{   
    bAllOk = true;
    for(var i = 0; i < arrObjects.length; i++)
    {
        ValidateFields(document.getElementById(arrObjects[i][0]), arrObjects[i][1], arrObjects[i][2], false);
    }
    if(bAllOk)
    {   
        if(document.getElementById("ICMS_SUBMIT_FS"))
        {
            document.getElementById("ICMS_SUBMIT_FS").disabled = false;
            document.getElementById("ICMS_SUBMIT_FS").cursor = "hand";
        }
        if(document.getElementById("ICMS_SUBMIT_REGISTER"))
        {
            document.getElementById("ICMS_SUBMIT_REGISTER").disabled = false;
            document.getElementById("ICMS_SUBMIT_REGISTER").cursor = "hand";
        }
    }
    else
    {
        if(document.getElementById("ICMS_SUBMIT_FS"))
        {
            document.getElementById("ICMS_SUBMIT_FS").disabled = true;
            document.getElementById("ICMS_SUBMIT_FS").cursor = "";
        }
        if(document.getElementById("ICMS_SUBMIT_REGISTER"))
        {
            document.getElementById("ICMS_SUBMIT_REGISTER").disabled = true;
            document.getElementById("ICMS_SUBMIT_REGISTER").cursor = "";
        }
    }
    setTimeout('ValidateAllFields(arr2)', 300);
}

/* ---------------------------------------------------------------------------- */
/* ---------------------------- ERRORMSG -------------------------------------- */
/* ---------------------------------------------------------------------------- */
function ShowErrorMsg(ctl, szerror)
  {
    var errorbox = document.getElementById("_ERROR");
    var pos = getPosition(ctl);
    var szerrmsg = "";
    var szvalue = "<b>" + ctl.value + "</b>";
    
    szerrmsg = szerror.replace(/<val>/g, szvalue);
    
    window.document.getElementById("_ERRORMSG").innerHTML = szerrmsg;

    errorbox.style.left = (pos.x+150) + "px";
    errorbox.style.top = pos.y + "px";
      
    errorbox.style.visibility = "visible";
  }

  function HideErrorMsg()
  {
    var errorbox = window.document.getElementById("_ERROR");
    errorbox.style.visibility = "hidden";
    //if(bAllOk)
    //{
    //    if(document.getElementById("ctl_submit"))
    //        document.getElementById("ctl_submit").style.visibility = 'visible';
    //}
  }

/* ---------------------------------------------------------------------------- */
/* ---------------------------- DESCMSG -------------------------------------- */
/* ---------------------------------------------------------------------------- */
function ShowDescMsg(ctl, szerror)
{
    if(document.getElementById("_ERROR").style.visibility = 'hidden')
    {
        var errorbox = window.document.getElementById("_DESCRIBE");
        var pos = getPosition(ctl);
        var szerrmsg = "";
        var szvalue = "<b>" + ctl.value + "</b>";
        
        szerrmsg = szerror.replace(/<val>/g, szvalue);
        
        window.document.getElementById("_DESCRIBEMSG").innerHTML = szerrmsg;
        
        errorbox.style.left = (pos.x+150) + "px";
        errorbox.style.top = pos.y + "px";
        errorbox.style.visibility = "visible";
    }
}

function HideDescMsg()
{
    var errorbox = window.document.getElementById("_DESCRIBE");
    errorbox.style.visibility = "hidden";
}  





/**
 *	Prüfung auf eines Geburtsdatum auf Volljährigkeit (18 Jahre)
 */ 
function VolljaehrigkeitPruefen(pruef_dat)	{

	var dateItems = pruef_dat.split(".");
	geb_tag = dateItems[0];
	geb_monat = dateItems[1];
	geb_jahr = dateItems[2];

	//geb_tag		= document.getElementById('geb_tag').value;		// Eingegebener Tag aus input-Feld
	//geb_monat	= document.getElementById('geb_monat').value;	// Eingegebener Monat aus input-Feld
	//geb_jahr	= document.getElementById('geb_jahr').value;	// Eingegebenes Jahr aus input-Feld

	var Erg1 		= geb_tag.match(/\d{1,2}/);		// Tag muss mind. 1 Stelle haben
	var Erg2 		= geb_monat.match(/\d{1,2}/);	// Monat muss mind. 1 Stelle haben
	var Erg3 		= geb_jahr.match(/\d{2,4}/);	// Jahr muss mind. 2 Stellen haben
	
	var ret	= false;
	
	if((Erg1 != null) && (Erg2 != null) && (Erg3 != null))	{					

		var objNow 	= new Date();					// Date Objekt erzeugen
		var day		= objNow.getDate();				// aktueller Tag aus Date-Objekt
		var month	= objNow.getMonth();			// aktueller Monat aus Date-Objekt
		var year	= objNow.getFullYear();			// aktuelles Jahr aus Date-Objekt
		
		month		+= 1;							// Monat + 1, da Monat bei 0 angefangen wir zu zählen

		//if(geb_jahr < 1900)	{	geb_jahr	= parseInt(geb_jahr) + 1900;	}
		//if(year 	< 1900)	{	year 		+= 1900;	}
		//Math.floor(Endzeit - Zeit);
		//var dateDIFF = (new Date(geb_jahr, geb_monat, geb_tag) - objNow);
		
		
		//var gebDatumParsed = new Date(parseInt(geb_jahr), parseInt(geb_monat.replace("0","")), parseInt(geb_tag.replace("0","")));
		
		//alert(gebDatumParsed + " " + gebDatumParsed.getDay() + " " + gebDatumParsed.getMonth() + " " + gebDatumParsed.getFullYear() );
		
		//alert(Math.floor(gebDatumParsed - objNow));
						
				
		var t_diff	= day	- parseInt(geb_tag);	// Tag heute - Geburtstag
		if(t_diff < 0)	{	month	-= 1;	}		// Wenn Tag heute negativ ist, Monat - 1
		
		var m_diff	= month	- parseInt(geb_monat);	// Monat - Geburtsmonat
		if(m_diff < 0)	{	year 	-= 1;	}		// Wenn Monat negativ ist, Jahr - 1
		
		var j_diff	= year	- geb_jahr;				// Jahr - Geburtsjahr

		if(j_diff < 18)	{		// Ist Differenz zwischen Jahr und Geburtsjahr kleiner 18 ist er noch nicht Volljährig
				ret			= false; 
		}	else	{
				ret			= true; 
				 
		}
	}
	return ret;
}
/************************************************************************************/