
var popupWindow;

function vpOpenWin( url, w, h )
{
    if (popupWindow) {
        if (popupWindow.closed == true) {
            popupWindow = window.open( url, "", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width="+w+",height="+h);
            if (window.focus) {
                popupWindow.focus();
            } else {
                popupWindow.location = url;
                if (window.focus) {
                    popupWindow.focus();
                }
            }
        }
    } else {
        popupWindow = window.open( url, "", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width="+w+",height="+h);
        if (window.focus) {
            popupWindow.focus();
        }
    }
}



//
//  get the reseller from URL (eg. ...?reseller=Max%20Moritz)
//  this function also could be used for other get parameters
//
function vpGetURLdata( which )
{
    var ret = "";
    var formular = new Array(0);
    var url = window.location.search;
    if (url != "" && which != "") {
        url = url.substring(1,url.length);
        liste = url.split("&");
        for (i=0;i<=liste.length-1;i++) {
            temp = liste[i].split("=");
            formular.splice(formular.length,2,temp[0],temp[1]);
        }
        for (i=0;i<=formular.length-1;i++) {
            formular[i] = formular[i].replace(/\+/g," ");
            formular[i] = unescape(formular[i]);
            if ((i & 1) && formular[i-1] == which) {
                ret = formular[i];
                break;
            }
        }
    }
    return ret;
}



//
//  wahr, wenn das Zeichen eine Zahl ist
//
function vpIsDigit( ch )
{
    if ((ch >= '0') && (ch <= '9')) {
        return true;
    } else {
        return false;
    }
}

//
//  wahr, wenn das Zeichen ein Buchstabe ist
//
function vpIsAlpha( ch )
{
    if (((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z'))) {
        return true;
    } else {
        return false;
    }
}

//
//  wahr, wenn das Zeichen alphanumerisch ist
//
function vpIsAlnum( ch )
{
    if (vpIsAlpha( ch ) || vpIsDigit( ch )) {
        return true;
    } else {
        return false;
    }
}

//
//  wahr, wenn kein Zeichen aus str2 in str1 vorkommt
//
function vpNotIn( str1, str2 )
{
    var i = 0;
    var j = str2.length;
    for ( ; i<j; i++ ) {
        var str3 =  str2.charAt(i);
        if (str1.indexOf( str3 ) != -1) {
            return false;
        }
    }
    return true;
}

//
//  wahr, wenn der Username gültig ist
//
function vpCheckUsername( username, mustBeQuoted )
{
    var i = 0;
    var j = username.length;
    if (username.charAt(0) != '"') {
        if ((username.charAt(0) < ' ') || (username.charAt(0) > '~') || !vpNotIn( mustBeQuoted, username.charAt(0))) {
            return false;
        }
        for (i=1; i<j; i++) {
            if (((username.charAt(i) < ' ') || (username.charAt(i) > '~') || !vpNotIn( mustBeQuoted, username.charAt(i))) && (username.charAt(i-1) != '\\')) {
                return false;
            }
        }
    } else {
        if (username.charAt( j-1 ) != '"') {
            return false;
        }
        for (i=1; i<j-1; i++) {
            if (((username.charAt(i) == '\n') || (username.charAt(i) == '\r') || (username.charAt(i) == '\"')) && (username.charAt(i-1) != '\\')) {
                return false;
            }
        }
    }
    return true;
}

//
//  wahr, wenn eine Zifferfolge vorliegt
//
function vpCheckNr( nr )
{
    var i=0;
    var j=nr.length;

    if (j < 1) {
        return false;
    }

    for ( ; i<j; i++ ) {
        if ((nr.charAt(i) < '0') || (nr.charAt(i) > '9')) {
            return false;
        }
    }

    return true;
}

//
//  wahr, wenn IP-Adresse als gütig eingestuft wurde
//
function vpCheckIpnr( ipnr )
{
    var iL=0;
    var iC=0;
    var i=0;
    var sNr = "";

    for ( ; i< ipnr.length; i++ ) {
        if (ipnr.charAt(i) == '.') {
            if (!iL || (iL> 3) || parseInt( sNr,10 ) > 255) {
                return false;
            }
            iC++;
            iL = 0;
            sNr = "";
            continue;
        }
        if (vpIsDigit(ipnr.charAt(i))) {
            iL++;
            sNr = sNr + ipnr.charAt(i);
            continue;
        }
        return false;
    }

    if (parseInt( sNr,10 ) > 255) {
        return false;
    }
    if (((iC==3) && (iL>=1) && (iL<=3)) || ((iC==4) && (!iL))) {
        return true;
    } else {
        return false;
    }
}

//
//  wahr, wenn der Fully Qualified Domain Name als gütig eingestuft wurde
//
function vpCheckFqdn( fqdn )
{
    var iL=0;
    var iC=0;
    var i=fqdn.length-1;

    if ((fqdn.charAt(0) == '.') || (fqdn.charAt(0) == '-')) {
        return false;
    }
    if (fqdn.charAt(i) == '.') {
        i=i-1;
    }

    for ( ; i>=0; i-- ) {
        if (fqdn.charAt(i) == '.') {
            if (iL < 2 && iC < 2) {
                return false;
            }
            if (fqdn.charAt(i-1) == '-') {
                return false;
            }
            iC++;
            iL = 0;
            continue;
        }
        if (vpIsAlnum(fqdn.charAt(i))) {
            iL++;
            continue;
        }
        if (fqdn.charAt(i) == '-') {
            if (!iL) {
                return false;
            }
            iL++;
            continue;
        }
        return false;
    }

    if (!iC || (iL == 1 && iC < 2) || (!iL && iC==1)) {
        return false;
    }

    return true;
}

//
//  wahr, wenn der Hostname als gütig eingestuft wurde
//
function vpCheckHostname( hostname )
{
    if (hostname.charAt(0) == '[') {
        if (hostname.charAt(hostname.length-1) != ']') {
            return false;
        }
        var ipnr = hostname.substring( 1, hostname.length -1 );
        return vpCheckIpnr( ipnr );
    }

    if (hostname.charAt(0) == '#') {
        var nr = hostname.substring( 1, hostname.length );
        return vpCheckNr( nr );
    }

    return vpCheckFqdn( hostname );
}

//
//  wahr, wenn die E-mail ohne Realname als gütig eingestuft wurde
//
function vpCheckEmailAdr( address )
{
    var status = true;
    var username = "";
    var hostname = "";

    if (address.length < 8) {
        return false;
    }

    var seperate = address.lastIndexOf("@");
    if (seperate == -1) {
        return false;
    }

    username = address.substring(0, seperate );
    if (!vpCheckUsername(username, "<>()[],;:@\" ")) {
        return false;
    }

    hostname = address.substring(seperate+1, address.length );
    if (!vpCheckHostname(hostname)) {
        return false;
    }

    return true;
}

//
//  wahr, wenn die E-Mail Adresse als gütig eingestuft wurde,
//  wobei der zweite Parameter festlegt, ob Realname akzeptiert werden oder nicht
//
function vpCheckEmail( email, allowFullname )
{
    var existFullname = false;
    var status = true;
    var fullname = "";
    var adress = "";
    if (email.length < 8) {
        return false;
    }
    var emailBegin = email.indexOf("<");
    var emailEnd = email.lastIndexOf(">");

    if ((emailBegin == -1) && (emailEnd == -1)) {
        return vpCheckEmailAdr( email );
    }

    if (((emailBegin == -1) && (emailEnd != -1)) || ( (emailBegin != -1) && (emailEnd == -1))) {
        return false;
    }

    adress = email.substring( emailBegin+1, emailEnd );

    if (!vpCheckEmailAdr( adress )) {
        return false;
    }

    if (email.length == adress.length + 2) {
        return true;
    } else {
        if (!allowFullname) {
            return false;
        }
    }

    if (emailEnd == email.length - 1) {
        if (emailBegin == 0 ) {
            return true;
        }
        if (email.charAt( emailBegin -1) != ' ' ) {
            return false;
        }
        fullname = email.substring( 0, emailBegin-1 );
        return vpCheckUsername ( fullname, "<>()[],;:@\"" );
    }

    return false ;
}

