
nfl.namespace('nfl.draft');
nfl.namespace('nfl.draft.players');
nfl.namespace('nfl.draft.tracker');

nfl.draft.players.accordian = new Class.create();
nfl.draft.players.accordian.prototype = {
	initialize: function(accordianContainerId,expandDrawerIndex){
		this.expandDrawer	= (typeof expandDrawerIndex != 'undefined')? expandDrawerIndex:false;
		this.containerId	= (typeof accordianContainerId != 'undefined')? accordianContainerId:null;
		//$('featured-players-container')
	},
	activate: function(){
		//initialize featured players accordian
		if($(this.containerId)){
			nfl.log("nfl.draft.players.accordian.initialize: featured players container found");
			this.accordianController = new nfl.ui.accordion(this.containerId,{
				classNames : {
					toggle : ['featured-players-accordion-toggle-even','featured-players-accordion-toggle-odd'],
					toggleActive : 'featured-players-accordion-toggle-active',
					content : 'featured-players-accordion-content'
				}
			});
			nfl.log("nfl.draft.players.accordian.initialize: accordian controller created");
			//nfl.log("nfl.draft.players.accordian.initialize: expandOption = "+ this.expandDrawer);
			
			if(this.expandDrawer !== false){
				nfl.log("nfl.draft.players.accordian.initialize: expandOption = "+ this.expandDrawer);
				this.accordianController.activate($$('#'+ this.containerId +' .featured-players-accordion-toggle')[this.expandDrawer]);
			}
		}
		nfl.log("nfl.draft.players.accordian.initialize: done");
	}
}

nfl.draft.tracker.miniController	= Class.create();
nfl.draft.tracker.miniController.prototype	= {
	initialize: function(draftState){
		this.__playerJSON						= (typeof JSON != 'undefined')? JSON:{};
		this.__draftState						= (typeof draftState != 'undefined')? draftState.state:-1;
		this.__draftRound						= (typeof draftState != 'undefined')? draftState.round:-1;
		this.__pollingInterval					= this.getPollIntervalFromState();

		this.draftPicks							= new nfl.data.dataset({});
		this.draftPicks.sortBy("pick","playerid",function(a,b){ return (a-b); });
		this.draftPicks.templates.rowClass		= "odd";
		this.draftPicks.templates.rowClassAlt	= "even";
		
		//this.draftPicks.templates.header		= (this.__draftState == -1)? "<colgroup><col class=\"pick\" /><col class=\"team\" /></colgroup>\n\r":"<colgroup><col class=\"pick\" /><col class=\"team-city\" /><col class=\"name\" /><col class=\"pos\" /></colgroup>\n\r";
		//this.draftPicks.templates.row			= (this.__draftState == -1)? "<tr class=\"#{rowclass}\"><td>#{pick}</td><td><a href=\"/draft/2008/tracker#tab:dt-by-team|team-#{teamabbrparam}\">#{teamname}</a></td></tr>\n\r":"<tr class=\"#{rowclass}\"><td>#{pick}</td><td><a href=\"/draft/2008/tracker#tab:dt-by-team|team-#{teamabbrparam}\">#{teamcity}</a></td><td><a href=\"#{playerprofileparam}\">#{name}</a></td><td><a href=\"/draft/2008/tracker#tab:dt-by-position|pos-#{positionparam}\">#{position}</a></td></tr>";
		this.draftPicks.templates.header		= ((this.__draftState != "PRE" && this.__draftRound == 1) || this.__draftRound > 1)? "<colgroup><col class=\"pick\" /><col class=\"team-city\" /><col class=\"name\" /><col class=\"pos\" /></colgroup>\n\r":"<colgroup><col class=\"pick\" /><col class=\"team\" /></colgroup>\n\r";
		this.draftPicks.templates.row			= ((this.__draftState != "PRE" && this.__draftRound == 1) || this.__draftRound > 1)? "<tr class=\"#{rowclass}\"><td>#{pick}</td><td><a href=\"/draft/2008/tracker#dt-tab-set-1:dt-by-team/team-#{teamabbrparam}\">#{teamcity}</a></td><td><a href=\"#{playerprofileparam}\">#{name}</a></td><td><a href=\"/draft/2008/tracker#dt-tab-set-1:dt-by-position/pos-#{positionparam}\">#{position}</a></td></tr>\n\r":"<tr class=\"#{rowclass}\"><td>#{pick}</td><td><a href=\"/draft/2008/tracker#dt-tab-set-1:dt-by-team/team-#{teamabbrparam}\">#{teamname}</a></td></tr>\n\r";

		
		this.gpPE	= new PeriodicalExecuter(this.getPlayers.bind(this), this.__pollingInterval);
		this.getPlayers();
	},
	getCacheBustInt: function(){
		var time, d;
		d = new Date();
		d.setSeconds(Math.floor(d.getUTCSeconds() / 10) * 10);
		d.setMilliseconds(0);
		time = d.getTime();
		return time
	},
	getPollIntervalFromState: function(){
		switch(this.__draftState){
			case "PRE":
				//10 mins
				return 600;
				break;
			case "IN":
				//5 mins
				return 300;
				break;
			case "ACTIVE":
				//30 seconds
				return 30;
				break;
			case "POST":
				//none
				return -1;
				break;
			default:
				return -1;
				break;
		}
	},
	getPlayers: function(){
		nfl.log("nfl.draft.tracker.miniController.getPlayers");
		document.fire("draft:tracker:dataupdating",{});
		var buster			= this.getCacheBustInt();
		var request			= {url:"/liveupdate/draft/2008/draftTracker.json?random="+ buster,params:{r:buster},method:"get"}
		if(this.uselocalrequest){request.url = "/ajax/draft/2008/tracker?year=2008"}
		var playerRequest	= new Ajax.Request(request.url, {
			method: request.method, 
			params: request.params, 
			evalJSON: "force",
			onSuccess: function(XHR){
				try{
					if(typeof XHR.responseJSON != "undefined"){
						this.__playerJSON	= XHR.responseJSON[0];
						this.__draftState	= XHR.responseJSON[1].state;
						this.__draftRound	= XHR.responseJSON[1].round;
					}else{
						var __XHRResult		= eval('(' + XHR.responseText + ')');
						this.__playerJSON	= __XHRResult[0];
						this.__draftState	= __XHRResult[1].state;
						this.__draftRound	= __XHRResult[1].round;
					}
					
					if(this.__draftRound <= 1){
						var pollInterval	= this.getPollIntervalFromState();
						if(pollInterval != this.__pollInterval){
							/* interval has changed, reset executer */
							this.__pollInterval	= pollInterval;
							if(this.__pollInterval > -1){
								this.gpPE.stop();
								this.gpPE	= new PeriodicalExecuter(this.getPlayers.bind(this), this.__pollInterval);
							}else{
								/* stop all polling, draft is over as far as mini-tracker is concerned */
								this.gpPE.stop();
							}
						}
					}else{
						/* stop all polling, draft is over as far as mini-tracker is concerned */
						this.gpPE.stop();
					}
					this.draftPicks.templates.header		= ((this.__draftState != "PRE" && this.__draftRound == 1) || this.__draftRound > 1)? "<colgroup><col class=\"pick\" /><col class=\"team-city\" /><col class=\"name\" /><col class=\"pos\" /></colgroup>\n\r":"<colgroup><col class=\"pick\" /><col class=\"team\" /></colgroup>\n\r";
					this.draftPicks.templates.row			= ((this.__draftState != "PRE" && this.__draftRound == 1) || this.__draftRound > 1)? "<tr class=\"#{rowclass}\"><td>#{pick}</td><td><a href=\"/draft/2008/tracker#dt-tab-set-1:dt-by-team/team-#{teamabbrparam}\">#{teamcity}</a></td><td><a href=\"#{playerprofileparam}\">#{name}</a></td><td><a href=\"/draft/2008/tracker#dt-tab-set-1:dt-by-position/pos-#{positionparam}\">#{position}</a></td></tr>\n\r":"<tr class=\"#{rowclass}\"><td>#{pick}</td><td><a href=\"/draft/2008/tracker#dt-tab-set-1:dt-by-team/team-#{teamabbrparam}\">#{teamname}</a></td></tr>\n\r";
	
					if(this.draftPicks.__dataset != this.__playerJSON){ this.draftPicks.__isDirty = true; }
					this.draftPicks.__dataset	= this.__playerJSON;
					this.updateDisplay();
					document.fire("draft:tracker:dataupdated",this.__playerJSON);
				}catch(e){
					alert("XHR Error: "+ e.message);
				}
			}.bind(this),
			onFailure: function(){
				/* this is a failure, for now just simulate response */
				/*
				this.__playerJSON	= {"UNDRAFTED_PLAYER_9":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Raiders","round":1,"playerid":"UNDRAFTED_PLAYER_9","height":"","collegeid":"","teamname":"Oakland Raiders","teamcity":"Oakland","name":"","positionGroup":"","pick":11,"firstName":"","notes":"","overall":11},"UNDRAFTED_PLAYER_8":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Chiefs","round":1,"playerid":"UNDRAFTED_PLAYER_8","height":"","collegeid":"","teamname":"Kansas City Chiefs","teamcity":"Kansas City","name":"","positionGroup":"","pick":10,"firstName":"","notes":"","overall":10},"UNDRAFTED_PLAYER_7":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Broncos","round":1,"playerid":"UNDRAFTED_PLAYER_7","height":"","collegeid":"","teamname":"Denver Broncos","teamcity":"Denver","name":"","positionGroup":"","pick":9,"firstName":"","notes":"","overall":9},"UNDRAFTED_PLAYER_6":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Steelers","round":1,"playerid":"UNDRAFTED_PLAYER_6","height":"","collegeid":"","teamname":"Pittsburgh Steelers","teamcity":"Pittsburgh","name":"","positionGroup":"","pick":8,"firstName":"","notes":"","overall":8},"UNDRAFTED_PLAYER_22":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Vikings","round":1,"playerid":"UNDRAFTED_PLAYER_22","height":"","collegeid":"","teamname":"Minnesota Vikings","teamcity":"Minnesota","name":"","positionGroup":"","pick":24,"firstName":"","notes":"","overall":24},"UNDRAFTED_PLAYER_4":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Bengals","round":1,"playerid":"UNDRAFTED_PLAYER_4","height":"","collegeid":"","teamname":"Cincinnati Bengals","teamcity":"Cincinnati","name":"","positionGroup":"","pick":6,"firstName":"","notes":"","overall":6},"UNDRAFTED_PLAYER_23":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Rams","round":1,"playerid":"UNDRAFTED_PLAYER_23","height":"","collegeid":"","teamname":"St. Louis Rams","teamcity":"St. Louis","name":"","positionGroup":"","pick":25,"firstName":"","notes":"","overall":25},"UNDRAFTED_PLAYER_5":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Browns","round":1,"playerid":"UNDRAFTED_PLAYER_5","height":"","collegeid":"","teamname":"Cleveland Browns","teamcity":"Cleveland","name":"","positionGroup":"","pick":7,"firstName":"","notes":"","overall":7},"UNDRAFTED_PLAYER_20":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Lions","round":1,"playerid":"UNDRAFTED_PLAYER_20","height":"","collegeid":"","teamname":"Detroit Lions","teamcity":"Detroit","name":"","positionGroup":"","pick":22,"firstName":"","notes":"","overall":22},"728":{"position":"QB","lastName":"Dixon","weight":205,"college":"Oregon","teamnickname":"Bills","round":1,"playerid":728,"height":"6'4\"","collegeid":48,"teamname":"Buffalo Bills","teamcity":"Buffalo","name":"Dennis Dixon","positionGroup":"QB","pick":1,"firstName":"Dennis","notes":"","overall":1},"UNDRAFTED_PLAYER_2":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Jets","round":1,"playerid":"UNDRAFTED_PLAYER_2","height":"","collegeid":"","teamname":"New York Jets","teamcity":"NY Jets","name":"","positionGroup":"","pick":4,"firstName":"","notes":"","overall":4},"UNDRAFTED_PLAYER_21":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Packers","round":1,"playerid":"UNDRAFTED_PLAYER_21","height":"","collegeid":"","teamname":"Green Bay Packers","teamcity":"Green Bay","name":"","positionGroup":"","pick":23,"firstName":"","notes":"","overall":23},"UNDRAFTED_PLAYER_3":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Ravens","round":1,"playerid":"UNDRAFTED_PLAYER_3","height":"","collegeid":"","teamname":"Baltimore Ravens","teamcity":"Baltimore","name":"","positionGroup":"","pick":5,"firstName":"","notes":"","overall":5},"UNDRAFTED_PLAYER_1":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Patriots","round":1,"playerid":"UNDRAFTED_PLAYER_1","height":"","collegeid":"","teamname":"New England Patriots","teamcity":"New England","name":"","positionGroup":"","pick":3,"firstName":"","notes":"","overall":3},"UNDRAFTED_PLAYER_28":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Panthers","round":1,"playerid":"UNDRAFTED_PLAYER_28","height":"","collegeid":"","teamname":"Carolina Panthers","teamcity":"Carolina","name":"","positionGroup":"","pick":30,"firstName":"","notes":"","overall":30},"UNDRAFTED_PLAYER_29":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Saints","round":1,"playerid":"UNDRAFTED_PLAYER_29","height":"","collegeid":"","teamname":"New Orleans Saints","teamcity":"New Orleans","name":"","positionGroup":"","pick":31,"firstName":"","notes":"","overall":31},"UNDRAFTED_PLAYER_26":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Seahawks","round":1,"playerid":"UNDRAFTED_PLAYER_26","height":"","collegeid":"","teamname":"Seattle Seahawks","teamcity":"Seattle","name":"","positionGroup":"","pick":28,"firstName":"","notes":"","overall":28},"UNDRAFTED_PLAYER_27":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Falcons","round":1,"playerid":"UNDRAFTED_PLAYER_27","height":"","collegeid":"","teamname":"Atlanta Falcons","teamcity":"Atlanta","name":"","positionGroup":"","pick":29,"firstName":"","notes":"","overall":29},"UNDRAFTED_PLAYER_24":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Cardinals","round":1,"playerid":"UNDRAFTED_PLAYER_24","height":"","collegeid":"","teamname":"Arizona Cardinals","teamcity":"Arizona","name":"","positionGroup":"","pick":26,"firstName":"","notes":"","overall":26},"UNDRAFTED_PLAYER_25":{"position":"","lastName":"","weight":"","college":"","teamnickname":"49ers","round":1,"playerid":"UNDRAFTED_PLAYER_25","height":"","collegeid":"","teamname":"San Francisco 49ers","teamcity":"San Francisco","name":"","positionGroup":"","pick":27,"firstName":"","notes":"","overall":27},"UNDRAFTED_PLAYER_31":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Bills","round":2,"playerid":"UNDRAFTED_PLAYER_31","height":"","collegeid":"","teamname":"Buffalo Bills","teamcity":"Buffalo","name":"","positionGroup":"","pick":2,"firstName":"","notes":"","overall":33},"UNDRAFTED_PLAYER_10":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Chargers","round":1,"playerid":"UNDRAFTED_PLAYER_10","height":"","collegeid":"","teamname":"San Diego Chargers","teamcity":"San Diego","name":"","positionGroup":"","pick":12,"firstName":"","notes":"","overall":12},"UNDRAFTED_PLAYER_11":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Titans","round":1,"playerid":"UNDRAFTED_PLAYER_11","height":"","collegeid":"","teamname":"Tennessee Titans","teamcity":"Tennessee","name":"","positionGroup":"","pick":13,"firstName":"","notes":"","overall":13},"UNDRAFTED_PLAYER_12":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Texans","round":1,"playerid":"UNDRAFTED_PLAYER_12","height":"","collegeid":"","teamname":"Houston Texans","teamcity":"Houston","name":"","positionGroup":"","pick":14,"firstName":"","notes":"","overall":14},"UNDRAFTED_PLAYER_30":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Buccaneers","round":2,"playerid":"UNDRAFTED_PLAYER_30","height":"","collegeid":"","teamname":"Tampa Bay Buccaneers","teamcity":"Tampa Bay","name":"","positionGroup":"","pick":1,"firstName":"","notes":"","overall":32},"714":{"position":"TE","lastName":"Brown","weight":null,"college":"Virginia Tech","teamnickname":"Dolphins","round":1,"playerid":714,"height":null,"collegeid":28,"teamname":"Miami Dolphins","teamcity":"Miami","name":"Duane Brown","positionGroup":"TE","pick":2,"firstName":"Duane","notes":"","overall":2},"UNDRAFTED_PLAYER_13":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Colts","round":1,"playerid":"UNDRAFTED_PLAYER_13","height":"","collegeid":"","teamname":"Indianapolis Colts","teamcity":"Indianapolis","name":"","positionGroup":"","pick":15,"firstName":"","notes":"","overall":15},"UNDRAFTED_PLAYER_14":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Jaguars","round":1,"playerid":"UNDRAFTED_PLAYER_14","height":"","collegeid":"","teamname":"Jacksonville Jaguars","teamcity":"Jacksonville","name":"","positionGroup":"","pick":16,"firstName":"","notes":"","overall":16},"UNDRAFTED_PLAYER_15":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Cowboys","round":1,"playerid":"UNDRAFTED_PLAYER_15","height":"","collegeid":"","teamname":"Dallas Cowboys","teamcity":"Dallas","name":"","positionGroup":"","pick":17,"firstName":"","notes":"","overall":17},"UNDRAFTED_PLAYER_16":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Giants","round":1,"playerid":"UNDRAFTED_PLAYER_16","height":"","collegeid":"","teamname":"New York Giants","teamcity":"NY Giants","name":"","positionGroup":"","pick":18,"firstName":"","notes":"","overall":18},"UNDRAFTED_PLAYER_17":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Eagles","round":1,"playerid":"UNDRAFTED_PLAYER_17","height":"","collegeid":"","teamname":"Philadelphia Eagles","teamcity":"Philadelphia","name":"","positionGroup":"","pick":19,"firstName":"","notes":"","overall":19},"UNDRAFTED_PLAYER_18":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Redskins","round":1,"playerid":"UNDRAFTED_PLAYER_18","height":"","collegeid":"","teamname":"Washington Redskins","teamcity":"Washington","name":"","positionGroup":"","pick":20,"firstName":"","notes":"","overall":20},"UNDRAFTED_PLAYER_19":{"position":"","lastName":"","weight":"","college":"","teamnickname":"Bears","round":1,"playerid":"UNDRAFTED_PLAYER_19","height":"","collegeid":"","teamname":"Chicago Bears","teamcity":"Chicago","name":"","positionGroup":"","pick":21,"firstName":"","notes":"","overall":21}}
				this.splitPlayerDataByPick(this.__playerJSON);
				this.updateDisplay();
				*/
				document.fire("draft:tracker:dataupdated",this.__playerJSON);
			}.bind(this)
		});
	},
	updateDisplay: function(){
		/* call filter first, that way we only have to iterate through the result subset */
		this.draftPicks.filterBy("round","=","1");
		this.draftPicks.filter();
		/* now iterate through filtered results, and add calculated properties */
		for(var fdIndex=0, len=this.draftPicks.size(); fdIndex < len; ++fdIndex){
			var playerId	= this.draftPicks.__filteredDataSetKeys[fdIndex];
			var playerRow	= this.draftPicks.__filteredDataSet[playerId];
			var drafted		= ((""+ playerId).indexOf("UNDRAFTED_PLAYER") == -1 && (playerRow.pick != null && playerRow.pick != "")) ? true:false;
			playerRow.roundpick				= playerRow.round+""+playerRow.pick;
			playerRow.collegeidparam		= playerRow.collegeid;
			playerRow.positionparam			= (typeof playerRow.positionGroup == "string")? playerRow.positionGroup.toLowerCase():"";
			playerRow.roundparam			= (typeof playerRow.round == "number")? playerRow.round:"";
			playerRow.teamabbrparam			= (typeof playerRow.teamabbr == "string")? playerRow.teamabbr.toLowerCase():"";
			if(typeof playerRow.lastName == "string" && typeof playerRow.firstName == "string"){
				playerRow.name				= (playerRow.lastName != "" && playerRow.firstName != "")? (playerRow.lastName+", "+playerRow.firstName):"";
			}
			if(drafted){
				playerRow.playerprofileparam	= ("/draft/2008/profiles/"+ playerRow.firstName.toLowerCase().replace(/ /gi,"-") +"-"+ playerRow.lastName.toLowerCase().replace(/ /gi,"-") +"?id="+ playerRow.playerid);
			}
			if(this.draftPicks.__filteredDataSet[playerId] !== playerRow){ this.draftPicks.__isDirty	= true; }
			this.draftPicks.__filteredDataSet[playerId]	= playerRow;
		}
		this.draftPicks.bind();
	},
	bindTo: function(obj){
		this.draftPicks.bindTo(obj);
	}
}

