function registerNamespace(Namespace)
{
     var nsParts = Namespace.split(".");
     var ns = window;

     for (var n = 0; n < nsParts.length; n++)
     {
        if (typeof ns[nsParts[n]] == "undefined")
        {
           ns[nsParts[n]] = new Object();
        }

        ns = ns[nsParts[n]];
     }
}

registerNamespace("contentcard.translation");
contentcard.translation.data = { };

contentcard.translation.set = function (Translation)
                          {
                            for (var Key in Translation)
                            {
                                if (typeof Translation[Key] != 'function')
                                {
                                    contentcard.translation.data[Key] = Translation[Key];
                                }
                            }
                          };
                          
contentcard.translation.get =  function (key)
                            {
                                if (key == undefined || typeof key != 'string')
                                {
                                    return key;
                                }
                                
                                key = key.toUpperCase();

                                if (contentcard.translation.data != undefined && contentcard.translation.data[key] != null && contentcard.translation.data[key] != undefined)
                                {
                                    return contentcard.translation.data[key];
                                } 
                                else 
                                {
                                    return key;
                                }
                            };

contentcard.translation.getRawStore =  function ()
                                   {
                                        if (contentcard.translation.data != undefined)
                                        {
                                            return contentcard.translation.data;
                                        }
                                        return null;
                                    };


                            
                            
registerNamespace("contentcard.config");
contentcard.config.data = { };

contentcard.config.set =    function (Configuration)
                              {
                                for (var Key in Configuration)
                                {
                                    if (typeof Configuration[Key] != 'function')
                                    {
                                        contentcard.config.data[Key] = Configuration[Key];
                                    }
                                }
                              };

contentcard.config.get =  function (key)
                     {
                        if (key == undefined || typeof key != 'string')
                        {
                            return key;
                        }
                     
                        if (contentcard.config.data[key] != undefined)
                        {
                            return contentcard.config.data[key];
                        }
                        
                        return key;
                     };
                                 
contentcard.config.getRawStore =  function ()
                                    {
                                        if (contentcard.config.data != undefined)
                                        {
                                            return contentcard.config.data;
                                        }
                                        return null;
                                    };

                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    


Timer = Class.create();
Timer.prototype = {
    initialize: function(callback, timeout) {
        this.onTimeout = callback;
        this.timeout = timeout;
        this.registerCallback();
    },

    registerCallback: function() {
        setTimeout(this.onTimerEvent.bind(this), this.timeout * 1000);
    },

    onTimerEvent: function() {
        this.onTimeout();
    }
}


AjaxTimeouter = Class.create();
AjaxTimeouter.prototype = {
    initialize: function(ajaxRequestObj, timeout, onAjaxTimeout)
    {
        this.onAjaxTimeout = onAjaxTimeout || Prototype.emptyFunction;
        this.ajaxRequestObj = ajaxRequestObj;
        this.ajaxRequestObj.aborted = false;

        this.ajaxRequestObj.responseIsSuccess = function() {
            if (this.aborted == true)
            {
                return false;
            }
            return this.transport.status == undefined
                || this.transport.status == 0
                || (this.transport.status >= 200 && this.transport.status < 300);
        }

        this.timeouter = new Timer(this.tryCancelRequest.bind(this), timeout);
    },

    tryCancelRequest: function()
    {
        res = false;
        //alert(this.ajaxRequestObj.transport.readyState);
        switch( this.ajaxRequestObj.transport.readyState )
        {
            // Request in progress
            case 1:
            case 2:
            case 3:
                // mark abort
                this.ajaxRequestObj.aborted = true;
                this.ajaxRequestObj.transport.abort();
                res =  true;
                break;
        }

        if (res == true)
            this.onAjaxTimeout();

        clearTimeout(this.timeoutid);
    }
}


// globale Zählervariable
var charsToGo;

function charCounter(charInputSrcName, maxCharCount, outputTargetName) {

   // Zugriffsvariablen festlegen
   var charInputSrc = document.getElementById(charInputSrcName);
   var outputTargetSrc = document.getElementById(outputTargetName);

   if (charInputSrc != null) {
      // Länge des Feldinhaltes prüfen
      if (charInputSrc.value.length <= maxCharCount) {
         // Anzahl Restzeichen berechnen und Zeichenanzeige aktualisieren
         charsToGo = maxCharCount - charInputSrc.value.length;
         outputTargetSrc.innerHTML = '(' + charsToGo + '&nbsp;Zeichen)';
      }
      else
         // Eingegebenes Zeichen wieder abschneiden
         charInputSrc.value = charInputSrc.value.substring(0, maxCharCount);
         charsToGo = maxCharCount - charInputSrc.value.length;
      }
}

function counterOutput(charInputSrcName, maxCharCount, outputTargetName)
{
   // Zugriffsvariablen festlegen
   var charInputSrc = document.getElementById(charInputSrcName);

   // globale Variable prüfen
   if (charsToGo == null) {
      // Ausgabewert berechnen
      charsCount = maxCharCount - charInputSrc.value.length; }
   else
      // Ausgabefeld initialisieren
      charsCount = charsToGo;
         document.write('<span name=\"'
            + outputTargetName + '\" id=\"' + outputTargetName +'\">('
            + charsCount + '&nbsp;Zeichen)</span>')
}

function SerialLoginDialog(MessageBoxText, ActiveLoginButtonText, InactiveLoginButtonText)
{
    ApplicationDialog('box_activation_login');
    window.location.hash = 'PageTop';
    SaveSerial();
    
    $('ApplicationDialogMessage').innerHTML = MessageBoxText;
    
    if ($('ApplicationDialogMessage').style.display == 'block')
    {
    	$('ApplicationDialogMessage').style.display = 'none';
    }
    else
    {
    	$('ApplicationDialogMessage').style.display = 'block';
    }
    
    $('serial').disabled = !$('serial').disabled;
    $('activate').disabled = !$('activate').disabled;

	if ($('ApplicationDialogBackground').style.display == 'block')
	{
    	$('cancel_serial_login').style.display = 'block';
    }
    else
	{
    	$('cancel_serial_login').style.display = 'none';
	}
    
    
    if ($F('Username').length > 0)
    {
        $('Password').focus();
    }
    else
    {
        $('Username').focus();
    }
    
    $('activate').disabled=true;
    $('storno').disabled=true; 
}


function LoginDialog(MessageBoxText)
{
    ApplicationDialog('login_box');
    window.location.hash = 'PageTop';
    $('ApplicationDialogMessage').innerHTML = MessageBoxText;
    
    if ($('ApplicationDialogMessage').style.display == 'block')
    {
    	$('ApplicationDialogMessage').style.display = 'none';
    }
    else
    {
    	$('ApplicationDialogMessage').style.display = 'block';
    }

	if ($('ApplicationDialogBackground').style.display == 'block')
	{
    	$('cancel_login').style.display = 'block';
    }
    else
	{
    	$('cancel_login').style.display = 'none';
	}
    
    if ($F('Username').length > 0)
    {
        $('Password').focus();
    }
    else
    {
        $('Username').focus();
    }
}

function OpenPopup(url, breite, hoehe)
{
    winpops = window.open(url, "", "width="+breite+",height="+hoehe+",scrollbars=no,toolbar=no,status=no,menubar=no");
}


function GotoPage(URL)
{
	window.self.location.href = URL;
}

function CreateInactiveTab(Title, Link)
{
	var OnClick = '';
	
    if (Link != undefined)
    {
        OnClick = 'GotoPage(\''+Link+'\')';
    }
    
    document.write('<div id="reiter_front_white" onclick="'+OnClick+'"></div> ');
    document.write('<div id="reiter_middle_white" onclick="'+OnClick+'"> ');
    document.write('<div id="reiter_txt_white">'+Title+'</div> ');
    document.write('</div>');
    document.write('<div id="reiter_end_white" onclick="'+OnClick+'"></div>');
}

function CreateActiveTab(Title, Link)
{
	var OnClick = '';
	
    if (Link != undefined)
    {
        OnClick = 'GotoPage(\''+Link+'\')';
    }

    document.write('<div id="reiter_front_blue" onclick="'+OnClick+'"></div> ');
    document.write('<div id="reiter_middle_blue" onclick="'+OnClick+'">');
    document.write('<div id="reiter_txt_blue">'+Title+'</div> ');
    document.write('</div> ');
    document.write('<div id="reiter_end_blue" onclick="'+OnClick+'"></div>');
}

function CreateButton(Name, Id, OnClick, Text)
{
     document.write('<div id="button_front"></div> '+
                    '<div id="button_middle"> '+
                    	'<div id="button_txt"><button name="'+Name+'" id="'+Id+'" onclick="'+OnClick+'"><div class="buttonTXT">'+Text+'</div></button></div> '+
                    '</div> '+
                    '<div id="button_end"></div>');
}

function CatchLoginEnter(e)
{ 
    if (getKeyCode(e) == 13)
    { 
        setSerial();
        setAction();
        $('CreateLogin').submit();
    } 
}

function WelcomeMouseShow(name, type)
{
	if(type == 1)
	{
		document.getElementById(name).style.display = 'block';
	}
	else
	{
		document.getElementById(name).style.display = 'none';
	}
}

function WelcomeClearInput(e,v)
{  
	if( e.value==v)  
	{    
		e.value='';  
	}
}

function WelcomeResetInput(e,v)
{  
	if( e.value=='')  
	{    
		e.value=v;  
	}
}

function setSerial()
{
    if($('serial').value != "")
    { 
        $('SerialCode').value = $('serial').value; 
    }
}

function setAction()
{
    if($('aktion').value != "")
    { 
        $('ActionCode').value = $('aktion').value; 
    }
}

function ApplicationDialog(Container)
{
    var Element = $(Container);
    var Result  = 0;
    
    if(Element)
    {
        if($('ApplicationDialogBackground').style.display == 'none')
        {
            $('ApplicationDialogBackground').style.display = 'block';
            document.getElementsByTagName('body')[0].style.overflow = 'hidden';
            $('ApplicationDialogBackground').style.width = '10000';
            $('ApplicationDialogBackground').style.height = '10000';
            Element.className = Container+'_Active';
            Result = 1;
        }
        else
        {
            Element.className = Container+'_Inactive';
            $('ApplicationDialogBackground').style.display = 'none';
            document.getElementsByTagName('body')[0].style.overflow = 'scroll';
            Result = 2;
        }
    }    
    
    return Result;
}

function ArtworkDetails(name, type)
{
	if(type == 1)
	{
		document.getElementById(name).style.display = 'block';
	}
	else
	{
		document.getElementById(name).style.display = 'none';
	}
}

function artpreview(file)
{
helpwindow = window.open(file,"Preview","width=620,height=620;");
helpwindow.focus();
return false;
}
 
 
 var HighlightTimeout = 1500;

addHighlight = function (elem)
{
	$(elem).className += ' highlight ';
}

removeHighlight = function (elem)
{
	$(elem).className = $(elem).className.replace(/highlight/g, "");
}


// Muss-Feld type="text" -----------------------------------------------------------------
function must(val,message)
{
        if(val.value == "")
        {
                if (message != undefined)
                {
                    alert(message);
                }
                val.focus();
                return false;
        }
return true;
}

function chkregex( val, regex, message ){
	if( !val.value.match(regex) ){
		alert(message);
		val.select();
		val.focus();
		return false;
	}
	return true;
}

function hasLength(obj, size, message)
{
    
    if (obj.value.length <= size)
    {
        if (message != undefined)
        {
            alert(message);
        }
        obj.focus();
        return false;
    }
    
    return true;
}

function trim(str) 
{
    str = str.replace(/^\s+/, '');
    str = str.replace(/\s+$/, '');
    return str;
}

// Muss-Feld type="checkbox" -------------------------------------------------------------------------------------------
function mustcheckbox(val,message)
{
        if(val.checked == "true")
        {
                if (message == undefined)
                {
                    alert(message);
                }
                val.focus();
                return false;
        }
return true;
}


// Mindestlänge ---------------------------------------------------------------------------
function min(val,message,min)
{
        var _123 = val.value;
        if (_123 != '')
        {
                if (_123.length < min)
                {
                        alert(message)
                        val.select();
                        val.focus();
                        return false;
                }
        }

return true;
}

//genaue Länge ---------------------------------------------------------------------------
function exact(val,message,number)
{
        var _123 = val.value;
        if (_123 != '')
        {
                if (_123.length !=number)
                {
                        alert(message)
                        val.select();
                        val.focus();
                        return false;
                }
        }

return true;
}

// type="text" nur zahlen und 0-2 Zeichen möglich ------------------------------------

function isnumber(val,message,char1,char2,char3,char4,char5)
{
        var _123 = val.value;
        if(_123 != "")
        {
        for (var i = 0; i < _123.length; i++)
                {
                        var abc = _123.substring(i, i + 1);
                        if ((abc < "0" || "9" < abc) && (abc != char1) && (abc != char2) && (abc != char3) && (abc != char4) && (abc != char5))
                        {
                                if (message != undefined)
                                {
                                    alert(message);
                                }
                                val.select();
                                val.focus();
                                return false;
                        }
                }
        }
return true;
}


// type="text" nur zahlen und Buchstaben ------------------------------------

function isnormal(val,message)
{
        var _123 = val.value;
        if(_123 != "")
        {
        for (var i = 0; i < _123.length; i++)
                {
                        var abc = _123.substring(i, i + 1);
                        if ((abc < "0" || "9" < abc) && (abc < "A" || abc > "Z") && (abc < "a" || abc > "z"))
                        {
                                alert(message);
                                val.select();
                                val.focus();
                                return false;
                        }
                }
        }
return true;
}




// ------------type="text" nur Buchstaben erlaubt ------------------------------------

function isletter(val,message)
{
        var _123 = val.value;
        if(_123 != "")
        {
        for (var i = 0; i < _123.length; i++)
                {
                        var abc = _123.substring(i, i + 1);
                        if ((abc < "A" || abc > "Z") && (abc < "a" || abc > "z"))
                        {
                                alert(message);
                                val.select();
                                val.focus();
                                return false;
                        }
                }
        }
return true;
}



// ------------type="text" nur Buchstaben und einige Sonderzeichen erlaubt -----------------

function specialsign(val,message)
{
        var _123 = val.value;
        if(_123 != "")
        {
                if (!val.value.match ( /^[a-zA-ZÄÖÜäöüßàáèéìíòóùúÀÁÈÉÌÍÒÓÙÚ0-9 .-]{1}[a-zA-ZAÖÜäöüßàáèéìíòóùúÀÁÈÉÌÍÒÓÙÚ0-9 .-]*$/))
                {
                        alert(message);
                        val.select();
                        val.focus();
                        return false;
                }
        }
return true;
}



// type="text" und 0-2 Zeichen muss (keine sonderzeichen und keinen '.'!) ---------------

function isformat(val,message,char1,char2)
{
        var _123 = val.value;
        if(_123 != "")
        {
                if(char1 != "")
                {
                        var erg;
                        erg = _123.search(char1);
                        if(erg == "-1")
                                {
                                alert(message);
                                   val.focus();
                                      val.select();
                                return false;
                        }
                }

                var _123 = val.value;
                erg = "";
                if((_123 != "") && (char2 != ""))
                {
                        erg = _123.search(char2);
                        if(erg == "-1")
                        {
                                alert(message);
                                   val.focus();
                                      val.select();
                                return false;
                        }
                }
        }
return true;
}


function ischar(val,message,pos1,pos2,character)
{
        var abc = val.value.substring(pos1, pos2);
        if (abc == character)
                {
                        alert(message);
                        val.select();
                        val.focus();
                        return false;
                }
return true;
}


// Prüft ob ein bestimmter String an einer bestimmten Stelle enthalten ist------
// Wenn Nein => Fehler!

function isnotchar(val,message,pos1,pos2,character)
{
        var abc = val.value.substring(pos1, pos2);
        if (abc != character)
                {
                        alert(message);
                        val.select();
                        val.focus();
                        return false;
                }
return true;
}


// Datum -------------------------------------------------------------------------

function date(val,message,age)
{
        var Jetzt = new Date();
        var Tag = Jetzt.getDate();
        var Monat = Jetzt.getMonth() + 1;
        var Jahr = Jetzt.getYear();
        var Vortag  = ((Tag < 10) ? "0" : "");
        var Vormon  = ((Monat < 10) ? "0" : "");

        var tt = Vortag + Tag;
        var mm = Vormon + Monat;
        var jjjj = Jahr - age;

        var abc = val.value;
        if (abc != "")
        {
        var str = val.value;
        
        var tag   = parseInt(str.substring(0,2), 10);
        var monat = parseInt(str.substring(3,5), 10);
        var jahr  = parseInt(str.substring(6,10), 10);
        
        var punkt = str.substring(2,3);
        var punkt2 = str.substring(5,6);
        var valid = true;
        if (punkt != ".") valid= false;
        if (punkt2 != ".") valid= false;
        if (monat<=0) valid= false;
        if (monat>=13) valid= false;
        if (tag<=0) valid= false;

        
        if (monat == 1 && tag > 31) valid = false;
        if (monat == 2 && tag > 28) valid = false;
        if (monat == 3 && tag > 31) valid = false;
        if (monat == 4 && tag > 30) valid = false;
        if (monat == 5 && tag > 31) valid = false;
        if (monat == 6 && tag > 30) valid = false;
        if (monat == 7 && tag > 31) valid = false;
        if (monat == 8 && tag > 31) valid = false;
        if (monat == 9 && tag > 30) valid = false;
        if (monat == 10 && tag > 31) valid = false;
        if (monat == 11 && tag > 30) valid = false;
        if (monat == 12 && tag > 31) valid = false;
        
        if (isNaN(jahr)) valid= false;
        else {        if (jahr<1890) valid= false;
                if ((jahr>jjjj) || (jahr==jjjj && monat>mm) || (jahr==jjjj && monat==mm && tag>tt)) valid= false;}}
                if (valid  == false)
        {
                   alert(message);
                   val.focus();
                      val.select();
                   return false;
        }
return true;
}


// Datum (3 Felder)-------------------------------------------------------

function date3(t,m,j,message,age)
{
        var Jetzt = new Date();
        var Tag = Jetzt.getDate();
        var Monat = Jetzt.getMonth() + 1;
        var Jahr = Jetzt.getYear();
        var Vortag  = ((Tag < 10) ? "0" : "");
        var Vormon  = ((Monat < 10) ? "0" : "");

        var tt = Vortag + Tag;
        var mm = Vormon + Monat;
        var jjjj = Jahr - age;

        var tag   = parseInt(t.value, 10);
        var monat = parseInt(m.value, 10);
        var jahr  = parseInt(j.value, 10);

        var valid = true;

        if (tag == "--" || monat == "--" || jahr == "--") valid = false;
     // if (monat == 01 && tag > 31) valid = false;
        if (monat == 2 && tag > 29) valid = false;
      //  if (monat == 03 && tag > 31) valid = false;
        if (monat == 4 && tag > 30) valid = false;
      //  if (monat == 05 && tag > 31) valid = false;
        if (monat == 6 && tag > 30) valid = false;
      //  if (monat == 07 && tag > 31) valid = false;
      //  if (monat == 08 && tag > 31) valid = false;
        if (monat == 9 && tag > 30) valid = false;
      //  if (monat == 10 && tag > 31) valid = false;
        if (monat == 11 && tag > 30) valid = false;
      //  if (monat == 12 && tag > 31) valid = false;

        if ((jahr>jjjj) || (jahr==jjjj && monat>mm) || (jahr==jjjj && monat==mm && tag>tt)) valid= false;

        if (valid  == false)
        {
                   alert(message);
                   //val.focus();
                   //val.select();
                   return false;
        }
return true;
}



// Gültigkeit ein Feld tt.mm.jjjj   --------------------------------------------------------
function expiry(val,message)
{
        var Jetzt = new Date();
        var Tag = Jetzt.getDate();
        var Monat = Jetzt.getMonth() + 1;
        var Jahr = Jetzt.getYear();
        var Vortag  = ((Tag < 10) ? "0" : "");
        var Vormon  = ((Monat < 10) ? "0" : "");

        var tt = Vortag + Tag;
        var mm = Vormon + Monat;
        var jjjj = Jahr;

        var abc = val.value;
        if (abc != "")
        {
        var str = val.value;
        
        var tag   = parseInt(str.substring(0,2),  10);
        var monat = parseInt(str.substring(3,5),  10);
        var jahr  = parseInt(str.substring(6,10), 10);
        
        var punkt = str.substring(2,3);
        var punkt2 = str.substring(5,6);
        var valid = true;
        if (punkt != ".") valid= false;
        if (punkt2 != ".") valid= false;
        if (monat<=0) valid= false;
        if (monat>=13) valid= false;
        if (tag<=0) valid= false;
        if (monat == 1 && tag > 31) valid = false;
        if (monat == 2 && tag > 29) valid = false;
        if (monat == 3 && tag > 31) valid = false;
        if (monat == 4 && tag > 30) valid = false;
        if (monat == 5 && tag > 31) valid = false;
        if (monat == 6 && tag > 30) valid = false;
        if (monat == 7 && tag > 31) valid = false;
        if (monat == 8 && tag > 31) valid = false;
        if (monat == 9 && tag > 30) valid = false;
        if (monat == 10 && tag > 31) valid = false;
        if (monat == 11 && tag > 30) valid = false;
        if (monat == 12 && tag > 31) valid = false;
        if (isNaN(jahr)) valid= false;
        else {        if ((jahr<jjjj) || (jahr==jjjj && monat<mm) || (jahr==jjjj && monat==mm && tag<tt)) valid= false;}}
                if (valid  == false)
        {
                   alert(message);
                   val.focus();
                      val.select();
                   return false;
        }
return true;
}


// Gültigkeit 1 Feld mm.jjjj --------------------------------------------------------

function dateshort(val,message)
{
        var Jetzt = new Date();
        var Monat = Jetzt.getMonth() + 1;
        var Jahr = Jetzt.getYear();
        var Vormon  = ((Monat < 10) ? "0" : "");

        var mm = Vormon + Monat;
        var jjjj = Jahr;

        var abc = val.value;
        if (abc != "")
        {
        var str = val.value;
        var monat = parseInt(str.substring(0,2), 10);
        var punkt = parseInt(str.substring(2,3), 10);
        var jahr = parseInt(str.substring(3,7));
        var valid = true;
        if (punkt != ".") valid= false;
        if (monat<=0) valid= false;
        if (monat>=13) valid= false;
        if (isNaN(jahr)) valid= false;
        else {        if (jahr<1900) valid= false;
                if ((jahr>jjjj) || (jahr==jjjj && monat>mm)) valid= false;}}
                if (valid  == false)
        {
                   alert(message);
                   val.focus();
                      val.select();
                   return false;
        }
return true;
}


// Gültigkeit 2 Felder mm jjjj   ------------------------------------------------------------
function expiry_2(val1,val2,message)
{
        var Jetzt = new Date();
        var Monat = Jetzt.getMonth() + 1;
        var Jahr = Jetzt.getYear();
        var Vormon  = ((Monat < 10) ? "0" : "");

        var mm = Vormon + Monat;
        var jjjj = Jahr;

        var monat = val1.value;
        var jahr = val2.value;

        if ((jahr<jjjj) || (jahr==jjjj && monat<=mm))
        {
                   alert(message);
                   val1.focus();
                   return false;
        }
return true;
}


// Gültige neu Rufnummer  -------------------------------------------------------------------
// Benötigt: netz, SIMCARDNO1, PHONENO2

function hlrchk( phoneno, message, simno, tarif)
{
var tarifval  = tarif.value.toLowerCase();

        if( simno.value!='' && phoneno.value != '')
        {
                if( tarifval == 'd1')
                {
                        if( simno.value.substring( simno.value.length-2,simno.value.length) != phoneno.value.substring(0,2))
                        {
                                alert(message);
                                phoneno.focus();
                                phoneno.select();
                                   return false;
                        }
                }

                if( tarifval == 'd2')
                {
                        if( simno.value.substring(0,2) != phoneno.value.substring(0,2))
                        {
                                alert(message);
                                phoneno.focus();
                                phoneno.select();
                                   return false;
                        }
                }
        }
return true;
}










// ========================================================================
// function chkWas(art,obj,meldung)
// ------------------------------------------------------------------------
//        Plausibilitätsprüfung für Objekt obj.
//        bei meldung = "" :         bei leerem obj (nichts oder Leerzeichen)
//                                                                 wird auf true erkannt (Kannfeld).
//        bei meldung != "":        bei leerem obj
//                                                                 wird meldung ausgegeben und focus gesetzt.
//                                                bei nichtleerem obj
//                                                                 erfolgt Plausibilitätsprüfung gemäß art
//
// -----------------------------------------------------------------------
function chkWas(art,obj,meldung)  // obj auf Plausibilität checken
{
        var reg2 = "", reg3 = "", al2 = "", al3 = "";


        if (!hat_inhalt(obj) && meldung == "")return true;  // obj ist leer und meldung leer ist auch gut
        if (!hat_inhalt(obj) && meldung != "")                          // obj ist leer und meldung nichtleer
        {
                alert (meldung);
                obj.focus();
                return false;
        }
        var al="";
        switch(art)
        {

                case "FIRSTNAME":
                        reg  = "^[A-ZÄÖÜ]{1}";
                        al   = "\nBeginnend mit einem Großbuchstaben.";
                        reg2 = "^[A-Za-zäöüßÄÖÜéè. ]+([. ]?[-]?[a-zA-ZÄÖÜäüößéè.])*[.]?$";
                        al2  = "\nHier sind nur gültig:\n- Buchstaben\n- Bindestrich\n- Leerzeichen";
                        break;
                case "LASTNAME":
                        reg  = "^[A-ZÄÖÜ]{1}";
                        al   = "\nBeginnend mit einem Großbuchstaben.";
                        reg2 = "^[A-Za-zäöüßÄÖÜéè. ]+([. ]?[-]?[a-zA-ZÄÖÜäüößéè.])*[.]?$";
                        al2  = "\nHier sind nur gültig:\n- Buchstaben\n- Bindestrich\n- Leerzeichen";
                        break;
                case "EMAIL":
                        reg  = "^[a-zA-Z0-9]+([-._]?[a-zA-Z0-9]+)+@[a-zA-Z0-9]+([-._]?[a-zA-Z0-9]+)+.[a-zA-Z0-9]{2,4}$";  // geht noch besser
//                        reg = "^(\w+[._-]?\w+)+@(\w+[._-]?\w)+[.]\w{2,4}$"; // orig geht nicht
                        al   = "\nBitte vervollständige Deine E-Mail-Adresse.";
                        break;
                case "COMNAME": // Firma
                        reg  = "^[A-ZÄÖÜ]{1}";
                        al   = "\nBeginnend mit einem Großbuchstaben.";
                        reg2 = "^[A-Za-zäöüßÄÖÜéè. ]+([ ]?[-&]?[ ]?[(a-zA-Zäüößéè.0-9])*[.]?[)]?$";
                        al2  = "\nHier sind nur gültig:\n- Buchstaben\n- Bindestrich\n- Punkt\n- Kaufmännischens und (&)\n- Leerzeichen";
                        break;
                case "STREET":
                        reg  = "^[A-ZÄÖÜ]{1}";
                        al   = "\nBeginnend mit einem Großbuchstaben.";
                        reg2 = "^[A-Za-zäöüßÄÖÜ .-]*$";
                        al2  = "\nHier sind nur gültig:\n- Buchstaben\n- Bindestrich\n- Punkt\n- Leerzeichen";
                        break;
                case "HOUSENO":
                        reg  = "^[1-9]{1}";
                        al   = "\nBeginnend mit einer Zahl.";
                        reg2 = "^[0-9 a-zA-Z -]*$";
                        al2  = "\nHier sind nur gültig:\n- Zahlen\n- Buchstaben\n- Bindestrich\n- Leerzeichen"
                        break;
                case "ZIPCODE":
                        reg = "^[0-9]{5}$";
                        al  = "\nHier sind nur gültig:\n- Zahlen\n- 5 stellig";
                        break;
                case "TOWN":
                        reg  = "^[A-ZÄÖÜ]{1}";
                        al   = "\nBeginnend mit einem Großbuchstaben.";
                        reg2 = "^[a-zA-ZäöüÄÖÜß0-9()/ .-]*$";
                        al2  = "\nHier sind nur gültig:\n- Buchstaben\n- Bindestrich\n- Schrägstrich\n- Punkt\n- Leerzeichen";
                        break;

                case "AREACODE": // Vorwahl
                        reg  = "^0{1}";
                        al   = "\nBeginnend mit einer 0.";
                        reg2 = "^[0-9]{3,6}$";
                        al2  = "\nHier sind nur gültig:\n- Zahlen\n- mindestens 3 Ziffern\n- maximal 6 Ziffern";
                        break;
                case "PHONE": // Telefon
                        reg  = "^[1-9]{1}";
                        al   = "\nHier sind nur Zahlen gültig.\nNicht mit 0 Beginnend.";
                        reg2 = "^[0-9]{3,12}$";
                        al2  = "\nHier sind nur gültig:\n- Zahlen\n- mindestens 3 Ziffern";
                        break;

                case "INSTITUTE": // Bank
                        reg  = "^[A-ZÄÖÜ]{1}";
                        al   = "\nBeginnend mit einem Großbuchstaben.";
                        reg2 = "^[A-Za-zäöüßÄÖÜéè. ]+([ ]?[-&]?[ ]?[(a-zA-Zäüößéè.0-9])*[.]?[)]?$";
                        al2  = "\nHier sind nur gültig:\n- Buchstaben\n- Bindestrich\n- Punkt\n- Kaufmännischens und (&)\n- Leerzeichen";
                        break;
                case "BANKNO": // BLZ
                        reg  = "^[0-9]{8,}$";
                        al   = "\nHier sind nur gültig:\n- Buchstaben\n- Bindestrich\n- Punkt\n- Kaufmännischens und (&)\n- Leerzeichen";
                        break;
                case "BANKACCOUNT": // Kontonummer
                        reg  = "^[0-9]{7,15}$";
                        al   = "\nHier sind nur gültig:\n- Zahlen\n- mindestens 7 Ziffern";
                        break;
                case "BANKNAME": // Kontoinhaber
                        reg  = "^[A-ZÄÖÜ]{1}";
                        al   = "\nBeginnend mit einem Großbuchstaben.";
                        reg2 = "^[A-Za-zäöüßÄÖÜéè. ]+([. ]?[-]?[a-zA-ZÄÖÜäüößéè.])*[.]?$";
                        al2  = "\nHier sind nur gültig:\n- Buchstaben\n- Bindestrich\n- Leerzeichen";
                        break;


                case "IMEI":
                        reg  = "^[0-9\/-]*$";
                        al   = "Hier sind nur gültig:\n- Bindestrich\n- Schrägstrich";
                        break;

                case "MEMO":
                        reg  = "^[A-Za-zäöüßÄÖÜ0-9., :?()-\\\/]*$";
                        al   = "\nHier sind nur gültig:\n- Buchstaben\n- Zahlen\n- Leerzeichen\n- Punkt\n- Komma\n- Doppelpunkt\n- Fragezeichen\n- Klammern\n- Bildestrich\n- Schrägstrich";
                        break;

                 case "UMSALIAS":
                        reg = "^([a-z0-9\.\-]+)$";
                        al  = "\nHier sind nur gültig:\n- Kleinbuchstaben\n- Zahlen\n- Punkt\n- Bindestrich";
                        break;
                  case "PASSWORD":
                        reg = "^([A-Za-z0-9]+)$";
                        al  = "\nHier sind nur gültig:\n- Grossbuchstaben\n- Kleinbuchstaben\n- Zahlen";
                        break;


// ---------------------------------------------
                case "NUMBER_NN":
                        reg  = "^[1-9]{1}";
                        al   = "\nNicht mit 0 Beginnend.";
                        reg2 = "[0-9]";
                        al2  = "\nHier sind nur gültig:\n- Zahlen";
                        break;
                case "NUMBER":
                        reg = "[0-9]";
                        al  = "\nHier sind nur gültig:\n- Zahlen";
                        break;
                case "NUMBER9":
                        reg = "^[0-9]{9}";
                        al  = "\nHier sind nur gültig:\n- Zahlen\n- 9 stellig";
                        break;
                case "NUMBER10":
                        reg = "^[0-9]{10}";
                        al  = "\nHier sind nur gültig:\n- Zahlen\n- 10 stellig";
                        break;


                case "01.NN":
                        reg = "^[0-1][0-9].[0-9]{2}$";
                        break;
                case "12.NN":
                        reg = "^(0[1-9])?(1[0-2])?.[0-9]{2}$";
                        break;
// --------------------------------------------------
                case "01NN":
                        reg = "^[0-1][0-9][0-9]{2}$";
                        break;
                case "12NN":
                        reg = "^(0[1-9])?(1[0-2])?[0-9]{2}$";
                        break;

                case "01.01.NNNN":
                        reg = "^[0-3][0-9].[0-1][0-9].[0-9]{4}$";
                        break;
                case "31.01.NNNN":
                        reg = "^(0[1-9])?(1[0-9])?(2[0-9])?(3[0-1])?.[0-1][0-9].[0-9]{4}$";
                        break;
                case "01.12.NNNN":
                        reg = "^[0-3][0-9].(0[1-9])?(1[0-2])?.[0-9]{4}$";
                        break;
                case "31.12.NNNN":
                        reg = "^(0[1-9])?(1[0-9])?(2[0-9])?(3[0-1])?.(0[1-9])?(1[0-2])?.[0-9]{4}$";
                        break;
                case "NUMBER+":
                        reg = "[0-9\+\-\/]";
                        al  = "\nHier sind nur gültig:\n- Zahlen\n- Bindestrich\n- Pluszeichen\n- Schrägstrich";
                        break;
// ---------------------------------------------------
                default:
                        alert ("Frage den Hersteller\nfunction chkWas(art,...)\nart ist nicht definiert");
        }



        if (!obj.value.match(reg))
        {
                if (al!="")alert(al);
                obj.select();
                obj.focus();
                return false;
        }
    if(reg2 != "")
    {
        if (!obj.value.match(reg2))
        {
                if (al2!="")alert(al2);
                obj.select();
                obj.focus();
                return false;
        }
    }
    if(reg3 != "")
    {
        if (!obj.value.match(reg3))
        {
                if (al3!="")alert(al3);
                obj.select();
                obj.focus();
                return false;
        }
    }

        else return true;
}

function EmailChecker(val,message){
        var reg  = "^[a-zA-Z0-9]+([-._]?[a-zA-Z0-9]+)+@[a-zA-Z0-9]+([-._]?[a-zA-Z0-9]+)+.[a-zA-Z0-9]{2,4}$";  // geht noch besser
	var val2 = val.value;
	var emails = val2.split(";");
	for( var i=0; i < emails.length; i++ ){
	     emails[i] = trim(emails[i]);
             //alert( "'"+emails[i]+"'" );
	     if( ( emails.length > 1 && emails[i] == "" ) || ( !emails[i].match(reg) && emails[i] != "" ) ){
	         
	         if (message != undefined)
	         {
	             alert(message);
	         }
	         val.select();
	         val.focus();
	         return false;
             }
	}
	
	return true;
}

function isSelected(obj, def, message)
{
    if (obj.value == def)
    {
        obj.focus();

        if (message != undefined)
        {
            alert(message);
        }

        return false;
    }
    
    return true;
}

function isPhone(obj, message)
{
    return isnumber(obj, message, '+', '-', ' ', '/');
}

function checkContactForm()
{
    switch (false)
    {
        case isSelected($('title'), 0,  $('_JS_TITLE_ERROR').innerHTML):
        case must($('firstname'),       $('_JS_FIRSTNAME_ERROR').innerHTML):
        case must($('lastname'),        $('_JS_LASTNAME_ERROR').innerHTML):
        case must($('company'),         $('_JS_COMPANY_ERROR').innerHTML):
        case must($('country'),         $('_JS_COUNTRY_ERROR').innerHTML):
        case must($('areacode'),        $('_JS_AREACODE_ERROR').innerHTML):
        case isPhone($('areacode'),     $('_JS_AREACODE_FORMAT').innerHTML):
        case must($('phone'),           $('_JS_PHONE_ERROR').innerHTML):
        case isPhone($('phone'),        $('_JS_PHONE_FORMAT').innerHTML):
        case EmailChecker($('email'),   $('_JS_EMAIL_FORMAT').innerHTML):
        case must($('email'),           $('_JS_EMAIL_ERROR').innerHTML):
        case confirm($('_JS_CORRECT').innerHTML):

        return false;
        break;

        default:
        return true;
        
    }
}

function isChecked(id)
{
    return $(id).checked;
}

function isEmpty(value)
{
    return ((value.length  > 0) ? false : true);
}

function isRegExp(obj, regex, message)
{
   if (!obj.value.match(regex))
   {
       if (message != undefined)
       {
           alert(message);
       }
       obj.focus();
       return false;
   }
   
   return true;
}

function setIntoContainer(id, value, def)
{
    if (value.length > 0)
    {
        $(id).innerHTML = value;
    }
    else
    {
        if (def != undefined)
        {
           $(id).innerHTML = def; 
        }
    }
}

function ifSetEmail(id, message)
{
    if (!isEmpty(id) && !EmailChecker($(id)))
    {
        if (message != undefined)
        {
            alert(message);
        }
        
        $(id).focus();
        return false;
    }
    return true;
}

function ifSetPhone(id, message)
{
    if (!isEmpty(id) && !isPhone($(id)))
    {
        if (message != undefined)
        {
            alert(message);
        }
        
        $(id).focus();
        return false;
    }
    return true;
}

function checkCallBackSelection(idCheck, idValue, message, focusObj)
{
    var isSelected = isChecked(idCheck);
    var isEmptyVal = isEmpty(idValue);
    
    if (isSelected && isEmptyVal)
    {
        if (message != undefined)
        {
            alert(message);
        }
        
        if (focusObj != undefined)
        {
            focusObj.focus();
        }
        
        return false
    }
    
    return true;
}

function checkCallBackAlternative(idCheck, SetValue, AltValue, message)
{
    var Result   = checkCallBackSelection(idCheck, SetValue);
    var AltValue = ((AltValue.length > 0) ? true :  false);

    if (!Result && !AltValue)
    {
        if (message != undefined)
        {
            alert(message);
            return false;
        }
    }

    return true;
}

function newSupportTicket()
{
    switch (false)
    {
        case !(isChecked('infoPhone')  && !ifSetPhone('enterCall',    $('_JS_PHONE_FORMAT').innerHTML)):
        case !(isChecked('infoEmail')  && !ifSetEmail('enterEmail',   $('_JS_EMAIL_FORMAT').innerHTML)):
        case !(isChecked('infoFax')    && !ifSetPhone('enterFax',     $('_JS_FAX_FORMAT').innerHTML)):
        case !(isChecked('infoMobile') && ifSetPhone('enterMobile',  $('_JS_MOBILE_MUST_FORMAT').innerHTML)):
        case isSelected($('problem'), -1, $('_JS_PROBLEM_ERROR').innerHTML):
        case checkCallBackAlternative('infoPhone',  $('valPhone').innerHTML,  $F('enterCall'),   $('_JS_SELECTED_PHONE').innerHTML):
        case checkCallBackAlternative('infoEmail',  $('valEmail').innerHTML,  $F('enterEmail'),  $('_JS_SELECTED_EMAIL').innerHTML):
        case checkCallBackAlternative('infoFax',    $('valFax').innerHTML,    $F('enterFax'),    $('_JS_SELECTED_FAX').innerHTML):
        case checkCallBackAlternative('infoMobile', $('valMobile').innerHTML, $F('enterMobile'), $('_JS_SELECTED_SMS').innerHTML):            
        
        return false;
        break;
        
        default: 
        return true;
    }
}

function isEqual(var1, var2, msg)
{
    if (var1.value != var2.value)
    {
        if (msg != undefined)
        {
            alert(msg);
            var2.focus();
            return false;
        }
    }

    return true;
}

isCheckedWithAlert = function (obj, message)
{
    if (!isChecked(obj))
    {
        if (message != undefined)
        {
            alert(message);
        }
        obj.focus();
        return false;
    }

    return true;
}

function newCustomerTicket()
{
    switch (false)
    {
    
        case isSelected($('country'), -1,      $('_JS_COUNTRY_ERROR').innerHTML):
        case isSelected($('distributor'), -1,  $('_JS_DISTRIBUTOR_ERROR').innerHTML):
        case must($('company'),       $('_JS_COMPANY_ERROR').innerHTML):
        case must($('street'),        $('_JS_STREET_ERROR').innerHTML):
        case must($('zipcode'),       $('_JS_ZIPCODE_ERROR').innerHTML):
        case must($('city'),          $('_JS_CITY_ERROR').innerHTML):
        case isSelected($('companycountry'), -1,  $('_JS_COUNTRY_ERROR').innerHTML):
        case must($('firstname'),     $('_JS_FIRSTNAME_ERROR').innerHTML):
        case must($('lastname'),      $('_JS_LASTNAME_ERROR').innerHTML):
        case must($('phone'),         $('_JS_PHONE_ERROR').innerHTML):
        case isPhone($('phone'),      $('_JS_PHONE_FORMAT').innerHTML):
        case ifSetPhone('mobile',     $('_JS_MOBILE_FORMAT').innerHTML):
        case ifSetPhone('fax',        $('_JS_FAX_FORMAT').innerHTML):
        case must($('email'),         $('_JS_EMAIL_ERROR').innerHTML):
        case EmailChecker($('email'), $('_JS_EMAIL_ERROR').innerHTML):
        case must($('cpassword'),      $('_JS_PASSWORD_ERROR').innerHTML):
        case hasLength($('cpassword'), 5, $('_JS_PASSWORD_FORMAT').innerHTML):
        case isEqual($('cpassword'), $('passconfirm'), $('_JS_PASSWORD_NOT_EQUAL').innerHTML):
        case checkCallBackSelection('infoPhone', $F('phone'),   $('_JS_SELECTED_PHONE').innerHTML, $('phone')):
        case checkCallBackSelection('infoEmail', $F('email'),   $('_JS_SELECTED_EMAIL').innerHTML, $('email')):
        case checkCallBackSelection('infoFax',   $F('fax'),     $('_JS_SELECTED_FAX').innerHTML,   $('fax')):
        case checkCallBackSelection('infoMobile', $F('mobile'), $('_JS_SELECTED_SMS').innerHTML,   $('mobile')):
        case isCheckedWithAlert($('privacy'), $('_JS_PRIVACY_ERROR').innerHTML):
        case isCheckedWithAlert($('terms'), $('_JS_TERMS_ERROR').innerHTML):
        
        return false;
        break;

        default:
        return true;
    }
}

function showDiv(data)
{
    if (typeof data == 'object')
    {
        for(var key in data)
        {
            if (typeof data[key] != 'function')
            {
                $(data[key]).style.display = 'block';
            }
        }
    }
    else
    {
        $(data).style.display = 'block';
    }
}

function hideDiv(data)
{
    if (typeof data == 'object')
    {
        for(var key in data)
        {
            if (typeof data[key] != 'function')
            {
                $(data[key]).style.display = 'none';
            }
        }
    }
    else
    {
        $(data).style.display = 'block';
    }
}

function checkElement(id, obj)
{
    if (obj.length)
    {
        $(id).checked = true;
    }
}

function deleteOptions(id)
{
    $(id).options.length = 0;
}

function addNewOption(id, key, value, defSelected, selected)
{
    if (defSelected == undefined)
    {
        defSelected = false;
    }

    if (selected == undefined)
    {
        selected = false;
    }

    $(id).options[$(id).options.length] = new Option(value, key, defSelected, selected);
}

function addOptions(id, elem)
{
    for (var key in elem)
    {
        if (typeof elem[key] != 'function')
        {
            addNewOption(id, key, elem[key]);
        }
    }
}

//===========================================================================

//===========================================================================
// function hat_inhalt(obj)
// ------------------------------------------------------------------------
// Objekt obj testen auf:        Inhalt mindestens 1 Zeichen ungleich Whitespace        :        true
// ------------------------------------------------------------------------

function hat_inhalt(obj)
{
        if(!obj.value) return false;
        return obj.value.match(/\S/)
}
//===========================================================================


function CheckSelectbox( val, message ){
    if( val.value == '' ){
        alert(message);
        val.select();
        val.focus();
        return false;
    }else{
        return true;
    }
}