// 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_idx(idx,psAction)
{
    document.forms[idx].action = psAction;
}

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)); } // dieser regex fuehrt dazu,  dass das system ausgelastet ist (nichts geht mehr)
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_by_vorwahl(psMsisdn,psTrenner)
{
    /*
        psMsisdn muß schon mit "01" anfangen, kein +49,++49
        01511
        01512
        01515
        01520
        01522
        01570
        01575
        01577
        
        0160
        0162
        0163
        0170
        0171
        0172
        0172
        0173
        0175
        0177
        0178
        0176
        0179
     */
     if (psMsisdn.charAt(2)=='5')
     {
        var sPrefix = psMsisdn.substr(0, 5);
        if (psMsisdn.length>5)
        {
            var sSuffix = psMsisdn.substr(5);
            return sPrefix + psTrenner + sSuffix;
        }
        else        
            return sPrefix + psTrenner ;
     }
     else
     {
        var sPrefix = psMsisdn.substr(0, 4);
        if (psMsisdn.length>4)
        {
            var sSuffix = psMsisdn.substr(4);
            return sPrefix + psTrenner + sSuffix;
        }
        else        
            return sPrefix + psTrenner ;
     }
}


function format_msisdn_trenner_single(psMsisdn,psTrenner)
{
    var sPrefix, sSuffix;
    var i,state, c;
    state = 0;
    sPrefix ='';
    sSuffix ='';
    // alert("format_msisdn_trenner_single" +psMsisdn+" len: "+psMsisdn.length);
    if (psMsisdn.length<5)
        return psMsisdn + psTrenner;
    for (i=0; i<psMsisdn.length; i++)
    {
        c = psMsisdn.charAt(i);
        switch(state)
        {
        case 0: switch(c)
                {
                case '+': state=1; break;
                case '0': state=5; break;
                case '4': state=2; break;
                default : state=8; // Fehlerfall, wir zeigen nur noch den String an, wie er übergeben wurde
                          sPrefix=sPrefix+c;
                          break; 
                }
                break;
        case 1: switch(c)
                {
                case '4': state=2; break;
                default : state=8;  // Fehlerfall, wir zeigen nur noch den String an, wie er übergeben wurde 
                          sPrefix=sPrefix+c;
                          break; 
                }
                break; 
        case 2: switch(c)
                {
                case '9': state=3; break;
                default : state=8;  // Fehlerfall, wir zeigen nur noch den String an, wie er übergeben wurde 
                          sPrefix=sPrefix+c;
                          break; 
                }
                break; 
        case 3: sPrefix='0';
                state=8;  // jetzt normal weiter parsen 
                sPrefix=sPrefix+c;
                break; 
        case 5: switch(c)
                {
                case '0': state=6; break;
                case '1': sPrefix = '01';
                          state=8; 
                          break;
                default : state=8; // Fehlerfall, wir zeigen nur noch den String an, wie er übergeben wurde
                          sPrefix=sPrefix+c;
                          break;                 
                }
                break; 
        case 6: switch(c)
                {
                case '0': sPrefix = '0';
                          state=8; 
                          break;
                case '4': sPrefix = '0';
                          state=2; 
                          break;
                default : state=8; // Fehlerfall, wir zeigen nur noch den String an, wie er übergeben wurde
                          sPrefix=sPrefix+c;
                }
                break;
        case 8: if (sPrefix.length<5)  
                    sPrefix=sPrefix+c;
                else
                    sSuffix =sSuffix+c; 
                break; 
        }
    }
    if (1)
        return format_msisdn_by_vorwahl(sPrefix + sSuffix,psTrenner);
    else
        return sPrefix + psTrenner + sSuffix;
}

function format_msisdn_trenner(psMsisdn,psTrenner)
{
    var sPrefix = psMsisdn.substr(0, 6);
    sPrefix = sPrefix.replace(/49/, '0');  // schwierig bei "0172491212"
    var sSuffix = psMsisdn.substr(6);
    
    if (1)
        return format_msisdn_by_vorwahl(sPrefix + sSuffix,psTrenner);
    else
        return sPrefix + psTrenner + sSuffix;
}
function format_msisdn(psMsisdn)
{
    return format_msisdn_trenner(psMsisdn,"/");
}

function putHandyField(nr)
{
    document.getElementById('handynr').innerHTML=format_msisdn_trenner(nr,' / ');
}

