//  oh, SOS GmbH, 22.07.2005  Mehrsprachigkeit

  function default_translations_site() {  //deutsche Vorbesetzung
    
    this.invalid_number          = 'Bitte eine g\374ltige Zahl angeben'; 
    this.syntax_error_time       = 'Ung\374ltige Syntax in Zeiteingabe';
    this.syntax_error_day        = 'Ung\374ltige Syntax f\374r den Tag im Datum';
    this.syntax_error_month      = 'Ung\374ltige Syntax f\374r den Monat im Datum';
    this.syntax_error_year       = 'Ung\374ltige Syntax f\374r das Jahr im Datum';
    this.invalid_second          = 'Sekunden muss zwischen 1 und 59 liegen';
    this.invalid_minute          = 'Minute muss zwischen 1 und 59 liegen';
    this.invalid_hour            = 'Stunde muss zwischen 0 und 23 liegen';
    this.invalid_time            = 'Uhrzeit bitte in der Form HH:MM angeben';
    this.invalid_time2           = 'Uhrzeit bitte in der Form HH:MM:SS angeben';
    this.invalid_day             = 'Tag muss zwischen 1 und Monatsende liegen';    
    this.invalid_month           = 'Monat muss zwischen 1 und 12 liegen';
    this.invalid_year            = 'Jahr muss zwischen 1 und 3000 liegen';
    this.invalid_datetime        = 'Datum bitte in der Form DD.MM.YYYY angeben.\nOptional Uhrzeit in der Form HH:MM:SS angeben.\nZwischen Datum und Uhrzeit bitte ein Leerzeichen lassen.';
  }
  
  if( typeof translations != 'object' ) {
    var translations             = new default_translations_site();
  } else {
    var default_translations     = new default_translations_site();
    for( var property in default_translations ) {
      if( typeof translations[property] == 'undefined' ) { 
        translations[property]   = default_translations[property];
      }
    }
  }
  
  
    function is_IE4() {
        var Ver4 = (parseInt(navigator.appVersion) >= 4);
        return ((navigator.userAgent.indexOf("MSIE") != -1) && Ver4);
    }

    function is_Nav4() {
        var Ver4 = (parseInt(navigator.appVersion) >= 4);
        if ( (navigator.appName == "Netscape") && Ver4 ) {
            var origWidth = window.innerWidth;
            var origHeight = window.innerHeight;
        }
        return ((navigator.appName == "Netscape") && Ver4);
    }


    function setCookie(name, value) {
        var today = new Date();
        var expires = new Date();
        if ( value == null ) {
            expires.setTime(today.getTime());
            document.cookie = name + "=" 
            + "; expires=" + expires.toGMTString() + "; path=/";
        } else {
            expires.setTime(today.getTime() + 1000*60*60*24*365);
            document.cookie = name + "=" + escape(value)
            + "; expires=" + expires.toGMTString() + "; path=/";
        }
//        document.cookie = name + "=" + escape(value)
//        + ((expire == null) ? ";path=/" : ("; expires=" + expire.toGMTString())) + ';path=/'
//        document.cookie = name + "=" + escape(value)
    }


    function getCookie(Name) {
        var value = "";
        var search = Name + "=";
        if (document.cookie.length > 0) { 
            // if there are any cookies
            offset = document.cookie.indexOf(search);
            if (offset != -1) { 
                // if cookie exists
                offset += search.length;
                // set index of beginning of value
                end = document.cookie.indexOf(";", offset);
                // set index of end of cookie value
                if (end == -1)
                    end = document.cookie.length;
                value = unescape( document.cookie.substring(offset, end) );
            }
        }
        return value;
    }


    function isValidNumber( elem, force ) {

        var ok = true;
        var i, numStr="0123456789:.,-";
        if ( !force && elem.value == '' ) { return true; }
        
        for (i=0; i<elem.value.length; i++) {
          if ( numStr.indexOf(elem.value.charAt(i)) == -1 ) {
            ok = false; 
            break;
          }
        }

        if (ok) { ok = (elem.value != ''); }
        if (!ok) {
          alert(translations.invalid_number);
          elem.focus();
        }
        return ok;
    }


    function isValidDateSyntax( elem ) {																					// TEST FOR NUMERALS, PUNCTUATION SYMBOLS FOR DATE (".") & AGAINST EMPTY ELEMENT

        var ok = true;
        var i, numStr="0123456789.";
        
				if (elem == "") { ok = false; }
        if (ok) { 
	        for (i=0; i<elem.toString().length; i++) {
	          if ( numStr.indexOf(elem.toString().charAt(i)) == -1 ) {
	            ok = false; 
	            break;
	          }
	        }
        }
        return ok;
    }


    function isValidTimeSyntax( elem ) {																					// TEST FOR NUMERALS, PUNCTUATION SYMBOLS FOR TIME (":")

        var ok = true;
        var i, numStr="0123456789:";
        
        for (i=0; i<elem.toString().length; i++) {
          if ( numStr.indexOf(elem.toString().charAt(i)) == -1 ) {
            ok = false; 
            break;
          }
        }
        return ok;
    }


    function isValidDate( elem, force ) {																	// TEST FOR VALID DATE & TIME

        var ok = true;
        var timeStr, msg;
        var i = 0, j = 0, offset = 0;
				var monthLength = new Array (31,28,31,30,31,30,31,31,30,31,30,31);

        if ( elem.value == '' && !force ) { return true; }

        adate = elem.value.split(".");
        if ( adate.length == 3 ) {
            for(i=(adate.length-1); i>=0; i--) {
                switch (i) {
	                case 0 : 
	                        if (ok) { 
															ok = ( isValidDateSyntax(adate[i]) ) ;
	                            if (!ok) { msg = translations.syntax_error_day; break;}
	                        }
	                        if (ok) { 
														if ( (adate[1]==2) && (parseInt(adate[2]/4) == adate[2]/4 ) ) {
	                            ok = ( adate[i] > 0 && adate[i] <= 29 );
														} else {
	                            ok = ( adate[i] > 0 && adate[i] <= monthLength[adate[1]-1] );
														}
	                            if (!ok) { msg = translations.invalid_day; }
	                        }
	                        break;
	                case 1 : 
	                        if (ok) { 
															ok = ( isValidDateSyntax(adate[i]) ) ;
	                            if (!ok) { msg = translations.syntax_error_month; break;}
	                        }
	                        if (ok) { 
	                            ok = ( adate[i] > 0 && adate[i] <= 12 ); 
	                            if (!ok) { msg = translations.invalid_month; }
	                        }
	                        break;
	                case 2 :
	                        if (ok) {
	                          
	                           for( j=adate[i].length-1; j>=0; j--) {
	                             if ( adate[i].substr(j,1) == " " ) { 
	                               adate[i] = adate[i].substr(0, j);
	                             } else { break; }
	                           }
	                                
	                            offset = adate[i].indexOf(" ")
	                            if ( offset != -1 ) {
	                                timeStr = adate[i].substr(offset+1, adate[i].length-offset-1);
																	ok = ( isValidTimeSyntax(timeStr) ) ;
			                            if (!ok) { msg = translations.syntax_error_time; }

																	atime = timeStr.split(":")

	                                if ( atime.length == 2 || atime.length == 3 ) {

	                                    if (ok) { 
																					ok = (atime[0] != "");
	                                        if (!ok) { msg = translations.invalid_time; }
																					else {
			                                        ok = ( atime[0] >= 0 && atime[0] <= 23 ); 
			                                        if (!ok) { msg = translations.invalid_hour; }
			                                    }
	                                    }
	                                    if (ok) { 
																					ok = (atime[1] != "");
	                                        if (!ok) { msg = translations.invalid_time; }
																					else {
			                                        ok = ( atime[1] >= 0 && atime[1] <= 59 ); 
			                                        if (!ok) { msg = translations.invalid_minute; }
			                                    }
	                                    }
	                                    if ( ok && (atime.length == 3) ) {
																					ok = (atime[2] != "");
	                                        if (!ok) { msg = translations.invalid_time2; }
																					else {
			                                        ok = ( atime[2] >= 0 && atime[2] <= 59 ); 
			                                        if (!ok) { msg = translations.invalid_second; }
			                                    }
	                                    }
	                                } else {
	                                    ok = false; msg = translations.invalid_time;
	                                }
															adate[i] = adate[i].substr(0,offset);
	                            }
					                        if (ok) { 
																			ok = ( isValidDateSyntax(adate[i]) ) ;
					                            if (!ok) { msg = translations.syntax_error_year; }
																			break;
					                        }
	                                if (ok) { 
	                                    ok = ( adate[i] > 0 && adate[i] <= 3000 ); 
	                                    if (!ok) { msg = translations.invalid_year; }
	                                }
	                        }
	                        break;
                }
            }
        }  

        if (!ok) { 
          alert( msg ); elem.focus();
        } else {
          ok = (i==-1);
          if (!ok) { alert(translations.invalid_datetime); elem.focus(); }
        }
        return ok;
    }


    function open_div( divID ) {
        if ( is_IE4() ) { document.write('<DIV ID="' + divID + '" STYLE="position:relative; visibility:hidden">'); }
    }


    function close_div() {
        if ( is_IE4() ) { document.write('</DIV>'); }
    }


    function flip_div(divGroup, checked) {
        if ( is_IE4() ) {
            for(var i=0; i<divGroup.length; i++) {
                if (divGroup[i] != "" && divGroup[i] != null ) {
                    if ( is_Nav4() ) {
                        document.layers[divGroup[i]].visibility = (checked) ? "visible" : "hidden";
                    } else if ( is_IE4() ) { document.all(divGroup[i]).style.visibility = (checked) ? "visible" : "hidden"; }
                    for(var j=0; j<restore_elements.length; j++) {
                        if (restore_elements[j].indexOf(":" + divGroup[i]) != -1) { restoreDefaults( restore_elements[j].substr(0, restore_elements[j].indexOf(":")), checked); }
                    }
                }
            }
        }
    }


