function q(){
    console.log(arguments);
}

function addCommas(nStr){
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

if (!Array.indexOf) {
    Array.prototype.indexOf = function(obj, start){
        for (var i = (start || 0); i < this.length; i++) {
            if (this[i] == obj) {
                return i;
            }
        }
        return -1;
    }
}

TabsNew = function(){

}

TabsNew.prototype = {
    actionUrl: 'customize.php',
    currentCreditValue: 0,
    currentArenaValue: 0,
    medalFlag: 0,
    undoElement: null,
    medalDir: 'Commendations/',
    
    medalTotal: 0,
    presavedMedals: {},
    
    selectAllTotal: 0,
    
    medals: ['notawarded', 'iron', 'bronze', 'silver', 'gold', 'onyx', 'max'],
    
    /**
     * Initial setup
     */
    init: function(){
        var me = this;
        
        /* Credits and arena section */
        
        // Check change event for credit drop down list and set total
        $('#dropdown_credit').change(function(){
            me.setTotal();
            me.upgrade();
        });
        
        // Check change event for arena drop down list and set total
        $('#dropdown_arena').change(function(){
            me.setTotal();
            me.upgrade();
        });
        
        this.setTotal();
        /* Credits and arena section */
        
        /* Commendation section */
        this.initCommendation();
        /* Commendation section */
        
        /* Upgrade and checkout */
        $('#upgrade_credit_arena').click(function(){
            me.upgrade();
        });
        
        $('#checkout_all').click(function(){
            me.checkout();
            
        });
    },
    
    /**
     * Upgrade credit and arena
     */
    upgrade: function(){
        ranksArr = new Object();
        ranksArr[0] = new Object();
        ranksArr[0][0] = "Recruit";
        ranksArr[0][1] = 0;
        ranksArr[1] = new Object();
        ranksArr[1][0] = "Private";
        ranksArr[1][1] = 7500;
        ranksArr[2] = new Object();
        ranksArr[2][0] = "Corporal";
        ranksArr[2][1] = 10000;
        ranksArr[3] = new Object();
        ranksArr[3][0] = "Corporal Grade 1";
        ranksArr[3][1] = 15000;
        ranksArr[4] = new Object();
        ranksArr[4][0] = "Sergeant";
        ranksArr[4][1] = 20000;
        ranksArr[5] = new Object();
        ranksArr[5][0] = "Sergeant Grade 1";
        ranksArr[5][1] = 26250;
        ranksArr[6] = new Object();
        ranksArr[6][0] = "Sergeant Grade 2";
        ranksArr[6][1] = 32500;
        ranksArr[7] = new Object();
        ranksArr[7][0] = "Warrant Officer";
        ranksArr[7][1] = 45000;
        ranksArr[8] = new Object();
        ranksArr[8][0] = "Warrant Officer Grade 1";
        ranksArr[8][1] = 78000;
        ranksArr[9] = new Object();
        ranksArr[9][0] = "Warrant Officer Grade 2";
        ranksArr[9][1] = 111000;
        ranksArr[10] = new Object();
        ranksArr[10][0] = "Warrant Officer Grade 3";
        ranksArr[10][1] = 144000;
        ranksArr[11] = new Object();
        ranksArr[11][0] = "Captain";
        ranksArr[11][1] = 210000;
        ranksArr[12] = new Object();
        ranksArr[12][0] = "Captain Grade 1";
        ranksArr[12][1] = 233000;
        ranksArr[13] = new Object();
        ranksArr[13][0] = "Captain Grade 2";
        ranksArr[13][1] = 256000;
        ranksArr[14] = new Object();
        ranksArr[14][0] = "Captain Grade 3";
        ranksArr[14][1] = 279000;
        ranksArr[15] = new Object();
        ranksArr[15][0] = "Major";
        ranksArr[15][1] = 325000;
        ranksArr[16] = new Object();
        ranksArr[16][0] = "Major Grade 1";
        ranksArr[16][1] = 350000;
        ranksArr[17] = new Object();
        ranksArr[17][0] = "Major Grade 2";
        ranksArr[17][1] = 375000;
        ranksArr[18] = new Object();
        ranksArr[18][0] = "Major Grade 3";
        ranksArr[18][1] = 400000;
        ranksArr[19] = new Object();
        ranksArr[19][0] = "Lt. Colonel";
        ranksArr[19][1] = 450000;
        ranksArr[20] = new Object();
        ranksArr[20][0] = "Lt. Colonel Grade 1";
        ranksArr[20][1] = 480000;
        ranksArr[21] = new Object();
        ranksArr[21][0] = "Lt. Colonel Grade 2";
        ranksArr[21][1] = 510000;
        ranksArr[22] = new Object();
        ranksArr[22][0] = "Lt. Colonel Grade 3";
        ranksArr[22][1] = 540000;
        ranksArr[23] = new Object();
        ranksArr[23][0] = "Commander";
        ranksArr[23][1] = 600000;
        ranksArr[24] = new Object();
        ranksArr[24][0] = "Commander Grade 1";
        ranksArr[24][1] = 650000;
        ranksArr[25] = new Object();
        ranksArr[25][0] = "Commander Grade 2";
        ranksArr[25][1] = 700000;
        ranksArr[26] = new Object();
        ranksArr[26][0] = "Commander Grade 3";
        ranksArr[26][1] = 750000;
        ranksArr[27] = new Object();
        ranksArr[27][0] = "Colonel";
        ranksArr[27][1] = 850000;
        ranksArr[28] = new Object();
        ranksArr[28][0] = "Colonel Grade 1";
        ranksArr[28][1] = 960000;
        ranksArr[29] = new Object();
        ranksArr[29][0] = "Colonel Grade 2";
        ranksArr[29][1] = 1070000;
        ranksArr[30] = new Object();
        ranksArr[30][0] = "Colonel Grade 3";
        ranksArr[30][1] = 1180000;
        ranksArr[31] = new Object();
        ranksArr[31][0] = "Brigadier";
        ranksArr[31][1] = 1400000;
        ranksArr[32] = new Object();
        ranksArr[32][0] = "Brigadier Grade 1";
        ranksArr[32][1] = 1520000;
        ranksArr[33] = new Object();
        ranksArr[33][0] = "Brigadier Grade 2";
        ranksArr[33][1] = 1640000;
        ranksArr[34] = new Object();
        ranksArr[34][0] = "Brigadier Grade 3";
        ranksArr[34][1] = 1760000;
        ranksArr[35] = new Object();
        ranksArr[35][0] = "General";
        ranksArr[35][1] = 2000000;
        ranksArr[36] = new Object();
        ranksArr[36][0] = "General Grade 1";
        ranksArr[36][1] = 2200000;
        ranksArr[37] = new Object();
        ranksArr[37][0] = "General Grade 2";
        ranksArr[37][1] = 2350000;
        ranksArr[38] = new Object();
        ranksArr[38][0] = "General Grade 3";
        ranksArr[38][1] = 2500000;
        ranksArr[39] = new Object();
        ranksArr[39][0] = "General Grade 4";
        ranksArr[39][1] = 2650000;
        ranksArr[40] = new Object();
        ranksArr[40][0] = "Field Marshall";
        ranksArr[40][1] = 3000000;
        ranksArr[41] = new Object();
        ranksArr[41][0] = "Hero";
        ranksArr[41][1] = 3700000;
        ranksArr[42] = new Object();
        ranksArr[42][0] = "Legend";
        ranksArr[42][1] = 4600000;
        ranksArr[43] = new Object();
        ranksArr[43][0] = "Mythic";
        ranksArr[43][1] = 5650000;
        ranksArr[44] = new Object();
        ranksArr[44][0] = "Noble";
        ranksArr[44][1] = 7000000;
        ranksArr[45] = new Object();
        ranksArr[45][0] = "Eclipse";
        ranksArr[45][1] = 8500000;
        ranksArr[46] = new Object();
        ranksArr[46][0] = "Nova";
        ranksArr[46][1] = 11000000;
        ranksArr[47] = new Object();
        ranksArr[47][0] = "Forerunner";
        ranksArr[47][1] = 13000000;
        ranksArr[48] = new Object();
        ranksArr[48][0] = "Reclaimer";
        ranksArr[48][1] = 16500000;
        ranksArr[49] = new Object();
        ranksArr[49][0] = "Inheritor";
        ranksArr[49][1] = 20000000;
        
        creditsArr = [0, 120000, 240000, 600000, 1000000];
        
        playerCredits = parseInt($('.playerCredits').val()) + parseInt(creditsArr[$('#dropdown_credit').attr("selectedIndex")]);
        
        $('.playerCreditsSpan').html(addCommas(playerCredits));
        
        index = 0;
        x = 0;
        for (x; x < 48; x++) {
            if (parseInt(playerCredits) >= ranksArr[x][1] && playerCredits < ranksArr[x + 1][1]) {
                index = x;
                break;
            }
        }
        
        $('.playerRank').attr("src", "ReachImages/" + index + ".png");
        $('.playerGrade').html(ranksArr[index][0]);
        
        if ($('#dropdown_arena').attr("selectedIndex") == 1) {
            $('.playerArena').attr("src", "arena/5.png");
        }
        else {
            $('.playerArena').attr("src", "arena/" + $('#currArena').val());
        }
    },
    
    /**
     * Checkout the whole total - send al chenged medal data and total to server
     */
    checkout: function(){
        var medals = [], me = this;
        var medal_cost = 0;
        for (var i in me.presavedMedals) {
            medal_cost += me.presavedMedals[i].creditAdded;
            medals[i] = me.medals.indexOf(me.presavedMedals[i].medal) + me.presavedMedals[i].creditAdded;
        }
        
        if($('.sum_total').html() > 0){
            /*
	    var $form = $("<form>").attr("method", "post").attr("action", 'http://level50now.com/buy.php');
            
            $("<input type='hidden'>").attr("name", 'total').attr("value", $('.sum_total').html()).appendTo($form);
            
            $("<input type='hidden'>").attr("name", 'gamertag').attr("value", $('.playername').html().trim()).appendTo($form);
            
            $("<input type='hidden'>").attr("name", 'medals').attr("value", medals.toString()).appendTo($form);
            $("<input type='hidden'>").attr("name", 'medals_cost').attr("value", medal_cost).appendTo($form);
            
            $("<input type='hidden'>").attr("name", 'arena').attr("value", $('#dropdown_arena').attr("selectedIndex")).appendTo($form);
            $("<input type='hidden'>").attr("name", 'arena_cost').attr("value", $('#dropdown_arena').val()).appendTo($form);
            
            $("<input type='hidden'>").attr("name", 'credits').attr("value", $('#dropdown_credit').attr("selectedIndex")).appendTo($form);
            $("<input type='hidden'>").attr("name", 'credits_cost').attr("value", $('#dropdown_credit').val()).appendTo($form);
            
            $form.appendTo("body");
            
            $form.submit();
        	*/
	    alert("Technical error, please try back some other time.");
	}else{
            alert("Error: Total is 0, please select items for purchase.");
        }
        
    },
    
    /**
     * Set total value for credit and arena
     * @returns void
     */
    setTotal: function(){
        var total = parseFloat($('#dropdown_arena').val()) + parseFloat($('#dropdown_credit').val()) + parseFloat(this.medalTotal);
        $('.sum_total').html(total);
    },
    
    presaveMedals: function(){
        var me = this, arr = '';
        $('img', '#medal_images').each(function(){
            arr = $(this).attr('src').replace(me.medalDir, '').split('.')[0].split('_');
            me.presavedMedals[arr[1]] = {
                creditAdded: 0,
                medal: arr[0]
            };
        });
    },
    
    /**
     * Initiate commendation tab events
     *
     * @returns void
     */
    initCommendation: function(){
        var me = this, arr = '';
        
        // Create and save the whole commendation image container clone
        this.undoElement = $("#medal_images").clone();
        this.presaveMedals();
        
        //Set click event on each medal image
        $('img', '#medal_images').live('click', function(){
            // Define the variables
            var medalName = '', medalNumber = 0, // Get medal details in an array
 arr = $(this).attr('src').replace(me.medalDir, '').split('.')[0].split('_'), // Set the next image count
 count = me.medals.indexOf(arr[0]) + 1;
            
            // Restrict array out of bound
            count = (me.medals[count] == undefined) ? 0 : count;
            
            // Set medal name and number from array
            medalName = me.medals[count];
            medalNumber = arr[1];
            
            // Get the next medal image
            var newMedalImg = me.medalDir + medalName + '_' + medalNumber + '.png';
            
            // Replace the next image with the current one
            $(this).attr('src', newMedalImg);
            
            // If any credit already added for clicking, then coming back to notawarded medal, subtract the amount
            if (count == 0) {
                // Subtract the already added credit
                me.medalTotal -= me.presavedMedals[medalNumber].creditAdded;
                
                // Set already added credit to 0
                me.presavedMedals[medalNumber].creditAdded = 0;
            }
            
            // If the selected medal is greater than the presaved medal, then add $1
            if (count > me.medals.indexOf(me.presavedMedals[medalNumber].medal)) {
                // Add individual medal credit by 1
                me.presavedMedals[medalNumber].creditAdded += 1;
                
                // Set total medal credit by 1
                me.medalTotal += 1;
            }
            
            me.setTotal();
        });
        
        // Set commendation tab events
        this.setCommendationActionEvents();
    },
    
    setAll: function(){
        // Reset the medals to pre saved medals
        this.reset();
        
        // Check if any medal change is happened
        if (this.setMedalEvents() == 1) {
            this.medalTotal = this.selectAllTotal;
            this.setTotal();
        }
    },
    
    reset: function(doSetTotal){
        // Replace the image container with the presaved one
        $('#medal_images').replaceWith(this.undoElement);
        
        // Reclone the medal container element
        this.undoElement = $("#medal_images").clone();
        this.medalTotal = this.selectAllTotal = 0;
        
        // If true, then show the total value else don't show the change
        if (doSetTotal) {
            this.setTotal();
        }
        this.setCommendationActionEvents();
    },
    
    setCommendationActionEvents: function(){
        var me = this;
        
        //Set tooltips
        $("img[title]", "#medal_images").tooltip({
            delay: 0
        });
        
        
        // Set event for select medal-all type selection
        if (!$.hasEventListener($("#dropdown_medal_all")[0], "change")) {
            $('#dropdown_medal_all').one('change', function(){
				if($('#dropdown_medal_all').attr("selectedIndex") == 0)
                	me.reset(true);
				else
					me.setAll();
            });
        }
        
        // Set reset event
        if (!$.hasEventListener($("#reset_all")[0], "click")) {
            $('#reset_all').click(function(){
                me.reset(true);
            });
        }
    },
    
    setMedalEvents: function(){
        var type = $('#dropdown_medal_all').val(), me = this, isChanged = 0, arr = '', change = 0;
        if (type && this.medals.indexOf(type) !== -1) {
            this.presaveMedals();
            
            $('img', '#medal_images').each(function(){
                // Get current medal attributes
                arr = $(this).attr('src').replace(me.medalDir, '').split('.')[0].split('_');
                
                
                
                if (me.medals.indexOf(type) > me.medals.indexOf(arr[0])) {
					// Replace image with the selected one
                	$(this).attr('src', me.medalDir + type + '_' + arr[1] + '.png');
					
                    change = parseInt(me.medals.indexOf(type)) - parseInt(me.medals.indexOf(arr[0]));
                    me.selectAllTotal += change;
                    me.presavedMedals[arr[1]].creditAdded += change;
                    isChanged = 1;
                }
//                else if (me.medals.indexOf(type) < me.medals.indexOf(arr[0])) {
//                        change = parseInt(me.medals.indexOf(arr[0])) - parseInt(me.medals.indexOf(type));
//                        me.selectAllTotal -= change;
//                        me.presavedMedals[arr[1]].creditAdded -= change;
//                        isChanged = 1;
//                    }
            });
        }
        
        return isChanged;
    }
}

$(document).ready(function(){
    var tabsNew = new TabsNew();
    tabsNew.init();
    
});

