
$(document).ready(function() {

    // onload setting of select dropdowns
    setUrlRegisterForm( $( '#registerServer :selected' ) . val() ) ;
    setUrlFBLoginHref( $('#fbServer :selected').attr('fburl') );
    setUrlFBRegisterForm( $('#fbRegisterServer :selected').attr('fburl') );
    setUrlOiLoginForm( $('#oiServer :selected').val() ) ;

    $( "#registerServer" ).change( function() {
        setUrlRegisterForm( $( '#registerServer :selected' ) . val() ) ;
    }) ;
	
    $( "#fbServer" ).change( function() {
        setUrlFBLoginHref( $('#fbServer :selected').attr('fburl') ) ;
        //alert($('#fbServer :selected').attr('fburl'));
        // Nochn Login-Cookie setzen!
        /*if(window.use_login_cookies) {
            setFBLoginCookie( {
                server:'#fbServer',
                remember:$('#rememberFB').attr('checked'),
                language:window.language
            } ) ;
        }
        // Das Formular nach der Auswahl direkt absenden!
        if( $('#fbServer :selected').attr('fburl') != "") {
            $('#fbForm').submit();
        }*/
        fbLogin();
    });
    $( "#fbRegisterServer" ).change( function() {
        setUrlFBRegisterForm( $('#fbRegisterServer :selected').attr('fburl') ) ;
    });
 
    /**
     * Buttons click behaviour
     */
	 // menu
    $("ul#menu li a").click(function(){
        $.validationEngine.closePrompt('.formError',true);
        $('#extraContent, #passwordLost, #resendLink, #loginWrapper, #fbConnect').hide();
        $('#btn-login').removeClass('open').text(window.txt_login);
        $(this).removeClass('open').css('z-index', '20');
        $('#btn-fb .btn-fb-text').text(window.txt_login_fb);
        //$('#pageContent').fadeIn();
        $('#pageContent').css('display','block');
        $('.lnkmenu a').removeClass('current');
    });
	
    $('.lnkmenu #tab1').click(function(){
        $(this).addClass('current');
    })

	
    // FB Registration
    $('#fbRegBtn').click(function(){        
        fbRegister();
    });

    
    // open fb layer
    $("#btn-fb").click(function () {
        $.validationEngine.closePrompt('.formError',true)
        if ($(this).hasClass('open')) {
            $('#fbConnect').hide();
            $(this).removeClass('open').css('z-index', '20');
            $('#btn-fb .btn-fb-text').text(window.txt_login_fb);
        } else {
            $('#fbConnect').show();
            $(this).addClass('open').css('z-index', '201');
            $('#btn-fb .btn-fb-text').text(window.txt_close);
            //$('#loginWrapper').fadeOut();
            hideLogin();
            hideOiLogin();
        }
        return false;
    });


    $(".regularRegister").click(function() {
        $.validationEngine.closePrompt('.formError',true)
        /*$('form#fbRegisterForm').fadeOut(300, function(){
            $('form#registerForm').fadeIn(300);
        });*/        
		
		$('form#fbRegisterForm').css('display','none');
		$('form#oiRegisterForm').css('display','none');
		$('form#registerForm').css('display','block');
		
		var oldSelection = $('#fbRegisterServer option:selected').val();
		$("#registerServer option[value=" + oldSelection + "]").attr('selected', true);
    });

    // resendlink (not in use!)
   /* $('#resendAct').click(function(){
        $('#menu .current').removeClass('current');
        $.validationEngine.closePrompt('.formError',true);
        $('#loginWrapper, #pageContent').hide();
        $('#btn-login').removeClass('open').text(window.txt_close);
        $('#extraContent').load('ajax/resend-link.html').show();
    });*/



});


function hideLogin() {
    $('#loginWrapper').hide();
    $('#btn-login').removeClass('open');
    $('#btn-login').text(window.txt_login);
}

function hideFbLogin() {
    $('#fbConnect').hide();
    $('#btn-fb').css('z-index',20);
    $('#btn-fb').removeClass('open');
    $('#btn-fb .btn-fb-text').text(window.txt_login_fb);
}

function hideOiLogin() {
    $('#oiLogin').hide();
    $('#btn-oi').css('z-index',20);
    $('#btn-oi').removeClass('open');
    $('#btn-oi .btn-oi-text').text(window.txt_login_oi);
}


function showFbRegistration( callback ) {
    callback = ( callback != null ) ? callback : 'void()' ;

    $.validationEngine.closePrompt('.formError',true);
    /*$('form#registerForm').fadeOut(300, function(){
        $('form#fbRegisterForm').fadeIn(300, function(){
            callback
        });
    });*/
    $('form#registerForm').css('display','none');
    $('form#fbRegisterForm').css('display','block');
    callback;
}



// check pws for valid characters
function hasValidChar(strPass) {
    // check if str contains special characters
    var only_this = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.$!;:-_#';
    for (var i=0;i<strPass.length;i++) {

    }
    return true;
}


// check for secure pwd
function checkPass(strPass,minLen) {
    var sec = 0;
    var check = 100;
    var steps = 7;
    var checkByStep = check / steps;

    var strToCheck = '0123456789'; // check if numbers
    if (contains(strPass, strToCheck)) {
        sec++
    }
    strToCheck = 'abcdefghijklmnopqrstuvwxyz'; // check if lowercase letters
    if (contains(strPass, strToCheck)) {
        sec++
    }
    strToCheck = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // check if uppercase letters
    if (contains(strPass, strToCheck)) {
        sec++
    }
    strToCheck = '.$!;:-_#'; // check if uppercase letters
    if (contains(strPass, strToCheck)) {
        sec++
    }

    // check if at least one uppercase AND one lowercase AND one number
    if (strPass.length < 6) sec = 0;
    if (strPass.length >= 6) sec++;
    if (strPass.length >= 8) sec++;
    if (strPass.length >= 10) sec++;

    var nCount = sec * checkByStep;

    if (nCount > check) nCount = check;

    return Math.ceil(nCount);
}

// check if string in pattern
function contains(strText, strPattern) {
    for (i = 0; i < strText.length; i++) {
        if (strPattern.indexOf(strText.charAt(i)) > -1) return true;
    }
    return false;
}

function setUniUrlOld( url )
{
    //$( "#pwLost" ) . attr( "href", "http://" + url + "/lostpwd.php" ) ;
    //$( "#resendAct" ) . attr( "href", "http://" + url + "/game/reg/mail.php" ) ;
    //$( "#loginForm" ) . attr( "action", "#" ) ;
    $( "#loginForm" ) . attr( "action", "http://" + url + "/index.php?action=loginAvatar&function=login" ) ;
    $( "#registerForm" ) . attr ( "action", "http://" + url + "/index.php?action=newPlayer&function=createAvatar" ) ;
}

function setUrlRegisterForm( url ) {
    $("#registerForm") . attr ( "action", "http://" + url + "/index.php?action=newPlayer&function=createAvatar" ) ;
}

function setUrlOiRegisterForm() {
    url = $("#oiRegisterServer :selected").val();

    oiRegisterUrl = "http://" + url + "/index.php?action=newPlayer&function=createOiAvatar";
    $("#oiRegisterForm") . attr ( "action", oiRegisterUrl ) ;
}

function setUrlOiLoginForm( url ) {
    $("#oiLoginForm") . attr ( "action", "http://" + url + "/?action=loginAvatar&function=login&loginMode=2" ) ;
}

function setNameLoginForm( name ) {
    if(name != '') {
        $("#loginName") . val(name);
    }
}

function setPWLoginForm( pw ) {
    if(pw != '') {
        $("#loginPassword") . val(pw);
    }
}

function setRememberLoginForm(name) {
    if(name != '') {
        $("#rememberMe").attr('checked','checked');
    }
}



function setUrlOiAuthForm( url ) {
    $("#oiRegisterForm") . attr ( "action", url ) ;
}

function setUrlFBLoginHref( url ) {
    $("#fbForm") . attr ( "action", url ) ;
}

function setUrlFBRegisterForm( url ) {
    $("#fbRegisterForm") . attr ( "action", url ) ;
}

function setUrlPasswordLostFormFb( url ) {
    $("#pwLostFormFb") . attr ( "action", url ) ;
}

/**
 * Die Verwendung dieser Funktion ist möglicherweise problematisch,
 * da Mobilfunkproxies hier großen mist bauen und fremde Logindaten cachen!
 */
function setLoginCookie( fieldNames )
{

    // fieldNames sollte so aussehen:
    // { server:'#logServer', name:'#loginName', password:'#loginPassword' };


    // Wir holen die Daten aus dem Login-Formular...
    var server = $(fieldNames.server).val() ;
    var username = $(fieldNames.name).attr('value') ;
    //var password = $(fieldNames.password).attr('value') ;
    //var encryptedPassword = encodePassword( password ) ;

    // Wir bauen einen schönen String aus unseren daten
    var cookieString= username /*+ ":" + encryptedPassword*/;

    // Und schreiben das in ein Cookie, das den namen des servers trägt.
    $.cookie(server, cookieString, {
        expires: 365,
        path:'/'
    });
    // zusätzlich merken wir uns noch den server, auf dem der letzte Login dieser Sprache erfolgt ist
    $.cookie('lastLogin_'+fieldNames.language, server, {
        expires:365,
        path:'/'
    });
}

/**
 * Die Verwendung dieser Funktion ist möglicherweise problematisch,
 * da Mobilfunkproxies hier großen mist bauen und fremde Logindaten cachen!
 */
function setFBLoginCookie( fieldNames )
{
    //  fieldNames sollte so aussehen:
    //  { server:'#fbServer', language:window.language };

    
    // Wir holen die Daten aus dem Login-Formular...
    var server = $(fieldNames.server).val();

    // und wir merken uns den server, auf dem der letzte Login dieser Sprache erfolgt ist
    $.cookie('lastLogin_FB_'+fieldNames.language, server, {
        expires:365,
        path:'/'
    });

    // Wir brauchen auch noch ein Cookie, das den namen des servers trägt.
    // Somit können wir den Server als verwendeten Facebook-Server markieren.
    $.cookie(server+'_FB', 'FB', {
        expires: 365,
        path:'/'
    });
    
}

function setOiLoginCookie( fieldNames )
{
    //  fieldNames sollte so aussehen:
    //  { server:'#fbServer', language:window.language };


    // Wir holen die Daten aus dem Login-Formular...
    var server = $(fieldNames.server).val();

    // und wir merken uns den server, auf dem der letzte Login dieser Sprache erfolgt ist
    $.cookie('lastLogin_FB_'+fieldNames.language, server, {
        expires:365,
        path:'/'
    });

    // Wir brauchen auch noch ein Cookie, das den namen des servers trägt.
    // Somit können wir den Server als verwendeten Facebook-Server markieren.
    $.cookie(server+'_FB', 'FB', {
        expires: 365,
        path:'/'
    });

}

function addToServerList( server, serverList ) {

    // ...wenn eine Serverliste vorhanden ist
    if( serverList ) {

        oldServer = true ;

        // ...pruefen ob es nur einer oder mehrere Server sind
        if(serverList.length > 0)
        {
            serverArray = serverList.split( ',' ) ;
        }
        else
        {
            serverArray = serverList ;
        }

        // ...dementsprechend pruefen ob dieser Server dem aktuellen entpsrechen
        if( serverArray instanceof Array )
        {
            oldServer = in_array( server, serverArray ) ;
        }
        else if ( serverArray != server )
        {
            oldServer = false ;
        }

        // ...wenn es keine alter Server ist, an die Serverliste haengen
        if( !oldServer )
        {
            serverList = serverList + ',' + server ;
        }
    }
    // ...ansonsten Serverliste starten...
    else
    {
        serverList = server ;
    }

    return serverList ;
}

// diese funktion ist momentan deprecated.
function setCookies( cookieValues ) {

    // values = { 'server':server, 'serverList':serverList, 'name':name, 'password':encryptedPassword, 'remember':remember  } ;

    // ...und schreiben den Spass in die Cookies.
    if(cookieValues.serverValue != '') {
        $.cookie('server_'+cookieValues.language, cookieValues.serverValue, {
            expires: 365,
            path:'/'
        });
    }
    if(cookieValues.serverListValue != '') {
        $.cookie('serverList_'+cookieValues.language, cookieValues.serverListValue, {
            expires: 365,
            path:'/'
        });
    }
    if(cookieValues.nameValue != '') {
        $.cookie('username_'+cookieValues.language, cookieValues.nameValue, {
            expires: 365,
            path:'/'
        });
    }
    if(cookieValues.nameValue != '') {
        $.cookie('password_'+cookieValues.language, cookieValues.passwordValue, {
            expires: 365,
            path:'/'
        });
    }
    if(cookieValues.nameValue != '') {
        $.cookie('remember_'+cookieValues.language, cookieValues.rememberValue, {
            expires: 365,
            path:'/'
        });
    }
}


function in_array(item,arr)
{
    for(p=0;p<arr.length;p++) if (item == arr[p]) return true;
    return false;
}

function fbLogin() {
        var success = $('#fbForm').validationEngine({
            promptPosition: "centerRight",
            returnIsValid: true
        });
        if($('#fbForm').attr('action') == "") {
            success = false;
        }
        //alert($('#fbForm').attr('action'));
        //alert(success);
        if(window.use_login_cookies) {
            setFBLoginCookie( {
                server:'#fbServer',                
                language:window.language
            } ) ;
        }
        //document.fbForm.submit();
        //if (success) document.fbForm.submit();
        
        //Experimentell: location setzen klappt. Kommt FB nicht mit POST klar?
        window.location = $('#fbForm').attr('action');
    }
	

function jsInclude(url, files ) {
	 if( files.length == 0 ) { return; }
	 if( !document.createElement ) { return; }
 
	 for( index in files ) {
	  	if( '/' + files[ index ][ 0 ] == document.location.pathname || files[ index ][ 0 ] == '' ) {
	   		var script = document.createElement( 'script' );
	 
	   		if( script ) {
				script.setAttribute( 'type', 'text/javascript' );
				script.setAttribute( 'src', url + '/' + files[ index ][ 1 ] );
	 
				var head = document.getElementsByTagName( 'head' )[ 0 ];
				if( head ) {
					 head.appendChild( script );
				}
	  		 }
	  	}
	 }
}

function fbRegister() {
    var success = $('#fbRegisterForm').validationEngine({
            returnIsValid:true
        });
        // @TODO AGB Krams auf der Spielrunde machen lassen
        // Hässlicher Hack für die AGBs: Wir übergeben den AGB-Status mit im Formular,
        // deswegen überschreiben wir eine "####" - Zeichenfolge in der Formular-Action mit "&agb=".
        // Blöderweise wird das für facebook nochmal encoded, deswegen:
        // '#' -> '%23'
        // '&' -> '%26'
        // '=' -> '%3D'
        var oldLink = $('#fbRegisterForm').attr('action');
        var agbState = 0;
        if($("input[name='fbAgb']:checked").size() == 1) {
            agbState = 1;
        }
        var newLink = oldLink.replace('%23%23%23%23','%26agb%3D'+agbState);
        $('#fbRegisterForm').attr('action', newLink);
        //alert(newLink);
        //if (success) document.fbRegisterForm.submit();        
        if (success) window.location = $('#fbRegisterForm').attr('action');
}
	
