// version: 0.9.2.19
function browserinfo()
{
    this.agt   = navigator.userAgent.toLowerCase();
    this.opera = this.agt.indexOf('opera') != -1;
    this.ie    = this.agt.indexOf('msie') != -1 && !this.opera;
    this.gecko = !this.ie && !!document.getElementById && !this.opera;

    this.bStrict  = typeof document.compatMode!='undefined' && document.compatMode!='BackCompat';
    this.sName    = this.ie ? 'ie' : this.opera ? 'opera' : 'gecko';
    this.sVersion = this.ie ? this.agt.substr(this.agt.indexOf('msie ') + 5, 3) : 'tbd';
    //alert(this.sName)
    //alert('opera='+this.opera+' ie='+this.ie+' gecko='+this.gecko)
}

var oBrowser = new browserinfo();

var sDoInit  = '';

function addInit(psToDo)
{
    /* psToDo immer mit ';' am ende */
    sDoInit += psToDo;
}

function do_init()
{  
    eval(sDoInit);
    pos_menu_meta();// koennte mandant-spezifisch sein, muss aber als letztes ueberprueft werden
    
    // nach js-initialisierung content-area sichtbar machen
    if (document.getElementById('div_content_cover'))
      document.getElementById('div_content_cover').style.visibility = 'hidden';
}

var bNeed2Login = false;// wird bei onfocus/onblur beim quicklogin gesetzt
document.onkeydown = function(_event)
{
    // automatisches einloggen bei enter
    var sKeycode = oBrowser.sName == 'ie' ? window.event.keyCode : _event.which;
    
    if (bNeed2Login) if (sKeycode == '13') do_login();
}

function do_login()
{
    if (bHttpsSwitch)
    {
        sAction1 = location.href.replace(sSite + location.search, '');
        sAction2 = sAction1.replace(/http:\//, 'https:/');
        sAction3 = sAction2 + 'includes/do_login.php';
        set_form_action(sAction3);
    }
    else
      set_form_action('includes/do_login.php');

    document.forms[0].submit();
    
    return false;
}

function set_form_action(psAction)
{
    document.forms[0].action = psAction;
}

//Datumsfunktion für date_selection berücksichtigt monatstage und schaltjahre bei onchange
var currentDate = new Date();
var dateSelectionStart = 0;
function setDays(prefix,winObj,start)
{
    start = dateSelectionStart;
    if(!winObj) winObj = window;
	var frmObj = winObj.document.forms[0];
    
	var y = eval("frmObj."+prefix+"jahr.options[frmObj."+prefix+"jahr.selectedIndex].value");
	var m = eval("frmObj."+prefix+"monat.selectedIndex")-start-1; //Beispiel April = 3
    var d = eval("frmObj."+prefix+"tag");
	
	// Feb. => Schaltjahre sind alle durch 4 teilbar, bis auf die, die auch durch 100 teilbar sind, aber nicht durch 400!
	if(m==3||m==5||m==8||m==10) days = 30;
	else if(m==1)
	  if(Math.floor(y/4)==(y/4) && (Math.floor(y/100) != (y/100) || Math.floor(y/400) == (y/400)) ) days = 29;
	  else days = 28;
	else days = 31;

    sel = d.selectedIndex;
    d.length = start;
	for(i = -1; i < days; i++) 
	{
	    if(i==-1)
        {
            d.options[0] = new Option();//20040406 rb, sonst ist nicht der erste eintrag("01") selektiert(im ns7)
 	        d.length = i+start+2;
            d.options[(i+start+1)].value = 'TT';
 	        d.options[(i+start+1)].text  = 'TT';
        }
        else
        {
 	        d.length = i+start+2;
            d.options[(i+start+1)].value = String((i+101)).substring(1);
	        d.options[(i+start+1)].text  = String((i+101)).substring(1);
	    }
	}
    
    if(sel >= 0 && sel < d.length-1+start) d.selectedIndex = sel;
    else d.selectedIndex = d.length-1; 
}

if(!String.prototype.trim) String.prototype.trim = function()
{
    s = this;
    s = s.replace(/^(\r|\v|\s|\n|\t)*/,"");
    s = s.replace(/(\r|\v|\s|\n|\t)*$/,"");
    return s;
}

//function checkEmail(s) { return(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$/.test(s)); }
//function checkEmail(s) { return(/^\w+([\.-]?\w+)+@\w+([\.-]?\w+)+(\.\w{2,6})+$/.test(s)); }
function checkEmail(s) { return(/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(s)); }

function inArray(val,arr)
{
    if(typeof(arr) == "undefined") return false;
    for(var i=0;i<arr.length;i++) if(String(val).toLowerCase() == String(arr[i]).toLowerCase()) return true;
    return false;
}

function getRealTop(el)
{
    if (arguments.length==0) el = this;
    yPos = el.offsetTop;
    tempEl = el.offsetParent;
    while (tempEl != null)
    {
        yPos += tempEl.offsetTop;
        tempEl = tempEl.offsetParent;
    }
    return parseInt(yPos);
}

function getRealLeft(el)
{
    if (arguments.length==0) el = this;
    xPos = el.offsetLeft;
    tempEl = el.offsetParent;
    while (tempEl != null)
    {
        xPos += tempEl.offsetLeft;
        tempEl = tempEl.offsetParent;
    }
    return parseInt(xPos);
}

function setup_creditcardnumber_input()
{
    // die 4 felder fuer kreditkarte fuellen das hidden field, preselection ggf. aus dem hidden field
    var oForm = document.forms[0];
        
    var oField1 = oForm.fld_kreditkarte_kartennummer_1;
    var oField2 = oForm.fld_kreditkarte_kartennummer_2;
    var oField3 = oForm.fld_kreditkarte_kartennummer_3;
    var oField4 = oForm.fld_kreditkarte_kartennummer_4;
    
    // vorbelegung aus oForm.fld_zahlungsart_kreditkarte_kartennummer
    oField1.value = oForm.fld_zahlungsart_kreditkarte_kartennummer.value.substring(0,4);
    oField2.value = oForm.fld_zahlungsart_kreditkarte_kartennummer.value.substring(4,8);
    oField3.value = oForm.fld_zahlungsart_kreditkarte_kartennummer.value.substring(8,12);
    oField4.value = oForm.fld_zahlungsart_kreditkarte_kartennummer.value.substring(12,16);
    
    aInactiveKey = new Array(9,16,37,38,39,40);//tab,shift,pfeiltasten
    
    function check_keyup(_event)
    {
        oForm.fld_zahlungsart_kreditkarte_kartennummer.value = oField1.value + oField2.value + oField3.value + oField4.value;
        
        oChar = _event ? _event.which : window.event.keyCode;
        
        return !inArray(oChar,aInactiveKey);
    }
    
    oForm.fld_zahlungsart_kreditkarte_kartennummer.focus = function ()
    {
        // focus funktion weiterreichen
        // im firefox 1.03 gibt es beim focus/select eine fehlermeldung!?
        oField1.focus();
        oField1.select();
    }
    
    oField1.onkeyup = function (_event)
    {
        if (check_keyup(_event) && oField1.value.length == 4)
        {
            oField2.focus();
            oField2.select();
        }
    }
    
    oField2.onkeyup = function (_event)
    {
        if (check_keyup(_event) && oField2.value.length == 4)
        {
            oField3.focus();
            oField3.select();
        }
    }
    
    oField3.onkeyup = function (_event)
    {
        if (check_keyup(_event) && oField3.value.length == 4)
        {
            oField4.focus();
            oField4.select();
        }
    }

    oField4.onkeyup = function (_event)
    {
        check_keyup(_event);
    }
}

function open_window(psSrc, psName, psArg)
{
    var oWin = window.open(psSrc, psName, psArg);
    
    oWin.focus();
}

function format_msisdn(psMsisdn)
{
    var sPrefix = psMsisdn.substr(0, 6);
    sPrefix = sPrefix.replace(/49/, '0');
    var sSuffix = psMsisdn.substr(6);

    return sPrefix + "/" + sSuffix;
}