function urlencode(str) 
{
    str = escape(str);
    str = str.replace('+', '%2B');
    str = str.replace('%20', '+');
    str = str.replace('*', '%2A');
    str = str.replace('/', '%2F');
    str = str.replace('@', '%40');
    return str;
}

var frontpage_user_login = function( obj )
    {
        var login_control = $("login");
        var register_control = $("register");

        if( obj.loggedin == true )
        {
            var login_control = $("login");
            new Element( 'div', 
                {
                    'class': 'loggedin',
                    'html': 'Welcome, '+obj.username+'.'
                } ).inject( login_control );
            new Element( 'div', 
                {
                    'class': 'loggedin2',
                    'html': obj.numusers+' users signed up.'
                } ).inject( login_control );

            var ul = new Element( 'ul', 
                {
                } ).inject( register_control );
            var li1 = new Element( 'li', 
                {
                } ).inject( ul );
            new Element( 'a', 
                {
                    'href': '/'+LANGUAGE_CODE+'/user/profile/'+obj.id+'/',
                    'html': 'Profile'
                } ).inject( li1 );
            var li2 = new Element( 'li', 
                {
                } ).inject( ul );
            new Element( 'a', 
                {
                    'href': '/'+LANGUAGE_CODE+'/user/logout/?next='+urlencode("/"+LANGUAGE_CODE+CURRENT_PATH),
                    'html': 'Log out'
                } ).inject( li2 );

            window.fireEvent( 'onlogin', obj.staff );
        }
        else
        {
            var form = new Element( 'form', 
                {
                    'action': '/'+LANGUAGE_CODE+'/user/login/',
                    'method': 'post'
                } ).inject( login_control );
            if( CURRENT_PATH != "/user/activate/" )
            new Element( 'input', 
                {
                    'type': 'hidden',
                    'name': 'next',
                    'value': '/'+LANGUAGE_CODE+CURRENT_PATH
                } ).inject( form );
            new Element( 'input', 
                {
                    'type': 'text',
                    'name': 'username'
                } ).inject( form );
            new Element( 'br', 
                {
                } ).inject( form );
            new Element( 'input', 
                {
                    'type': 'password',
                    'name': 'password',
                    'size': 13
                } ).inject( form );
            var divwrap = new Element( 'div', 
                {
                    'id': 'loginbuttonwrap'
                } ).inject( form );
            new Element( 'button', 
                {
                    'type': 'submit',
                    'id': 'loginbutton',
                    'html': 'Login'
                } ).inject( divwrap );


            var ul = new Element( 'ul', 
                {
                } ).inject( register_control );
            var li1 = new Element( 'li', 
                {
                } ).inject( ul );
            new Element( 'a', 
                {
                    'href': '/'+LANGUAGE_CODE+'/user/signup/',
                    'html': 'Sign up'
                } ).inject( li1 );
            var li2 = new Element( 'li', 
                {
                } ).inject( ul );
            new Element( 'a', 
                {
                    'href': '/'+LANGUAGE_CODE+'/user/lostpw/',
                    'html': 'Lost password?'
                } ).inject( li2 );

            window.fireEvent( 'onlogin', false );
        }

        return;
    };

function month( x )
{
    switch( x )
    {
        case 0: return "Jan";
        case 1: return "Feb";
        case 2: return "Mar";
        case 3: return "Apr";
        case 4: return "May";
        case 5: return "Jun";
        case 6: return "Jul";
        case 7: return "Aug";
        case 8: return "Sep";
        case 9: return "Oct";
        case 10: return "Nov";
        case 11: return "Dec";
    }
}
function niceDate( olddate )
{
    var myDate = new Date( olddate*1000 );
    var today  = new Date( );

    // is it today?
    if( myDate.getYear( ) == today.getYear( )
    &&  myDate.getMonth( ) == today.getMonth( )
    &&  myDate.getDate( ) == today.getDate( ) )
    {
        var diff = today.getTime( ) - myDate.getTime( );

        diff = diff/1000;
        diff = diff/60;

        if( diff < 60 )
            return Math.round(diff)+" minutes ago";

        diff = diff/60;
        return Math.round(diff)+" hours ago ";
    }

    return myDate.getDate( )+"-"+month( myDate.getMonth( ) )+"-"+myDate.getFullYear( );
}

var frontpage_add_game_list = function( obj, name )
    {
        obj.each( function( obj )
            {
                var control = $( name );
                var gle = new Element( 'div', { 'class':'gamelistentry', 'html':'' } ).inject( control );
                    new Element( 'div', { 'id':name+'_load_'+obj,'class':'loading3', 'html':'Loading game '+obj+'...' } ).inject( gle );

                new Element( 'div', { 'class':'spacer' } ).inject( control );

                new Request.JSON( 
                    {
                        url: '/en/games/json/game/'+obj+'/',
                        onComplete: function(jsonObj)
                        {
                            $(name+'_load_'+obj).dispose( );

                            var ul  = new Element( 'ul', { } ).inject( gle );
                                var li1 = new Element( 'li', { } ).inject( ul );
                                    var span1 = new Element( 'span', { 'class':"contrahents" } ).inject( li1 );

                            lastteam = -1;
                            if( jsonObj.players.length == 0 )
                                new Element( 'span', { 'html': "Player information not available yet." } ).inject( span1 );
                            if( jsonObj.type == 0 || jsonObj.type == 1 )
                            jsonObj.players.each( function( player )
                                {
                                    if( lastteam != player.team )
                                    {
                                        if( lastteam != -1 )
                                        {
                                            if( jsonObj.type == 1 )
                                                new Element( 'br', { } ).inject( span1 );
                                            new Element( 'span', { 'html': ' vs ' } ).inject( span1 );
                                        }
                                        lastteam = player.team;
                                    }
                                    new Element( 'div', { 'class':'race'+player.race, 'html':'.' } ).inject( span1 );
                                    new Element( 'span', { 'html': player.name } ).inject( span1 );
                                }
                                )
                            else
                            {
                                if( jsonObj.type == 2 )
                                    new Element( 'span', { 'html': jsonObj.name+" (3on3)" } ).inject( span1 );
                                else if( jsonObj.type == 3 )
                                    new Element( 'span', { 'html': jsonObj.name+" (4on4)" } ).inject( span1 );
                                else if( jsonObj.type == 4 )
                                    new Element( 'span', { 'html': jsonObj.name+" (5on5)" } ).inject( span1 );
                                else 
                                    new Element( 'span', { 'html': "FFA ("+jsonObj.players.length+")" } ).inject( span1 );
                            }

                                var li2 = new Element( 'li', { } ).inject( ul );
                                    var span2 = new Element( 'span', { 'class':"gameinfo" } ).inject( li2 );
                                        if( jsonObj.map_name != null )
                                        {
                                            new Element( 'span', { 'html': 'on '} ).inject( span2 );
                                            new Element( 'b', { 'html':jsonObj.map_name} ).inject( span2 );
                                            new Element( 'span', { 'html': ' - Rating '} ).inject( span2 );
                                            new Element( 'b', { 'html': jsonObj.rating} ).inject( span2 );
                                        } else
                                            new Element( 'span', { 'html':"Info not available yet"} ).inject( span2 );
                                        new Element( 'br' ).inject( span2 );
                                        new Element( 'b', { 'html': ' '+niceDate( jsonObj.date ) } ).inject( span2 );
                                        new Element( 'span', { 'html': ' by '} ).inject( span2 );
                                        new Element( 'span', { 'class': 'gameinfoleague', 'html': jsonObj.streamer_name} ).inject( span2 );
                                        new Element( 'span', { 'html': '('} ).inject( span2 );
                                        new Element( 'span', { 'class': 'gameinfoleague', 'html': jsonObj.orga} ).inject( span2 );
                                        new Element( 'span', { 'html': ') '} ).inject( span2 );
                                        new Element( 'a', { 'href': '/'+LANGUAGE_CODE+'/games/detail/'+jsonObj.id, 'style': 'font-weight: bold', 'html': ' details'} ).inject( span2 );

                        var link = new Element( 'div', { 'class':'gamelink' } ).inject( gle );
                            var a = new Element( 'a', { 'href':'/en/games/view/'+obj+'/' } ).inject( link );
                                new Element( 'img', { 'src':'/images/gamelink.gif', 'alt':"link"} ).inject( a );

                        }
                    } ).send( );

            });
    };

