﻿
var CompareObject = function()
{
	// self reference
	var self = this;
	
    // Our array
    self.users = {};
    self.users.array = new Array();
   
	
	// user "Object"
    var User = function(alias,teamId)
        {
            // User details
            this.alias = "";
            this.teamId = 0;
            this.wus = 0;
            this.rollingDay = 0;
            this.rollingWeek =0;
            this.rank = 0;
            this.rankOverall = 0;
            this.points = 0;
            // team Details
            this.totalUsers = 0;
            this.teamAlias = "";
            // system
            this.updated = false;
            if(alias) this.alias = alias;
            if(teamId) this.teamId = parseInt(teamId);
        };   
        
    self.utilities = {};
    self.utilities.buildGetParams = function()
        {
            if(self.users.array.length==0) return;
            
            var url = "";
            for(var i=0; i<self.users.array.length;i++)
                {
                   url += "&user" + i + "=" + self.users.array[i].alias + "&teamId" + i + "=" + self.users.array[i].teamId;
                };
                url += "&totalUsers=" + (self.users.array.length);
                return url;
        };
	
/* Add */	
    self.users.add = {};
    
    // Takes two variables, alias, teamid...
    // Adds to multi dimention array
    // Fires ajax
	self.users.add.raw = function(alias, teamId)
	    {
	        // Within database limits
		    if(alias.count>38)
		    {
			    alert("Please assure the alias is less than 38 characters");
		    }else{
		        // Make sure we're properly 'boxed'
                try
                {
                    teamId = parseInt(teamId);
                }
                catch(e)
                {
                  alert("Invalid format");
                  return;
                };
			        // Check we're valid
				    if(teamId > -1)
				    {
				        // creates user object
				        var user = new User();
				        user.alias = alias;
				        user.teamId = teamId;
				        if(!self.users.exists(user))
				        {      					
					        // Fires ajax
                            Page.Ajax.Requests.getUserDetails(user);
                        }
				    }else{
					    alert("Invalid team number");
				    }

		    }
	    };
	    
	 // self performs an update on the user
	self.users.add.fromAjax = function(user)
	    {
	        Page.Ajax.Dequeue();
            try
            {
                var newUser = new User();
                newUser.alias           = user.Alias;
                newUser.rank            = user.Rank;
                newUser.rankOverall     = user.RankOverall;
                newUser.rollingDay      = user.RollingDay;
                newUser.rollingWeek     = user.RollingWeek;
                newUser.points          = user.Points;
                newUser.wus             = user.Wu;
                newUser.totalUsers      = user.TotalUsers;
                newUser.teamAlias       = user.TeamAlias;
                newUser.teamId          = user.TeamId;
                self.users.array.push(newUser);             
                self.build.table();     
            }
            catch(e)
            {
                alert("Sorry an error occured adding user");
            };       
      };
/* End add */	    
	// Removes a user from the database
	self.users.remove = function(user)
	    {
		    for(var i = 0; i < self.users.array.length; i++)
		    {
			    if(self.users.array[i].alias==user.alias && self.users.array[i].teamId == user.teamId)
			    {
				    self.users.array.pop(i);
				    self.build.table();
				    return;		
			    }
		    }
	    };
	    
	// self user may exist
	self.users.exists = function(user)
	    {
	        // Search through
	        for(var i = 0; i < self.users.array.length; i++)
	        {
	            // Find match
			    if(self.users.array[i].alias==user.alias && self.users.array[i].teamId == user.teamId) return true;			    	
	        }
	    return false;
        };
    
/* build */	
	self.build = {};
	// Generates HTML table
	self.build.table = function ()
	    {
	        var hostTable = $("ctl00_ContentBody_dataHolder");
	        hostTable.ClearChildren();
	        
	        var createRow = function(user, alternate)
	            {
                    // create row
			        var row = document.createElement('tr');
			        hostTable.appendChild(row);		
			        if(alternate)
			        {
			            row.className = "alt1";
			        }else{
			            row.className = "alt2";
			        }

			        // Build up an array of elements
    	            var columns = new Array().PopulateWithObjects(8,"td");
                    for(colNum = 0; colNum < columns.length; colNum++) row.appendChild(columns[colNum]);
                						
        				
			        // Add data
                    columns[0].innerHTML = "<a href=\"usersList.aspx?teamId="+user.teamId+"\">"+user.teamAlias+"</a>";
			        columns[1].innerHTML = "<a href=\"userDetails.aspx?teamId="+user.teamId+"&alias="+user.alias+"\">"+user.alias+"</a>";
			        columns[2].innerHTML = user.rank;
			        columns[3].innerHTML = user.rankOverall;
			        columns[4].innerHTML = user.rollingDay;
			        columns[5].innerHTML = user.rollingWeek
			        columns[6].innerHTML = user.points;
			        columns[7].innerHTML = user.wus;
			        var link = document.createElement('a');
			        link.innerHTML = "Remove";
			        Event.observe(link,"click", function(e)
			            {
			                self.users.remove(user);
			            });
			        
                    columns[8].appendChild(link);    	            
	            };
    		
		    // Loop through entire array
	        var alternate = false;
		    for(var i = 0; i < self.users.array.length; i++)
		        {
                    if(alternate){ alternate = false; }else{ alternate = true; }
                    createRow(self.users.array[i],alternate);
		        };
		        
		    self.build.images();
	    }; 
	    
	// generate images
	self.build.images = function()
	    {
	        var imageContainer = $("ctl00_ContentBody_divBodyContent");
	        imageContainer.ClearChildren();
	        imageContainer.innerHTML = "<img src=\"graph.aspx?type=UserProductionCompare" + self.utilities.buildGetParams() + "\" alt=\"Production comparison\" />";
	    };
/* End build */	    
	
}; // End main func



    
    
    