var Tank = {};
Tank.TankSelector = new function() {
    var linkbox_selector = "#selectMyTank .unitTankList li";
    return {
        selected_uid : null,
        load : function(type) {
            var slf = this;
	        var linkboxes = $(linkbox_selector);
            linkboxes
                .click(function() {
                    var uid       = slf.get_uid_from_li( this );
                    var tank_img  = $(this).find('img').attr('src');
                    var tank_name = $(this).find('a span').html();
                    var tank_rank = slf.get_rank_from_li( this );

                    slf.set_current_tank_data( tank_img, tank_name, uid, tank_rank );

                    slf.set_selected_uid( uid );

                    slf.highlight( this );
                })
                .hover(
                    function(){
		                $(this).addClass("boxLink"); 
	                },
                    function(){
                        if ( slf.get_uid_from_li(this) != slf.selected_uid ) {
		                    $(this).removeClass("boxLink"); 
                        }
	                }
                );

            slf.selected_uid = $('#selected_tank_uid').val(); // initial data from hidden input
            slf.highlight( slf.li_from_uid( slf.selected_uid ) );

            // random choice
            $('#random_choice_btn').click( function() {
                // my_tank_uid from global in /tank/prepare/enemy_tank
                $.getJSON("/api/tanks/random", {
                    current: slf.selected_uid + (my_tank_uid ? ',' + my_tank_uid : '')
                }, function(data) {
                    slf.set_current_tank_data( data.tank.img, data.tank.name, data.tank.uid, data.tank.rank );

                    slf.set_selected_uid( data.tank.uid );

                    slf.highlight( slf.li_from_uid( data.tank.uid ) );
                });
            });

            // choose tanks created by me
            $('#my_created_tank_choice_btn').click( function() {
                $.getJSON("/api/tanks/mine", {
                }, function(data) {
                    if ( data.tank ) {
                        slf.set_current_tank_data( data.tank.img, data.tank.name, data.tank.uid, data.tank.rank );

                        slf.set_selected_uid( data.tank.uid );

                        slf.highlight( slf.li_from_uid( data.tank.uid ) );
                    }
                    else {
                        alert('not found');
                    }
                });
            });
        },
        set_selected_uid : function( uid ) {
            if ( this.selected_uid ) {
                this.li_from_uid( this.selected_uid ).removeClass("boxLink");
            }
            this.selected_uid = uid;
        },
        highlight : function( li ) {
            $(li).addClass("boxLink");
        },
        li_from_uid : function( uid ) {
            var target_classname = "tank_" + uid;
	        return $(linkbox_selector)
                .filter( '.' + target_classname );
        },
        set_current_tank_data : function( tank_img, tank_name, tank_uid, tank_rank ) {
            $('#selected_tank_img').attr('src', tank_img );
            $('#selected_tank_name').html( tank_name );
            $('#selected_tank_uid').val( tank_uid );
            $('.selected_tank_rank').html( tank_rank );
        },
        get_uid_from_li : function( li ) {
            return $( $(li).attr('class').split(/ /) )
                .filter( function(idx){ return this.match("^tank_"); })
                .get(0)
                .substr(5);
        },
        get_rank_from_li : function( li ) {
            return $( $(li).attr('class').split(/ /) )
                .filter( function(idx){ return this.match("^rank_"); })
                .get(0)
                .substr(5);
        }
    };
};

$( function() {
    var pathname = location.pathname;
    if ( pathname.match( new RegExp("^/tank/prepare/my_tank") ) ) {
        Tank.TankSelector.load('my_tank');
    }
    else if ( pathname.match( new RegExp("^/tank/prepare/enemy_tank") ) ) {
        Tank.TankSelector.load('enemy_tank');
    }

    $('.jump_to_about_on_first')
        .click( function() {
            if ( $.cookie('seen_tank_about') ) {
            }
            else {
                $.cookie('seen_tank_about',1);
                this.href = "http://" + game_domain + "/tank/about"; // game_domain from global
            }
            return 1;
        });
});

