/**
 * @author Administrator
 */
RedBox = {
	zipCode: undefined,
	favoriteRedBoxes: [],
	videoList: [],
	currentRedBox: undefined,
	init: function()
	{
		/**** Show Initial Pane 
		 * 
		 * This needs to run after the data service has gotten
		 * 
		 * the list of favorite red boxes and the zipcode
		 * 
		 */
		if ( zipCode == undefined )
		{
			showInitialScreen();	
		}
	},


		link: "",
	 	movieListPopulated: false,
		
		loadMovieDetail: function (sId, elem)
		{
			new Ajax.Request("webService.php?method=getMovieDetail", { parameters: {titleid: sId }, method: 'get', onSuccess: this.onLoadMovieDetail.bindAsEventListener(this)});
			this.link = elem;
		},

		onLoadMovieDetail: function(transport)
		{
			this.loadAd(transport.responseJSON.ad);
			var data = transport.responseJSON.d[0];
			var template = "";
			
			if ( this.movieDetailRent )
				template = new Template("#{Name}<br /><img src=\"http://images.redbox.com/Images/Thumbnails/#{Img}\" align=\"right\"><strong>#{Rating} (#{RunningTime})</strong><br /> #{Actors}<br />	#{Description}	<br/><br /><a class=\"button\" href=\"javascript:void(0);\" onclick='RedBox.reserveMovie(RedBox.currentRedBox, #{ID})'>Reserve Movie</a>");
			else 
				template = new Template("#{Name}<br /><img src=\"http://images.redbox.com/Images/Thumbnails/#{Img}\" align=\"right\"><strong>#{Rating} (#{RunningTime})</strong><br /> #{Actors}<br />	#{Description}	<br/><br /><a class=\"button\" href=\"#locateRedBoxes\" onclick='RedBox.locateRedBoxesWithMovie(#{ID})'>Locate Red Box with Movie</a>");
			
			var str = template.evaluate(data);
			$("movieDetail").innerHTML =str; 
			$("movieDetail").title = data.Name;
			window.iui.showPageById("movieDetail");
			this.link.removeAttribute("selected");							
		},
		
		RBMoviesSQL : function (tx, data)
		{
			
				
			
			var titlesElem = $("Titles");
			titlesElem.innerHTML = "";
			var tempElem = {};
			var thisLetter = "";
			
			var title = ""
			var id = -1;
			var row = "";
			for (var i = 0; i < data.rows.length; i++)
			{
				row = data.rows.item(i);
				title = row["name"];
				id = row["id"];
				if ( title.substr(0,1) != thisLetter )
				{
					
					thisLetter = title.substr(0,1);
					tempElem = document.createElement("li");
					tempElem.className= "group";
					tempElem.innerHTML = thisLetter;
					titlesElem.appendChild(tempElem);
				}
				tempElem = document.createElement("li");							
				tempElem.innerHTML = "<a href='javascript:void(0);' onclick='RedBox.movieDetailRent=false;RedBox.movieDetailRent=false;RedBox.loadMovieDetail(" + id + ", this)'>" + title + "</a>";
				titlesElem.appendChild(tempElem);
				
				
			}
			
			this.movieListPopulated = true;
			
				
			
						
						
		},
		loadRedMovies: function(elem)
		{
		//
			rb_DB.mydb.transaction( function (transaction)
				{	
					transaction.executeSql("SELECT name, id FROM tblMoviesExtended where " +  rb_DB.onGetLimiter() + " order by name",  [],
					
					RedBox.RBMoviesSQL.bind(RedBox)
					,rb_DB.errfn.bindAsEventListener(rb_DB)	);
				} 
			);
			
			window.iui.showPageById("Titles");		
			elem.removeAttribute("selected");
			
		},
		RBMovieSQLChrono: function (tx, data)
		{
			var titlesElem = $("TitlesChrono");
			titlesElem.innerHTML = "";
			var tempElem = {};
			var thisLetter = "";
			
			var title = ""
			var id = -1;
			var row = "";
			var release = "";
			var months = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug","Sep", "Oct", "Nov", "Dec"]
			for (var i = 0; i < data.rows.length; i++)
			{
				row = data.rows.item(i);
				title = row["name"];
				id = row["id"];
				release = "a" + row["Release"] + "a";
				if ( release.substr(1,6) != thisLetter )
				{
					thisLetter = release.substr(1,6);
					
					yr = thisLetter.substr(0,4);
					
					var mnth = parseInt(thisLetter.substr(4,2));
				
					mnth = months[mnth -1];
					
				
					tempElem = document.createElement("li");
					tempElem.className= "group";
					tempElem.innerHTML = mnth + " " + yr;
					titlesElem.appendChild(tempElem);
				}
				tempElem = document.createElement("li");							
				tempElem.innerHTML = "<a href='javascript:void(0);' onclick='RedBox.movieDetailRent=false;RedBox.loadMovieDetail(" + id + ", this)'>" + title + "</a>";
				titlesElem.appendChild(tempElem);
				
				
			}
			this.chronomovieListPopulated = true;										
		},
		loadChronoRedMovies: function (elem)
		{
		//
			rb_DB.mydb.transaction( function (transaction)
				{	
					transaction.executeSql("SELECT Release, name, id FROM tblMoviesExtended where " +  rb_DB.onGetLimiter() + " order by Release desc",  [],	
						RedBox.RBMovieSQLChrono.bind(RedBox)
					 	,	Function.bindAsEventListener(rb_DB.errfn, rb_DB)	);
			} );
			window.iui.showPageById("TitlesChrono");
		
			elem.removeAttribute("selected");
			
		},
		
		chronomovieListPopulated: false,
		locateRedBoxesWithMovie: function(movieID)
		{
				this.currentMovieID = movieID;	
				if (false && rb_DB.useGeoLocation) {
					new Ajax.Request("webService.php?method=getBoxesWithMovieByLongLat", {
						asynchronous: false,
						parameters: {
							titleid: movieID,
							lat: rb_DB.lat,
							lng: rb_DB.lng
						},
						method: 'get',
						onSuccess: this.onGetBoxesWithMovie.bindAsEventListener(this)
					});
				}
				else {
					new Ajax.Request("webService.php?method=getBoxesWithMovie", {
						asynchronous: false,
						parameters: {
							titleid: movieID,
							zipcode: $F("zipCode")
						},
						method: 'get',
						onSuccess: this.onGetBoxesWithMovie.bindAsEventListener(this)
					});
				}
				
		},

		findMoviesInRedBox: function(redBoxID,elem)
		{
			this.currentRedBox = redBoxID;
			new Ajax.Request("webService.php?method=getMovies", { asynchronous:false, parameters: {kioskID: redBoxID}, method: 'get', onSuccess: this.onGetMoviesInRedBox.bindAsEventListener(this)});

			$("moviesInRedBox").title = "Movies in " + elem.innerHTML;				
			window.iui.showPageById("moviesInRedBox");
	
			elem.removeAttribute("selected");
		
		},
		RBMovieInRedBoxSQLChrono : function(txt,data)
		{
			var titlesElem = $("moviesInRedBox");
			var tempElem = {};
			var thisLetter = "";
			titlesElem.innerHTML = "";
			var title = ""
			var id = -1;
			var row = "";
			var release = "";
			var months = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug","Sep", "Oct", "Nov", "Dec"]
			for (var i = 0; i < data.rows.length; i++)
			{
				row = data.rows.item(i);
				title = row["name"];
				id = row["id"];
				release = "a" + row["Release"] + "a";
				if ( release.substr(1,6) != thisLetter )
				{
					thisLetter = release.substr(1,6);
					
					yr = thisLetter.substr(0,4);
					
					var mnth = parseInt(thisLetter.substr(4,2));
				
					mnth = months[mnth -1];
					
				
					tempElem = document.createElement("li");
					tempElem.className= "group";
					tempElem.innerHTML = mnth + " " + yr;
					titlesElem.appendChild(tempElem);
				}
				tempElem = document.createElement("li");							
				tempElem.innerHTML = "<a href='javascript:void(0);' onclick='RedBox.movieDetailRent=true;RedBox.loadMovieDetail(" + id + ", this)'>" + title + "</a>";
				titlesElem.appendChild(tempElem);
				
				
			}
			
							
						
		},
		onGetMoviesInRedBox: function(transport)
		{
			this.loadAd(transport.responseJSON.ad);
			var data = transport.responseJSON.d;
			rb_DB.mydb.transaction( function(transaction) {
				transaction.executeSql('DELETE FROM tblInventory');
				for (var i = 0; i < data.length; i++) {
					tmp = data[i];
					if ( tmp["QtyRange"] > 0)
						transaction.executeSql('INSERT INTO tblInventory (id) values (?) ', [tmp["ID"]])
					
				}
				transaction.executeSql("SELECT m.Release, m.name, m.id FROM tblMoviesExtended m,  tblInventory i where i.id = m.id and " +  rb_DB.onGetLimiter() + " order by m.Release desc",  [],RedBox.RBMovieInRedBoxSQLChrono.bind(RedBox),	rb_DB.errfn.bindAsEventListener(rb_DB));
			}
			);
		
		},
		
		onGetBoxesWithMovie: function(transport)
		{
			
			var titlesElem = $("locateRedBoxes");
			titlesElem.innerHTML = "";
			var tempElem  = {};			
			this.loadAd(transport.responseJSON.ad);
			var data = transport.responseJSON.d.Data;
			var found = false;
			for ( var i =0 ; i < data.length; i++)
			{
				if ( data[i]["CanRent"] )
				{
					tempElem = document.createElement("li");
					tempElem.innerHTML = "<a href='javascript:void(0);' onclick='RedBox.reserveMovie(" + data[i]["ID"] + ", " + this.currentMovieID + ", this)'>" + data[i]["Name"]+ " " + data[i]["AddressDisplayName"]+ " " + data[i]["Addr"] + "</a>";
					titlesElem.appendChild(tempElem); 
					found = true;
						
				}
			}
			if ( ! found )
			{
				tempElem = document.createElement("li");
				tempElem.innerHTML = "Movie not in any local red box";
				titlesElem.appendChild(tempElem);
			}
			
		},
		
		loadRedBoxes: function(elem)
		{
			if ( true || ! rb_DB.useGeoLocation) {
			
				new Ajax.Request("webService.php?method=getBoxes", {
					asynchronous: false,
					parameters: {
						zipcode: $F("zipCode")
					},
					method: 'get',
					onSuccess: this.onLoadBoxes.bindAsEventListener(this)
				});
			} else {
				new Ajax.Request("webService.php?method=getBoxesByLongLat", {
					asynchronous: false,
					parameters: {
						lng: rb_DB.lng,
						lat: rb_DB.lat
					},
					method: 'get',
					onSuccess: this.onLoadBoxes.bindAsEventListener(this)
				});
			}
				
			window.iui.showPageById("redBoxes");
		
			elem.removeAttribute("selected");
			
		},
		
		onLoadBoxes: function(transport)
		{
			var titlesElem = $("redBoxes");
			titlesElem.innerHTML = "";
			this.loadAd(transport.responseJSON.ad);
			var data = transport.responseJSON.d.Data;
			var thisLetter = "";
							
			for ( var i =0 ; i < data.length; i++)
			{
				if ( data[i]["Zip"].substr(0,5) != thisLetter)
				{
						thisLetter =  data[i]["Zip"].substr(0,5);
									
								
									tempElem = document.createElement("li");
									tempElem.className= "group";
									tempElem.innerHTML = data[i]["City"] + " " + data[i]["Zip"].substr(0,5);
									titlesElem.appendChild(tempElem);
				}
					tempElem = document.createElement("li");
					tempElem.innerHTML = "<a href='javascript:void(0);' onclick='RedBox.findMoviesInRedBox(" + data[i]["ID"] + ", this)'>" + data[i]["Name"]+ " " + data[i]["AddressDisplayName"]+ " " + data[i]["Addr"] + "</a>";
					titlesElem.appendChild(tempElem); 
					found = true;
				
			}
			if ( ! found )
			{
				tempElem = document.createElement("li");
				tempElem.innerHTML = "No Red Boxes Found";
				titlesElem.appendChild(tempElem);
			}
							
		},
		
		reserveMovie: function(kioskID, movieID, elem)
		{
			//http://www.redbox.com/Titles/AvailableTitles.aspx?kioskid=22836#Detail&page=1&sort=2&titleId=2476&pageSize=10&genreID=-1
			var dest = "http://www.redbox.com/Titles/AvailableTitles.aspx?kioskid=" + kioskID + "#Detail&page=1&sort=2&titleId=" +  movieID +"&pageSize=10&genreID=-1"
			window.open(dest, "REDBOX");
			
			if (elem) {
				elem.removeAttribute("selected");
			}
		}
		,
		loadAd: function(str)
		{
			//$("adLocation").update("");
			if (str.indexOf("div") >= 0) {
				$("adLocation").innerHTML = str;
			}
		}
}